/* Řádek: Projekt / Měřicí přístroje (otevírají modaly) + login a režim */
.topbarContext {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
  position: relative;
  z-index: 200;
}

.topbarContext__left,
.topbarContext__right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.topbarContext__left {
  min-width: 0;
}
.topbarContext__project-name {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 340px;
}
.topbarContext__project-name:hover {
  background: var(--input-bg);
  border-color: var(--muted);
}
.topbarContext__project-name:empty::before {
  content: attr(data-placeholder);
  font-weight: 500;
  color: var(--muted);
}

.topbarContext__right {
  margin-left: auto;
}

/* Offline – akce vyžadující připojení (offline.js) */
.offlineDisabled {
  cursor: not-allowed !important;
  opacity: 0.6;
  pointer-events: auto;
}

/* Read-only (trial / uzamčený projekt) – main-read-only-ui.js */
.readOnlyDisabled {
  cursor: not-allowed !important;
  opacity: 0.6;
  pointer-events: auto;
}

/* .topbarContext__btn:disabled má níže pointer-events:none – bez tohoto by se při najetí neukázal systémový kurzor „zakázáno“. */
.topbarContext__btn.readOnlyDisabled:disabled,
.topbarContext__btn.offlineDisabled:disabled,
.topbarContext__menuItem.readOnlyDisabled:disabled,
.topbarContext__menuItem.offlineDisabled:disabled,
button.toolIcon.readOnlyDisabled:disabled,
button.toolIcon.offlineDisabled:disabled {
  pointer-events: auto !important;
  cursor: not-allowed !important;
}

/* Úpravy geometrie zakázané (nouzové plátno, zámek tužky) – sjednocený kurzor a tooltip. */
button.toolIcon.structureEditsBlocked:disabled,
button.structureEditsBlocked:disabled,
.canvasToolbar__detailsSummary.structureEditsBlocked,
.canvasToolbar__details.canvasToolbar__details--disabled > .canvasToolbar__detailsSummary {
  pointer-events: auto !important;
  cursor: not-allowed !important;
  opacity: 0.45;
}
.measureFloatingBar__btn.structureEditsBlocked:disabled,
.canvasBottomBar__toolBtn.structureEditsBlocked:disabled,
.canvasModeBar__stretchBtn.structureEditsBlocked:disabled {
  pointer-events: auto !important;
  cursor: not-allowed !important;
  opacity: 0.45;
}
button.toolIcon.structureEditsBlocked.active,
button.toolIcon.structureEditsBlocked.is-active,
.measureFloatingBar__btn.structureEditsBlocked.is-active {
  background: transparent !important;
  border-color: var(--line) !important;
  color: var(--muted) !important;
}

.topbarContext__btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.topbarContext__btn:hover {
  background: var(--input-bg);
  border-color: var(--muted);
}
.topbarContext__btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}
/* Otevřený celoobrazovkový panel (Prostory / Výsledky / Protokol) – stejný stav jako v přepínači režimů. */
.topbarContext__btn.is-active,
.topbarContext__btn.is-active:hover {
  background: var(--primary);
  border-color: var(--primary);
  color: var(--primaryText);
}
.topbarContext__btn i {
  width: 18px;
  height: 18px;
  opacity: 0.9;
}
.topbarContext__summary {
  margin-left: 4px;
  font-weight: normal;
  color: var(--muted);
  font-size: 12px;
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topbarContext__chevron {
  width: 14px;
  height: 14px;
  margin-left: 2px;
  opacity: 0.8;
}
.topbarContext__dropdown {
  position: relative;
}
.topbarContext__btn {
  min-width: 5.5em;
  justify-content: center;
}
.topbarContext__btn--icon {
  min-width: 0;
  padding: 6px 10px;
}
/* Aktuální projekt: název a šipka menu tvoří jeden spojený ovladač. */
.topbarContext__dropdown--project {
  display: inline-flex;
  align-items: center;
  min-width: 0;
}
.topbarContext__dropdown--project .topbarContext__project-name {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  border-right: none;
}
.topbarContext__btn--chevron {
  min-width: 0;
  padding: 6px 8px;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}
.topbarContext__btn--chevron .topbarContext__chevron {
  margin-left: 0;
}
.topbarContext__sep {
  width: 1px;
  align-self: stretch;
  margin: 2px 4px;
  background: var(--line);
}
/* Červená = neuložené; žlutá = ve frontě na odeslání (offline / čeká sync) */
body.project-offline-pending:not(.project-unsaved) #btnQuickSave,
body.project-offline-pending:not(.project-unsaved) #measureBtnSave,
body.project-offline-pending:not(.project-unsaved) #measureLockedBtnSave,
body.project-offline-pending:not(.project-unsaved) #measureUnlockedBtnSave,
body.project-offline-pending:not(.project-unsaved) #canvasMobileTopDockSaveBtn{
  color:#f59e0b;
  opacity:1;
}
body.project-unsaved #btnQuickSave,
body.project-unsaved #measureBtnSave,
body.project-unsaved #measureLockedBtnSave,
body.project-unsaved #measureUnlockedBtnSave,
body.project-unsaved #canvasMobileTopDockSaveBtn{
  color:#ef4444;
  opacity:1;
}
.topbarContext__menu {
  position: absolute;
  top: 100%;
  left: 0;
  margin-top: 4px;
  min-width: 200px;
  padding: 5px 0;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
  z-index: 100;
  display: none;
}
/* Později než .topbarContext__menu { left:0 }, jinak se menu u pravého okraje vysune mimo viewport. */
.topbarContext__menu.topbarContext__menu--right {
  left: auto;
  right: 0;
}
.topbarContext__dropdown.is-open .topbarContext__menu { display: block; }
.topbarContext__dropdown.is-open .topbarContext__chevron { transform: rotate(180deg); }
.topbarContext__menuItem {
  display: flex;
  align-items: center;
  width: 100%;
  padding: 6px 12px;
  font-size: 13px;
  text-align: left;
  color: var(--text);
  background: none;
  border: none;
  cursor: pointer;
  box-sizing: border-box;
}
.topbarContext__menuItem:hover {
  background: var(--input-bg);
}
.topbarContext__menuSep {
  height: 1px;
  margin: 5px 8px;
  background: var(--line);
}
/* Wrapper for menu item with nested submenu */
.topbarContext__menuItemWrap {
  position: relative;
}
.topbarContext__menuItem--hasSubmenu {
  justify-content: space-between;
}
.topbarContext__menuItem--hasSubmenu::after {
  content: "";
  width: 0;
  height: 0;
  border: 4px solid transparent;
  border-left-color: var(--text);
  margin-left: 6px;
  opacity: 0.7;
}
.topbarContext__submenu {
  position: absolute;
  left: 100%;
  top: 0;
  margin-left: 0;
  min-width: 180px;
  padding: 5px 0;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 6px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
  z-index: 101;
  display: none;
}
/* Neviditelný most přes mezeru mezi položkou a podmenu – jinak při pomalém přejezdu :hover spadne a podmenu zmizí. */
.topbarContext__submenu::before {
  content: "";
  position: absolute;
  right: 100%;
  top: -12px;
  bottom: -12px;
  width: 18px;
  pointer-events: auto;
}
.topbarContext__menuItemWrap:hover .topbarContext__submenu,
.topbarContext__menuItemWrap.is-open .topbarContext__submenu {
  display: block;
}
.topbarContext__submenu .topbarContext__menuItem {
  padding: 6px 12px;
}

/* Tlačítka ve stejném stylu jako Projekt / Měřicí přístroje (kromě sekce Místnost) */
.btnContext {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.btnContext:hover {
  background: var(--input-bg);
  border-color: var(--muted);
}
.btnContext.btn--primary {
  background: var(--primary);
  color: var(--primaryText);
  border-color: var(--line);
}
.btnContext.btn--primary:hover {
  filter: brightness(0.95);
}
.btnContext.btn--small {
  padding: 4px 10px;
  font-size: 0.85rem;
}

/* Modaly: Projekt, Měřicí přístroje */
.global-form-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  box-sizing: border-box;
}
.global-form-modal.hidden { display: none !important; }

/* Start aplikace – progress overlay (nad topbarem i kontextovým menu) */
.mos-app-loading {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg);
  isolation: isolate;
}
body.app-ready .mos-app-loading {
  display: none !important;
}
body.app-loading {
  overflow: hidden;
}
body.app-loading .topbar,
body.app-loading .topbarContext,
body.app-loading #projectViewOnlyBanner:not(.hidden),
body.app-loading #readOnlyBanner:not([hidden]),
body.app-loading #billingPastDueBanner:not(.hidden),
body.app-loading #emailVerificationBanner:not(.hidden),
body.app-loading #offlineBanner:not(.hidden),
body.app-loading #projectSyncBanner:not(.hidden) {
  display: none !important;
}

/* Start aplikace – ProTuLox logo letters bounce (glyphs from brand mark) */
.mos-app-loading-brand {
  margin: 0 auto 16px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.mos-app-loading-brand__word {
  display: inline-flex;
  align-items: flex-end;
  gap: 0;
  line-height: 0;
}
.mos-app-loading-brand__ch {
  display: block;
  height: 1.6rem;
  width: auto;
  flex-shrink: 0;
  animation: mosAppBrandLetter 2.2s cubic-bezier(0.45, 0, 0.25, 1) infinite;
  animation-delay: calc(var(--d, 0) * 0.1s);
}
@keyframes mosAppBrandLetter {
  0%, 100% {
    transform: translateY(0);
  }
  40% {
    transform: translateY(-4px);
  }
  55% {
    transform: translateY(-1.5px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .mos-app-loading-brand__ch {
    animation: none !important;
    transform: none;
  }
}

/* Panely pod hlavním menu (údaje projektu, seznam projektů, přehled prostorů, výsledky) */
body.project-panel-active,
body.projects-list-panel-active,
body.rooms-overview-active,
body.results-panel-active,
body.space-types-panel-active {
  overflow: hidden;
}
body.project-panel-active #mainLayout,
body.projects-list-panel-active #mainLayout,
body.rooms-overview-active #mainLayout,
body.results-panel-active #mainLayout,
body.space-types-panel-active #mainLayout {
  display: none !important;
}
body.project-panel-active #projectModal:not(.hidden),
body.projects-list-panel-active #projectsListModal:not(.hidden),
body.rooms-overview-active #roomsOverviewModal:not(.hidden),
body.results-panel-active #resultsModal:not(.hidden),
body.space-types-panel-active #dataSourcesModal:not(.hidden) {
  display: flex !important;
  position: fixed;
  top: var(--app-panel-top, 0px);
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9000;
  padding: 0;
  align-items: stretch;
  justify-content: stretch;
}
body.project-panel-active #projectModal .protocol-preview-overlay,
body.projects-list-panel-active #projectsListModal .protocol-preview-overlay,
body.space-types-panel-active #dataSourcesModal .protocol-preview-overlay {
  display: none !important;
}
body.project-panel-active #projectModal .project-panel-box,
body.projects-list-panel-active #projectsListModal .projects-list-panel-box,
body.rooms-overview-active #roomsOverviewModal .rooms-overview-panel-box,
body.results-panel-active #resultsModal .results-panel-box,
body.space-types-panel-active #dataSourcesModal .data-sources-box {
  max-width: none;
  max-height: none;
  width: 100%;
  height: 100%;
  border-radius: 0;
  border: none;
  box-shadow: none;
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
/* Kopie projektu z evidence – modal musí být nad #projectsListModal (z-index 9000). */
#projectDuplicateModal:not(.hidden) {
  z-index: 10100;
}
#projectsListPrefsModal:not(.hidden) {
  z-index: 10100;
}
.project-panel-main {
  position: relative;
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.project-panel-main > .protocol-preview-loading {
  z-index: 12;
}
.project-panel-main > .global-form-modal__body {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding-top: 0;
}
.project-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 12px 8px 16px;
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
  position: relative;
  z-index: 2;
  background: var(--panel);
}
.project-panel-header h2 {
  margin: 0;
  font-size: 1.05rem;
}
.project-panel-footer {
  flex-shrink: 0;
  border-top: 1px solid var(--line);
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  justify-content: flex-end;
}
body.project-panel-active .prj-body {
  min-width: 0;
}
body.project-panel-active .prj-protocol-columns {
  display: grid;
  gap: 0 1.5rem;
  align-items: start;
  width: 100%;
  padding-top: 18px;
}
body.project-panel-active .prj-protocol-columns.prj-layout-cols-1 {
  grid-template-columns: minmax(0, 1fr);
}
body.project-panel-active .prj-protocol-columns.prj-layout-cols-2 {
  grid-template-columns: minmax(300px, 1.25fr) minmax(260px, 1fr);
}
body.project-panel-active .prj-protocol-columns.prj-layout-cols-3 {
  grid-template-columns: minmax(280px, 1.15fr) minmax(240px, 1fr) minmax(240px, 1fr);
}
body.project-panel-active .prj-protocol-col {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
body.project-panel-active .prj-protocol-col[hidden] {
  display: none !important;
}
body.project-panel-active .prj-protocol-col--electrical:not([hidden]),
body.project-panel-active .prj-protocol-col--emergency:not([hidden]) {
  border-left: 1px solid var(--line);
  padding-left: 1.25rem;
}
body.project-panel-active .prj-protocol-col__head {
  position: sticky;
  top: 0;
  z-index: 1;
  margin: 0;
  padding-bottom: 0.65rem;
  background: var(--panel);
  border-bottom: 1px solid var(--line);
  box-shadow: 0 -2px 0 var(--panel);
}
body.project-panel-active .prj-protocol-col__badge {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.15rem 0.6rem;
  border-radius: 999px;
  line-height: 1.35;
}
body.project-panel-active .prj-protocol-col__badge--shared {
  color: #475569;
  background: #f1f5f9;
  border: 1px solid #cbd5e1;
}
body.project-panel-active .prj-protocol-col__badge--electrical {
  color: #1e40af;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
}
body.project-panel-active .prj-protocol-col__badge--emergency {
  color: #166534;
  background: #ecfdf5;
  border: 1px solid #a7f3d0;
}
body.project-panel-active .prj-protocol-col__hint {
  margin: 0.45rem 0 0;
  font-size: 0.82rem;
  color: var(--muted);
  line-height: 1.4;
}
body.project-panel-active .prj-section {
  margin-bottom: 0;
  padding: 14px 16px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 10px;
  border-bottom: 1px solid var(--line);
}
body.project-panel-active .prj-section:last-child {
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}
body.project-panel-active .prj-section__title {
  padding-bottom: 0.55rem;
  margin-bottom: 0.85rem;
  border-bottom: 1px solid var(--line);
}
body.project-panel-active .prj-section--no-title {
  margin-top: 0;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
body.project-panel-active .prj-section--maintenance-factor {
  padding-bottom: 14px;
}
@media (max-width: 900px) {
  body.project-panel-active .prj-protocol-columns {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  body.project-panel-active .prj-protocol-col--electrical:not([hidden]),
  body.project-panel-active .prj-protocol-col--emergency:not([hidden]) {
    border-left: none;
    padding-left: 0;
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--line);
  }
}
.project-panel-modal--loading .project-panel-main > .global-form-modal__body {
  pointer-events: none;
  opacity: 0.42;
  filter: saturate(0.85);
  transition: opacity 0.25s ease, filter 0.25s ease;
}
.projects-list-panel-body {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
body.projects-list-panel-active .global-form-modal__box--projects {
  max-width: none;
  width: 100%;
}
/* Scroll celého těla panelu (toolbar + recent + tabulka) – jeden kontejner.
   Vnořený scroll jen u tabulky + max-height:60vh na iOS Safari rozbíjel listování
   a recent (flex-shrink:0) nechával tabulku v malém boxíku dole. */
body.projects-list-panel-active #projectsListModal .projects-list-panel-body {
  overflow: auto;
  min-height: 0;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
body.projects-list-panel-active #projectsListModal .projectsListToolbar,
body.projects-list-panel-active #projectsListModal .projectsListRecent,
body.projects-list-panel-active #projectsListModal .projectsListPath {
  flex-shrink: 0;
}
body.projects-list-panel-active #projectsListModal .projectsListTableWrap {
  flex: 0 0 auto;
  min-height: 0;
  max-height: none;
  overflow: visible;
}
body.device-mobile-or-tablet.projects-list-panel-active #projectsListModal .global-form-modal__box--projects {
  width: 100%;
  max-width: none;
  height: 100%;
  max-height: none;
  border-radius: 0;
}
/* Mobil: naposledy otevřené jako kompaktní vodorovná řada, ať nezabere půl obrazovky. */
body.device-mobile-or-tablet #projectsListModal .projectsListRecent{
  margin-bottom:8px;
  padding:8px 10px;
}
body.device-mobile-or-tablet #projectsListModal .projectsListRecent__head{
  margin-bottom:6px;
}
body.device-mobile-or-tablet #projectsListModal .projectsListRecent__inner{
  flex-wrap:nowrap;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  padding-bottom:2px;
  gap:6px;
}
body.device-mobile-or-tablet #projectsListModal .projectsListRecent__btn{
  flex:0 0 auto;
  max-width:min(72vw, 16rem);
  padding:6px 8px;
  font-size:12px;
  gap:2px;
}
body.device-mobile-or-tablet #projectsListModal .projectsListRecent__meta{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Horní lišta + rozbalovací menu nad celoplošnými panely (projekt, seznam, náhled…) */
body.project-panel-active .topbar,
body.projects-list-panel-active .topbar,
body.rooms-overview-active .topbar,
body.results-panel-active .topbar,
body.space-types-panel-active .topbar,
body.protocol-preview-active .topbar {
  position: relative;
  z-index: 9100;
}
body.project-panel-active .topbarContext,
body.projects-list-panel-active .topbarContext,
body.rooms-overview-active .topbarContext,
body.results-panel-active .topbarContext,
body.space-types-panel-active .topbarContext,
body.protocol-preview-active .topbarContext {
  z-index: 9100;
}
body.project-panel-active .topbarContext__menu,
body.projects-list-panel-active .topbarContext__menu,
body.rooms-overview-active .topbarContext__menu,
body.results-panel-active .topbarContext__menu,
body.space-types-panel-active .topbarContext__menu,
body.protocol-preview-active .topbarContext__menu {
  z-index: 9200;
}
body.project-panel-active .topbarContext__submenu,
body.projects-list-panel-active .topbarContext__submenu,
body.rooms-overview-active .topbarContext__submenu,
body.results-panel-active .topbarContext__submenu,
body.space-types-panel-active .topbarContext__submenu,
body.protocol-preview-active .topbarContext__submenu {
  z-index: 9201;
}

.global-form-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  cursor: pointer;
}
.global-form-modal__box {
  position: relative;
  width: 100%;
  max-width: 520px;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}
/* Křížek pro zavření modalu – vpravo nahoře, barvy aplikace */
.modal-close-x {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  margin: 0;
  margin-left: 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel);
  color: var(--text);
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  flex-shrink: 0;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
}
.modal-close-x:hover {
  background: var(--line);
  color: var(--primary);
  border-color: var(--muted);
}
.modal-close-x:focus {
  outline: 2px solid var(--primary);
  outline-offset: 2px;
}

.global-form-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
}
.global-form-modal__header h2 { margin: 0; font-size: 1.15rem; }
.global-form-modal__body {
  flex: 1;
  overflow-y: auto;
  padding: 18px;
}
.global-form-modal__footer {
  flex-shrink: 0;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 18px;
  border-top: 1px solid var(--line);
  background: var(--bg);
}
.global-form-modal__fields {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  align-items: flex-start;
}
.global-form-modal__field {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.global-form-modal__field--wide { min-width: 200px; }
.global-form-modal__field--block {
  flex-direction: column;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
}
.global-form-modal__field label {
  margin: 0;
  white-space: nowrap;
  color: var(--muted);
  font-size: 12px;
}
.global-form-modal__field input,
.global-form-modal__field textarea {
  padding: 6px 10px;
  font-size: 13px;
  background: var(--input-bg);
  color: var(--text);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.global-form-modal__field input { min-width: 0; }
.global-form-modal__field--wide input:not([type="date"]):not([type="time"]) { min-width: 200px; }
.global-form-modal__field textarea { resize: vertical; min-height: 60px; }
.global-form-modal__select {
  width: 100%;
  max-width: 280px;
  padding: 6px 10px;
  font-size: 13px;
  background: var(--input-bg);
  color: var(--text);
  border: 1px solid var(--line);
  border-radius: 6px;
}
.global-form-modal__field--block .global-form-modal__select { max-width: none; }
.prj-meric-row { display: flex; gap: 8px; align-items: center; margin-bottom: 6px; }
.prj-meric-row .global-form-modal__select { flex: 1; margin-bottom: 0; max-width: none; }

.prj-select-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* Povinná pole projektu – zvýraznění prázdných */
.global-form-modal__field--required-empty label,
.global-form-modal__field--required-empty > span[id$="_label"] {
  color: #f97373;
}
.global-form-modal__field--required-empty input,
.global-form-modal__field--required-empty textarea,
.global-form-modal__field--required-empty select {
  border-color: #f97373;
  color: #f97373;
}
.global-form-modal__field--required-empty input::placeholder,
.global-form-modal__field--required-empty textarea::placeholder {
  color: #f97373;
}
.global-form-modal__field--required-empty .prj-normy-list {
  box-shadow: inset 0 0 0 1px #f97373;
  border-radius: 6px;
  padding: 4px;
}

/* Povinná pole místnosti – zvýraznění prázdných */
.panel-field--required-empty label,
.panel-field--required-empty .panel-field-label-row label {
  color: #f97373;
}
.panel-field--required-empty input {
  border-color: #f97373;
  color: #f97373;
}

/* Modal projektu – širší box, sekce */
.global-form-modal__box--project {
  max-width: 560px;
}

/* Dvousloupcový layout (pouze ve fullview) */
.prj-body__cols {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.prj-body__col {
  min-width: 0;
}
.prj-section__fields {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.prj-section__hint {
  margin: 0 0 0.5rem 0;
}
.prj-label--muted {
  font-size: 0.85rem;
  color: var(--muted);
  font-weight: 400;
}

.prj-section {
  margin-bottom: 1.25rem;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--line);
}
.prj-section:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}
.prj-section__title {
  margin: 0 0 0.75rem 0;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text);
  letter-spacing: 0.02em;
}
.prj-instruments-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem 1rem;
  margin-bottom: 0.5rem;
}
@media (max-width: 640px) {
  .prj-instruments-row { grid-template-columns: 1fr; }
}
.prj-section__grid {
  display: grid;
  gap: 0.75rem 1.25rem;
  align-items: start;
}
.prj-section__grid {
  grid-template-columns: 1fr 1fr;
}
/* Základní údaje: Název na celou šířku, pod ním Číslo zakázky, pod ním Datum | Čas */
.prj-section__grid--basic {
  grid-template-columns: 1fr 1fr 1fr;
}
.prj-section__grid--basic .prj-field--full {
  grid-column: 1 / -1;
}
.prj-section__grid--basic .prj-field--order {
  grid-column: 1 / -1;
}
.prj-section__grid--measurement {
  grid-template-columns: 1fr 1fr;
}
.prj-section__grid--measurement .prj-field--full {
  grid-column: 1 / -1;
}
.prj-section__instruments-extra {
  margin-top: 0.75rem;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.5rem;
}
.prj-section__uncertainty-protocol {
  margin-top: 0.85rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--line);
}
.prj-section__uncertainty-heading {
  margin: 0 0 0.35rem 0;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text);
  letter-spacing: 0.02em;
}
@media (max-width: 420px) {
  .prj-section__grid,
  .prj-section__grid--measurement,
  .prj-section__grid--basic {
    grid-template-columns: 1fr;
  }
  .prj-section__grid--basic .prj-field--full {
    grid-column: 1;
  }
}
/* Mřížka projektu: štítek nad vstupem (ne vedle — v úzkém sloupci by se mačkalo) */
.prj-section__grid .global-form-modal__field {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: 100%;
  min-width: 0;
}
.prj-section__grid .global-form-modal__field label {
  white-space: normal;
}
.prj-section__grid .global-form-modal__field input,
.prj-section__grid .global-form-modal__field textarea,
.prj-section__grid .global-form-modal__field .global-form-modal__select,
.prj-section__grid .global-form-modal__field select {
  width: 100%;
  max-width: none;
}
body.project-panel-active .prj-protocol-col--emergency .prj-section__grid,
.prj-protocol-col--emergency .prj-section__grid {
  grid-template-columns: 1fr;
}
/* Data protokolu u NO stejně jako u el.: Datum | Čas, pod tím Datum zpracování */
body.project-panel-active .prj-protocol-col--emergency .prj-section__grid--measurement-datetime,
.prj-protocol-col--emergency .prj-section__grid--measurement-datetime {
  grid-template-columns: 1fr 1fr;
}
.prj-protocol-col--emergency .global-form-modal__field--block label,
.prj-protocol-col--emergency .global-form-modal__field--block .prj-subsection__title {
  white-space: normal;
}
.prj-protocol-col--emergency .global-form-modal__field--block input,
.prj-protocol-col--emergency .global-form-modal__field--block textarea,
.prj-protocol-col--emergency .global-form-modal__field--block .global-form-modal__select,
.prj-protocol-col--emergency .global-form-modal__field--block select {
  width: 100%;
  max-width: none;
}
.prj-emergency-subsection {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  min-width: 0;
}
.prj-emergency-subsection + .prj-emergency-subsection {
  margin-top: 0.35rem;
  padding-top: 0.9rem;
  border-top: 1px solid var(--line);
}
.prj-emergency-subsection__intro {
  margin: 0;
}
.prj-emergency-subsection__fields {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  min-width: 0;
}
.prj-protocol-col--emergency .prj-emergency-defects-add {
  flex-direction: column;
  align-items: stretch;
}
.prj-protocol-col--emergency .prj-emergency-defects-add .global-form-modal__select,
.prj-protocol-col--emergency .prj-emergency-defects-add__popis {
  width: 100%;
  max-width: none;
  flex: none;
}
.prj-section__u95-row {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 12px 16px;
  padding-top: 0.25rem;
  width: 100%;
}
.prj-section__u95-row .prj-u95-input-label {
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: 13px;
  color: var(--text);
}
.prj-section__u95-row .prj-u95-input-label span {
  white-space: nowrap;
}
.prj-section__u95-row .prj-u95-input-label input {
  width: 7em;
  min-width: 5em;
  flex: 0 0 auto;
}
.prj-uncertainty-budget-status {
  width: 100%;
  margin-top: 0.35rem;
  padding: 0.5rem 0.65rem;
  border-radius: 6px;
  font-size: 12px;
  line-height: 1.45;
  border: 1px solid var(--border-subtle, rgba(0, 0, 0, 0.12));
  background: var(--surface-elevated, rgba(0, 0, 0, 0.03));
  color: var(--text-muted, inherit);
}
.prj-uncertainty-budget-status__text {
  display: inline;
  vertical-align: middle;
}
.prj-uncertainty-budget-status__link {
  margin-left: 0.35rem;
  vertical-align: middle;
}
.prj-uncertainty-budget-status--manual {
  border-color: rgba(100, 100, 120, 0.35);
  background: rgba(100, 100, 120, 0.06);
}
.prj-uncertainty-budget-status--no-gum {
  border-color: rgba(180, 120, 0, 0.45);
  background: rgba(180, 120, 0, 0.07);
  color: var(--text, inherit);
}
.prj-uncertainty-budget-status--full {
  border-color: rgba(0, 90, 160, 0.35);
  background: rgba(0, 90, 160, 0.06);
  color: var(--text, inherit);
}
.prj-uncertainty-budget-status__warn {
  display: inline;
  font-weight: 600;
  color: #a32;
}
.prj-section__checkbox-wrap {
  display: block;
  padding-top: 0.25rem;
  text-align: left;
}
.global-form-modal__label--checkbox {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  cursor: pointer;
  font-size: 13px;
  color: var(--text);
}
.global-form-modal__label--checkbox input {
  margin: 0;
  flex-shrink: 0;
}

.global-form-modal__box--instruments .global-form-modal__body { padding-bottom: 20px; }
.global-form-modal__hint { font-size: 0.9rem; color: var(--muted); margin: 0 0 8px 0; }
.prj-normy-list { display: flex; flex-direction: column; gap: 6px; align-items: stretch; width: 100%; min-width: 0; }
.prj-normy-list--dual { gap: 4px; }
.prj-normy-dual-head {
  display: grid;
  grid-template-columns: 1fr 3rem 3rem;
  gap: 0.5rem;
  width: 100%;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--muted);
  padding-bottom: 4px;
  border-bottom: 1px solid var(--line);
}
.prj-normy-dual-head__col { text-align: center; }
.prj-normy-row {
  display: grid;
  grid-template-columns: 1fr 3rem 3rem;
  gap: 0.5rem;
  width: 100%;
  align-items: center;
  font-size: 0.88rem;
}
.prj-normy-row__label {
  line-height: 1.35;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.prj-normy-row__check {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  cursor: pointer;
}
.prj-normy-row__check input { margin: 0; }
.prj-normy-row__check--na {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  font-size: 0.85rem;
  user-select: none;
}
.prj-normy-checkbox {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 6px;
  cursor: pointer;
  margin: 0;
  width: 100%;
  min-width: 0;
}
.global-form-modal__field .prj-normy-checkbox {
  white-space: normal;
}
.prj-normy-checkbox input { margin: 0; }
.prj-normy-checkbox__text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-size: 0.88rem;
  line-height: 1.35;
}
.instruments-section {
  margin-bottom: 20px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--line);
}
.instruments-section:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }
.instruments-section__title {
  margin: 0 0 10px 0;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--text);
}
.instruments-section__subtitle {
  display: block;
  margin: 8px 0 4px 0;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--muted);
}

.layout{
  display:grid;
  /* Pravý sloupec musí umět „spadnout“ pod šířku min-content (--canvas dock + ikonové raily), jinak grid přeteče a řeže ho .layout{overflow:hidden}.
     minmax(0, 1fr) umožní zúžení; horizontální posuv zůstává na .canvasWrap__canvasMain (desktopová editace). */
  grid-template-columns: minmax(280px, 380px) minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
  gap:12px;
  padding:12px 12px 12px 6px;
  min-height:0;
  overflow: hidden;
}
@media (max-width: 1024px) {
  .layout { grid-template-columns: minmax(260px, 320px) minmax(0, 1fr); }
}
@media (max-width: 768px) {
  .layout { grid-template-columns: 1fr; grid-template-rows: auto minmax(300px, 1fr); }
  .layout .panel { max-height: 40vh; }
}
.panel{
  isolation: isolate;
  z-index: 0;
  contain: paint;
  display: flex;
  flex-direction: column;
  min-height: 0;
  min-width: 0;
  background: var(--panel); border: 1px solid var(--line); border-radius: 14px;
  box-shadow: var(--shadow); padding: 10px;
  overflow: hidden;
}
.panelTop{
  flex-shrink: 0;
}
.panelScroll{
  overflow-y: auto;
  overflow-x: hidden;
  flex: 1;
  min-height: 0;
}
/* Jen levý panel: protokolové kapitoly jsou také `.section`, ale jako <div> (náhled/PDF nesmí dostat tento rámeček). */
details.section{
  border:1px solid var(--line);
  border-radius:12px;
  padding:8px 10px;
  margin:10px 0;
}
details.section > summary{ cursor:pointer; font-weight:600; }
details.section[open] > summary{ margin-bottom:10px; }
.panel-emergency-normBadge{
  margin-left:4px;
  font-size:10px;
  font-weight:500;
  color:var(--muted);
}

/* Trojúhelník v levém panelu (u všech položek typu `<details class="section">`). */
aside.panel .section > summary{
  position: relative;
  list-style: none;
  padding-left: 18px;
}
aside.panel .section > summary::-webkit-details-marker{ display:none; }
aside.panel .section > summary::marker{ display:none; }
aside.panel .section > summary::before{
  content:"";
  position:absolute;
  left: 2px;
  top: 50%;
  transform: translateY(-50%) rotate(0deg);
  width: 0;
  height: 0;
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
  border-left: 9px solid var(--text);
  pointer-events:none;
}
aside.panel .section[open] > summary::before{
  transform: translateY(-50%) rotate(90deg);
}
.panelRoomSummary__inner{
  display:flex;
  align-items:center;
  gap:10px;
  width:100%;
  flex-wrap:nowrap;
  white-space:nowrap;
}
.panelRoomSummary__title{
  flex:1 1 auto;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.panelRoomActionsBar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin:8px 0 4px;
  padding:8px;
  border:1px solid var(--line);
  border-radius:12px;
  background:color-mix(in srgb, var(--panel) 88%, var(--input-bg));
}
.panelRoomActionsBar__group{
  display:flex;
  align-items:center;
  gap:6px;
  min-width:0;
}
.panelRoomSummary__order{
  display:flex;
  align-items:center;
  gap:4px;
  flex:0 0 auto;
}
.panelRoomSummary__orderBtn{
  width:24px;
  height:24px;
  border-radius:6px;
  font-size:12px;
  line-height:1;
  padding:0;
}
/* Tabler „run“ vedle šipek: otevřeno = zelená, zavřeno = bílá ikona na šedivém podkladu */
/* hidden musí přebít display:flex z .measureMobileTopBar__lockBtn */
.panelEmergencyToggleBtn[hidden]{
  display:none !important;
}
.panelElectricalToggleBtn[hidden]{
  display:none !important;
}
.panelElectricalToggleBtn .panelElectricalToggleBtn__bulb{
  display:block;
  flex-shrink:0;
}
.panelElectricalToggleBtn:not(.panelElectricalToggleBtn--open){
  border-color:#64748b;
  background:#64748b;
  color:#fff;
}
.panelElectricalToggleBtn.panelElectricalToggleBtn--open{
  border-color:#ca8a04;
  background:#eab308;
  color:#1f2937;
}
.panelElectricalToggleBtn:hover{
  filter:brightness(1.06);
}
.panelElectricalToggleBtn.panelElectricalToggleBtn--open:hover{
  filter:brightness(1.04);
}
.panelEmergencyToggleBtn .panelEmergencyToggleBtn__run{
  display:block;
  flex-shrink:0;
}
.panelEmergencyToggleBtn:not(.panelEmergencyToggleBtn--open){
  border-color:#64748b;
  background:#64748b;
  color:#fff;
}
.panelEmergencyToggleBtn.panelEmergencyToggleBtn--open{
  border-color:#15803d;
  background:#16a34a;
  color:#fff;
}
.panelEmergencyToggleBtn:hover{
  filter:brightness(1.06);
}
.panelEmergencyToggleBtn.panelEmergencyToggleBtn--open:hover{
  filter:brightness(1.05);
}
.panelRoomSummary__locks{
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:6px;
  flex:0 0 auto;
}
.panelRoomActionsBar .panelRoomSummary__locks{
  margin-left:0;
}
.panelRoomSummary__locks .measureMobileTopBar__lockBtn{
  width:28px;
  height:28px;
  border-radius:8px;
}
.panelRoomSummary__locks .measureMobileTopBar__lockBtn svg{
  width:14px;
  height:14px;
}

.panelRoomSummary__locks .measureMobileTopBar__lockBtn:disabled{
  opacity:0.45;
  cursor:not-allowed;
  filter:grayscale(0.35);
}

.grid2{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
/* Tabulka kritických bodů: levý sidebar v .canvasWrap__canvasMain (třída --canvasDock). Nouzová ikonová lišta níže je vedle pravého docku. */
.panel-emergency-iconRail{
  flex:0 0 44px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  padding:8px 6px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--panel) 88%, var(--muted));
  max-height:min(100vh - 120px, 720px);
  overflow-y:auto;
  overflow-x:hidden;
}
.canvasWrap__emergencyIconRail{
  align-self:stretch;
  min-height:0;
  box-sizing:border-box;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasWrap__emergencyIconRail{
  display:none !important;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasAreaZonesRail{
  display:none !important;
}
/* Tablet UA v Editaci (bez body.measure-mode): vertikální raily u plátna jako na PC (v Měření zůstávají skryté výše). */
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode) .canvasAreaZonesRail:not([hidden]),
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode) .canvasWrap__emergencyIconRail:not([hidden]){
  display:flex !important;
}
.panel-emergency-iconRail[hidden]{ display:none !important; }
.canvasAreaZonesRail{
  flex:0 0 auto;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  padding:8px 6px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--panel) 88%, var(--muted));
  align-self:stretch;
  min-height:0;
  box-sizing:border-box;
}
/* Vertikální raily u plátna: široké okno (app-desktop-ui / measure-mode-pc) nebo tablet UA v Editaci výše. */
body.app-desktop-ui .canvasAreaZonesRail:not([hidden]),
body.measure-mode-pc .canvasAreaZonesRail:not([hidden]){
  display:flex !important;
}
body.app-desktop-ui .canvasWrap__emergencyIconRail:not([hidden]),
body.measure-mode-pc .canvasWrap__emergencyIconRail:not([hidden]){
  display:flex !important;
}
.canvasAreaZonesRail[hidden]{ display:none !important; }
.canvasWrap__emergencyIconRail:not(:has(> button:not([hidden]))),
.canvasAreaZonesRail:not(:has(> button:not([hidden]))){
  display:none !important;
}
.canvasAreaZonesRail__btn{
  width:36px;
  height:36px;
  padding:0;
  margin:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:8px;
  border:1px solid var(--line);
  background:var(--panel);
  color:var(--text);
  cursor:pointer;
  flex-shrink:0;
}
/* display:inline-flex výše přebíjí výchozí [hidden] — zóny/schody musí jít skrýt v čistém plošném měření */
.canvasAreaZonesRail__btn[hidden],
.canvasAreaZonesRail__details[hidden]{
  display:none !important;
}
.canvasAreaZonesRail__btn:hover{
  background:color-mix(in srgb, var(--panel) 85%, #15803d);
  border-color:color-mix(in srgb, var(--line) 70%, #15803d);
}
.canvasAreaZonesRail__btn svg{
  display:block;
}
/* Schodiště: šipka vlevo v ikonce, submenu vlevo od ikony (details + klik mimo v area-measurement-zones.js) */
.canvasAreaZonesRail__details{
  position:relative;
  flex-shrink:0;
}
.canvasAreaZonesRail__details[open]{
  z-index:30;
}
.canvasAreaZonesRail__detailsSummary{
  list-style:none;
  flex-direction:row;
  align-items:center;
  justify-content:flex-start;
  gap:1px;
  height:36px;
  min-height:36px;
  padding:0 3px 0 4px;
  box-sizing:border-box;
}
.canvasAreaZonesRail__detailsSummary::-webkit-details-marker{
  display:none;
}
.canvasAreaZonesRail__details.canvasAreaZonesRail__details--disabled > .canvasAreaZonesRail__detailsSummary{
  pointer-events:none;
  opacity:0.45;
  cursor:not-allowed;
}
.canvasAreaZonesRail__details[open] > .canvasAreaZonesRail__detailsSummary{
  background:color-mix(in srgb, var(--panel) 85%, #15803d);
  border-color:color-mix(in srgb, var(--line) 70%, #15803d);
}
.canvasAreaZonesRail__detailsChevron{
  display:block;
  flex-shrink:0;
}
.canvasAreaZonesRail__detailsIcon{
  display:flex;
  align-items:center;
  justify-content:center;
  flex:1;
  min-width:0;
  flex-shrink:1;
}
.canvasAreaZonesRail__detailsMenu{
  position:absolute;
  right:calc(100% + 4px);
  top:0;
  left:auto;
  margin:0;
  z-index:60;
  min-width:11rem;
  padding:4px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  box-shadow:0 4px 14px rgba(0,0,0,0.18);
  display:flex;
  flex-direction:column;
  gap:2px;
}
.canvasAreaZonesRail__detailsItem{
  text-align:left;
  padding:8px 10px;
  border-radius:6px;
  border:none;
  background:transparent;
  cursor:pointer;
  font:inherit;
  color:var(--text);
  white-space:nowrap;
}
.canvasAreaZonesRail__detailsItem:hover:not(:disabled){
  background:color-mix(in srgb, var(--panel) 85%, #15803d);
}
.canvasAreaZonesRail__detailsItem:disabled{
  opacity:0.45;
  cursor:not-allowed;
}
.panel-emergency-iconRail__btn{
  width:36px;
  height:36px;
  padding:0;
  margin:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:8px;
  border:1px solid var(--line);
  background:var(--panel);
  color:var(--text);
  cursor:pointer;
  flex-shrink:0;
  font-size:20px;
  font-weight:700;
  line-height:1;
}
/* display:inline-flex výše přebíjí běžnou třídu .hidden i výchozí [hidden] — nutné !important */
.panel-emergency-iconRail__btn[hidden],
.panel-emergency-iconRail__btn.hidden{
  display:none !important;
}
.panel-emergency-iconRail__btn:hover{
  background:color-mix(in srgb, var(--panel) 85%, #15803d);
  border-color:color-mix(in srgb, var(--line) 70%, #15803d);
}
.panel-emergency-iconRail__btn[aria-pressed="true"]{
  outline:2px solid #15803d;
  outline-offset:1px;
  background:color-mix(in srgb, var(--panel) 75%, rgba(21,128,61,0.25));
}
.panel-emergency-iconRail__btn:disabled{
  opacity:0.45;
  cursor:not-allowed;
}
/* Skrytá zůstává textová šipka a ikonka nůžek (režim je zatím interní). */
#rm_emg_escape_arrow_btn,
#rm_emg_floorplan_scissor_btn{
  display:none !important;
}
.panel-emergency-stairFlights{
  margin-top:8px;
  padding-top:8px;
  border-top:1px solid var(--line);
}
.panel-emergency-stairFlights__title{
  font-size:11px;
  font-weight:600;
  margin-bottom:4px;
  color:var(--text);
}
.panel-emergency-stairFlights__list{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:4px;
}
.panel-emergency-stairFlights__item{
  display:flex;
  align-items:flex-start;
  justify-content:flex-start;
  flex-wrap:wrap;
  gap:8px;
  font-size:12px;
}
.panel-emergency-stairFlights__label{
  flex:1 1 100%;
  min-width:0;
  overflow-wrap:anywhere;
}
.panel-emergency-stairFlights__actions{
  display:flex;
  flex:0 0 auto;
  flex-wrap:wrap;
  gap:6px;
}
.panel-emergency-section{ gap:12px; }

.panel-emergency-group{ display:flex; flex-direction:column; gap:6px; }
.panel-emergency-groupTitle{
  font-size:11px;
  font-weight:600;
  letter-spacing:0.02em;
  text-transform:uppercase;
  color:var(--muted);
  margin:0 0 2px 0;
}
.panel-emergency-label{ font-size:13px; }
.panel-emergency-select{ width:100%; max-width:100%; }
.panel-emergency-group .panel-select.panel-emergency-select,
.panel-emergency-areaTypeWrap .panel-select.panel-emergency-select,
.panel-emergency-strayLightWrap .panel-select.panel-emergency-select{
  padding:4px 8px;
  font-size:13px;
  line-height:1.35;
  border-radius:8px;
}
.panel-emergency-limitsRow{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  gap:10px 14px;
}
.panel-emergency-field{
  display:flex;
  flex-direction:column;
  gap:4px;
  min-width:0;
}
.panel-emergency-field label{ font-size:12px; color:var(--text); }
.panel-emergency-input{
  width:5.5rem;
  max-width:100%;
  box-sizing:border-box;
  padding:4px 6px;
  font-size:13px;
}
.panel-emergency-hint{
  font-size:12px;
  line-height:1.35;
  color:var(--muted);
  margin:0 0 8px 0;
}
.panel-emergency-hint--small{ font-size:11px; margin-bottom:6px; }
.panel-emergency-panelSubsectionTitle{
  font-weight:600;
  font-size:12px;
  margin:8px 0 4px;
  color:var(--text-muted, #64748b);
}
.panel-emergency-panelSubsectionTitle:first-child{ margin-top:0; }
.panel-emergency-hint--warn{ color:#b45309; }
.prj-emergency-limits-link-wrap{ margin-top:0.5rem; display:flex; flex-direction:column; align-items:flex-start; gap:0.35rem; }
.prj-emergency-limits-link-hint{ margin:0; font-size:12px; }
.panel-emergency-escapeRowWrap{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:4px;
  padding-top:8px;
  border-top:1px dashed var(--line);
}
.panel-emergency-escapeActions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
}
.panel-emg-escape-arrow-btn{
  font-size:1.25rem;
  font-weight:700;
  min-width:2.25rem;
  line-height:1.2;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.panel-emg-escape-arrow-btn svg{
  display:block;
  flex-shrink:0;
}
.panel-emg-informative-escape-row{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:6px;
  max-width:100%;
}
.panel-emg-informative-escape-drag{
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 8px;
  margin:0;
  font:inherit;
  color:inherit;
  border-radius:8px;
  border:1px dashed var(--line);
  background:var(--panel);
  user-select:none;
}
.panel-emg-informative-escape-drag:focus-visible{
  outline:2px solid var(--focus-ring, #2563eb);
  outline-offset:2px;
}
.panel-emergency-escapeStrip{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  font-size:12px;
}
#rm_emg_escape_route_norm_version,
label[for="rm_emg_escape_route_norm_version"]{
  display:none !important;
}
.panel-emergency-input--narrow{ width:4rem; }
.panel input:disabled,
.panel input[readonly] {
  opacity: 0.7;
  cursor: not-allowed;
  background: var(--panel);
  color: var(--muted);
}
/* Fotografie místnosti (levý panel) */
.room-photos-hint {
  font-size: 12px;
  color: var(--muted);
  margin: 0 0 8px 0;
}
.room-photos-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  align-items: flex-start;
}
.room-photo-slot {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 8px;
  background: var(--panel);
  width: fit-content;
  max-width: 100%;
}
.room-photo-slot--filled {
  width: 100%;
  align-self: stretch;
  box-sizing: border-box;
}
.room-photo-slot--filled .room-photo-thumb-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 140px;
  margin-bottom: 8px;
  background: var(--input-bg);
  border-radius: 8px;
  overflow: hidden;
}
.room-photo-slot--filled .room-photo-thumb {
  margin: 0 auto;
  max-height: 160px;
}
.room-photo-slot__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}
.room-photo-include-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1 1 auto;
  min-width: 0;
}
.room-photo-slot__footer .room-photo-include-label {
  margin: 0;
  flex: 1 1 auto;
  min-width: 0;
}
.room-photo-slot__footer .room-photo-include-group .room-photo-include-label {
  flex: 0 0 auto;
}
.room-photo-slot__footer .room-photo-remove {
  flex: 0 0 auto;
}
.room-photo-thumb-wrap {
  margin-bottom: 6px;
  border-radius: 8px;
  overflow: hidden;
  background: transparent;
}
.room-photo-thumb {
  display: block;
  max-width: 100%;
  max-height: 120px;
  width: auto;
  height: auto;
  object-fit: contain;
}
.room-photo-add-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.room-photo-include-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--muted);
  margin: 4px 0;
  cursor: pointer;
}
.room-photo-actions {
  margin-top: 4px;
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.gridSpan2{ grid-column:1 / span 2; }
.panel-field-label-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  margin: 10px 0 4px 0;
}
.panel-field-label-row > label {
  margin: 0;
}
.rm-lighting-classification {
  margin-bottom: 2px;
}
.rm-lighting-classification .panel-field-label-row {
  margin-top: 0;
}
.rm-lighting-profile-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  margin: 2px 0 10px;
}
.rm-lighting-profile-prefix {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
}
.rm-lighting-profile-select {
  flex: 1 1 12rem;
  min-width: 0;
  max-width: 100%;
}
.panel-apply-to-all-link {
  font-size: 14px;
  line-height: 1;
  color: var(--muted);
  background: none;
  border: none;
  padding: 2px 4px;
  cursor: pointer;
  text-decoration: none;
  font-family: inherit;
  flex-shrink: 0;
}
.panel-apply-to-all-link:hover {
  color: var(--text);
}
.gridSpan2 > .labelLike{ display:block; font-size:12px; color:var(--muted); margin:10px 0 4px; }
.gridSpan2 > .radioGroup{ display:flex; flex-direction:row; gap:12px; flex-wrap:wrap; }
label{ display:block; font-size:12px; color:var(--muted); margin:10px 0 4px; }
input[type="text"], input[type="number"], input[type="date"], input[type="time"]{
  width:100%; padding:8px 10px; border:1px solid var(--btnLine);
  border-radius:10px; background:var(--input-bg); color:var(--text); outline:none;
}
#verticalSurfaceModal input[type="text"].verticalSurfaceModal__input,
#verticalSurfaceModal input[type="number"].verticalSurfaceModal__input,
#verticalSurfaceModal .autocomplete__input.verticalSurfaceModal__input{
  width:100%;
  min-height:26px;
  padding:3px 6px;
  border:1px solid var(--line);
  border-radius:6px;
}
.panel-readonly { display: block; padding: 8px 0; font-size: 14px; color: var(--text); }
input.panel-readonly-input[readonly] {
  margin-top: 10px;
  cursor: default;
}
input.panel-readonly-input[readonly]:focus {
  outline: none;
  border-color: var(--btnLine);
}
.panel-emergency-compactMetrics{
  display:flex;
  flex-wrap:wrap;
  gap:2px 14px;
  margin:2px 0 6px;
  font-size:12px;
  line-height:1.35;
}
.panel-emergency-compactMetric{
  display:inline;
  white-space:nowrap;
}
.panel-emergency-compactMetric__label{
  color:var(--muted);
}
.panel-emergency-compactMetric__sep{
  margin:0 2px;
  color:var(--muted);
}
.panel-emergency-compactMetric__value{
  color:var(--text);
  font-variant-numeric:tabular-nums;
}
.panel-select,
select.panel-select {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--btnLine);
  border-radius: 10px;
  background: var(--input-bg);
  color: var(--text);
  font: inherit;
  outline: none;
  cursor: pointer;
}
.hint{ font-size:12px; color:var(--muted); align-self:end; padding-top:18px; }
.hint--warning{ display:block; align-self:stretch; padding-top:6px; color:var(--danger, #b45309); }
.hintBox{
  margin-top:10px; border:1px dashed var(--line); border-radius:12px;
  padding:8px 10px; font-size:12px; color:var(--muted); line-height:1.35;
}
.small{ font-size:11px; color:var(--muted); }

/* Levý panel: stav zohlednění činitele údržby v projektu (zeleně / červeně + info kroužek) */
.rm-udrzba-project-hint {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 4px;
  line-height: 1.35;
}
.rm-udrzba-project-hint__text {
  flex: 1 1 auto;
  min-width: 0;
}
.rm-udrzba-project-hint--on .rm-udrzba-project-hint__text {
  color: #15803d;
}
.rm-udrzba-project-hint--off .rm-udrzba-project-hint__text {
  color: #b91c1c;
}
.rm-udrzba-project-hint__info {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  margin-top: 1px;
  border-radius: 50%;
  border: 1px solid currentColor;
  font-size: 9px;
  font-style: italic;
  font-weight: 700;
  font-family: Georgia, "Times New Roman", serif;
  line-height: 1;
  cursor: help;
  flex-shrink: 0;
  box-sizing: border-box;
  user-select: none;
}
.rm-udrzba-project-hint--on .rm-udrzba-project-hint__info {
  color: #15803d;
  border-color: #15803d;
}
.rm-udrzba-project-hint--off .rm-udrzba-project-hint__info {
  color: #b91c1c;
  border-color: #b91c1c;
}
.rm-udrzba-project-hint__info:focus-visible {
  outline: 2px solid var(--focus-ring, #2563eb);
  outline-offset: 2px;
}

.btn{
  border:1px solid var(--btnLine); background:var(--btn);
  padding:8px 10px; border-radius:10px; cursor:pointer;
  font-size:13px;
  color:var(--text);
}
.btn:hover{ background:var(--hover); }
.btn:disabled,
.btn[disabled]{
  color:var(--muted);
  cursor:not-allowed;
}
.btn--primary{
  background:var(--primary); color:var(--primaryText); border-color:var(--primary);
}
/* Tlačítka s btnContext = stejný styl jako hlavní menu (přepíše .btn) */
.btn.btnContext {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 500;
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 6px;
}
.btn.btnContext:hover {
  background: var(--input-bg);
  border-color: var(--muted);
}
.btn.btnContext.btn--primary {
  background: var(--primary);
  color: var(--primaryText);
  border-color: var(--line);
}
.btn.btnContext.btn--primary:hover {
  filter: brightness(0.95);
}
.btn.btnContext.btn--small {
  padding: 4px 10px;
  font-size: 0.85rem;
}
.btn--file{ display:inline-flex; align-items:center; justify-content:center; }

.toolbar{ display:flex; flex-direction:column; gap:8px; }
.sepRow{ height:1px; background:var(--line); margin:6px 0; }

.sliderRow{ display:flex; flex-direction:column; gap:6px; }
.row{ display:flex; gap:8px; align-items:center; }

.sidebarGroup--rooms{ margin-bottom:4px; }
.tabsRow{ display:flex; align-items:stretch; margin-bottom:10px; position:sticky; top:0; z-index:5; z-index:30; }
.tabs{ display:flex; align-items:stretch; gap:0; flex-wrap:wrap; flex:1; min-width:0; min-height:40px; }
.tab-wrap{ position:relative; flex:0 0 25%; box-sizing:border-box; min-width:60px; max-width:25%; display:flex; min-height:40px; }
.tab-wrap .tab{ flex:1; min-width:0; margin-left:0; }
.tab-wrap:not(:first-child) .tab{ margin-left:-1px; }
.tab-delete{
  position:absolute;
  right:4px;
  top:4px;
  z-index:2;
  width:16px;
  height:16px;
  padding:0;
  border:none;
  background:transparent;
  color:var(--text);
  font-size:14px;
  line-height:1;
  cursor:pointer;
  display:none;
  align-items:center;
  justify-content:center;
}
.tab-delete:hover{ color:#f87171; }
.tab-wrap.tab-wrap--show-delete .tab-delete{ display:flex; }
.btn--tabAdd{
  flex-shrink:0;
  width:32px;
  height:40px;
  padding:0;
  border-radius:0;
  margin-left:-1px;
  font-size:18px;
  line-height:1;
  font-weight:300;
  border:1px solid var(--line);
  background:var(--panel);
  color:var(--text);
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
}
.btn--tabAdd.round-tr{ border-top-right-radius:8px; }
.btn--tabAdd.round-br{ border-bottom-right-radius:8px; }
.btn--tabAdd:hover{ background:var(--hover); }
.btn--tabAdd:disabled{ opacity:0.6; cursor:not-allowed; }
/* A–Z vedle +: užší šířka než čtverec u „+“, stejný styl .btn--tabAdd */
.btn--tabAdd.btn--tabSortAz{
  width:auto;
  min-width:36px;
  padding:0 6px;
  font-size:11px;
  font-weight:600;
  letter-spacing:-0.02em;
}
.btn--tabDuplicateRoom svg{
  display:block;
  width:14px;
  height:14px;
  pointer-events:none;
}
.roomDuplicateModal__lead{
  margin:0 0 12px;
  font-size:13px;
  line-height:1.4;
}
.roomDuplicateModal__nameField{
  margin-bottom:14px;
}
.roomDuplicateModal__fieldset{
  margin:0;
  padding:0;
  border:none;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.roomDuplicateModal__check{
  display:flex;
  align-items:flex-start;
  gap:8px;
  font-size:13px;
  line-height:1.35;
  cursor:pointer;
}
.roomDuplicateModal__check input{
  margin-top:2px;
  flex-shrink:0;
}
.trialRoomLimitMessage{ font-size:12px; color:var(--muted); margin:4px 0 0; line-height:1.35; }
.readOnlyBanner{ padding:8px 16px; background:var(--panel); border-bottom:1px solid var(--line); color:var(--muted); font-size:13px; text-align:center; }
.readOnlyBanner[hidden]{ display:none; }
.trialBadgeWrap{ display:inline-flex; align-items:center; gap:8px; margin-right:8px; white-space:nowrap; }
.trialBadgeWrap.hidden{ display:none !important; }
.trialBadge{ font-size:12px; color:var(--muted); }
.trialBadgeWrap.trialBadgeWrap--endingSoon .trialBadge{ color:#b45309; font-weight:500; }
.trialBadgeCta{ font-size:12px; padding:4px 8px; background:transparent; border:1px solid var(--line); border-radius:6px; color:var(--text); cursor:pointer; white-space:nowrap; }
.trialBadgeCta:hover{ background:var(--panel); border-color:var(--muted); }
.paywallOverlay{ position:fixed; inset:0; z-index:10000; display:flex; align-items:center; justify-content:center; padding:24px; }
.paywallOverlay.hidden{ display:none !important; }
.paywallOverlay__backdrop{ position:absolute; inset:0; background:rgba(0,0,0,0.6); }
.paywallOverlay__box{ position:relative; background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:2rem; max-width:400px; width:100%; box-shadow:var(--shadow); text-align:center; }
.paywallOverlay__title{ margin:0 0 0.75rem; font-size:1.25rem; color:var(--text); }
.paywallOverlay__text{ margin:0 0 0.75rem; color:var(--muted); font-size:0.95rem; }
.paywallOverlay__pricing{ margin:0 0 1.25rem; padding:0.75rem 1rem; background:var(--input-bg, #f4f4f4); border-radius:8px; font-size:0.9rem; color:var(--text); }
.paywallOverlay__pricing .pricing-line{ margin:0.25rem 0; }
.paywallOverlay__pricing .pricing-badge{ display:inline-block; margin-left:6px; padding:2px 6px; font-size:11px; background:var(--primary, #4f46e5); color:#fff; border-radius:4px; }
.paywallOverlay__pricing .pricing-line--muted{ font-size:0.85em; color:var(--muted); }
.paywallOverlay__cta{ width:100%; }
/* Účet (#userModal): vlastní rozměry – ne šířka A4 / ořez z náhledu protokolu */
#userModal .user-modal-box{
  max-width:min(580px, calc(100vw - 32px));
  width:min(580px, calc(100vw - 32px));
  margin-left:auto;
  margin-right:auto;
  box-sizing:border-box;
  max-height:min(90vh, 720px);
  display:flex;
  flex-direction:column;
}
#userModal .protocol-preview-body--account{
  display:flex;
  flex-direction:column;
  gap:0;
  width:100%;
  max-width:100%;
  min-width:0;
  box-sizing:border-box;
  padding:14px 18px 16px;
  overflow-x:auto;
}
#userModal .user-modal-footer{
  justify-content:flex-end;
}
#changePasswordModal .change-password-modal-box{
  max-width:min(440px, 94vw);
  width:100%;
  max-height:min(90vh, 520px);
  display:flex;
  flex-direction:column;
}
#changePasswordModal .protocol-preview-body{
  padding:14px 16px 16px;
}
.user-modal-section{
  margin:0 0 1.15rem;
}
.user-modal-section:last-of-type{
  margin-bottom:0.35rem;
}
.user-modal-section__title{
  margin:0 0 0.55rem;
  font-size:0.68rem;
  font-weight:700;
  letter-spacing:0.08em;
  text-transform:uppercase;
  color:var(--muted);
}
.user-modal-profile__card{
  display:flex;
  flex-direction:column;
  gap:0.85rem;
  padding:0.75rem 0.85rem;
  background:var(--input-bg);
  border:1px solid var(--line);
  border-radius:12px;
}
.user-modal-profile__identity{
  display:flex;
  flex-direction:column;
  gap:0.55rem;
  min-width:0;
}
.user-modal-profile__name-line{
  margin:0;
  font-size:1.05rem;
  font-weight:600;
  line-height:1.35;
  color:var(--text);
  word-break:break-word;
}
.user-modal-profile__field{
  display:flex;
  flex-direction:column;
  gap:3px;
  min-width:0;
}
.user-modal-profile__field-label{
  font-size:0.68rem;
  font-weight:600;
  letter-spacing:0.04em;
  text-transform:uppercase;
  color:var(--muted);
}
.user-modal-profile__value--multiline{
  white-space:normal;
  word-break:break-word;
  font-weight:500;
}
.user-modal-profile__links{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:0.5rem 1rem;
}
.user-modal-lang-stack{
  display:flex;
  flex-direction:column;
  gap:0.65rem;
  padding:0.65rem 0.8rem;
  background:var(--input-bg);
  border:1px solid var(--line);
  border-radius:12px;
}
.user-modal-lang-row--stacked{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:0.35rem;
  margin:0;
}
.user-modal-lang-row--stacked .user-modal-label{
  display:block;
  min-width:0;
  font-size:0.8rem;
  font-weight:600;
  color:var(--text);
}
.user-modal-lang-row--stacked .user-modal-select{
  margin-left:0;
  width:100%;
  max-width:100%;
  box-sizing:border-box;
}
.user-modal-section--devices{
  margin-top:0.25rem;
  padding-top:1rem;
  border-top:1px solid var(--line);
}
.user-modal-devices-block:not(.hidden){
  margin-top:0.35rem;
}
.user-modal-devices-block__title{
  margin-bottom:6px;
}
.user-modal-logout-row{
  margin-top:0.85rem;
  display:flex;
  flex-wrap:wrap;
  gap:0.5rem;
}
.user-modal-logout-row__btn{
  min-width:8rem;
}

.user-modal-billing__heading{ margin:0 0 6px; }
.user-modal-billing{ margin:1rem 0; padding:0.75rem 0; border-top:1px solid var(--line); }
.user-modal-billing.hidden{ display:none !important; }
.user-modal-billing__cta{ margin-top:0.5rem; }
.user-modal-billing .billing-status-card{ font-size:0.9rem; }
.user-modal-billing .billing-status-card .billing-plan{ font-weight:600; color:var(--text); }
.user-modal-billing .billing-status-card .billing-status{ color:var(--muted); }
.user-modal-billing .billing-canceled{ color:var(--muted); }
/* Tým a licence (pricing v2): oddělení jako u ostatních sekcí účtu */
.user-modal-section--team.user-modal-team.user-modal-billing{
  margin:0 0 1.15rem;
  padding:1rem 0 0;
  border-top:1px solid var(--line);
}
.user-modal-team__card{
  margin:0 0 0.65rem;
}
.user-modal-team__card.user-modal-profile__card{
  padding:1rem 0.9rem 0.9rem;
  box-sizing:border-box;
}
.user-modal-team__card:last-child{
  margin-bottom:0;
}
.user-modal-team__card-heading{
  margin:0.1rem 0 0.6rem;
  font-size:0.8rem;
  font-weight:600;
  color:var(--text);
}
.user-modal-team__facts{
  margin:0;
  display:flex;
  flex-direction:column;
  gap:0.65rem;
}
.user-modal-team__fact{
  display:grid;
  grid-template-columns:minmax(0,7.5rem) minmax(0,1fr);
  gap:0.4rem 0.75rem;
  align-items:start;
}
.user-modal-team__fact dt{
  margin:0;
  font-size:0.68rem;
  font-weight:600;
  letter-spacing:0.04em;
  text-transform:uppercase;
  color:var(--muted);
}
.user-modal-team__fact dd{
  margin:0;
  font-size:0.92rem;
  line-height:1.4;
  color:var(--text);
  word-break:break-word;
}
.user-modal-team__fact-extra{
  font-size:0.82rem;
}
.user-modal-team__card-actions{
  margin-top:0.65rem;
  display:flex;
  flex-wrap:wrap;
  gap:0.5rem;
}
.user-modal-team__card-actions .btn:disabled{
  opacity:0.55;
  cursor:not-allowed;
}
@media (max-width: 420px){
  .user-modal-team__fact{
    grid-template-columns:1fr;
  }
}
.user-modal-team__seats{ font-size:0.9rem; color:var(--text); margin:0.35rem 0 0.5rem; }
.user-modal-team__pricing{ margin:0.25rem 0 0.5rem; font-size:0.85rem; color:var(--muted); }
.user-modal-team__meta{ display:block; }
.user-modal-team__card-heading.user-modal-team__members-title{ margin-top:0 !important; }
.user-modal-team__members-title{ margin-top:0.75rem !important; }
.user-modal-team__card .user-modal-team__members{
  margin-top:0.35rem;
}
.user-modal-team__members{ margin-top:0.35rem; max-height:12rem; overflow:auto; }
.user-modal-team__table{ width:100%; border-collapse:collapse; font-size:0.85rem; }
.user-modal-team__member-actions-cell{
  vertical-align:top;
  min-width:9rem;
}
.user-modal-team__member-actions{
  display:flex;
  flex-wrap:wrap;
  gap:0.35rem;
  align-items:center;
}
.user-modal-team__table th,
.user-modal-team__table td{ text-align:left; padding:4px 8px 4px 0; border-bottom:1px solid var(--line); }
.user-modal-team__table th{ color:var(--muted); font-weight:600; }
.user-modal-team__empty{ color:var(--muted); font-size:0.9rem; margin:0; }
.user-modal-team__limit-hint{ margin:0 0 0.5rem; padding:0.5rem 0.65rem; font-size:0.88rem; line-height:1.35; color:var(--text); background:rgba(251,191,36,0.12); border:1px solid rgba(251,191,36,0.45); border-radius:10px; }
.user-modal-team__invite{ margin-top:0; padding-top:0; border-top:none; display:flex; flex-direction:column; gap:0.4rem; }
.user-modal-team__invite.user-modal-team__invite--blocked input,
.user-modal-team__invite.user-modal-team__invite--blocked select,
.user-modal-team__invite.user-modal-team__invite--blocked button{ opacity:0.55; pointer-events:none; }
.user-modal-team__invite .user-modal-label{ margin-top:0.25rem; }
.user-modal-team__msg{ font-size:0.85rem; margin:0.25rem 0 0; }
.user-modal-team__msg--error{ color:#f87171; }
.user-modal-team__plan{
  margin-top:0;
  padding-top:0;
  border-top:none;
}
.tariff-edit-modal--readonly .tariff-edit__card{
  opacity:0.92;
}
.user-modal-team__plan-grid{
  display:grid;
  grid-template-columns: minmax(0,1fr) minmax(0,1.2fr);
  gap:0.35rem 0.75rem;
  align-items:center;
  margin-top:0.35rem;
}
@media (max-width: 520px){
  .user-modal-team__plan-grid{ grid-template-columns: 1fr; }
}
.user-modal-team__mod-chk{ margin:0.5rem 0; display:flex; flex-direction:column; gap:0.35rem; }
.user-modal-team__mod-row{ display:flex; align-items:center; gap:0.5rem; font-size:0.9rem; cursor:pointer; }
.user-modal-team__mod-row input{ flex-shrink:0; }
.user-modal-team__plan-actions{ display:flex; flex-wrap:wrap; gap:0.5rem; margin-top:0.5rem; }
.user-modal-team__quote{ margin-top:0.6rem; padding:0.5rem 0.65rem; background:var(--input-bg, rgba(0,0,0,0.04)); border:1px solid var(--line); border-radius:10px; font-size:0.88rem; }
.user-modal-team__quote-total{ margin-bottom:0.35rem; }
.user-modal-team__quote-lines{ margin:0; padding-left:1.1rem; color:var(--muted); }
.user-modal-team__quote-note{ margin:0; color:var(--muted); }
.user-modal-team__plan-summary{ margin:0; font-size:0.9rem; line-height:1.45; color:var(--text); }
.user-modal-team__plan-summary .user-modal-team__summary-line{ margin:0 0 0.35rem; }
.user-modal-team__plan-summary .user-modal-team__summary-mods{ margin:0; font-size:0.85rem; }

/* Modal úpravy tarifu (nad #userModal; pod #appDialogModal) */
#tariffEditModal.protocol-preview-modal{ z-index:10500; }
#tariffEditModal .tariff-edit-modal__box{
  max-width:min(560px, calc(100vw - 32px));
  width:min(560px, calc(100vw - 32px));
  margin-left:auto;
  margin-right:auto;
  box-sizing:border-box;
  max-height:min(92vh, 780px);
  display:flex;
  flex-direction:column;
}
#tariffEditModal .protocol-preview-header{
  padding:12px 18px;
}
.tariff-edit-modal__body{
  overflow-y:auto;
  flex:1;
  min-height:0;
  min-width:0;
  box-sizing:border-box;
  padding:14px 18px 16px;
}
.tariff-edit-modal__body > .tariff-edit__meta:first-of-type{
  margin-top:0;
}
.tariff-edit__meta{ margin:0 0 0.35rem; font-size:0.82rem; line-height:1.35; }
.tariff-edit__section-label{ margin-top:0.65rem !important; margin-bottom:0.25rem !important; }
.tariff-edit__cards{
  display:flex;
  flex-direction:column;
  gap:0.5rem;
  margin:0.15rem 0 0.35rem;
}
.tariff-edit__card{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:0.65rem;
  align-items:start;
  border:2px solid var(--line);
  border-radius:12px;
  padding:0.65rem 0.75rem;
  cursor:pointer;
  margin:0;
  transition:border-color 0.15s ease, background 0.15s ease;
}
.tariff-edit__card:has(input:checked){
  border-color:var(--primary, #4f46e5);
  background:rgba(79, 70, 229, 0.07);
}
.tariff-edit__card-radio{
  margin-top:0.2rem;
  flex-shrink:0;
}
.tariff-edit__card-body{
  display:flex;
  flex-direction:column;
  gap:0.2rem;
  min-width:0;
}
.tariff-edit__card-title{ font-weight:700; font-size:1rem; color:var(--text); }
.tariff-edit__card-seats{ font-size:0.85rem; color:var(--muted); }
.tariff-edit__card-desc{ font-size:0.86rem; line-height:1.4; color:var(--text); }
.tariff-edit__stepper{
  display:inline-flex;
  align-items:center;
  gap:0.5rem;
  margin:0.15rem 0 0;
  flex-wrap:wrap;
}
.tariff-edit__step-btn{
  min-width:2.35rem;
  height:2.35rem;
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:1.1rem;
  line-height:1;
}
.tariff-edit__step-value{
  min-width:2.75rem;
  text-align:center;
  font-variant-numeric: tabular-nums;
  font-weight:600;
}
.tariff-edit__extra-hint{ margin:0.35rem 0 0 !important; font-size:0.82rem; }
.tariff-edit__quote{ margin-top:0.25rem !important; }
.tariff-edit__footer{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:0.5rem;
  justify-content:flex-end;
}
.tariff-edit__footer #tariffEditClose{ margin-right:auto; }
.visually-hidden{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
.user-modal-devices__summary{ font-size:12px; color:var(--muted); margin-bottom:8px; }
.user-modal-devices__list{ display:flex; flex-direction:column; gap:8px; max-height:220px; overflow:auto; }
.user-modal-devices__item{ border:1px solid var(--line); border-radius:8px; padding:8px; background:var(--bg); }
.user-modal-devices__title{ font-size:13px; font-weight:600; margin-bottom:4px; word-break:break-word; }
.user-modal-devices__meta{ font-size:12px; color:var(--muted); }
.user-modal-devices__actions{ margin-top:6px; display:flex; gap:8px; }
.user-modal-devices__chip{ display:inline-flex; margin-left:6px; padding:1px 6px; border-radius:999px; font-size:11px; font-weight:600; border:1px solid var(--line); color:var(--muted); }
.user-modal-devices__empty{ font-size:12px; color:var(--muted); }
.user-modal-change-password{ margin:1rem 0; padding:0.75rem 0; border-top:1px solid var(--line); position:relative; }
.change-password-modal-username-offscreen{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
  opacity:0;
  pointer-events:none;
}
.user-modal-change-password__title{ margin:0 0 0.75rem; font-size:1rem; font-weight:600; color:var(--text); }
.user-modal-change-password__row{ margin:0 0 0.5rem; }
.user-modal-change-password__row .user-modal-label{ display:block; font-size:12px; color:var(--muted); margin:0 0 2px; }
.user-modal-change-password .user-modal-input{ width:100%; max-width:20rem; padding:6px 8px; border:1px solid var(--btnLine); border-radius:8px; background:var(--input-bg); color:var(--text); font-size:1rem; box-sizing:border-box; }
.user-modal-change-password__message{ margin:0.5rem 0 0; font-size:0.9rem; }
.user-modal-change-password__message.success{ color:#22c55e; }
.user-modal-change-password__message.error{ color:#f87171; }
.user-modal-change-password #userModalChangePasswordBtn{ margin-top:0.25rem; }
.user-modal__change-password-btn{ margin-top:0.5rem; }
.change-password-modal-box .user-modal-change-password{ margin:0; padding:0; border-top:none; }
.change-password-modal-box .user-modal-change-password__title{ display:none; }
.billingPastDueBanner{ display:flex; align-items:center; justify-content:center; gap:12px; flex-wrap:wrap; padding:10px 16px; background:#fef3c7; border-bottom:1px solid #f59e0b; color:#92400e; font-size:13px; }
.billingPastDueBanner.hidden{ display:none !important; }
.billingPastDueBanner__btn{ flex-shrink:0; }
.emailVerificationBanner{ display:flex; align-items:center; justify-content:center; gap:12px; flex-wrap:wrap; padding:10px 16px; background:#dbeafe; border-bottom:1px solid #3b82f6; color:#1e40af; font-size:13px; }
.emailVerificationBanner.hidden{ display:none !important; }
.emailVerificationBanner__btn{ flex-shrink:0; }
.offlineBanner{ padding:8px 16px; background:var(--panel); border-bottom:1px solid var(--line); color:var(--muted); font-size:13px; text-align:center; }
.offlineBanner.hidden{ display:none !important; }
/* Upozornění: příští uložení vytvoří kopii (režim po volbě „Pokračovat v této verzi“ při konfliktu) */
.projectSyncBanner{
  padding:8px 12px;
  background:#fef3c7;
  border-bottom:1px solid #f59e0b;
  color:#92400e;
  font-size:13px;
  text-align:center;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  flex-wrap:wrap;
}
.projectSyncBanner.hidden{ display:none !important; }
.projectSyncBanner__btn{ flex-shrink:0; }
/* Přehled projektů (projectsListModal) – 2 sloupce: název (+ datum v řádku), akce */
.global-form-modal__box--projects{
  max-width:calc(100vw - 40px);
  width:calc(100vw - 40px);
}
.global-form-modal__box--projectsMobileMenu{
  max-width:460px;
}
/* Historie verzí projektu – širší modal, jednořádková tabulka */
.global-form-modal__box--wide{
  max-width:min(980px, calc(100vw - 32px));
  width:min(980px, calc(100vw - 32px));
}
#projectRevisionsModal .projectsListTableWrap{
  max-height:420px;
  overflow:auto;
}
#projectRevisionsModal .projectRevisionsTable{
  width:100%;
  min-width:820px;
  table-layout:auto;
}
#projectRevisionsModal .projectRevisionsTable th,
#projectRevisionsModal .projectRevisionsTable td{
  white-space:nowrap;
}
#projectRevisionsModal .projectRevisionsTable th:last-child,
#projectRevisionsModal .projectRevisionsTable td:last-child{
  width:1%;
  text-align:right;
}
#projectRevisionsModal .projectRevisionsTable .btn{
  white-space:nowrap;
}
.projectsMobileMenu__actions{
  display:flex;
  flex-direction:column;
  gap:10px;
}
.projectsMobileMenu__actions .btn{
  width:100%;
  justify-content:center;
}
#btnProjectsMobileProjectDetails[hidden]{
  display:none !important;
}
/* Přehled projektů jako panel – bez centrování modalu (viz .projects-list-panel-active) */
.projectsListToolbar{
  display:flex;
  flex-wrap:nowrap;
  align-items:center;
  gap:8px;
  margin-bottom:12px;
}
.projectsListRecent{
  margin:0 0 12px 0;
  padding:10px 12px;
  border-radius:10px;
  border:1px solid var(--line);
  background:var(--input-bg, rgba(0,0,0,0.03));
}
.projectsListRecent.hidden{
  display:none !important;
}
.projectsListRecent__head{
  font-size:12px;
  font-weight:600;
  color:var(--muted);
  margin:0 0 8px 0;
  letter-spacing:0.02em;
}
.projectsListRecent__inner{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.projectsListRecent__btn{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:4px;
  max-width:100%;
  padding:8px 10px;
  font-size:13px;
  line-height:1.35;
  border-radius:8px;
  border:1px solid var(--line);
  background:var(--panel, var(--bg));
  color:var(--text);
  cursor:pointer;
  text-align:left;
}
.projectsListRecent__line1{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:0 4px;
  min-width:0;
}
.projectsListRecent__name{
  font-weight:600;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.projectsListRecent__roomStats{
  flex-shrink:0;
  white-space:nowrap;
}
.projectsListRecent__meta{
  font-size:11px;
  line-height:1.3;
  color:var(--muted);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.projectsListRecent__btn:hover{
  border-color:var(--accent, #3b82f6);
  background:var(--hover, rgba(0,0,0,0.04));
}
.projectsListRecent__btn:disabled{
  opacity:0.6;
  cursor:wait;
}
.projectsListFilter{
  margin-left:auto;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.projectsListFilter label{
  font-size:12px;
  color:var(--muted);
  white-space:nowrap;
}
.projectsListFilter input{
  width:min(360px, 32vw);
  height:30px;
  padding:4px 8px;
  font-size:12px;
}
.projectsListTable__thSortInner{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  flex-wrap:nowrap;
  width:100%;
  min-width:0;
}
.projectsListTable__thLabel{
  min-width:0;
  text-align:center;
}
.projectsListTable__sortBtn{
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:0;
  flex-shrink:0;
  padding:2px 3px;
  margin:0;
  border:none;
  background:transparent;
  color:var(--muted);
  cursor:pointer;
  border-radius:4px;
  line-height:1;
  vertical-align:middle;
}
.projectsListTable__sortBtn:hover{
  color:var(--text);
  background:rgba(0,0,0,0.06);
}
.projectsListTable__sortChev{
  display:block;
  opacity:0.28;
  line-height:0;
}
.projectsListTable__sortChev svg{
  display:block;
}
.projectsListTable__sortBtn--active .projectsListTable__sortChev{
  opacity:0.22;
}
.projectsListTable__sortBtn--active.projectsListTable__sortBtn--asc .projectsListTable__sortChev--up{
  opacity:1;
  color:var(--accent, #3b82f6);
}
.projectsListTable__sortBtn--active.projectsListTable__sortBtn--desc .projectsListTable__sortChev--down{
  opacity:1;
  color:var(--accent, #3b82f6);
}
.projectsListPath{
  margin:0 0 10px 0;
  font-size:12px;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.projectsListGroupingHint{
  margin:-6px 0 10px 0;
  font-size:12px;
  color:var(--muted);
}
.projectsListPrefsBtn{
  min-width:2.25rem;
  padding-left:0.55rem;
  padding-right:0.55rem;
}
.projectsListPrefsBtn--custom{
  box-shadow:inset 0 0 0 1px var(--accent, #3b82f6);
}
.projectsListPrefsBody{
  display:flex;
  flex-direction:column;
  gap:0.75rem;
}
.projectsListPrefsIntro,
.projectsListPrefsBody .user-modal-muted{
  margin:0;
  font-size:13px;
  color:var(--muted);
}
.projectsListPrefsField{
  display:flex;
  flex-direction:column;
  gap:0.35rem;
}
.projectsListPrefsField label{
  font-size:13px;
  font-weight:600;
}
.projectsListPrefsGroupFields{
  display:flex;
  flex-direction:column;
  gap:0.75rem;
  padding:0.65rem 0.75rem;
  border:1px solid var(--line, #e5e7eb);
  border-radius:8px;
}
.projectsListPrefsCheck{
  margin:0;
}
.projectsListPrefsActions{
  display:flex;
  justify-content:flex-end;
  gap:0.5rem;
  margin-top:0.25rem;
}
.global-form-modal__box--projectsListPrefs{
  max-width:520px;
}
.projectsListToolbar__upgrade{
  margin-left:auto;
}
.projectsListTableWrap{
  max-height:420px;
  overflow-y:auto;
  overflow-x:hidden;
}
.projectsListTable{
  width:100%;
  border-collapse:collapse;
  font-size:13px;
  table-layout:fixed;
  display:table;
}
.projectsListTable thead{ display:table-header-group; }
.projectsListTable tbody{ display:table-row-group; }
.projectsListTable tr{ display:table-row; }
.projectsListTable th,
.projectsListTable td{ display:table-cell; }
.projectsListTable th,
.projectsListTable td{
  padding:8px 10px;
  border-bottom:1px solid var(--line);
  text-align:left;
  font-weight:400;
  vertical-align:middle;
}
.projectsListTable th{
  font-weight:600;
  color:var(--muted);
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:0.02em;
}
/* Svislé čáry mezi sloupci v těle tabulky jen (hlavička bez svislých děličů). */
.projectsListTableWrap:not(.adminTableWrap) .projectsListTable tbody td:not(:last-child){
  border-right:1px solid var(--line);
}
.projectsListTableWrap:not(.adminTableWrap) .projectsListTable thead th{
  text-align:center;
}
.projectsListTableWrap:not(.adminTableWrap) .projectsListTable thead th.projectsListTable__colOpen{
  text-align:center;
}
.projectsListTableWrap:not(.adminTableWrap) .projectsListTable thead .projectsListTable__thActionsWrap{
  justify-content:center;
  text-align:center;
}
.projectsListTable__colName{
  width:32%;
  min-width:0;
}
.projectsListTable__colOrder{
  width:8%;
  min-width:52px;
  max-width:88px;
}
.projectsListTable__colDate{
  width:12%;
  min-width:96px;
  max-width:132px;
}
.projectsListTable__colOwner{
  width:10%;
  min-width:52px;
  max-width:118px;
}
.projectsListTable__colOpen{
  width:38%;
  min-width:180px;
  white-space:normal;
  vertical-align:middle;
  text-align:right;
  padding-left:16px;
  padding-right:4px;
}
.projectsListTable td:first-child{ vertical-align:middle; }
.projectsListTable__cellOrder,
.projectsListTable__cellDate,
.projectsListTable__cellOwner{
  font-size:12px;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.projectsListTable__cellOrder{
  max-width:88px;
}
.projectsListTable__cellOwner{
  max-width:118px;
}
/* Projekt: název + statistika (počet/PASS/FAIL) jako kompaktní skupina vlevo. */
.projectsListTable__nameLine--project{
  display:flex;
  align-items:baseline;
  width:100%;
  max-width:100%;
  vertical-align:middle;
}
.projectsListTable__nameLine--project .projectsListTable__nameText{
  flex:1 1 auto;
  min-width:0;
  max-width:none;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-weight:400;
}
.projectsListTable__nameOpenBtn{
  appearance:none;
  margin:0;
  padding:0;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  text-align:left;
  cursor:pointer;
}
.projectsListTable__nameOpenBtn:hover,
.projectsListTable__nameOpenBtn:focus-visible{
  text-decoration:underline;
  color:var(--accent, var(--text));
}
.projectsListTable__nameOpenBtn:focus-visible{
  outline:2px solid var(--accent, #2563eb);
  outline-offset:2px;
}
.projectsListTable__nameLineLock{
  display:inline-flex;
  flex-shrink:0;
  align-self:center;
  margin-right:5px;
  opacity:0.88;
  color:var(--muted);
  cursor:default;
  line-height:0;
}
.projectsListTable__nameLineLock svg{
  display:block;
}
.projectsListTable__cellProjectName--nav .projectsListTable__nameText{
  flex:1 1 auto;
  max-width:none;
}
.projectsListTable__folderCount{
  font-weight:300;
  font-size:12px;
  color:var(--muted);
  white-space:nowrap;
}
.projectsListTable__nameText{
  font-weight:400;
}
.projectsListTable__roomStats{
  flex-shrink:0;
  white-space:nowrap;
  font-weight:300;
  font-size:12px;
  color:var(--muted);
  margin-left:2px;
}
.projectsListTable__roomStatsMuted{
  color:var(--muted);
}
.projectsListTable__roomStatsPass{
  color:#22c55e;
}
.projectsListTable__roomStatsFail{
  color:#f87171;
}
.projectsListTable__roomStatsNoData{
  color:var(--muted);
}
.projectsListTable__nameDateSep{
  flex-shrink:0;
  font-weight:400;
  color:var(--muted);
  opacity:0.85;
  padding:0 2px;
}
.projectsListTable__nameDate{
  flex-shrink:0;
  font-weight:300;
  font-size:12px;
  color:var(--muted);
  letter-spacing:0.01em;
}
/* Složka / zpět: text v jednom řádku s … (ne zalamování uvnitř tlačítka) */
.projectsListTable__cellProjectName > .btn{
  display:inline-flex;
  align-items:center;
  max-width:100%;
  min-width:0;
  vertical-align:middle;
  text-align:left;
}
.projectsListTable__cellProjectName > .btn > span[aria-hidden="true"]{
  flex-shrink:0;
}
.projectsListTable__cellProjectName > .btn .projectsListTable__nameText{
  flex:1 1 auto;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.projectsListTable tbody tr:hover{
  background:var(--hover);
}
/* Druhý sloupec: buňka zůstává table-cell; flex je na vnitřním .projectsListTable__actions (flex na <td> rozbíjí spojitost řádků / borderů). */
.projectsListTable__cellActions{
  vertical-align:middle;
  text-align:right;
  min-width:0;
}
.projectsListTable__actions{
  --projectsListActionH:34px;
  display:flex;
  flex-flow:row nowrap;
  align-items:center;
  align-content:center;
  justify-content:flex-end;
  gap:8px;
  white-space:nowrap;
  width:100%;
  min-width:0;
  /* overflow musí zůstat visible — jinak se ořezává rozbalovací menu sdílení (position:absolute, otevírá nahoru). */
  overflow:visible;
}
/* Sdílení: ikonka + vlastní menu (ikona + text v položkách). */
.projectsListTable__sharingIconWrap{
  position:relative;
  flex:0 0 auto;
}
.projectsListTable__sharingTrigger{
  position:relative;
  padding:0;
  min-width:var(--projectsListActionH, 34px);
  min-height:var(--projectsListActionH, 34px);
}
.projectsListTable__sharingTrigger:disabled{
  opacity:0.55;
  cursor:not-allowed;
}
.projectsListTable__sharingIconLayer{
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  color:var(--text);
}
.projectsListTable__sharingIconLayer svg{
  display:block;
  width:20px;
  height:20px;
  flex-shrink:0;
}
.projectsListTable__sharingMenu{
  position:absolute;
  top:auto;
  bottom:calc(100% + 4px);
  right:0;
  z-index:5000;
  min-width:min(280px, calc(100vw - 48px));
  max-width:min(340px, 92vw);
  /* Vždy 3 položky — neomezovat max-height (45vh v modalu bývá nízké → zůstaly jen ~2 viditelné řádky). */
  padding:4px;
  margin:0;
  list-style:none;
  background:var(--panel-bg, var(--input-bg, #fff));
  border:1px solid var(--line);
  border-radius:8px;
  box-shadow:0 -4px 20px rgba(0,0,0,0.14);
}
.projectsListTable__sharingMenu.hidden{
  display:none !important;
}
.projectsListTable__sharingMenuItem{
  display:flex;
  flex-direction:row;
  align-items:center;
  gap:10px;
  width:100%;
  margin:0;
  padding:8px 10px;
  border:none;
  border-radius:6px;
  background:transparent;
  color:var(--text);
  font:inherit;
  font-size:13px;
  line-height:1.25;
  text-align:left;
  cursor:pointer;
  box-sizing:border-box;
}
.projectsListTable__sharingMenuItem:hover{
  background:var(--hover);
}
.projectsListTable__sharingMenuItem--active{
  background:var(--hover);
  font-weight:600;
}
.projectsListTable__sharingMenuItemIcon{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  color:var(--text);
}
.projectsListTable__sharingMenuItemIcon svg{
  width:22px;
  height:22px;
  display:block;
}
.projectsListTable__sharingMenuItemLabel{
  flex:1 1 auto;
  min-width:0;
}
.projectsListTable__sharingIconInner{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
}
.projectsListTable__sharingLockBadge{
  position:absolute;
  right:-1px;
  bottom:-1px;
  display:flex;
  align-items:center;
  justify-content:center;
  width:11px;
  height:11px;
  color:#eab308;
  opacity:0.98;
}
.projectsListTable__sharingLockBadge svg{
  width:11px;
  height:11px;
}
.projectsListTable__sharingStrike{
  stroke:#dc2626;
  stroke-width:2;
  stroke-linecap:round;
  opacity:1;
}
.projectsListTable__actions > .btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  flex-shrink:0;
  width:auto;
  margin:0;
  white-space:nowrap;
  font-size:12px;
  box-sizing:border-box;
  height:var(--projectsListActionH, 34px);
  min-height:var(--projectsListActionH, 34px);
  max-height:var(--projectsListActionH, 34px);
  padding:0 8px;
  line-height:1;
}
.projectsListTable__actions > .btn.projectsListTable__btnIcon{
  padding:0 7px;
  min-width:var(--projectsListActionH, 34px);
  min-height:var(--projectsListActionH, 34px);
}
/* Musí přebít .btn.btnContext.btn--small (jinak 4px 10px + 0.85rem rozhází výšku CSV/ikon). */
.projectsListTable__actions > .btn.btnContext.btn--small{
  height:var(--projectsListActionH, 34px);
  min-height:var(--projectsListActionH, 34px);
  max-height:var(--projectsListActionH, 34px);
  padding:0 9px;
  line-height:1;
  font-size:12px;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.projectsListTable__actions > .btn.btnContext.btn--small.projectsListTable__btnIcon{
  padding:0 8px;
  min-width:var(--projectsListActionH, 34px);
}
.projectsListTable__actions > .btn.btnContext.btn--small.projectsListTable__btnFormat{
  padding:0 11px;
}
.projectsListTable__actions > .btn.btnContext.btn--small svg{
  display:block;
  flex-shrink:0;
}
.projectsListTable__actions > label.projectsListTable__lockRowCtl{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  box-sizing:border-box;
  height:var(--projectsListActionH, 34px);
  min-height:var(--projectsListActionH, 34px);
  max-height:var(--projectsListActionH, 34px);
  margin:0;
  padding:0 9px;
  border:1px solid var(--line);
  border-radius:6px;
  background:transparent;
  cursor:pointer;
  vertical-align:middle;
  flex:0 0 auto;
  flex-shrink:0;
  line-height:0;
}
.projectsListTable__actions > label.projectsListTable__lockRowCtl .projectsListTable__lockRowCtl__icon{
  display:block;
  flex-shrink:0;
}
.projectsListTable__actions > label.projectsListTable__lockRowCtl:hover{
  background:var(--input-bg);
  border-color:var(--muted);
}
.projectsListTable__actions > label.projectsListTable__lockRowCtl input[type="checkbox"]{
  flex-shrink:0;
  margin:0;
  cursor:pointer;
  align-self:center;
  width:15px;
  height:15px;
  box-sizing:border-box;
}
.projectsListEmpty{
  margin-top:8px;
  font-size:13px;
  color:var(--muted);
}
/* Mobil (starý centered modal): omezení výšky tabulky.
   V celoplošném panelu (projects-list-panel-active) platí flex scroll výše – 60vh by na iOS rozbilo listování. */
body.device-mobile-or-tablet:not(.projects-list-panel-active) .projectsListTableWrap{
  max-height:60vh;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
/* Mobil: jeden řádek – název i datum se oříznou (…); Otevřít vždy celé vpravo */
body.device-mobile-or-tablet .projectsListTable{
  font-size:13px;
  table-layout:fixed;
  width:100%;
}
body.device-mobile-or-tablet .projectsListTable th,
body.device-mobile-or-tablet .projectsListTable td{
  padding:6px 4px;
  vertical-align:middle;
  line-height:1.25;
}
body.device-mobile-or-tablet .projectsListTable__colName,
body.device-mobile-or-tablet .projectsListTable thead th:nth-child(1){
  width:auto;
  min-width:0;
  max-width:none;
}
body.device-mobile-or-tablet .projectsListTable__cellProjectName{
  min-width:0;
  overflow:hidden;
}
body.device-mobile-or-tablet .projectsListTable__cellProjectName > .btn,
body.device-mobile-or-tablet .projectsListTable__nameLine > .btn{
  max-width:100%;
  box-sizing:border-box;
}
body.device-mobile-or-tablet .projectsListTable__nameLine{
  flex-wrap:wrap;
}
/* Akce: pátý sloupec */
body.device-mobile-or-tablet .projectsListTable__colOpen,
body.device-mobile-or-tablet .projectsListTable thead th:nth-child(5),
body.device-mobile-or-tablet .projectsListTable tbody td:nth-child(5){
  width:6.5rem;
  min-width:6.5rem;
  max-width:6.5rem;
  white-space:nowrap;
  text-align:left;
  vertical-align:middle;
  box-sizing:border-box;
  padding-left:4px;
}
body.device-mobile-or-tablet .projectsListTable td.projectsListTable__cellActions{
  display:table-cell !important;
  padding-left:4px;
  padding-right:2px;
}
body.device-mobile-or-tablet .projectsListTable__colOrder,
body.device-mobile-or-tablet .projectsListTable thead th:nth-child(2),
body.device-mobile-or-tablet .projectsListTable tbody td:nth-child(2){
  min-width:4.25rem;
  max-width:6rem;
}
body.device-mobile-or-tablet .projectsListTable__colDate,
body.device-mobile-or-tablet .projectsListTable thead th:nth-child(3),
body.device-mobile-or-tablet .projectsListTable tbody td:nth-child(3){
  min-width:5.5rem;
  max-width:7.5rem;
}
body.device-mobile-or-tablet .projectsListTable td.projectsListTable__cellActions .btn{
  display:inline-block;
  vertical-align:middle;
  padding:6px 8px;
  font-size:12px;
  box-sizing:border-box;
}
/* Mobilní seznam projektů: full-width modal a jen bezpečné akce. */
body.device-mobile-or-tablet #projectsListModal .global-form-modal__box--projects{
  width:calc(100vw - 8px);
  max-width:calc(100vw - 8px);
  height:88vh;
  max-height:88vh;
  border-radius:10px;
}
body.device-mobile-or-tablet #projectsListModal #btnProjectsNew,
body.device-mobile-or-tablet #projectsListModal #btnProjectsSaveAsPtx,
body.device-mobile-or-tablet #projectsListModal #btnProjectsLoadFromFile{
  display:none !important;
}
body.device-mobile-or-tablet #projectsMobileMenuModal .global-form-modal__box--projectsMobileMenu{
  width:calc(100vw - 12px);
  max-width:calc(100vw - 12px);
}
body.device-mobile-or-tablet #projectsListModal .projectsListToolbar{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:8px;
}
body.device-mobile-or-tablet #projectsListModal .projectsListToolbar .btn{
  width:100%;
  justify-content:center;
}
body.device-mobile-or-tablet #projectsListModal .projectsListTable__sortBtn{
  display:none !important;
}
body.device-mobile-or-tablet #projectsListModal .projectsListTable__thSortInner{
  justify-content:center;
  gap:0;
}
body.device-mobile-or-tablet #projectsListModal .projectsListFilter{
  margin-left:0;
  width:100%;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-start;
}
body.device-mobile-or-tablet #projectsListModal .projectsListFilter label{
  flex:0 0 auto;
}
body.device-mobile-or-tablet #projectsListModal .projectsListFilter input{
  flex:1 1 100%;
  width:100%;
  min-width:0;
}
body.device-mobile-or-tablet #projectsListModal #btnProjectsExportAllData{
  display:none !important;
}
body.device-mobile-or-tablet #projectsListModal .projectsListTable__colOrder,
body.device-mobile-or-tablet #projectsListModal .projectsListTable thead th:nth-child(2),
body.device-mobile-or-tablet #projectsListModal .projectsListTable tbody td:nth-child(2){
  display:none !important;
}
body.device-mobile-or-tablet #projectsListModal .projectsListTable__colDate,
body.device-mobile-or-tablet #projectsListModal .projectsListTable thead th:nth-child(3),
body.device-mobile-or-tablet #projectsListModal .projectsListTable tbody td:nth-child(3){
  display:none !important;
}
body.device-mobile-or-tablet #projectsListModal .projectsListTable__colOwner,
body.device-mobile-or-tablet #projectsListModal .projectsListTable thead th:nth-child(4),
body.device-mobile-or-tablet #projectsListModal .projectsListTable tbody td:nth-child(4){
  display:none !important;
}
body.device-mobile-or-tablet #projectsListModal .projectsListTable__colOpen,
body.device-mobile-or-tablet #projectsListModal .projectsListTable thead th:nth-child(5),
body.device-mobile-or-tablet #projectsListModal .projectsListTable tbody td:nth-child(5){
  width:8rem;
  min-width:8rem;
  max-width:8rem;
}
body.trial-read-only .panel input,
body.trial-read-only .panel select,
body.trial-read-only .panel button:not(.read-only-exempt){ pointer-events:none; opacity:0.7; }
body.project-view-only .panel input,
body.project-view-only .panel select,
body.project-view-only .panel button:not(.read-only-exempt){ pointer-events:none; opacity:0.7; }
.projectDuplicateReadOnlyRow{
  display:flex;
  align-items:center;
  gap:8px;
  margin-top:12px;
  cursor:pointer;
  user-select:none;
}
.projectDuplicateHint{
  font-size:12px;
  margin-top:10px;
  color:var(--muted);
}
.project-view-only-banner{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:6px 12px;
  font-size:13px;
  background:linear-gradient(90deg, rgba(251,191,36,0.15), rgba(245,158,11,0.12));
  border-bottom:1px solid rgba(245,158,11,0.35);
  color:var(--text);
}
.project-view-only-banner.hidden{ display:none !important; }
.project-view-only-banner__inner{
  display:inline-flex;
  align-items:center;
  gap:8px;
  max-width:min(720px, 100%);
}
.project-view-only-banner__lock{
  flex-shrink:0;
  opacity:0.85;
}
.projectsListTable__thActionsWrap{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  width:100%;
  text-align:right;
}
.projectsListTable__thLockHint{
  display:inline-flex;
  align-items:center;
  color:var(--muted);
  cursor:help;
  opacity:0.9;
}
.projectsListTable__thLockHint svg{ display:block; }
/* Základ zámku (v buňce akcí přebírá výšku/okraj z .projectsListTable__actions > label…) */
.projectsListTable__lockRowCtl{
  display:inline-flex;
  align-items:center;
  gap:4px;
  margin:0;
  user-select:none;
  vertical-align:middle;
  flex:0 0 auto;
}
.projectsListTable__lockRowCtl__icon{
  flex-shrink:0;
  opacity:0.85;
  pointer-events:none;
}
.projectsListTable__lockRowCtl input[type="checkbox"]{
  margin:0;
  cursor:pointer;
}
.projectsListTable__btnIcon{
  padding:6px 7px;
  min-width:32px;
  min-height:30px;
  box-sizing:border-box;
}
.projectsListTable__btnIcon svg{
  display:block;
}
.projectsListTable__btnIcon--danger:hover{
  color:#f87171;
}
.projectsListTable__btnFormat{
  padding:4px 6px;
  min-width:auto;
}
/* Text CSV/PDF jen uvnitř tlačítka – bez druhého rámečku (stejná výška řádku jako ikony). */
.projectsListTable__formatBadge{
  display:flex;
  align-items:center;
  justify-content:center;
  height:100%;
  font-size:10px;
  font-weight:700;
  letter-spacing:0.06em;
  line-height:1;
  text-transform:uppercase;
  padding:0;
  margin:0;
  border:none;
  border-radius:0;
  background:transparent;
  color:inherit;
  user-select:none;
}
.projectsListTable__actions > .btn .projectsListTable__formatBadge{
  font-size:10px;
  line-height:1;
}
/* „Otevřít“ / Open … jako text (ne ikona složky), bez uppercase jako CSV/PDF. */
.projectsListTable__openLabel{
  display:flex;
  align-items:center;
  justify-content:center;
  height:100%;
  font-size:11px;
  font-weight:600;
  line-height:1.15;
  letter-spacing:0.02em;
  text-transform:none;
  white-space:nowrap;
  padding:0;
  margin:0;
  color:inherit;
  user-select:none;
}
.projectsListTable__actions > .btn.btnContext.btn--small.projectsListTable__btnOpenRow{
  min-width:auto;
  padding:0 10px;
}
.projectsListTable__btnPdf{
  padding:4px 6px;
  min-width:auto;
}
.projectsListTable__actions > .btn.btnContext.btn--small.projectsListTable__btnPdf.projectsListTable__btnPdf--missing,
.projectsListTable__actions > .btn.btnContext.btn--small.projectsListTable__btnPdf:disabled{
  opacity:0.48;
  color:var(--muted);
  border-color:var(--line);
  cursor:not-allowed;
  background:transparent;
}
.projectsListTable__actions > .btn.btnContext.btn--small.projectsListTable__btnPdf.projectsListTable__btnPdf--missing:hover,
.projectsListTable__actions > .btn.btnContext.btn--small.projectsListTable__btnPdf:disabled:hover{
  background:transparent;
  border-color:var(--line);
  filter:none;
}
.tab{
  box-sizing:border-box;
  padding:0 10px;
  min-height:40px;
  border:1px solid var(--line);
  border-radius:0;
  margin-left:-1px;
  background:var(--panel);
  color:var(--text);
  cursor:pointer;
  font-size:13px;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  white-space:nowrap;
  position:relative;
}
.tab__label{
  flex:1 1 auto;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  text-align:center;
}
.tab--hasLightingBadges{
  padding-left:22px;
}
.tabLightingBadges{
  position:absolute;
  left:3px;
  top:3px;
  width:14px;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:1px;
  pointer-events:none;
  z-index:2;
}
.tabLightingBadge{
  width:12px;
  height:12px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#9ca3af;
  opacity:0;
}
.tabLightingBadge.is-active{
  color:#16a34a;
  opacity:1;
}
.tabLightingBadge--electrical.is-active{
  color:#eab308;
}
.tabLightingBadge--placeholder{
  opacity:0;
}
.tab.active .tabLightingBadge.is-active{
  color:#15803d;
}
.tab.active .tabLightingBadge--electrical.is-active{
  color:#d97706;
}
.tabLightingBadge__svg{
  width:10px;
  height:10px;
  display:block;
}
.tab-wrap:first-child .tab{ margin-left:0; }
.tab.tab--round-tl{ border-top-left-radius:8px; }
.tab.tab--round-bl{ border-bottom-left-radius:8px; }
.tab.tab--round-tr{ border-top-right-radius:8px; }
.tab.tab--round-br{ border-bottom-right-radius:8px; }
.tab.tab--row-not-first{ border-top:none; }
.tab.tab--first-in-row{ margin-left:0; }
.tab:hover:not(.active){ background:var(--hover); }
.tab.active{ background:var(--primary); color:var(--primaryText); border-color:var(--line); z-index:1; }

.canvasWrap{
  position:relative;
  z-index:1;
  min-height:0;
  min-width:0;
  display:flex;
  flex-direction:column;
  background:var(--panel); border:1px solid var(--line); border-radius:14px;
  box-shadow:var(--shadow);
  overflow:hidden;
}
/* Inline UA sniff v index.html přidává html.measure-mode i v Editaci — styles-base pak drží overflow:hidden na main/.canvasWrap a usekne pravé vertikální raily (projeví se až po oddálení). Po zapnutí měření má body.measure-mode a řetěz necháváme. */
html.measure-mode body:not(.measure-mode){
  overflow-x:auto;
  overflow-y:hidden;
}
html.measure-mode body:not(.measure-mode) > main.layout{
  overflow-x:visible;
  overflow-y:hidden;
}
html.measure-mode body:not(.measure-mode) .canvasWrap{
  overflow-x:visible;
  overflow-y:hidden;
}
.canvasWrap__body{
  position:relative;
  display:flex;
  flex:1;
  min-height:0;
  min-width:0;
}
.canvasWrap__canvasArea{
  position:relative;
  flex:1;
  min-height:0;
  min-width:0;
  display:flex;
  flex-direction:column;
}
.canvasWrap__canvasArea #canvas{
  flex:1;
  min-height:0;
  min-width:0;
  width:100%;
  height:100%;
  display:block;
  background:#fff;
}
/* Sloupec: nahoře řádek plátno + dock, dole .canvasBottomBar přes celou šířku (position:absolute vůči tomuto bloku) */
.canvasWrap__canvasRow{
  position:relative;
  flex:1;
  min-height:0;
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:stretch;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasWrap__canvasRow{
  overflow:visible;
}
.canvasWrap__canvasMain{
  flex:1;
  min-height:0;
  min-width:0;
  display:flex;
  flex-direction:row;
  align-items:stretch;
  box-sizing:border-box;
  position:relative;
}
/* Sloupec s ikonovými raily (mez plátnem a dokem režimu); na výchozím mobilním layoutu nefiguruje vlastní rámeček. */
.canvasWrap__iconRailsLane{
  display:contents;
}
/* PC / široký „desktop“: v toku gridu je jen úzký levý dock a pravé ikonové raily.
   Rozbalený levý seznam je flyout nad plátnem, aby nezmenšoval canvas ani neposouval HUD. */
body:not(.device-mobile-or-tablet) .canvasWrap__canvasMain,
body.measure-mode-pc .canvasWrap__canvasMain,
body.app-desktop-ui .canvasWrap__canvasMain{
  display:grid;
  grid-template-columns:
    auto
    minmax(0, 1fr)
    auto
    auto;
  grid-template-rows:minmax(0, 1fr);
  gap:0;
  align-items:stretch;
  overflow-x:visible;
  overflow-y:hidden;
}
body:not(.device-mobile-or-tablet) .canvasWrap__canvasMainLeftDock,
body.measure-mode-pc .canvasWrap__canvasMainLeftDock,
body.app-desktop-ui .canvasWrap__canvasMainLeftDock{
  grid-column:1;
  grid-row:1;
  position:relative;
  inset:auto;
  z-index:40;
  justify-self:start;
  align-self:stretch;
  display:flex;
  flex-direction:row;
  align-items:stretch;
  width:max-content;
  max-width:34px;
  min-width:0;
  min-height:0;
  overflow:visible;
  pointer-events:auto;
  box-sizing:border-box;
  margin-left:0;
  padding-left:0;
}
body:not(.device-mobile-or-tablet) .canvasWrap__canvasMainStack,
body.measure-mode-pc .canvasWrap__canvasMainStack,
body.app-desktop-ui .canvasWrap__canvasMainStack{
  grid-column:2;
  grid-row:1;
  position:relative;
  z-index:0;
  min-width:0;
  overflow:hidden;
}
body:not(.device-mobile-or-tablet) .canvasWrap__iconRailsLane,
body.measure-mode-pc .canvasWrap__iconRailsLane,
body.app-desktop-ui .canvasWrap__iconRailsLane{
  grid-column:3;
  grid-row:1;
  position:relative;
  z-index:20;
  display:flex;
  flex-direction:row;
  align-items:stretch;
  flex-shrink:0;
  min-height:0;
  min-width:44px;
  overflow:visible;
  background:color-mix(in srgb, var(--panel) 88%, var(--muted));
}
body:not(.device-mobile-or-tablet) .canvasWrap__iconRailsLane:not(:has(> :not([hidden]) button:not([hidden]))),
body.measure-mode-pc .canvasWrap__iconRailsLane:not(:has(> :not([hidden]) button:not([hidden]))),
body.app-desktop-ui .canvasWrap__iconRailsLane:not(:has(> :not([hidden]) button:not([hidden]))){
  display:none;
}
body:not(.device-mobile-or-tablet) #canvasWrapModeDock.canvasWrap__modeDock,
body.measure-mode-pc #canvasWrapModeDock.canvasWrap__modeDock,
body.app-desktop-ui #canvasWrapModeDock.canvasWrap__modeDock{
  grid-column:4;
  grid-row:1;
  align-self:stretch;
}
body:not(.device-mobile-or-tablet) .canvasWrap__canvasMainLeftDock > *{
  pointer-events:auto;
}
/* Mobil/tablet: pás zón nad plátnem — rozbalený obsah jako overlay (plátno se neposouvá). */
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasWrap__canvasMain{
  overflow:visible;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasWrap__canvasMainLeftDock{
  position:relative;
  inset:auto;
  flex:0 0 auto;
  align-self:stretch;
  width:100%;
  min-height:0;
  max-height:none;
  z-index:45;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  overflow:visible;
  pointer-events:auto;
  box-sizing:border-box;
  border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--panel) 93%, var(--muted));
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasWrap__canvasMainLeftDock > *{
  pointer-events:auto;
}
body.app-desktop-ui .canvasWrap__canvasMainLeftDock > *{
  pointer-events:auto;
}
body.measure-mode-pc.device-mobile-or-tablet .canvasWrap__canvasMainLeftDock{
  min-width:0;
  box-sizing:border-box;
}
.canvasWrap__canvasMainStack{
  flex:1;
  min-width:0;
  min-height:0;
  display:flex;
  flex-direction:column;
  position:relative;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasWrap__canvasMainStack{
  z-index:1;
}

/* Mobil immersive: stav aplikace dole nad stavem sondy (MAVOPROBE připraven, offline, …) */
.canvasMobileImmersiveStatus{
  --canvas-immersive-status-halo:
    -1px -1px 0 rgba(255, 255, 255, 0.98),
    1px -1px 0 rgba(255, 255, 255, 0.98),
    -1px 1px 0 rgba(255, 255, 255, 0.98),
    1px 1px 0 rgba(255, 255, 255, 0.98),
    0 0 4px rgba(255, 255, 255, 0.92),
    0 1px 3px rgba(0, 0, 0, 0.42);
  display:none;
  position:absolute;
  left:0;
  right:0;
  bottom:calc(max(8px, env(safe-area-inset-bottom, 0px)) + 1.35rem + 4px);
  z-index:9;
  max-width:100%;
  margin:0;
  padding:0 12px 2px;
  box-sizing:border-box;
  border:none;
  background:none;
  font-size:12px;
  line-height:1.35;
  font-weight:600;
  text-align:center;
  color:color-mix(in srgb, var(--text) 78%, var(--muted));
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  pointer-events:none;
  text-shadow:var(--canvas-immersive-status-halo);
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasMobileImmersiveStatus:not([hidden]){
  display:block;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas:has(.canvasMobileImmersiveStatus:not([hidden])) .canvasMobileImmersiveResults:not([hidden]){
  bottom:calc(max(8px, env(safe-area-inset-bottom, 0px)) + 2.7rem + 8px);
}
/* Tmavší odstíny než v panelu — na bílém výkresu musí projít i se světlým obrysem */
.canvasMobileImmersiveStatus.canvasMobileImmersiveStatus--offline{
  color:#c2410c !important;
  font-weight:600 !important;
}
.canvasMobileImmersiveStatus.measureMobileTopBar__statusLine--pendingHint{
  color:#b45309 !important;
  font-weight:600 !important;
}
.canvasMobileImmersiveStatus.measureMobileTopBar__statusLine--syncedOk,
.canvasMobileImmersiveStatus.measureMobileTopBar__statusLine--savedFlash,
.canvasMobileImmersiveStatus.measureMobileOfflineChip--savedFlash{
  color:#047857 !important;
  font-weight:700 !important;
}

/* Mobil immersive: živá hodnota lx — pod horními ikonami, bez folie */
.canvasMobileLuxHud{
  --canvas-lux-hud-halo:
    -1px -1px 0 rgba(255, 255, 255, 0.98),
    1px -1px 0 rgba(255, 255, 255, 0.98),
    -1px 1px 0 rgba(255, 255, 255, 0.98),
    1px 1px 0 rgba(255, 255, 255, 0.98),
    0 0 5px rgba(255, 255, 255, 0.92),
    0 1px 5px rgba(0, 0, 0, 0.55);
  display:none;
  position:absolute;
  left:0;
  right:0;
  top:calc(max(4px, env(safe-area-inset-top, 0px)) + 26px + 8px);
  height:auto;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  gap:3px;
  padding:0 12px;
  box-sizing:border-box;
  pointer-events:none;
  user-select:none;
  z-index:8;
  background:none;
  border:none;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasMobileLuxHud:not([hidden]){
  display:flex;
}
.canvasMobileLuxHud__value{
  font-size:clamp(4.2rem, 24vw, 7.5rem);
  line-height:0.95;
  font-weight:800;
  letter-spacing:-0.02em;
  color:rgba(110, 110, 110, 0.78);
  text-align:center;
  font-variant-numeric:tabular-nums;
  text-shadow:var(--canvas-lux-hud-halo);
}
.canvasMobileLuxHud__value.is-not-ready{
  color:rgba(130, 130, 130, 0.5);
}
.canvasMobileLuxHud.is-connected .canvasMobileLuxHud__value{
  color:rgba(95, 95, 95, 0.88);
}

/* Mobil immersive: stav sondy dole na plátně */
.canvasMobileLuxProbeStatus{
  display:none;
  position:absolute;
  left:0;
  right:0;
  bottom:max(8px, env(safe-area-inset-bottom, 0px));
  padding:0 12px 2px;
  box-sizing:border-box;
  pointer-events:none;
  user-select:none;
  z-index:10;
  text-align:center;
  font-size:0.68rem;
  line-height:1.3;
  font-weight:600;
  letter-spacing:0.01em;
  color:rgba(90, 90, 90, 0.88);
  text-shadow:var(--canvas-lux-hud-halo);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasMobileLuxProbeStatus:not([hidden]){
  display:block;
}
.canvasMobileLuxProbeStatus.is-ready{
  color:rgba(70, 70, 70, 0.92);
}
.canvasMobileLuxProbeStatus.is-init{
  color:rgba(120, 120, 120, 0.75);
  font-weight:500;
}
.canvasMobileLuxProbeStatus.is-fail{
  color:rgba(160, 70, 50, 0.88);
}

/* Mobil immersive: průběžné vyhodnocení dole nad stavem sondy (když není teplota) */
.canvasMobileImmersiveResults{
  --canvas-lux-hud-halo:
    -1px -1px 0 rgba(255, 255, 255, 0.98),
    1px -1px 0 rgba(255, 255, 255, 0.98),
    -1px 1px 0 rgba(255, 255, 255, 0.98),
    1px 1px 0 rgba(255, 255, 255, 0.98),
    0 0 5px rgba(255, 255, 255, 0.92),
    0 1px 5px rgba(0, 0, 0, 0.55);
  display:none;
  position:absolute;
  left:0;
  right:0;
  bottom:calc(max(8px, env(safe-area-inset-bottom, 0px)) + 1.35rem + 4px);
  padding:0 12px 2px;
  box-sizing:border-box;
  pointer-events:none;
  user-select:none;
  z-index:9;
  text-align:center;
  font-size:12px;
  line-height:1.4;
  color:var(--text);
  text-shadow:var(--canvas-lux-hud-halo);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasMobileImmersiveResults:not([hidden]){
  display:block;
}
.canvasMobileImmersiveResults .canvasResultsOverlay__results{ font-weight:600; }
.canvasMobileImmersiveResults .canvasResultsOverlay__results.ok{ color:#34d399; }
.canvasMobileImmersiveResults .canvasResultsOverlay__results.bad{ color:#f87171; }
.canvasMobileImmersiveResults .canvasResultsOverlay__limits{ font-weight:500; color:var(--muted); }

/* Mobil immersive: teplota ze sondy — dole nad stavem sondy */
.canvasMobileTempHud{
  --canvas-temp-hud-halo:
    -1px -1px 0 rgba(255, 255, 255, 0.98),
    1px -1px 0 rgba(255, 255, 255, 0.98),
    -1px 1px 0 rgba(255, 255, 255, 0.98),
    1px 1px 0 rgba(255, 255, 255, 0.98),
    0 0 5px rgba(255, 255, 255, 0.92),
    0 1px 5px rgba(0, 0, 0, 0.55);
  display:none;
  position:absolute;
  left:0;
  right:0;
  bottom:calc(max(8px, env(safe-area-inset-bottom, 0px)) + 1.35rem + 4px);
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  padding:0 12px 4px;
  box-sizing:border-box;
  pointer-events:none;
  user-select:none;
  z-index:9;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasMobileTempHud:not([hidden]){
  display:flex;
}
.canvasMobileTempHud__value{
  font-size:clamp(2rem, 12vw, 3.2rem);
  line-height:1;
  font-weight:800;
  letter-spacing:-0.02em;
  color:rgba(110, 110, 110, 0.82);
  text-align:center;
  font-variant-numeric:tabular-nums;
  text-shadow:var(--canvas-temp-hud-halo);
}
.canvasMobileTempHud__value.is-not-ready{
  color:rgba(130, 130, 130, 0.5);
}
.canvasMobileTempHud.is-connected .canvasMobileTempHud__value{
  color:rgba(95, 95, 95, 0.9);
}
.canvasMobileTempHud__save{
  pointer-events:auto;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  border:1px solid color-mix(in srgb, var(--line) 85%, transparent);
  border-radius:8px;
  background:color-mix(in srgb, var(--panel) 92%, transparent);
  backdrop-filter:saturate(1.1) blur(5px);
  color:var(--text);
  box-shadow:0 1px 5px rgba(0, 0, 0, 0.1);
  font-size:0.78rem;
  font-weight:700;
  line-height:1.2;
  padding:7px 14px;
  cursor:pointer;
}
.canvasMobileTempHud__save:active{
  background:var(--hover);
}
.canvasMobileTempHud__save.is-saved{
  border-color:color-mix(in srgb, #047857 55%, var(--line));
  color:#047857;
}

/* Mobil/tablet: disketa + šipka vpravo nahoře — „immersive“ schová veškeré lišty kolem plátna */
.canvasMobileTopDockCollapseBtn,
.canvasMobileTopDockSaveBtn,
.canvasMobileTopDockLuxBtn,
.canvasMobileTopDockTempBtn{
  display:flex;
  box-sizing:border-box;
  position:absolute;
  top:max(4px, env(safe-area-inset-top, 0px));
  width:26px;
  height:26px;
  align-items:center;
  justify-content:center;
  padding:0;
  margin:0;
  border:1px solid color-mix(in srgb, var(--line) 85%, transparent);
  border-radius:7px;
  background:color-mix(in srgb, var(--panel) 88%, transparent);
  backdrop-filter:saturate(1.1) blur(5px);
  color:var(--text);
  box-shadow:0 1px 5px rgba(0, 0, 0, 0.1);
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  z-index:85;
  touch-action:manipulation;
}
.canvasMobileTopDockCollapseBtn{
  right:max(6px, env(safe-area-inset-right, 0px));
}
.canvasMobileTopDockSaveBtn{
  right:max(38px, calc(env(safe-area-inset-right, 0px) + 26px + 6px));
}
.canvasMobileTopDockLuxBtn{
  right:max(70px, calc(env(safe-area-inset-right, 0px) + 52px + 12px));
  font-size:12px;
  font-weight:700;
  letter-spacing:0.01em;
}
.canvasMobileTopDockTempBtn{
  right:max(102px, calc(env(safe-area-inset-right, 0px) + 78px + 12px));
  font-size:12px;
  font-weight:700;
  letter-spacing:0.01em;
}
.canvasMobileTopDockCollapseBtn:active,
.canvasMobileTopDockSaveBtn:active,
.canvasMobileTopDockLuxBtn:active,
.canvasMobileTopDockTempBtn:active{
  background:var(--hover);
}
.canvasMobileTopDockCollapseBtn:focus-visible,
.canvasMobileTopDockSaveBtn:focus-visible,
.canvasMobileTopDockLuxBtn:focus-visible,
.canvasMobileTopDockTempBtn:focus-visible{
  outline:2px solid var(--primary);
  outline-offset:2px;
}
.canvasMobileTopDockCollapseBtn__icon,
.canvasMobileTopDockSaveBtn__icon{
  display:block;
  transition:transform 0.18s ease;
}

.canvasMobileTopDockCollapseBtn--panelHidden .canvasMobileTopDockCollapseBtn__icon{
  transform:rotate(180deg);
}
body:not(.device-mobile-or-tablet) .canvasMobileTopDockCollapseBtn,
body:not(.device-mobile-or-tablet) .canvasMobileTopDockSaveBtn,
body:not(.device-mobile-or-tablet) .canvasMobileTopDockLuxBtn,
body:not(.device-mobile-or-tablet) .canvasMobileTopDockTempBtn,
body.measure-mode-pc .canvasMobileTopDockCollapseBtn,
body.measure-mode-pc .canvasMobileTopDockSaveBtn,
body.measure-mode-pc .canvasMobileTopDockLuxBtn,
body.measure-mode-pc .canvasMobileTopDockTempBtn,
body.app-desktop-ui .canvasMobileTopDockCollapseBtn,
body.app-desktop-ui .canvasMobileTopDockSaveBtn,
body.app-desktop-ui .canvasMobileTopDockLuxBtn,
body.app-desktop-ui .canvasMobileTopDockTempBtn{
  display:none !important;
}
/* Plovoucí šipka + disketa: jen se zámkem tužky (body.measure-locked), jinak vždy skryto i při chybě v JS. */
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasMobileTopDockCollapseBtn,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasMobileTopDockSaveBtn,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasMobileTopDockLuxBtn,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasMobileTopDockTempBtn{
  display:none !important;
  pointer-events:none !important;
  visibility:hidden !important;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasMobileTopDockCollapseBtn{
  display:flex !important;
  visibility:visible !important;
  pointer-events:auto !important;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasMobileTopDockSaveBtn{
  display:flex !important;
  visibility:visible !important;
  pointer-events:auto !important;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasMobileTopDockLuxBtn:not([hidden]){
  display:flex !important;
  visibility:visible !important;
  pointer-events:auto !important;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasMobileTopDockTempBtn:not([hidden]){
  display:flex !important;
  visibility:visible !important;
  pointer-events:auto !important;
}
.canvasMobileTopDockLuxBtn.is-on{
  background:color-mix(in srgb, var(--text) 12%, var(--panel));
  border-color:color-mix(in srgb, var(--text) 28%, var(--line));
  font-weight:800;
}
.canvasMobileTopDockLuxBtn.is-connected.is-on{
  color:#1a7f37;
  border-color:color-mix(in srgb, #1a7f37 45%, var(--line));
}
.canvasMobileTopDockTempBtn.is-on{
  background:color-mix(in srgb, var(--text) 12%, var(--panel));
  border-color:color-mix(in srgb, var(--text) 28%, var(--line));
  font-weight:800;
}
.canvasMobileTopDockTempBtn.is-connected.is-on{
  color:#c2410c;
  border-color:color-mix(in srgb, #c2410c 45%, var(--line));
}
.canvasMobileBottomDockCriticalBtn{
  display:flex;
  box-sizing:border-box;
  position:absolute;
  bottom:max(6px, env(safe-area-inset-bottom, 0px));
  right:max(6px, env(safe-area-inset-right, 0px));
  width:26px;
  height:26px;
  align-items:center;
  justify-content:center;
  padding:0;
  margin:0;
  border:1px solid color-mix(in srgb, var(--line) 85%, transparent);
  border-radius:7px;
  background:color-mix(in srgb, var(--panel) 88%, transparent);
  backdrop-filter:saturate(1.1) blur(5px);
  color:var(--text);
  box-shadow:0 1px 5px rgba(0, 0, 0, 0.1);
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  z-index:85;
  touch-action:manipulation;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .canvasWrap:not(.canvasWrap--mobileImmersiveCanvas) .canvasMobileBottomDockCriticalBtn:not([hidden]){
  bottom:calc(max(6px, env(safe-area-inset-bottom, 0px)) + var(--measure-strip-row-h, 52px) + 4px);
}
.canvasMobileBottomDockCriticalBtn:active{
  background:var(--hover);
}
.canvasMobileBottomDockCriticalBtn:focus-visible{
  outline:2px solid var(--primary);
  outline-offset:2px;
}
.canvasMobileBottomDockCriticalBtn.is-active,
.canvasMobileBottomDockCriticalBtn[aria-pressed="true"]{
  background:color-mix(in srgb, var(--primary) 18%, var(--panel));
  border-color:color-mix(in srgb, var(--primary) 55%, var(--line));
  color:var(--primary);
}
.canvasMobileBottomDockCriticalBtn__icon{
  display:block;
}
body:not(.device-mobile-or-tablet) .canvasMobileBottomDockCriticalBtn,
body.measure-mode-pc .canvasMobileBottomDockCriticalBtn,
body.app-desktop-ui .canvasMobileBottomDockCriticalBtn{
  display:none !important;
}
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasMobileBottomDockCriticalBtn{
  display:none !important;
  pointer-events:none !important;
  visibility:hidden !important;
}
body.device-mobile-or-tablet.measure-mode.measure-locked:not(.app-desktop-ui):not(.measure-mode-pc) .canvasMobileBottomDockCriticalBtn:not([hidden]){
  display:flex !important;
  visibility:visible !important;
  pointer-events:auto !important;
}
.canvasMobileLuxModal{
  position:fixed;
  inset:0;
  z-index:2200;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:16px;
}
.canvasMobileLuxModal.hidden{
  display:none !important;
}
.canvasMobileLuxModal__overlay{
  position:absolute;
  inset:0;
  background:rgba(0, 0, 0, 0.45);
}
.canvasMobileLuxModal__box{
  position:relative;
  width:min(360px, calc(100vw - 24px));
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--panel);
  color:var(--text);
  padding:20px 16px 18px;
  box-shadow:0 18px 40px rgba(0, 0, 0, 0.22);
  text-align:center;
}
.canvasMobileLuxModal__close{
  position:absolute;
  top:8px;
  right:8px;
}
.canvasMobileLuxModal__probe{
  font-size:0.78rem;
  line-height:1.35;
  color:var(--text-muted, var(--text));
  opacity:0.88;
  margin:0 28px 6px 0;
  text-align:center;
  word-break:break-word;
}
.canvasMobileLuxModal__status{
  display:inline-block;
  font-size:0.72rem;
  font-weight:600;
  letter-spacing:0.02em;
  text-transform:uppercase;
  padding:3px 10px;
  border-radius:999px;
  margin-bottom:10px;
}
.canvasMobileLuxModal__status.is-ready{
  background:rgba(26, 127, 55, 0.14);
  color:#1a7f37;
}
.canvasMobileLuxModal__status.is-init{
  background:rgba(0, 0, 0, 0.06);
  color:var(--text-muted, var(--text));
}
.canvasMobileLuxModal__status.is-fail{
  background:rgba(198, 40, 40, 0.12);
  color:#c62828;
}
.canvasMobileLuxModal__value{
  font-size:4.4rem;
  line-height:1.1;
  font-weight:700;
  letter-spacing:0.01em;
  color:var(--text);
  text-align:center;
}
.canvasMobileLuxModal__value.is-not-ready{
  opacity:0.42;
}
.canvasMobileLuxModal__diagToggle{
  width:100%;
  margin-top:12px;
  font-size:0.78rem;
  opacity:0.85;
}
.canvasMobileLuxModal__diag{
  margin-top:10px;
  padding-top:12px;
  border-top:1px solid var(--line);
  text-align:left;
}
.canvasMobileLuxModal__diagTitle{
  font-size:0.82rem;
  font-weight:600;
  margin-bottom:8px;
  color:var(--text-muted, var(--text));
  opacity:0.9;
}
.canvasMobileLuxModal__diagList{
  margin:0 0 10px;
  font-size:0.78rem;
  line-height:1.35;
}
.canvasMobileLuxModal__diagList dt{
  margin:6px 0 0;
  font-weight:600;
  color:var(--text-muted, var(--text));
  opacity:0.85;
}
.canvasMobileLuxModal__diagList dd{
  margin:0 0 2px;
  word-break:break-word;
  font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size:0.76rem;
}
.canvasMobileLuxModal__diagList dd.is-ok{
  color:#1a7f37;
}
.canvasMobileLuxModal__diagList dd.is-bad{
  color:#c62828;
}
.canvasMobileLuxModal__diagBtn{
  width:100%;
  font-size:0.82rem;
}
.canvasMobileLuxModal__diagHint{
  margin:8px 0 0;
  font-size:0.74rem;
  line-height:1.35;
  color:var(--text-muted, var(--text));
  opacity:0.88;
}
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas #canvasToolbar,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasWrap__body > #measureMobileTopBar,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasWrap__body > #measureMobileStatusRow,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasWrap__body > #measureMobileTaskAreasBar,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas #canvasWrapCanvasMainLeftDock,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas #canvasBottomBar,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas #measureCanvasBottomRow,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas #measureLockedBar,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas #measureUnlockedBar,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas #measureLongPressProgress,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasResultsHud,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasWrap__canvasMain aside.panel-emergency-iconRail,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasWrap__canvasMain aside.canvasAreaZonesRail,
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode-pc) .canvasWrap.canvasWrap--mobileImmersiveCanvas .canvasWrap__canvasMain aside#canvasTaskMeasurementRail{
  display:none !important;
}

/* Mobil/tablet měření (bez measure-mode-pc): spodní nástroje v toku dokumentu – plná šířka, ne plovoucí nad plátnem. */
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .canvasWrap__canvasMainStack #canvas{
  order: 10;
  flex: 1 1 auto;
  min-height: 0;
  position: relative;
  z-index: 0;
}
/* Modal „Režim měření“ je v #canvasWrapModeDock za #canvas bez explicitní vrstvy —
   canvas může být nad ním v kompozici; z-index docku zajistí překryvné okno nad plátnem. */
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) #canvasWrapModeDock{
  z-index: 80;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .canvasModeBarModal.is-open{
  z-index: 120;
}

body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow{
  position: relative;
  inset: auto;
  bottom: auto;
  left: auto;
  right: auto;
  order: 100;
  width: 100%;
  max-width: none;
  align-self: stretch;
  flex-shrink: 0;
  min-height: 0;
  --measure-strip-row-h: 52px;
  --measure-strip-surface: color-mix(in srgb, var(--panel) 93%, var(--muted));
  margin: 0;
  padding: 0;
  padding-bottom: env(safe-area-inset-bottom, 0px);
  padding-left: env(safe-area-inset-left, 0px);
  padding-right: env(safe-area-inset-right, 0px);
  box-sizing: border-box;
  background: var(--measure-strip-surface);
  border-top: 1px solid var(--line);
  z-index: 20;
  gap: 0;
  justify-content: center;
  align-items: stretch;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLongPressProgress:not([hidden]){
  background: var(--measure-strip-surface);
  border-bottom: 1px solid var(--line);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureFloatingBar{
  position: relative;
  inset: auto;
  bottom: auto;
  left: auto;
  right: auto;
  width: 100%;
  max-width: none;
  flex: 1 1 auto;
  min-width: 0;
  z-index: 1;
  align-items: stretch;
  min-height: var(--measure-strip-row-h);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureFloatingBar__groups{
  width: 100%;
  flex-wrap: nowrap;
  justify-content: flex-start;
  align-items: stretch;
  gap: 0;
  box-sizing: border-box;
  min-height: var(--measure-strip-row-h);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar__groups
  > *:not(:first-child){
  border-left: 1px solid var(--line);
  box-sizing: border-box;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar__groups
  > .measureBarGroup,
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar__groups
  > .measureBarGroup__btn{
  min-width: 44px;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureFloatingBar .measureBarGroup{
  flex: 1 1 0;
  display: flex;
  justify-content: flex-start;
  align-items: stretch;
  min-width: 44px;
  min-height: var(--measure-strip-row-h);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureFloatingBar__groups
  > .measureBarGroup__btn,
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureBarGroup
  > .measureBarGroup__btn{
  flex: 1 1 auto;
  align-self: stretch;
  width: 100%;
  min-width: 0;
  min-height: var(--measure-strip-row-h);
  height: auto;
  margin: 0;
  border: none;
  border-radius: 0;
  box-shadow: none;
  appearance: none;
  -webkit-appearance: none;
  background: var(--measure-strip-surface);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureBarGroup
  > .measureBarGroup__btn:hover:not(:disabled){
  background: var(--hover);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureFloatingBar__groups
  > .measureBarGroup__btn:hover:not(:disabled){
  background: var(--hover);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureBarGroup
  > .measureBarGroup__btn.is-active{
  background: var(--measure-strip-surface);
  color: var(--text);
  box-shadow: inset 0 -3px 0 0 var(--primary);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureBarGroup
  > .measureBarGroup__btn:disabled,
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureBarGroup
  > .measureBarGroup__btn[disabled],
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureFloatingBar__groups
  > .measureBarGroup__btn:disabled,
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureFloatingBar__groups
  > .measureBarGroup__btn[disabled]{
  box-shadow: none;
  background: var(--measure-strip-surface);
  opacity: 0.55;
  color: var(--muted);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar{
  width: 100%;
  max-width: none;
  min-height: var(--measure-strip-row-h);
  justify-content: flex-start;
  align-items: stretch;
  gap: 0;
  padding: 0;
  border-radius: 0;
  border: none;
  box-shadow: none;
  background: transparent;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureLockedBar
  > .measureLockedBar__group:not(:first-child){
  border-left: 1px solid var(--line);
  box-sizing: border-box;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar__group{
  flex: 1 1 0;
  display: flex;
  justify-content: flex-start;
  align-items: stretch;
  min-width: 44px;
  min-height: var(--measure-strip-row-h);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar__btn{
  flex: 1 1 auto;
  width: 100%;
  max-width: none;
  min-width: 0;
  min-height: var(--measure-strip-row-h);
  height: auto;
  aspect-ratio: auto;
  margin: 0;
  border: none;
  border-radius: 0;
  box-shadow: none;
  appearance: none;
  -webkit-appearance: none;
  background: var(--measure-strip-surface);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar__btn:hover:not(:disabled){
  background: var(--hover);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar__btn:disabled,
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar__btn[disabled]{
  box-shadow: none;
  background: var(--measure-strip-surface);
  opacity: 0.55;
  color: var(--muted);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar__btn.is-active{
  background: var(--measure-strip-surface);
  color: var(--text);
  box-shadow: inset 0 -3px 0 0 var(--primary);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureLockedBar__btn.is-active:hover:not(:disabled){
  background: var(--hover);
  box-shadow: inset 0 -3px 0 0 var(--primary);
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc)
  .measureCanvasBottomRow
  .measureFloatingBar
  .measureBarGroup
  > .measureBarGroup__btn.is-active:hover:not(:disabled){
  background: var(--hover);
  box-shadow: inset 0 -3px 0 0 var(--primary);
}
/* Rozbalení nad pevným spodním panelem (šířka řádku + safe area). */
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureBarGroup__expand{
  bottom: calc(76px + max(8px, min(24px, env(safe-area-inset-bottom, 0))));
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureLockedBar__expand{
  bottom: calc(84px + max(8px, min(24px, env(safe-area-inset-bottom, 0))));
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar,
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .measureCanvasBottomRow .measureLockedBar__group{
  overflow:visible;
}

/* Spodní lišta je absolute; nezkracovat kvůli ní samotné plátno, jinak pod bílým canvasem vznikne šedý pruh. */
body:not(.device-mobile-or-tablet) .canvasWrap__canvasRow--dockOpen .canvasWrap__canvasMain{
  padding-bottom:0;
}
/* Tablet UA: v Měření sloupec (pás nad plátnem); v Editaci pod levým dokem řádek plátno + vertikální raily — při column layoutu měl stack flex:1 a raily končily pod foldem. */
body.device-mobile-or-tablet:not(.app-desktop-ui).measure-mode .canvasWrap__canvasMain{
  flex-direction:column;
}
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode) .canvasWrap__canvasMain{
  flex-direction:row;
  flex-wrap:wrap;
  align-content:stretch;
  align-items:stretch;
}
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode) .canvasWrap__canvasMainLeftDock{
  flex:1 1 100%;
  width:100%;
  max-width:100%;
}
body.device-mobile-or-tablet:not(.app-desktop-ui):not(.measure-mode) .canvasWrap__canvasMainStack{
  flex:1 1 0;
  min-width:0;
  min-height:0;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasWrap__modeDock{
  position:absolute;
  left:0;
  top:0;
  width:100%;
  height:0;
  overflow:visible;
  pointer-events:none;
  z-index:0;
  flex:0 0 0;
  align-self:stretch;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasWrap__modeDock > .canvasModeBarModal{
  pointer-events:auto;
}
body:not(.device-mobile-or-tablet) .canvasWrap__modeDock,
body.measure-mode-pc .canvasWrap__modeDock,
body.app-desktop-ui .canvasWrap__modeDock{
  flex:0 0 0;
  width:0;
  min-width:0;
  max-width:0;
  overflow:hidden;
  visibility:hidden;
  pointer-events:none;
  border:none;
  padding:0;
  margin:0;
  box-sizing:border-box;
}
body:not(.device-mobile-or-tablet) .canvasWrap__modeDock.canvasWrap__modeDock--open,
body.measure-mode-pc .canvasWrap__modeDock.canvasWrap__modeDock--open,
body.app-desktop-ui .canvasWrap__modeDock.canvasWrap__modeDock--open{
  display:flex;
  flex-direction:column;
  flex:0 0 200px;
  width:200px;
  min-width:200px;
  max-width:200px;
  min-height:0;
  overflow:hidden;
  visibility:visible;
  pointer-events:auto;
  border-left:1px solid var(--line);
  background:var(--panel);
}
/* Otevřený pravý dock podle ID jen pro desktop/PC layout: přebije konflikt mezi body selektory
   a styles-base (.canvasModeBarModal__box position:absolute; right:10px), ale mobil/tablet nesmí alokovat pravý panel. */
:is(body:not(.device-mobile-or-tablet), body.measure-mode-pc, body.app-desktop-ui) #canvasWrapModeDock.canvasWrap__modeDock--open{
  position:relative !important;
  left:auto !important;
  top:auto !important;
  width:200px !important;
  min-width:200px !important;
  max-width:200px !important;
  height:auto !important;
  flex:0 0 200px !important;
  align-self:stretch !important;
  overflow:hidden !important;
  visibility:visible !important;
  pointer-events:auto !important;
  z-index:auto !important;
}
:is(body:not(.device-mobile-or-tablet), body.measure-mode-pc, body.app-desktop-ui) #canvasWrapModeDock.canvasWrap__modeDock--open > .canvasModeBarModal{
  position:relative !important;
  inset:auto !important;
  left:auto !important;
  top:auto !important;
  right:auto !important;
  bottom:auto !important;
  flex:1 !important;
  min-height:0 !important;
  display:flex !important;
  flex-direction:column !important;
  width:100% !important;
  overflow:hidden !important;
  pointer-events:auto !important;
  z-index:1 !important;
}
:is(body:not(.device-mobile-or-tablet), body.measure-mode-pc, body.app-desktop-ui) #canvasWrapModeDock.canvasWrap__modeDock--open .canvasModeBarModal__box{
  position:relative !important;
  right:auto !important;
  top:auto !important;
  left:auto !important;
  width:100% !important;
  max-width:none !important;
  max-height:none !important;
  height:auto !important;
  flex:1 !important;
  min-height:0 !important;
  overflow-x:hidden !important;
  overflow-y:auto !important;
  -webkit-overflow-scrolling:touch;
  box-shadow:none !important;
  border-radius:0 !important;
  border:none !important;
  background:transparent !important;
  padding:8px 10px !important;
  padding-bottom:calc(8px + var(--canvas-main-bottom-pad, 0px) + env(safe-area-inset-bottom, 0px)) !important;
  box-sizing:border-box !important;
}
:is(body:not(.device-mobile-or-tablet), body.measure-mode-pc, body.app-desktop-ui) #canvasWrapModeDock.canvasWrap__modeDock--open .canvasModeBarModal__box::after{
  content:"";
  display:block;
  width:100%;
  height:var(--canvas-mode-dock-scroll-gap, 0px);
  flex-shrink:0;
  pointer-events:none;
}
:is(body:not(.device-mobile-or-tablet), body.measure-mode-pc, body.app-desktop-ui) #canvasWrapModeDock.canvasWrap__modeDock--open .canvasModeBarModal__body{
  flex:1 !important;
  min-height:0 !important;
  display:flex !important;
  flex-direction:column !important;
  overflow:visible !important;
}
:is(body:not(.device-mobile-or-tablet), body.measure-mode-pc, body.app-desktop-ui) #canvasWrapModeDock.canvasWrap__modeDock--open .canvasModeBarModal__body .canvasModeBar,
:is(body:not(.device-mobile-or-tablet), body.measure-mode-pc, body.app-desktop-ui) #canvasWrapModeDock.canvasWrap__modeDock--open .canvasModeBarModal__body .canvasEmergencyModeBar{
  flex:0 0 auto !important;
  overflow:visible !important;
  max-height:none !important;
}
body:not(.device-mobile-or-tablet) .canvasWrap__modeDock .canvasModeBarModal,
body.measure-mode-pc .canvasWrap__modeDock .canvasModeBarModal,
body.app-desktop-ui .canvasWrap__modeDock .canvasModeBarModal{
  position:relative;
  inset:auto;
  left:auto;
  top:auto;
  right:auto;
  flex:1;
  min-height:0;
  display:flex;
  flex-direction:column;
  width:100%;
  overflow:hidden;
  pointer-events:auto;
  z-index:1;
}
body:not(.device-mobile-or-tablet) .canvasWrap__modeDock .canvasModeBarModal__box,
body.measure-mode-pc .canvasWrap__modeDock .canvasModeBarModal__box,
body.app-desktop-ui .canvasWrap__modeDock .canvasModeBarModal__box{
  position:relative;
  right:auto;
  top:auto;
  width:100%;
  max-width:none;
  max-height:none;
  height:auto;
  flex:1;
  min-height:0;
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  box-shadow:none;
  border-radius:0;
  border:none;
  background:transparent;
  padding:8px 10px;
  padding-bottom:calc(8px + env(safe-area-inset-bottom, 0px));
  box-sizing:border-box;
}
/* Neviditelná patice v toku dokumentu — spolehlivě zvětší scrollHeight (padding u flex+overflow občas nestačí) */
body:not(.device-mobile-or-tablet) .canvasWrap__modeDock.canvasWrap__modeDock--open .canvasModeBarModal__box::after,
body.measure-mode-pc .canvasWrap__modeDock.canvasWrap__modeDock--open .canvasModeBarModal__box::after,
body.app-desktop-ui .canvasWrap__modeDock.canvasWrap__modeDock--open .canvasModeBarModal__box::after{
  content:"";
  display:block;
  width:100%;
  height:var(--canvas-mode-dock-scroll-gap, 0px);
  flex-shrink:0;
  pointer-events:none;
}
/* Obsah modalu v docku: žádný vnitřní scroll na .canvasModeBar — scroll drží .canvasModeBarModal__box */
body:not(.device-mobile-or-tablet) .canvasWrap__modeDock .canvasModeBarModal__body,
body.measure-mode-pc .canvasWrap__modeDock .canvasModeBarModal__body,
body.app-desktop-ui .canvasWrap__modeDock .canvasModeBarModal__body{
  flex:1;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:visible;
}
body:not(.device-mobile-or-tablet) .canvasWrap__modeDock .canvasModeBarModal__body .canvasModeBar,
body:not(.device-mobile-or-tablet) .canvasWrap__modeDock .canvasModeBarModal__body .canvasEmergencyModeBar,
body.measure-mode-pc .canvasWrap__modeDock .canvasModeBarModal__body .canvasModeBar,
body.measure-mode-pc .canvasWrap__modeDock .canvasModeBarModal__body .canvasEmergencyModeBar,
body.app-desktop-ui .canvasWrap__modeDock .canvasModeBarModal__body .canvasModeBar,
body.app-desktop-ui .canvasWrap__modeDock .canvasModeBarModal__body .canvasEmergencyModeBar{
  flex:0 0 auto;
  overflow:visible !important;
  max-height:none !important;
}
body.device-mobile-or-tablet.measure-mode .canvasWrap__canvasArea,
body.device-mobile-or-tablet.measure-mode .canvasWrap__canvasArea #canvas{
  touch-action:none;
  overscroll-behavior:contain;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .canvasWrap__canvasArea{
  overflow:visible;
}
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .layout--measure .canvasWrap,
body.device-mobile-or-tablet.measure-mode:not(.measure-mode-pc) .canvasWrap{
  overflow:visible;
}
.canvasTaskAreasBar{
  position:absolute;
  left:10px;
  /* top nastavuje JS: výška panelu nástrojů + 20px */
  width:264px;
  min-width:180px;
  height:auto;
  max-height:calc(100% - 20px);
  z-index:52;
  display:flex;
  flex-direction:column;
  padding:6px 8px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  font-size:11px;
  overflow-x:hidden;
  overflow-y:auto;
  box-shadow:2px 2px 12px rgba(0,0,0,0.4);
  transition:width 0.18s ease, min-width 0.18s ease, padding 0.18s ease;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock{
  position:relative;
  left:0;
  top:auto;
  flex:0 0 34px;
  width:34px;
  min-width:34px;
  max-width:34px;
  box-sizing:border-box;
  align-self:stretch;
  min-height:0;
  max-height:100%;
  height:auto;
  z-index:1;
  box-shadow:none;
  border-radius:0;
  border:none;
  border-right:1px solid var(--line);
  margin:0;
  padding:8px 0;
  overflow-x:hidden;
  overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed){
  --canvas-task-dock-flyout-w: clamp(240px, 32vw, 300px);
  flex-basis:34px;
  width:34px;
  max-width:34px;
  overflow:visible;
  z-index:35;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock.canvasTaskAreasBar--collapsed{
  overflow:hidden;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock .canvasTaskAreasBar__dropSheet{
  flex:1;
  min-height:0;
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__dropSheet{
  display:flex;
  flex-direction:column;
  gap:8px;
  position:absolute;
  left:0;
  top:34px;
  bottom:0;
  width:var(--canvas-task-dock-flyout-w);
  max-width:calc(100vw - 96px);
  min-width:0;
  flex:0 0 auto;
  box-sizing:border-box;
  padding:8px 10px;
  padding-bottom:calc(8px + var(--canvas-main-bottom-pad, 0px));
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  background:var(--panel);
  border:1px solid var(--line);
  border-top:none;
  box-shadow:4px 0 22px rgba(0, 0, 0, 0.16);
  z-index:2;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__title{
  position:absolute;
  left:0;
  top:0;
  width:var(--canvas-task-dock-flyout-w);
  height:34px;
  margin:0;
  padding:8px 32px 8px 10px;
  box-sizing:border-box;
  background:var(--panel);
  border:1px solid var(--line);
  border-bottom:none;
  box-shadow:4px 0 22px rgba(0, 0, 0, 0.16);
  z-index:4;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  line-height:18px;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__toggle{
  left:calc(var(--canvas-task-dock-flyout-w) - 24px);
  right:auto;
  top:8px;
  z-index:5;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock .canvasTaskAreasBar__list{
  flex:0 0 auto;
  min-height:0;
  overflow:visible;
}
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock .canvasTaskAreasBar__stairsScroll{
  max-height:none;
  overflow:visible;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) #canvasTaskAreasBar.canvasTaskAreasBar--canvasDock{
  position:relative;
  left:auto;
  top:auto;
  width:100%;
  min-width:0;
  max-width:none;
  max-height:none;
  z-index:1;
  flex-shrink:0;
  box-shadow:none;
  border-radius:0;
  border:none;
  border-bottom:1px solid var(--line);
  overflow:visible;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) #canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed){
  z-index:24;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasTaskAreasBar--collapsed .canvasTaskAreasBar__dropSheet,
body.device-mobile-or-tablet .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock.canvasTaskAreasBar--collapsed .canvasTaskAreasBar__dropSheet{
  display:none !important;
}
body.device-mobile-or-tablet:not(.app-desktop-ui) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__dropSheet{
  display:flex;
  flex-direction:column;
  gap:8px;
  position:absolute;
  left:0;
  right:0;
  top:100%;
  z-index:4;
  max-height:min(58vh, 520px);
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding:8px 10px 12px;
  box-sizing:border-box;
  background:var(--panel);
  border:1px solid var(--line);
  border-top:none;
  box-shadow:0 14px 28px rgba(0, 0, 0, 0.38);
}
body.app-desktop-ui .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock{
  position:relative;
  left:0;
  top:auto;
  flex:0 0 34px;
  width:34px;
  min-width:34px;
  max-width:34px;
  box-sizing:border-box;
  align-self:stretch;
  min-height:0;
  max-height:100%;
  height:auto;
  z-index:1;
  box-shadow:none;
  border-radius:0;
  border:none;
  border-right:1px solid var(--line);
  margin:0;
  padding:8px 0;
  overflow-x:hidden;
  overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
}
body.app-desktop-ui .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed){
  --canvas-task-dock-flyout-w: clamp(240px, 32vw, 300px);
  flex-basis:34px;
  width:34px;
  max-width:34px;
  overflow:visible;
  z-index:35;
}
body.app-desktop-ui .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock.canvasTaskAreasBar--collapsed{
  overflow:hidden;
}
body.app-desktop-ui .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock .canvasTaskAreasBar__dropSheet{
  flex:1;
  min-height:0;
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
}
body.app-desktop-ui .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__dropSheet{
  display:flex;
  flex-direction:column;
  gap:8px;
  position:absolute;
  left:0;
  top:34px;
  bottom:0;
  width:var(--canvas-task-dock-flyout-w);
  max-width:calc(100vw - 96px);
  min-width:0;
  flex:0 0 auto;
  box-sizing:border-box;
  padding:8px 10px;
  padding-bottom:calc(8px + var(--canvas-main-bottom-pad, 0px));
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  background:var(--panel);
  border:1px solid var(--line);
  border-top:none;
  box-shadow:4px 0 22px rgba(0, 0, 0, 0.16);
  z-index:2;
}
body.app-desktop-ui .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__title{
  position:absolute;
  left:0;
  top:0;
  width:var(--canvas-task-dock-flyout-w);
  height:34px;
  margin:0;
  padding:8px 32px 8px 10px;
  box-sizing:border-box;
  background:var(--panel);
  border:1px solid var(--line);
  border-bottom:none;
  box-shadow:4px 0 22px rgba(0, 0, 0, 0.16);
  z-index:4;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  line-height:18px;
}
body.app-desktop-ui .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__toggle{
  left:calc(var(--canvas-task-dock-flyout-w) - 24px);
  right:auto;
  top:8px;
  z-index:5;
}
body:not(.device-mobile-or-tablet) #canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed),
body.app-desktop-ui #canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed){
  --canvas-task-dock-rail-w:5px;
}
body:not(.device-mobile-or-tablet) #canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__title,
body.app-desktop-ui #canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__title,
body:not(.device-mobile-or-tablet) #canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__dropSheet,
body.app-desktop-ui #canvasTaskAreasBar.canvasTaskAreasBar--canvasDock:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__dropSheet{
  left:calc(-1 * var(--canvas-task-dock-rail-w));
  width:calc(var(--canvas-task-dock-flyout-w) + var(--canvas-task-dock-rail-w));
}
.canvasTaskAreasBar__toggle{
  position:absolute;
  top:5px;
  right:8px;
  width:18px;
  height:18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  color:var(--muted);
  cursor:pointer;
  line-height:1;
  font-size:16px;
  font-weight:600;
  z-index:8;
}
.canvasTaskAreasBar__toggle:hover{
  color:var(--text);
}
.canvasTaskAreasBar--collapsed{
  width:34px;
  min-width:34px;
  padding:6px 0;
  cursor:pointer;
}
.canvasTaskAreasBar--collapsed *{
  cursor:pointer;
}
.canvasTaskAreasBar--collapsed .canvasTaskAreasBar__list{
  display:none;
}
.canvasTaskAreasBar--collapsed .canvasTaskAreasBar__stairsWrap{
  display:none !important;
}
.canvasTaskAreasBar--collapsed .canvasTaskAreasBar__title{
  position:absolute;
  left:0;
  top:26px;
  display:flex;
  justify-content:center;
  align-items:center;
  width:34px;
  margin:0;
  text-align:center;
  writing-mode:vertical-rl;
  transform:rotate(180deg);
  white-space:nowrap;
  line-height:1;
}
/* Desktop: v kolapsu obal neovlivní layout; rozbalený stav níže zůstává flyout. */
body:not(.device-mobile-or-tablet) .canvasTaskAreasBar.canvasTaskAreasBar--collapsed .canvasTaskAreasBar__dropSheet{
  display:contents;
}
.canvasTaskAreasBar__title{ font-weight:600; margin:0 28px 4px 0; font-size:11px; }
.canvasTaskAreasBar:not(.canvasTaskAreasBar--collapsed) .canvasTaskAreasBar__title{
  cursor:pointer;
}
.canvasTaskAreasBar__list{
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:0 2px 4px;
  box-sizing:border-box;
}
/* Jedna zóna = samostatný blok (jako rameno schodiště v modalu schodů) */
.canvasTaskAreasBar__zoneSection{
  display:flex;
  flex-direction:column;
  gap:3px;
  margin:0;
  padding:5px 6px 6px;
  box-sizing:border-box;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--input-bg);
  cursor:pointer;
  box-shadow:
    0 0 0 1px rgba(255,255,255,0.065),
    0 8px 20px rgba(0,0,0,0.42);
}
.canvasTaskAreasBar__zoneSection.is-geometry-selected{
  border-color:rgba(234,88,12,0.85);
  box-shadow:
    0 0 0 2px rgba(249,115,22,0.35),
    0 8px 20px rgba(0,0,0,0.42);
}
.canvasTaskAreasBar__verticalSection.is-geometry-selected{
  border-color:rgba(15,118,110,0.85);
  box-shadow:
    0 0 0 2px rgba(15,118,110,0.35),
    0 8px 20px rgba(0,0,0,0.42);
}
.canvasTaskAreasBar__zoneTitleRow{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:6px;
  padding-bottom:3px;
  margin:0;
  border-bottom:1px solid var(--line);
}
.canvasTaskAreasBar__zoneTitleRow .canvasTaskAreasBar__name{
  flex:1;
  min-width:0;
  font-weight:600;
  margin:0;
  white-space:normal;
  word-break:break-word;
  overflow-wrap:anywhere;
}
.canvasTaskAreasBar__zoneTitleNameWrap{
  flex:1;
  min-width:0;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:4px 8px;
}
.canvasTaskAreasBar__nameInput{
  flex:1;
  min-width:6rem;
  max-width:100%;
  margin:0;
  padding:4px 7px;
  font:inherit;
  font-weight:600;
  line-height:1.25;
  color:var(--text);
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:6px;
  box-sizing:border-box;
}
.canvasTaskAreasBar__nameInput::placeholder{
  color:var(--muted);
  font-weight:500;
}
.canvasTaskAreasBar__nameInput:focus{
  outline:none;
  border-color:var(--primary, #64748b);
}
.canvasTaskAreasBar__zoneTitleDims{
  flex-shrink:0;
  font-size:0.82em;
  font-weight:500;
  color:var(--muted);
  white-space:normal;
}
.panelZonesSection .canvasTaskAreasBar__nameInput{
  background:var(--input-bg);
}
.canvasTaskAreasBar__deleteZone{
  flex-shrink:0;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  padding:0;
  margin:0;
  border:1px solid var(--line);
  border-radius:4px;
  background:transparent;
  color:#94a3b8;
  cursor:pointer;
}
.canvasTaskAreasBar__openVertical{
  flex-shrink:0;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  padding:0;
  margin:0;
  border:1px solid var(--line);
  border-radius:4px;
  background:transparent;
  color:#64748b;
  cursor:pointer;
  font-size:12px;
  line-height:1;
}
.canvasTaskAreasBar__openVertical:hover{
  color:var(--text);
  border-color:var(--accent, #0f766e);
  background:rgba(15,118,110,0.08);
}
.canvasTaskAreasBar__openVertical svg{
  width:13px;
  height:13px;
  display:block;
}
.canvasTaskAreasBar__openVertical.is-placing{
  color:var(--accent, #0f766e);
  border-color:var(--accent, #0f766e);
  background:rgba(15,118,110,0.12);
}
.canvasTaskAreasBar__openVertical.is-fill-empty{
  color:#dc2626;
  border-color:rgba(220,38,38,0.45);
  background:rgba(220,38,38,0.08);
}
.canvasTaskAreasBar__openVertical.is-fill-partial{
  color:#ca8a04;
  border-color:rgba(202,138,4,0.5);
  background:rgba(250,204,21,0.18);
}
.canvasTaskAreasBar__openVertical.is-fill-complete{
  color:#16a34a;
  border-color:rgba(22,163,74,0.45);
  background:rgba(22,163,74,0.10);
}
.canvasTaskAreasBar__openVertical.is-fill-empty:hover{
  color:#b91c1c;
  border-color:#dc2626;
  background:rgba(220,38,38,0.14);
}
.canvasTaskAreasBar__openVertical.is-fill-partial:hover{
  color:#a16207;
  border-color:#ca8a04;
  background:rgba(250,204,21,0.28);
}
.canvasTaskAreasBar__openVertical.is-fill-complete:hover{
  color:#15803d;
  border-color:#16a34a;
  background:rgba(22,163,74,0.16);
}
.canvasTaskAreasBar__deleteZone svg{
  width:13px;
  height:13px;
}
.canvasTaskAreasBar__deleteZone:hover:not(:disabled){
  color:#dc2626;
  border-color:rgba(220,38,38,0.45);
  background:rgba(220,38,38,0.08);
}
.canvasTaskAreasBar__deleteZone:disabled{
  opacity:0.35;
  cursor:not-allowed;
}

.measureMobileTaskAreasBar__zoneTitleRow{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:6px;
  padding-bottom:3px;
  margin:0;
  border-bottom:1px solid var(--line);
}
.measureMobileTaskAreasBar__zoneTitleRow .measureMobileTaskAreasBar__name{
  flex:1;
  min-width:0;
  font-weight:600;
  margin:0;
  white-space:normal;
  word-break:break-word;
}
.measureMobileTaskAreasBar__deleteZone{
  flex-shrink:0;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  padding:0;
  border:1px solid var(--line);
  border-radius:4px;
  background:transparent;
  color:#94a3b8;
  cursor:pointer;
}
.measureMobileTaskAreasBar__deleteZone svg{
  width:13px;
  height:13px;
}
.measureMobileTaskAreasBar__deleteZone:hover:not(:disabled){
  color:#dc2626;
  border-color:rgba(220,38,38,0.45);
  background:rgba(220,38,38,0.08);
}
.measureMobileTaskAreasBar__deleteZone:disabled{
  opacity:0.35;
  cursor:not-allowed;
}

.measureTaskAreasModal__zoneTitleRow{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:6px;
  padding-bottom:3px;
  margin:0 0 4px;
  border-bottom:1px solid var(--line);
}
.measureTaskAreasModal__zoneTitleRow .measureTaskAreasModal__name{
  flex:1;
  min-width:0;
  font-weight:600;
  margin:0;
}
.measureTaskAreasModal__nameWrap{
  flex:1;
  min-width:0;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:4px 8px;
}
.measureTaskAreasModal__nameInput{
  flex:1;
  min-width:6rem;
  max-width:100%;
  margin:0;
  padding:4px 7px;
  font:inherit;
  font-weight:600;
  line-height:1.25;
  color:var(--text);
  background:var(--input-bg);
  border:1px solid var(--line);
  border-radius:6px;
  box-sizing:border-box;
}
.measureTaskAreasModal__nameInput::placeholder{
  color:var(--muted);
  font-weight:500;
}
.measureTaskAreasModal__nameInput:focus{
  outline:none;
  border-color:var(--primary, #64748b);
}
.measureTaskAreasModal__nameDims{
  flex-shrink:0;
  font-size:0.82em;
  font-weight:500;
  color:var(--muted);
}
.measureTaskAreasModal__deleteZone{
  flex-shrink:0;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  padding:0;
  border:1px solid var(--line);
  border-radius:4px;
  background:transparent;
  color:#94a3b8;
  cursor:pointer;
}
.measureTaskAreasModal__deleteZone svg{
  width:13px;
  height:13px;
}
.measureTaskAreasModal__deleteZone:hover:not(:disabled){
  color:#dc2626;
  border-color:rgba(220,38,38,0.45);
  background:rgba(220,38,38,0.08);
}
.measureTaskAreasModal__deleteZone:disabled{
  opacity:0.35;
  cursor:not-allowed;
}
.canvasTaskAreasBar__zoneSection .canvasTaskAreasBar__zoneMeta{ margin:0; gap:2px; }
.canvasTaskAreasBar__zoneSection .canvasTaskAreasBar__inputs{
  flex-wrap:nowrap;
  gap:4px;
  padding-top:3px;
  margin:0;
  align-items:center;
}
.canvasTaskAreasBar__zoneSection .canvasTaskAreasBar__label{
  flex:0 0 auto;
  white-space:nowrap;
}
.canvasTaskAreasBar__zoneSection .canvasTaskAreasBar__label--block{
  gap:1px;
}
.canvasTaskAreasBar__inputs{ display:flex; align-items:center; gap:4px; flex-wrap:nowrap; }
.canvasTaskAreasBar__label{ display:inline-flex; align-items:center; gap:2px; }
/* X/Y/V: přebít globální panel input[type="number"] (10px radius, width 100 %) */
input[type="number"].canvasTaskAreasBar__input{
  box-sizing:border-box;
  padding:4px 5px;
  font-size:11px;
  font-variant-numeric:tabular-nums;
  text-align:center;
  background:var(--input-bg); color:var(--text); border:1px solid var(--line); border-radius:2px;
  -moz-appearance:textfield;
  appearance:textfield;
}
/* Přebít globální input[type="number"] u plávajícího panelu zón */
#canvasTaskAreasBar input[type="number"].canvasTaskAreasBar__input{
  width:auto;
  border-radius:2px;
  padding:4px 5px;
}
.canvasTaskAreasBar__inputs input[data-field="num_points_x"],
.canvasTaskAreasBar__inputs input[data-field="num_points_y"]{
  width:4.75ch;
  min-width:4.25ch;
  max-width:6ch;
}
.canvasTaskAreasBar__inputs input[data-field="vyska_merici_roviny"]{
  width:6.5ch;
  min-width:5.75ch;
  max-width:8ch;
}
.canvasTaskAreasBar__input::-webkit-outer-spin-button,
.canvasTaskAreasBar__input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }

.canvasTaskAreasBar__zoneMeta{
  display:flex;
  flex-direction:column;
  gap:3px;
  margin:2px 0 4px 0;
}
.canvasTaskAreasBar__label--block{
  flex-direction:column;
  align-items:stretch;
  gap:2px;
  font-weight:500;
  font-size:10px;
}
.canvasTaskAreasBar__select{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  padding:3px 6px;
  font-size:11px;
  background:var(--input-bg);
  color:var(--text);
  border:1px solid var(--line);
  border-radius:4px;
}
.canvasTaskAreasBar__zonePozadavkyLine{
  font-size:9px;
  line-height:1.15;
  color:var(--muted);
  margin:0;
  padding:0 1px;
}
.canvasTaskAreasBar__zoneAutocomplete .autocomplete__input.canvasTaskAreasBar__zoneTypInput{
  padding:3px 6px;
  font-size:11px;
  border-radius:4px;
}
.canvasTaskAreasBar__input--req{
  width:5.5ch;
  min-width:4.75ch;
  max-width:6.5ch;
  border-radius:2px;
}

.canvasTaskAreasBar__stairsWrap{
  margin-top:8px;
  padding-top:8px;
  border-top:1px solid var(--line);
  flex-shrink:0;
}
.canvasTaskAreasBar__stairsHeading{
  margin:0 0 6px 0;
  font-size:10px;
  font-weight:600;
}
.canvasTaskAreasBar__stairsScroll{
  max-height:none;
  overflow:visible;
}
.canvasTaskAreasBar__stairsTable{
  margin:0;
}

/* Tabulka kritických bodů (nouzový plán) – výchozí: plovoucí / mobil; --canvasDock: levý sidebar u řádku plátna (PC jako pravý dock režimu) */
.canvasEmergencyCriticalBar{
  position:absolute;
  left:10px;
  width:min(260px, calc(100vw - 24px));
  min-width:180px;
  height:auto;
  max-height:calc(100% - 20px);
  z-index:52;
  display:flex;
  flex-direction:column;
  padding:6px 8px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  font-size:11px;
  overflow-x:hidden;
  overflow-y:auto;
  box-shadow:2px 2px 12px rgba(0,0,0,0.4);
  transition:width 0.18s ease, min-width 0.18s ease, padding 0.18s ease;
}
body:not(.device-mobile-or-tablet) .canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock,
body.measure-mode-pc .canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock,
body.app-desktop-ui .canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock{
  position:relative;
  left:0;
  top:auto;
  flex:0 0 auto;
  align-self:stretch;
  box-sizing:border-box;
  width:auto;
  max-width:260px;
  min-width:0;
  min-height:0;
  max-height:none;
  height:auto;
  z-index:1;
  box-shadow:none;
  border-radius:0;
  border:none;
  border-right:1px solid var(--line);
  margin:0;
  padding:8px 10px;
  overflow:hidden;
}
body:not(.device-mobile-or-tablet) .canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock .canvasEmergencyCriticalBar__scroll{
  flex:1 1 auto;
  min-height:0;
  max-height:none;
}
/* Desktop: zdůrazněná místa – flyout jako u zón / pracovních ploch (#canvasEmergencyCriticalBar) */
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock{
  width:34px;
  max-width:34px;
  min-width:34px;
  flex:0 0 34px;
  padding:8px 0;
  overflow-x:hidden;
  overflow-y:hidden;
  box-sizing:border-box;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed),
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed){
  --canvas-emergency-critical-dock-flyout-w: clamp(248px, 34vw, 280px);
  overflow:visible;
  z-index:35;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock.canvasEmergencyCriticalBar--collapsed,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock.canvasEmergencyCriticalBar--collapsed{
  overflow:hidden;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock .canvasEmergencyCriticalBar__dropSheet{
  flex:1;
  min-height:0;
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__dropSheet,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__dropSheet{
  display:flex;
  flex-direction:column;
  gap:6px;
  position:absolute;
  left:0;
  top:34px;
  bottom:0;
  width:var(--canvas-emergency-critical-dock-flyout-w);
  max-width:calc(100vw - 96px);
  min-width:0;
  flex:0 0 auto;
  box-sizing:border-box;
  padding:6px 10px;
  padding-bottom:calc(8px + var(--canvas-main-bottom-pad, 0px));
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  background:var(--panel);
  border:1px solid var(--line);
  border-top:none;
  box-shadow:4px 0 22px rgba(0, 0, 0, 0.16);
  z-index:2;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__title,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__title{
  position:absolute;
  left:0;
  top:0;
  width:var(--canvas-emergency-critical-dock-flyout-w);
  height:34px;
  margin:0;
  padding:8px 32px 8px 10px;
  box-sizing:border-box;
  background:var(--panel);
  border:1px solid var(--line);
  border-bottom:none;
  box-shadow:4px 0 22px rgba(0, 0, 0, 0.16);
  z-index:4;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  line-height:18px;
  writing-mode:horizontal-tb;
  transform:none;
  display:block;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__toggle,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__toggle{
  left:calc(var(--canvas-emergency-critical-dock-flyout-w) - 24px);
  right:auto;
  top:8px;
  z-index:5;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed),
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed){
  --canvas-emergency-critical-dock-rail-w:5px;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__title,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__title,
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__dropSheet,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__dropSheet{
  left:calc(-1 * var(--canvas-emergency-critical-dock-rail-w));
  width:calc(var(--canvas-emergency-critical-dock-flyout-w) + var(--canvas-emergency-critical-dock-rail-w));
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__scroll,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__scroll{
  flex:1 1 auto;
  min-height:0;
  max-height:none;
  overflow:auto;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock.canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__title,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock.canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__title{
  position:absolute;
  left:0;
  top:26px;
  display:flex;
  justify-content:center;
  align-items:center;
  width:34px;
  margin:0;
  text-align:center;
  writing-mode:vertical-rl;
  transform:rotate(180deg);
  white-space:nowrap;
  line-height:1;
}
body:not(.device-mobile-or-tablet) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock.canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__dropSheet,
body.app-desktop-ui #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock.canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__dropSheet{
  display:none !important;
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock{
  position:relative;
  left:auto;
  top:auto;
  width:100%;
  min-width:0;
  max-width:none;
  max-height:none;
  z-index:2;
  flex-shrink:0;
  box-shadow:none;
  border-radius:0;
  border:none;
  border-bottom:1px solid var(--line);
  overflow:visible;
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed){
  z-index:24;
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__dropSheet{
  position:absolute;
  left:0;
  right:0;
  top:100%;
  z-index:4;
  max-height:min(58vh, 520px);
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding:6px 8px 10px;
  box-sizing:border-box;
  background:var(--panel);
  border:1px solid var(--line);
  border-top:none;
  box-shadow:0 14px 28px rgba(0, 0, 0, 0.38);
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__scroll{
  position:static;
  max-height:none;
  overflow:visible;
  padding:0;
  box-shadow:none;
  border:none;
  background:transparent;
}
body.device-mobile-or-tablet.measure-mode-pc .canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock{
  position:absolute;
  max-height:calc(100% - 20px);
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasStairsBar.canvasEmergencyCriticalBar--canvasDock{
  width:100%;
  max-width:none;
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasStairsBar{
  position:relative;
  left:auto;
  top:auto;
  width:100%;
  max-width:none;
  flex-shrink:0;
  box-shadow:none;
  border-radius:0;
  border:none;
  overflow:visible;
  z-index:3;
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasStairsBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed){
  z-index:24;
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasStairsBar.canvasEmergencyCriticalBar--canvasDock:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__scroll{
  position:absolute;
  left:0;
  right:0;
  top:100%;
  z-index:4;
  max-height:min(58vh, 520px);
  overflow-x:hidden;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding:6px 8px 10px;
  box-sizing:border-box;
  background:var(--panel);
  border:1px solid var(--line);
  border-top:none;
  box-shadow:0 14px 28px rgba(0, 0, 0, 0.38);
}
body.device-mobile-or-tablet:not(.measure-mode-pc) #canvasStairsBar.canvasEmergencyCriticalBar--collapsed{
  width:100%;
  min-width:0;
}
body.device-mobile-or-tablet:not(.measure-mode-pc) .canvasTaskAreasBar.canvasTaskAreasBar--canvasDock.canvasTaskAreasBar--collapsed,
body.device-mobile-or-tablet:not(.measure-mode-pc) .canvasEmergencyCriticalBar.canvasEmergencyCriticalBar--canvasDock.canvasEmergencyCriticalBar--collapsed{
  width:100%;
  min-width:0;
  height:28px;
  min-height:28px;
  max-height:28px;
  flex:0 0 28px;
  padding:0 34px 0 10px;
  overflow:hidden;
  box-sizing:border-box;
  cursor:pointer;
}
body.device-mobile-or-tablet:not(.measure-mode-pc) .canvasTaskAreasBar--collapsed .canvasTaskAreasBar__title{
  position:static;
  display:flex;
  align-items:center;
  width:auto;
  height:28px;
  writing-mode:horizontal-tb;
  transform:none;
  margin:0;
  color:var(--text);
}
body.device-mobile-or-tablet:not(.measure-mode-pc) .canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__title{
  display:flex;
  align-items:center;
  height:28px;
  writing-mode:horizontal-tb;
  transform:none;
  margin:0;
  color:var(--text);
}
.canvasEmergencyCriticalBar[hidden],
.canvasTaskAreasBar__stairsWrap[hidden],
.panelZonesSection__stairsWrap[hidden]{
  display:none !important;
}
.canvasEmergencyCriticalBar__toggle{
  position:absolute;
  top:5px;
  right:8px;
  width:18px;
  height:18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  color:var(--muted);
  cursor:pointer;
  line-height:1;
  font-size:16px;
  font-weight:600;
  z-index:8;
}
.canvasEmergencyCriticalBar__toggle:hover{
  color:var(--text);
}
.canvasEmergencyCriticalBar--collapsed{
  width:34px;
  min-width:34px;
  padding:6px 0;
  cursor:pointer;
}
.canvasEmergencyCriticalBar--collapsed *{
  cursor:pointer;
}
.canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__scroll,
.canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__dropSheet{
  display:none;
}
.canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__filters{
  display:none;
}
.canvasEmergencyCriticalBar--collapsed .canvasEmergencyCriticalBar__title{
  display:block;
  margin:26px 0 0 0;
  writing-mode:vertical-rl;
  transform:rotate(180deg);
  white-space:nowrap;
  line-height:1;
}
.canvasEmergencyCriticalBar__title{ font-weight:600; margin:0 28px 6px 0; font-size:11px; }
.canvasEmergencyCriticalBar__filters{
  display:flex; flex-wrap:wrap; gap:4px; margin:0 0 6px; padding:0 2px;
}
.canvasEmergencyCriticalBar__filterBtn{
  font-size:10px; padding:2px 6px; border:1px solid var(--line); border-radius:4px;
  background:var(--panel); color:var(--text); cursor:pointer;
}
.canvasEmergencyCriticalBar__filterBtn--active{
  border-color:var(--accent, #2563eb); background:rgba(37,99,235,0.08); font-weight:600;
}
.canvasEmergencyCriticalBar__strayPhase{
  display:flex; flex-wrap:wrap; align-items:center; gap:4px; margin:0 0 6px; padding:0 2px;
}
.canvasEmergencyCriticalBar__strayPhase[hidden]{
  display:none !important;
}
.canvasEmergencyCriticalBar__strayPhaseLabel{
  font-size:10px; color:var(--muted); margin-right:2px;
}
.canvasEmergencyCriticalBar__strayPhaseBtn{
  font-size:10px; padding:2px 6px; border:1px solid var(--line); border-radius:4px;
  background:var(--panel); color:var(--text); cursor:pointer;
}
.canvasEmergencyCriticalBar__strayPhaseBtn--active{
  border-color:#b45309; background:rgba(180,83,9,0.1); font-weight:600;
}
.measureLockedBar__group--emergencyStrayPhase{
  flex:1 1 auto; min-width:5.5rem; max-width:9rem;
}
.measureLockedBar__strayPhase{
  display:flex; gap:3px; width:100%; padding:0 2px;
}
.measureLockedBar__strayPhaseBtn{
  flex:1 1 0; min-width:0; font-size:9px; line-height:1.1; padding:4px 2px;
  border:1px solid var(--line); border-radius:4px; background:var(--panel);
  color:var(--text); cursor:pointer; font-weight:600;
}
.measureLockedBar__strayPhaseBtn--active{
  border-color:#b45309; background:rgba(180,83,9,0.12); color:#9a3412;
}
.canvasEmergencyCriticalBar__colResult{ width:2rem; text-align:center; }
.canvasEmergencyCriticalBar__resultBadge{ font-size:10px; font-weight:700; }
.canvasEmergencyCriticalBar__resultBadge--pass{ color:#15803d; }
.canvasEmergencyCriticalBar__resultBadge--fail{ color:#dc2626; }
.canvasEmergencyCriticalBar__resultBadge--nodata{ color:var(--muted); font-weight:400; }
.prj-emergency-defects-add{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:8px 0; }
.prj-emergency-defects-add__popis{ flex:1 1 12rem; min-width:8rem; }
.prj-emergency-defects-list{ list-style:none; margin:8px 0 0; padding:0; }
.prj-emergency-defect{ display:flex; gap:8px; align-items:flex-start; padding:6px 0; border-bottom:1px solid var(--line); }
.prj-emergency-defect__typ{ font-weight:600; min-width:5rem; }
.prj-emergency-defect__popis{ flex:1; }
.prj-subsection__title{ font-weight:600; display:block; margin-bottom:4px; }
.canvasEmergencyCriticalBar:not(.canvasEmergencyCriticalBar--collapsed) .canvasEmergencyCriticalBar__title{
  cursor:pointer;
}
.canvasEmergencyCriticalBar__scroll{ overflow:auto; min-height:0; max-height:min(42vh, 320px); }
.canvasEmergencyCriticalBar__table{ width:100%; border-collapse:collapse; font-size:11px; table-layout:fixed; }
.canvasEmergencyCriticalBar__table th,
.canvasEmergencyCriticalBar__table td{ padding:4px 3px; border-bottom:1px solid var(--line); vertical-align:middle; line-height:1.25; }
.canvasEmergencyCriticalBar__table th{ font-size:9px; font-weight:600; color:var(--muted); text-align:left; }
.canvasEmergencyCriticalBar__table tbody tr:last-child td{ border-bottom:none; }
.canvasEmergencyCriticalBar__colLabel{ width:2.75rem; font-variant-numeric:tabular-nums; vertical-align:middle; }
.canvasEmergencyCriticalBar__labelMain{ font-weight:600; font-size:11px; line-height:1.15; }
.canvasEmergencyCriticalBar__labelReq{ margin-top:1px; font-size:9px; font-weight:400; color:var(--muted); line-height:1.1; white-space:nowrap; }
.canvasEmergencyCriticalBar__colKind{ min-width:0; width:auto; }
.canvasEmergencyCriticalBar__colLux{ width:3rem; }
.canvasEmergencyCriticalBar__colDel{ width:1.75rem; min-width:1.75rem; padding-left:0; padding-right:0; text-align:center; vertical-align:middle; }
.canvasEmergencyCriticalBar__kindSelect{
  width:100%; max-width:100%; min-width:0; font:inherit; font-size:10px; padding:2px 3px;
  border:1px solid var(--line); border-radius:4px; background:var(--input-bg); color:var(--text);
}
.canvasEmergencyCriticalBar__luxInput{
  width:100%; max-width:3.75rem; box-sizing:border-box; font:inherit; font-size:10px; padding:2px 4px;
  border:1px solid var(--line); border-radius:4px; background:var(--bg, #fff); font-variant-numeric:tabular-nums;
}
.canvasEmergencyCriticalBar__delBtn{
  padding:0; border:none; background:transparent;
  color:#94a3b8; cursor:pointer; border-radius:4px;
}
.canvasEmergencyCriticalBar__delBtn svg{
  display:block;
  width:13px;
  height:13px;
}
.canvasEmergencyCriticalBar__delBtn:hover{
  color:var(--danger, #b91c1c);
}
.canvasEmergencyCriticalBar__iconBtn.canvasEmergencyCriticalBar__delBtn{
  border:1px solid var(--line);
  background:transparent;
}
.canvasEmergencyCriticalBar__iconBtn.canvasEmergencyCriticalBar__delBtn:hover{
  border-color:rgba(220,38,38,0.45);
  background:rgba(220,38,38,0.08);
}
  .canvasEmergencyCriticalBar__rowAxisCross .canvasEmergencyCriticalBar__colLabel .canvasEmergencyCriticalBar__labelMain{ color:var(--muted); }
  .canvasEmergencyCriticalBar__kindStatic{
    font-size:9px;
    line-height:1.25;
    color:var(--text);
    overflow:hidden;
    display:-webkit-box;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
    line-clamp:2;
    word-break:break-word;
  }
  .canvasEmergencyCriticalBar__rowStairFlight td{ background:rgba(0,0,0,0.04); border-bottom:1px solid var(--line); }
  .canvasEmergencyCriticalBar__stairFlightHeader{ display:flex; flex-direction:column; gap:6px; font-size:10px; min-width:0; }
  .canvasEmergencyCriticalBar__stairFlightTitleRow{ display:flex; align-items:center; justify-content:space-between; gap:8px; min-width:0; }
  .canvasEmergencyCriticalBar__stairFlightTitle{ font-weight:600; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .canvasEmergencyCriticalBar__stairFlightControls{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; min-width:0; }
  .canvasEmergencyCriticalBar__stairInlineLabel{ color:var(--muted); white-space:nowrap; }
  .canvasEmergencyCriticalBar__stairStepsInput{ width:2.75rem; margin-left:6px; padding:2px 4px; font-size:10px; }
  .canvasEmergencyCriticalBar__stairStepsInput--count{ width:2.35rem; }
  .canvasEmergencyCriticalBar__stairStrideSelect{ margin-left:6px; }
  .canvasEmergencyCriticalBar__stairStrideSelect{ width:min(10.5rem, 100%); max-width:100%; font-size:10px; padding:2px 4px; }
  .canvasEmergencyCriticalBar__stairFlightActions{ display:inline-flex; align-items:center; gap:4px; flex:0 0 auto; }
  .canvasEmergencyCriticalBar__iconBtn{
    width:20px;
    height:20px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid var(--line);
    border-radius:4px;
    background:var(--input-bg);
    color:var(--text);
    font:inherit;
    font-size:13px;
    line-height:1;
    cursor:pointer;
  }
  .canvasEmergencyCriticalBar__iconBtn:hover{ background:var(--panel); border-color:var(--muted); }
  .canvasEmergencyCriticalBar__rowStairTread .canvasEmergencyCriticalBar__colLabel{ font-variant-numeric:tabular-nums; }
  .canvasEmergencyCriticalBar__stairEmptyHint{ color:var(--muted); font-size:10px; font-style:italic; }
  #canvasStairsBar .canvasEmergencyCriticalBar__colLabel{ width:5.25rem; }
  #canvasStairsBar .canvasEmergencyCriticalBar__colKind{ overflow:visible; }
  #canvasStairsBar .canvasEmergencyCriticalBar__rowStairTread td{ padding-top:4px; padding-bottom:4px; }
  #canvasStairsBar .canvasEmergencyCriticalBar__stairFlightControls{ gap:8px 10px; }
  #canvasStairsBar .canvasEmergencyCriticalBar__stairStrideSelect{ width:min(9rem, 100%); }
  /* Šířka v px / auto – ne min(..., 100 %) u gridu (cyklická šířka sloupce → obří levý pruh). */
  body:not(.device-mobile-or-tablet) #canvasStairsBar.canvasEmergencyCriticalBar--canvasDock,
  body.measure-mode-pc #canvasStairsBar.canvasEmergencyCriticalBar--canvasDock,
  body.app-desktop-ui #canvasStairsBar.canvasEmergencyCriticalBar--canvasDock{
    width:auto;
    max-width:280px;
    min-width:0;
    box-sizing:border-box;
  }
  #canvasStairsBar.canvasEmergencyCriticalBar--canvasDock{ width:min(280px, 36vw); }
  #canvasStairsBar{ width:min(280px, calc(100vw - 24px)); }
  #canvasStairsBar.canvasEmergencyCriticalBar--collapsed{
    width:34px;
    min-width:34px;
  }
  #canvasStairsBar .canvasEmergencyCriticalBar__scroll{
    max-height:none;
    overflow-x:hidden;
    overflow-y:visible;
  }
  #canvasStairsBar .canvasEmergencyCriticalBar__table td{
    padding:0;
    border-bottom:none;
  }
  .canvasStairsPanel__row + .canvasStairsPanel__row .canvasStairsPanel__card{ margin-top:6px; }
  .canvasStairsPanel__card{
    display:flex;
    flex-direction:column;
    gap:6px;
    padding:7px;
    border:1px solid var(--line);
    border-radius:7px;
    background:rgba(0,0,0,0.035);
  }
  .canvasStairsPanel__header,
  .canvasStairsPanel__subheader{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    min-width:0;
  }
  .canvasStairsPanel__heading{
    display:flex;
    align-items:center;
    gap:6px;
    min-width:0;
    flex:1;
  }
  .canvasStairsPanel__title,
  .canvasStairsPanel__subtitle{
    font-weight:700;
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .canvasStairsPanel__titleInput{
    flex:1;
    min-width:5rem;
    max-width:100%;
    margin:0;
    padding:3px 6px;
    font:inherit;
    font-weight:700;
    line-height:1.25;
    color:var(--text);
    background:var(--input-bg);
    border:1px solid var(--line);
    border-radius:6px;
    box-sizing:border-box;
  }
  .canvasStairsPanel__titleInput::placeholder{
    color:var(--muted);
    font-weight:600;
  }
  .canvasStairsPanel__titleInput:focus{
    outline:none;
    border-color:var(--primary, #64748b);
  }
  .canvasStairsPanel__subtitle{ font-weight:600; }
  .canvasStairsPanel__meta{
    color:var(--muted);
    font-size:10px;
    white-space:nowrap;
  }
  .canvasStairsPanel__actions{
    display:inline-flex;
    align-items:center;
    gap:4px;
    flex:0 0 auto;
  }
  .canvasStairsPanel__rotate90Btn{
    /* Přebije .canvasEmergencyCriticalBar__iconBtn (20×20): jinak text „90°“ přepadá mimo hitbox a klik „nefunguje“. */
    width:auto;
    height:auto;
    min-height:22px;
    box-sizing:border-box;
    font-size:10px;
    font-weight:700;
    letter-spacing:-0.03em;
    min-width:2.1rem;
    padding:2px 6px;
    line-height:1.1;
  }
  .canvasStairsPanel__polygonAxisBtn{
    color:#ea580c;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0 2px;
  }
  .canvasStairsPanel__polygonAxisBtn svg{
    display:block;
  }
  /* Dva řádky: 1) stupně + počet bodů na schod  2) měřit (select) */
  .canvasStairsPanel__controlsStack{
    display:flex;
    flex-direction:column;
    gap:6px;
    min-width:0;
  }
  /* Druhý řádek: jen select „Měřit“ */
  .canvasStairsPanel__controls--pptRow{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:6px 8px;
    min-width:0;
  }
  .canvasStairsPanel__controls--pptRow .canvasStairsPanel__field{
    flex:0 0 auto;
    min-width:0;
  }
  .canvasStairsPanel__controls{
    display:grid;
    grid-template-columns:max-content minmax(0, 1fr);
    align-items:center;
    gap:6px 10px;
  }
  /* Základní schodiště: první řádek počet stupňů + počet bodů na schod */
  .canvasStairsPanel__controls--row3{
    display:flex;
    flex-wrap:nowrap;
    align-items:center;
    gap:6px 8px;
    min-width:0;
  }
  .canvasStairsPanel__controls--row3 .canvasStairsPanel__field{
    flex:0 0 auto;
    min-width:0;
  }
  /* „Měřit“: select s plnými popisky */
  .canvasStairsPanel__strideSelect{
    box-sizing:border-box;
    margin-left:0;
    min-width:min(11rem,100%);
    max-width:100%;
    padding:2px 4px;
    font-size:10px;
    line-height:1.25;
    border:1px solid var(--line);
    border-radius:3px;
    background:var(--input-bg);
    color:var(--text);
  }
  .canvasStairsPanel__inputSteps,
  .canvasStairsPanel__inputDigitNarrow{
    box-sizing:border-box;
    margin-left:0;
    padding:1px 3px;
    font-size:10px;
    line-height:1.25;
    border:1px solid var(--line);
    border-radius:3px;
    background:var(--input-bg);
    color:var(--text);
    font-variant-numeric:tabular-nums;
  }
  .canvasStairsPanel__inputSteps{
    width:2.1rem;
    min-width:2.1rem;
    max-width:2.75rem;
    text-align:center;
  }
  /* Body / stupeň: úzce, stačí na hodnoty 1–20 */
  .canvasStairsPanel__inputDigitNarrow{
    width:1.65rem;
    min-width:1.65rem;
    max-width:1.85rem;
    padding:1px 2px;
    text-align:center;
  }
  .canvasStairsPanel__field{
    display:inline-flex;
    align-items:center;
    gap:6px;
    min-width:0;
    color:var(--muted);
  }
  .canvasStairsPanel__field--wide{ justify-self:end; }
  .canvasStairsPanel__field .canvasEmergencyCriticalBar__stairStepsInput,
  .canvasStairsPanel__field .canvasEmergencyCriticalBar__stairStrideSelect,
  .canvasStairsPanel__field .canvasEmergencyCriticalBar__stairStrideInput,
  .canvasStairsPanel__field .canvasStairsPanel__strideSelect,
  .canvasStairsPanel__field .canvasStairsPanel__inputSteps,
  .canvasStairsPanel__field .canvasStairsPanel__inputDigitNarrow{
    margin-left:0;
  }
  .canvasStairsPanel__label{
    color:var(--muted);
    font-size:10px;
    white-space:nowrap;
  }
  .canvasStairsPanel__card--landing{
    padding:6px;
    border:1px solid rgba(127,127,127,0.24);
    background:rgba(255,255,255,0.035);
  }
  .canvasStairsPanel__gridRow{
    display:grid;
    grid-template-columns:4.4rem minmax(0, 1fr);
    align-items:center;
    gap:6px;
  }
  .canvasStairsPanel__gridRow--muted{ color:var(--muted); }
  .canvasStairsPanel__value{
    font-size:10px;
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
  }
  .canvasEmergencyCriticalBar__landingInlineRow{
    display:grid;
    grid-template-columns:max-content 2.25rem max-content 2.25rem max-content;
    align-items:center;
    gap:4px;
    min-width:0;
  }
  .canvasEmergencyCriticalBar__landingInlineKey{
    color:var(--muted);
    font-size:10px;
    line-height:1;
    flex:0 0 auto;
  }
  .canvasEmergencyCriticalBar__landingInlineInput{
    box-sizing:border-box;
    width:2.25rem;
    min-width:0;
    max-width:2.25rem;
    margin-left:0;
  }
  .canvasEmergencyCriticalBar__landingInlineTotal{
    margin-left:2px;
    color:var(--muted);
    font-size:10px;
    font-variant-numeric:tabular-nums;
    white-space:nowrap;
    flex:0 0 auto;
  }
/* Skrytý nouzový panel (editace / základní plátno / výměna za Režim měření) – přebije display:flex z .canvasModeBar */
#canvasEmergencyModeBar{
  display:none !important;
}
body.emergency-ui-allowed #canvasEmergencyModeBar.measureModeBar--show{
  display:flex !important;
  flex-direction:column;
}
#canvasEmergencyModeBar.measureModeBar--hidden{
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}
/* Editace: bez body.measure-mode – stejné skrytí měřicího panelu jako v měření */
#canvasModeBar.measureModeBar--emergencySwap{
  display:none !important;
}
.canvasModeBar{
  position:absolute;
  right:10px;
  /* top nastavuje JS: výška panelu nástrojů + 8px */
  width:180px;
  min-width:0;
  height:auto;
  max-height:calc(100% - 20px);
  z-index:25;
  display:flex;
  flex-direction:column;
  padding:6px 8px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  font-size:11px;
  overflow-x:hidden;
  overflow-y:auto;
  box-shadow:2px 2px 12px rgba(0,0,0,0.4);
}
.canvasModeBar__title{ font-weight:600; margin:0 0 6px 0; font-size:11px; }
.canvasModeBar__methodologyLine{
  margin:-2px 0 6px 0;
  font-size:12px;
  line-height:1.25;
  color:var(--muted);
}
.canvasModeBar__group{ margin-bottom:8px; }
.canvasModeBar__group:last-child{ margin-bottom:0; }
.canvasModeBar__label{ display:block; margin-bottom:4px; font-size:11px; color:var(--text); }
.canvasModeBar__labelRow{ display:inline-flex; align-items:center; gap:6px; margin-bottom:4px; }
.canvasModeBar__labelRow .canvasModeBar__label{ display:inline; margin-bottom:0; }
.canvasModeBarGridPlacementWrap{ margin-top:6px; }
.canvasModeBar__labelRow--withInfo{ align-items:flex-start; }
button.canvasModeBar__infoSummary{
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.35em;
  height:1.35em;
  margin:0;
  padding:0;
  font-family:inherit;
  font-size:10px;
  font-weight:700;
  line-height:1;
  color:var(--muted);
  border:1px solid var(--line);
  border-radius:50%;
  background:var(--panel);
  cursor:pointer;
  user-select:none;
  flex-shrink:0;
}
button.canvasModeBar__infoSummary:hover{ color:var(--text); border-color:var(--muted); }
button.canvasModeBar__infoSummary:focus-visible{ outline:2px solid var(--primary); outline-offset:2px; }

/* Nápověda rozložení mřížky – plovoucí panel u tlačítka „i“, levý horní roh = pozice tlačítka (fixed, nad plátnem) */
.gridPlacementHelpPopoverBackdrop{
  position:fixed;
  inset:0;
  z-index:10059;
  background:transparent;
  cursor:default;
}
.gridPlacementHelpPopover{
  position:fixed;
  z-index:10060;
  margin:0;
  padding:0;
  border:none;
  background:transparent;
  box-sizing:border-box;
  max-width:min(320px, calc(100vw - 16px));
  pointer-events:none;
}
.gridPlacementHelpPopover__inner{
  pointer-events:auto;
  background:var(--panel);
  color:var(--text);
  border:1px solid var(--line);
  border-radius:8px;
  box-shadow:0 8px 28px rgba(0,0,0,0.22);
  max-height:min(70vh, 420px);
  overflow:hidden;
  display:flex;
  flex-direction:column;
  box-sizing:border-box;
}
.gridPlacementHelpPopover__header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px 0;
  flex-shrink:0;
}
.gridPlacementHelpPopover__title{
  margin:0;
  font-size:0.95rem;
  font-weight:600;
  line-height:1.25;
  padding-right:4px;
}
.gridPlacementHelpPopover__close{
  flex-shrink:0;
  width:2rem;
  height:2rem;
  margin:-2px -4px 0 0;
  padding:0;
  font-size:1.35rem;
  line-height:1;
  font-family:inherit;
  color:var(--muted);
  background:transparent;
  border:none;
  border-radius:6px;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.gridPlacementHelpPopover__close:hover{ color:var(--text); background:var(--hover); }
.gridPlacementHelpPopover__close:focus-visible{ outline:2px solid var(--primary); outline-offset:2px; }
.gridPlacementHelpPopover__body{
  font-size:12px;
  line-height:1.5;
  color:var(--text);
  padding:6px 12px 12px;
  overflow-y:auto;
  flex:1;
  min-height:0;
}
.gridPlacementHelpPopover__body p{ margin:0 0 0.55em 0; }
.gridPlacementHelpPopover__body p:last-child{ margin-bottom:0; }
.gridPlacementHelpPopover__body strong{ font-weight:600; }
.gridPlacementHelpPopover__section{
  margin-bottom:16px;
}
.gridPlacementHelpPopover__section:last-child{
  margin-bottom:0;
}
.gridPlacementHelpPopover__section-title{
  font-size:13px;
  font-weight:600;
  margin:0 0 8px 0;
  color:var(--text);
}
.gridPlacementHelpPopover__image{
  display:flex;
  justify-content:center;
  padding:8px;
  background:var(--bg-secondary);
  border-radius:4px;
}
.gridPlacementHelpPopover__svg{
  max-width:100%;
  height:auto;
}
.canvasModeBar__gridWarning{ display:inline-flex; align-items:center; justify-content:center; width:1.1em; height:1.1em; font-size:12px; font-weight:700; color:#c00; background:#fdd; border-radius:50%; cursor:help; flex-shrink:0; }
.canvasModeBar__row{ display:flex; align-items:center; gap:6px; flex-wrap:nowrap; }
.canvasModeBar__row--offset{ flex-wrap:wrap; }
/* DOM: nejdřív řádek s čísly (tab X/Y nebo L–R–T–B), pak řádek nadpis + táhnout mřížku — vizuálně nahoře nadpis (grid-row). */
.canvasModeBar__offsetEditor{
  display:grid;
  grid-template-rows:auto auto;
  row-gap:4px;
}
.canvasModeBar__offsetEditor > .canvasModeBar__row--offset{
  grid-row:2;
}
.canvasModeBar__offsetHeading{
  grid-row:1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  min-width:0;
}
.canvasModeBar__offsetHeading .canvasModeBar__label{
  margin-bottom:0;
}
.canvasModeBar__offsetSymWrap,
.canvasModeBar__offsetAsymWrap{
  display:inline-flex;
  flex-wrap:wrap;
  align-items:center;
  gap:0.35rem;
}
.canvasModeBar__stretchBtn{
  flex-shrink:0;
  box-sizing:border-box;
  width:auto;
  height:auto;
  min-width:22px;
  min-height:22px;
  padding:2px;
  margin:0;
  line-height:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--line);
  border-radius:4px;
  background:var(--panel);
  color:var(--text);
  cursor:pointer;
  vertical-align:middle;
}
.canvasModeBar__stretchBtn:hover{ background:var(--hover); }
.canvasModeBar__stretchBtn.is-active{
  background:var(--btnLine);
  color:var(--primary);
  border-color:var(--primary);
}
.canvasModeBar__stretchBtn svg{
  display:block;
  width:11px;
  height:11px;
}
.canvasModeBar__offsetHeading .canvasModeBar__stretchBtn{
  align-self:center;
}
.canvasModeBar__labelRow .canvasModeBar__stretchBtn{
  align-self:center;
}
#rm_reset_grid_row{ margin-top:10px; }
.canvasModeBar__field{ display:inline-flex; align-items:center; gap:4px; font-size:11px; flex:0 0 auto; }
.canvasModeBar__field span{ min-width:1.2em; color:var(--muted); }
.canvasModeBar__input{
  width:48px; min-width:0; max-width:52px; padding:2px 6px; font-size:11px; box-sizing:border-box;
  background:var(--input-bg); color:var(--text); border:1px solid var(--line); border-radius:4px;
  -moz-appearance:textfield; appearance:textfield;
}
/* Odsazení X/Y: o ~1 znak širší, stále vedle sebe v úzkém panelu */
.canvasModeBar__offsetSymWrap .canvasModeBar__input{
  width:56px;
  max-width:60px;
}
/* Režim táhnutí mřížky: rozšířit pole X/Y pro zápis hodnot s lomítkem (L/R, T/B),
   ale držet je v rámci šířky modalu. */
.canvasModeBar__offsetSymWrap.is-hand-active .canvasModeBar__input{
  width:88px;
  max-width:96px;
}
.canvasModeBar__input::-webkit-outer-spin-button,
.canvasModeBar__input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
select.canvasModeBar__input.canvasModeBar__strideSelect{
  width:auto;
  min-width:11rem;
  max-width:min(100%,18rem);
  -moz-appearance:auto;
  appearance:auto;
}
.canvasModeBar .radioGroup{ display:flex; flex-direction:column; gap:4px; }
/* Jednotný sloupec pro radii i checkbox — jinak velikosti 16/13 px křiví osekaný řádek ve flexu */
.canvasModeBar .checkRow{
  display:grid;
  grid-template-columns: 1.25rem minmax(0, 1fr);
  align-items:center;
  column-gap:6px;
  white-space:nowrap;
  margin:0;
}
.canvasModeBar .checkRow input[type="radio"]{
  accent-color:var(--text);
  cursor:pointer;
  width:16px;
  height:16px;
  justify-self:center;
  margin:0;
}
.canvasModeBar .checkRow input[type="checkbox"]{
  width:13px;
  height:13px;
  cursor:pointer;
  justify-self:center;
  margin:0;
}
.canvasModeBar__select{ width:100%; max-width:none; min-width:0; padding:4px 8px; cursor:pointer; }
.canvasModeBar__select option{ padding:2px 0; }

.canvasEmergencyModeBar .panel-emergency-hint--omitInMeasureModal{ display:none !important; }
.canvasEmergencyModeBar__bodySlot .panel-emergency-movableRoot,
.canvasEmergencyModeBar__gridSlot{
  display:flex;
  flex-direction:column;
  gap:8px;
  width:100%;
  min-width:0;
}
.canvasEmergencyModeBar__bodySlot .panel-emergency-group,
.canvasEmergencyModeBar__bodySlot .panel-emergency-escapeRowWrap{
  width:100%;
  min-width:0;
}
.canvasEmergencyModeBar__bodySlot .gridSpan2{ grid-column:auto; }

.canvasEmergencyCanvasToggle{
  display:none;
  flex-direction:row;
  flex-shrink:0;
  align-items:stretch;
  gap:0;
  padding:2px;
  pointer-events:auto;
  background:rgba(56,56,56,0.95);
  border:1px solid var(--line);
  border-radius:6px;
  box-shadow:0 2px 8px rgba(0,0,0,0.4);
}
.canvasEmergencyCanvasToggle:not([hidden]){ display:inline-flex; }
.canvasEmergencyCanvasToggle--canvasDock{
  position:static;
  flex-shrink:0;
  align-self:flex-start;
}
.canvasEmergencyToggleStrip{
  display:flex;
  flex-direction:row;
  flex-wrap:nowrap;
  align-items:stretch;
  gap:6px;
  pointer-events:auto;
  flex-shrink:0;
  align-self:flex-start;
}
.canvasEmergencyToggleStrip--mobile{
  width:100%;
  box-sizing:border-box;
}
.canvasEmergencyToggleStrip--mobile .canvasEmergencyCanvasToggle--mobile:not([hidden]){
  flex:1 1 auto;
  min-width:0;
}
.canvasEmergencyToggleStrip--mobile .canvasEmergencyCanvasToggle--strayPhase:not([hidden]){
  flex:0 0 auto;
}
/* Skupina: výsledkový bar nahoře, pod ním přepínače plátna (+ volitelně OFF/ON) */
.canvasResultsHud{
  position:absolute;
  top:8px;
  left:8px;
  z-index:28;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
  width:calc(100% - 16px);
  max-width:calc(100% - 16px);
  min-width:0;
  pointer-events:none;
  box-sizing:border-box;
}
body:not(.device-mobile-or-tablet) .canvasResultsHud{
  left:calc(8px + var(--canvas-left-dock-pad, 0px));
  width:calc(100% - 16px - var(--canvas-left-dock-pad, 0px));
  max-width:calc(100% - 16px - var(--canvas-left-dock-pad, 0px));
}
/* U PC měření nezajíždět pod plovoucí panel režimu (~180px + okraj) */
body.measure-mode:not(.device-mobile-or-tablet) .canvasResultsHud{
  width:calc(100% - 210px - var(--canvas-left-dock-pad, 0px));
  max-width:calc(100% - 210px - var(--canvas-left-dock-pad, 0px));
}
/* Mobil: výchozí skrytí celého HUD (styles-base) — pro tabulku kritických bodů zobrazit jen ji; přepínač canvasu je v measureMobileStatusRow */
body.device-mobile-or-tablet.measure-mode .canvasResultsHud{
  display:flex !important;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
  width:calc(100% - 16px);
  max-width:calc(100% - 16px);
  pointer-events:none;
}
body.device-mobile-or-tablet.measure-mode .canvasResultsHud .canvasResultsOverlay{
  display:none !important;
}
body.device-mobile-or-tablet.measure-mode .canvasResultsHud .canvasEmergencyCanvasToggle--canvasDock,
body.device-mobile-or-tablet.measure-mode .canvasResultsHud .canvasEmergencyToggleStrip--canvasDock{
  display:none !important;
}
.panel-emergency-areaTypeWrap{
  margin-top:4px;
}
.panel-emergency-areaTypeWrap .panel-emergency-label{
  margin:2px 0 4px;
  font-size:13px;
  color:var(--text);
}
.panel-emergency-areaTypeWrap .panel-emergency-hint{
  margin-top:4px;
  margin-bottom:0;
}
.panel-emergency-evaluatedArea{
  margin:2px 0 6px;
  font-size:12px;
  line-height:1.35;
  color:var(--text-muted, #9ca3af);
}
.panel-emergency-evaluatedArea span{
  color:var(--text);
  font-weight:600;
}
.panel-emergency-strayLightWrap{
  margin-top:2px;
}
.panel-emergency-strayLightWrap__label{
  margin:6px 0 4px;
  font-size:13px;
  color:var(--text);
}
.panel-emergency-strayLightWrap .panel-emergency-hint{
  margin-top:4px;
  margin-bottom:0;
}
.canvasEmergencyCanvasToggle--strayPhase .canvasEmergencyCanvasToggle__btn.is-active{
  background:rgba(180,83,9,0.28);
  color:#fdba74;
  box-shadow:inset 0 0 0 1px rgba(180,83,9,0.55);
}
.canvasEmergencyCanvasToggle--strayPhase .canvasEmergencyCanvasToggle__btn sub,
.measureLockedBar__strayPhaseBtn sub{
  font-size:0.72em;
  line-height:0;
  vertical-align:baseline;
  position:relative;
  bottom:-0.15em;
}
.canvasEmergencyCanvasToggle__btn{
  margin:0;
  padding:4px 8px;
  font-size:11px;
  line-height:1.3;
  font-weight:600;
  color:var(--text);
  background:transparent;
  border:none;
  border-radius:4px;
  cursor:pointer;
  white-space:nowrap;
}
.canvasEmergencyCanvasToggle__btn:hover{ background:rgba(255,255,255,0.08); }
.canvasEmergencyCanvasToggle__btn.is-active{
  background:rgba(52,211,153,0.25);
  color:#a7f3d0;
  box-shadow:inset 0 0 0 1px rgba(52,211,153,0.45);
}
.canvasEmergencyCanvasToggle__btn:disabled{ opacity:0.45; cursor:not-allowed; }
.canvasResultsOverlay{
  position:relative;
  top:auto;
  left:auto;
  flex:0 0 auto;
  align-self:flex-start;
  min-width:0;
  pointer-events:none;
  font-size:12px;
  line-height:1.4;
  color:var(--text);
  max-width:85%;
  padding:6px 10px;
  background:rgba(56,56,56,0.95);
  border:1px solid var(--line);
  border-radius:6px;
  box-shadow:0 2px 8px rgba(0,0,0,0.4);
}
.canvasResultsOverlay .canvasResultsOverlay__results{ font-weight:600; }
.canvasResultsOverlay .canvasResultsOverlay__results.ok{ color:#34d399; }
.canvasResultsOverlay .canvasResultsOverlay__results.bad{ color:#f87171; }
.canvasResultsOverlay .canvasResultsOverlay__limits{
  font-weight:500;
  color:var(--muted);
}

.canvasBottomBar{
  position:absolute;
  bottom:0;
  left:0;
  right:0;
  border-top:1px solid var(--line);
  background:var(--panel);
  font-size:12px;
  box-shadow:0 -2px 8px rgba(0,0,0,0.3);
  /* Nad levými overlay doky (.canvasWrap__canvasMainLeftDock z-index 40 / 52) */
  z-index:55;
}
.canvasBottomBar__collapse{
  padding:0;
}
.canvasBottomBar__result{
  font-size:12px;
  font-weight:600;
  color:var(--text);
  white-space:nowrap;
}
.canvasBottomBar__result:empty::before{
  content:"Ē = — / E_min = — / U₀ = —";
  color:var(--muted);
}
.canvasBottomBar__result.ok{ color:#34d399; }
.canvasBottomBar__result.bad{ color:#f87171; }

.canvasBottomBar__summary{
  cursor:pointer;
  font-weight:600;
  color:var(--muted);
  font-size:12px;
  user-select:none;
  padding:8px 12px;
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.canvasBottomBar__summary::-webkit-details-marker,
.canvasBottomBar__summary::marker{ display:none; }
.canvasBottomBar__summary:hover{ color:var(--text); }
.canvasBottomBar__summary:hover .canvasBottomBar__result{ color:inherit; }
.canvasBottomBar__summaryLead{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-width:0;
}
.canvasBottomBar__summaryChevron{
  display:inline-block;
  line-height:1;
  font-size:16px;
}
.canvasBottomBar__collapse[open] .canvasBottomBar__summaryChevron{
  transform:rotate(180deg);
}
.canvasBottomBar__statusLine{
  margin-left:auto;
  color:var(--muted);
  font-size:12px;
  border:none;
  border-radius:0;
  padding:0;
  margin-top:0;
  font-weight:normal;
  text-align:right;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:60%;
}
.canvasBottomBar__statusLine--savedFlash{
  color:#dcfce7;
  background:rgba(22,101,52,0.42);
  border:1px solid #22c55e;
  border-radius:6px;
  padding:3px 8px;
  font-weight:700;
}
.canvasBottomBar__content{
  padding:0 12px 8px 12px;
  display:flex;
  flex-direction:column;
  gap:8px;
  max-height:30vh;
  overflow-y:auto;
}
.canvasBottomBar__row{
  display:flex;
  flex-wrap:wrap;
  align-items:stretch;
  gap:8px;
}
.canvasBottomBar__section{
  flex:1 1 0;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--input-bg, var(--bg));
  box-sizing:border-box;
}
.canvasBottomBar__sectionTitle{
  font-size:10px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.6px;
  color:var(--muted);
  flex-shrink:0;
  margin:0;
}
.canvasBottomBar__sectionBody{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 12px;
}
.canvasBottomBar__sectionRow{
  flex:1 1 100%;
  width:100%;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 12px;
}
.canvasBottomBar .checkRow{
  gap:8px;
  font-size:12px;
  line-height:1.25;
}
.canvasBottomBar .checkRow input{
  width:15px;
  height:15px;
}
/* Oddělení řeší boxy sekcí */
.canvasBottomBar__sectionSep{
  display:none;
}
.canvasBottomBar__row .btn.btnContext,
.canvasBottomBar__row label.btn.btnContext,
.canvasBottomBar__sectionBody .btn.btnContext,
.canvasBottomBar__sectionBody label.btn.btnContext{
  min-height:28px;
  line-height:1;
  box-sizing:border-box;
  margin:0;
}
.canvasBottomBar__floorFileActions{
  display:flex;
  align-items:center;
  gap:6px;
  flex-shrink:0;
}
.canvasBottomBar__floorFileActions .btn.btnContext,
.canvasBottomBar__floorFileActions label.btn.btnContext{
  min-height:28px;
  padding:2px 8px;
  font-size:12px;
  font-weight:500;
}
.canvasBottomBar__sep{
  width:1px;
  height:20px;
  background:var(--line);
  margin:0 4px;
  flex-shrink:0;
}
.canvasBottomBar__slider{
  display:flex;
  align-items:center;
  gap:8px;
}
.canvasBottomBar__slider label,
.canvasBottomBar__scale label{
  margin:0;
  white-space:nowrap;
  color:var(--text);
  font-size:12px;
  font-weight:500;
}
.canvasBottomBar__slider input[type="range"]{
  width:80px;
  min-width:80px;
}
/* Stejný vzhled jako .canvasBottomBar__scale input; užší (max 100). Specificita proti globálnímu input[type=number]. */
.canvasBottomBar__slider input[type="number"].canvasBottomBar__opacityPct{
  width:34px;
  min-width:34px;
  padding:2px 4px;
  font-size:12px;
  box-sizing:border-box;
  text-align:right;
  -moz-appearance:textfield;
  appearance:textfield;
}
.canvasBottomBar__slider input[type="number"].canvasBottomBar__opacityPct::-webkit-outer-spin-button,
.canvasBottomBar__slider input[type="number"].canvasBottomBar__opacityPct::-webkit-inner-spin-button{
  -webkit-appearance:none;
  margin:0;
}
.canvasBottomBar__opacityPctUnit{
  font-size:12px;
  color:var(--muted);
  flex-shrink:0;
  margin-left:-4px;
}
.canvasBottomBar__scaleWithTool .canvasBottomBar__toolBtn{
  width:28px;
  height:28px;
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--line);
  border-radius:6px;
  background:var(--bg);
  color:var(--muted);
  cursor:pointer;
  flex-shrink:0;
}
.canvasBottomBar__scaleWithTool .canvasBottomBar__toolBtn:hover{
  border-color:var(--muted);
  background:var(--hover);
  color:var(--text);
}
.canvasBottomBar__scaleWithTool .canvasBottomBar__toolBtn.active{
  outline:2px solid var(--focus);
  outline-offset:1px;
  border-color:var(--focus);
  color:var(--focus);
}
.canvasBottomBar__scaleWithTool .canvasBottomBar__toolBtn svg{ width:16px; height:16px; }
.canvasBottomBar__scale{
  display:flex;
  align-items:center;
  gap:6px;
}
.canvasBottomBar__scale input{
  width:48px;
  min-width:48px;
  padding:2px 6px;
  font-size:12px;
  box-sizing:border-box;
  -moz-appearance:textfield;
  appearance:textfield;
}
.canvasBottomBar__scale input.canvasBottomBar__roomScale{
  width:72px;
  min-width:72px;
}
.canvasBottomBar__scaleUnit{
  font-size:11px;
  color:var(--muted);
  white-space:nowrap;
}
.canvasBottomBar__scale input::-webkit-outer-spin-button,
.canvasBottomBar__scale input::-webkit-inner-spin-button{
  -webkit-appearance:none;
  margin:0;
}
.canvasBottomBar__status{
  flex:1;
  min-width:120px;
  color:var(--muted);
  font-size:12px;
  padding:4px 0;
}
.canvasBottomBar__tips{
  margin-top:2px;
}
.canvasBottomBar__tips summary{
  cursor:pointer;
  font-weight:600;
  color:var(--muted);
  font-size:12px;
  user-select:none;
}
.canvasBottomBar__tips .hintBox{
  margin-top:6px;
  margin-bottom:0;
}

/* Nová místnost (mobil): kompaktní modal jen nadpis + tlačítka */
.new-room-floorplan-modal .protocol-preview-box {
  width: min(286px, calc(100vw - 32px));
  max-width: 90vw;
  flex: 0 0 auto;
  box-sizing: border-box;
}
.new-room-floorplan-modal__header {
  padding: 8px 10px;
  gap: 4px;
}
.new-room-floorplan-modal__header h2 {
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.2;
  padding-right: 4px;
}
.new-room-floorplan-modal__footer {
  padding: 8px 10px 10px;
  gap: 6px;
}
.new-room-floorplan-modal__footer .protocol-preview-group--stack {
  gap: 6px;
  padding: 4px 6px;
}
.new-room-floorplan-modal__footer .protocol-preview-group--actions .btn {
  min-height: 38px;
  font-size: 13px;
  padding: 8px 10px;
}
.roomRectDimensions__row{
  display:flex;
  align-items:center;
  gap:10px;
}
.roomRectDimensions__row input{
  flex:1 1 0;
  min-width:0;
}
.roomRectDimensions__times{
  color:var(--muted);
  font-size:20px;
  line-height:1;
  user-select:none;
}

/* V modalu Zobrazení (režim Měření) skrýt nahrát/smazat půdorys */
.measure-display-modal .canvasBottomBar__floorFileActions,
.measure-display-modal .canvasBottomBar__floorFileActions + .canvasBottomBar__sep{
  display:none !important;
}

canvas{ width:100%; height:100%; display:block; background:#fff; }

.floatingInput{
  position:absolute; left:14px; top:14px;
  width:260px;
  background:var(--panel); border:1px solid var(--line); border-radius:14px;
  box-shadow:0 8px 24px rgba(0,0,0,.4);
  padding:10px;
  z-index:58;
}
.floatingInput__close{
  display:none;
}
.floatingInput.hidden{ display:none; }
/* Jeden viditelný obrys: rámeček má panel, vstup bez druhého borderu (na mobilu po zoomu působilo „dvojitě”). */
.floatingInput #floatingValue{
  border:none;
  border-radius:8px;
  background:var(--input-bg);
}
.floatingInput #floatingValue:focus-visible{
  outline:2px solid var(--primaryText, #111827);
  outline-offset:2px;
}
.floatingInput__title{ font-weight:700; margin-bottom:8px; }
.floatingInput__actions{ display:flex; gap:8px; margin-top:8px; flex-wrap: wrap; justify-content: flex-end; }
/* Mobil / tablet: zadání hodnoty bodu – stejný záměr jako kompaktní showPrompt (jen pole + OK + Zrušit) */
.floatingInput--mobile-compact .floatingInput__title,
.floatingInput--mobile-compact .hint.small {
  display: none;
}
.floatingInput--mobile-compact.floatingInput--pointTitle .floatingInput__title {
  display: block;
  font-weight: 600;
  font-size: 0.82rem;
  text-align: center;
  margin: 0 0 4px;
  padding: 0 26px;
  max-width: min(240px, 88vw);
  line-height: 1.2;
  word-break: break-word;
}
.floatingInput--mobile-compact #fiSkip {
  display: none !important;
}
.floatingInput--mobile-compact #fiStop {
  display: none !important;
}
/* .btn.btnContext má display:inline-flex — přebíjí výchozí [hidden]; u kót místnosti fiNext musí zmizet */
#fiNext[hidden] {
  display: none !important;
}
.floatingInput--mobile-compact .floatingInput__close{
  display:flex;
  position:absolute;
  top:2px;
  right:2px;
  z-index:2;
  box-sizing:border-box;
  width:26px;
  height:26px;
  padding:0;
  margin:0;
  align-items:center;
  justify-content:center;
  border:none;
  background:transparent;
  color:var(--muted);
  font-size:20px;
  line-height:1;
  border-radius:8px;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.floatingInput--mobile-compact .floatingInput__close:hover{
  background:var(--hover);
  color:var(--text);
}
/* Nad měřicí spodní lištou (locked/unlocked ~48px + mezery + safe area) */
.floatingInput--mobile-compact {
  left: 50% !important;
  top: auto !important;
  bottom: calc(84px + max(0px, env(safe-area-inset-bottom, 0px))) !important;
  transform: translateX(-50%);
  width: auto;
  max-width: calc(100vw - 16px);
  min-width: 0;
  padding: 6px 8px 7px;
  display: flex;
  flex-direction: column;
  align-items: center;
  border-radius: 10px;
  z-index: 58;
}
.floatingInput--mobile-compact #floatingValue {
  font-size: 16px;
  box-sizing: border-box;
  width: 7ch;
  min-width: 7ch;
  max-width: min(7ch, calc(100vw - 40px));
  padding: 5px 6px;
  text-align: center;
}
.floatingInput--mobile-compact .floatingInput__actions {
  margin-top: 5px;
  width: auto;
  justify-content: center;
  gap: 5px;
  flex-wrap: nowrap;
}
.floatingInput--mobile-compact .floatingInput__actions .btn{
  padding: 5px 10px;
  font-size: 14px;
  min-height: 0;
}

.ctxMenu{
  position:fixed;
  background:var(--panel); border:1px solid var(--line);
  border-radius:12px;
  box-shadow:0 10px 28px rgba(0,0,0,.4);
  padding:6px;
  z-index:60;
  min-width:180px;
}
.ctxMenu.hidden{ display:none; }
.ctxItem{ padding:8px 10px; border-radius:10px; cursor:pointer; font-size:13px; color:var(--text); }
.ctxItem:hover{ background:var(--hover); }
.ctxItem.danger{ color:#f87171; }


.checkRow{
  display:flex;
  gap:10px;
  align-items:center;
  font-size:13px;
  color:var(--text);
}
.checkRow input{ width:16px; height:16px; }


input:disabled{
  background:#2d2d2d;
  color:var(--muted);
  cursor:not-allowed;
  opacity:0.7;
}

.hiddenBtn{ display:none !important; }
.sidebarGroupTitle{
  font-size:11px;
  font-weight:800;
  letter-spacing:0.6px;
  text-transform:uppercase;
  color:var(--muted);
  margin:6px 2px 6px;
  opacity:0.9;
}
.mutedNote{ font-size:12px; color:var(--muted); padding:6px 2px; }
.obstacleList{ list-style:none; margin:8px 0 0; padding:0; display:flex; flex-direction:column; gap:4px; }
.obstacleList__item{ display:flex; align-items:center; gap:8px; padding:4px 8px; background:var(--input-bg); border-radius:8px; font-size:12px; }
.obstacleList__label{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.obstacleList__del{ width:24px; height:24px; padding:0; line-height:1; font-size:16px; flex-shrink:0; }

.hiddenBtn{ display:none !important; }

/* Horní panel nástrojů – pevně nahoře nad plátnem (CAD-style tool panel)
 * Nad .canvasModeBarModal (30), jinak celý kontext lišty včetně rozbaleného menu kót zůstane POD
 * průhlednou plnou plochou modalu a výsledkový HUD (uvnitř .canvasWrap__body) překrývá menu. */
.canvasTopBar{
  flex-shrink:0;
  width:100%;
  border-bottom:1px solid var(--line);
  background:var(--panel);
  font-size:12px;
  box-shadow:0 2px 8px rgba(0,0,0,0.3);
  z-index:35;
}
.canvasToolbar { min-height: 44px; }
.canvasTopBar__row,
.canvasToolbar__row{
  display:flex;
  flex-wrap:wrap;
  align-items:stretch;
  gap:0 6px;
  padding:6px 12px;
  min-height: 44px;
  box-sizing: border-box;
}
.canvasTopBar__section,
.canvasToolbar__section{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:4px;
}
.canvasTopBar__section--view{
  align-items:center;
}
.canvasToolbar__section:first-child .canvasTopBar__label { display: none; }
.canvasTopBar__label{
  font-size:10px;
  font-weight:600;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:0.05em;
  white-space:nowrap;
  padding:0 2px;
}
.canvasTopBar__labelRow{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:0 2px;
}
.canvasTopBar__helpBtn{
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:14px;
  height:14px;
  margin:0;
  padding:0;
  font-family:inherit;
  font-size:9px;
  font-weight:700;
  line-height:1;
  color:var(--muted);
  border:1px solid var(--line);
  border-radius:50%;
  background:var(--panel);
  cursor:help;
  user-select:none;
  flex-shrink:0;
  position:relative;
}
.canvasTopBar__helpBtn:hover,
.canvasTopBar__helpBtn:focus-visible{
  color:var(--text);
  border-color:var(--muted);
  outline:none;
}
.canvasTopBar__helpBtn:focus-visible{
  outline:2px solid var(--primary);
  outline-offset:1px;
}
.canvasTopBar__helpBtn[data-tooltip]::after{
  content:attr(data-tooltip);
  position:absolute;
  left:50%;
  top:calc(100% + 6px);
  transform:translateX(-50%);
  z-index:10050;
  width:max-content;
  max-width:min(260px, 70vw);
  padding:6px 8px;
  font-size:11px;
  font-weight:400;
  line-height:1.35;
  color:var(--text);
  text-transform:none;
  letter-spacing:normal;
  text-align:left;
  white-space:normal;
  border:1px solid var(--line);
  border-radius:6px;
  background:var(--panel);
  box-shadow:0 4px 14px rgba(0,0,0,0.12);
  opacity:0;
  pointer-events:none;
  transition:opacity 0.12s ease;
}
.canvasTopBar__helpBtn[data-tooltip]:hover::after,
.canvasTopBar__helpBtn[data-tooltip]:focus-visible::after{
  opacity:1;
}
.canvasTopBar__group,
.canvasToolbar__group{
  display:flex;
  gap:6px;
  align-items:center;
}
.canvasTopBar__groupSep{
  width:1px;
  align-self:stretch;
  min-height:28px;
  margin:0 2px;
  flex-shrink:0;
  background:var(--line);
}
.canvasToolbar__separator{
  width:1px;
  height:20px;
  background:var(--line);
  margin:0 8px;
  align-self:center;
  flex-shrink:0;
}
.canvasTopBar__sep{
  width:1px;
  flex-shrink:0;
  margin:0 4px;
  align-self:stretch;
  min-height:1.5em;
  height:auto;
  background:var(--line);
}
.canvasToolbar__separator:not(.canvasTopBar__sep){ margin: 0 8px; }
.canvasTopBar__taskSection{ display:flex; }

.canvasToolbar__details{
  position:relative;
}
/* Otevřené menu kót: nad výsledky na canvasu (28) a panelem režimu měření (25), viz .canvasToolbar__detailsMenu--floating */
.canvasToolbar__details[open]{
  z-index:70;
}
.canvasToolbar__detailsSummary{
  list-style:none;
}
.canvasToolbar__details.canvasToolbar__details--disabled > .canvasToolbar__detailsSummary{
  pointer-events:none;
  opacity:0.45;
  cursor:not-allowed;
}
.canvasToolbar__detailsSummary::-webkit-details-marker{ display:none; }
.canvasToolbar__details[open] > .canvasToolbar__detailsSummary{
  background:rgba(80,120,255,0.15);
  border:1px solid rgba(80,120,255,0.35);
}
.canvasToolbar__detailsMenu{
  position:absolute;
  z-index:60;
  top:100%;
  left:0;
  margin-top:4px;
  min-width:12rem;
  padding:4px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:8px;
  box-shadow:0 4px 14px rgba(0,0,0,0.18);
  display:flex;
  flex-direction:column;
  gap:2px;
}
/* Nad plátnem a ořezem .canvasWrap – pozice left/top doplňuje main.js */
.canvasToolbar__detailsMenu--floating{
  position:fixed;
  z-index:70;
  top:auto;
  left:auto;
  margin-top:0;
}
.canvasToolbar__detailsItem{
  text-align:left;
  padding:8px 10px;
  border-radius:6px;
  border:none;
  background:transparent;
  cursor:pointer;
  font:inherit;
  color:var(--text);
}
.canvasToolbar__detailsItem:hover{
  background:rgba(255,255,255,0.06);
}
.canvasToolbar__detailsItem:disabled{
  opacity:0.45;
  cursor:not-allowed;
}

.toolIcon{
  width:32px;
  height:32px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid transparent;
  background:var(--panel);
  color:var(--text);
  border-radius:6px;
  cursor:pointer;
  padding:0;
  flex-shrink:0;
}
.toolIcon svg{ width:20px; height:20px; display:inline-block; }
.toolIcon:hover{
  background:rgba(255,255,255,0.06);
  border-color:var(--muted);
}
.toolIcon.active{
  background:rgba(80,120,255,0.15);
  border:1px solid rgba(80,120,255,0.35);
  color:inherit;
}
.toolIcon.active svg{ color:inherit; }
.toolIcon:disabled{
  opacity:0.45;
  cursor:not-allowed;
  color:var(--muted);
}
.toolIcon:disabled svg{ color:inherit; }
.toolIcon--opening{ color:var(--text); border-color:var(--line); }
.toolIcon--opening:hover{ border-color:var(--muted); background:rgba(255,255,255,0.06); }
.toolIcon--opening.active{ background:rgba(80,120,255,0.15); border-color:rgba(80,120,255,0.35); color:inherit; }
.toolIcon--opening svg{ color:inherit; }
.toolIcon--object { color:var(--muted); border-color:var(--line); }
.toolIcon--object:hover { border-color:var(--muted); background:rgba(255,255,255,0.06); }
.toolIcon--object.active { background:rgba(80,120,255,0.15); border-color:rgba(80,120,255,0.35); color:inherit; }
.toolIcon--object svg{ color:inherit; }
.toolIcon--taskArea{ color:#f59e0b; border-color:rgba(245,158,11,0.55); }
.toolIcon--taskArea:hover{ border-color:#f59e0b; background:rgba(245,158,11,0.12); }
.toolIcon--taskArea.active{ background:rgba(245,158,11,0.18); border-color:#f59e0b; color:#f59e0b; }
.toolIcon--taskArea svg{ color:inherit; }
.toolIcon--danger{ color:#f87171; border-color:rgba(248,113,113,0.5); }
.toolIcon--danger:hover{ border-color:#f87171; background:rgba(255,80,80,0.12); }
.toolIcon--danger svg{ color:inherit; }
.toolIcon--text { gap: 4px; padding: 6px 10px; }
.toolIcon--text .toolIcon__label { font-size: 12px; white-space: nowrap; }

.canvasToolbar__zoom,
.canvasToolbar__zoomLabel,
.canvasToolbar__zoomPct{ display:inline; }
.canvasToolbar__zoom input[type="range"]{
  width:72px;
  height:6px;
  accent-color:var(--primary);
}

.toolResult{
  margin-left:8px;
  padding:6px 10px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  border:1px solid var(--line);
  background:var(--panel);
  color:var(--text);
  white-space:nowrap;
}
.toolResult.ok{
  border-color: rgba(52,211,153,0.6);
  color: #34d399;
}
.toolResult.bad{
  border-color: rgba(248,113,113,0.6);
  color: #f87171;
}

/* Autocomplete (např. typ prostoru v evidenci) */
.autocomplete {
  position: relative;
  width: 100%;
}
.autocomplete__input {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--btnLine);
  border-radius: 10px;
  background: var(--input-bg);
  color: var(--text);
  outline: none;
}
.autocomplete__input:focus {
  border-color: var(--primary);
}
.autocomplete__dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  margin-top: 4px;
  max-height: 300px;
  overflow-y: auto;
  background: var(--panel);
  border: 1px solid var(--btnLine);
  border-radius: 10px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  z-index: 1000;
  display: none;
}
.autocomplete__dropdown.active {
  display: block;
}
.autocomplete__item {
  padding: 10px 12px;
  cursor: pointer;
  border-bottom: 1px solid var(--line);
  transition: background 0.15s;
  color: var(--text);
}
.autocomplete__item:last-child {
  border-bottom: none;
}
.autocomplete__item:hover,
.autocomplete__item.selected {
  background: var(--hover);
}
.autocomplete__item-title {
  font-weight: 600;
  font-size: 13px;
  color: var(--text);
  margin-bottom: 4px;
}
.autocomplete__item-meta {
  font-size: 11px;
  color: var(--muted);
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.autocomplete__item-ref {
  font-weight: 600;
}
.autocomplete__info {
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
  padding: 6px 0;
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.autocomplete__info-item {
  display: flex;
  gap: 4px;
}

/* Autosave – modal (vystředěný box přes overlay) */
.autosaveModal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.autosaveModal.hidden { display: none !important; }
.autosaveModal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  cursor: pointer;
}
.autosaveModal__title { margin: 0 0 4px 0; font-size: 1.1rem; font-weight: 600; }
.autosaveModal__box {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 20px 24px;
  max-width: 420px;
  width: 100%;
  background: #422006;
  border: 1px solid #b45309;
  border-radius: 14px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
  font-size: 14px;
  color: #fef3c7;
}
.autosaveModal__text { margin: 0; flex: 1; }
.versionCompareMeta {
  margin: 12px 0 0 0;
  padding: 10px 12px;
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.18);
  font-size: 0.86rem;
  line-height: 1.45;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.versionCompareMeta[hidden] { display: none !important; }
.versionCompareMeta__row {
  display: grid;
  grid-template-columns: minmax(7.5rem, 38%) 1fr;
  gap: 8px 12px;
  align-items: baseline;
}
.versionCompareMeta__label {
  opacity: 0.78;
  font-weight: 500;
}
.versionCompareMeta__value {
  font-variant-numeric: tabular-nums;
  word-break: break-word;
}
.autosaveModal__actions { display: flex; gap: 12px; justify-content: flex-end; flex-shrink: 0; flex-wrap: wrap; }
.autosaveModal__actions .btn { flex-shrink: 0; }

/* Obecná skrytá třída */
.hidden { display: none !important; }

/* Modal náhledu protokolu */
.protocol-preview-modal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.protocol-preview-modal.hidden { display: none !important; }

/* Náhled protokolu jako celoobrazovkový panel pod hlavním menu (ne modal) */
body.protocol-preview-active {
  overflow: hidden;
}
body.protocol-preview-active #mainLayout {
  display: none !important;
}
body.protocol-preview-active #protocolPreviewModal:not(.hidden) {
  position: fixed;
  top: var(--protocol-preview-top, 0px);
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9000;
  padding: 0;
  align-items: stretch;
  justify-content: stretch;
}
body.protocol-preview-active #protocolPreviewModal .protocol-preview-overlay {
  display: none !important;
}
body.protocol-preview-active #protocolPreviewModal .protocol-preview-box {
  max-width: none;
  max-height: none;
  width: 100%;
  height: 100%;
  border-radius: 0;
  border: none;
  box-shadow: none;
  flex: 1;
  min-height: 0;
}
body.protocol-preview-active #protocolPreviewModal .protocol-preview-layout {
  flex: 1;
  min-height: 0;
  height: auto;
  max-height: none;
}

.protocol-preview-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.5);
  cursor: pointer;
}
.protocol-preview-box {
  position: relative;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5);
  max-width: 210mm;
  width: 100%;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
/* Dialog: tělo přímo v boxu scrolluje v rámci max-height (box má overflow:hidden) */
.protocol-preview-box > .protocol-preview-body:not(.protocol-intro-editor-body) {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  margin: 0;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.protocol-preview-header {
  padding: 8px 12px 8px 16px;
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
  min-width: 0;
}
.protocol-preview-header--split {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.protocol-preview-header__left {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.protocol-preview-header__titleRow {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 14px;
  min-width: 0;
}
.protocol-preview-type-switch {
  display: inline-flex;
  flex-shrink: 0;
  padding: 2px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg) 88%, var(--muted) 12%);
}
.protocol-preview-type-switch.hidden {
  display: none;
}
.protocol-preview-type-switch__btn {
  border: none;
  background: transparent;
  padding: 4px 12px;
  border-radius: 6px;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  line-height: 1.35;
  white-space: nowrap;
  transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
.protocol-preview-type-switch__btn:hover:not(:disabled) {
  color: var(--text, inherit);
}
.protocol-preview-type-switch__btn[aria-selected="true"] {
  background: var(--bg, #fff);
  color: var(--text, inherit);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}
.protocol-preview-type-switch__btn:disabled {
  opacity: 0.5;
  cursor: wait;
}
.protocol-preview-header__right {
  margin-left: auto;
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.protocol-preview-header__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px;
}
.protocol-preview-header__row--options {
  justify-content: flex-start;
}
.protocol-preview-header__row--title {
  justify-content: space-between;
  align-items: flex-start;
}
.protocol-preview-header__row--main {
  display: grid;
  grid-template-columns: var(--protocol-preview-cols, 248px minmax(0, 1fr) 280px);
  align-items: center;
  min-width: 0;
  column-gap: 0;
}
.protocol-preview-header__col--sidebar {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 2px;
  min-width: 0;
  padding: 0 10px;
  box-sizing: border-box;
}
.protocol-preview-header__col--sidebar .protocol-preview-header__titleRow {
  justify-content: center;
  width: 100%;
}
.protocol-preview-header__col--sidebar .protocol-preview-saved-at {
  font-size: 0.75rem;
  line-height: 1.25;
  max-width: 100%;
}
.protocol-preview-header__col--main {
  min-width: 0;
  padding: 0 10px;
  box-sizing: border-box;
}
.protocol-preview-header__col--nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 0 8px 0 4px;
  box-sizing: border-box;
}
.protocol-preview-header__row--main .protocol-preview-header__close {
  flex-shrink: 0;
  margin: 0;
}
.protocol-preview-header__titleWrap {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.protocol-preview-header__row--primaryOptions {
  justify-content: flex-start;
  gap: 12px 16px;
}
.protocol-preview-controls {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: stretch;
}
.protocol-preview-group {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--bg);
  padding: 6px 8px;
  min-width: 0;
  width: 100%;
}
.protocol-preview-group--stack {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
}
.protocol-preview-group__title {
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.4px;
}
.protocol-preview-option--select {
  flex-wrap: wrap;
}
.protocol-preview-option--select select {
  margin-left: 2px;
}
.protocol-preview-header h2 {
  margin: 0;
  font-size: 1.05rem;
  white-space: nowrap;
}
.protocol-preview-header__col--sidebar .protocol-preview-header__titleRow {
  flex-wrap: wrap;
  gap: 6px 8px;
}
.protocol-preview-saved-at {
  font-size: 0.85rem;
  color: var(--muted, #666);
}
.protocol-preview-warnings {
  margin: 2px 0 0 0;
  font-size: 0.85rem;
  color: #f97373;
  text-align: right;
  max-width: min(52vw, 760px);
}
.protocol-preview-option {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 0.85rem;
  line-height: 1.2;
  white-space: normal;
}
.protocol-preview-custom-appendices {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.protocol-preview-custom-appendix {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.protocol-preview-custom-appendix__check {
  flex: 0 0 auto;
  margin: 0;
}
.protocol-preview-custom-appendix__title {
  flex: 1 1 auto;
  min-width: 0;
  font-size: 0.82rem;
  line-height: 1.2;
  padding: 3px 6px;
  border: 1px solid var(--line, #d9dde3);
  border-radius: 4px;
  background: var(--panel, #fff);
}
.protocol-preview-custom-appendix__remove {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  padding: 0;
  border: none;
  border-radius: 4px;
  background: transparent;
  color: var(--muted, #666);
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
}
.protocol-preview-custom-appendix__remove:hover {
  color: #b91c1c;
  background: rgba(185, 28, 28, 0.08);
}
.protocol-preview-insert-appendix {
  align-self: flex-start;
  margin: 2px 0 4px;
}
.protocol-preview-body {
  padding: 0;
  outline: none;
  margin: 0 auto;
}
.protocol-preview-exact {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 8px 10px 10px;
  background: #eef1f5;
  overflow: hidden;
}
.protocol-preview-exact__status {
  font-size: 0.85rem;
  color: var(--muted, #666);
  flex: 0 0 auto;
}
.protocol-preview-exact__frame {
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  height: 100%;
  border: 1px solid var(--line, #d9dde3);
  border-radius: 8px;
  background: var(--panel);
}
/* Náhled protokolu: světle šedé plátno, dokument jako bílá „stránka“ */
#protocolPreviewBody {
  background: transparent;
  overflow-x: hidden;
  position: relative;
}
#protocolPreviewViewport {
  background: #eef1f5;
}
#protocolPreviewBody .protocol-pdf {
  width: min(210mm, 100%);
  max-width: 100%;
  /* Stejné boční okraje jako Playwright PDF (18 mm), ne užší „náhledové“ 10 mm */
  padding-left: 18mm;
  padding-right: 18mm;
  box-sizing: border-box;
  margin: 0 auto;
  background: #fff;
  color: #1a1a1a;
  position: relative;
  box-shadow: 0 1px 6px rgba(15, 23, 42, 0.1);
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split {
  box-shadow: none;
}

/* Název prostoru v hlavičce místnosti – vždy vlevo (nadřadí staré flex centrování) */
#protocolPreviewBody .protocol-pdf.protocol-pdf--style-v2 .room-header__titles,
#protocolPreviewBody .protocol-pdf.protocol-pdf--style-v2 .room-header > div:not(.room-header__badges),
#protocolPreviewBody .protocol-pdf.protocol-pdf--style-v2 .room-title {
  text-align: left !important;
  justify-self: start !important;
}

/* Náhled (klasický layout): bez vodorovné čáry pod každou sekcí – v PDF zůstává podle pdf-print.css */
#protocolPreviewBody .protocol-pdf:not(.protocol-pdf--style-v2) .section {
  border-bottom: none !important;
}
/* Tabulky vyhodnocení zón (task / okolí / pozadí): vycentrovat buňky v náhledu (nadřadit globální styly). */
#protocolPreviewBody .protocol-pdf .task-zone-table th,
#protocolPreviewBody .protocol-pdf .task-zone-table td {
  text-align: center;
  vertical-align: middle;
}
#protocolPreviewBody .protocol-pdf .task-zone-table tbody td:nth-child(5) {
  font-weight: 700;
}
#protocolPreviewBody .protocol-pdf .task-zone-table .evaluation-table__status--pass {
  color: #0d5c1f;
  font-weight: 700;
}
#protocolPreviewBody .protocol-pdf .task-zone-table .evaluation-table__status--fail {
  color: #b00020;
  font-weight: 700;
}
#protocolPreviewBody .protocol-pdf .task-zone-table .evaluation-table__value-fail {
  color: #b00020;
  font-weight: 700;
}
#protocolPreviewBody .protocol-pdf .emergency-outside-scope-table tbody td.emergency-outside-scope-table__requirement {
  text-align: left !important;
  white-space: normal;
}
#protocolPreviewBody .protocol-pdf .emergency-requirements-limits-table tbody td:first-child {
  text-align: left !important;
  white-space: normal;
}
/* Stejná šířka všech tabulek zón v sekci místnosti (náhled). */
#protocolPreviewBody .protocol-pdf .room-block .room-tables > .task-mode-results,
#protocolPreviewBody .protocol-pdf .room-block .room-tables > .evaluation-block,
#protocolPreviewBody .protocol-pdf .room-section-block--evaluation > .task-mode-results,
#protocolPreviewBody .protocol-pdf .room-section-block--evaluation > .evaluation-block {
  width: 100%;
  max-width: 100%;
  align-self: stretch;
  box-sizing: border-box;
}

#protocolPreviewBody .protocol-pdf .room-section-block--evaluation > .evaluation-block + .evaluation-block {
  margin-top: 11px;
}

#protocolPreviewBody .protocol-pdf .room-section-block--evaluation .note-box {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
#protocolPreviewBody .protocol-pdf .task-mode-results .evaluation-block {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
#protocolPreviewBody .protocol-pdf .task-zone-table {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split {
  padding-left: 0;
  padding-right: 0;
  background: transparent;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .page-body {
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split.protocol-pdf--style-v2 {
  padding-left: 0;
  padding-right: 0;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-first-page,
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-rest {
  width: min(210mm, 100%);
  max-width: 100%;
  margin: 0 auto;
  box-sizing: border-box;
  background: #fff;
  box-shadow: 0 1px 5px rgba(0, 0, 0, 0.12);
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-first-page {
  padding-left: 18mm;
  padding-right: 18mm;
}
/* Zbytek protokolu: 18 mm (Playwright) + vnitřní page-body — stejný model jako PDF */
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-rest {
  padding-left: calc(18mm + 8mm);
  padding-right: calc(18mm + 8mm);
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--style-v2.protocol-pdf--first-page-split .protocol-preview-rest {
  padding-left: calc(18mm + 5mm);
  padding-right: calc(18mm + 5mm);
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-first-page {
  padding-top: 12mm;
  padding-bottom: 22mm;
  min-height: 297mm;
  overflow: hidden;
  box-sizing: border-box;
  flex-shrink: 0;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-first-page__content {
  min-height: var(--pdf-title-body-height);
  position: relative;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .title-page__footer {
  --cover-footer-outdent: 10mm;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-first-page__content {
  padding-left: 8mm;
  padding-right: 8mm;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--style-v2.protocol-pdf--first-page-split .protocol-preview-first-page__content {
  padding-left: 1mm;
  padding-right: 1mm;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-rest {
  padding-top: 12mm;
  padding-bottom: 12px;
  flex-shrink: 0;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split.protocol-pdf--header-in-rest > .page-header.page-header--running {
  display: none;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split.protocol-pdf--header-in-rest .protocol-preview-rest > .page-header.page-header--running {
  display: flex;
  position: sticky;
  top: 0;
  z-index: 3;
  background: #fff;
  margin: 0 0 8px 0;
}
#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split .protocol-preview-rest::before {
  display: none;
  content: none;
}
#protocolPreviewBody .protocol-pdf,
.protocol-intro-editor-canvas .protocol-pdf {
  padding-top: 20mm;
  padding-bottom: 22mm;
  min-height: 297mm;
  box-sizing: border-box;
}

#protocolPreviewBody .protocol-pdf .page-header.page-header--running,
.protocol-intro-editor-canvas .protocol-pdf .page-header.page-header--running {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
}

#protocolPreviewBody .protocol-pdf.protocol-pdf--running-header .page-body,
.protocol-intro-editor-canvas .protocol-pdf.protocol-pdf--running-header .page-body {
  padding-top: 12mm;
}

#protocolPreviewBody .protocol-pdf .title-page::after {
  display: none;
  content: none;
}

#protocolPreviewBody .protocol-pdf.protocol-pdf--first-page-split {
  padding-top: 0;
  padding-bottom: 0;
}

#protocolPreviewBody .protocol-pdf .title-page.title-page--cover-footer,
#protocolPreviewBody .protocol-pdf .title-page:has(.title-page__footer) {
  height: var(--pdf-title-body-height);
  min-height: var(--pdf-title-body-height);
  max-height: var(--pdf-title-body-height);
  overflow: visible;
}

.protocol-intro-editor-canvas .protocol-pdf .title-page.title-page--cover-footer,
.protocol-intro-editor-canvas .protocol-pdf .title-page:has(.title-page__footer) {
  height: var(--pdf-title-body-height);
  min-height: var(--pdf-title-body-height);
  max-height: var(--pdf-title-body-height);
  overflow: visible;
}

#protocolPreviewBody .protocol-pdf .title-page.title-page--cover-footer .title-page__footer,
#protocolPreviewBody .protocol-pdf .title-page:has(.title-page__footer) .title-page__footer,
.protocol-intro-editor-canvas .protocol-pdf .title-page.title-page--cover-footer .title-page__footer,
.protocol-intro-editor-canvas .protocol-pdf .title-page__footer {
  position: absolute;
  left: calc(-1 * var(--cover-footer-outdent, 4mm));
  right: 0;
  bottom: var(--pdf-cover-footer-bottom);
  width: auto;
  margin: 0;
  flex: none;
}

#protocolPreviewBody .protocol-pdf.protocol-pdf--running-header .title-page:has(.title-page__footer),
.protocol-intro-editor-canvas .protocol-pdf.protocol-pdf--running-header .title-page:has(.title-page__footer) {
  height: var(--pdf-title-body-height);
  min-height: var(--pdf-title-body-height);
  max-height: var(--pdf-title-body-height);
}
#protocolPreviewBody .protocol-pdf .toc {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid #d7dee8;
}
#protocolPreviewBody .protocol-pdf .appendix-watermark-note {
  font-size: 9pt;
  color: #555;
  margin-bottom: 8px;
}
#protocolPreviewBody .protocol-pdf .appendix-pdf-pages {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
#protocolPreviewBody .protocol-pdf .appendix-pdf-page-img {
  width: 100%;
  height: auto;
  max-width: 100%;
  display: block;
  border: 1px solid var(--line, #ddd);
  border-radius: 4px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
/* Vlastní příloha v náhledu: 1 list ≈ A4, výběr / otočení / měřítko */
#protocolPreviewBody .protocol-pdf .protocol-custom-appendix-sheet {
  break-before: page;
  page-break-before: always;
  break-inside: avoid;
  page-break-inside: avoid;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  min-height: 240mm;
  max-height: 255mm;
  margin: 16px 0;
  padding: 8px 0 12px;
  overflow: hidden;
  cursor: pointer;
}
.protocol-custom-appendix-editor {
  position: absolute;
  z-index: 45;
  pointer-events: none;
  box-sizing: border-box;
  border: 2px solid #2563eb;
  border-radius: 2px;
  box-shadow: 0 0 0 1px color-mix(in srgb, #2563eb 35%, transparent);
  display: none;
}
.protocol-custom-appendix-editor__handle {
  position: absolute;
  width: 12px;
  height: 12px;
  margin: -6px 0 0 -6px;
  background: #fff;
  border: 2px solid #2563eb;
  border-radius: 2px;
  pointer-events: auto;
  box-sizing: border-box;
  z-index: 2;
}
.protocol-custom-appendix-editor__handle--nw {
  left: 0;
  top: 0;
  cursor: nwse-resize;
}
.protocol-custom-appendix-editor__handle--ne {
  left: 100%;
  top: 0;
  cursor: nesw-resize;
}
.protocol-custom-appendix-editor__handle--se {
  left: 100%;
  top: 100%;
  cursor: nwse-resize;
}
.protocol-custom-appendix-editor__handle--sw {
  left: 0;
  top: 100%;
  cursor: nesw-resize;
}
.protocol-custom-appendix-editor__rotate {
  position: absolute;
  left: 50%;
  top: -34px;
  transform: translateX(-50%);
  pointer-events: auto;
  white-space: nowrap;
  font-size: 0.72rem;
  padding: 3px 8px;
  z-index: 3;
}
#protocolPreviewBody .protocol-pdf .protocol-custom-appendix-sheet__title {
  flex: 0 0 auto;
  margin: 0 0 8px;
  font-size: 10pt;
  font-weight: 600;
  color: #333;
}
#protocolPreviewBody .protocol-pdf .protocol-custom-appendix-sheet__frame {
  flex: 1 1 auto;
  min-height: 180mm;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border: 1px solid #e5e7eb;
  background: #fafafa;
  position: relative;
}
#protocolPreviewBody .protocol-pdf .protocol-custom-appendix-sheet__img {
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  display: block;
  transform-origin: center center;
  border: none;
  border-radius: 0;
  box-shadow: none;
}
#protocolPreviewBody .protocol-pdf .protocol-custom-appendix-sheet--selected {
  outline: none;
}
#protocolPreviewBody .protocol-pdf .protocol-custom-appendix-sheet--selected .protocol-custom-appendix-sheet__img {
  outline: none;
}
#protocolPreviewBody .protocol-pdf .appendix-pdf-no-pages {
  color: #666;
  font-size: 0.9rem;
  margin: 8px 0 0 0;
}
.protocol-preview-body:focus { outline: none; }
.protocol-preview-podklady {
  flex-shrink: 0;
  padding: 12px 16px;
  border-top: 1px solid var(--border-color, #e0e0e0);
  background: var(--panel-bg, #f8f8f8);
}
.protocol-preview-podklady__label {
  display: block;
  font-weight: 600;
  margin-bottom: 4px;
}
.protocol-preview-podklady__hint {
  display: block;
  font-size: 0.9em;
  color: var(--muted-color, #666);
  margin-bottom: 6px;
}
.protocol-preview-podklady__textarea {
  width: 100%;
  min-height: 4em;
  resize: vertical;
  padding: 8px;
  box-sizing: border-box;
}

.signature-crop-box {
  width: min(560px, 94vw);
  max-height: min(560px, 92vh);
}
.signature-crop-box .protocol-preview-header {
  padding: 8px 12px;
}
.signature-crop-box .protocol-preview-body {
  overflow: hidden;
  min-height: 0;
  padding: 10px 12px;
}
.signature-crop-box .protocol-preview-footer {
  padding: 8px 12px;
}
.signature-crop-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow: hidden;
}
.signature-crop-canvas-wrap {
  width: 100%;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  box-sizing: border-box;
}
#signatureCropCanvas {
  width: 100%;
  height: auto;
  display: block;
  cursor: grab;
  background: transparent;
}
#signatureCropCanvas.is-dragging {
  cursor: grabbing;
}
.signature-crop-zoom {
  display: flex;
  align-items: center;
  gap: 10px;
}
.signature-crop-zoom input[type="range"] {
  flex: 1;
}

.protocol-preview-footer {
  flex-shrink: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid var(--line);
  flex-shrink: 0;
}
.protocol-preview-footer .btn { flex-shrink: 0; }
.protocol-preview-box--wide {
  max-width: min(1280px, 98vw);
}
.protocol-preview-box--split {
  max-width: min(1320px, 95vw);
  --protocol-preview-cols: 248px minmax(0, 1fr) 280px;
}
.protocol-preview-layout {
  display: grid;
  grid-template-columns: var(--protocol-preview-cols);
  justify-content: stretch;
  height: min(90vh, 960px);
  min-height: 0;
}
body.protocol-preview-active #protocolPreviewModal .protocol-preview-layout {
  height: auto;
  flex: 1;
  min-height: 0;
}
.protocol-preview-header__row--title {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
}
.protocol-preview-header__row--main .protocol-preview-toolbar {
  min-width: 0;
  width: 100%;
  padding: 0;
  border: none;
  background: transparent;
}
.protocol-preview-header__row--main .protocol-preview-toolbar__actions {
  justify-content: flex-start;
}
.protocol-preview-toolbar {
  padding: 6px 12px 8px;
  border-top: 1px solid var(--line);
  background: color-mix(in srgb, var(--panel) 92%, var(--bg) 8%);
  min-width: 0;
}
.protocol-preview-toolbar__actions {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 4px;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.protocol-preview-toolbar__btn {
  min-height: 28px;
  padding: 3px 8px;
  font-size: 0.78rem;
  white-space: nowrap;
  flex-shrink: 0;
}
.protocol-preview-toolbar__sep {
  width: 1px;
  height: 22px;
  background: var(--line);
  margin: 0 4px;
  flex-shrink: 0;
}
.protocol-preview-viewport-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  padding: 6px 10px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  flex-shrink: 0;
}
.protocol-preview-viewport-toolbar__page {
  font-size: 0.8rem;
  color: var(--muted);
  text-align: right;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.protocol-preview-viewport {
  flex: 1;
  min-height: 0;
  overflow: auto;
  background: #eef1f5;
  position: relative;
  padding: 20px 24px 28px;
  box-sizing: border-box;
}

/* Náhled protokolu: výběr a úprava rozměrů figure půdorysu */
.protocol-preview-figure-editor {
  position: absolute;
  z-index: 40;
  pointer-events: none;
  box-sizing: border-box;
  border: 2px solid #2563eb;
  border-radius: 2px;
  box-shadow: 0 0 0 1px color-mix(in srgb, #2563eb 35%, transparent);
}
.room-floor-plan.protocol-preview-figure--selected {
  outline: none;
}
.room-photo-protocol-figure.protocol-preview-room-photo--selected {
  outline: none;
}
.room-photo-protocol-figure.protocol-preview-room-photo--selected img.room-photo-protocol-img {
  outline: 2px solid #2563eb;
  outline-offset: 2px;
}
.protocol-preview-figure-handle {
  position: absolute;
  width: 11px;
  height: 11px;
  margin: -6px 0 0 -6px;
  border: 2px solid #fff;
  border-radius: 2px;
  background: #2563eb;
  box-shadow: 0 1px 4px rgba(15, 23, 42, 0.28);
  pointer-events: auto;
  cursor: nwse-resize;
  box-sizing: border-box;
}
.protocol-preview-figure-handle--nw {
  left: 0;
  top: 0;
  cursor: nwse-resize;
}
.protocol-preview-figure-handle--ne {
  left: 100%;
  top: 0;
  cursor: nesw-resize;
}
.protocol-preview-figure-handle--se {
  left: 100%;
  top: 100%;
  cursor: nwse-resize;
}
.protocol-preview-figure-handle--sw {
  left: 0;
  top: 100%;
  cursor: nesw-resize;
}
.protocol-preview-figure-rotate {
  position: absolute;
  left: 50%;
  top: -34px;
  transform: translateX(-50%);
  pointer-events: auto;
  white-space: nowrap;
  font-size: 0.72rem;
  padding: 3px 8px;
  z-index: 1;
}
.protocol-preview-nav {
  border-left: 1px solid var(--line);
  background: var(--panel);
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
.protocol-preview-nav__block {
  padding: 10px 10px 8px;
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
}
.protocol-preview-nav__block--toc {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-bottom: 0;
}
.protocol-preview-nav__heading {
  margin: 0 0 8px;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.45px;
  color: var(--muted);
}
.protocol-preview-checklist {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
  overflow: visible;
}
.protocol-preview-nav--all-ok .protocol-preview-nav__block:first-child .protocol-preview-nav__heading::after {
  content: " ✓";
  color: #15803d;
}
.protocol-preview-checklist__item {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  font-size: 0.78rem;
  line-height: 1.25;
  padding: 3px 5px;
  border-radius: 5px;
}
.protocol-preview-checklist__item--ok {
  color: var(--text);
  background: color-mix(in srgb, #15803d 8%, transparent);
}
.protocol-preview-checklist__item--missing {
  color: #b45309;
  background: color-mix(in srgb, #f59e0b 10%, transparent);
}
.protocol-preview-checklist__icon {
  flex-shrink: 0;
  width: 16px;
  text-align: center;
  font-weight: 700;
}
.protocol-preview-toc {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
.protocol-preview-toc__empty {
  margin: 0;
  font-size: 0.82rem;
  color: var(--muted);
}
.protocol-preview-toc__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.protocol-preview-toc__link {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  border: none;
  background: transparent;
  text-align: left;
  padding: 5px 8px;
  border-radius: 6px;
  cursor: pointer;
  color: var(--text);
  font-size: 0.82rem;
  line-height: 1.35;
}
.protocol-preview-toc__link:hover {
  background: var(--hover);
}
.protocol-preview-toc__link--active {
  background: color-mix(in srgb, var(--primary, #1e6fd7) 12%, transparent);
  color: var(--primary, #1e6fd7);
  font-weight: 600;
}
.protocol-preview-toc__item--room .protocol-preview-toc__link {
  padding-left: 18px;
  font-size: 0.78rem;
}
.protocol-preview-toc__title {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.protocol-preview-toc__page {
  flex-shrink: 0;
  font-size: 0.72rem;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.protocol-preview-sidebar {
  border-right: 1px solid var(--line);
  background: var(--panel);
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.protocol-preview-sidebar .protocol-preview-header {
  border-bottom: 1px solid var(--line);
}
.protocol-preview-sidebar__content {
  padding: 8px 10px 10px;
  overflow: auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.protocol-preview-sidebar__content .protocol-preview-group {
  width: 100%;
  box-sizing: border-box;
}
.protocol-preview-main {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  position: relative;
}
.protocol-preview-main > .protocol-preview-loading {
  z-index: 24;
}
.protocol-preview-loading {
  position: absolute;
  inset: 0;
  z-index: 8;
  display: flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--bg) 86%, var(--panel) 14%);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.protocol-preview-loading.hidden { display: none !important; }
.protocol-preview-modal--loading .protocol-preview-sidebar {
  pointer-events: none;
  opacity: 0.48;
  filter: saturate(0.82);
  transition: opacity 0.25s ease, filter 0.25s ease;
}
.protocol-preview-loading__card {
  width: min(420px, calc(100% - 36px));
  padding: 28px 32px 24px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: var(--panel);
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.14);
  text-align: center;
  animation: protocolPreviewLoadingIn 0.42s cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes protocolPreviewLoadingIn {
  from { opacity: 0; transform: translateY(14px) scale(0.97); }
  to { opacity: 1; transform: none; }
}
.protocol-preview-loading__brand {
  margin: 0 auto 18px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.protocol-preview-loading__logo {
  display: block;
  height: 1.85rem;
  width: auto;
  max-width: min(200px, 70%);
  opacity: 0.95;
}
.protocol-preview-loading__icon {
  width: 52px;
  height: 56px;
  margin: 0 auto 18px;
  position: relative;
  color: var(--primary, #1e6fd7);
}
.protocol-preview-loading__doc {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
.protocol-preview-loading__doc--back {
  animation: protocolPreviewDocBack 2.4s ease-in-out infinite;
}
.protocol-preview-loading__doc--mid {
  animation: protocolPreviewDocMid 2.4s ease-in-out infinite;
}
.protocol-preview-loading__doc--front {
  animation: protocolPreviewDocFront 2.4s ease-in-out infinite;
}
@keyframes protocolPreviewDocBack {
  0%, 100% { transform: translate(-58%, -48%) rotate(-6deg); opacity: 0.45; }
  50% { transform: translate(-62%, -52%) rotate(-9deg); opacity: 0.65; }
}
@keyframes protocolPreviewDocMid {
  0%, 100% { transform: translate(-50%, -50%) rotate(0deg); opacity: 0.7; }
  50% { transform: translate(-50%, -54%) rotate(2deg); opacity: 0.9; }
}
@keyframes protocolPreviewDocFront {
  0%, 100% { transform: translate(-42%, -52%) rotate(5deg); }
  50% { transform: translate(-38%, -56%) rotate(8deg); }
}
.protocol-preview-loading__title {
  margin: 0 0 6px;
  font-size: 1.05rem;
  font-weight: 650;
  letter-spacing: -0.01em;
}
.protocol-preview-loading__detail {
  margin: 0 0 18px;
  font-size: 0.86rem;
  color: var(--muted);
  min-height: 1.35em;
  line-height: 1.4;
}
.protocol-preview-loading__bar {
  height: 8px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--line) 75%, transparent);
  overflow: hidden;
}
.protocol-preview-loading__barFill {
  height: 100%;
  width: 0%;
  border-radius: inherit;
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--muted) 55%, var(--text)),
    var(--muted)
  );
  transition: width 0.38s cubic-bezier(0.22, 1, 0.36, 1);
  position: relative;
  overflow: hidden;
}
.protocol-preview-loading__barFill::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.42), transparent);
  animation: protocolPreviewShimmer 1.5s ease-in-out infinite;
}
@keyframes protocolPreviewShimmer {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(120%); }
}
.protocol-preview-loading__percent {
  margin: 10px 0 0;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.protocol-preview-main .protocol-preview-body {
  flex: none;
  min-height: 200px;
  overflow: visible;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  padding-left: 0;
  padding-right: 0;
  margin: 0 auto;
}
.protocol-preview-footer--grouped {
  justify-content: flex-start;
  gap: 6px;
  flex-direction: column;
  align-items: stretch;
  border-top: 0;
  padding: 0;
  width: 100%;
}
.protocol-preview-group--actions {
  min-width: 0;
}
.protocol-preview-footer--grouped .protocol-preview-group {
  width: 100%;
  box-sizing: border-box;
}
.protocol-preview-group--actions .btn {
  width: 100%;
  justify-content: flex-start;
  text-align: left;
  min-height: 30px;
}
.protocol-preview-sidebar .protocol-preview-group--actions {
  gap: 6px;
}
.protocol-preview-sidebar__btn {
  font-size: 0.82rem;
}
@media (max-width: 1280px) {
  .protocol-preview-box--split {
    --protocol-preview-cols: 220px minmax(0, 1fr) 240px;
  }
}
@media (max-width: 1100px) {
  .protocol-preview-header--split {
    flex-direction: column;
    align-items: stretch;
  }
  .protocol-preview-header__right {
    margin-left: 0;
    width: 100%;
    justify-content: space-between;
    flex-wrap: wrap;
  }
  .protocol-preview-warnings {
    text-align: left;
    max-width: none;
  }
  .protocol-preview-box--split {
    --protocol-preview-cols: 1fr;
  }
  .protocol-preview-header__row--main {
    row-gap: 8px;
  }
  .protocol-preview-header__col--sidebar {
    align-items: flex-start;
    text-align: left;
    padding: 0 12px;
  }
  .protocol-preview-header__col--sidebar .protocol-preview-header__titleRow {
    justify-content: flex-start;
  }
  .protocol-preview-header__col--nav {
    justify-content: flex-end;
    padding: 0 12px;
  }
  .protocol-preview-layout {
    grid-template-columns: 1fr;
    height: auto;
    max-height: 90vh;
  }
  body.protocol-preview-active #protocolPreviewModal .protocol-preview-layout {
    height: auto;
    max-height: none;
    flex: 1;
  }
  .protocol-preview-nav {
    display: none;
  }
  .protocol-preview-sidebar {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
}
@media (max-width: 900px) {
  .protocol-preview-group {
    min-width: 100%;
  }
}

/* Zarovnání textu variant doleva (btn je inline-flex se středem) */
.protocol-preview-modal .protocol-preview-variant-row__btn,
.protocol-preview-modal .protocol-preview-variant-slot-btn {
  justify-content: flex-start;
  text-align: left;
  width: 100%;
}

/* Editor úvodní stránky: celá plocha pod hlavičkou projektu (stejný offset jako náhled). */
.protocol-intro-editor-screen {
  position: fixed;
  top: var(--protocol-preview-top, 0px);
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 10040;
  display: flex;
  background: #0b1220;
}
body.protocol-intro-editor-active .topbar,
body.protocol-intro-editor-active .topbarContext {
  position: relative;
  z-index: 10050;
}
body.protocol-intro-editor-active .topbarContext__menu,
body.protocol-intro-editor-active .topbarContext__submenu {
  z-index: 10051;
}
.protocol-intro-editor-screen.hidden { display: none !important; }
body.protocol-intro-editor-active { overflow: hidden; }
.protocol-preview-box.protocol-intro-editor-box {
  width: 100%;
  max-width: none;
  height: 100%;
  max-height: none;
  min-height: 0;
  flex: 1;
  margin: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.protocol-intro-editor-box > .protocol-preview-header .protocol-preview-header__row {
  gap: 12px;
}
.protocol-intro-editor-box > .protocol-preview-header h2 { margin-right: auto; }
.protocol-intro-zoom {
  display: inline-grid;
  grid-template-columns: 34px 68px 34px;
  gap: 4px;
  align-items: center;
}
.protocol-intro-zoom .btn { min-width: 0; padding-inline: 7px; justify-content: center; }
.protocol-intro-zoom__value { font-variant-numeric: tabular-nums; }
.protocol-intro-template-save-box {
  max-width: min(480px, 92vw);
}
#protocolIntroTemplateSaveModal { z-index: 10060; }
.protocol-intro-editor-layout {
  display: grid;
  grid-template-columns: minmax(250px, 310px) minmax(360px, 1fr) minmax(270px, 330px);
  align-items: stretch;
  gap: 0;
  flex: 1;
  min-height: 0;
  width: 100%;
}
.protocol-intro-editor-tools {
  width: auto;
  max-width: none;
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0;
  padding: 14px;
  border-right: 1px solid #334155;
  background: #111827;
  overflow-x: hidden;
  overflow-y: auto;
  flex-shrink: 0;
}
.protocol-intro-editor-tools__btn {
  width: 100%;
  justify-content: center;
  text-align: center;
  box-sizing: border-box;
}
.protocol-intro-editor-properties {
  min-width: 0;
  padding: 14px;
  overflow-x: hidden;
  overflow-y: auto;
  border-left: 1px solid #334155;
  background: #111827;
}
.protocol-intro-properties-tabs {
  position: sticky;
  top: -14px;
  z-index: 4;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
  margin: -14px -14px 12px;
  padding: 10px 12px;
  border-bottom: 1px solid #334155;
  background: rgba(17, 24, 39, .96);
  backdrop-filter: blur(8px);
}
.protocol-intro-properties-tab {
  min-width: 0;
  padding: 7px 6px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: #94a3b8;
  font: inherit;
  font-size: .75rem;
  cursor: pointer;
}
.protocol-intro-properties-tab:hover { color: #e2e8f0; background: #1e293b; }
.protocol-intro-properties-tab.is-active {
  color: #fff;
  border-color: #3b82f6;
  background: #1d4ed8;
}
.protocol-intro-properties-panel.hidden { display: none !important; }
.protocol-intro-editor-history,
.protocol-intro-inspector-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}
.protocol-intro-editor-history .btn,
.protocol-intro-inspector-actions .btn {
  width: 100%;
  justify-content: center;
  box-sizing: border-box;
}
.protocol-intro-inspector-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}
.protocol-intro-typography {
  display: grid;
  gap: 8px;
  padding-top: 10px;
  margin-top: 10px;
  border-top: 1px solid rgba(148, 163, 184, 0.24);
}
.protocol-intro-typography.hidden {
  display: none;
}
.protocol-intro-editor-tools__color {
  width: 100%;
  min-height: 36px;
  padding: 3px;
  border: 1px solid var(--border, #475569);
  border-radius: 6px;
  background: var(--surface, #1f2937);
  cursor: pointer;
}
.protocol-intro-editor-selection-name {
  margin: 0;
  min-height: 1.3em;
  color: #e2e8f0;
  font-size: 0.76rem;
  font-weight: 600;
  line-height: 1.3;
}
.protocol-intro-editor-dirty {
  margin-right: auto;
  color: #fbbf24;
  font-size: 0.78rem;
  font-weight: 600;
}
.protocol-intro-editor-canvas-wrap {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  display: block;
  overflow: auto;
  padding: 28px 16px 42px;
  position: relative;
  background:
    radial-gradient(circle at 1px 1px, rgba(148,163,184,.16) 1px, transparent 0) 0 0/18px 18px,
    #0f172a;
}
.protocol-intro-editor-canvas-wrap.is-panning,
.protocol-intro-editor-canvas-wrap.is-panning * { cursor: grabbing !important; }
.protocol-intro-canvas-hint {
  position: fixed;
  left: 50%;
  bottom: 54px;
  z-index: 3;
  transform: translateX(-50%);
  max-width: min(620px, 70vw);
  padding: 5px 10px;
  border: 1px solid rgba(148,163,184,.22);
  border-radius: 999px;
  background: rgba(15,23,42,.84);
  color: #cbd5e1;
  font-size: .68rem;
  pointer-events: none;
  backdrop-filter: blur(6px);
}
.protocol-intro-info-rows {
  display: grid;
  gap: 6px;
}
.protocol-intro-table-presets {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}
.protocol-intro-table-preset {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 7px;
  align-items: center;
  min-width: 0;
  padding: 7px;
  border: 1px solid #475569;
  border-radius: 7px;
  background: #1e293b;
  color: #e2e8f0;
  font: inherit;
  font-size: .72rem;
  text-align: left;
  cursor: pointer;
}
.protocol-intro-table-preset:hover { border-color: #60a5fa; }
.protocol-intro-table-preset.is-active { border-color: #3b82f6; box-shadow: 0 0 0 1px #3b82f6; }
.protocol-intro-table-preset__swatch {
  height: 22px;
  border: 1px solid #94a3b8;
  border-radius: 3px;
  background: linear-gradient(90deg, #f4f4f4 0 35%, #fff 35%);
}
.protocol-intro-table-preset__swatch--modern { background: linear-gradient(90deg, #dbeafe 0 32%, #fff 32%); border-color: #93c5fd; }
.protocol-intro-table-preset__swatch--minimal { background: #fff; border-color: #e5e7eb; }
.protocol-intro-table-preset__swatch--contrast { background: linear-gradient(90deg, #1e3a5f 0 38%, #fff 38%); border-color: #1e3a5f; }
.protocol-intro-info-row {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 6px;
  align-items: center;
}
.protocol-intro-info-row input[type="checkbox"] { margin: 0; }
.protocol-intro-editor-tools__field {
  display: flex;
  flex-direction: column;
  gap: 3px;
  margin: 0;
  min-width: 0;
}
.protocol-intro-editor-tools__section {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 4px;
  padding-top: 8px;
  border-top: 1px solid #475569;
}
.protocol-intro-editor-tools__section:first-of-type {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}
.protocol-intro-editor-tools__scope {
  margin: 0 0 8px;
  font-size: 0.72rem;
  font-weight: 600;
  color: #cbd5e1;
  line-height: 1.3;
}
.protocol-intro-editor-tools__section-title {
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #94a3b8;
  line-height: 1.2;
}
.protocol-intro-editor-tools__hint {
  margin: 0;
  font-size: 0.65rem;
  color: #94a3b8;
  line-height: 1.35;
}
.protocol-intro-editor-tools__label {
  font-size: 0.72rem;
  color: #cbd5e1;
  line-height: 1.2;
}
.protocol-intro-editor-tools__input {
  width: 100%;
  box-sizing: border-box;
  padding: 4px 8px;
  border: 1px solid #475569;
  border-radius: 5px;
  background: #1e293b;
  color: #f8fafc;
  font-size: 0.8rem;
}
.protocol-intro-editor-tools__select {
  width: 100%;
  box-sizing: border-box;
  padding: 4px 8px;
  border: 1px solid #475569;
  border-radius: 5px;
  background: #1e293b;
  color: #f8fafc;
  font-size: 0.8rem;
}
.protocol-intro-footer-editor {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0;
  padding: 0;
  border: none;
}
.protocol-intro-footer-hint {
  margin: 0;
  font-size: 0.65rem;
  color: #94a3b8;
  line-height: 1.3;
}
.protocol-intro-footer-editable {
  width: 100%;
  min-height: 4.5em;
  max-height: 14em;
  overflow-y: auto;
  padding: 6px 8px;
  border: 1px solid #475569;
  border-radius: 5px;
  background: #fff;
  color: #1e293b;
  font-size: 0.8rem;
  line-height: 1.4;
  text-align: left;
  resize: vertical;
  font-family: inherit;
  box-sizing: border-box;
}
.protocol-intro-footer-editable:focus {
  outline: 2px solid #2563eb;
  outline-offset: 1px;
}
@media (max-width: 720px) {
  .protocol-intro-editor-layout {
    grid-template-columns: 1fr;
    grid-template-rows: auto minmax(420px, 1fr) auto;
    overflow: auto;
  }
  .protocol-intro-editor-tools {
    width: 100%;
    max-width: none;
    max-height: min(42vh, 320px);
    flex-direction: row;
    flex-wrap: wrap;
    align-content: flex-start;
  }
  .protocol-intro-editor-tools__field {
    flex: 1 1 140px;
    min-width: min(100%, 160px);
  }
  .protocol-intro-editor-tools__btn {
    flex: 1 1 auto;
    min-width: calc(50% - 4px);
    width: auto;
  }
  .protocol-intro-editor-properties {
    border-left: 0;
    border-top: 1px solid #334155;
  }
  .protocol-intro-editor-history,
  .protocol-intro-inspector-actions {
    flex: 1 1 100%;
  }
  .protocol-intro-editor-canvas-wrap {
    flex: 1 1 auto;
    min-height: min(52vh, 480px);
  }
}
.protocol-intro-template-save__field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 12px;
}
.protocol-intro-template-save__label {
  font-weight: 600;
}
.protocol-intro-template-save__hint {
  margin: 0;
  font-size: 0.88rem;
  color: #64748b;
  line-height: 1.4;
}
/* Nadřadí .protocol-preview-body { flex:none; margin:0 auto } z náhledu PDF (v1.2.47) */
.protocol-preview-box.protocol-intro-editor-box .protocol-intro-editor-body {
  flex: 1 1 auto;
  width: 100%;
  max-width: none;
  margin: 0;
  min-width: 0;
}
.protocol-intro-editor-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
  background: #0f172a;
  padding: 10px 12px;
}
.protocol-intro-editor-canvas {
  width: 100%;
  max-width: 100%;
  margin: 0 auto;
  /* Rozměr A4 nastavuje JS podle volného místa v .protocol-intro-editor-canvas-wrap */
  background: #fff;
  border: 1px solid #cbd5e1;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.22);
  position: relative;
  overflow: hidden;
}
.protocol-intro-editor-stage {
  position: absolute;
}
/* Editor titulky: stejné okraje stránky jako PDF (20/18/22 mm) */
.protocol-intro-editor-canvas .protocol-pdf {
  width: 210mm;
  max-width: 210mm;
  height: auto;
  min-height: 297mm;
  margin: 0 auto;
  padding: 20mm 18mm 22mm;
  box-sizing: border-box;
  overflow: visible;
  display: block;
  position: relative;
  background: #fff;
  color: #1a1a1a;
}
.protocol-intro-editor-canvas .protocol-pdf .page-body {
  min-height: 0;
  box-sizing: border-box;
}
.protocol-intro-editor-canvas .protocol-pdf .title-page {
  margin: 0;
  page-break-after: auto;
}
.protocol-intro-editor-canvas .protocol-pdf .page-footer {
  display: none;
}
.protocol-intro-editor-item {
  position: absolute;
  cursor: move;
  border: 1px dashed #2563eb;
  user-select: none;
}
.protocol-intro-editor-item.is-selected {
  border: 2px solid #2563eb;
}
.protocol-intro-editor-item.is-locked,
.protocol-intro-editor-accent-line.is-locked {
  cursor: not-allowed;
}
.protocol-intro-editor-item.is-locked::before {
  content: "🔒";
  position: absolute;
  top: -18px;
  right: 0;
  padding: 1px 4px;
  border-radius: 4px;
  background: #1e293b;
  color: #fff;
  font-size: 10px;
  line-height: 14px;
}
.protocol-intro-editor-item img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  pointer-events: none;
}
.protocol-intro-editor-item--custom-text {
  min-height: 2.2em;
  height: auto !important;
  padding: 4px 6px;
  box-sizing: border-box;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  line-height: 1.3;
  color: #111827;
  background: rgba(255, 255, 255, 0.72);
}
.protocol-intro-editor-item--custom-text .protocol-intro-editor-custom-text__content {
  pointer-events: none;
}
/* Overlay v editoru je uvnitř .title-page → stejné % jako v náhledu; nad tabulkou */
.protocol-intro-editor-canvas .title-page > .protocol-intro-editor-item {
  z-index: 3;
}
.protocol-intro-editor-canvas .title-page__accent-line {
  display: none;
}
.protocol-intro-editor-accent-line {
  position: absolute;
  height: 0;
  box-sizing: border-box;
  border: none;
  border-top: var(--accent-line-thickness, 4px) solid var(--accent-line-color, var(--blue, #1e6fd7));
  cursor: ns-resize;
  z-index: 5;
  transform: translateY(-50%);
  pointer-events: auto;
  /* Široká oblast pro chycení (samotná čára má height: 0) */
  padding: 10px 0;
  margin-top: -10px;
  margin-bottom: -10px;
}
.protocol-intro-editor-canvas .title-page > .protocol-intro-editor-accent-line {
  z-index: 5;
}
.protocol-intro-editor-accent-line.is-selected {
  outline: 2px dashed #2563eb;
  outline-offset: 3px;
}
.protocol-intro-editor-accent-line__handle {
  position: absolute;
  top: 50%;
  width: 10px;
  height: 10px;
  margin-top: -5px;
  border-radius: 50%;
  background: #2563eb;
  border: 2px solid #fff;
  cursor: ew-resize;
}
.protocol-intro-editor-accent-line__handle--left {
  left: -6px;
}
.protocol-intro-editor-accent-line__handle--right {
  right: -6px;
}
.protocol-intro-accent-line-hint {
  margin: 0;
  font-size: 0.85rem;
  color: var(--muted, #6b7280);
  line-height: 1.35;
}
.protocol-intro-editable-block {
  cursor: move;
}
.protocol-intro-editable-block.is-selected {
  outline: 2px dashed #2563eb;
  outline-offset: 2px;
}
.protocol-intro-editor-resize {
  position: absolute;
  right: -6px;
  bottom: -6px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #2563eb;
  border: 2px solid #fff;
  cursor: nwse-resize;
}

/* V modalech tmavá tlačítka (jako zbytek GUI), ne světlá primary */
.protocol-preview-modal .btn.btnContext,
.protocol-preview-modal .btn.btnContext.btn--primary {
  background: var(--btn);
  color: var(--text);
  border-color: var(--line);
}
.protocol-preview-modal .btn.btnContext:hover,
.protocol-preview-modal .btn.btnContext.btn--primary:hover {
  background: var(--btnLine);
  filter: none;
}

.protocol-type-chooser-box {
  max-width: 420px;
}

.protocol-type-chooser-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.protocol-type-chooser-body .btn {
  width: 100%;
  justify-content: center;
}

/* Potvrzení odebrání normy */
.confirm-remove-norm-box { max-width: 380px; }

/* Miniaturní potvrzení smazání (zóny, kritické body nouze) */
.mos-mini-confirm{
  position:fixed;
  inset:0;
  z-index:10500;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:12px;
}
.mos-mini-confirm.hidden{ display:none; }
.mos-mini-confirm__overlay{
  position:absolute;
  inset:0;
  background:rgba(15,23,42,0.35);
}
.mos-mini-confirm__box{
  position:relative;
  z-index:1;
  width:min(220px, calc(100vw - 24px));
  padding:10px 12px 12px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--panel, #fff);
  box-shadow:0 8px 24px rgba(15,23,42,0.18);
}
.mos-mini-confirm__message{
  margin:0 0 10px;
  font-size:13px;
  line-height:1.35;
  text-align:center;
  color:var(--text);
}
.mos-mini-confirm__actions{
  display:flex;
  gap:8px;
  justify-content:center;
}
.mos-mini-confirm__btn{
  min-width:4.5rem;
  padding:4px 10px;
  font-size:12px;
}

/* Alert/confirm musí být nad ostatními .protocol-preview-modal (např. účet #userModal je v DOM později). */
#appDialogModal.protocol-preview-modal {
  z-index: 11000;
}

/* Univerzální dialog (alert / confirm / prompt) – modal */
.app-dialog-modal-box { max-width: 420px; }
#appDialogModal .protocol-preview-body.app-dialog-body {
  padding: 12px 16px 8px;
  box-sizing: border-box;
}
.app-dialog-message { margin: 0 0 12px 0; white-space: pre-wrap; }
.app-dialog-prompt-wrap { margin-top: 12px; }
.app-dialog-prompt-wrap.hidden { display: none; }
.app-dialog-prompt-wrap label { display: block; margin-bottom: 4px; font-size: 12px; color: var(--muted); }

.app-dialog-new-project-types {
  margin-top: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.app-dialog-new-project-types.hidden { display: none; }
.app-dialog-new-project-types__title {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
}
.app-dialog-new-project-types__row { margin-bottom: 0; }
.app-dialog-new-project-types__hint { margin: 0; font-size: 11px; }
.app-dialog-new-project-template {
  margin-top: 0.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.app-dialog-new-project-template.hidden { display: none; }
.app-dialog-new-project-template__label {
  font-size: 0.85rem;
  font-weight: 600;
}
.app-dialog-new-project-template__select {
  width: 100%;
  box-sizing: border-box;
}
.app-dialog-new-project-template__hint { margin: 0; font-size: 11px; }
.app-dialog-input { width: 100%; padding: 6px 8px; margin: 0; }
/* Mobil / tablet: zadání hodnoty – bez titulku a odstavce, jen pole + OK / Zrušit */
#appDialogModal.app-dialog--mobile-prompt .protocol-preview-header {
  display: none;
}
#appDialogModal.app-dialog--mobile-prompt .app-dialog-message {
  display: none;
}
#appDialogModal.app-dialog--mobile-prompt .app-dialog-prompt-wrap {
  margin-top: 0;
}
#appDialogModal.app-dialog--mobile-prompt .app-dialog-new-project-types label.app-dialog-new-project-types__row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 14px;
  color: var(--text);
}
#appDialogModal.app-dialog--mobile-prompt .protocol-preview-body.app-dialog-body {
  padding: 12px 14px 6px;
  flex: 0 0 auto;
  min-height: 0;
  overflow: visible;
}
#appDialogModal.app-dialog--mobile-prompt .protocol-preview-footer.app-dialog-footer {
  padding: 8px 12px 12px;
}
#appDialogModal.app-dialog--mobile-prompt .app-dialog-modal-box {
  max-width: min(100vw - 24px, 400px);
  width: auto;
  max-height: none;
}
/* Textové prompty (název místnosti, projekt…) – širší než kompaktní číselný */
#appDialogModal.app-dialog--mobile-text-prompt .app-dialog-modal-box {
  max-width: min(92vw, 520px);
  width: min(92vw, 520px);
}
#appDialogModal.app-dialog--mobile-prompt .app-dialog-input {
  font-size: 16px; /* menší zoom iOS při focusu */
}
.app-dialog-footer { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
/* Nová verze: [Později] [Bez uložení] [Uložit a načíst] zleva doprava u pravého okraje */
.app-dialog-footer--triple #appDialogPrimary { order: 1; }
.app-dialog-footer--triple #appDialogSecondary { order: 2; }
.app-dialog-footer--triple #appDialogTertiary { order: 3; }

/* Nad editorem úvodní stránky (z-index 10040), ať se dialog nevykreslí pod ním. */
#helpModal.protocol-preview-modal,
#aboutModal.protocol-preview-modal {
  z-index: 10070;
}
/* Nápověda – modal (kapitoly + karty) */
.help-modal-box {
  width: min(1100px, 96vw);
  max-width: 1100px;
  max-height: 92vh;
}
.help-modal-body {
  padding: 14px 18px 18px;
  font-size: 0.95rem;
  line-height: 1.5;
}
.help-doc {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.help-overview {
  padding: 16px;
  border: 1px solid color-mix(in srgb, var(--primary) 42%, var(--line));
  border-radius: 14px;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--primary) 8%, var(--panel)) 0%, var(--bg) 68%);
}
.help-overview__eyebrow {
  margin: 0 0 4px;
  color: var(--primary);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.08em;
}
.help-overview__title {
  margin: 0;
  color: var(--fg);
  font-size: clamp(1.12rem, 2vw, 1.38rem);
  line-height: 1.25;
}
.help-overview__lead {
  max-width: 78ch;
  margin: 6px 0 14px;
  color: var(--muted);
  font-size: 0.9rem;
}
.help-workflow {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.help-workflow__step {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 9px;
  min-width: 0;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: color-mix(in srgb, var(--panel) 88%, transparent);
}
.help-workflow__step:not(:last-child)::after {
  content: "›";
  position: absolute;
  z-index: 1;
  top: 50%;
  right: -8px;
  width: 14px;
  height: 20px;
  margin-top: -10px;
  color: var(--primary);
  background: var(--bg);
  text-align: center;
  font-size: 1rem;
  line-height: 20px;
}
.help-workflow__icon {
  position: relative;
  display: grid;
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  place-items: center;
  color: var(--primary);
  border-radius: 8px;
  background: color-mix(in srgb, var(--primary) 14%, transparent);
}
.help-workflow__icon .help-ico { width: 17px; height: 17px; }
.help-workflow__number {
  position: absolute;
  top: -6px;
  right: -5px;
  display: grid;
  width: 15px;
  height: 15px;
  place-items: center;
  border-radius: 50%;
  color: var(--primaryText);
  background: var(--primary);
  font-size: 0.62rem;
  font-weight: 800;
}
.help-workflow__copy { display: grid; min-width: 0; gap: 3px; }
.help-workflow__copy strong { color: var(--fg); font-size: 0.84rem; line-height: 1.2; }
.help-workflow__copy span { color: var(--muted); font-size: 0.76rem; line-height: 1.35; }
.help-overview__tip {
  margin: 12px 0 0;
  padding: 9px 11px;
  border-left: 3px solid var(--primary);
  border-radius: 0 8px 8px 0;
  color: var(--fg);
  background: color-mix(in srgb, var(--primary) 8%, transparent);
  font-size: 0.84rem;
}
.help-overview__jump {
  margin: 13px 0 6px;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.help-toc { display: flex; flex-wrap: wrap; gap: 6px; }
.help-toc__link {
  padding: 5px 9px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--fg);
  background: var(--panel);
  font: inherit;
  font-size: 0.76rem;
  cursor: pointer;
  text-decoration: none;
}
.help-toc__link:hover,
.help-toc__link:focus-visible {
  border-color: var(--primary);
  color: var(--primary);
  outline: none;
}
.help-chapter {
  margin: 0;
  scroll-margin-top: 12px;
}
.help-chapter__title {
  margin: 0 0 0.65rem 0;
  padding: 0 0 0.4rem 0;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  border-bottom: 2px solid var(--line);
}
.help-chapter__grid {
  display: grid;
  gap: 10px;
  grid-template-columns: 1fr;
}
@media (min-width: 720px) {
  .help-chapter__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 900px) {
  .help-workflow { grid-template-columns: 1fr; }
  .help-workflow__step:not(:last-child)::after { display: none; }
}
.help-card {
  margin: 0;
  padding: 12px 14px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-sizing: border-box;
  min-width: 0;
}

/* Admin stats dashboard */
.adminStatsPage {
  max-width: 1320px;
  margin: 0 auto;
  padding: 24px 20px 36px;
  display: grid;
  gap: 16px;
}
.adminStatsHero {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}
.adminStatsPage__title {
  margin: 0 0 6px;
}
.adminStatsIntro,
.adminStatsMeta {
  margin: 0;
  color: var(--muted);
}
.adminStatsCoverageNote {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, #b45309 35%, var(--line));
  border-radius: 10px;
  background: color-mix(in srgb, #b45309 10%, var(--panel));
  color: var(--text);
  font-size: 0.92rem;
}
.adminStatsCoverageNote[hidden] {
  display: none !important;
}
.adminStatsToolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.adminStatsToolbarWrap {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 16px;
  align-items: center;
  justify-content: flex-end;
}
.adminStatsBotToggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.92rem;
  color: var(--muted);
  user-select: none;
}
.adminStatsBotToggle input {
  width: 16px;
  height: 16px;
}
.adminStatsPeriodBtn.is-active {
  border-color: var(--accent, var(--line));
  background: color-mix(in srgb, var(--accent, var(--primary, #2563eb)) 14%, var(--panel));
}
.adminStatsStatus {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}
.adminStatsStatus.is-error {
  border-color: #b91c1c;
  color: #b91c1c;
}
.adminStatsSummary {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.adminStatsMetricCard,
.adminStatsCard {
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}
.adminStatsMetricCard {
  padding: 14px;
}
.adminStatsMetricCard__label {
  color: var(--muted);
  font-size: 0.9rem;
  margin-bottom: 8px;
}
.adminStatsMetricCard__value {
  font-size: 1.55rem;
  font-weight: 700;
  line-height: 1.15;
}
.adminStatsPanels {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}
.adminStatsCard {
  padding: 14px;
  min-width: 0;
}
.adminStatsCard__header {
  margin-bottom: 12px;
}
.adminStatsCard__title {
  margin: 0 0 4px;
  font-size: 1.05rem;
}
.adminStatsCard__meta {
  margin: 0;
  color: var(--muted);
  font-size: 0.92rem;
}
.adminStatsTableWrap {
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg);
}
.adminStatsTable {
  min-width: 420px;
}
.adminStatsTable thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--panel);
}

@media (max-width: 980px) {
  .adminStatsPage {
    padding: 16px 12px 22px;
  }
}

@media (max-width: 640px) {
  .adminStatsToolbar {
    width: 100%;
  }
  .adminStatsToolbar .btn {
    flex: 1 1 auto;
  }
  .adminStatsTable {
    min-width: 360px;
  }
}
.help-card__title {
  margin: 0 0 0.55rem 0;
  font-size: 0.98rem;
  font-weight: 650;
  line-height: 1.3;
  color: var(--fg, inherit);
}
.help-card__body {
  font-size: 0.92rem;
  line-height: 1.48;
  color: var(--fg);
}
.help-card__body > *:first-child { margin-top: 0; }
.help-card__body > *:last-child { margin-bottom: 0; }
.help-lead {
  margin: 0 0 0.45rem 0;
  font-size: 0.88rem;
  color: var(--muted);
}
.help-list,
.help-checklist,
.help-steps {
  margin: 0;
  padding-left: 1.15rem;
  list-style-position: outside;
}
.help-list li,
.help-steps li {
  margin-bottom: 0.38rem;
}
.help-list li:last-child,
.help-steps li:last-child {
  margin-bottom: 0;
}
.help-checklist {
  list-style-type: none;
  padding-left: 0;
}
.help-checklist li {
  position: relative;
  margin-bottom: 0.35rem;
  padding-left: 1.15rem;
}
.help-checklist li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.45em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--primary, #3b82f6);
  opacity: 0.85;
}
.help-steps {
  counter-reset: hstep;
  list-style: none;
  padding-left: 0;
}
.help-steps li {
  counter-increment: hstep;
  position: relative;
  padding-left: 1.6rem;
  margin-bottom: 0.45rem;
}
.help-steps li::before {
  content: counter(hstep);
  position: absolute;
  left: 0;
  top: 0.05em;
  width: 1.2rem;
  height: 1.2rem;
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.2rem;
  text-align: center;
  border-radius: 4px;
  background: var(--line);
  color: var(--fg);
}
.help-note {
  margin: 0.55rem 0 0 0;
  padding: 8px 10px;
  font-size: 0.86rem;
  line-height: 1.42;
  color: var(--muted);
  background: var(--panel);
  border-radius: 8px;
  border-left: 3px solid var(--line);
}
.help-card__body kbd {
  padding: 0.12em 0.38em;
  font-size: 0.86em;
  background: var(--input-bg);
  border: 1px solid var(--line);
  border-radius: 4px;
}
.help-ico {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.14em;
  margin-right: 0.15em;
  flex-shrink: 0;
  color: var(--muted);
  opacity: 0.92;
}
.help-list--icons {
  list-style: none;
  padding-left: 0;
  margin: 0.35rem 0 0 0;
}
.help-icon-row {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  margin-bottom: 0.5rem;
}
.help-icon-row:last-child {
  margin-bottom: 0;
}
.help-icon-row__ico {
  flex: 0 0 auto;
  width: 1.55rem;
  min-height: 1.2rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
.help-icon-row__ico .help-ico {
  width: 1.2rem;
  height: 1.2rem;
  margin-right: 0;
  vertical-align: middle;
  opacity: 1;
  color: var(--text);
}
.help-icon-row__icoPair {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 3px;
  align-items: center;
  justify-content: center;
}
.help-icon-row__icoPair .help-ico {
  width: 1.05rem;
  height: 1.05rem;
}
.help-icon-row__txt {
  flex: 1;
  min-width: 0;
  line-height: 1.45;
}
.help-section-label {
  margin: 0.9rem 0 0.4rem 0;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}
.help-card__body > .help-section-label:first-child {
  margin-top: 0;
}

.about-modal-box { max-width: 380px; }
.about-modal-body { padding: 16px; }
.about-modal__app-name { font-weight: 600; margin: 0 0 0.5rem; font-size: 1rem; }
.about-modal__version { margin: 0 0 0.75rem; color: var(--muted); font-size: 0.9rem; }
.about-modal__web { margin: 0; }
.about-modal__web a { color: var(--primary, #3b82f6); text-decoration: none; }
.about-modal__web a:hover { text-decoration: underline; }

.startup-tips-modal-box { max-width: 440px; }
.startup-tips-modal-body { padding: 16px 18px 8px; }
.startup-tips-modal__counter {
  margin: 0 0 0.35rem;
  color: var(--muted, #6b7280);
  font-size: 0.8rem;
}
.startup-tips-modal__tip-title {
  margin: 0 0 0.5rem;
  font-size: 1.05rem;
  font-weight: 600;
  line-height: 1.3;
}
.startup-tips-modal__tip-body {
  margin: 0 0 1rem;
  color: var(--text, #1f2937);
  font-size: 0.95rem;
  line-height: 1.45;
  min-height: 4.2em;
}
.startup-tips-modal__dont-show {
  margin: 0;
  color: var(--muted, #6b7280);
  font-size: 0.9rem;
}
.startup-tips-modal-footer {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
}
.startup-tips-modal-footer__nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.help-section h3 { margin: 0 0 0.5rem 0; font-size: 1rem; color: var(--text); }
.help-section ul { margin: 0; padding-left: 1.25rem; }
.help-section li { margin-bottom: 0.35rem; }
.help-section kbd { padding: 0.15em 0.4em; font-size: 0.9em; background: var(--input-bg); border: 1px solid var(--line); border-radius: 4px; }

/* Help circle button for methodology */
.global-form-modal__field-label-with-help {
  display: flex;
  align-items: center;
  gap: 6px;
}
.help-circle-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--muted);
  color: var(--panel);
  font-size: 12px;
  font-weight: 600;
  border: none;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.2s;
}
.help-circle-btn:hover {
  background: var(--primary, #3b82f6);
}

/* Methodology help modal */
#methodologyHelpModal.protocol-preview-modal {
  z-index: 10600;
}
#methodologyHelpModal .protocol-preview-box {
  max-width: min(780px, 94vw);
}
.methodology-help-content {
  padding: 16px;
}
.methodology-help-item {
  margin-bottom: 12px;
}
.methodology-help-item:last-child {
  margin-bottom: 0;
}
.methodology-help-item__title {
  font-weight: 600;
  margin-bottom: 4px;
  color: var(--text);
}
.methodology-help-item__desc {
  font-size: 0.9rem;
  color: var(--muted);
  line-height: 1.4;
}
.methodology-help-heading {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 8px;
  padding-bottom: 4px;
  border-bottom: 2px solid var(--border);
}

.results-modal-body {
  padding: 16px;
  overflow-y: auto;
}

.results-table-container {
  overflow: auto;
}
.results-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 13px;
}
.results-table thead {
  position: sticky;
  top: 0;
  background: var(--panel);
  z-index: 3;
}
.results-table th {
  text-align: left;
  padding: 10px 12px;
  font-weight: 600;
  color: var(--text);
  border-bottom: 2px solid var(--line);
  white-space: nowrap;
  background: var(--panel);
}
.results-table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  color: var(--text);
}
.results-table tbody tr:hover {
  background: var(--input-bg);
}
/* Při vodorovném posunu zůstane název prostoru vidět. */
.results-table thead th:first-child,
.results-table tbody td.results-table__room-name,
.roomsOverview__table tbody td:first-child {
  position: sticky;
  left: 0;
  min-width: 11rem;
  max-width: 16rem;
  box-shadow: 6px 0 8px -6px rgba(0, 0, 0, 0.55);
}
.results-table thead th:first-child {
  z-index: 4;
}
.results-table tbody td.results-table__room-name {
  z-index: 1;
  font-weight: 600;
  vertical-align: middle;
  background: color-mix(in srgb, var(--panel) 88%, var(--line));
  border-right: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
  white-space: normal;
}
.roomsOverview__table thead th:first-child,
.roomsOverview__table tbody td:first-child {
  background: color-mix(in srgb, var(--panel) 88%, var(--line));
  border-right: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}
.roomsOverview__table tbody td:first-child {
  z-index: 1;
}
.results-table tbody tr:hover td.results-table__room-name,
.roomsOverview__table tbody tr:hover td:first-child {
  background: color-mix(in srgb, var(--input-bg) 82%, var(--line));
}
.results-table tbody td.results-table__segment-typ {
  font-size: 12px;
  color: var(--text);
  max-width: 14rem;
  line-height: 1.35;
  vertical-align: top;
}
.results-table tbody .results-table__detail {
  font-size: 12px;
  color: var(--text);
  padding-left: 10px;
}
.results-table tbody td.results-table__reco-cell {
  vertical-align: top;
}
.results-table tbody td.results-table__include-cell {
  vertical-align: middle;
  text-align: center;
}
.results-table tbody tr.results-table__room-group-end td {
  border-bottom: 2px solid var(--line);
}
.results-table tbody tr:last-child td {
  border-bottom: none;
}
.results-status-pass {
  color: #15803d !important;
  font-weight: 600;
}
.results-status-fail {
  color: #dc2626 !important;
  font-weight: 600;
}
.results-status-nodata {
  color: var(--muted) !important;
  font-weight: 600;
}
.results-recommendation-input {
  box-sizing: border-box;
  width: 100%;
  min-width: 150px;
  max-width: 250px;
  padding: 6px 8px;
  font-size: 12px;
  font-family: inherit;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--input-bg);
  color: var(--text);
  line-height: 1.4;
}
.results-table tbody td.results-table__reco-cell textarea.results-recommendation-input:not([data-field]) {
  display: block;
  min-height: max(4.5rem, calc(var(--reco-row-span, 1) * 2.75rem));
  resize: vertical;
  overflow-y: auto;
}
.results-recommendation-input:focus {
  outline: none;
  border-color: var(--primary, #3b82f6);
}
/* Panel Prostory – tabulkový přehled vlastností po prostorech */
.results-modal-header__left {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  min-width: 0;
}
.results-modal-header__left h2 {
  margin: 0;
}
#roomsOverviewModal .protocol-preview-type-switch {
  margin-left: 0;
}
#roomsOverviewModal .roomsOverview__tab--missing {
  color: #c45f5f;
}
#roomsOverviewModal .roomsOverview__tab--missing[aria-selected="true"] {
  box-shadow: inset 0 -2px 0 #c45f5f;
}
.roomsOverview__toolbar {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.roomsOverview__filter {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  cursor: pointer;
}
.roomsOverview__empty {
  margin: 16px 0 0;
  font-size: 13px;
  color: var(--muted);
}
.roomsOverview__summary {
  margin-left: 12px;
  font-size: 13px;
  font-weight: 600;
}
.roomsOverview__summary--ok {
  color: #15803d;
}
.roomsOverview__summary--missing {
  color: #c45f5f;
}
.roomsOverview__table th.roomsOverview__th--required::after {
  content: "*";
  margin-left: 3px;
  color: #c45f5f;
}
.roomsOverview__table td {
  padding: 4px 8px;
  vertical-align: middle;
}
.roomsOverview__table [data-col-key="em_pozadovane"],
.roomsOverview__table [data-col-key="uo_pozadovane"] {
  width: 4.75rem;
  max-width: 5.25rem;
  white-space: nowrap;
}
.roomsOverview__table [data-col-key="em_pozadovane"] .roomsOverview__input,
.roomsOverview__table [data-col-key="uo_pozadovane"] .roomsOverview__input {
  min-width: 3.75rem;
  width: 4.75rem;
  padding-left: 6px;
  padding-right: 4px;
}
.roomsOverview__table [data-col-key="zarizeni"],
.roomsOverview__table [data-col-key="poznamky"] {
  min-width: 16rem;
  width: 22%;
}
.roomsOverview__table [data-col-key="zarizeni"] .roomsOverview__input,
.roomsOverview__table [data-col-key="poznamky"] .roomsOverview__input {
  min-width: 14rem;
}
.roomsOverview__table tbody tr.roomsOverview__row--current td:first-child {
  box-shadow: inset 3px 0 0 var(--primary), 6px 0 8px -6px rgba(0, 0, 0, 0.55);
}
.roomsOverview__table td.roomsOverview__cell--missing {
  background: color-mix(in srgb, #c45f5f 16%, var(--panel));
}
.roomsOverview__table tbody td.roomsOverview__cell--missing:first-child {
  background: color-mix(in srgb, #c45f5f 18%, var(--panel));
}
.roomsOverview__table tbody tr:hover td.roomsOverview__cell--missing,
.roomsOverview__table tbody tr:hover td.roomsOverview__cell--missing:first-child {
  background: color-mix(in srgb, #c45f5f 22%, var(--panel));
}
.roomsOverview__table .roomsOverview__cell--missing .roomsOverview__input {
  border-color: color-mix(in srgb, #c45f5f 70%, var(--line));
  background: color-mix(in srgb, #c45f5f 10%, var(--input-bg));
}
.roomsOverview__input {
  width: 100%;
  min-width: 6rem;
  box-sizing: border-box;
  padding: 5px 8px;
  font-size: 13px;
  font-family: inherit;
  color: var(--text);
  background: var(--input-bg);
  border: 1px solid var(--line);
  border-radius: 4px;
}
.roomsOverview__input:focus {
  outline: none;
  border-color: var(--primary);
}
.roomsOverview__input:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
.roomsOverview__input--check {
  width: auto;
  min-width: 0;
  margin: 0;
  flex: 0 0 auto;
}
.roomsOverview__cellInner {
  display: flex;
  align-items: center;
  gap: 2px;
  min-width: 0;
}
.roomsOverview__cellInner .roomsOverview__input {
  flex: 1 1 auto;
  min-width: 0;
}
.roomsOverview__applyAll {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  background: none;
  border: none;
  padding: 2px;
  cursor: pointer;
  flex-shrink: 0;
}
.roomsOverview__applyAll svg {
  display: block;
}
.roomsOverview__applyAll:hover:not(:disabled) {
  color: var(--text);
}
.roomsOverview__applyAll:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.roomsOverview__table th:first-child .roomsOverview__input,
.roomsOverview__table td:first-child .roomsOverview__input {
  min-width: 0;
}
/* Celoplošný panel: ovládání zůstává nahoře, scrolluje jen tabulka (sticky hlavička). */
body.rooms-overview-active #roomsOverviewModal .results-modal-body,
body.results-panel-active #resultsModal .results-modal-body {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
body.rooms-overview-active #roomsOverviewModal .results-table-container,
body.results-panel-active #resultsModal .results-table-container {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
body.rooms-overview-active #roomsOverviewModal .results-table-container,
body.results-panel-active #resultsModal .results-table-container {
  margin: 0 12px 12px;
  background: #f4f4f4;
  border: 1px solid #c8c8c8;
}
#roomsOverviewModal .roomsOverview__table {
  color-scheme: light;
  background: #fff;
}
#roomsOverviewModal .roomsOverview__table th,
#roomsOverviewModal .roomsOverview__table td {
  border-right: 1px solid #d4d4d4;
  border-bottom: 1px solid #d4d4d4;
  background: #fff;
  color: #1a1a1a;
  padding: 0;
}
#roomsOverviewModal .roomsOverview__table th:first-child,
#roomsOverviewModal .roomsOverview__table td:first-child {
  border-left: 1px solid #d4d4d4;
}
#roomsOverviewModal .roomsOverview__table th {
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 6px 8px;
  font-size: 0.75rem;
  font-weight: 600;
  color: #444;
  background: #f0f0f0;
  border-top: 1px solid #d4d4d4;
  border-bottom: 1px solid #d4d4d4;
}
#roomsOverviewModal .roomsOverview__table thead th:first-child,
#roomsOverviewModal .roomsOverview__table tbody td:first-child {
  background: #f0f0f0;
  border-right: 1px solid #c8c8c8;
  box-shadow: 4px 0 6px -4px rgba(0, 0, 0, 0.28);
}
#roomsOverviewModal .roomsOverview__table thead th:first-child {
  z-index: 4;
  background: #e8e8e8;
}
#roomsOverviewModal .roomsOverview__table tbody tr:hover td {
  background: #f7f9fc;
}
#roomsOverviewModal .roomsOverview__table tbody tr:hover td:first-child {
  background: #e8e8e8;
}
#roomsOverviewModal .roomsOverview__table tbody tr.roomsOverview__row--current td:first-child {
  box-shadow: inset 3px 0 0 #217346, 4px 0 6px -4px rgba(0, 0, 0, 0.28);
}
#roomsOverviewModal .roomsOverview__input,
#roomsOverviewModal select.roomsOverview__input {
  width: 100%;
  min-width: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  color: #1a1a1a;
  font: inherit;
  font-size: 13px;
  padding: 6px 8px;
  box-shadow: none;
}
#roomsOverviewModal .roomsOverview__input:focus,
#roomsOverviewModal select.roomsOverview__input:focus {
  outline: 2px solid #217346;
  outline-offset: -2px;
  background: #fff;
}
#roomsOverviewModal .roomsOverview__table td.roomsOverview__cell--missing {
  background: #fdecec;
}
#roomsOverviewModal .roomsOverview__table tbody td.roomsOverview__cell--missing:first-child {
  background: #f8e4e4;
}
#roomsOverviewModal .roomsOverview__table tbody tr:hover td.roomsOverview__cell--missing {
  background: #f8dede;
}
#roomsOverviewModal .roomsOverview__table .roomsOverview__cell--missing .roomsOverview__input {
  border-color: transparent;
  background: transparent;
}
#roomsOverviewModal .roomsOverview__applyAll {
  color: #666;
}
#roomsOverviewModal .roomsOverview__applyAll:hover:not(:disabled) {
  color: #217346;
}
#roomsOverviewModal th[data-col-key="korigovat_podle_zdroje"],
#roomsOverviewModal td[data-col-key="korigovat_podle_zdroje"] {
  text-align: center;
}
#roomsOverviewModal td[data-col-key="korigovat_podle_zdroje"] .roomsOverview__cellInner {
  justify-content: center;
  position: relative;
}
#roomsOverviewModal td[data-col-key="korigovat_podle_zdroje"] .roomsOverview__applyAll {
  position: absolute;
  right: 4px;
}
#roomsOverviewModal .roomsOverview__include {
  min-width: 7.5rem;
  text-align: center;
  vertical-align: middle;
  white-space: nowrap;
}
#roomsOverviewModal th.roomsOverview__include {
  white-space: normal;
  line-height: 1.25;
}
#roomsOverviewModal .roomsOverview__includeInner {
  justify-content: center;
  gap: 8px;
  padding: 4px 6px;
}
#roomsOverviewModal .roomsOverview__includeChoice {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: #444;
  white-space: nowrap;
}
#roomsOverviewModal .roomsOverview__input--check,
#roomsOverviewModal .roomsOverview__include .roomsOverview__input--check,
#resultsModal .results-report-include-checkbox,
#resultsModal .results-include-checkbox {
  width: 13px;
  min-width: 13px;
  height: 13px;
  margin: 0;
  padding: 0;
  accent-color: #217346;
  cursor: pointer;
  flex: 0 0 auto;
}
#resultsModal .results-table {
  color-scheme: light;
  background: #fff;
}
#resultsModal .results-table th,
#resultsModal .results-table td {
  border-right: 1px solid #d4d4d4;
  border-bottom: 1px solid #d4d4d4;
  background: #fff;
  color: #1a1a1a;
}
#resultsModal .results-table th:first-child,
#resultsModal .results-table td:first-child {
  border-left: 1px solid #d4d4d4;
}
#resultsModal .results-table th {
  padding: 6px 8px;
  font-size: 0.75rem;
  font-weight: 600;
  color: #444;
  background: #f0f0f0;
  border-top: 1px solid #d4d4d4;
  border-bottom: 1px solid #d4d4d4;
}
#resultsModal .results-table thead {
  background: #f0f0f0;
}
#resultsModal .results-table thead th:first-child,
#resultsModal .results-table tbody td.results-table__room-name {
  background: #f0f0f0;
  border-right: 1px solid #c8c8c8;
  box-shadow: 4px 0 6px -4px rgba(0, 0, 0, 0.28);
}
#resultsModal .results-table thead th:first-child {
  background: #e8e8e8;
}
#resultsModal .results-table tbody tr:hover td {
  background: #f7f9fc;
}
#resultsModal .results-table tbody tr:hover td.results-table__room-name {
  background: #e8e8e8;
}
#resultsModal .results-table tbody tr.results-table__room-group-end td {
  border-bottom: 2px solid #b4b4b4;
}
#resultsModal .results-table tbody tr:last-child td {
  border-bottom: 1px solid #d4d4d4;
}
#resultsModal .results-table__num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
#resultsModal .results-table tbody td.results-table__segment-typ,
#resultsModal .results-table tbody .results-table__detail {
  color: #1a1a1a;
}
#resultsModal .results-status-nodata {
  color: #666 !important;
}
#resultsModal .results-recommendation-input {
  background: #fff;
  color: #1a1a1a;
  border: 1px solid #d4d4d4;
  border-radius: 0;
}
#resultsModal .results-recommendation-input:focus {
  outline: 2px solid #217346;
  outline-offset: -2px;
  border-color: transparent;
}

.results-modal-status-indicator {
  display: inline-flex;
  align-items: center;
  margin-left: 12px;
  font-size: 13px;
  font-weight: 600;
}
.results-modal-status-indicator--pass {
  color: #166534;
}
.results-modal-status-indicator--fail {
  color: #991b1b;
}
.results-modal-status-indicator--nodata {
  color: var(--muted);
}

.admin-measurement-scale-wrap {
  opacity: 0.92;
}
.admin-measurement-scale-row {
  display: flex;
  gap: 6px;
  align-items: center;
}
.admin-measurement-scale-row input[type="number"] {
  flex: 1;
  min-width: 0;
}

.export-values-modal-box {
  max-width: 520px;
}
.export-values-modal-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.export-values-modal__room-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: min(50vh, 360px);
  overflow-y: auto;
  padding: 4px 0;
}
.export-values-modal__room {
  margin: 0;
}
.export-values-modal__room-label {
  flex: 1;
}
.export-values-modal__options {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding-top: 4px;
  border-top: 1px solid var(--border);
}
.export-values-modal__empty {
  margin: 0;
  color: var(--muted);
}

/* Levý panel: sekce Zóny – zvýrazněný okraj */
aside.panel .section.panelZonesSection {
  border-color: #f97316;
}

/* Levý panel: sekce Zóny (měřicí zóny + schody, desktop) */
.panelZonesSection__inner {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-height: 0;
  min-width: 0;
  max-width: 100%;
  overflow-x: hidden;
}
.panelZonesSection__zonesList {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
  max-width: 100%;
}
.panelZonesSection__stairsWrap {
  min-height: 0;
}
.panelZonesSection__stairsHeading {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--muted);
  margin-bottom: 6px;
}
/* Bez vnitřního max-height — schody rostou s obsahem; případný posuv jen u .panelScroll celého panelu */
.panelZonesSection__stairsScroll {
  overflow: visible;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: var(--input-bg);
}
.panelZonesSection .canvasTaskAreasBar__zoneSection {
  margin-bottom: 0;
  min-width: 0;
  max-width: 100%;
}

/* Mobilní měření: panel v ploše plátna (#measureRoomPropsMenu + jedna vybraná sekce).
   Projektové údaje: #measureProjectPropsSheet stejným způsobem.
   Viditelnost vázeme na `.canvasStackOverlayPanel` bez `.hidden`, ne na třídu `body`,
   aby plátno nepřetrvalo skryté po zavření panelu / chybějícím odebrání třídy. */
.canvasWrap__canvasMainStack:has(> .canvasStackOverlayPanel:not(.hidden)) > :not(.canvasStackOverlayPanel):not(#measureCanvasBottomRow) {
  display: none !important;
}
.canvasWrap__canvasMainStack > .canvasStackOverlayPanel:not(.hidden) {
  order: 10;
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  width: 100%;
  display: flex;
  box-sizing: border-box;
  background: #fff;
  overflow: hidden;
}
.measureRoomPropsSheet__backdrop {
  display: none;
}
.measureRoomPropsSheet__panel {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-height: 0;
  background: var(--panel);
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow: hidden;
}
.measureRoomPropsSheet__header {
  flex-shrink: 0;
  display: grid;
  grid-template-columns: minmax(0, 88px) 1fr minmax(40px, auto);
  align-items: center;
  gap: 8px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  box-sizing: border-box;
}
.measureRoomPropsSheet__headerLeading {
  grid-column: 1;
  grid-row: 1;
  justify-self: start;
  min-width: 0;
}
.measureRoomPropsSheet__headerTrailing {
  grid-column: 3;
  grid-row: 1;
  justify-self: end;
}
.measureRoomPropsSheet__title {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  text-align: center;
  justify-self: center;
  grid-column: 1 / -1;
  grid-row: 1;
  min-width: 0;
  padding: 0 54px;
  box-sizing: border-box;
}
.measureRoomPropsSheet__backBtn {
  padding: 6px 10px;
  font-size: 0.9rem;
  white-space: nowrap;
}
.measureRoomPropsSheet__menu {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  box-sizing: border-box;
}
.measureRoomPropsMenu__btn {
  width: 100%;
  justify-content: center;
  text-align: center;
  padding: 12px 14px;
  font-weight: 600;
}
.measureRoomPropsSheet__dock {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 8px 12px 14px;
  box-sizing: border-box;
}

/* V modalu nechceme desktopovou hlavičku `<summary>` ani panelové ovládací prvky; zůstává jen formulář. */
.measureRoomPropsSheet__dock.aside-panel-surrogate .section {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
}
.measureRoomPropsSheet__dock.aside-panel-surrogate .section > summary,
.measureRoomPropsSheet__dock.aside-panel-surrogate #rm_include_in_report_electrical_wrap,
.measureRoomPropsSheet__dock.aside-panel-surrogate #rm_include_in_report_emergency_wrap {
  display: none !important;
}

/* Mobilní měření: údaje o projektu (DOM box z #projectModal) */
.measureProjectPropsSheet__backdrop {
  display: none;
}
.measureProjectPropsSheet__panel {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-height: 0;
  background: var(--panel);
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow: hidden;
}
.measureProjectPropsSheet__header {
  flex-shrink: 0;
  display: grid;
  grid-template-columns: minmax(0, 88px) 1fr minmax(40px, auto);
  align-items: center;
  gap: 8px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  box-sizing: border-box;
}
.measureProjectPropsSheet__backBtn {
  padding: 6px 10px;
  font-size: 0.9rem;
  white-space: nowrap;
}
.measureProjectPropsSheet__headerLeading {
  grid-column: 1;
  grid-row: 1;
  justify-self: start;
  min-width: 0;
}
.measureProjectPropsSheet__headerTrailing {
  grid-column: 3;
  grid-row: 1;
  justify-self: end;
}
.measureProjectPropsSheet__title {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  text-align: center;
  justify-self: center;
  grid-column: 1 / -1;
  grid-row: 1;
  min-width: 0;
  padding: 0 54px;
  box-sizing: border-box;
}
.measureProjectPropsSheet__summary {
  flex-shrink: 0;
  margin: 0;
  padding: 10px 16px;
  font-size: 0.88rem;
  line-height: 1.4;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
}
.measureProjectPropsSheet__summary--incomplete {
  color: #b45309;
  background: #fffbeb;
}
.measureProjectPropsSheet__summary--complete {
  color: #166534;
  background: #ecfdf5;
}
.measureProjectPropsSheet__menu {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  box-sizing: border-box;
}
.measureProjectPropsMenu__btn[hidden] {
  display: none !important;
}
.measureProjectPropsMenu__btn {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  font-weight: 600;
  text-align: left;
}
.measureProjectPropsMenu__label {
  flex: 1;
  min-width: 0;
}
.measureProjectPropsMenu__badge {
  flex-shrink: 0;
  font-size: 0.82rem;
  font-weight: 700;
  line-height: 1;
  padding: 0.2rem 0.45rem;
  border-radius: 999px;
}
.measureProjectPropsMenu__badge--ok {
  color: #166534;
  background: #dcfce7;
}
.measureProjectPropsMenu__badge--warn {
  color: #92400e;
  background: #fef3c7;
  min-width: 1.4rem;
  text-align: center;
}
.measurePropsHubSheet .measureProjectPropsSheet__summary {
  margin: 0 16px 8px;
}
.measurePropsHubMenu__btn {
  align-items: flex-start;
}
.measurePropsHubMenu__text {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.measurePropsHubMenu__hint {
  font-size: 0.82rem;
  font-weight: 400;
  color: var(--text-muted, #64748b);
  line-height: 1.3;
}
.measurePropsHubMenu__chevron {
  flex-shrink: 0;
  font-size: 1.25rem;
  line-height: 1;
  color: var(--text-muted, #64748b);
  align-self: center;
}
.measurePropsHubMenu__btn--disabled,
.measurePropsHubMenu__btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.measureProjectPropsSheet__panel:has(#measureProjectPropsMenu:not(.hidden)) .measureProjectPropsSheet__dock {
  flex: 0 0 auto;
}
.measureProjectPropsSheet__panel:has(#measureProjectPropsMenu.hidden) .measureProjectPropsSheet__dock {
  flex: 1 1 auto;
  min-height: 0;
}
.measureLockedBar__btn {
  position: relative;
}
.measureLockedBar__btnAlert {
  position: absolute;
  top: 2px;
  right: 2px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #f59e0b;
  border: 1.5px solid var(--panel);
  pointer-events: none;
}
.measureLockedBar__btn--incomplete:not(.is-active) {
  box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.45);
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project.measure-project-sheet--menu .global-form-modal__body {
  display: none !important;
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project[class*="measure-project-sheet--section-"] .prj-protocol-col__head {
  display: none;
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project.measure-project-sheet--section-shared .prj-protocol-col--electrical,
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project.measure-project-sheet--section-shared .prj-protocol-col--emergency {
  display: none !important;
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project.measure-project-sheet--section-electrical .prj-protocol-col--shared,
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project.measure-project-sheet--section-electrical .prj-protocol-col--emergency {
  display: none !important;
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project.measure-project-sheet--section-emergency .prj-protocol-col--shared,
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project.measure-project-sheet--section-emergency .prj-protocol-col--electrical {
  display: none !important;
}
.measureProjectPropsSheet__dock {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}

.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__box--project {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  max-width: none;
  margin: 0;
  border: none;
  border-radius: 0;
  box-shadow: none;
  box-sizing: border-box;
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__header {
  display: none !important;
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .global-form-modal__footer {
  flex-shrink: 0;
}
.measureProjectPropsSheet__dock.measure-project-sheet--embedded .prj-protocol-columns {
  grid-template-columns: minmax(0, 1fr) !important;
}

/* Aktivní tlačítko ikonky na desktopu při otevřeném sheetu (mobil používá pravidla u .measureCanvasBottomRow). */
body:not(.device-mobile-or-tablet) .measureLockedBar .measureLockedBar__btn.is-active:not(:disabled) {
  background: var(--primary);
  color: var(--primaryText);
  border-color: var(--primary);
}

.tariff-edit__promo-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-bottom: 0.5rem;
}
.tariff-edit__promo-input {
  flex: 1 1 12rem;
  min-width: 10rem;
}
