/* ==========================================================================
   DataDent Formulare — Main Stylesheet
   Přesně odpovídá BEM třídám v PHP šablonách
   ========================================================================== */

/* ==========================================================================
   1. CSS PROMĚNNÉ
   ========================================================================== */
:root {
  --color-primary:       #2d3346;
  --color-primary-light: #3d4663;
  --color-primary-dark:  #1e2433;
  /* --color-accent / --color-accent-hover slouží jako TEXT color (links, btn--outline,
     .text-accent, focus outlines). Posunuto na teal-700/-800 kvůli WCAG AA kontrastu
     vůči bílému pozadí (#0d9488 = 3.7:1 → pod prahem; #0f766e = 5.07:1 ✓ AA).
     Brandová „světlejší" teal #0d9488 zůstává v gradientech/headerech inline (kde je
     bílý text nad ní), viz `--color-accent-brand` níže. */
  --color-accent:        #0f766e;
  --color-accent-hover:  #115e59;
  --color-accent-light:  #eefbfa;
  --color-accent-lighter:#5eead4;
  --color-accent-brand:  #0d9488;

  --color-heading:       #2d3346;

  --color-success:       #059669;
  --color-success-light: #ecfdf5;
  --color-danger:        #dc2626;
  --color-danger-light:  #fef2f2;
  --color-warning:       #d97706;
  --color-warning-light: #fffbeb;
  --color-warning-bg:    #fef3c7;
  --color-warning-text:  #92400e;
  --color-info:          #0891b2;
  --color-info-light:    #ecfeff;
  --color-info-strong:   #1e40af;

  --color-slate-100:     #f1f5f9;
  --color-slate-300:     #cbd5e1;

  --color-bg:            #f0f2f5;
  --color-surface:       #ffffff;
  --color-surface-alt:   #f4f5f7;
  --color-border:        #e5e7ec;
  --color-text:          #1a1d2b;
  --color-text-secondary:#3d4255;
  --color-text-muted:    #6e7389;
  --color-text-inverse:  #ffffff;

  --radius-sm: 5px;
  --radius:    8px;
  --radius-lg: 11px;
  --radius-xl: 16px;
  --font-size-xs:   0.78rem;
  --font-size-sm:   0.88rem;
  --font-size-base: 1rem;
  --font-mono: ui-monospace, SFMono-Regular, 'JetBrains Mono', Menlo, Consolas, monospace;

  --shadow-sm: 0 1px 2px rgba(58,64,90,.05);
  --shadow:    0 2px 8px rgba(58,64,90,.06), 0 1px 2px rgba(58,64,90,.03);
  --shadow-lg: 0 6px 20px rgba(58,64,90,.08), 0 2px 4px rgba(58,64,90,.04);
  --shadow-accent: 0 4px 14px rgba(13,148,136,.15), 0 2px 6px rgba(15,23,42,.06);
  --transition: .15s ease;

  /* ── Modal design system tokens (2026-05-20) ────────────────────────── */
  --modal-title-size:     1.05rem;
  --modal-title-weight:   700;
  --modal-subtitle-size:  .82rem;
  --modal-subtitle-color: #475569; /* čitelná na světlém i bílém pozadí */
  --modal-body-size:      .9rem;
  --modal-label-size:     .72rem;
  --modal-label-tracking: .07em;

  --modal-bg:          var(--color-surface);
  --modal-text:        #0f172a;
  --modal-text-muted:  #64748b;
  --modal-border:      var(--color-border);
  --modal-header-bg:   #f8fafc;
  --modal-footer-bg:   #f8fafc;
  --modal-shadow:      0 20px 50px rgba(15,23,42,.2);

  --modal-pad-sm:  1rem;
  --modal-pad-md:  1.25rem;
  --modal-pad-lg:  1.5rem;
  --modal-gap:     .75rem;

  --modal-themed-grad: linear-gradient(135deg, #1e293b 0%, #334155 50%, #0f766e 100%);
  --modal-themed-text: #ffffff;

  --modal-danger-accent: #dc2626;
  --modal-danger-bg:     #fef2f2;
}

/* ==========================================================================
   2. RESET & BASE
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
/* Pozadí i na <html> — při přechodu mezi stránkami neprosvítá bílé plátno prohlížeče */
html { font-size: 16px; scroll-behavior: smooth; background: var(--color-bg); }

/* A11y — fallback focus ring pro keyboard users na elementech bez custom focus.
   Neovlivňuje mouse hover/click (:focus-visible = jen keyboard triggered focus). */
:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: 3px;
}
/* Vypnout default :focus ring pro mouse — jen pokud element má :focus-visible nastaveno výše */
:focus:not(:focus-visible) { outline: none; }
body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  background: var(--color-bg);
  color: var(--color-text);
  line-height: 1.5;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
a { color: var(--color-accent); text-decoration: none; }
a:hover { color: var(--color-accent-hover); text-decoration: underline; }
img { max-width: 100%; display: block; }
/* Inline SVG ikona bez explicitních rozměrů → rozumný default (ne 300×150 px).
   :where() = nulová specificita → jakékoli cílené pravidlo (.parent svg{…}) ji přebije.
   Brání probliknutí „obří ikony" při navigaci / pozdě načteném page-CSS. */
:where(svg:not([width]):not([height])) { width: 1.5rem; height: 1.5rem; }
h1, h2, h3, h4, h5, h6 { color: var(--color-primary); line-height: 1.25; font-weight: 700; }
p { margin-bottom: .75rem; }
p:last-child { margin-bottom: 0; }
ul, ol { padding-left: 1.5rem; }
code {
  font-family: 'Courier New', monospace;
  font-size: .82rem;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: .15rem .4rem;
  word-break: break-all;
}

/* ==========================================================================
   2b. UTILITY CLASSES (nahrazují opakující se inline styly)
   ========================================================================== */

/* Spacing */
.mb-0  { margin-bottom: 0; }
.mb-xs { margin-bottom: .35rem; }
.mb-sm { margin-bottom: .75rem; }
.mb-md { margin-bottom: 1rem; }
.mb-lg { margin-bottom: 1.25rem; }
.mb-xl { margin-bottom: 1.5rem; }
.mt-0  { margin-top: 0; }
.mt-xs { margin-top: .15rem; }

.mt-md { margin-top: 1rem; }
.mt-lg { margin-top: 1.25rem; }
.mt-xl { margin-top: 1.5rem; }


/* Flex */
.d-flex       { display: flex; }
.d-grid       { display: grid; }
.d-none       { display: none; }
.d-inline     { display: inline-block; }
.flex-1       { flex: 1; min-width: 0; }
.flex-shrink-0 { flex-shrink: 0; }
.flex-center  { display: flex; align-items: center; }
.flex-between { display: flex; align-items: center; justify-content: space-between; }
.flex-end     { display: flex; justify-content: flex-end; }
.flex-wrap    { flex-wrap: wrap; }
.gap-xs  { gap: .25rem; }
.gap-sm  { gap: .5rem; }
.gap-md  { gap: .75rem; }
.gap-lg  { gap: 1rem; }

/* Typography */
.text-xs    { font-size: .75rem; }
.text-sm    { font-size: .82rem; }
.text-md    { font-size: .88rem; }


.fw-500     { font-weight: 500; }
.fw-600     { font-weight: 600; }
.fw-700     { font-weight: 700; }
.fw-800     { font-weight: 800; }
.text-muted { color: var(--color-text-muted); }
.text-white { color: #fff; }
.text-accent { color: var(--color-accent); }
.text-danger { color: var(--color-danger); }
.text-success { color: #16a34a; }
.text-sep   { color: var(--color-slate-300); }
.text-right { text-align: right; }
.text-center { text-align: center; }
.border-b { border-bottom: 1px solid var(--color-border); }

/* Card body reset & card section title */
.card__body--np { padding: 0; }
.card__body--pad { padding: 1.25rem 1.5rem; }
.card-section-title {
  padding: 1rem 1.5rem;
  border-bottom: 1px solid var(--color-border);
  font-size: .88rem;
  font-weight: 700;
  color: var(--color-primary);
}
/* Resource detail row (key-value pairs in card lists) */
.detail-row {
  display: flex;
  padding: .6rem 1.5rem;
  border-bottom: 1px solid var(--color-border);
  font-size: .82rem;
}
.detail-row__label {
  flex-shrink: 0;
  font-weight: 600;
  color: var(--color-text);
}
.detail-row__label--w140 { width: 140px; }
.detail-row__label--w160 { width: 160px; }
/* Table header small uppercase */
.th-sm {
  padding: .65rem 1rem;
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .04em;
}
/* Grid 2-col / 4-col helpers */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); }
/* Inline form hint (tiny) */
.form-hint-xs {
  font-size: .68rem;
  color: var(--color-text-muted);
  margin: .2rem 0 0;
}

/* Form label block (replaces repeated inline label styling) */
.form-label-block {
  font-weight: 600;
  font-size: .85rem;
  margin-bottom: .35rem;
  display: block;
}

/* Section heading */
.section-heading {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--color-text);
}

/* Actions row (form submit area) */
.actions-row {
  display: flex;
  gap: .75rem;
  justify-content: flex-end;
}

/* Info table row (admin detail etc.) */
.info-row {
  padding: 2px 12px 2px 0;
  color: #6e7389;
}


/* Hint text below form fields */


/* Form control sizing */
.form-control--lg {
  font-size: .92rem;
  padding: .6rem .85rem;
}
.form-control--xl {
  font-size: .95rem;
  padding: .65rem .9rem;
}

/* Icon in button (vertical alignment fix) */
.btn-icon {
  vertical-align: middle;
  margin-right: .35rem;
  margin-top: -1px;
}

/* ==========================================================================
   3. LAYOUT
   ========================================================================== */
:root {
  --app-content-width: 90%;
  --app-content-max: 1800px;
  --app-content-padding: 1.25rem;
}

.container {
  width: var(--app-content-width);
  max-width: var(--app-content-max);
  margin: 0 auto;
  padding: 0 var(--app-content-padding);
}

/* Tablet+ mobile: full width padding */
@media (max-width: 900px) {
  :root { --app-content-width: 100%; --app-content-padding: 1rem; }
}
@media (max-width: 520px) {
  :root { --app-content-padding: .75rem; }
}

.container--narrow {
  width: 100%;
  max-width: 740px;
  margin: 0 auto;
  padding: 0 1.5rem;
}

.main-content {
  flex: 1;
  padding: 2rem 0;
}

/* ==========================================================================
   4. NAVBAR
   ========================================================================== */
.navbar {
  background: #1a2035;
  box-shadow: 0 1px 3px rgba(0,0,0,.15);
  position: sticky;
  top: 0;
  z-index: 200;
}
/* 2026-05-29 (v0.61.26): defensive fix — zaručí že navbar tlačítka jsou
 * vždy klikatelná i kdyby nějaký invisible overlay zůstal v DOM. user QA
 * report: navbar nefunguje po scrollu od v0.49.3+ notif modal změn. */
.navbar,
.navbar *,
.navbar__inner,
.navbar__brand,
.navbar__links,
.navbar__links a,
.navbar__logout,
.navbar__search-toggle,
.navbar__notif-btn {
  pointer-events: auto !important;
}

.navbar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 48px;
  gap: .85rem;
}

.navbar__brand {
  display: flex;
  align-items: center;
  gap: .55rem;
  flex-shrink: 0;
}

.navbar__brand-link {
  display: flex;
  align-items: center;
  gap: .55rem;
  text-decoration: none;
  transition: opacity .15s;
}
.navbar__brand-link:hover { opacity: .8; text-decoration: none; }

.navbar__logo-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  flex-shrink: 0;
  text-decoration: none;
}

.navbar__logo-icon svg {
  width: 41.14px;
  height: 41.14px;
  stroke-width: 1.6;
}

.navbar__logo-text {
  font-weight: 800;
  font-size: 1.5125rem;
  color: #fff;
  text-decoration: none;
  transition: opacity .15s;
  letter-spacing: -.02em;
}
.navbar__logo-text span { color: var(--color-accent-lighter); }
.navbar__logo-text:hover { color: #fff; text-decoration: none; }

.navbar__hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: .4rem;
}
.navbar__hamburger span {
  display: block;
  width: 22px;
  height: 2px;
  background: rgba(255,255,255,.85);
  border-radius: 2px;
  transition: var(--transition);
}

.navbar__links {
  display: flex;
  align-items: center;
  gap: .2rem;
  list-style: none;
  padding: 0;
  margin: 0;
}

.navbar__links a {
  color: rgba(255,255,255,.82);
  padding: .4rem .85rem;
  border-radius: var(--radius-sm);
  font-size: .9rem;
  font-weight: 500;
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: .3rem;
  transition: background var(--transition), color var(--transition);
}
.navbar__links a:hover,
.navbar__links a.active {
  background: rgba(255,255,255,.16);
  color: #fff;
  text-decoration: none;
}

.navbar__logout {
  margin-left: .5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 34px;
  width: 34px;
  border-radius: 17px;
  color: rgba(255,255,255,.55);
  transition: color .2s, background .2s;
}
.navbar__logout:hover {
  color: #fff;
  background: rgba(255,255,255,.12);
}
.navbar__logout-icon { display: block; flex-shrink: 0; }

/* Zařízení nav icon — vertikální RVG senzor, otočený o 180° (kabel směřuje nahoru), bez animací */
.nav-icon-zarizeni { transform: rotate(180deg); transform-origin: center; }
.nav-icon-zarizeni__sensor,
.nav-icon-zarizeni__led { animation: none !important; }
.navbar__logout-text { display: none; }

/* Navbar role switch (toggle slider) */
/* ── Global search v header baru (Task I) ──────────────── */
.navbar__search-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: transparent;
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 8px;
  color: rgba(255,255,255,.75);
  cursor: pointer;
  margin-left: auto;
  margin-right: .5rem;
  transition: background .15s, color .15s, border-color .15s;
  flex-shrink: 0;
}
.navbar__search-toggle:hover {
  background: rgba(255,255,255,.1);
  color: #fff;
  border-color: rgba(255,255,255,.3);
}
.navbar__search-wrap {
  flex: 1 1 auto;
  position: relative;
  max-width: 620px;
  margin-left: auto;
  margin-right: .5rem;
}
.navbar__search-inner {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .85rem;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 10px;
  transition: background .15s, border-color .15s;
}
.navbar__search-inner:focus-within {
  background: rgba(255,255,255,.18);
  border-color: rgba(255,255,255,.45);
}
.navbar__search-icon {
  color: rgba(255,255,255,.6);
  flex-shrink: 0;
}
.navbar__search-inner input {
  flex: 1;
  background: transparent;
  border: none;
  color: #fff;
  font-size: .92rem;
  outline: none;
  padding: 0;
  font-family: inherit;
}
.navbar__search-inner input::placeholder {
  color: rgba(255,255,255,.55);
}
.navbar__search-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  background: transparent;
  border: none;
  color: rgba(255,255,255,.6);
  cursor: pointer;
  border-radius: 6px;
  flex-shrink: 0;
}
.navbar__search-close:hover {
  color: #fff;
  background: rgba(255,255,255,.12);
}
.navbar__search-results {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  box-shadow: 0 12px 40px rgba(0,0,0,.25);
  max-height: 440px;
  overflow-y: auto;
  z-index: 900; /* Pod modaly (1000+), nad běžným obsahem */
}
.navbar__search-group {
  border-bottom: 1px solid var(--color-border);
}
.navbar__search-group:last-child { border-bottom: none; }
.navbar__search-group-title {
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--color-text-muted);
  padding: .65rem 1rem .35rem;
  background: var(--color-surface-alt);
  display: flex;
  align-items: center;
  gap: .4rem;
}
.navbar__search-item {
  display: block;
  padding: .65rem 1rem;
  border-bottom: 1px solid var(--color-slate-100);
  text-decoration: none;
  color: var(--color-text);
  transition: background .12s;
}
.navbar__search-item:last-child { border-bottom: none; }
.navbar__search-item:hover,
.navbar__search-item.is-active {
  background: #f0fdfa;
  color: var(--color-accent);
  text-decoration: none;
}
.navbar__search-item-label {
  font-size: .9rem;
  font-weight: 600;
  color: var(--color-primary);
}
.navbar__search-item-sub {
  font-size: .75rem;
  color: var(--color-text-muted);
  margin-top: .15rem;
}
.navbar__search-empty {
  padding: 1.25rem 1rem;
  text-align: center;
  color: var(--color-text-muted);
  font-size: .85rem;
}

/* Když je search rozbalený, pravá část menu se skryje */
.navbar--searching .navbar__links { display: none !important; }
.navbar--searching .navbar__hamburger { display: none !important; }

@media (max-width: 768px) {
  .navbar__search-wrap { max-width: none; margin-right: 0; }
}

.navbar__role-switch {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  text-decoration: none;
  cursor: pointer;
  padding: .2rem .1rem;
  border-radius: 20px;
  transition: opacity .2s;
}
.navbar__role-switch:hover { opacity: .85; text-decoration: none; }
.navbar__role-switch-label {
  font-size: .7rem;
  font-weight: 600;
  color: rgba(255,255,255,.35);
  letter-spacing: .02em;
  transition: color .2s;
}
.navbar__role-switch-label--active {
  color: #fff;
}
.navbar__role-switch-track {
  position: relative;
  width: 32px;
  height: 18px;
  background: rgba(255,255,255,.2);
  border-radius: 9px;
  flex-shrink: 0;
  transition: background .2s;
}
.navbar__role-switch:hover .navbar__role-switch-track {
  background: rgba(255,255,255,.3);
}
.navbar__role-switch-knob {
  position: absolute;
  top: 2px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--color-accent);
  box-shadow: 0 1px 3px rgba(0,0,0,.3);
  transition: left .2s;
}
.navbar__role-switch-knob--left  { left: 2px; }
.navbar__role-switch-knob--right { left: 16px; }


@media (max-width: 768px) {
  .navbar__role-switch { margin: .25rem 0; }
}

/* Navbar admin log */


/* ── Admin top-nav dropdown trigger (Dokumenty · Klienti · Systém · Přehledy · Exporty · Wiki · Blog) ── */
.navbar__adm-drop {
  position: relative;
  display: inline-block;
  margin-left: .5rem;
}
.navbar__adm-drop-trigger {
  margin-left: 0;
  background: none;
  border: none;
  outline: none;
  cursor: pointer;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 34px;
  width: 34px;
  border-radius: 17px;
  color: rgba(255,255,255,.55);
  transition: color .2s, background .2s;
  position: relative;
}
.navbar__adm-drop-trigger:hover {
  color: #fff;
  background: rgba(255,255,255,.12);
}
.navbar__adm-drop.open .navbar__adm-drop-trigger {
  color: #fff;
  background: rgba(255,255,255,.18);
}
.navbar__adm-drop-menu {
  display: none;
  position: absolute;
  right: 0;
  left: auto;
  top: calc(100% + 8px);
  z-index: 1000;
  min-width: 200px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  padding: .35rem 0;
}
.navbar__adm-drop.open > .navbar__adm-drop-menu {
  display: block !important;
  animation: dropIn .15s ease;
}
.navbar__adm-drop-menu .dropdown__item {
  color: var(--color-text);
  padding: .55rem 1.1rem;
  font-size: .88rem;
  display: block;
  text-decoration: none;
}
.navbar__adm-drop-menu .dropdown__item:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
  text-decoration: none;
}
.navbar__adm-drop-title {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .75rem 1.1rem .65rem;
  margin: 0 0 .25rem;
  font-size: .72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--color-primary);
  background: linear-gradient(180deg, var(--color-surface-alt) 0%, var(--color-surface) 100%);
  border-bottom: 1px solid var(--color-border);
}
.navbar__adm-drop-title svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  color: var(--color-accent);
}
.navbar__adm-drop-toggle {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
}
.navbar__adm-drop-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: 0 0 0 2px rgba(0,0,0,.05);
}
@media (max-width: 1024px) {
  .navbar__adm-drop-menu {
    position: fixed;
    right: .5rem;
    left: auto;
    max-width: calc(100vw - 1rem);
    max-height: calc(100vh - 80px);
    max-height: calc(100dvh - 80px);
    overflow-y: auto;
    overscroll-behavior: contain;
  }
}

/* Navbar notifications */
.navbar__notif-wrap {
  position: relative;
  /* Notifikační zvonek vždy úplně první v navbar__links (před „Přehled"/„Dokumenty"…).
     Flexbox order, takže DOM zůstává tam kde je (admin i doctor branch) — 2026-05-22. */
  order: -1;
}

.navbar__notif-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  width: 34px;
  height: 34px;
  border: none;
  border-radius: 17px;
  background: none;
  color: rgba(255,255,255,.65);
  cursor: pointer;
  transition: background .2s, color .2s;
}
.navbar__notif-btn:hover {
  background: rgba(255,255,255,.15);
  color: #fff;
}

/* Icon-only navbar link (Číselníky atd. — pro doctor navbar) */


@keyframes notifRing {
  0%   { transform: rotate(0); }
  15%  { transform: rotate(14deg); }
  30%  { transform: rotate(-12deg); }
  45%  { transform: rotate(8deg); }
  60%  { transform: rotate(-6deg); }
  75%  { transform: rotate(3deg); }
  100% { transform: rotate(0); }
}

.navbar__notif-btn--ring {
  animation: notifRing .8s ease;
}

.navbar__notif-badge {
  position: absolute;
  top: 1px;
  right: 0;
  min-width: 17px;
  height: 17px;
  padding: 0 4px;
  border-radius: 9px;
  background: #ef4444;
  color: #fff;
  font-size: .65rem;
  font-weight: 700;
  line-height: 17px;
  text-align: center;
  pointer-events: none;
}

.navbar__notif-panel {
  display: none;
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  width: 460px;
  max-width: calc(100vw - 1.5rem);
  max-height: 500px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: 0 8px 30px rgba(0,0,0,.18);
  z-index: 300;
  overflow: hidden;
}
.navbar__notif-panel.open {
  display: block;
}

/* ── Modal varianta (doctor bell — větší okno uprostřed obrazovky) ──────── */
.navbar__notif-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, .55);
  backdrop-filter: blur(3px);
  z-index: 9998;
  animation: notifBackdropIn .18s ease;
}
.navbar__notif-backdrop.open { display: block; }
@keyframes notifBackdropIn { from { opacity: 0; } to { opacity: 1; } }

.navbar__notif-panel--modal.navbar__notif-panel {
  position: fixed;
  top: 50%;
  left: 50%;
  right: auto;
  transform: translate(-50%, -50%);
  width: 65vw;
  height: 75vh;
  max-width: 65vw;
  max-height: 75vh;
  display: none;
  flex-direction: column;
  border-radius: 20px;
  box-shadow: 0 30px 80px rgba(15, 23, 42, .28), 0 0 0 1px rgba(148, 163, 184, .14);
  z-index: 9999;
  overflow: hidden;
  background: #fff;
}
.navbar__notif-panel--modal.navbar__notif-panel.open {
  display: flex;
  animation: notifPanelIn .22s cubic-bezier(.25, 1.2, .5, 1);
}
@keyframes notifPanelIn {
  from { opacity: 0; transform: translate(-50%, -48%) scale(.98); }
  to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

/* ── Header — editoriální minimalismus ─────────────────────────────────── */
.navbar__notif-panel--modal .navbar__notif-header {
  flex-shrink: 0;
  padding: 1.15rem 1.5rem;
  background: #fff;
  color: var(--color-text);
  border-bottom: 1px solid #eef2f7;
  gap: .75rem;
  position: relative;
}
.navbar__notif-panel--modal .navbar__notif-header strong {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--color-primary);
  letter-spacing: -.01em;
  line-height: 1.15;
}
.navbar__notif-panel--modal .navbar__notif-count {
  background: var(--color-accent);
  color: #fff;
  font-size: .72rem;
  padding: .2rem .55rem;
  font-weight: 800;
  border-radius: 999px;
  letter-spacing: .02em;
}
.navbar__notif-panel--modal .navbar__notif-all-btn {
  background: transparent;
  color: var(--color-accent);
  padding: .5rem .9rem;
  font-size: .78rem;
  font-weight: 700;
  border-radius: 999px;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  transition: background .15s, color .15s;
  margin-left: auto;
  box-shadow: inset 0 0 0 1.5px var(--color-accent);
}
.navbar__notif-panel--modal .navbar__notif-all-btn:hover {
  background: var(--color-accent);
  color: #fff;
  text-decoration: none;
}
.navbar__notif-modal-close {
  background: #f1f5f9;
  color: #475569;
  border: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 0; /* glyph přes ::before */
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, color .15s, transform .15s;
  flex-shrink: 0;
  padding: 0;
  margin-left: auto;
}
.navbar__notif-modal-close::before { content: "\2715"; font-size: 1.15rem; font-weight: 400; line-height: 1; color: inherit; }
.navbar__notif-modal-close:hover { background: #fee2e2; color: #b91c1c; transform: rotate(90deg); }

/* ── Filtry (tags) ──────────────────────────────────────────────────────── */
.navbar__notif-panel--modal .navbar__notif-tags {
  flex-shrink: 0;
  padding: .75rem 1.5rem;
  border-bottom: 1px solid #eef2f7;
  background: #fff;
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}

/* ── Hide sloupcový thead (nový dvouřádkový layout ho nepotřebuje) ─────── */
.navbar__notif-panel--modal .navbar__notif-thead { display: none; }

/* ── Seznam ─────────────────────────────────────────────────────────────── */
.navbar__notif-panel--modal .navbar__notif-list {
  flex: 1 1 0% !important;
  min-height: 0 !important;
  max-height: none !important;
  height: auto !important;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 0;
  display: block;
  background: #fff;
}
/* Last section vyplní zbytek listu, aby pozadí pokračovalo až ke konci */
.navbar__notif-panel--modal .navbar__notif-section:last-child {
  min-height: 100%;
}

/* ── Sekce: Akce + Chronologické skupiny (Dnes/Včera/...) ─────────────── */
.navbar__notif-panel--modal .navbar__notif-section {
  display: block;
}
.navbar__notif-panel--modal .navbar__notif-section-header {
  position: sticky;
  z-index: 2;
  padding: .5rem 1.75rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .015em;
  border-bottom: 1px solid #e2e8f0;
  display: flex;
  align-items: center;
  gap: .5rem;
}
.navbar__notif-panel--modal .navbar__notif-section--actions .navbar__notif-section-header {
  top: 0;
  background: linear-gradient(180deg, #fef2f2 0%, #fef7f7 100%);
  color: #991b1b;
  border-bottom-color: #fecaca;
  font-size: .82rem;
  text-transform: none;
}
.navbar__notif-panel--modal .navbar__notif-section--info .navbar__notif-section-header {
  top: 0;
  background: #f8fafc;
  color: #64748b;
  text-transform: uppercase;
  font-size: .72rem;
  letter-spacing: .04em;
}
.navbar__notif-panel--modal .navbar__notif-section--actions + .navbar__notif-section--info .navbar__notif-section-header,
.navbar__notif-panel--modal .navbar__notif-section--info ~ .navbar__notif-section--info .navbar__notif-section-header {
  top: 36px; /* Pod akčním headerem (cca 38px) */
}
.navbar__notif-panel--modal .navbar__notif-section-count {
  background: rgba(220, 38, 38, .12);
  color: #991b1b;
  padding: .12rem .5rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 700;
  margin-left: auto;
}
.navbar__notif-panel--modal .navbar__notif-section--actions {
  background: #fef7f7;
}

/* ── Akční řádek — levý červený strip + bg ──────────────────────────── */
.navbar__notif-panel--modal .navbar__notif-row--actionable {
  border-left: 3px solid #dc2626;
  background: #fff;
}
.navbar__notif-panel--modal .navbar__notif-row--actionable:hover {
  background: #fef9f9;
}

/* ── Inline kategorie badge (drop separate column) ─────────────────── */
.navbar__notif-panel--modal .navbar__notif-cat-inline {
  display: inline-flex;
  align-items: center;
  padding: .12rem .55rem;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .015em;
  white-space: nowrap;
  flex-shrink: 0;
  max-width: 110px;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ── Inline akční tlačítka (uvnitř akčního řádku) ───────────────────── */
.navbar__notif-panel--modal .navbar__notif-row-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: .3rem;
  flex-shrink: 0;
  min-width: 110px;
}
.navbar__notif-panel--modal .navbar__notif-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .35rem .65rem;
  font-size: .74rem;
  font-weight: 700;
  border-radius: 6px;
  border: 1px solid transparent;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: filter .12s, transform .12s;
  line-height: 1.2;
}
.navbar__notif-panel--modal .navbar__notif-action-btn:hover {
  filter: brightness(.95);
  text-decoration: none;
}
.navbar__notif-panel--modal .navbar__notif-action-btn:active {
  transform: translateY(1px);
}
.navbar__notif-panel--modal .navbar__notif-action-btn:disabled {
  opacity: .5;
  cursor: not-allowed;
}
.navbar__notif-panel--modal .navbar__notif-action-btn--accept {
  background: #dcfce7;
  color: #166534;
  border-color: #86efac;
}
.navbar__notif-panel--modal .navbar__notif-action-btn--reject {
  background: #fef2f2;
  color: #991b1b;
  border-color: #fecaca;
}
.navbar__notif-panel--modal .navbar__notif-action-btn--neutral {
  background: #f1f5f9;
  color: #475569;
  border-color: #e2e8f0;
}

/* ── Akční řádek: časový sloupec se schová pod buttony ─────────────── */
.navbar__notif-panel--modal .navbar__notif-row--actionable .navbar__notif-c-time {
  display: none;
}
.navbar__notif-panel--modal .navbar__notif-row--actionable {
  grid-template-columns: 40px 1fr auto;
}

/* ── Notif Detail Modal (unified styling jako main panel) ────────── */
#notifDetailModal {
  position: fixed; inset: 0;
  display: none; align-items: center; justify-content: center;
  background: rgba(15, 23, 42, .55);
  backdrop-filter: blur(3px);
  z-index: 9999;
  animation: notifBackdropIn .18s ease;
}
#notifDetailModal.open { display: flex; }
.navbar__notif-detail-card {
  width: 65vw;
  height: 75vh;
  max-width: 65vw;
  max-height: 75vh;
  background: #fff;
  border-radius: 20px;
  box-shadow: 0 30px 80px rgba(15, 23, 42, .28), 0 0 0 1px rgba(148, 163, 184, .14);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  position: relative;
  animation: notifPanelIn .22s cubic-bezier(.25, 1.2, .5, 1);
}
.navbar__notif-detail-header {
  flex-shrink: 0;
  padding: 1.15rem 1.75rem;
  background: #fff;
  border-bottom: 1px solid #eef2f7;
  display: flex;
  align-items: flex-start;
  gap: .75rem;
}
.navbar__notif-detail-header__title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-primary);
  letter-spacing: -.01em;
  line-height: 1.3;
  margin: 0 0 .2rem 0;
}
.navbar__notif-detail-header__meta {
  font-size: .78rem;
  color: #94a3b8;
  letter-spacing: .015em;
}
.navbar__notif-detail-header__body { flex: 1; min-width: 0; }
.navbar__notif-detail-close {
  background: #f1f5f9; color: #475569; border: 0;
  width: 32px; height: 32px; border-radius: 50%; cursor: pointer;
  font-size: 0; line-height: 1; /* glyph přes ::before */
  display: flex; align-items: center; justify-content: center;
  transition: background .15s, color .15s, transform .15s;
  flex-shrink: 0; padding: 0;
}
.navbar__notif-detail-close::before { content: "\2715"; font-size: 1.15rem; font-weight: 400; line-height: 1; color: inherit; }
.navbar__notif-detail-close:hover { background: #fee2e2; color: #b91c1c; transform: rotate(90deg); }

.navbar__notif-detail-body {
  flex: 1 1 0%;
  min-height: 0;
  overflow-y: auto;
  padding: 1.5rem 1.75rem;
  font-size: .95rem;
  color: var(--color-text);
  line-height: 1.7;
}
.navbar__notif-detail-body p:first-child { margin-top: 0; }
.navbar__notif-detail-body p:last-child { margin-bottom: 0; }

.navbar__notif-detail-footer {
  flex-shrink: 0;
  padding: 1rem 1.75rem;
  background: #fafbfc;
  border-top: 1px solid #eef2f7;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .6rem;
}
.navbar__notif-detail-footer .btn { min-width: 110px; }

@media (max-width: 800px) {
  .navbar__notif-detail-card {
    width: 95vw; max-width: 95vw;
    height: 90vh; max-height: 90vh;
    border-radius: 14px;
  }
}

/* ── Fade-out animace pro dokončené akce ──────────────────────────── */
.navbar__notif-panel--modal .navbar__notif-row--fading {
  opacity: 0;
  transform: translateX(20px);
  transition: opacity .25s, transform .25s, max-height .3s ease .25s, padding .3s ease .25s;
  max-height: 100px;
  pointer-events: none;
  overflow: hidden;
}
.navbar__notif-panel--modal .navbar__notif-row--fading.is-collapsed {
  max-height: 0;
  padding-top: 0;
  padding-bottom: 0;
  border-bottom-width: 0;
}

/* ── Item — klidný Gmail/Linear styl s kruhovým avatarem ──────────────── */
.navbar__notif-panel--modal .navbar__notif-item {
  display: grid;
  grid-template-columns: 32px 1fr auto;
  column-gap: .85rem;
  align-items: center;
  padding: .65rem 1.75rem;
  border-bottom: 1px solid #f1f5f9;
  color: var(--color-text);
  text-decoration: none;
  transition: background .15s;
  position: relative;
}
.navbar__notif-panel--modal .navbar__notif-item:last-child { border-bottom: 0; }
.navbar__notif-panel--modal .navbar__notif-item:hover {
  background: #f8fafc;
  text-decoration: none;
}

/* Avatar — kruh 40×40 se soft colored bg + SVG ikona typu */
.navbar__notif-panel--modal .navbar__notif-c-type {
  grid-column: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.navbar__notif-panel--modal .navbar__notif-c-type .navbar__notif-type-badge { display: none; }
.navbar__notif-panel--modal .navbar__notif-icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  background: #f1f5f9;
  color: #64748b;
  box-shadow: none;
  transition: transform .2s cubic-bezier(.25, 1.2, .5, 1);
}
.navbar__notif-panel--modal .navbar__notif-icon svg { width: 15px; height: 15px; }
.navbar__notif-panel--modal .navbar__notif-item:hover .navbar__notif-icon {
  transform: scale(1.06);
}

/* Typ-specific barvy avataru (soft pastelové pozadí + sytá barva ikony) */
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="form"] .navbar__notif-icon             { background: #ccfbf1; color: #0f766e; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="supplement"] .navbar__notif-icon       { background: #fef3c7; color: #b45309; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="edited"] .navbar__notif-icon           { background: #dbeafe; color: #1d4ed8; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="deletion"] .navbar__notif-icon         { background: #fee2e2; color: #b91c1c; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="admin_msg"] .navbar__notif-icon        { background: #e0e7ff; color: #4338ca; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="form_request"] .navbar__notif-icon     { background: #ffedd5; color: #c2410c; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="mention"] .navbar__notif-icon          { background: #ede9fe; color: #6d28d9; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="tooth_alert_due"] .navbar__notif-icon  { background: #fee2e2; color: #b91c1c; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="tooth_alert_invite"] .navbar__notif-icon { background: #ffedd5; color: #c2410c; }

/* Tělo — dvě linie (klient, typ · kontext · lékař) */
.navbar__notif-panel--modal .navbar__notif-item-body {
  grid-column: 2;
  display: flex;
  flex-direction: column;
  gap: .25rem;
  min-width: 0;
}
.navbar__notif-panel--modal .navbar__notif-item-line1 {
  display: flex;
  align-items: center;
  gap: .5rem;
  min-width: 0;
}
/* Eyebrow je skryt — typ se projevuje barvou avataru + textovým "type label" v line2 */
.navbar__notif-panel--modal .navbar__notif-eyebrow { display: none; }

.navbar__notif-panel--modal .navbar__notif-c-client {
  font-weight: 700;
  color: var(--color-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .9rem;
  letter-spacing: -.01em;
  line-height: 1.25;
  min-width: 0;
}
.navbar__notif-panel--modal .navbar__notif-item-line2 {
  display: flex;
  align-items: center;
  gap: .4rem;
  font-size: .74rem;
  color: #64748b;
  min-width: 0;
  line-height: 1.25;
}
.navbar__notif-panel--modal .navbar__notif-item-body { gap: .12rem; }
.navbar__notif-panel--modal .navbar__notif-type-label {
  font-weight: 600;
  font-size: .78rem;
  flex-shrink: 0;
  letter-spacing: -.005em;
}
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="form"] .navbar__notif-type-label             { color: #0f766e; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="supplement"] .navbar__notif-type-label       { color: #b45309; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="edited"] .navbar__notif-type-label           { color: #1d4ed8; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="deletion"] .navbar__notif-type-label         { color: #b91c1c; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="admin_msg"] .navbar__notif-type-label        { color: #4338ca; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="form_request"] .navbar__notif-type-label     { color: #c2410c; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="mention"] .navbar__notif-type-label          { color: #6d28d9; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="tooth_alert_due"] .navbar__notif-type-label  { color: #b91c1c; }
.navbar__notif-panel--modal .navbar__notif-item[data-ntype="tooth_alert_invite"] .navbar__notif-type-label { color: #c2410c; }

.navbar__notif-panel--modal .navbar__notif-c-ctx {
  color: #475569;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 500;
}
.navbar__notif-panel--modal .navbar__notif-item-sep {
  width: 3px;
  height: 3px;
  background: #cbd5e1;
  border-radius: 50%;
  flex-shrink: 0;
}
.navbar__notif-panel--modal .navbar__notif-c-doctor {
  color: #94a3b8;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .78rem;
}

/* Čas vpravo */
.navbar__notif-panel--modal .navbar__notif-c-time {
  grid-column: 3;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: .15rem;
  line-height: 1.15;
  flex-shrink: 0;
  padding-right: 0;
  min-width: 70px;
}
.navbar__notif-panel--modal .navbar__notif-time-rel {
  font-weight: 700;
  color: #475569;
  font-size: .78rem;
  letter-spacing: -.005em;
}
.navbar__notif-panel--modal .navbar__notif-time-abs,
.navbar__notif-panel--modal .navbar__notif-time-abs-full {
  color: #94a3b8;
  font-size: .7rem;
  font-variant-numeric: tabular-nums;
}
.navbar__notif-panel--modal .navbar__notif-c-arrow {
  display: none;
}

.navbar__notif-panel--modal .navbar__notif-all {
  flex-shrink: 0;
  display: block;
  padding: .85rem 1.75rem;
  text-align: center;
  font-size: .82rem;
  font-weight: 600;
  color: #0f766e;
  background: #fafbfc;
  border-top: 1px solid #eef2f7;
  text-decoration: none;
  transition: background .15s, color .15s;
}
.navbar__notif-panel--modal .navbar__notif-all:hover,
.navbar__notif-panel--modal .navbar__notif-all:focus {
  background: #ccfbf1;
  color: #115e59;
  text-decoration: none;
}
.navbar__notif-panel--modal .navbar__notif-empty {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 3rem 1rem;
  color: #94a3b8;
  font-size: .95rem;
}
.navbar__notif-panel--modal .navbar__notif-empty svg {
  margin-bottom: .75rem;
  opacity: .6;
}

/* Default (dropdown) variant hides the column header */
.navbar__notif-panel:not(.navbar__notif-panel--modal) .navbar__notif-thead { display: none; }

@media (max-width: 820px) {
  .navbar__notif-panel--modal .navbar__notif-header { padding: 1.1rem 1.25rem .9rem; }
  .navbar__notif-panel--modal .navbar__notif-header::before { left: 1.25rem; }
  .navbar__notif-panel--modal .navbar__notif-tags { padding: .7rem 1.25rem; }
  .navbar__notif-panel--modal .navbar__notif-item { padding: .85rem 1.25rem .85rem 0; column-gap: 1rem; }
  .navbar__notif-panel--modal .navbar__notif-c-doctor { display: none; }
  .navbar__notif-panel--modal .navbar__notif-c-client { font-size: .92rem; }
}
@media (max-width: 640px) {
  .navbar__notif-panel--modal.navbar__notif-panel {
    width: calc(100vw - 1rem);
    height: 90vh;
    max-height: 90vh;
    border-radius: 14px;
  }
  .navbar__notif-panel--modal .navbar__notif-all-btn span,
  .navbar__notif-panel--modal .navbar__notif-all-btn { font-size: .72rem; padding: .4rem .7rem; }
  .navbar__notif-panel--modal .navbar__notif-item { padding: .8rem 1rem .8rem 0; }
}

.navbar__notif-header {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .85rem 1rem;
  border-bottom: 1px solid var(--color-border);
  font-size: .82rem;
  color: var(--color-text);
}

.navbar__notif-count {
  background: #ef4444;
  color: #fff;
  font-size: .7rem;
  font-weight: 700;
  padding: .1rem .45rem;
  border-radius: 9px;
  flex-shrink: 0;
}

.navbar__notif-empty {
  padding: 2rem 1rem;
  text-align: center;
  font-size: .85rem;
  color: var(--color-text-muted);
}

.navbar__notif-list {
  margin: 0;
  padding: 0;
  max-height: 340px;
  overflow-y: auto;
}

.navbar__notif-item {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: .7rem;
  padding: .65rem 1rem;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
  transition: background .15s;
}
.navbar__notif-item:hover {
  background: rgba(13,148,136,.05);
  text-decoration: none;
}

/* Ikona typu formuláře */
.navbar__notif-icon {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: var(--color-surface-alt, var(--color-slate-100));
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-accent);
}
.navbar__notif-icon svg { width: 18px; height: 18px; }

/* Tělo notifikace */
.navbar__notif-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: .15rem;
}

/* Řádek 1: jméno + badge */
.navbar__notif-r1 {
  display: flex;
  align-items: center;
  gap: .4rem;
}

/* Řádek 2: typ, lékař, čas */
.navbar__notif-r2 {
  display: flex;
  align-items: center;
  gap: .3rem;
}

.navbar__notif-name {
  font-size: .88rem;
  font-weight: 700;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.navbar__notif-form {
  font-size: .75rem;
  font-weight: 500;
  color: var(--color-accent);
  white-space: nowrap;
}

.navbar__notif-doctor {
  font-size: .72rem;
  font-weight: 500;
  color: var(--color-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100px;
}

.navbar__notif-time {
  font-size: .72rem;
  font-variant-numeric: tabular-nums;
  color: var(--color-text-muted);
  white-space: nowrap;
}

.navbar__notif-sep {
  color: var(--color-text-muted);
  opacity: .3;
  font-size: .7rem;
}

/* Akční tlačítka */


/* `.modal-notif` prefix bumpuje specificitu nad `.navbar__links a` (0,1,1) → (0,2,0+).
 * Bez prefixu by navbar leak (modal je v <ul.navbar__links>) přebarvil link na bílo. */
.modal-notif .navbar__notif-all,
.navbar__notif-panel .navbar__notif-all {
  display: block;
  padding: .7rem 1rem;
  text-align: center;
  font-size: .8rem;
  font-weight: 600;
  color: var(--color-accent);
  background: transparent;
  text-decoration: none;
  border-top: 1px solid var(--color-border);
}
.modal-notif .navbar__notif-all:hover,
.navbar__notif-panel .navbar__notif-all:hover {
  background: rgba(13,148,136,.06);
  color: var(--color-accent-hover);
  text-decoration: none;
}
/* Modifikátor pro umístění v hlavičce panelu (nahradil count badge):
 * kompaktní pill místo full-width spodního linku. Pořadí po base pravidle
 * přebíjí display:block/border-top/padding při shodné specificity (0,2,0). */
.modal-notif .navbar__notif-all--header {
  display: inline-block;
  flex-shrink: 0;
  padding: .26rem .7rem;
  border: 1px solid var(--color-accent);
  border-top: 1px solid var(--color-accent);
  border-radius: 999px;
  font-size: .82rem;
  font-weight: 600;
  line-height: 1.3;
  white-space: nowrap;
}
.modal-notif .navbar__notif-all--header:hover,
.modal-notif .navbar__notif-all--header:focus {
  background: var(--color-accent);
  color: #fff;
}

/* ==========================================================================
   5. TLAČÍTKA
   ========================================================================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  padding: .5rem 1.15rem;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  font-size: .88rem;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  line-height: 1.4;
  transition: background var(--transition), color var(--transition),
              border-color var(--transition), box-shadow var(--transition),
              transform var(--transition);
}
.btn:hover { text-decoration: none; }
.btn:active { transform: translateY(1px); }

.btn--primary {
  background: var(--color-accent);
  color: #fff;
  border-color: var(--color-accent);
}
.btn--primary:hover {
  background: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
  color: #fff;
  box-shadow: 0 4px 14px rgba(13,148,136,.30);
}

.btn--secondary {
  background: var(--color-surface);
  color: var(--color-text-secondary);
  border-color: var(--color-border);
}
.btn--secondary:hover {
  background: var(--color-surface-alt);
  color: var(--color-text);
  border-color: #c5cdd8;
}

.btn--outline {
  background: transparent;
  color: var(--color-accent);
  border-color: var(--color-accent);
}
.btn--outline:hover {
  background: var(--color-accent-light);
  color: var(--color-accent-hover);
}

/* Outline bílé (v navbaru / hero na tmavém pozadí) */
.navbar__links .btn--outline {
  color: rgba(255,255,255,.85);
  border-color: rgba(255,255,255,.45);
}
.navbar__links .btn--outline:hover {
  background: rgba(255,255,255,.15);
  color: #fff;
  border-color: rgba(255,255,255,.7);
}

.btn--danger {
  background: var(--color-danger);
  color: #fff;
  border-color: var(--color-danger);
}
.btn--danger:hover { background: #b91c1c; color: #fff; }

.btn--copied {
  background: var(--color-success-light);
  color: var(--color-success);
  border-color: var(--color-success);
  pointer-events: none;
  transition: background .2s, color .2s, border-color .2s;
}

.btn--sm  { padding: .35rem .85rem; font-size: .84rem; }
.btn--xs  { padding: .22rem .6rem;  font-size: .78rem; }
.btn--lg  { padding: .75rem 1.75rem; font-size: 1.05rem; }

/* Mobile touch target increase — btn--xs je moc malý pro prst (audit P1 2026-04-17) */
@media (max-width: 640px) {
  .btn--xs { padding: .38rem .75rem; font-size: .8rem; min-height: 32px; }
}
.btn--full { width: 100%; }

.btn:disabled,
.btn[disabled] {
  opacity: .45;
  cursor: not-allowed;
  pointer-events: none;
  box-shadow: none;
}

/* Loading spinner */


@keyframes btn-spin {
  to { transform: rotate(360deg); }
}

/* ==========================================================================
   6. FLASH ZPRÁVY
   ========================================================================== */
.flash-container {
  width: var(--app-content-width);
  max-width: var(--app-content-max);
  margin: 0 auto;
  padding: .75rem var(--app-content-padding) 0;
}

.alert {
  padding: .9rem 1.1rem;
  border-radius: var(--radius);
  font-size: .92rem;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: 1.25rem;
  border: 1px solid transparent;
  line-height: 1.5;
}

.alert--success { background: var(--color-success-light); color: #065f46; border-color: #a7f3d0; }
.alert--danger,
.alert--error   { background: var(--color-danger-light);  color: #991b1b; border-color: #fecaca; }
.alert--warning { background: var(--color-warning-light); color: var(--color-warning-text); border-color: #fde68a; }
.alert--info    { background: var(--color-info-light);    color: #155e75; border-color: #a5f3fc; }

.alert__close {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1.2rem;
  line-height: 1;
  opacity: .5;
  padding: 0 .2rem;
  flex-shrink: 0;
}
.alert__close:hover { opacity: 1; }

.alert__list { margin: .25rem 0 0 1rem; padding: 0; font-size: .87rem; }
.alert__list li { margin-bottom: .2rem; }

/* ==========================================================================
   7. BADGES
   ========================================================================== */
.badge {
  display: inline-flex;
  align-items: center;
  padding: .25rem .7rem;
  border-radius: 99px;
  font-size: .78rem;
  /* unified tiny */
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}


.badge--success { background: var(--color-success-light); color: var(--color-success); }
.badge--danger  { background: var(--color-danger-light);  color: var(--color-danger); }
.badge--muted   { background: var(--color-slate-100); color: var(--color-text-muted); }
.badge--warning { background: var(--color-warning-bg); color: var(--color-warning-text); }
.badge--info    { background: #dbeafe; color: var(--color-info-strong); }

.lang-badge {
  display: inline-flex;
  align-items: center;
  padding: .12rem .4rem;
  border-radius: 99px;
  font-size: .65rem;
  font-weight: 600;
  opacity: .8;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.lang-badge--cs { background: #e0e4ed; color: var(--color-primary); }
.lang-badge--en { background: #dcfce7; color: #166534; }
.lang-badge--de { background: #fef9c3; color: #854d0e; }
.lang-badge--ua { background: #dbeafe; color: var(--color-info-strong); }
.lang-badge--ru { background: #fce7f3; color: #9d174d; }

/* ==========================================================================
   8. FORMULÁŘOVÉ PRVKY (doctor/admin stránky)
   ========================================================================== */
.form-group {
  margin-bottom: 1.15rem;
}

.form-group--inline {
  display: flex;
  align-items: center;
  gap: .5rem;
}

.form-label {
  display: block;
  font-size: .9rem;
  font-weight: 600;
  color: var(--color-text-secondary);
  margin-bottom: .4rem;
}

.required-star {
  color: var(--color-danger);
  margin-left: .15rem;
}

.form-control {
  display: block;
  width: 100%;
  padding: .55rem .85rem;
  font-size: .9rem;
  font-family: inherit;
  color: var(--color-text);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  transition: border-color var(--transition), box-shadow var(--transition);
  line-height: 1.5;
}
.form-control:focus {
  outline: none;
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(13,148,136,.12);
}
.form-control::placeholder { color: var(--color-text-muted); }
.form-control:disabled { background: var(--color-surface-alt); opacity: .7; cursor: not-allowed; }
select.form-control { cursor: pointer; }
textarea.form-control { resize: vertical; min-height: 90px; }
.phone-wrap { display: flex; gap: .4rem; }
.phone-prefix { width: 85px; flex-shrink: 0; text-align: center; }
.phone-number { flex: 1; }

.has-error .form-control { border-color: var(--color-danger); }

.input-group {
  position: relative;
  display: flex;
}
.input-group .form-control { flex: 1; }

.checkbox-label {
  display: flex;
  align-items: center;
  gap: .45rem;
  font-size: .9rem;
  color: var(--color-text-secondary);
  cursor: pointer;
}
.checkbox-label input { accent-color: var(--color-accent); }

/* ==========================================================================
   9. FOOTER
   ========================================================================== */
.footer {
  background: linear-gradient(160deg, #141b2d, #1e293b);
  color: rgba(255,255,255,.6);
  margin-top: auto;
}

.footer__inner {
  display: grid;
  grid-template-columns: 2fr 1fr 1.4fr 1fr auto;
  gap: 2rem;
  padding: 2rem 1.75rem;
  max-width: 1240px;
  margin: 0 auto;
  box-sizing: border-box;
}

.footer__logo {
  font-size: 1.1rem;
  font-weight: 800;
  color: #fff;
  display: block;
  margin-bottom: .6rem;
}

.footer__desc {
  font-size: .85rem;
  color: rgba(255,255,255,.5);
  line-height: 1.65;
  margin: 0;
}

.footer__links h4,
.footer__contact h4,
.footer__heading {
  font-size: .78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: rgba(255,255,255,.4);
  margin-bottom: .85rem;
}

.footer__links ul,
.footer__contact ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer__links li,
.footer__contact li {
  margin-bottom: .5rem;
}

.footer__links a,
.footer__contact a {
  color: rgba(255,255,255,.65);
  font-size: .88rem;
  text-decoration: none;
  transition: color .2s;
}
.footer__links a:hover,
.footer__contact a:hover { color: var(--color-accent-lighter); }

.footer__legal {
  margin-top: .5rem;
  max-width: 360px;
  line-height: 1.55;
}

.footer__demo {
  display: block;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: #fbbf24;
  margin-bottom: .15rem;
}

.footer__gdpr {
  display: block;
  font-size: .68rem;
  font-weight: 400;
  color: rgba(255,255,255,.25);
  text-transform: none;
  letter-spacing: 0;
}

.footer__time {
  display: block;
  margin-top: .4rem;
  font-size: .72rem;
  color: rgba(255,255,255,.25);
}

.footer__company-btn {
  background: none;
  border: none;
  color: rgba(255,255,255,.45);
  font: inherit;
  font-size: inherit;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  cursor: pointer;
  padding: 0;
  transition: color .2s;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 3px;
}
.footer__company-btn:hover { color: var(--color-accent-lighter); }

.footer__contact--logo {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
}

.footer__logo-btn {
  background: none;
  border: none;
  cursor: pointer;
  padding: .5rem;
  border-radius: 8px;
  transition: opacity .2s;
  opacity: .4;
}
.footer__logo-btn:hover { opacity: .85; }

.footer__company-logo {
  height: 32px;
  width: auto;
  display: block;
}

.footer__company-btn--bottom {
  font-size: .8rem;
  text-transform: none;
  letter-spacing: 0;
  font-weight: 400;
  color: rgba(255,255,255,.35);
}
.footer__company-btn--bottom:hover { color: var(--color-accent-lighter); }

.footer__bottom {
  border-top: 1px solid rgba(255,255,255,.08);
  padding: 1rem 0;
  text-align: center;
  font-size: .8rem;
  color: rgba(255,255,255,.35);
}

/* ==========================================================================
   10. LANDING PAGE
   ========================================================================== */

/* Demo banner */


/* Hero sekce */
.hero {
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 55%, #4a6b7a 100%);
  color: #fff;
  padding: 5rem 0 4rem;
  overflow: hidden;
  position: relative;
}


.hero__title {
  font-size: clamp(1.9rem, 4vw, 3rem);
  font-weight: 900;
  color: #fff;
  line-height: 1.15;
  margin-bottom: .85rem;
}


.hero__actions {
  display: flex;
  gap: .75rem;
  flex-wrap: wrap;
}

/* Hero mockup (dekorativní) */


/* Sekce obecně */
.section {
  padding: 4.5rem 0;
}


/* Features grid */


/* Formuláře list */


/* Steps */
.steps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 2rem;
  margin-top: 2.5rem;
  counter-reset: steps;
}

.step {
  text-align: center;
}


/* CTA sekce */


/* ==========================================================================
   11. AUTH (přihlášení, registrace)
   ========================================================================== */
.page-auth .main-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 3rem 1rem;
}

.page-auth .flash-container {
  width: 100%;
  max-width: 440px;
  padding: 0 0 .5rem;
}

.page-auth .container--narrow {
  max-width: 440px;
  padding: 0;
}

/* Registration page */
.page-auth--register .main-content {
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 0;
}

.reg {
  width: 100%;
  max-width: 1021px;
  margin: 0 auto;
  padding: 0 1.5rem 3rem;
}

/* Hero banner */
.reg__hero {
  text-align: center;
  padding: 2.5rem 1rem 2rem;
}

.reg__title {
  font-size: 1.65rem;
  /* unified h1 */
  font-weight: 800;
  color: var(--color-primary);
  margin-bottom: .4rem;
}

.reg__subtitle {
  font-size: .93rem;
  color: var(--color-text-muted);
  margin: 0;
  max-width: 440px;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.55;
}

/* Sections with numbered badges */
.reg__section {
  display: flex;
  gap: 1.25rem;
  margin-bottom: 1.25rem;
}

.reg__section-badge {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--color-primary);
  color: #fff;
  font-size: .9rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 1.35rem;
  box-shadow: 0 2px 8px rgba(58,64,90,.25);
}

.reg__section-body {
  flex: 1;
  min-width: 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 1.5rem 1.5rem 0.5rem;
  box-shadow: var(--shadow-sm);
}

.reg__section-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-primary);
  margin: 0 0 .15rem;
}

.reg__section-desc {
  font-size: .87rem;
  color: var(--color-text-muted);
  margin: 0 0 1.1rem;
  line-height: 1.5;
}

/* 2-col fields grid inside section */
.reg__fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 1rem;
}

.reg__field {
  margin-bottom: 1rem;
}

.reg__field--full {
  grid-column: 1 / -1;
}

/* Submit area */
.reg__submit {
  text-align: center;
  margin-top: .75rem;
}

.reg__submit .btn {
  min-width: 280px;
}

@media (max-width: 320px) {
  .reg__submit .btn { min-width: auto; }
}

.reg__login-link {
  margin-top: .9rem;
  font-size: .87rem;
  color: var(--color-text-muted);
}

/* ── Office hours table ── */
.oh-table {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  overflow: hidden;
  margin-bottom: .5rem;
}

.oh-table__head {
  display: grid;
  grid-template-columns: 85px 1fr 1fr;
  gap: .4rem;
  background: var(--color-surface-alt);
  padding: .35rem .65rem;
  border-bottom: 1px solid var(--color-border);
}

.oh-table__th {
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--color-text-muted);
  text-align: center;
}
.oh-table__th--day { text-align: left; }

.oh-table__row {
  display: grid;
  grid-template-columns: 85px 1fr 1fr;
  gap: .4rem;
  padding: .3rem .65rem;
  align-items: center;
  border-bottom: 1px solid var(--color-border);
  background: var(--color-surface);
  transition: background var(--transition);
}

.oh-table__row:last-child { border-bottom: none; }

.oh-table__row--active {
  background: var(--color-accent-light);
}

.oh-table__day {
  display: flex;
  align-items: center;
  gap: .35rem;
  cursor: pointer;
  font-size: .78rem;
  font-weight: 500;
  color: var(--color-text-muted);
}

.oh-table__row--active .oh-table__day {
  color: var(--color-text);
  font-weight: 600;
}

.oh-table__day input[type="checkbox"] {
  accent-color: var(--color-accent);
  width: 13px;
  height: 13px;
}

.oh-table__times {
  display: flex;
  align-items: center;
  gap: .3rem;
}

.oh-table__sep {
  color: var(--color-text-muted);
  font-size: .8rem;
  flex-shrink: 0;
}

.form-control--time {
  width: auto;
  min-width: 0;
  flex: 1;
  padding: .32rem .4rem;
  font-size: .82rem;
  text-align: center;
}

/* ── Fieldsets — profile page (kept for backward compat) ── */


.auth-card {
  background: var(--color-surface);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  padding: 2.5rem 2.25rem;
  width: 100%;
  max-width: 440px;
  margin: 0 auto;
  border: 1px solid var(--color-border);
}

.auth-card__header {
  text-align: center;
  margin-bottom: 1.75rem;
}

.auth-card__logo {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto .8rem;
  color: var(--color-primary);
}

.auth-card__logo svg {
  width: 32px;
  height: 32px;
  stroke-width: 1.6;
}

.auth-card__title {
  font-size: 1.65rem;
  font-weight: 800;
  color: var(--color-primary);
  margin-bottom: .2rem;
}

.auth-card__subtitle {
  font-size: .92rem;
  color: var(--color-text-muted);
  margin: 0;
}


.auth-card__footer {
  margin-top: 1.5rem;
  text-align: center;
  font-size: .92rem;
  color: var(--color-text-muted);
}
.auth-card__footer p { margin: 0; }

/* Fieldset sekce (registrace) */
.fieldset {
  border: none;
  padding: 0;
  margin: 0 0 1.5rem;
  min-inline-size: 0;
}


/* Řádek se dvěma poli vedle sebe */
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}

/* Nápověda pod polem */
.form-hint {
  font-size: .82rem;
  color: var(--color-text-muted);
  margin-top: .35rem;
  line-height: 1.5;
}

/* Chybová hláška u pole */
.invalid-feedback {
  font-size: .8rem;
  color: var(--color-danger);
  margin-top: .3rem;
}

.form-control.is-invalid {
  border-color: var(--color-danger);
}

/* ==========================================================================
   12. DASHBOARD — PAGE HEADER
   ========================================================================== */
.page-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.5rem 0;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
}

.page-header__actions {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  align-items: center;
  flex-shrink: 0;
}

.page-title {
  font-size: 1.75rem;
  font-weight: 800;
  color: var(--color-primary);
  margin-bottom: .35rem;
}

.page-subtitle {
  font-size: .95rem;
  color: var(--color-text-muted);
  margin: 0;
}

/* ==========================================================================
   12b. DASHBOARD — NEW LAYOUT
   ========================================================================== */
.dash {
  width: var(--app-content-width);
  max-width: var(--app-content-max);
  margin: 0 auto;
  padding: 0 var(--app-content-padding) 2rem;
}
.dash > * { max-width: 100%; min-width: 0; }
.dash .card { max-width: 100%; box-sizing: border-box; }
.dash .card__body { overflow: hidden; }
.dash .card__body .table-responsive,
.dash .card__body table.dh-aids,
.dash .card__body > div[style*="overflow-x:auto"] { overflow-x: auto; max-width: 100%; }

/* Hero welcome + inline stats */
/* ── Unified Hero typography (Task J) ────────────────────────
   Sdílené varianty padding / font-size / color pro všechny Hero
   komponenty: .dash__hero, .prof__hero, veřejné profily.
   Proměnné umožňují lokální override bez duplikace hodnot. */
:root {
  --hero-padding:       1.25rem 1.75rem;
  --hero-padding-tight: 1rem 1.75rem .85rem;
  --hero-name-size:     1.35rem;
  --hero-name-weight:   800;
  --hero-name-line:     1.2;
  --hero-label-size:    .88rem;
  --hero-label-weight:  500;
  --hero-label-color:   rgba(255,255,255,.6);
  --hero-clinic-size:   .92rem;
  --hero-clinic-color:  rgba(255,255,255,.65);
  --hero-bg:            linear-gradient(160deg, #1a2035 0%, #2d3a52 50%, #3d4a65 100%);
}

/* Laptop+ — větší horizontální odsazení v hero sekcích (≥1024px). */
@media (min-width: 1024px) {
  :root {
    --hero-padding:       1.25rem 2.75rem;
    --hero-padding-tight: 1rem 2.75rem .85rem;
  }
  .reg__hero { padding: 2.5rem 2.75rem 2rem; }
}

.dash__hero {
  margin-bottom: 1.25rem;
  background: var(--hero-bg);
  border-radius: 12px;
  color: #fff;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(0,0,0,.12);
}
/* Muted text na tmavém hero pozadí — světlejší barva pro čitelnost
   (override pro .text-muted které má v utilities !important) */
.dash__hero .text-muted,
.dash__hero p.text-sm,
.dash__hero .text-sm.text-muted {
  color: rgba(255, 255, 255, 0.82) !important;
}

.dash__hero-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  padding: var(--hero-padding);
}

/* Dashboard hero — stats bar přidává výšku, top padding kompaktnější */
.page-dashboard .dash__hero-top {
  padding: var(--hero-padding-tight);
}

.dash__greeting {
  font-size: var(--hero-label-size);
  color: var(--hero-label-color);
  margin: 0 0 .2rem;
  font-weight: var(--hero-label-weight);
  letter-spacing: .02em;
}

.dash__name {
  font-size: var(--hero-name-size);
  font-weight: var(--hero-name-weight);
  color: #fff;
  margin: 0;
  line-height: var(--hero-name-line);
}

.dash__name-link {
  color: inherit;
  text-decoration: none;
  transition: color .15s;
}
.dash__name-link:hover {
  color: var(--color-accent-lighter);
  text-decoration: none;
}
.dash__name-link:hover svg {
  stroke: var(--color-accent-lighter);
  opacity: 1;
}


.dash__clinic {
  font-size: var(--hero-clinic-size);
  color: var(--hero-clinic-color);
  margin: .3rem 0 0;
  font-weight: 400;
}

/* ==========================================================================
   HERO ACTIONS — sjednocený styl napříč stránkami
   Tmavý hero (slate gradient) + frosted glass prvky vpravo s teal akcentem.
   ========================================================================== */
.dash__hero-actions {
  display: flex;
  gap: .5rem;
  flex-shrink: 0;
  align-items: center;
  flex-wrap: wrap;
}

/* Všechna tlačítka v hero actions — frosted glass base */
.dash__hero-actions .btn {
  font-size: .82rem;
  padding: .45rem .9rem;
  border-radius: 8px;
  font-weight: 600;
  min-height: 34px;
  transition: background .15s, border-color .15s, color .15s, transform .15s;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

/* Outline (sekundární) */
.dash__hero-actions .btn--outline {
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.92);
  border-color: rgba(255,255,255,.22);
}
.dash__hero-actions .btn--outline:hover {
  background: rgba(94,234,212,.15);
  color: #fff;
  border-color: rgba(94,234,212,.5);
}

/* Primary (hlavní akce) — teal solid */
.dash__hero-actions .btn--primary {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
  box-shadow: 0 2px 8px rgba(13,148,136,.3);
}
.dash__hero-actions .btn--primary:hover {
  background: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(13,148,136,.45);
}

/* Danger (koš, delete) — jemně červený na tmavém pozadí */
.dash__hero-actions .btn--danger {
  background: rgba(220,38,38,.15);
  color: #fca5a5;
  border-color: rgba(252,165,165,.35);
}
.dash__hero-actions .btn--danger:hover {
  background: rgba(220,38,38,.3);
  color: #fff;
  border-color: #fca5a5;
}

/* Select / select-like v hero (filtry) */
.dash__hero-actions select,
.dash__hero-actions .form-control {
  background: rgba(255,255,255,.08);
  color: #fff;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 8px;
  padding: .4rem .75rem;
  font-size: .82rem;
  font-weight: 500;
  min-height: 34px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.dash__hero-actions select option {
  background: #2d3a52;
  color: #fff;
}
.dash__hero-actions select:hover,
.dash__hero-actions select:focus {
  border-color: rgba(94,234,212,.5);
  outline: none;
}

/* Text linky / dropdowny (details) */
.dash__hero-actions details > summary,
.dash__hero-actions .hero-link {
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.92);
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 8px;
  padding: .4rem .85rem;
  font-size: .82rem;
  font-weight: 600;
  cursor: pointer;
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  list-style: none;
  transition: background .15s, border-color .15s;
}
.dash__hero-actions details > summary::-webkit-details-marker { display: none; }
.dash__hero-actions details > summary:hover,
.dash__hero-actions .hero-link:hover {
  background: rgba(94,234,212,.15);
  border-color: rgba(94,234,212,.5);
  color: #fff;
  text-decoration: none;
}

/* Ikona-only kruhová tlačítka (např. back arrow, edit) */
.dash__hero-actions .btn-icon,
.dash__hero-actions .hero-icon-btn {
  width: 34px;
  height: 34px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.92);
  border: 1px solid rgba(255,255,255,.22);
  cursor: pointer;
  transition: background .15s, border-color .15s;
}
.dash__hero-actions .btn-icon:hover,
.dash__hero-actions .hero-icon-btn:hover {
  background: rgba(94,234,212,.15);
  border-color: rgba(94,234,212,.5);
  color: #fff;
}

/* Odznak s počtem (např. "12 kolegů") */
.dash__hero-actions .hero-badge {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .35rem .7rem;
  background: rgba(94,234,212,.12);
  color: var(--color-accent-lighter);
  border: 1px solid rgba(94,234,212,.3);
  border-radius: 20px;
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .02em;
  min-height: 28px;
}

/* Office hours status in hero */


/* Stats bar inside hero */


/* ── Hero grid: notifikace vs. status (v0.15.1) ────────────── */
/* hero-top: jméno vlevo, stav ordinace vpravo */
.page-dashboard .dash__hero-top {
  display: grid;
  grid-template-columns: 1fr minmax(300px, 420px);
  align-items: stretch;
  gap: 1.5rem;
}

/* hero-grid: notifikace plná šířka (single column) */
.dash__hero-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: .85rem;
  padding: .85rem 1.75rem 1.15rem;
  border-top: 1px solid rgba(255,255,255,.06);
}

/* Levá polovina: notifikace */
.dash__hero-notifs {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.dash__hero-section-label {
  font-size: .68rem;
  font-weight: 700;
  color: rgba(255,255,255,.45);
  text-transform: uppercase;
  letter-spacing: .08em;
  margin: 0 0 .65rem;
  display: flex;
  align-items: center;
  gap: .5rem;
}
.dash__hero-section-label::after {
  content: '';
  flex: 1;
  height: 1px;
  background: rgba(255,255,255,.08);
}

.dash__hero-notifs-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: .4rem;
  flex: 1;
}

.dash__hero-notif {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  gap: .3rem;
  padding: .6rem .75rem .55rem;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 8px;
  color: rgba(255,255,255,.75);
  text-decoration: none;
  transition: background .15s, border-color .15s, transform .15s;
  min-height: 72px;
  overflow: hidden;
}
.dash__hero-notif::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: transparent;
  transition: background .18s;
}
.dash__hero-notif:hover {
  background: rgba(255,255,255,.09);
  border-color: rgba(255,255,255,.2);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(0,0,0,.18);
  text-decoration: none;
}
.dash__hero-notif--active {
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.18);
}
.dash__hero-notif--active::before {
  background: var(--notif-color, rgba(255,255,255,.4));
}


.dash__hero-notif-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 8px;
  background: rgba(255,255,255,.08);
  flex-shrink: 0;
}
.dash__hero-notif--active .dash__hero-notif-icon {
  background: color-mix(in srgb, var(--notif-color) 25%, transparent);
}

.dash__hero-notif-val {
  font-size: 1.4rem;
  font-weight: 800;
  line-height: 1;
  color: rgba(255,255,255,.35);
  font-variant-numeric: tabular-nums;
}
.dash__hero-notif--active .dash__hero-notif-val {
  color: #fff;
}

.dash__hero-notif-lbl {
  font-size: .7rem;
  font-weight: 600;
  color: rgba(255,255,255,.7);
  line-height: 1.25;
}
.dash__hero-notif--active .dash__hero-notif-lbl {
  color: rgba(255,255,255,.95);
}

/* 6. dlaždice: link na všechny notifikace */
.dash__hero-notifs-all {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  gap: .3rem;
  padding: .6rem .75rem .55rem;
  background: transparent;
  border: 1px dashed rgba(255,255,255,.18);
  border-radius: 8px;
  color: rgba(255,255,255,.7);
  text-decoration: none;
  min-height: 72px;
  transition: background .18s, border-color .18s, color .18s, transform .18s;
}
.dash__hero-notifs-all:hover {
  background: rgba(255,255,255,.06);
  border-color: rgba(255,255,255,.4);
  color: #fff;
  transform: translateY(-1px);
  text-decoration: none;
}

.dash__hero-notifs-all-txt {
  font-size: .78rem;
  font-weight: 600;
  line-height: 1.25;
}

/* Pravá polovina: stav ord. doby / nepřítomnosti / účtu */
.dash__hero-status {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.dash__hero-status-list {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  flex: 1;
}

.dash__hero-status-row {
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: .55rem .85rem;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 8px;
  color: #fff;
  text-decoration: none;
  font-family: inherit;
  text-align: left;
  width: 100%;
  min-height: 42px;  /* Sjednocená výška — první pillow obsahuje 24×24 button, druhý jen SVG 13px;
                       bez min-height by oba měly různou výšku. */
  cursor: pointer;
  transition: background .18s, border-color .18s, transform .18s, box-shadow .18s;
  flex: 1;
  box-sizing: border-box;
}
.dash__hero-status-row:hover {
  background: rgba(255,255,255,.09);
  border-color: rgba(255,255,255,.2);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(0,0,0,.18);
  text-decoration: none;
  color: #fff;
}


.dash__hero-status-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: 0 0 0 2px rgba(0,0,0,.2), 0 0 8px currentColor;
}


@media (max-width: 1024px) {
  .page-dashboard .dash__hero-top {
    grid-template-columns: 1fr;
  }
  .dash__hero-notifs-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .dash__hero-grid {
    padding: 1rem 1.25rem 1.25rem;
    gap: 1.15rem;
  }
  .dash__hero-notifs-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .5rem;
  }
  .dash__hero-notif,
  .dash__hero-notifs-all {
    min-height: 84px;
    padding: .7rem .8rem;
  }
  .dash__hero-notif-val {
    font-size: 1.6rem;
  }
  .dash__hero-status-row {
    padding: .75rem .9rem;
    gap: .85rem;
  }
  
  
}

/* Sections */
.dash__section {
  margin-bottom: 1.75rem;
}

.dash__section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: 1rem;
  min-height: 44px;
}

/* Sjednocené left/right wrappery pro head */
.dash__section-head-left {
  display: flex;
  align-items: center;
  gap: .6rem;
  min-width: 0;
  flex: 1 1 auto;
}
.dash__section-head-right {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-shrink: 0;
}
/* Sjednocený collapse toggle button */
.dash-collapse-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  color: var(--color-text-muted);
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
  flex-shrink: 0;
}
.dash-collapse-toggle:hover {
  background: var(--color-surface-alt);
  color: var(--color-primary);
  border-color: var(--color-primary);
}
.dash__section[data-collapsed="1"] .dash-collapse-toggle svg {
  transform: rotate(-90deg);
  transition: transform .2s;
}
.dash__section:not([data-collapsed="1"]) .dash-collapse-toggle svg {
  transition: transform .2s;
}

/* Při sbalené sekci: skrýt filter UI (tlačítka, selecty) → zbude jen titulek + toggle.
   Tím všechny karty získají stejnou minimalistickou výšku a stejnou informační hustotu. */
.dash__section[data-collapsed="1"] .dash__section-head {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
  border-bottom: 0 !important;
  min-height: 32px;
}
.dash__section[data-collapsed="1"] .dash__section-head .dash-collapse-hide {
  display: none !important;
}
/* Sjednocený kontejner pro karty v dashboardu — stejná výška i padding ve sbaleném stavu */
.page-dashboard .dash__section[data-collapsed="1"] {
  padding: .85rem 1.35rem !important;
}
/* Malý indikátor (count/label) se naopak ve sbaleném stavu zvýrazní vedle titulku */
.dash-collapse-summary {
  font-size: .78rem;
  font-weight: 600;
  color: var(--color-text-muted);
  padding: .15rem .6rem;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 999px;
  white-space: nowrap;
}

.dash__section-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-primary);
  margin: 0 0 .75rem;
  padding-left: 0;
}

.dash__section-head .dash__section-title {
  margin-bottom: 0;
}

.dash__section-head .dash__section-title {
  margin-bottom: 0;
}

/* Form stats — full width horizontal strip */


.dash__colleague-card {
  transition: box-shadow .2s;
}
.dash__colleague-card:hover {
  box-shadow: var(--shadow);
}
.dash__colleague-stat {
  transition: background .15s, box-shadow .15s;
}
a.dash__colleague-stat:hover {
  background: var(--color-surface-alt);
  box-shadow: var(--shadow-sm);
}
.dash__colleague-card a[title]:hover {
  color: var(--color-accent) !important;
}
.dash__recent-row {
  display: grid;
  align-items: center;
  gap: .5rem;
  padding: .55rem 1rem;
  font-size: .82rem;
  border-bottom: 1px solid var(--color-border);
  transition: background .15s;
  position: relative;
}
.dash__recent-row--hidden {
  display: none !important;
}
.dash__recent-row:hover {
  background: var(--color-surface-alt) !important;
  z-index: 2;
}
.dash__recent-row:has(.dropdown__menu.open) {
  z-index: 200;
}


a.dash__link-name {
  display: block;
  font-size: .95rem;
  font-weight: 700;
  color: var(--color-primary);
  margin-bottom: .2rem;
  text-decoration: none;
  cursor: pointer;
}

a.dash__link-name:hover {
  color: var(--color-accent);
  text-decoration: none;
}


/* Responsive */
@media (max-width: 768px) {
  .dash__hero-top {
    flex-direction: column;
    text-align: center;
    padding: 1.25rem 1rem;
  }
  
  
  
  .dash__link-card { flex-wrap: wrap; }
}

@media (max-width: 540px) {
  .dash__link-card {
    flex-direction: column;
    align-items: flex-start;
    gap: .6rem;
  }
  
  
}

/* ==========================================================================
   13. STATS GRID
   ========================================================================== */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1.25rem;
  margin-bottom: 2rem;
}

.stat-card {
  background: var(--color-surface);
  border: none;
  border-radius: var(--radius-lg);
  padding: 1rem 1.15rem;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
  display: flex;
  align-items: center;
  gap: .85rem;
}

.stat-card__icon {
  width: 44px;
  height: 44px;
  border-radius: var(--radius);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.6rem;
  flex-shrink: 0;
  background: var(--color-accent-light);
}
.stat-card__icon svg { width: 28px; height: 28px; }

.stat-card--primary .stat-card__icon { background: var(--color-accent-light); }
.stat-card--accent  .stat-card__icon { background: #f0fdf4; }
.stat-card--success .stat-card__icon { background: var(--color-success-light); }

.stat-card__value {
  font-size: 1.6rem;
  font-weight: 800;
  color: var(--color-primary);
  line-height: 1.1;
}

.stat-card__label {
  font-size: .8rem;
  color: var(--color-text-muted);
  font-weight: 500;
  margin-top: .1rem;
}

/* ==========================================================================
   14. SECTION HEADER + SECTION TITLE
   ========================================================================== */
.section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: 1.25rem;
}


.section-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--color-primary);
  margin: 0;
}

/* ==========================================================================
   17. PRÁZDNÝ STAV
   ========================================================================== */
.empty-state {
  text-align: center;
  padding: 3.5rem 1.5rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
}

.empty-state__icon {
  font-size: 3rem;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: .35;
  margin-bottom: .75rem;
  color: var(--color-text-muted);
}
.empty-state__icon svg { width: 48px; height: 48px; stroke-width: 1.5; }
.empty-state__title { font-size: 1.25rem; font-weight: 700; color: var(--color-text-secondary); margin-bottom: .5rem; }
.empty-state__desc { font-size: .95rem; color: var(--color-text-muted); margin-bottom: 1.35rem; line-height: 1.6; }

/* ==========================================================================
   18. TABULKA
   ========================================================================== */
.table-responsive {
  overflow-x: auto;
  border-radius: var(--radius);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-sm);
}
.card__body .table-responsive {
  border: none;
  border-radius: 0;
  box-shadow: none;
}

.table {
  width: 100%;
  border-collapse: collapse;
  font-size: .92rem;
  background: var(--color-surface);
}

.table th {
  background: transparent;
  color: var(--color-text-muted);
  font-weight: 600;
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding: .6rem .85rem;
  border-bottom: 2px solid var(--color-border);
  text-align: left;
  border-bottom: 1.5px solid var(--color-border);
  white-space: nowrap;
}

.table th.sortable { cursor: pointer; user-select: none; position: relative; padding-right: 1.6rem; }
.table th.sortable:hover { color: var(--color-accent); }
.table th.sortable::after {
  content: '⇅';
  position: absolute;
  right: .35rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: .7rem;
  opacity: .3;
  transition: opacity .15s;
}
.table th.sortable:hover::after { opacity: .55; }
.table th.sortable[data-sort="asc"]::after  { content: '▲'; opacity: .85; color: var(--color-accent); font-size: .55rem; }
.table th.sortable[data-sort="desc"]::after { content: '▼'; opacity: .85; color: var(--color-accent); font-size: .55rem; }

.table td {
  padding: .6rem .85rem;
  font-size: .88rem;
  color: var(--color-text);
  border-bottom: 1px solid var(--color-border);
  vertical-align: middle;
}

.table tbody tr:last-child td { border-bottom: none; }
.table--striped tbody tr:nth-child(even) { background: #f9fafb; }
.table tbody tr:hover { background: var(--color-accent-light); }

/* ==========================================================================
   19. STRÁNKOVÁNÍ
   ========================================================================== */
/* ── Pagination bar (wrapper) ── */
.pagination-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 1.5rem;
  flex-wrap: wrap;
}

/* ── Page numbers ── */
.pagination { margin: 0; }

.pagination__list {
  display: flex;
  align-items: center;
  gap: .3rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.pagination__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 .5rem;
  border-radius: var(--radius-sm);
  font-size: .88rem;
  font-weight: 500;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text-secondary);
  text-decoration: none;
  transition: background var(--transition), color var(--transition), border-color var(--transition);
}

a.pagination__link:hover {
  background: var(--color-accent-light);
  color: var(--color-accent);
  border-color: var(--color-accent);
  text-decoration: none;
}

.pagination__item--active .pagination__link {
  background: var(--color-accent);
  color: #fff;
  border-color: var(--color-accent);
}

.pagination__item--disabled .pagination__link { opacity: .4; pointer-events: none; }
.pagination__item--ellipsis .pagination__link { border-color: transparent; background: transparent; }

/* ── Meta: info + per-page ── */
.pagination-bar__meta {
  display: flex;
  align-items: center;
  gap: .75rem;
}

.pagination__info {
  font-size: .82rem;
  color: var(--color-text-secondary);
  white-space: nowrap;
}

.pagination-bar__per-page {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-size: .82rem;
  color: var(--color-text-secondary);
  white-space: nowrap;
  cursor: pointer;
}

.pagination-bar__per-page select {
  padding: .2rem .4rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  font-size: .82rem;
  color: var(--color-text);
  cursor: pointer;
}

/* Stack on small screens */
@media (max-width: 600px) {
  .pagination-bar { flex-direction: column; gap: .5rem; }
}

/* ==========================================================================
   21. FILTER FORMULÁŘ (submissions)
   ========================================================================== */


.filter-form .form-group {
  margin-bottom: 0;
  flex: 1;
  min-width: 150px;
}

/* ==========================================================================
   22. MODAL
   ========================================================================== */
.modal-overlay {
  position: fixed;
  inset: 0;
  /* 9500 = nad navbar (200), nad chat-fab (9000), pod notif panel (9999) a maintenance (99999).
     Modal MUSÍ překrývat navbar, jinak by uživatel mohl klikat na navi položky během modalu. */
  z-index: 9500;
  background: rgba(26, 29, 43, .55);
  backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  animation: modalFadeIn .25s ease;
}

@keyframes modalFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.modal {
  background: var(--color-surface);
  border-radius: var(--radius-xl);
  box-shadow: var(--modal-shadow);
  padding: 2rem 2rem 1.75rem;
  max-width: 480px;
  width: 100%;
  text-align: center;
  animation: modalSlideUp .3s ease;
  max-height: calc(100vh - 3rem);
  max-height: calc(100dvh - 3rem);
  overflow-y: auto;
  position: relative;
}
.modal::-webkit-scrollbar { width: 6px; }
.modal::-webkit-scrollbar-track { background: transparent; }
.modal::-webkit-scrollbar-thumb { background: var(--color-slate-300); border-radius: 3px; }
.modal::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

@keyframes modalSlideUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

.modal__icon {
  font-size: 2.8rem;
  margin-bottom: .6rem;
}

/* Sjednocený zavírací křížek modalů — vzor #notifBackdrop (.navbar__notif-modal-close) */
.modal__close {
  position: absolute;
  top: .55rem;
  right: .55rem;
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: 50%;
  background: #f1f5f9;
  color: #475569;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0; /* skryje textový &times; / × — glyph přes ::before */
  line-height: 1;
  cursor: pointer;
  transition: background .15s, color .15s, transform .15s;
  z-index: 10;
  padding: 0;
  flex-shrink: 0;
}
.modal__close::before {
  content: "\2715";
  font-size: 1.15rem;
  font-weight: 400;
  line-height: 1;
  color: inherit;
}
.modal__close:hover { background: #fee2e2; color: #b91c1c; transform: rotate(90deg); }
.modal__close:focus-visible {
  outline: 2px solid var(--color-accent, #0d9488);
  outline-offset: 2px;
}
/* Varianta pro tmavou hlavičku — nyní identická (šedý kruh čitelný i na tmavém pozadí) */
.modal__close--on-dark {
  background: #f1f5f9;
  color: #475569;
}

.modal__title {
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--color-primary);
  margin: 0 0 .85rem;
  padding-right: 2rem;
}

.modal__text {
  font-size: .92rem;
  color: var(--color-text-secondary);
  line-height: 1.6;
  margin: 0 0 1rem;
}

.modal__text--sm {
  font-size: .85rem;
  color: var(--color-text-muted);
}

.modal__notice {
  background: var(--color-warning-light);
  border: 1px solid #fde68a;
  border-radius: var(--radius);
  padding: .85rem 1rem;
  font-size: .87rem;
  color: var(--color-warning-text);
  line-height: 1.55;
  margin-bottom: 1rem;
  text-align: left;
}

.modal__close-btn {
  margin-top: .5rem;
  min-width: 220px;
}

.modal__timer {
  margin-top: .75rem;
  font-size: .75rem;
  color: var(--color-text-muted);
}

/* ==========================================================================
   22b. MODAL — UNIFIED SIZE & LAYOUT SYSTEM
   Tři standardní velikosti + strukturální elementy pro modaly aplikace.
   Přehlížejí legacy text-center `.modal` (která zůstává pro confirm-style popup).
   Použití v HTML:
     <div class="modal-overlay">
       <div class="modal modal--md">        ← jedna ze 3 velikostí
         <div class="modal__header">
           <div class="modal__header-text">
             <h3 class="modal__title">…</h3>
             <p class="modal__subtitle">…</p>
           </div>
           <button class="modal__close-x">&times;</button>
         </div>
         <div class="modal__body">…</div>
         <div class="modal__footer">
           <button class="btn btn--sm btn--secondary">Zrušit</button>
           <button class="btn btn--sm btn--primary">OK</button>
         </div>
       </div>
     </div>
   Barvy chipů (scope / presety) řídí třídy `.modal__chip[--checked]`.
   Kritické modaly (mazání, heslo, danger zone) používají `.modal--danger`
   → levý červený accent strip + varovný header.
   ========================================================================== */

/* Velikosti — přepíší base .modal max-width (480px) */
.modal--sm { max-width: 420px; }
.modal--md { max-width: 560px; }
.modal--lg { max-width: 720px; }

@media (max-width: 480px) {
  .modal--sm, .modal--md, .modal--lg { max-width: calc(100vw - 1rem) !important; padding: 1rem 0.85rem !important; }
  .modal__body { padding: 0.85rem !important; }
}

/* Form-style modal: padding 0 na kontejneru, padding řídí header/body/footer.
 * Flex column zajistí, že header + footer jsou pinned a body může scrollovat. */
.modal--form {
  padding: 0;
  text-align: left;
  border-radius: 14px;
  box-shadow: var(--modal-shadow);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.modal--form > .modal__header,
.modal--form > .modal__footer { flex-shrink: 0; }
.modal--form > form { display: flex; flex-direction: column; min-height: 0; flex: 1; overflow: hidden; }
.modal--form > .modal__body,
.modal--form > form > .modal__body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/* Strukturální elementy */
.modal__header {
  padding: 1.15rem 1.4rem;
  border-bottom: 1px solid var(--modal-border);
  background: var(--modal-header-bg);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
}
.modal__header-text { flex: 1; min-width: 0; }
.modal__header .modal__title {
  margin: 0;
  font-size: var(--modal-title-size);
  font-weight: var(--modal-title-weight);
  color: var(--modal-text);
  text-align: left;
}
.modal__subtitle {
  margin: .2rem 0 0;
  font-size: var(--modal-subtitle-size);
  color: var(--modal-subtitle-color);
  line-height: 1.4;
}
/* Sjednocený zavírací křížek modalů — vzor #notifBackdrop (.navbar__notif-modal-close) */
.modal__close-x {
  background: #f1f5f9;
  border: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  font-size: 0; /* skryje vlastní text content (× / &times;) — glyph se vykreslí přes ::before */
  color: #475569;
  cursor: pointer;
  padding: 0;
  line-height: 1;
  flex-shrink: 0;
  border-radius: 50%;
  transition: background .15s, color .15s, transform .15s;
}
.modal__close-x::before {
  content: "\2715";
  font-size: 1.15rem;
  font-weight: 400;
  line-height: 1;
  color: inherit;
}
.modal__close-x:hover { background: #fee2e2; color: #b91c1c; transform: rotate(90deg); }
.modal__close-x:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }

.modal__body {
  padding: 1.15rem 1.4rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  text-align: left;
}
.modal__body--tight { gap: .6rem; }


.modal__footer {
  padding: .9rem 1.4rem 1.15rem;
  border-top: 1px solid var(--modal-border);
  background: var(--modal-footer-bg);
  display: flex;
  gap: .5rem;
  justify-content: flex-end;
  flex-wrap: wrap;
  align-items: stretch;
}

/* Akční tlačítka v patičce modalu — sjednocené rozměry (Zavřít / Upravit / Klonovat / OK / Uložit…).
   min-width srovná šířku krátkých tlačítek, align-items:stretch srovná výšku napříč patičkou. */
.modal__footer .btn {
  min-width: 104px;
  justify-content: center;
}

@media (max-width: 400px) {
  .modal__footer { flex-direction: column-reverse; gap: 0.5rem; }
  .modal__footer .btn { width: 100%; flex: 1 1 100%; }
}

/* Field label pattern — uppercase .72rem s letter-spacingem */
.modal__field-label {
  display: block;
  font-size: var(--modal-label-size);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: var(--modal-label-tracking);
  color: var(--modal-subtitle-color);
  margin-bottom: .4rem;
}


/* Info box — success / warn / danger */
.modal__info {
  padding: .55rem .75rem;
  border-radius: 8px;
  font-size: .75rem;
  line-height: 1.45;
}
.modal__info--success {
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  color: #166534;
}
.modal__info--warn {
  background: #fffbeb;
  border: 1px solid #fde68a;
  color: #92400e;
}


/* Error box — pro zobrazení chyb z API. Default je skrytý přes inline style="display:none". */
.modal__error {
  padding: .55rem .75rem;
  background: var(--modal-danger-bg);
  border: 1px solid #fecaca;
  border-radius: 8px;
  font-size: var(--modal-subtitle-size);
  color: #991b1b;
}

/* Chip radio — pro scope / presety / opce (sjednocený s due-preset pattern) */
.modal__chip {
  display: inline-block;
  padding: .38rem .85rem;
  border: 1.5px solid var(--color-border);
  border-radius: 999px;
  font-size: .82rem;
  font-weight: 600;
  color: #475569;
  background: #fff;
  transition: all .12s;
  cursor: pointer;
  user-select: none;
}
.modal__chip:hover {
  border-color: var(--color-accent, #0d9488);
  color: var(--color-accent, #0d9488);
}
.modal__chip--sm { padding: .32rem .7rem; font-size: .77rem; }
/* Stav :checked se aplikuje přes sibling selector — input musí být .display:none; + label>.modal__chip */
input[type="radio"]:checked + .modal__chip,
input[type="checkbox"]:checked + .modal__chip {
  background: var(--color-accent, #0d9488);
  border-color: var(--color-accent, #0d9488);
  color: #fff;
}

/* Chip row — wrap container */
.modal__chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}

/* Danger modal variant — vizuální varování pro kritické akce (mazání, heslo, force actions) */
.modal--danger .modal__header {
  border-bottom-color: #fecaca;
  background: linear-gradient(to right, rgba(220,38,38,.04), transparent);
}
.modal--danger .modal__title { color: #991b1b; }
.modal--danger::before {
  content: '';
  display: block;
  height: 4px;
  background: linear-gradient(90deg, var(--modal-danger-accent), #ef4444);
}

/* Themed modal variant — slate→teal gradient header (vzor: companyModal) */
.modal--themed {
  border-radius: 16px;
  box-shadow: var(--modal-shadow);
  overflow: hidden;
}
.modal--themed > .modal__header {
  background: var(--modal-themed-grad);
  border-bottom: none;
  padding: 1.5rem 1.75rem 1.25rem;
  position: relative;
  overflow: hidden;
  z-index: 0;
}
.modal--themed > .modal__header::before {
  content: '';
  position: absolute;
  top: -50%;
  left: -20%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle at 30% 50%, rgba(13,148,136,.18) 0%, transparent 50%);
  pointer-events: none;
  z-index: 0;
}
.modal--themed > .modal__header > * { position: relative; z-index: 1; }
.modal--themed .modal__title { color: var(--modal-themed-text); }
.modal--themed .modal__subtitle { color: rgba(255,255,255,.85); }
/* Themed modals — stejný šedý kruh jako všude jinde (čitelný i na tmavém gradientu) */
.modal--themed .modal__close-x {
  background: #f1f5f9;
  color: #475569;
  border-radius: 50%;
}
.modal--themed .modal__close-x:hover {
  background: #fee2e2;
  color: #b91c1c;
  transform: rotate(90deg);
}
.modal--themed > .modal__footer {
  background: var(--modal-footer-bg);
  border-top-color: var(--modal-border);
}

/* Responzivní úpravy */
@media (max-width: 600px) {
  .modal--lg, .modal--md { max-width: 100%; }
  .modal__header, .modal__footer { padding-left: 1rem; padding-right: 1rem; }
  .modal__body { padding-left: 1rem; padding-right: 1rem; }
}

/* ── modal--doc — PDF / dokumentové modaly (max-width 1080px, 96vh) ── */
.modal-overlay > .modal.modal--doc {
  max-width: 1080px;
  width: 96vw;
  height: 96vh;
  display: flex;
  flex-direction: column;
}
.modal.modal--doc > .modal__header {
  flex-shrink: 0;
}
.modal.modal--doc > .modal__body {
  flex: 1 1 auto;
  overflow: auto;
  padding: 0;
}
.modal.modal--doc > .modal__body > iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.modal.modal--doc > .modal__footer {
  flex-shrink: 0;
}
@media (max-width: 720px) {
  .modal-overlay > .modal.modal--doc {
    width: 100vw;
    height: 100vh;
    max-width: none;
    border-radius: 0;
  }
}

/* ── 22c. MODAL — NOTIFIKAČNÍ PANEL (Type 2) ─────────────────────────── */

/* Overlay/backdrop pro Notif panel — tmavší pozadí, blokující */
.modal-overlay.modal-overlay--notif {
  background: rgba(15, 23, 42, .35);
  /* Zastavit scroll chaining: wheel events nesmí propustit do pozadí stránky. */
  overscroll-behavior: contain;
}

/* Hlavní kontejner — 1 velikost.
 * `height: 80vh` (NE max-height) — modal zůstává stejně velký napříč filtry
 * (lékařka 2026-05-29: „Modal by měl být stejně veliký pro všechny záložky filtru").
 * List má vlastní scroll, takže obsah s méně položkami nezmenší modal. */
.modal-notif {
  background: var(--modal-bg);
  border-radius: 12px;
  box-shadow: var(--modal-shadow);
  width: 560px;
  max-width: 92vw;
  height: 80vh;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  color: var(--modal-text);
}

/* Dashboard „Nevyřízené události" — 2× širší než výchozí .modal-notif */
#notifBackdrop .modal-notif {
  width: 1120px;
}
/* Větší vnitřní odsazení od okrajů (modal je dvojnásob široký, 1rem působí těsně). */
#notifBackdrop .modal-notif__header,
#notifBackdrop .modal-notif__filter,
#notifBackdrop .modal-notif__section-header,
#notifBackdrop .modal-notif__item,
#notifBackdrop .modal-notif__footer,
#notifBackdrop .modal-notif__empty {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

/* Header — title + close */
.modal-notif__header {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .85rem 1rem;
  border-bottom: 1px solid var(--modal-border);
  background: var(--modal-header-bg);
}
.modal-notif__title {
  font-size: var(--modal-title-size);
  font-weight: var(--modal-title-weight);
  color: var(--modal-text);
  margin: 0;
  flex: 1 1 auto;
}
.modal-notif__count {
  font-size: .75rem;
  font-weight: 700;
  background: #0d9488;
  color: #fff;
  padding: .1rem .45rem;
  border-radius: 999px;
}

/* Filter row — textový řádek se stavy/filtry */
.modal-notif__filter {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: .15rem;
  padding: .55rem 1rem;
  border-bottom: 1px solid var(--modal-border);
  background: var(--modal-bg);
  font-size: .8rem;
  color: var(--modal-text-muted);
  flex-wrap: wrap;
}
/* Specificity bump (`.modal-notif` ancestor) — modal renderuje uvnitř <ul.navbar__links>,
 * jinak by `.navbar__links a:hover` (bílý text na bílém pozadí) přepsal lokální styl. */
.modal-notif .modal-notif__filter-item {
  cursor: pointer;
  padding: .2rem .55rem;
  border-radius: 999px;
  color: inherit;
  background: transparent;
  text-decoration: none;
  font-weight: inherit;
  transition: background .15s, color .15s;
}
.modal-notif .modal-notif__filter-item:hover {
  background: #e2e8f0;
  color: var(--modal-text);
}
.modal-notif .modal-notif__filter-item.is-active {
  background: #ccfbf1;
  color: #115e59;
  font-weight: 600;
}
.modal-notif .modal-notif__filter-item.is-active:hover {
  background: #5eead4;
  color: #115e59;
}
.modal-notif__filter-sep {
  color: #cbd5e1;
  user-select: none;
}

/* Scrollovatelný seznam */
.modal-notif__list {
  flex: 1 1 auto;
  overflow-y: auto;
  /* Zastavit propagaci wheel events na pozadí stránky, když list nemá co rolovat
   * (typicky po aplikaci filtru, kdy se sekce schovají a obsah se vejde bez scrollu). */
  overscroll-behavior: contain;
  background: var(--modal-bg);
}

/* Sekce s sticky headerem — fix scroll bugu (header neprosvítá) */
.modal-notif__section + .modal-notif__section {
  border-top: 1px solid var(--modal-border);
}
.modal-notif__section-header {
  position: sticky;
  top: 0;
  z-index: 2;
  /* Decentní tónovaný pruh — odliší časové skupiny (Dnes/Včera/…) v seznamu.
   * OPAQUE (solid) — nutné pro sticky (header nesmí prosvítat při scrollu). */
  background: #eef2f7;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: var(--modal-label-tracking);
  color: #475569;
  padding: .5rem 1rem .45rem;
  border-bottom: 1px solid var(--modal-border);
}

/* Položka — 3-sloupcový grid: ikona | tělo | čas
 * Specificity bump — viz komentář u .modal-notif__filter-item výše. */
.modal-notif .modal-notif__item {
  display: grid;
  grid-template-columns: 36px 1fr auto;
  gap: .65rem;
  padding: .7rem 1rem;
  border-bottom: 1px solid var(--modal-border);
  text-decoration: none;
  color: inherit;
  background: transparent;
  font-weight: inherit;
  align-items: start;
  transition: background .15s, color .15s;
}
.modal-notif .modal-notif__item:hover {
  background: #f1f5f9;
  color: inherit;
}
.modal-notif__item-icon {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f1f5f9;
  color: var(--modal-text-muted);
  flex-shrink: 0;
}
.modal-notif__item-body {
  min-width: 0;
}
.modal-notif__item-cat {
  font-size: .68rem;
  text-transform: uppercase;
  letter-spacing: var(--modal-label-tracking);
  color: var(--modal-text-muted);
  margin-bottom: .15rem;
  font-weight: 600;
}
.modal-notif__item-title {
  font-size: .88rem;
  font-weight: 600;
  color: var(--modal-text);
  margin: 0 0 .15rem;
  line-height: 1.35;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.modal-notif__item-desc {
  font-size: .78rem;
  color: var(--modal-text-muted);
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.modal-notif__item-time {
  font-size: .72rem;
  color: var(--modal-text-muted);
  white-space: nowrap;
  align-self: start;
  padding-top: .2rem;
}

/* Empty state */
.modal-notif__empty {
  padding: 2rem 1rem;
  text-align: center;
  color: var(--modal-text-muted);
  font-size: .85rem;
}

/* Footer (volitelný) */
.modal-notif__footer {
  flex-shrink: 0;
  padding: .7rem 1rem;
  border-top: 1px solid var(--modal-border);
  background: var(--modal-footer-bg);
  display: flex;
  justify-content: flex-end;
  gap: .5rem;
}

/* ── Inline expand notifikace (lékařka 2026-05-29) ─────────────────────────
 * Klik na admin_msg/zprávu/form → natáhne řádek o detail PŘÍMO v listu.
 * Detail je full-width span pod 3-sloupcovým gridem.
 * 2026-05-29 (v0.61.7): sjednocené velikosti — meta, body i buttons všechny
 * na .72rem (= velikost meta řádku) + kompaktní padding/gap pro hustý
 * dashboard look. Žádné inline font-size override v message HTML — dědí. */
.modal-notif__item-detail {
  /* 2026-05-29 (v0.61.9): detail box jen v body sloupci (grid-column 2).
   * 2026-05-29 (v0.61.11): zvětšeno písmo (.85rem body / .8rem meta+buttons)
   * + reset <p> margin (browser default 16px top+bottom dělal mezery) +
   * stylizace <a> uvnitř message HTML (předtím skoro neviditelný „Otevřít…"). */
  grid-column: 2;
  margin-top: .55rem;
  padding: .6rem .75rem;
  background: #f8fafc;
  border-radius: 6px;
  border: 1px solid var(--modal-border);
  font-size: .85rem;
  line-height: 1.5;
  color: var(--modal-text);
}
.modal-notif__item-detail-meta {
  font-size: .8rem;
  color: var(--modal-text-muted);
  margin-bottom: .4rem;
}
.modal-notif__item-detail p {
  margin: 0 0 .4rem;  /* reset browser default 1em → jen drobný spacing mezi odstavci */
  font-size: inherit;
  line-height: 1.5;
}
.modal-notif__item-detail p:last-of-type {
  margin-bottom: 0;
}
.modal-notif__item-detail div {
  font-size: inherit;
  line-height: 1.5;
}
/* Bumpneme specificitu (0,2,1) přes prefix .modal-notif — jinak `.navbar__links a`
 * (0,1,1) `color: rgba(255,255,255,.82)` z navbar kontextu kaskáduje sem (modal je
 * uvnitř <ul class="navbar__links">) a link by byl bílý/skoro neviditelný. */
.modal-notif .modal-notif__item-detail a {
  color: #0d9488;
  text-decoration: underline;
  font-weight: 500;
  background: transparent;
}
.modal-notif .modal-notif__item-detail a:hover,
.modal-notif .modal-notif__item-detail a:focus {
  color: #0f766e;
  text-decoration: none;
  background: transparent;
}
.modal-notif__item-detail-actions {
  display: flex;
  gap: .35rem;
  margin-top: .55rem;
  flex-wrap: wrap;
}
/* Prefix .modal-notif bumpuje specificity (0,3,1) > .navbar__links a (0,1,1)
 * — bez toho by <a class="btn"> dědil bílou color z navbar kontextu (modal
 * je uvnitř <ul class="navbar__links">) a tlačítko by bylo neviditelné. */
.modal-notif .modal-notif__item-detail-actions .btn,
.modal-notif .modal-notif__item-detail-actions .btn--xs {
  padding: .24rem .65rem;
  font-size: .8rem;
  min-height: 30px;
  line-height: 1.3;
  font-weight: 600;
  color: var(--color-text, #1a1d2b);
  background: #fff;
  border: 1px solid #c5cdd8;
  text-decoration: none;
}
.modal-notif .modal-notif__item-detail-actions .btn:hover,
.modal-notif .modal-notif__item-detail-actions .btn--xs:hover {
  background: var(--color-surface-alt, #f8fafc);
  color: var(--color-text, #1a1d2b);
  border-color: #a9b4c2;
  text-decoration: none;
}
/* btn--primary v actions zachová accent (pro budoucí použití, momentálně nepoužito) */
.modal-notif .modal-notif__item-detail-actions .btn--primary {
  background: var(--color-accent);
  color: #fff;
  border-color: var(--color-accent);
}
.modal-notif .modal-notif__item-detail-actions .btn--primary:hover {
  background: var(--color-accent-hover);
  color: #fff;
  border-color: var(--color-accent-hover);
}
@media (max-width: 600px) {
  .modal-notif .modal-notif__item-detail-actions .btn,
  .modal-notif .modal-notif__item-detail-actions .btn--xs {
    min-height: 34px;  /* touch target safety */
    padding: .34rem .75rem;
  }
}
.modal-notif .modal-notif__item--expanded {
  background: #f0fdfa;
  cursor: default;
}
.modal-notif .modal-notif__item--expanded:hover {
  background: #f0fdfa;
}

/* ── Plynulý dismiss + 5s undo bar (lékařka 2026-05-29) ───────────────────
 * Klik na „Rozumím" → animovaný collapse řádku + undo toast u pravého okraje
 * `.modal-notif__filter` s 5s countdown. */
.modal-notif__filter {
  position: relative;  /* anchor pro undo toast */
}
.modal-notif__undo {
  position: absolute;
  right: 1rem;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .25rem .65rem;
  background: #1e293b;
  color: #fff;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 500;
  z-index: 5;
  box-shadow: 0 2px 6px rgba(15,23,42,.25);
  animation: notifUndoSlideIn .25s ease-out;
}
.modal-notif__undo-btn {
  background: transparent;
  border: 0;
  color: #5eead4;
  font-weight: 600;
  text-decoration: underline;
  cursor: pointer;
  font-size: .72rem;
  padding: 0;
  font-family: inherit;
}
.modal-notif__undo-btn:hover { color: #99f6e4; }
.modal-notif__undo-count {
  font-variant-numeric: tabular-nums;
  opacity: .65;
  min-width: 12px;
  text-align: right;
}
@keyframes notifUndoSlideIn {
  from { opacity: 0; transform: translate(8px, -50%); }
  to   { opacity: 1; transform: translate(0, -50%); }
}
/* Dismissing animace — collapse height + fade out */
.modal-notif .modal-notif__item--dismissing {
  pointer-events: none;
  overflow: hidden;
  transition: height .35s ease-in, opacity .35s ease-in, padding .35s ease-in,
              border-color .35s ease-in;
}

/* ==========================================================================
   23. PROFILE PAGE
   ========================================================================== */
.prof {
  width: var(--app-content-width);
  max-width: var(--app-content-max);
  margin: 0 auto;
  padding: 0 var(--app-content-padding) 2rem;
}


/* Hero pills — role / VIP / denní limit (přesunuto z dashboardu) */
.prof__hero-pills {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin-top: .75rem;
}

/* ──────────────────────────────────────────────────────────────────────────
   Identity bar pod hero (profil.php) — sjednocená karta s 3 vizuálními skupinami
   LEFT identita (VIP+Role+Pozice) | CENTER tech (ID/ICZ/IČO/Město/Limit) | RIGHT meta dates
   ────────────────────────────────────────────────────────────────────────── */
.prof__idbar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .35rem 1.25rem;
  margin: -.4rem 0 1.4rem;
  padding: .7rem 1.1rem;
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  border: 1px solid #e2e8f0;
  border-radius: var(--radius-lg, 14px);
  box-shadow: 0 2px 6px rgba(15,23,42,.04), 0 1px 2px rgba(15,23,42,.03);
}
.prof__idbar-group {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .35rem .75rem;
}
.prof__idbar-group--identity { gap: .35rem .9rem; }
.prof__idbar-group--tech {
  flex: 1;
  position: relative;
  padding-left: 1rem;
  margin-left: -.5rem;
  border-left: 1px solid #e2e8f0;
}
.prof__idbar-group--meta {
  margin-left: auto;
  gap: .35rem .9rem;
}

/* Item — value-first display, label muted prefix, no chip background */
.prof__idbar-item {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .82rem;
  line-height: 1.1;
  color: var(--color-text, #334155);
  white-space: nowrap;
}
.prof__idbar-ico {
  color: #94a3b8;
  flex-shrink: 0;
}
.prof__idbar-label {
  font-size: .72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--color-text-muted, #64748b);
}
.prof__idbar-value {
  font-weight: 700;
  color: #0f172a;
  letter-spacing: -.005em;
}
.prof__idbar-value--mono {
  font-family: var(--font-mono);
  letter-spacing: .02em;
  font-weight: 600;
  font-size: .8rem;
}

/* VIP — gold gradient pill, popping at the start of identity group */
.prof__idbar-vip {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .3rem .65rem;
  background: linear-gradient(135deg, #fcd34d 0%, #f59e0b 100%);
  color: #7c2d12;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  line-height: 1;
  box-shadow: 0 1px 3px rgba(245,158,11,.35), inset 0 1px 0 rgba(255,255,255,.4);
}
.prof__idbar-vip svg { color: #7c2d12; }
.prof__idbar-vip strong { color: inherit; font-weight: 800; }

/* Meta — small, muted, sekundární informace */
.prof__idbar-meta {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-size: .72rem;
  color: var(--color-text-muted, #64748b);
  white-space: nowrap;
  font-weight: 500;
}
.prof__idbar-meta svg { color: #94a3b8; flex-shrink: 0; }

/* Responsive — na mobilu zalom skupin a meta vlevo */
@media (max-width: 768px) {
  .prof__idbar { padding: .65rem .85rem; gap: .5rem .85rem; }
  .prof__idbar-group--tech {
    flex-basis: 100%;
    padding-left: 0;
    margin-left: 0;
    border-left: none;
    border-top: 1px solid #e2e8f0;
    padding-top: .5rem;
    margin-top: .15rem;
  }
  .prof__idbar-group--meta {
    flex-basis: 100%;
    margin-left: 0;
    padding-top: .4rem;
    border-top: 1px dashed #e2e8f0;
  }
}
@media (max-width: 480px) {
  .prof__idbar { padding: .6rem .75rem; }
  .prof__idbar-item { font-size: .78rem; }
  .prof__idbar-label { font-size: .68rem; }
}
.prof__pill {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .32rem .6rem;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 999px;
  color: rgba(255,255,255,.92);
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .01em;
  line-height: 1;
}
.prof__pill svg { opacity: .75; }


.prof__pill--limit { padding-right: .4rem; }


.prof__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  align-items: start;
}

.prof__col {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  min-width: 0;
}

/* ── Accordion layout (single column, collapsible cards) ───────────── */
.prof__accordion {
  display: flex;
  flex-direction: column;
  gap: .6rem;
}
/* Sekundární akordeon (např. Zabezpečení účtu — mimo main <form>) navazuje na primární
   se stejnou mezerou jako mezi ostatními kartami uvnitř akordeonu.
   (Nelze použít .prof__accordion + .prof__accordion — liší se parent: první je v <form>, druhý přímo v .prof.) */
.prof__accordion--secondary { margin-top: .6rem; }

/* ── Theme picker v Předvolbách zobrazení ──────────────────────────────── */
.prof__theme-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .6rem;
}
.prof__theme-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .75rem .85rem;
  background: #fff;
  border: 2px solid var(--color-border);
  border-radius: 10px;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s, transform .15s;
  text-align: left;
  font-family: inherit;
}
.prof__theme-card:hover {
  border-color: rgba(13, 148, 136, .35);
  box-shadow: 0 2px 8px rgba(15, 23, 42, .06);
  transform: translateY(-1px);
}
.prof__theme-card.is-active {
  border-color: #0d9488;
  background: linear-gradient(135deg, rgba(13, 148, 136, .06), rgba(13, 148, 136, .02));
  box-shadow: 0 0 0 3px rgba(13, 148, 136, .12);
}
.prof__theme-swatch {
  position: relative;
  width: 44px;
  height: 44px;
  border-radius: 10px;
  overflow: hidden;
  flex-shrink: 0;
  background: #f1f5f9;
  display: flex;
  align-items: center;
  justify-content: center;
}
.prof__theme-swatch-bg {
  position: absolute;
  inset: 0;
}
.prof__theme-swatch-fg {
  position: absolute;
  right: 5px;
  bottom: 5px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .2);
}
.prof__theme-meta {
  display: flex;
  flex-direction: column;
  gap: .1rem;
  flex: 1;
  min-width: 0;
}
.prof__theme-name {
  font-size: .9rem;
  font-weight: 700;
  color: var(--color-text);
  line-height: 1.2;
}
.prof__theme-desc {
  font-size: .72rem;
  color: var(--color-text-muted);
  line-height: 1.2;
}
.prof__theme-check {
  position: absolute;
  top: .5rem;
  right: .5rem;
  color: #0d9488;
  opacity: 0;
  transition: opacity .15s;
}
.prof__theme-card.is-active .prof__theme-check { opacity: 1; }
.prof__theme-card--custom .prof__theme-swatch {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  padding: 0;
}
.prof__theme-custom-input {
  flex: 1;
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  background: transparent;
}
.prof__theme-custom-input::-webkit-color-swatch-wrapper { padding: 0; }
.prof__theme-custom-input::-webkit-color-swatch { border: 0; }
.prof__theme-custom-input::-moz-color-swatch { border: 0; }

/* Pokročilý editor barev uvnitř Barevného schématu */
.prof__theme-advanced {
  margin-top: 1rem;
  background: #f8fafc;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  overflow: hidden;
}
.prof__theme-advanced-summary {
  list-style: none;
  cursor: pointer;
  padding: .7rem .9rem;
  display: flex;
  align-items: center;
  gap: .55rem;
  font-size: .82rem;
  font-weight: 600;
  color: var(--color-text);
  user-select: none;
  transition: background .15s;
}
.prof__theme-advanced-summary::-webkit-details-marker { display: none; }
.prof__theme-advanced-summary:hover { background: rgba(148, 163, 184, .08); }
.prof__theme-advanced-summary > span { flex: 1; min-width: 0; }
.prof__theme-advanced-chev { transition: transform .2s; color: var(--color-text-muted); }
.prof__theme-advanced[open] .prof__theme-advanced-chev { transform: rotate(180deg); }
.prof__theme-advanced-body {
  padding: 1rem;
  border-top: 1px solid var(--color-border);
  background: #fff;
}
.prof__theme-adv-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: .6rem;
  margin-bottom: 1rem;
}
.prof__theme-adv-group-label {
  grid-column: 1 / -1;
  margin: .35rem 0 .15rem;
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--color-text-muted);
  padding-bottom: .25rem;
  border-bottom: 1px dashed var(--color-border);
}
.prof__theme-adv-group-label:first-child { margin-top: 0; }
.prof__theme-adv-row {
  display: flex;
  align-items: center;
  gap: .65rem;
  padding: .5rem .65rem;
  background: #f8fafc;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}
.prof__theme-adv-row:hover {
  border-color: rgba(13, 148, 136, .35);
  background: #fff;
}
.prof__theme-adv-input {
  appearance: none;
  -webkit-appearance: none;
  width: 40px;
  height: 40px;
  border: 2px solid #fff;
  border-radius: 8px;
  padding: 0;
  margin: 0;
  cursor: pointer;
  box-shadow: 0 0 0 1px rgba(148, 163, 184, .4), 0 1px 3px rgba(0, 0, 0, .1);
  flex-shrink: 0;
  background: transparent;
}
.prof__theme-adv-input::-webkit-color-swatch-wrapper { padding: 0; }
.prof__theme-adv-input::-webkit-color-swatch { border: 0; border-radius: 5px; }
.prof__theme-adv-input::-moz-color-swatch { border: 0; border-radius: 5px; }
.prof__theme-adv-meta {
  display: flex;
  flex-direction: column;
  gap: .15rem;
  flex: 1;
  min-width: 0;
}
.prof__theme-adv-label {
  font-size: .8rem;
  font-weight: 600;
  color: var(--color-text);
  line-height: 1.2;
}
.prof__theme-adv-hex {
  font-family: var(--font-mono);
  font-size: .72rem;
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: .03em;
}
.prof__theme-adv-varname {
  font-family: var(--font-mono);
  font-size: .65rem;
  color: #94a3b8;
  background: transparent;
  padding: 0;
  white-space: nowrap;
  flex-shrink: 0;
}
.prof__theme-adv-actions {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  padding-top: .65rem;
  border-top: 1px dashed var(--color-border);
}
.prof__collapsible {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  transition: box-shadow .2s;
}
.prof__collapsible[open] {
  box-shadow: 0 4px 14px rgba(15, 23, 42, .08);
}
.prof__collapsible-summary {
  list-style: none;
  cursor: pointer;
  padding: .9rem 1.15rem;
  display: flex;
  align-items: center;
  gap: .75rem;
  user-select: none;
  transition: background .15s;
}
.prof__collapsible-summary::-webkit-details-marker { display: none; }
.prof__collapsible-summary:hover { background: rgba(148, 163, 184, .06); }

/* Static varianta — karta vždy rozbalená, bez chevronu, bez interaktivity */
.prof__collapsible--static > .prof__collapsible-summary {
  cursor: default;
}
.prof__collapsible--static > .prof__collapsible-summary:hover {
  background: transparent;
}
.prof__collapsible--static .prof__collapsible-chev { display: none; }

/* Colleague-detail: list přiřazených poboček */
.col-locations-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.col-location-item {
  display: flex;
  align-items: flex-start;
  gap: .75rem;
  padding: .65rem .85rem;
  background: #f8fafc;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  transition: border-color .15s, background .15s;
}
.col-location-item:hover {
  border-color: #cbd5e1;
  background: #fff;
}
.col-location-item__icon {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: #ecfdf5;
  color: #0d9488;
  margin-top: 2px;
}
.col-location-item__body {
  flex: 1;
  min-width: 0;
}
.col-location-item__name {
  font-weight: 600;
  color: #1a2035;
  font-size: .92rem;
  display: flex;
  align-items: center;
  gap: .4rem;
  flex-wrap: wrap;
}
.col-location-item__badge {
  display: inline-block;
  padding: .1rem .45rem;
  background: #ecfdf5;
  color: #0f766e;
  border: 1px solid #a7f3d0;
  border-radius: 4px;
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.col-location-item__addr {
  font-size: .82rem;
  color: #64748b;
  margin-top: .15rem;
}

/* Profile: Místnosti pobočky — inline pod každým <tr> pobočky v loc-table */
tr.loc-rooms-row > td.loc-rooms-row__cell {
  padding: .35rem .9rem .65rem;
  background: #fafbfc;
  border-top: 0;
  border-bottom: 1px solid #e5e7eb;
}
.loc-rooms-inline {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .35rem .4rem;
}
.loc-rooms-inline__label {
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #94a3b8;
  font-weight: 600;
  margin-right: .25rem;
}
.loc-rooms-inline__chip {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .15rem .15rem .15rem .55rem;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  font-size: .78rem;
  color: #334155;
  transition: border-color .12s, box-shadow .12s;
}
.loc-rooms-inline__chip:hover {
  border-color: #cbd5e1;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
/* Barevný akcent dle typu místnosti — tenký levý border + ikona */
.loc-rooms-inline__chip[data-type="ordinace"]      { border-left: 3px solid #14b8a6; }
.loc-rooms-inline__chip[data-type="zakrokovy_sal"] { border-left: 3px solid #dc2626; }
.loc-rooms-inline__chip[data-type="recepce"]       { border-left: 3px solid #3b82f6; }
.loc-rooms-inline__chip[data-type="sklad"]         { border-left: 3px solid #f59e0b; }
.loc-rooms-inline__chip[data-type="sterilizace"]   { border-left: 3px solid #ec4899; }
.loc-rooms-inline__chip[data-type="dospavaci"]     { border-left: 3px solid #a78bfa; }
.loc-rooms-inline__chip[data-type="opg"]           { border-left: 3px solid #8b5cf6; }
.loc-rooms-inline__chip[data-type="laborator"]     { border-left: 3px solid #06b6d4; }
.loc-rooms-inline__chip[data-type="kancelar"]      { border-left: 3px solid #64748b; }
.loc-rooms-inline__chip[data-type="cekarna"]       { border-left: 3px solid #94a3b8; }
.loc-rooms-inline__chip[data-type="wc"]            { border-left: 3px solid #cbd5e1; }
.loc-rooms-inline__chip[data-type="jine"]          { border-left: 3px solid #cbd5e1; }
.loc-rooms-inline__chip-name {
  font-weight: 500;
  color: #1a2035;
}
.loc-rooms-inline__remove {
  background: transparent;
  border: none;
  color: #94a3b8;
  cursor: pointer;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  font-size: .9rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  margin-left: .15rem;
  transition: background .1s, color .1s;
}
.loc-rooms-inline__remove:hover { background: #fef2f2; color: #dc2626; }
.loc-rooms-inline__add {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .2rem .55rem;
  background: transparent;
  border: 1px dashed #cbd5e1;
  border-radius: 999px;
  cursor: pointer;
  font-size: .76rem;
  color: #64748b;
  font-weight: 500;
  transition: border-color .12s, color .12s, background .12s;
}
.loc-rooms-inline__add:hover {
  border-color: #14b8a6;
  color: #0d9488;
  background: #f0fdfa;
}
.loc-rooms-inline__add-icon { font-size: 1rem; line-height: 1; font-weight: 700; }

/* ───────────────────────────────────────────────
   Loc Rooms List — kompaktní jednořádkové místnosti se sloupci metrik
   ─────────────────────────────────────────────── */
.loc-rooms-list {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  padding: .25rem 0;
}
.loc-rooms-list__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  margin-bottom: .15rem;
}
.loc-rooms-list__title {
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #94a3b8;
  font-weight: 600;
}
.loc-rooms-list__add {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .2rem .55rem;
  background: transparent;
  border: 1px dashed #cbd5e1;
  border-radius: 999px;
  cursor: pointer;
  font-size: .72rem;
  color: #64748b;
  font-weight: 500;
  transition: border-color .12s, color .12s, background .12s;
}
.loc-rooms-list__add:hover {
  border-color: #14b8a6;
  color: #0d9488;
  background: #f0fdfa;
}
.loc-rooms-list__add-icon { font-size: 1rem; line-height: 1; font-weight: 700; }
.loc-rooms-list__empty {
  padding: .5rem .65rem;
  font-size: .78rem;
  color: #94a3b8;
  font-style: italic;
  background: #fafbfc;
  border-radius: 6px;
}
.loc-rooms-list__items {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
.loc-rooms-list__item {
  display: grid;
  grid-template-columns: minmax(180px, 1.2fr) 70px 70px 80px 70px 28px;
  align-items: center;
  gap: .35rem;
  padding: .35rem .55rem;
  border-radius: 6px;
  background: #fff;
  border: 1px solid transparent;
  transition: background .1s, border-color .1s;
}
.loc-rooms-list__item:hover { background: #f9fafb; border-color: #e5e7eb; }
.loc-rooms-list__item--head {
  font-size: .68rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #94a3b8;
  font-weight: 600;
  padding: .25rem .55rem;
  background: transparent !important;
  border-color: transparent !important;
  border-bottom: 1px solid #f0f2f5;
  border-radius: 0;
}
.loc-rooms-list__item--head .loc-rooms-list__cell--metric { text-align: center; }
.loc-rooms-list__cell--name {
  display: flex;
  align-items: center;
  gap: .45rem;
  min-width: 0;
}
.loc-rooms-list__type-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  border-radius: 6px;
  font-size: .85rem;
  background: #f1f5f9;
  border-left: 3px solid #cbd5e1;
}
.loc-rooms-list__type-badge[data-type="ordinace"]      { border-left-color: #14b8a6; background: #f0fdfa; }
.loc-rooms-list__type-badge[data-type="zakrokovy_sal"] { border-left-color: #dc2626; background: #fef2f2; }
.loc-rooms-list__type-badge[data-type="recepce"]       { border-left-color: #3b82f6; background: #eff6ff; }
.loc-rooms-list__type-badge[data-type="sklad"]         { border-left-color: #f59e0b; background: #fffbeb; }
.loc-rooms-list__type-badge[data-type="sterilizace"]   { border-left-color: #ec4899; background: #fdf2f8; }
.loc-rooms-list__type-badge[data-type="dospavaci"]     { border-left-color: #a78bfa; background: #f5f3ff; }
.loc-rooms-list__type-badge[data-type="opg"]           { border-left-color: #8b5cf6; background: #faf5ff; }
.loc-rooms-list__type-badge[data-type="laborator"]     { border-left-color: #06b6d4; background: #ecfeff; }
.loc-rooms-list__type-badge[data-type="kancelar"]      { border-left-color: #64748b; background: #f8fafc; }
.loc-rooms-list__type-badge[data-type="cekarna"]       { border-left-color: #94a3b8; background: #f8fafc; }
.loc-rooms-list__type-badge[data-type="wc"]            { border-left-color: #cbd5e1; background: #f8fafc; }
.loc-rooms-list__type-badge[data-type="jine"]          { border-left-color: #cbd5e1; background: #f8fafc; }
.loc-rooms-list__name {
  font-size: .85rem;
  font-weight: 600;
  color: #1a2035;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.loc-rooms-list__cell--metric { text-align: center; }
.loc-rooms-list__metric {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 24px;
  padding: 0 .4rem;
  border-radius: 999px;
  background: #f1f5f9;
  color: #94a3b8;
  font-size: .8rem;
  font-weight: 600;
  text-decoration: none;
  transition: background .1s, color .1s;
}
.loc-rooms-list__metric:hover {
  background: #e2e8f0;
  color: #475569;
}
.loc-rooms-list__metric.is-active {
  background: #ecfeff;
  color: #0e7490;
}
.loc-rooms-list__metric.is-active:hover {
  background: #cffafe;
  color: #0c4a6e;
}
.loc-rooms-list__metric.is-alert {
  background: #fef2f2;
  color: #dc2626;
}
.loc-rooms-list__metric.is-alert:hover {
  background: #fee2e2;
  color: #b91c1c;
}
.loc-rooms-list__cell--act { text-align: right; }
.loc-rooms-list__remove {
  background: transparent;
  border: 1px solid #fecaca;
  color: #dc2626;
  cursor: pointer;
  width: 24px;
  height: 24px;
  border-radius: 6px;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background .1s, color .1s, border-color .1s;
}
.loc-rooms-list__remove:hover { background: #fef2f2; color: #b91c1c; border-color: #fca5a5; }

@media (max-width: 720px) {
  .loc-rooms-list__item {
    grid-template-columns: 1fr 50px 50px 60px 50px 22px;
    font-size: .78rem;
    padding: .3rem .35rem;
  }
  .loc-rooms-list__type-badge { width: 22px; height: 22px; font-size: .75rem; }
  .loc-rooms-list__name { font-size: .8rem; }
}

/* Edit-colleague: pobočky cards (multi-select s primary radio) */
.ec-locs-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: .55rem;
}
.ec-loc-card {
  display: flex;
  align-items: flex-start;
  gap: .65rem;
  padding: .65rem .85rem;
  background: #fafbfc;
  border: 1.5px solid #e2e8f0;
  border-radius: 8px;
  cursor: pointer;
  transition: border-color .12s, background .12s;
}
.ec-loc-card:hover { border-color: #cbd5e1; }
.ec-loc-card.is-checked {
  background: #f0fdfa;
  border-color: #14b8a6;
  box-shadow: 0 0 0 1px #14b8a6 inset;
}
.ec-loc-card > input[type="checkbox"] {
  margin-top: 4px;
  flex-shrink: 0;
  accent-color: #14b8a6;
}
.ec-loc-card__body { flex: 1; min-width: 0; }
.ec-loc-card__name {
  font-weight: 600;
  color: #1a2035;
  font-size: .9rem;
  line-height: 1.3;
}
.ec-loc-card__addr {
  font-size: .76rem;
  color: #64748b;
  margin-top: .15rem;
}
.ec-loc-card__primary {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  font-size: .72rem;
  color: #64748b;
  cursor: pointer;
  flex-shrink: 0;
  padding: .15rem .35rem;
  border-radius: 4px;
}
.ec-loc-card__primary input[type="radio"] { margin: 0; accent-color: #d97706; }
.ec-loc-card__primary input[type="radio"]:checked + span { color: #d97706; font-weight: 600; }
.prof__collapsible-summary > h2 {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-text);
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: .45rem;
}
.prof__collapsible-summary-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: rgba(13, 148, 136, .1);
  color: #0d9488;
  flex-shrink: 0;
}
.prof__collapsible-chev {
  flex-shrink: 0;
  color: var(--color-text-muted);
  transition: transform .2s;
}
.prof__collapsible[open] > .prof__collapsible-summary .prof__collapsible-chev {
  transform: rotate(180deg);
}
.prof__collapsible-body {
  padding: 1.15rem 1.15rem 1.25rem;
  border-top: 1px solid var(--color-border);
  animation: profAccordionIn .25s ease;
}
@keyframes profAccordionIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* ── Ordinace a lékař karta — 2-col grid (formulář | sticky logo sidebar) ───── */
.prof__ord-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 260px;
  gap: 2rem;
  align-items: start;
}
.prof__ord-main {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}
.prof__ord-logo {
  grid-column: 2;
  grid-row: 1;
  align-self: start;
  position: sticky;
  top: 1rem;
  padding: 1rem;
  background: linear-gradient(180deg, rgba(13, 148, 136, .06) 0%, rgba(13, 148, 136, .02) 100%);
  border: 1px solid rgba(13, 148, 136, .2);
  border-radius: 14px;
  text-align: center;
}
.prof__ord-logo-preview {
  width: 100%;
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: var(--color-surface);
  border: 1px dashed rgba(148, 163, 184, .5);
  overflow: hidden;
  margin-bottom: .75rem;
}
.prof__ord-logo-preview img { width: 100%; height: 100%; object-fit: cover; border-radius: 11px; }
.prof__ord-logo-preview svg { width: 44px; height: 44px; opacity: .35; }
.prof__ord-logo-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: .4rem;
  margin-bottom: .6rem;
}
.prof__ord-logo-upload {
  cursor: pointer;
  padding: .4rem .8rem;
  font-size: .78rem;
  font-weight: 600;
}
.prof__ord-logo-status {
  font-size: .72rem;
  color: var(--color-text-muted);
  width: 100%;
  text-align: center;
  min-height: .85rem;
}
.prof__ord-logo-hint {
  font-size: .68rem;
  color: var(--color-text-muted);
  line-height: 1.45;
  padding-top: .4rem;
  border-top: 1px dashed rgba(148, 163, 184, .3);
}
@media (max-width: 820px) {
  .prof__ord-body {
    grid-template-columns: 1fr;
  }
  .prof__ord-logo {
    grid-column: 1;
    grid-row: 1;
    position: static;
    max-width: 280px;
    margin: 0 auto 1rem;
  }
  .prof__ord-main {
    grid-row: 2;
  }
}

/* Info banner „údaje spravuje hlavní lékař" (kolega readonly view). */
.prof__ord-lock-note {
  display: flex;
  align-items: center;
  gap: .55rem;
  margin: 0;
  padding: .65rem .9rem;
  background: rgba(148, 163, 184, .08);
  border-left: 3px solid #94a3b8;
  border-radius: 0 8px 8px 0;
  font-size: .8rem;
  color: var(--color-text-muted);
  line-height: 1.5;
}

/* Sekce uvnitř ordinace (Identita / Kontakt / Právní údaje) — moderní karty. */
.prof__ord-section {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  overflow: hidden;
}
.prof__ord-section-title {
  display: flex;
  align-items: center;
  gap: .55rem;
  margin: 0;
  padding: .85rem 1.1rem;
  background: linear-gradient(90deg, rgba(13, 148, 136, .07) 0%, rgba(13, 148, 136, .02) 100%);
  border-bottom: 1px solid rgba(13, 148, 136, .15);
  border-left: 3px solid #0d9488;
  font-size: .88rem;
  font-weight: 800;
  color: #0d9488;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.prof__ord-section-title svg { opacity: .85; }
.prof__ord-section > .form-group,
.prof__ord-section > .form-row {
  margin: 0;
  padding: .85rem 1rem;
  border-bottom: 1px solid var(--color-border);
}
.prof__ord-section > .form-group:last-child,
.prof__ord-section > .form-row:last-child { border-bottom: none; }
/* Body wrapper pro obsah, který není form-group (tlačítka, výpisy, vlastní markup). */
.prof__ord-section-body {
  padding: 1rem;
}
.prof__ord-section-body > *:first-child { margin-top: 0; }
.prof__ord-section-body > *:last-child { margin-bottom: 0; }
.prof__ord-section .form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.prof__ord-section .form-row .form-group {
  margin: 0;
  padding: 0;
  border: 0;
}
@media (max-width: 540px) {
  .prof__ord-section .form-row { grid-template-columns: 1fr; }
}

.prof__ord-section .form-label {
  font-size: .72rem;
  font-weight: 700;
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-bottom: .3rem;
  display: inline-flex;
  align-items: center;
  gap: .3rem;
}
.prof__ord-section .form-control[readonly] {
  background: #f8fafc;
  color: #334155;
  border: 1px solid #e2e8f0;
  box-shadow: inset 0 1px 2px rgba(15, 23, 42, .03);
  cursor: default;
}
.prof__ord-section .form-control[readonly]:focus {
  outline: none;
  border-color: #cbd5e1;
  box-shadow: inset 0 1px 2px rgba(15, 23, 42, .03);
}
/* Zamčená pole (🔒 ARES/registrace) — jemný levý teal accent + light tint (varianta B, 2026-05-22). */
.prof__ord-section .form-group:has(.prof__ord-lock) .form-control[readonly] {
  border-left: 2px solid #0d9488;
  background: linear-gradient(90deg, rgba(13, 148, 136, .06) 0%, #f8fafc 55%);
}
.prof__ord-section .form-hint {
  font-size: .72rem;
  margin-top: .35rem;
  color: var(--color-text-muted);
  line-height: 1.45;
}
.prof__ord-lock {
  display: inline-flex;
  align-items: center;
  gap: .2rem;
  font-size: .7rem;
  color: #64748b;
  background: #eef2f7;
  padding: .05rem .4rem;
  border-radius: 999px;
  cursor: help;
  vertical-align: 1px;
}

/* Secondary heading uvnitř accordion body (např. 2FA / FIDO2 sekce). */


/* Ordinační hodiny — lichý + sudý týden vedle sebe na širokém viewportu. */
.prof__oh-weeks {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2.5rem;
}
/* Kompaktnější zobrazení času v rámci jednoho týdne (řádky blíže k sobě). */
.prof__oh-weeks .oh-table td,
.prof__oh-weeks .oh-table th,
.prof__collapsible-body .oh-table td,
.prof__collapsible-body .oh-table th {
  padding-top: .25rem;
  padding-bottom: .25rem;
}
.prof__oh-weeks .oh-table input[type="time"],
.prof__collapsible-body .oh-table input[type="time"] {
  padding: .28rem .4rem;
  font-size: .82rem;
}
@media (max-width: 900px) {
  .prof__oh-weeks { grid-template-columns: 1fr; gap: 1.5rem; }
}

/* Spodní grid — 2 sloupce pro Identifikace/Odkazy (bez horního prof__grid). */
.prof__grid-bottom {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-top: .85rem;
  align-items: stretch;
}
@media (max-width: 640px) {
  .prof__grid-bottom { grid-template-columns: 1fr; }
}

/* Základna profilu — dvě karty vždy vedle sebe na posledním řádku .prof__grid,
   stejně vysoké (stretch) → ucelený footer dojem. Auto-placement: 2 .prof__col zabírají
   row 1, dvě .prof__card--bottom padnou na row 2 vedle sebe. */
.prof__card--bottom {
  align-self: stretch;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.prof__card--bottom .prof__info-list {
  flex: 1;
  justify-content: space-between;
}

/* Obsah: label vlevo, hodnota vpravo — jasné dvojice, bez ořezávání. */
.prof__info-list {
  display: flex;
  flex-direction: column;
  gap: .55rem;
  margin-top: .55rem;
}
.prof__info-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: .4rem 1rem;
  align-items: baseline;
  padding: .45rem 0;
  border-top: 1px dashed rgba(148, 163, 184, .3);
}
.prof__info-row:first-child {
  border-top: 0;
  padding-top: 0;
}
.prof__info-label {
  font-size: .78rem;
  color: var(--color-text-muted);
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}
.prof__info-value {
  font-size: .82rem;
  font-weight: 600;
  color: var(--color-text);
  word-break: break-all;
  line-height: 1.45;
  text-align: right;
}
.prof__info-value--mono {
  font-family: var(--font-mono);
  font-size: .76rem;
  font-weight: 500;
  color: var(--color-primary);
  background: transparent;
  padding: 0;
}
/* ID účtu — výrazný, čitelný badge (ne drobný šedý monospace). */
.prof__info-value--id {
  font-family: var(--font-mono);
  font-size: .95rem;
  font-weight: 700;
  letter-spacing: .06em;
  color: #0d9488;
  background: rgba(13, 148, 136, .1);
  border: 1px solid rgba(13, 148, 136, .25);
  padding: .18rem .6rem;
  border-radius: 6px;
  line-height: 1.2;
  display: inline-block;
}
.prof__info-value--wrap { word-break: break-all; }
.prof__info-value--link {
  color: var(--color-accent);
  text-decoration: none;
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  max-width: 100%;
}
.prof__info-value--link:hover { text-decoration: underline; }
.prof__info-value-text { word-break: keep-all; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }

/* Ellipsis varianta — kompaktní, max 2 řádky, dlouhý text se ořízne */
.prof__info-value--ellipsis {
  word-break: keep-all;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: inline-block;
  max-width: 100%;
  vertical-align: middle;
  min-width: 0;
}
/* Pro link variantu — flex layout (text + ikona) musí mít min-width:0 + overflow */
.prof__info-value--link.prof__info-value--ellipsis {
  display: inline-flex;
  overflow: hidden;
}
.prof__info-value--link.prof__info-value--ellipsis .prof__info-value-text {
  flex: 1 1 auto;
  min-width: 0;
}

/* Copy-to-clipboard varianta (Token, atd.) */
.prof__info-value--copy {
  cursor: pointer;
  user-select: all;
  transition: background .18s ease, color .18s ease;
  border-radius: 4px;
  padding: 0 .35rem;
}
.prof__info-value--copy:hover {
  background: rgba(20,184,166,.1);
  color: var(--color-accent);
}
.prof__info-value--copy:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}
.prof__info-copy-icon {
  font-size: .8em;
  margin-left: .3rem;
  opacity: .55;
  transition: opacity .18s ease;
}
.prof__info-value--copy:hover .prof__info-copy-icon { opacity: 1; }

/* Mobil: karty pod sebou, label nad hodnotou pro lepší čitelnost dlouhých URL. */
@media (max-width: 640px) {
  .prof__card--bottom { grid-row: auto; }
  .prof__info-row {
    grid-template-columns: 1fr;
    gap: .15rem;
  }
  .prof__info-value { text-align: left; }
}

.prof__card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: 1rem 1.25rem;
  box-shadow: var(--shadow-sm);
}

.prof__card--muted {
  background: var(--color-surface-alt);
}

.prof__card-title {
  font-size: .88rem;
  font-weight: 700;
  color: var(--color-primary);
  margin: 0 0 .75rem;
  padding-bottom: .45rem;
  border-bottom: 1px solid var(--color-border);
}

.prof .form-label {
  font-size: .78rem;
  margin-bottom: .2rem;
}

.prof .form-control {
  font-size: .82rem;
  padding: .4rem .65rem;
}

.prof .form-control--time {
  padding: .3rem .4rem;
  font-size: .78rem;
}

.prof .form-hint {
  font-size: .72rem;
  margin-top: .15rem;
}

.prof .form-group {
  margin-bottom: .6rem;
}

.prof .form-row {
  gap: .6rem;
}

.prof__meta-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: .35rem 0;
  border-bottom: 1px solid var(--color-border);
  font-size: .78rem;
}

.prof__meta-row:last-child { border-bottom: none; }

.prof__meta-label {
  color: var(--color-text-muted);
  font-weight: 500;
}

.prof__meta-value {
  color: var(--color-text);
  font-weight: 600;
  text-align: right;
  word-break: break-all;
  font-size: .75rem;
}

.prof__actions {
  display: flex;
  gap: .5rem;
  margin-top: 1.25rem;
}

.prof__action-btn {
  flex: 1;
  text-align: center;
  font-size: .82rem;
  padding: .5rem .75rem;
}

/* ==========================================================================
   23c. ADMIN — CARD & DETAIL GRID
   ========================================================================== */
.card {
  background: var(--color-surface);
  border: none;
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 3px rgba(0,0,0,.04), 0 1px 2px rgba(0,0,0,.02);
  overflow: hidden;
  transition: box-shadow .15s;
}
.card:hover {
  box-shadow: var(--shadow);
}

.card__body {
  padding: 1.1rem 1.35rem;
}
.card + .card { margin-top: .85rem; }


/* ==========================================================================
   24. ADMIN — FILTRY, KARTY, DROPDOWN
   ========================================================================== */

/* Inline filter bar */
.adm-filter {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
}

.adm-filter__search { flex: 1; min-width: 180px; }
.adm-filter__select { width: auto; min-width: 140px; }

/* Doctor cards (no horizontal scroll) */
.adm-cards {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  margin-bottom: 1.5rem;
}

.adm-card {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .75rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: .6rem 1rem;
  transition: border-color var(--transition), box-shadow var(--transition);
}

.adm-card:hover {
  border-color: var(--color-accent);
  box-shadow: var(--shadow-sm);
}

.adm-card__main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: .1rem;
}

.adm-card__name {
  font-size: .95rem;
  font-weight: 700;
  color: var(--color-primary);
  text-decoration: none;
}
.adm-card__name:hover { color: var(--color-accent); text-decoration: none; }

.adm-card__clinic {
  font-size: .8rem;
  color: var(--color-text-muted);
}

.adm-card__email {
  font-size: .8rem;
  color: var(--color-text-muted);
}

.adm-card__meta {
  display: flex;
  align-items: center;
  gap: .65rem;
  flex-shrink: 0;
}

.adm-card__meta .badge {
  min-width: 90px;
  text-align: center;
  justify-content: center;
}

.adm-card__stat {
  font-size: .8rem;
  font-weight: 600;
  color: var(--color-text-secondary);
}

.adm-card__date {
  font-size: .75rem;
  color: var(--color-text-muted);
}

.adm-card__meta--col {
  flex-direction: column;
  align-items: flex-end;
  gap: .15rem;
}

.adm-card__actions {
  display: flex;
  align-items: center;
  gap: .35rem;
  flex-shrink: 0;
}

/* Dropdown */
.dropdown {
  position: relative;
}

.dropdown__trigger {
  cursor: pointer;
}

.dropdown__menu {
  display: none;
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  min-width: 160px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  z-index: 100;
  padding: .35rem 0;
  /* Scroll při mnoha položkách / flipu nahoru na nízkém viewportu (Fold/Flip/landscape) —
     bez toho přetekly položky mimo obrazovku a byly nedosažitelné (analogicky navbaru). */
  max-height: calc(100dvh - 24px);
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  animation: dropIn .15s ease;
}

@keyframes dropIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.dropdown__menu.open,
details[open] > .dropdown__menu { display: block; }

.dropdown__item {
  display: block;
  width: 100%;
  padding: .55rem 1.1rem;
  font-size: .88rem;
  font-family: inherit;
  color: var(--color-text);
  background: none;
  border: none;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: background var(--transition);
}

.dropdown__item:hover {
  background: var(--color-surface-alt);
  text-decoration: none;
}

.dropdown__item--danger { color: var(--color-danger); }
.dropdown__item--danger:hover { background: var(--color-danger-light); }

.dropdown__sep {
  height: 1px;
  background: var(--color-border);
  margin: .25rem 0;
}

.dropdown__form { margin: 0; }

/* Responsive admin cards */
@media (max-width: 640px) {
  .adm-card {
    flex-direction: column;
    align-items: flex-start;
    gap: .5rem;
  }
  .adm-card__meta { flex-wrap: wrap; }
  .adm-card__actions { align-self: flex-end; }
}

/* ==========================================================================
   26. UTILITY TŘÍDY
   ========================================================================== */
.text-center  { text-align: center !important; }
.text-right   { text-align: right !important; }
.text-muted   { color: var(--color-text-muted) !important; }
.text-success { color: var(--color-success) !important; }
.text-danger  { color: var(--color-danger) !important; }


.mt-4 { margin-top: 1rem !important; }
.mt-6 { margin-top: 1.5rem !important; }


.mb-6 { margin-bottom: 1.5rem !important; }

.d-flex   { display: flex !important; }
.d-none   { display: none !important; }


.divider {
  border: none;
  border-top: 1px solid var(--color-border);
  margin: 1.5rem 0;
}

/* ==========================================================================
   23. RESPONZIVITA
   ========================================================================== */

/* Hamburger menu – mobilní + tablet (≤1024px, ať se vodorovný navbar neořezává) */
@media (max-width: 1024px) {
  .navbar__hamburger { display: flex; }

  .navbar__links {
    display: none;
    position: absolute;
    top: 62px;
    left: 0;
    right: 0;
    background: var(--color-primary);
    flex-direction: column;
    padding: .75rem;
    border-top: 1px solid rgba(255,255,255,.1);
    box-shadow: 0 8px 20px rgba(0,0,0,.25);
    z-index: 350;
    gap: .2rem;
    /* Celá nabídka scrollovatelná — bez toho při mnoha položkách přetekla pod
       spodní okraj obrazovky a spodní položky byly nedosažitelné (root cause). */
    max-height: calc(100vh - 62px);
    max-height: calc(100dvh - 62px);
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
  }

  .navbar__links.open { display: flex; }
  .navbar__links a { width: 100%; flex-shrink: 0; }

  .navbar { position: sticky; }

  /* Notif bell – přizpůsobení v mobilním menu */

  .navbar__notif-panel {
    position: fixed;
    top: 62px;
    left: 0;
    right: 0;
    width: auto;
    border-radius: 0;
  }
}

@media (max-width: 900px) {
  .st-grid-4 { grid-template-columns: repeat(2, 1fr) !important; }
  .st-grid-5 { grid-template-columns: repeat(3, 1fr) !important; }
  .st-grid-2 { grid-template-columns: 1fr !important; }
  .footer__inner { grid-template-columns: 1fr 1fr; gap: 1.5rem; }
  
  
  
  .hero__actions { justify-content: center; }
}

@media (max-width: 700px) {
  .main-content { padding: 1.5rem 0; }

  .page-header { flex-direction: column; }
  .page-header__actions { width: 100%; }

  .stats-grid { grid-template-columns: 1fr 1fr; }
  
  
  
  
  .steps { grid-template-columns: 1fr 1fr; }

  .section { padding: 3rem 0; }
  .hero { padding: 3rem 0 2.5rem; }

  .auth-card { padding: 2rem 1.25rem; }
  .footer__inner { grid-template-columns: 1fr; gap: 1.5rem; }
}


@media (max-width: 600px) {
  .reg__section { gap: .75rem; }
  .reg__section-badge { width: 30px; height: 30px; font-size: .8rem; margin-top: 1.2rem; }
  .reg__section-body { padding: 1.15rem 1rem .4rem; }
  .reg__fields { grid-template-columns: 1fr; }

  .oh-table__head { display: none; }
  .oh-table__row {
    grid-template-columns: 1fr;
    gap: .35rem;
    padding: .6rem .75rem;
  }
  .oh-table__day { margin-bottom: .15rem; }
  .oh-table__times::before {
    font-size: .65rem;
    color: var(--color-text-muted);
    font-weight: 600;
    width: 30px;
    flex-shrink: 0;
  }
  .oh-table__times:first-of-type::before { content: "DOP"; }
  .oh-table__times:last-of-type::before  { content: "ODP"; }
}

@media (max-width: 420px) {
  .reg__section { flex-direction: column; gap: 0; }
  .reg__section-badge {
    margin: 0 0 -18px 1rem;
    position: relative;
    z-index: 1;
  }
}

@media (max-width: 540px) {
  .form-row { grid-template-columns: 1fr; }
  .st-grid-4, .st-grid-5 { grid-template-columns: 1fr !important; }
}

@media (max-width: 480px) {
  .stats-grid         { grid-template-columns: 1fr; }
  
  
  
  .steps              { grid-template-columns: 1fr; }
  
  .hero__actions      { flex-direction: column; align-items: stretch; }
  .container { padding: 0 1rem; }
}

/* ==========================================================================
   FILTER BAR (.sf)
   ========================================================================== */
.sf {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 1rem 1.25rem;
  margin-bottom: 1.25rem;
  box-shadow: var(--shadow-sm);
}
.sf__search {
  position: relative;
  margin-bottom: .75rem;
}
.sf__search-icon {
  position: absolute;
  left: .85rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-text-muted);
  pointer-events: none;
}
.sf__search-input {
  width: 100%;
  padding: .55rem .95rem .55rem 2.5rem;
  border: 1.5px solid var(--color-border);
  border-radius: 8px;
  font-size: .9rem;
  background: var(--color-bg, #fff);
  color: var(--color-text);
  transition: border-color .15s, box-shadow .15s;
  outline: none;
}
.sf__search-input:focus {
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(13,148,136,.1);
}
.sf__search-input::placeholder { color: var(--color-text-muted); opacity: .6; }
.sf__search-clear {
  position: absolute;
  right: .75rem;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.2rem;
  color: var(--color-text-muted);
  text-decoration: none;
  line-height: 1;
}
.sf__search-clear:hover { color: var(--color-text); }
.sf__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem;
}
.sf__select {
  padding: .45rem .75rem;
  border: 1.5px solid var(--color-border);
  border-radius: 8px;
  font-size: .85rem;
  background: var(--color-bg, #fff);
  color: var(--color-text);
  cursor: pointer;
  outline: none;
}
.sf__select:focus { border-color: var(--color-accent); }
.sf__select--sm { min-width: 80px; }
.sf__dates {
  display: flex;
  align-items: center;
  gap: .3rem;
}
.sf__date {
  padding: .55rem .6rem;
  border: 1.5px solid var(--color-border);
  border-radius: 8px;
  font-size: .85rem;
  background: var(--color-bg, #fff);
  color: var(--color-text);
  outline: none;
  width: 140px;
}
.sf__date:focus { border-color: var(--color-accent); }
.sf__date-sep { color: var(--color-text-muted); font-size: .8rem; }
.sf__check {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  font-size: .82rem;
  color: var(--color-text-muted);
  cursor: pointer;
  white-space: nowrap;
}
.sf__reset {
  font-size: .8rem;
  color: var(--color-text-muted);
  text-decoration: none;
  white-space: nowrap;
}
.sf__reset:hover { color: var(--color-accent); }
.sf__spacer { flex: 1; }


@media (max-width: 640px) {
  .sf__row { flex-direction: column; align-items: stretch; }
  .sf__dates { width: 100%; }
  .sf__date { flex: 1; }
  .sf__select { width: 100%; }
}

/* Fav/QR action icons: mobile toggle */
@media (max-width: 640px) {
  .fav-actions { display: none !important; }
  .fav-actions-mobile { display: flex !important; }
  .col-fav-actions-desktop { display: none !important; }
  .col-fav-actions-mobile { display: flex !important; }
}

/* Tabulky: na malých displejích povolit zalamování textu */
@media (max-width: 768px) {
  .table td,
  .table th { white-space: normal !important; }
  .table td { font-size: .8rem; padding: .55rem .6rem; }
  .table th { font-size: .7rem; padding: .55rem .6rem; }
  .table th.sortable { padding-right: 1.4rem; }

  /* Akce dropdown */
  .dropdown__menu { min-width: 140px; }
}

/* Filtrování — stacking na mobilu */
@media (max-width: 640px) {
  .sf__row { flex-direction: column; gap: .5rem; }
  .sf__search { width: 100%; }
  .sf__select { width: 100%; min-width: 0 !important; }
  .sf__dates { width: 100%; }
  .sf__date { flex: 1; width: auto; min-width: 0; }
  .sf__check { width: 100%; }
  .adm-filter__search { min-width: 0 !important; width: 100%; }
  .adm-filter__select { min-width: 0 !important; width: 100%; }

  /* Page header */
  .page-header { flex-direction: column; gap: .75rem; align-items: stretch; }
  .page-header > div:last-child { justify-content: flex-start; }
}

/* Modální okna — responsivita */
@media (max-width: 640px) {
  .modal-overlay { padding: .75rem; }
  .modal { max-width: calc(100vw - 1.5rem) !important; padding: 1.5rem 1.25rem 1.25rem; }
  .modal img { max-width: 100%; height: auto; }
  .modal__title { font-size: 1.2rem; }
  .modal iframe { height: 50vh !important; }

  /* Inline grids na mobilu — stack do jednoho sloupce */
  .card__body [style*="grid-template-columns: 1fr 1fr"],
  .card__body [style*="grid-template-columns:1fr 1fr"],
  .card [style*="grid-template-columns: 1fr 1fr"],
  .card [style*="grid-template-columns:1fr 1fr"] {
    grid-template-columns: 1fr !important;
  }
  .card__body [style*="grid-template-columns: repeat(4"],
  .card__body [style*="grid-template-columns:repeat(4"],
  .card [style*="grid-template-columns: repeat(4"],
  .card [style*="grid-template-columns:repeat(4"] {
    grid-template-columns: 1fr 1fr !important;
  }
  .card__body [style*="grid-template-columns: repeat(7"],
  .card__body [style*="grid-template-columns:repeat(7"] {
    grid-template-columns: repeat(4, 1fr) !important;
  }

  /* Perm grid na mobilu */
  .perm-grid { grid-template-columns: 1fr !important; }
  .perm-item:nth-child(odd) { border-right: none !important; }

  /* Dash hero actions stack */
  .dash__hero-actions { flex-direction: column; gap: .5rem; }
  .dash__hero-actions .btn { width: 100%; text-align: center; }
}

/* ==========================================================================
   TABULKA — nepřečtené řádky, linky, badge
   ========================================================================== */


@keyframes pulse-dot { 0%,100%{opacity:1} 50%{opacity:.4} }


/* ==========================================================================
   RESPONSIVE FIXES — Recent submissions grid, filters, profile
   ========================================================================== */

/* Tablet — zjednodušit grid tabulky */
@media (max-width: 1024px) {
  .dash__recent-row[style*="grid-template-columns"] {
    font-size: .72rem;
  }
}

/* Tablet/mobile — filter bar stacking */
@media (max-width: 768px) {
  .sf__row {
    flex-direction: column;
    gap: .5rem;
  }
  .sf__select,
  .sf__select--sm {
    width: 100%;
    min-width: unset !important;
  }
  .sf__dates {
    width: 100%;
  }
  .sf__date {
    width: 100%;
    flex: 1;
  }
  .sf__check {
    width: 100%;
  }
  .sf__spacer { display: none; }
  
}

/* Mobile — hero stats compact */
@media (max-width: 640px) {
  
  
  
  .dash__hero-top {
    flex-direction: column;
    text-align: center;
    gap: .75rem;
    padding: 1.25rem 1.5rem;
  }
  
}

/* Mobile — recent submissions grid → kompaktní list */
@media (max-width: 768px) {
  .dash__recent-row[style*="grid-template-columns"] {
    display: flex !important;
    flex-wrap: wrap;
    gap: .25rem .5rem;
    padding: .5rem 1rem;
  }
  .dash__recent-row [style*="grid-column"] {
    grid-column: auto !important;
  }
  /* Skrýt nadpisy gridu na mobilu */
  .dash__colleague-card > div[style*="grid-template-columns"]:first-child {
    display: none !important;
  }
}

/* Mobile — pagination compact */
@media (max-width: 480px) {
  .pagination__list {
    flex-wrap: wrap;
    gap: .2rem;
  }
  .pagination__link {
    padding: .3rem .45rem;
    font-size: .72rem;
  }
  .pagination-bar__meta {
    flex-direction: column;
    gap: .35rem;
    align-items: flex-start;
  }
}

/* Mobile — modal padding */
@media (max-width: 480px) {
  .modal-overlay {
    padding: .75rem;
  }
  .modal {
    max-height: calc(100vh - 1.5rem);
  }
  .modal form[style*="padding:2rem"] {
    padding: 1.25rem 1.5rem !important;
  }
}

/* Profile grid — move breakpoint earlier */
@media (max-width: 768px) {
  .prof__grid {
    grid-template-columns: 1fr !important;
  }
}

/* Registration form — stack earlier */
@media (max-width: 768px) {
  .reg__fields {
    grid-template-columns: 1fr !important;
  }
}

/* ==========================================================================
   RESPONSIVE AUDIT FIXES (2026-03-23)
   ========================================================================== */

/* FIX 1: Container intermediate padding */
@media (max-width: 768px) {
  .container { padding: 0 1.25rem; }
}

/* FIX 2: Detail grid stacking earlier (541-640px too narrow for 160px label) */


/* FIX 3: Time inputs in office hours — responsive */
@media (max-width: 600px) {
  input[type="time"][style*="width:100px"] {
    width: 80px !important;
    font-size: .75rem !important;
    padding: .2rem .3rem !important;
  }
}
@media (max-width: 420px) {
  input[type="time"][style*="width:100px"] {
    width: 70px !important;
  }
}

/* FIX 4: Page header stacking at tablet */
@media (max-width: 700px) {
  .page-header { flex-direction: column; gap: .75rem; align-items: stretch; }
  .page-header__actions { justify-content: flex-start; flex-wrap: wrap; }
}

/* FIX 5: Admin filter constraints at tablet */
@media (max-width: 768px) {
  .adm-filter__search { min-width: 0 !important; width: 100%; }
  .adm-filter__select { min-width: 0 !important; width: 100%; }
}

/* FIX 6: Notification panel mobile width */
@media (max-width: 768px) {
  .navbar__notif-panel { width: 100% !important; max-width: 100%; }
}

/* FIX 7: Log item badge shrink on mobile */


/* FIX 8: Form row stacking earlier */
@media (max-width: 600px) {
  .form-row { grid-template-columns: 1fr !important; }
}

/* FIX 9: Dropdown menu mobile min-width */
@media (max-width: 480px) {
  .dropdown__menu { min-width: 120px !important; }
}

/* FIX 10: Office hours flex-wrap fallback */
.oh-table__times { flex-wrap: wrap; }

/* FIX 11: Admin cards — info strip wrap */
@media (max-width: 640px) {
  .adm-card > div[style*="width:100%"] { font-size: .68rem !important; }
}

/* Base definitions for file-row and sub-row */
.file-row,
.sub-row {
  display: flex;
  align-items: center;
  gap: .8rem;
  background: var(--color-surface);
  border: 1px solid transparent;
  border-radius: var(--radius);
  padding: .55rem .95rem;
  box-shadow: 0 1px 2px rgba(0,0,0,.04);
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s;
}
/* ── Shared hover pattern — sjednocuje .sub-row / .qr-row / .notif-row / .pin-row / .file-row ── */
/* Báze transition — aplikuje se na všechny klikací řádky */
.file-row, .sub-row, .qr-row, .notif-row, .pin-row {
  transition: box-shadow .15s, background .15s;
}
/* Sjednocený hover: surface-alt bg + subtle shadow (bez border — feedback přes bg a depth) */
.file-row:hover,
.sub-row:hover,
.qr-row:hover,
.notif-row:hover,
.pin-row:hover {
  box-shadow: var(--shadow-sm);
  background: var(--color-surface-alt) !important;
}

/* QR form row — base styly (dashboard recent-row look) */
.qr-row {
  display: flex;
  align-items: center;
  gap: .85rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: .7rem 1.1rem;
  cursor: pointer;
}
.qr-row:hover .qr-row__name { color: var(--color-accent); }

/* .pin-row — silnější shadow lift efekt (výraznější než ostatní řádky)
 * POZN.: NEPOUŽÍVAT `transform` — vytváří containing block pro position:fixed dropdowny → menu se posune mimo trigger. */
.pin-row:hover {
  box-shadow: var(--shadow-accent);
}
/* .notif-row — má inline border, musí přebít */
.notif-row { transition: box-shadow .15s, background .15s !important; }

.file-row__icon {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  background: var(--color-slate-100);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: var(--color-primary);
}

.file-row__main {
  flex: 1;
  min-width: 0;
}

.file-row__top {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
}

.file-row__patient {
  font-size: .92rem;
  font-weight: 600;
  color: var(--color-text);
}


.file-row__bottom {
  display: flex;
  gap: .5rem;
  align-items: center;
  margin-top: .2rem;
  font-size: .85rem;
  color: var(--color-text-muted);
}

.file-row__fname {
  font-family: var(--font-mono);
  font-size: .78rem;
  color: var(--color-text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 300px;
}

/* Sub-row state variants */
.sub-row--pending {
  border-left: 3px solid #f59e0b;
}
.sub-row--pending .sub-row__icon {
  background: var(--color-warning-light);
}
.sub-row--pending-del {
  background: var(--color-danger-light);
  border-color: #fecaca;
  opacity: .7;
}
.sub-row__icon {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  background: var(--color-slate-100);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: var(--color-primary);
}
.sub-row__name {
  font-size: .88rem;
  font-weight: 600;
  color: var(--color-text);
}
.sub-row__name--deleted {
  text-decoration: line-through;
}
.sub-row__meta {
  display: flex;
  align-items: center;
  gap: .3rem;
  flex-wrap: wrap;
  font-size: .85rem;
  color: var(--color-text-muted);
  margin-top: .1rem;
}
.sub-row__form-type {
  font-size: .8rem;
  color: var(--color-accent);
  font-weight: 500;
}
.sub-row__del-badge {
  display: inline-block;
  padding: .05rem .4rem;
  border-radius: 4px;
  font-size: .6rem;
  font-weight: 600;
  background: var(--color-danger-light);
  color: var(--color-danger);
}

/* FIX 12: File-row and sub-row mobile */
@media (max-width: 480px) {
  .file-row, .sub-row { padding: .4rem .65rem; gap: .5rem; }
  .file-row__fname { max-width: 150px; }
  .file-row__icon { width: 28px; height: 28px; }
  .file-row__icon svg { width: 16px; height: 16px; }
}

/* FIX 13: QR row mobile */
@media (max-width: 640px) {
  .qr-row { flex-wrap: wrap; gap: .5rem; }
  .qr-row__actions { width: 100%; justify-content: flex-start; }
  .qr-row__url { max-width: 100%; }
  .qr-row__name { font-size: .95rem; }
}

/* FIX 14: Modal padding consistency */
@media (max-width: 480px) {
  .modal-overlay { padding: .5rem; }
  .modal { max-width: calc(100vw - 1rem) !important; padding: 1.25rem 1rem 1rem !important; border-radius: 14px !important; }
}

/* FIX 15: Dashboard hero actions mobile */
@media (max-width: 480px) {
  .dash__hero-actions { flex-direction: row; flex-wrap: wrap; gap: .35rem; }
  .dash__hero-actions .btn { flex: 1; min-width: 0; text-align: center; font-size: .78rem; padding: .3rem .5rem; }
}

/* FIX 16: Colleague/doctor detail login history mobile */
@media (max-width: 600px) {
  div[style*="display:flex"][style*="white-space:nowrap"] { white-space: normal !important; flex-wrap: wrap; }
}

/* FIX 17: Patient form intermediate padding */
@media (max-width: 700px) {
  .pf__body { padding: 0 1rem !important; }
}

/* FIX 18: Stats grid consistent tablet view */
@media (max-width: 640px) {
  .stats-grid { grid-template-columns: 1fr 1fr !important; }
  
}
@media (max-width: 420px) {
  .stats-grid { grid-template-columns: 1fr !important; }
}

/* ── Galaxy Fold / Very small phones (360px and below) ────────── */
@media (max-width: 360px) {
  .container { padding: 0 .5rem; }
  .dash { padding: 0 .25rem; }
  .dash__hero { padding: .75rem; }
  .dash__hero-top { flex-direction: column; gap: .5rem; }
  .dash__hero-actions { width: 100%; }
  .dash__hero-actions .btn { width: 100%; justify-content: center; }
  .dash__section-head { flex-direction: column; align-items: flex-start; gap: .4rem; }

  .footer__inner { padding: 1.5rem .75rem; gap: 1rem; grid-template-columns: 1fr; }
  .footer__bottom { padding: .6rem .5rem; font-size: .72rem; }

  .modal-overlay { padding: .25rem; }
  .modal { max-width: calc(100vw - .5rem) !important; padding: 1rem !important; }
  .modal__title { font-size: 1.1rem; }

  .dropdown__menu { min-width: 110px; }

  
  .navbar__notif-panel { max-width: 100vw; }
  .navbar__notif-item { padding: .6rem .75rem; }

  .adm-filter__search { min-width: 0; }
  .adm-filter__select { min-width: 0; width: 100%; }

  .sf__row { flex-direction: column; gap: .4rem; }
  .sf__dates { width: 100%; }
  .sf__search-input { font-size: .9rem; }

  .sub-row, .notif-row { flex-direction: column; }
  
  .qr-row__actions { flex-wrap: wrap; gap: .3rem; }

  .table td, .table th { font-size: .75rem; padding: .4rem .5rem; }

  .pagination__list { gap: .15rem; }
  .pagination__link { padding: .3rem .5rem; font-size: .78rem; }

  .phone-wrap { max-width: none; }
}

/* ── Fix notification panel width on mobile ── */
@media (max-width: 768px) {
  .navbar__notif-panel { width: 100%; max-width: 100%; left: 0; right: 0; }
}

/* ── Colleague detail login history fix ── */
@media (max-width: 480px) {
  .login-history-date { width: auto !important; flex-shrink: 1 !important; font-size: .75rem; }
  .login-history-device { width: auto !important; flex-shrink: 1 !important; font-size: .75rem; }
}

/* ==========================================================================
   DASHBOARD REDESIGN — Modern Clean Layout
   Scoped to .page-dashboard — neovlivňuje ostatní stránky.
   ========================================================================== */

/* ── Hero: tmavý gradient s teal akcentem ── */
.page-dashboard .dash__hero {
  background:
    linear-gradient(90deg, rgba(0,0,0,.45) 0%, rgba(0,0,0,.2) 30%, transparent 60%),
    var(--hero-bg);
  color: #fff;
  border-radius: 12px;
  box-shadow: 0 4px 20px rgba(0,0,0,.15), 0 0 0 1px rgba(13,148,136,.15);
  margin-bottom: 1.25rem;
  position: relative;
  overflow: hidden;
  border: none;
}
/* Dekorativní teal záře vpravo — brand charakter */
.page-dashboard .dash__hero::before {
  content: '';
  position: absolute;
  top: -80px; right: -80px;
  width: 320px; height: 320px;
  background: radial-gradient(circle, rgba(13,148,136,.28) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}
/* Teal akcent dole — oddělení a brand */
.page-dashboard .dash__hero::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, var(--color-accent) 20%, #14b8a6 50%, var(--color-accent) 80%, transparent 100%);
}

/* ── Hero top: identita vlevo + horizontální pilulky vpravo ── */
.page-dashboard .dash__hero-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.1rem 1.5rem 1.1rem 1.5rem;
  gap: 1.5rem;
  position: relative;
  z-index: 2;
}
.page-dashboard .dash__hero-text {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.page-dashboard .dash__greeting {
  font-size: .82rem;
  color: #ffffff !important;
  margin: 0 0 .2rem;
  font-weight: 600;
  opacity: 1;
  letter-spacing: 0;
  text-transform: none;
  line-height: 1.2;
  text-shadow: 0 1px 3px rgba(0,0,0,.5);
}
.page-dashboard .dash__name {
  font-size: 1.6rem;
  font-weight: 800;
  color: #ffffff !important;
  letter-spacing: -.02em;
  line-height: 1.2;
  margin: 0;
  opacity: 1;
  text-shadow: 0 1px 3px rgba(0,0,0,.5);
}
.page-dashboard .dash__name-link { color: #ffffff !important; }
.page-dashboard .dash__name-link:hover { color: var(--color-accent-lighter) !important; }
.page-dashboard .dash__clinic {
  font-size: .92rem;
  color: #ffffff !important;
  margin: .25rem 0 0;
  line-height: 1.35;
  font-weight: 500;
  opacity: 1;
  text-shadow: 0 1px 3px rgba(0,0,0,.5);
}
.page-dashboard .dash__name-link {
  color: var(--color-primary);
  text-decoration: none;
  transition: color .15s;
}
.page-dashboard .dash__name-link:hover { color: var(--color-accent); }
.page-dashboard .dash__name-link svg { display: none; }
.page-dashboard .dash__clinic {
  font-size: .8rem;
  color: var(--color-text-muted);
  margin-top: .2rem;
}

/* ── Status pills: horizontální řádek, kompaktní ── */
.page-dashboard .dash__hero-status {
  flex-shrink: 0;
}
.page-dashboard .dash__hero-status-list {
  display: flex;
  flex-direction: row;
  gap: .5rem;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.page-dashboard .dash__hero-status-row {
  display: flex;
  align-items: center;
  padding: .45rem .75rem;
  gap: .55rem;
  border-radius: 8px;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.2);
  color: #fff;
  font-size: .82rem;
  font-weight: 500;
  transition: background .15s, border-color .15s;
  height: 38px;
  box-sizing: border-box;
  white-space: nowrap;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.page-dashboard .dash__hero-status-row:hover {
  background: rgba(94,234,212,.15);
  border-color: rgba(94,234,212,.4);
  color: #fff;
  text-decoration: none;
}
.page-dashboard .dash__hero-status-icon { display: none; }
.page-dashboard .dash__hero-status-label { display: none; }
.page-dashboard .dash__hero-status-text { display: contents; }
.page-dashboard .dash__hero-status-value {
  font-size: inherit;
  color: inherit;
  white-space: nowrap;
  display: contents;
}
.page-dashboard .dash__hero-status-dot {
  width: 7px; height: 7px; flex-shrink: 0;
  border-radius: 50%;
}
.page-dashboard .dash__hero-status-sub {
  color: var(--color-border);
  font-size: .8rem;
  font-weight: 400;
  user-select: none;
}
.page-dashboard .dash__hero-status-badge {
  background: linear-gradient(135deg, var(--color-danger-light), #fee2e2);
  color: var(--color-danger);
  border: none;
  font-size: .58rem;
  padding: .12rem .4rem;
  border-radius: 4px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
}
.page-dashboard .dash__hero-status-week {
  color: var(--color-text-muted);
  font-size: .68rem;
}

/* ── Notification strip: součást tmavého hero ── */
.page-dashboard .dash__hero-grid {
  padding: 1rem 1.5rem 1.25rem;
  background: transparent;
  border-top: 1px solid rgba(255,255,255,.1);
  position: relative;
  z-index: 1;
}
.page-dashboard .dash__hero-section-label {
  font-size: .72rem;
  margin-bottom: .8rem;
  color: var(--color-accent-lighter);
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  opacity: 1;
  display: flex;
  align-items: center;
  gap: .4rem;
}
.page-dashboard .dash__hero-section-label::after { background: rgba(255,255,255,.12); }
.page-dashboard .dash__hero-section-label svg { stroke: var(--color-accent-lighter); }
.page-dashboard .dash__hero-notifs-grid {
  display: grid;
  /* Doctor mode: 6 karet (1fr each) + Vše (auto-width); rozšířeno 2026-05-07 o „Ve frontě". */
  grid-template-columns: repeat(6, minmax(0, 1fr)) auto;
  gap: .55rem;
  width: 100%;
}
/* Reception mode má 5 karet (Fronta/Podpis/Dnes/Lékař/Týden) + Vše. */
.page-dashboard .dash__hero-notifs-grid--reception {
  grid-template-columns: repeat(5, minmax(0, 1fr)) auto;
}
.page-dashboard .dash__hero-notif {
  min-height: 0;
  padding: .2rem .6rem;
  gap: .5rem;
  border-radius: 6px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  color: rgba(255,255,255,.8);
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  transition: all .2s;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  overflow: hidden;
}
.page-dashboard .dash__hero-notif::before {
  width: 3px;
  border-radius: 3px;
  opacity: .5;
}
.page-dashboard .dash__hero-notif--active {
  border-color: color-mix(in srgb, var(--notif-color) 45%, transparent);
  background: color-mix(in srgb, var(--notif-color) 15%, rgba(255,255,255,.04));
  color: #fff;
}
.page-dashboard .dash__hero-notif--active::before { opacity: 1; }
.page-dashboard .dash__hero-notif:hover {
  border-color: color-mix(in srgb, var(--notif-color) 65%, rgba(255,255,255,.25));
  background: color-mix(in srgb, var(--notif-color) 20%, rgba(255,255,255,.08));
  transform: translateY(-1px);
}

/* Jednoslovný label — bez overflow trik */
.page-dashboard .dash__hero-notif-lbl {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  flex: 1;
  min-width: 0;
}
.page-dashboard .dash__hero-notif-top {
  display: contents;
}
.page-dashboard .dash__hero-notif-icon {
  width: 32px; height: 32px;
  border-radius: 7px;
  background: rgba(255,255,255,.1);
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.page-dashboard .dash__hero-notif-icon svg { width: 18px; height: 18px; }
.page-dashboard .dash__hero-notif--active .dash__hero-notif-icon {
  background: color-mix(in srgb, var(--notif-color) 20%, rgba(255,255,255,.1));
}
.page-dashboard .dash__hero-notif-val {
  font-size: .95rem;
  font-weight: 800;
  color: rgba(255,255,255,.5);
  line-height: 1;
  letter-spacing: -.02em;
  text-align: right;
  margin-left: auto;
  padding-left: .35rem;
  flex-shrink: 0;
}
.page-dashboard .dash__hero-notif--active .dash__hero-notif-val {
  color: #fff;
  text-shadow: 0 0 10px color-mix(in srgb, var(--notif-color) 50%, transparent);
}
.page-dashboard .dash__hero-notif-lbl {
  font-size: .84rem;
  color: rgba(255,255,255,.9);
  font-weight: 500;
  line-height: 1.1;
}
.page-dashboard .dash__hero-notif--active .dash__hero-notif-lbl {
  color: #fff;
}
/* Tlačítko "Vše" — kompaktní teal outline */
.page-dashboard .dash__hero-notifs-all {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .3rem;
  padding: 0 .7rem;
  width: 64px;
  align-self: stretch;
  border-radius: 6px;
  border: 1px solid rgba(94,234,212,.35);
  background: rgba(94,234,212,.08);
  color: var(--color-accent-lighter);
  font-size: .72rem;
  font-weight: 600;
  text-decoration: none;
  transition: all .2s;
  white-space: nowrap;
}
.page-dashboard .dash__hero-notifs-all:hover {
  background: rgba(94,234,212,.18);
  border-color: var(--color-accent-lighter);
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(94,234,212,.2);
  text-decoration: none;
}
.page-dashboard .dash__hero-notifs-all-txt {
  font-size: .72rem;
  line-height: 1;
  color: inherit;
  font-weight: 600;
  white-space: nowrap;
}
.page-dashboard .dash__hero-notifs-all svg {
  flex-shrink: 0;
  transition: transform .2s;
}
.page-dashboard .dash__hero-notifs-all:hover svg {
  transform: translateX(2px);
}
.page-dashboard .dash__hero-notifs-all-txt br { display: none; }

/* ── Body sections: karty se subtilní separací ── */
.page-dashboard .dash > .card,
.page-dashboard .dash > .dash__section,
.page-dashboard .dash > div[style] {
  margin-top: 1.25rem;
}
.page-dashboard .dash__section {
  background: var(--color-surface);
  border-radius: 14px;
  padding: 1.15rem 1.35rem;
  box-shadow: 0 1px 3px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.02);
}
.page-dashboard .dash__section-head {
  margin-bottom: .75rem;
  padding-bottom: .55rem;
  border-bottom: 1px solid rgba(0,0,0,.05);
  gap: .5rem;
}
.page-dashboard .dash__section-title {
  font-size: 1.2rem;
  font-weight: 700;
  margin: 0;
  letter-spacing: -.015em;
  color: var(--color-primary);
  display: flex;
  align-items: center;
  gap: .5rem;
}

/* ── Section headers s teal accent dot ── */
.page-dashboard .section-header {
  margin-top: 1.75rem !important;
  margin-bottom: .85rem;
  padding-bottom: .55rem;
  border-bottom: 1px solid rgba(0,0,0,.05);
}
.page-dashboard .section-header .section-title {
  font-size: .92rem;
}

/* ── Pinned forms: tighter ── */
.page-dashboard .qr-row {
  padding: .55rem .85rem;
}
.page-dashboard .qr-row__name {
  font-size: .88rem;
}
.page-dashboard .qr-stats-row {
  font-size: .72rem;
  gap: .25rem;
}
.page-dashboard .qr-stats-row span {
  opacity: .7;
}

/* ── Colleague cards: cleaner ── */
.page-dashboard .dash__colleague-card {
  border-radius: var(--radius);
  overflow: hidden;
}

/* ── Chart card ── */
.page-dashboard #dashChartCard {
  border: none;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.page-dashboard .chart-toolbar {
  gap: .35rem;
}
.page-dashboard .chart-toolbar__btn {
  font-size: .75rem;
  padding: .25rem .55rem;
}
.page-dashboard .chart-toolbar__select {
  font-size: .75rem;
  padding: .25rem .45rem;
}

/* ── Recent submissions: zebra + compact ── */
.page-dashboard .dash__recent-row {
  border-radius: var(--radius-sm);
  padding: .4rem .75rem;
}
.page-dashboard .dash__recent-row:nth-child(even) {
  background: var(--color-surface-alt);
}
.page-dashboard .sub-row {
  border-radius: var(--radius-sm);
}

/* ── Stat cards row ── */
.page-dashboard .stat-card__label {
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--color-text-muted);
}
.page-dashboard .stat-card__value {
  font-size: 1.35rem;
}

/* ── Error banner: tighter ── */
.page-dashboard .card.mb-6.mt-4 {
  border-radius: var(--radius);
}

/* ── Responsive ── */
@media (max-width: 1024px) {
  .page-dashboard .dash__hero-top {
    flex-direction: column;
    align-items: stretch;
    gap: 1rem;
  }
  .page-dashboard .dash__hero-status-list {
    min-width: 0;
  }
  .page-dashboard .dash__hero-notifs-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 640px) {
  .page-dashboard .dash__hero-top {
    padding: .65rem 1.25rem;
  }
  .page-dashboard .dash__hero-grid {
    padding: .45rem 1.25rem .55rem;
  }
  .page-dashboard .dash__hero-notif {
    flex-direction: column;
    align-items: flex-start;
  }
  .page-dashboard .dash__hero-notifs-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .page-dashboard .dash__section {
    padding: .75rem 1rem;
    border-radius: var(--radius);
  }
}

/* ==========================================================================
   PRINT
   ========================================================================== */
@media print {
  /* Skrýt interaktivní a navigační prvky */
  .navbar,
  .footer,
  .flash-container,
  .btn,
  .dropdown,
  .modal-overlay,
  .sf,
  .hamburger,
  #cookieBanner,
  #cookieModal { display: none !important; }

  /* Reset pozadí a stínů */
  body { background: #fff; color: #000; }
  .main-content { padding: 0; }
  .container { max-width: 100%; padding: 0 1rem; }

  /* Karty a řádky */
  .dash__hero,
  .prof__card,
  .dt-card,
  .file-row,
  .sub-row,
  .qr-row {
    break-inside: avoid;
    box-shadow: none;
    border: 1px solid #ccc;
  }

  /* Barvy na pozadí tisknout */
  .dash__hero,
  .dt-banner,
  .lang-badge {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* Odkazy — zobrazit URL */
  a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: .75em;
    color: #666;
    word-break: break-all;
  }
  a[href^="javascript"]::after,
  a[href^="#"]::after { content: none; }
}

/* ==========================================================================
   PERMISSIONS — legacy .perm-* blok odstraněn (0 PHP ref).
   Zachován jen .perm-extra__label — použit v admin/registrations.php.
   ========================================================================== */
.perm-extra__label { font-size: .72rem; color: var(--color-text-muted); white-space: nowrap; }

/* .dt-top__back přesunut do .dt-banner__actions jako .dt-btn.dt-btn--outline */

/* ==========================================================================
   TRASH ROWS
   ========================================================================== */
.trash-row { padding: .85rem 1.5rem; border-bottom: 1px solid var(--color-border); }


/* ==========================================================================
   ADM-CARD INFO STRIP
   ========================================================================== */
.adm-card__info-strip {
  width: 100%; border-top: 1px solid var(--color-border);
  margin: 0 -1rem; padding: .35rem 1rem 0;
  display: flex; gap: .5rem; flex-wrap: wrap; align-items: center;
  font-size: .7rem; color: var(--color-text-muted);
}

/* Statistics grids */
.st-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-bottom: 1.5rem; }
.st-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-bottom: 1.5rem; }
.st-grid-5 { display: grid; grid-template-columns: repeat(5, 1fr); gap: .75rem; margin-bottom: 1.5rem; }

/* Tab bar */
.tab-bar { display: flex; gap: .5rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
.tab-bar__select { margin-left: auto; width: auto; min-width: 70px; padding: .3rem .5rem; font-size: .8rem; }

/* Approve modal perm grid (checkbox variant) */
.approve-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border: 1px solid var(--color-border); border-radius: var(--radius); overflow: hidden; margin-bottom: 1.25rem; }
.approve-grid__item { display: flex; align-items: center; gap: .6rem; padding: .7rem 1rem; border-bottom: 1px solid var(--color-border); cursor: pointer; font-size: .84rem; }
.approve-grid__item:nth-child(odd) { border-right: 1px solid var(--color-border); }
.approve-grid__item input[type="checkbox"],
.approve-grid__item input[type="number"] { accent-color: var(--color-accent); }
.approve-grid__item input[type="checkbox"] { width: 16px; height: 16px; }
.approve-grid__item input[type="number"] { width: 50px; font-size: .82rem; padding: .2rem .35rem; text-align: center; border: 1.5px solid var(--color-border); border-radius: 6px; margin-left: auto; }

/* Notification row hover — definováno u base .notif-row v section "sub-row" */

/* ==========================================================================
   FILE ROW — extra sub-classes (birth, form label, doctor, separator)
   ========================================================================== */
.file-row__birth { font-size: .78rem; color: var(--color-text-muted); cursor: pointer; border-bottom: 1px dashed var(--color-text-muted); }
.file-row__form  { font-size: .85rem; color: var(--color-accent); font-weight: 500; }
.file-row__doctor { color: var(--color-text-muted); text-decoration: none; }
.file-row__doctor:hover { color: var(--color-accent); }
.file-row__sep   { color: var(--color-slate-300); }
.file-row__actions { flex-shrink: 0; }

/* ==========================================================================
   DOWNLOAD SPINNER (used by files.php 7zip overlay)
   ========================================================================== */
@keyframes dlSpin { to { transform: rotate(360deg); } }

/* ==========================================================================
   Header inline-style cleanup — extracted classes
   ========================================================================== */

/* Role switch wrapper next to logo */
.navbar__role-switch-wrap {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-left: 1.25rem;
  padding-left: 1.25rem;
  border-left: 1px solid rgba(255,255,255,.15);
}

/* Role switch countdown timer */
.navbar__role-countdown {
  font-size: .65rem;
  font-family: var(--font-mono);
  color: rgba(255,255,255,.7);
  font-weight: 700;
  white-space: nowrap;
}

/* Navbar indicator pills (daily limit, queue count) */
.navbar__indicator-li {
  display: flex;
  align-items: center;
  margin-right: .5rem;
}
.navbar__indicator-pill {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .25rem .6rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 600;
}

/* Notification panel "Všechny" button */
.navbar__notif-all-btn {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .3rem .7rem;
  font-size: .72rem;
  font-weight: 700;
  color: #fff;
  background: var(--color-accent);
  border-radius: 6px;
  text-decoration: none;
  white-space: nowrap;
  transition: opacity .15s;
}
.navbar__notif-all-btn:hover { opacity: .85; }

/* Notification tags row */
.navbar__notif-tags {
  display: flex;
  gap: .4rem;
  padding: .5rem .85rem;
  flex-wrap: wrap;
}

/* Individual notification tag */
.navbar__notif-tag {
  font-size: .68rem;
  font-weight: 700;
  padding: .15rem .5rem;
  border-radius: 5px;
}
.navbar__notif-tag--review   { background: var(--color-warning-light); color: var(--color-warning-text); }
.navbar__notif-tag--supplement { background: var(--color-warning-bg); color: var(--color-warning-text); }
.navbar__notif-tag--edited   { background: #eff6ff; color: var(--color-info-strong); }
.navbar__notif-tag--deletion { background: var(--color-danger-light); color: #991b1b; }

/* Inline notification type badge (inside dropdown items) */
.navbar__notif-type-badge {
  display: inline-block;
  padding: .1rem .4rem;
  border-radius: 4px;
  font-size: .6rem;
  font-weight: 700;
  white-space: nowrap;
}

/* Small count badge on nav items (doctors count, trash count, pending delete count) */
.navbar__item-count {
  position: absolute;
  top: 0;
  right: 0;
  min-width: 14px;
  height: 14px;
  border-radius: 7px;
  color: #fff;
  font-size: .55rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 3px;
}

/* Toggle modal (reg/ares/smb/demo) — shared layout */
.hdr-toggle-modal {
  max-width: 420px;
}
.hdr-toggle-modal__head {
  text-align: center;
  margin-bottom: 1rem;
}
.hdr-toggle-modal__icon {
  margin-bottom: .5rem;
}
.hdr-toggle-modal__desc {
  font-size: .85rem;
  color: var(--color-text-muted);
  text-align: center;
  margin-bottom: 1.25rem;
}
.hdr-toggle-modal__actions {
  display: flex;
  gap: .5rem;
  justify-content: center;
}

/* Login modal */
.hdr-login-modal {
  max-width: 480px;
  padding: 2.5rem;
}
.hdr-login-modal__head {
  text-align: center;
  margin-bottom: 1.25rem;
}
.hdr-login-modal__logo {
  margin-bottom: .5rem;
  color: var(--color-primary);
}
.hdr-login-modal__logo svg {
  display: block;
  margin: 0 auto;
}
.hdr-login-modal__forgot {
  text-align: center;
  margin-top: .75rem;
  font-size: .85rem;
}
.hdr-login-modal__register {
  text-align: center;
  margin-top: .5rem;
  font-size: .85rem;
  color: var(--color-text-muted);
}

/* Notification empty state icon */
.navbar__notif-empty svg {
  opacity: .3;
  margin-bottom: .5rem;
}

/* QR page: fav button */
.qr-row__fav {
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  flex-shrink: 0;
  transition: color .15s, transform .15s;
}
.qr-row__fav:hover {
  transform: scale(1.15);
}

/* QR page: stats row */
.qr-stats-row {
  display: flex;
  gap: .5rem;
  align-items: center;
  margin-top: .2rem;
  font-size: .7rem;
  color: var(--color-text-muted);
}
.qr-stats-row a {
  color: var(--color-text);
  font-weight: 700;
  text-decoration: none;
}

/* Action icons (form cards, QR, colleague detail) */
.fav-act,
.qr-act,
.col-fav-act {
  color: var(--color-text-muted);
  transition: color .2s, transform .35s cubic-bezier(.25,1.5,.5,1);
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  /* Pohodlný touch/stylus target i na tabletu (>768px), nejen na mobilu */
  min-width: 40px;
  min-height: 40px;
}
/* +10 % oproti původní inline 22 px velikosti ikon (≈ 24 px) */
.fav-act svg,
.qr-act svg,
.col-fav-act svg {
  width: 24px;
  height: 24px;
}
.fav-act:hover,
.qr-act:hover,
.col-fav-act:hover {
  color: var(--color-accent);
  text-decoration: none;
  transform: scale(1.3);
}

/* HL-only action icon — cog pro nastavení dokumentu, vizuálně odlišený červenou */
.qr-act--hl {
  color: #dc2626;
}
.qr-act--hl:hover {
  color: #b91c1c;
}

/* QR page: actions row in form cards */
.qr-row__actions {
  display: flex;
  gap: .6rem;
  flex-shrink: 0;
  align-items: center;
}

/* QR page: right stack — langs nad actions (vzor dashboard pin-row__right) */
.qr-row__right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: .5rem;
  flex-shrink: 0;
}
.qr-row__right .qr-row__langs {
  display: flex;
  gap: .3rem;
  align-items: center;
  justify-content: flex-end;
}

/* QR page: vertical separator */
.qr-row__sep {
  width: 1px;
  height: 20px;
  background: var(--color-border);
  margin: 0 .15rem;
}

/* QR page: form list container */
.qr-form-list {
  display: flex;
  flex-direction: column;
  gap: .4rem;
}

/* QR modal: header gradient */
.qr-modal__header {
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
  padding: 1.75rem 2.25rem;
}

/* QR modal: lang badge button */
.qr-modal__lang-badge {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .88rem;
  padding: .4rem 1rem;
  border-radius: 8px;
  font-weight: 700;
  background: rgba(255,255,255,.15);
  color: #fff;
  backdrop-filter: blur(4px);
  border: 1.5px solid rgba(255,255,255,.2);
  cursor: pointer;
  transition: background .15s;
}
.qr-modal__lang-badge:hover {
  background: rgba(255,255,255,.25);
}

/* QR modal: lang dropdown */
.qr-modal__lang-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.15);
  padding: .3rem 0;
  z-index: 10;
  min-width: 160px;
}

/* QR modal: title */
.qr-modal__title {
  font-size: 1.3rem;
  font-weight: 800;
  color: #fff;
  margin: 0 0 .2rem;
  text-shadow: 0 1px 2px rgba(0,0,0,.15);
}

/* QR modal: subtitle (doctor name) */
.qr-modal__subtitle {
  font-size: .85rem;
  color: rgba(255,255,255,.7);
  margin: 0;
}

/* QR modal: QR image area */
.qr-modal__qr-area {
  padding: 1.75rem 2rem 1.25rem;
  background: #fafbfc;
}
.qr-modal__qr-img {
  width: 260px;
  max-width: 100%;
  height: auto;
  border-radius: 14px;
  border: 1px solid var(--color-border);
  box-shadow: 0 4px 16px rgba(0,0,0,.07);
  display: block;
  margin: 0 auto;
}

/* QR modal: doctor select section */
.qr-modal__select-section {
  padding: .75rem 2rem 0;
}
.qr-modal__select-label {
  display: block;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--color-text-muted);
  margin-bottom: .35rem;
}
.qr-modal__select {
  width: 100%;
  padding: .5rem .75rem;
  font-size: .9rem;
  font-family: inherit;
  border: 1.5px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  color: var(--color-text);
  cursor: pointer;
  transition: border-color .15s;
}
.qr-modal__select:focus {
  border-color: var(--color-accent);
}

/* QR modal: actions grid */
.qr-modal__actions {
  padding: 1.25rem 2rem 1.75rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .5rem;
}
.qr-modal__action-btn {
  width: 100%;
  justify-content: center;
  display: inline-flex;
  padding: .55rem 1rem;
  font-size: .88rem;
}

/* QR modal: close button positioned top-right — sjednocený šedý kruh */
.qr-modal__close {
  position: absolute;
  top: .6rem;
  right: .6rem;
  z-index: 1;
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: 50%;
  background: #f1f5f9;
  color: #475569;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0;
  cursor: pointer;
  padding: 0;
  flex-shrink: 0;
  transition: background .15s, color .15s, transform .15s;
}
.qr-modal__close::before {
  content: "\2715";
  font-size: 1.15rem;
  font-weight: 400;
  line-height: 1;
  color: inherit;
}
.qr-modal__close:hover { background: #fee2e2; color: #b91c1c; transform: rotate(90deg); }

/* QR modal: main wrapper (no padding, overflow hidden) */
.qr-modal--detail {
  max-width: 560px;
  padding: 0;
  overflow: hidden;
  text-align: center;
}

/* QR modal: lang badge wrapper */
.qr-modal__lang-wrap {
  margin-bottom: .5rem;
  position: relative;
  display: inline-block;
}

/* Invite modal styles */


/* Fav remove modal */
.fav-modal__icon {
  text-align: center;
  margin-bottom: .75rem;
}
.fav-modal__desc {
  font-size: .85rem;
  color: var(--color-text-muted);
  text-align: center;
  margin-bottom: 1.25rem;
}

/* ── Admin page intro (icon + title + description) ── */
.admin-intro { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.25rem; }
.admin-intro__icon {
  width: 48px; height: 48px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem; flex-shrink: 0;
  background: #eff6ff; color: #2563eb;
}
.admin-intro__title { margin: 0; font-size: 1.1rem; font-weight: 700; color: var(--color-primary); }
.admin-intro__desc  { margin: .25rem 0 0; font-size: .82rem; color: var(--color-text-muted); }

/* ── Migrations ── */
.mig-stats { display: flex; gap: 2rem; margin-bottom: 1.25rem; flex-wrap: wrap; }
.mig-actions { display: flex; gap: .75rem; flex-wrap: wrap; }
.mig-th {
  padding: .75rem 1rem; font-size: .78rem;
  text-transform: uppercase; letter-spacing: .04em;
}
.mig-td { padding: .65rem 1rem; }
.mig-file { font-size: .85rem; font-family: var(--font-mono); color: var(--color-text); }
.mig-desc { font-size: .75rem; color: var(--color-text-muted); margin-top: .2rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 500px; }
.mig-badge {
  display: inline-block; padding: .15rem .6rem;
  border-radius: 999px; font-size: .72rem; font-weight: 600;
}
.mig-badge--ok   { background: #dcfce7; color: #166534; }
.mig-badge--wait { background: var(--color-warning-bg); color: var(--color-warning-text); }
.mig-modal-icon {
  width: 40px; height: 40px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; font-size: 1.2rem;
}
.mig-modal-icon--ok   { background: #f0fdf4; color: #16a34a; }
.mig-modal-icon--wait { background: var(--color-warning-light); color: var(--color-warning); }
.mig-code-label {
  font-size: .72rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; color: var(--color-text-muted); margin-bottom: .35rem;
}
.mig-code {
  background: #1e293b; color: #e2e8f0; border-radius: var(--radius);
  padding: .75rem 1rem; font-size: .78rem; line-height: 1.5;
  overflow-x: auto; margin: 0; max-height: 200px;
}
.mig-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; margin-bottom: 1rem; }
.mig-detail-box {
  background: var(--color-surface-alt); border-radius: var(--radius);
  padding: .85rem 1rem; margin-bottom: 1rem; font-size: .85rem;
  line-height: 1.6; color: var(--color-text);
}

/* ── Trash tab bar ── */
.trash-tabs { display: flex; gap: .35rem; margin-bottom: 1.25rem; flex-wrap: wrap; align-items: center; }
.trash-tabs__spacer { margin-left: auto; }

/* ── Trash type badges ── */
.badge--doctor     { background: #dbeafe; color: var(--color-info-strong); font-size: .7rem; }
.badge--submission { background: var(--color-success-light); color: #065f46; font-size: .7rem; }
.badge--invitation { background: #f5f3ff; color: #5b21b6; font-size: .7rem; }

/* ── Email template table ── */
.etpl-th {
  padding: .65rem 1rem; font-size: .75rem;
  text-transform: uppercase; letter-spacing: .04em;
}
.etpl-td { padding: .6rem 1rem; }
.etpl-name { font-size: .85rem; font-weight: 600; color: var(--color-text); }
.etpl-desc { font-size: .75rem; color: var(--color-text-muted); margin-top: .15rem; }
.etpl-edited-dot {
  display: inline-block; width: 8px; height: 8px;
  border-radius: 50%; background: var(--color-warning); margin-left: .4rem; vertical-align: middle;
}
.etpl-group-header {
  padding: 1rem 1.5rem; border-bottom: 1px solid var(--color-border);
  display: flex; align-items: center; gap: .5rem;
}
.etpl-group-icon { font-size: 1.2rem; }
.etpl-group-label { font-size: .88rem; font-weight: 700; color: var(--color-primary); }
.etpl-group-count { font-size: .75rem; color: var(--color-text-muted); margin-left: .25rem; }

/* ── Email preview modal ── */
.etpl-modal-header {
  padding: 1rem 1.5rem; border-bottom: 1px solid var(--color-border);
  display: flex; align-items: center; justify-content: space-between; flex-shrink: 0;
}
.etpl-modal-body { flex: 1; min-height: 0; overflow: hidden; }

/* ── Chart toolbar ── */
.chart-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: .4rem; margin-bottom: .75rem;
}
.chart-toolbar__group { display: flex; align-items: center; gap: .3rem; }
.chart-toolbar__select {
  padding: .35rem .55rem; border: 1px solid var(--color-border);
  border-radius: var(--radius); font-size: .78rem;
  background: var(--color-surface); color: var(--color-text);
}
.chart-toolbar__btn { padding: .35rem .7rem; font-size: .78rem; }
.chart-toolbar__sep {
  width: 1px; height: 18px; background: var(--color-border); margin: 0 .15rem;
}

/* ── Extra utilities ── */
.d-inline-flex { display: inline-flex; }

.font-mono { font-family: var(--font-mono); }
.cursor-pointer { cursor: pointer; }
.border-left-danger { border-left: 3px solid var(--color-danger); }
.border-left-warning { border-left: 3px solid var(--color-warning); }
.word-break-all { word-break: break-all; }

/* ── Submissions export row ── */
.sf__export-row { display: flex; gap: .3rem; align-items: center; }

/* ── Admin stat sub-text ── */
.stat-sub { font-size: .75rem; color: var(--color-text-muted); margin-top: .2rem; }

/* ── Empty state card ── */
.empty-card { padding: 2.5rem; text-align: center; }
.empty-card__text { font-size: .9rem; color: var(--color-text-muted); }
.empty-card__sub  { font-size: .82rem; color: var(--color-text-muted); margin-top: .5rem; }

/* ── Rollback button ── */
.btn--outline-danger { color: var(--color-danger); border-color: var(--color-danger); }
.btn--outline-danger:hover { background: var(--color-danger-light); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ==========================================================================
   RESPONSIVE FIXES — Galaxy Fold, iPhone SE, ultra-narrow devices
   ========================================================================== */
@media (max-width: 360px) {
  .reg__submit .btn { min-width: auto; width: 100%; }
  .modal__close-btn { min-width: auto; width: 100%; }
  
  .navbar__notif-panel { width: 100% !important; max-width: 100%; }
  .dt-banner { padding: 1rem 1.25rem; }
  .dt-banner__name { font-size: 1.1rem; }
  .dt-banner__avatar { width: 42px; height: 42px; font-size: 1.15rem; border-radius: 10px; }
}
.navbar__notif-panel { overflow-y: auto; }
@media (max-width: 480px) {
  .page-header__actions details .dropdown__menu { min-width: 100% !important; left: 0; right: 0; }
  .adm-action-btn { padding: .4rem .75rem; font-size: .78rem; }
}
.etpl-modal-body { overflow-y: auto !important; }
.table-responsive { -webkit-overflow-scrolling: touch; }

/* ── Collapsible cards on klient-detail (P5) ─────────────────────────── */
[data-collapse-key] .card__title { user-select: none; }
.kd-collapse-toggle {
  background: transparent;
  border: 0;
  padding: .25rem;
  margin-left: auto;
  cursor: pointer;
  color: var(--color-text-muted);
  display: inline-flex;
  align-items: center;
  transition: transform .2s ease, color .15s;
  border-radius: 4px;
  flex-shrink: 0;
}
.kd-collapse-toggle:hover { color: var(--color-primary); background: rgba(0,0,0,.04); }
[data-collapse-key].is-collapsed .kd-collapse-toggle { transform: rotate(-90deg); }
[data-collapse-key].is-collapsed .card__title { margin-bottom: 0 !important; padding-bottom: 0 !important; }
[data-collapse-key] .kd-collapse-body[hidden] { display: none !important; }

/* ── Mini chart preview on klient-detail (P7) ─────────────────────────── */
.kd-mini-chart { max-width: 100%; margin: 0 auto; min-width: 0; }
/* pointer-events: none ODSTRANĚNO — kříž v klient-detail je interaktivní (Fáze B widget) */

/* ================================================================
   Kolegové — plnohodnotné karty členů týmu (v3)
   ================================================================ */

/* Přehledový statistický pás — 4 vycentrované buňky */
.col-stats {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  margin-bottom: 2rem;
  background: #fff;
  border: 1px solid #eef2f7;
  border-radius: 12px;
  overflow: hidden;
}
.col-stats__item {
  padding: 1.15rem 1rem;
  text-align: center;
  border-right: 1px solid #eef2f7;
}
.col-stats__item:last-child { border-right: 0; }
.col-stats__val {
  display: block;
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--color-primary);
  line-height: 1.05;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
}
.col-stats__lbl {
  display: block;
  margin-top: .3rem;
  font-size: .76rem;
  color: var(--color-text-muted);
  font-weight: 500;
}
.col-stats__bar {
  display: block;
  margin: .55rem auto 0;
  width: 70%;
  max-width: 120px;
  height: 4px;
  background: #f1f5f9;
  border-radius: 999px;
  overflow: hidden;
}
.col-stats__bar-fill {
  height: 100%;
  border-radius: 999px;
  transition: width .3s ease;
}

/* Skupiny podle rolí — každá skupina = vizuální karta (mirror .dash__section, .client-card) */
.col-groups { display: flex; flex-direction: column; gap: 1rem; }
.col-group {
  background: var(--color-surface);
  border-radius: 14px;
  padding: 1.15rem 1.35rem;
  box-shadow: 0 1px 3px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.02);
}
.col-group--placeholder {
  background: rgba(248, 250, 252, .85);
  box-shadow: 0 1px 2px rgba(0,0,0,.02);
}
/* Col-row uvnitř karty col-group — odstraní vlastní shadow (parent už má), zůstane jemný border */
.col-group .col-row {
  box-shadow: none;
  border-color: #f1f5f9;
}
.col-group .col-row:hover {
  border-color: #d8dfea;
  box-shadow: 0 2px 8px rgba(15,23,42,.04);
}
/* Header skupiny už nemusí mít border-bottom — col-group má padding + bg, oddělení je vizuální samo */
.col-group__head {
  border-bottom: 0;
  padding-bottom: .35rem;
  margin-bottom: .75rem;
}
.col-group__head {
  display: flex;
  align-items: center;
  gap: .65rem;
  padding: 0 .15rem .25rem;
  margin-bottom: 1rem;
  border-bottom: 1px solid #eef2f7;
  padding-bottom: .55rem;
}
.col-group__title {
  margin: 0;
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--color-primary);
  letter-spacing: -.015em;
}
.col-group__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 .55rem;
  background: rgba(13, 148, 136, .12);
  color: var(--color-accent);
  border-radius: 999px;
  font-size: .76rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}

/* (+) tlačítko v hlavičce skupiny — pravý okraj, link na add-colleague s předvyplněnou pozicí */
.col-group__add {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 10px;
  background: rgba(13, 148, 136, .12);
  color: var(--color-accent);
  text-decoration: none;
  transition: background .15s, color .15s, transform .12s, box-shadow .15s;
  flex-shrink: 0;
  align-self: center;
}
.col-group__add:hover {
  background: var(--color-accent);
  color: #fff;
  text-decoration: none;
  transform: scale(1.08);
  box-shadow: 0 2px 8px rgba(13, 148, 136, .25);
}
.col-group__add:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}
.col-group__list {
  display: flex;
  flex-direction: column;
  gap: .6rem;
}

/* Karta člena týmu */
.col-row {
  display: block;
  padding: .75rem 1rem;
  background: #fff;
  border: 1px solid #eef2f7;
  border-radius: 10px;
  color: var(--color-text);
  cursor: pointer;
  transition: border-color .15s, box-shadow .2s, transform .15s;
  position: relative;
}
.col-row:hover {
  border-color: #d8dfea;
  box-shadow: 0 6px 18px rgba(15,23,42,.06);
  /* POZN.: NEPOUŽÍVAT `transform` — vytváří containing block pro position:fixed dropdowny → menu se posune mimo trigger. */
}

/* ── Filter card: sjednocený container pro search/chips/alphabet ── */
.filter-card {
  background: var(--color-surface);
  border-radius: 14px;
  padding: 1rem 1.15rem;
  box-shadow: 0 1px 3px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.02);
  margin: .85rem 0 1.1rem;
  display: flex;
  flex-direction: column;
  gap: .85rem;
}
/* Uvnitř filter-card resetujeme okraje a vnitřní rámečky vlastních bloků */
.filter-card .kol-filter-row { margin: 0; }
.filter-card .sf { margin: 0; }
.filter-card .kl-alpha--inset {
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  border-top: 1px solid var(--color-border);
  padding-top: .65rem;
}

/* ── Filter row: search vlevo, chips vpravo ── */
.kol-filter-row {
  display: flex;
  align-items: center;
  gap: .85rem;
  margin: .85rem 0 .25rem;
}
.kol-filter-row .kol-search-bar {
  flex: 0 0 50%;
  width: 50%;
  max-width: 100%;
  margin: 0;
}
.kol-filter-row .kol-filter-chips {
  flex: 1 1 auto;
  margin: 0;
  justify-content: flex-end;
}
@media (max-width: 900px) {
  .kol-filter-row { flex-direction: column; align-items: stretch; gap: .55rem; }
  .kol-filter-row .kol-search-bar { width: 100%; }
  .kol-filter-row .kol-filter-chips { justify-content: flex-start; }
}

/* ── Filter dropdowns (status + role) — kolegove.php ── */
.kol-filter-selects {
  display: flex;
  gap: .55rem;
  align-items: center;
  flex-wrap: wrap;
  margin-left: auto;
}
.kol-filter-select {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  background: var(--color-surface);
  border: 1.5px solid var(--color-border);
  border-radius: 8px;
  padding: .15rem .15rem .15rem .65rem;
  transition: border-color .12s, box-shadow .12s;
}
.kol-filter-select:hover { border-color: #94a3b8; }
.kol-filter-select:focus-within {
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(13,148,136,.1);
}
.kol-filter-select__lbl {
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--color-text-muted);
  user-select: none;
}
.kol-filter-select__input {
  border: 0;
  padding: .4rem .65rem .4rem .35rem;
  font-size: .85rem;
  font-family: inherit;
  font-weight: 600;
  color: var(--color-text);
  background: transparent;
  cursor: pointer;
  outline: none;
}
.kol-filter-select__input:focus { outline: none; }
@media (max-width: 600px) {
  .kol-filter-selects { width: 100%; gap: .4rem; }
  .kol-filter-select { flex: 1 1 auto; }
}

/* ── Filter chips (legacy — zachováno pro případné budoucí použití) ── */


.kol-chip.is-active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
  box-shadow: 0 2px 6px rgba(13,148,136,.2);
}


/* ── Search bar nad abecedou (kolegove.php) ── */
.kol-search-bar {
  position: relative;
  margin: .85rem 0 .55rem;
}
.kol-search-bar__icon {
  position: absolute;
  left: .85rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-text-muted);
  pointer-events: none;
}
.kol-search-bar__input {
  width: 100%;
  padding: .65rem 2.5rem .65rem 2.5rem;
  font-size: .92rem;
  font-family: inherit;
  border: 1.5px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
  color: var(--color-text);
  transition: border-color .15s, box-shadow .15s;
  box-sizing: border-box;
}
.kol-search-bar__input:focus {
  outline: none;
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(13,148,136,.1);
}
.kol-search-bar__clear {
  position: absolute;
  right: .55rem;
  top: 50%;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  border: 0;
  background: var(--color-slate-100, #f1f5f9);
  color: var(--color-text-muted);
  font-size: 1.05rem;
  line-height: 1;
  border-radius: 999px;
  cursor: pointer;
  transition: background .12s, color .12s;
}
.kol-search-bar__clear:hover {
  background: #fee2e2;
  color: #dc2626;
}

/* ── Abecední filtr (sdílený mezi klienti.php a kolegove.php) ── */
.kl-alpha {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem;
  width: 100%;
  margin: .85rem 0 1.1rem;
  padding: .55rem .65rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
}
.kl-alpha__btn {
  flex: 1 1 auto;
  min-width: 36px;
  text-align: center;
  padding: .5rem .35rem;
  font-size: .92rem;
  font-weight: 700;
  font-family: ui-sans-serif, system-ui, sans-serif;
  color: var(--color-text-muted);
  text-decoration: none;
  border-radius: 6px;
  transition: background .12s, color .12s, opacity .12s, transform .1s;
  letter-spacing: .02em;
  cursor: pointer;
  background: transparent;
  border: 0;
}
.kl-alpha__btn:hover:not([disabled]):not(.is-empty) {
  background: rgba(13, 148, 136, .12);
  color: var(--color-accent);
  text-decoration: none;
}
.kl-alpha__btn.is-active {
  background: var(--color-accent);
  color: #fff;
  font-weight: 800;
  box-shadow: 0 3px 10px rgba(13, 148, 136, .35);
  transform: scale(1.05);
}
.kl-alpha__btn[disabled],
.kl-alpha__btn.is-empty {
  opacity: .35;
  cursor: not-allowed;
  pointer-events: none;
}
.kl-alpha__btn--all {
  flex: 0 0 auto;
  padding-left: .75rem;
  padding-right: .75rem;
  font-size: .78rem;
}
@media (max-width: 600px) {
  .kl-alpha { padding: .45rem .5rem; gap: .2rem; }
  .kl-alpha__btn { font-size: .78rem; padding: .35rem .2rem; min-width: 26px; }
  .kl-alpha__btn--all { font-size: .72rem; padding-left: .5rem; padding-right: .5rem; }
}
@media (max-width: 480px) {
  /* Horizontal scroll místo wrapování — familiar mobile pattern, lepší tap targets */
  .kl-alpha {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scroll-snap-type: x proximity;
  }
  .kl-alpha::-webkit-scrollbar { height: 4px; }
  .kl-alpha::-webkit-scrollbar-track { background: transparent; }
  .kl-alpha::-webkit-scrollbar-thumb { background: rgba(13,148,136,.3); border-radius: 2px; }
  .kl-alpha__btn {
    flex: 0 0 auto;
    scroll-snap-align: center;
    min-width: 32px;
    font-size: .85rem;
    padding: .45rem .35rem;
  }
  .kl-alpha__btn--all { position: sticky; left: 0; background: var(--color-surface); box-shadow: 4px 0 8px -4px rgba(0,0,0,.1); }
}
.col-row--inactive { opacity: .7; background: #fafbfc; }
.col-row__name { text-decoration: none; color: var(--color-primary); }
.col-row__name:hover { color: var(--color-accent); text-decoration: none; }

.col-row__top {
  display: grid;
  grid-template-columns: 44px minmax(0,1fr) auto;
  column-gap: 1rem;
  align-items: center;
}

/* Avatar — soft barevný kruh (8 variant deterministicky podle jména) */
.col-row__avatar-wrap {
  position: relative;
  flex-shrink: 0;
  width: 44px;
  height: 44px;
}
.col-row__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: .9rem;             /* zmenšeno pro 2-znakové iniciály (JV, OR, MN) */
  flex-shrink: 0;
  letter-spacing: -.02em;        /* kerning pro 2 znaky */
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.03);
}
/* Online dot v pravém-dolním rohu avataru (status indicator) */
.col-row__online-dot {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-shadow: 0 0 0 1px rgba(0,0,0,.04);
}
.col-row__online-dot--online {
  background: #22c55e;
  animation: colOnlinePulse 2.5s ease-in-out infinite;
}
.col-row__online-dot--recent { background: #94a3b8; }
@keyframes colOnlinePulse {
  0%, 100% { box-shadow: 0 0 0 1px rgba(0,0,0,.04), 0 0 0 0 rgba(34,197,94,.4); }
  50%      { box-shadow: 0 0 0 1px rgba(0,0,0,.04), 0 0 0 5px rgba(34,197,94,0); }
}
/* NEW chip — nový kolega < 7 dní */
.col-row__tag--new {
  background: #dbeafe;
  color: #1e40af;
  animation: colNewBlink 3s ease-in-out infinite;
}
@keyframes colNewBlink {
  0%, 100% { background: #dbeafe; }
  50%      { background: #bfdbfe; }
}
.col-row__avatar--0 { background: #ccfbf1; color: #0f766e; }
.col-row__avatar--1 { background: #dbeafe; color: #1d4ed8; }
.col-row__avatar--2 { background: #ede9fe; color: #6d28d9; }
.col-row__avatar--3 { background: #fce7f3; color: #be185d; }
.col-row__avatar--4 { background: #fef3c7; color: #b45309; }
.col-row__avatar--5 { background: #ffedd5; color: #c2410c; }
.col-row__avatar--6 { background: #dcfce7; color: #166534; }
.col-row__avatar--7 { background: #e0e7ff; color: #4338ca; }
.col-row__avatar--inactive { background: #f1f5f9; color: #94a3b8; box-shadow: none; }

.col-row__main { min-width: 0; }
.col-row__line1 { display: flex; align-items: center; gap: .5rem; min-width: 0; flex-wrap: wrap; }
.col-row__name {
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-primary);
  letter-spacing: -.01em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  max-width: 100%;
}
.col-row__line2 {
  display: flex;
  align-items: center;
  gap: .4rem;
  margin-top: .2rem;
  font-size: .82rem;
  color: var(--color-text-muted);
  min-width: 0;
}
.col-row__line2 span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.col-row__sep { color: #cbd5e1; flex-shrink: 0; }

.col-row__tag {
  display: inline-flex;
  padding: .15rem .55rem;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .02em;
  border-radius: 999px;
  white-space: nowrap;
  flex-shrink: 0;
}
.col-row__tag--hl    { background: rgba(13,148,136,.1); color: #0f766e; }
.col-row__tag--team  { background: #eef2ff; color: #4338ca; }
.col-row__tag--off   { background: #fee2e2; color: #b91c1c; }

/* Spodní stats řádek — 4 metriky oddělené jemným borderem */
.col-row__stats {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  margin-top: .65rem;
  padding-top: .55rem;
  border-top: 1px solid #f1f5f9;
}
.col-row__stat {
  display: flex;
  flex-direction: column;
  gap: .1rem;
  text-align: left;
  padding: 0 .7rem;
  border-right: 1px solid #f1f5f9;
}
.col-row__stat:first-child { padding-left: 0; }
.col-row__stat:last-child { border-right: 0; padding-right: 0; }
.col-row__stat-val {
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-text);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
  letter-spacing: -.02em;
}
.col-row__stat-lbl {
  font-size: .68rem;
  color: var(--color-text-muted);
  letter-spacing: .01em;
  font-weight: 500;
  line-height: 1.25;
}
.col-row__stat-icon {
  display: inline-flex;
  align-items: center;
  color: var(--color-accent);
  margin-bottom: .12rem;
  opacity: .8;
}
.col-row__stat-icon svg { width: 13px; height: 13px; }
.col-row__stat-val--zero {
  color: #cbd5e1 !important;
  font-weight: 600;
}
.col-row__stat--alert .col-row__stat-icon { color: #d97706; opacity: 1; }
.col-row__stat--alert .col-row__stat-val { color: #d97706; }
.col-row__stat--alert .col-row__stat-lbl { color: #b45309; font-weight: 600; }

/* Akce (menu / link) */
.col-row__actions { flex-shrink: 0; display: flex; align-items: center; }
.col-row__menu {
  background: transparent;
  border: 0;
  color: #94a3b8;
  padding: .45rem;
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, color .15s;
}
.col-row__menu:hover { background: #f1f5f9; color: var(--color-primary); }
/* ── Placeholder pro chybějící doporučenou roli (inline v col-group__list) ── */
.col-group__count--empty {
  background: #f1f5f9;
  color: #94a3b8;
}
.col-row-placeholder {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem 1.35rem;
  background: repeating-linear-gradient(135deg, #fafbfc, #fafbfc 8px, #f1f5f9 8px, #f1f5f9 16px);
  border: 1.5px dashed #cbd5e1;
  border-radius: 12px;
  text-decoration: none;
  color: var(--color-text);
  transition: border-color .15s, background .15s, box-shadow .15s;
  cursor: pointer;
}
.col-row-placeholder:hover {
  border-color: var(--color-accent);
  background: rgba(13, 148, 136, .04);
  box-shadow: 0 4px 14px rgba(13, 148, 136, .08);
  text-decoration: none;
  color: var(--color-text);
}
.col-row-placeholder__icon {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: #fff;
  color: var(--color-accent);
  border: 1px solid var(--color-border);
}
.col-row-placeholder__icon svg { width: 22px; height: 22px; }
.col-row-placeholder__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: .15rem;
}
.col-row-placeholder__title {
  font-weight: 700;
  font-size: .95rem;
  color: var(--color-primary);
  letter-spacing: -.01em;
}
.col-row-placeholder__desc {
  font-size: .78rem;
  color: var(--color-text-muted);
}
.col-row-placeholder__cta {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .5rem 1rem;
  background: var(--color-accent);
  color: #fff;
  border-radius: 8px;
  font-weight: 700;
  font-size: .82rem;
  letter-spacing: .02em;
  transition: background .15s;
}
.col-row-placeholder:hover .col-row-placeholder__cta {
  background: var(--color-accent-hover, #0f766e);
}

.col-row__menu-alert {
  position: absolute;
  top: -2px;
  right: -2px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  background: #d97706;
  color: #fff;
  border-radius: 999px;
  font-size: .62rem;
  font-weight: 800;
  font-family: ui-sans-serif, system-ui, sans-serif;
  line-height: 16px;
  text-align: center;
  box-shadow: 0 0 0 2px #fff, 0 1px 3px rgba(217,119,6,.4);
  animation: colMenuAlertPulse 2.5s ease-in-out infinite;
}
@keyframes colMenuAlertPulse {
  0%, 100% { box-shadow: 0 0 0 2px #fff, 0 1px 3px rgba(217,119,6,.4); }
  50%      { box-shadow: 0 0 0 2px #fff, 0 0 0 4px rgba(217,119,6,.18), 0 1px 3px rgba(217,119,6,.4); }
}


/* Group hint — malý popisek za count v col-group */


/* Doporučené role — souvislá sekce v stylu col-groups */

.col-group--suggest .col-group__head { margin-bottom: 1.25rem; }


/* Responsive */
@media (max-width: 1024px) {
  /* 5 karet je těsno na ~tablet — fallback na 3 sloupce, 2. řádek = poslední karta */
  .col-row__stats { grid-template-columns: repeat(3, 1fr); row-gap: .85rem; }
  .col-row__stat { padding: 0 .85rem; }
  .col-row__stat:nth-child(3n) { border-right: 0; padding-right: 0; }
  .col-row__stat:nth-child(3n+1) { padding-left: 0; }
  .col-row__stat:nth-child(n+4) { border-top: 1px dashed #f1f5f9; padding-top: .8rem; }
}
@media (max-width: 720px) {
  .col-row__stat-val { font-size: 1.1rem; }
  .col-row__stat-lbl { font-size: .72rem; }
}
/* Filter chips mobile — kompaktnější padding */

@media (max-width: 1100px) {
  /* 5 stats karet je těsně na úzké desktopy / tablety — wrap na 3-2 */
  .col-stats { grid-template-columns: repeat(3, 1fr); }
  .col-stats__item:nth-child(3n) { border-right: 0; }
  .col-stats__item:nth-child(n+4) { border-top: 1px solid #eef2f7; }
  .col-stats__item:nth-child(3n+1) { border-right: 1px solid #eef2f7 !important; }
}
@media (max-width: 720px) {
  .col-stats { grid-template-columns: repeat(2, 1fr); }
  .col-stats__item:nth-child(2) { border-right: 0; }
  .col-stats__item:nth-child(odd) { border-right: 1px solid #eef2f7; }
  .col-stats__item:nth-child(n+3) { border-top: 1px solid #eef2f7; }
  .col-stats__item:nth-child(3n) { border-right: 1px solid #eef2f7 !important; }
  .col-stats__val { font-size: 1.4rem; }
  .col-row { padding: 1rem 1.1rem; }
  .col-row__avatar { width: 40px; height: 40px; font-size: .85rem; }
  .col-row__stats { margin-top: .85rem; padding-top: .7rem; }
  .col-row__stat { padding: 0 .65rem; }
  .col-row__stat-val { font-size: .92rem; }
}
@media (max-width: 520px) {
  .col-row__stats { grid-template-columns: repeat(2, 1fr); row-gap: .7rem; }
  .col-row__stat { border-right: 0; padding: 0 .5rem; }
  .col-row__stat:nth-child(odd) { border-right: 1px solid #f1f5f9; }
  .col-row__stat:nth-child(odd) { padding-left: 0; }
  .col-row__stat:nth-child(even) { padding-right: 0; }
  .col-row__stat:nth-child(n+3) { border-top: 1px dashed #f1f5f9; padding-top: .55rem; }
  .col-row__stat-lbl { font-size: .64rem; }
  .col-row__tag--team { display: none; }
}

/* (legacy) col-overview/col-card — zachovat aliasy pro ostatní stránky (colleague-detail používá col-overview) */
.col-overview {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 0;
  margin-bottom: 1.5rem;
  background: #fff;
  border: 1px solid #eef2f7;
  border-radius: 10px;
  overflow: hidden;
}
.col-overview__chip {
  padding: 1rem 1.25rem;
  border-right: 1px solid #eef2f7;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 72px;
}
.col-overview__chip:last-child { border-right: 0; }
.col-overview__chip-val {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--color-primary);
  line-height: 1.1;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
}
.col-overview__chip-lbl {
  font-size: .74rem;
  color: var(--color-text-muted);
  margin-top: .2rem;
  line-height: 1.3;
}

/* Sekce (role group) */


/* Karta kolegy */


/* Statistický řádek karty */


/* Doporučené / prázdné placeholder karty */


/* Mobile */
@media (max-width: 640px) {
  
  
  
  
  
  .col-overview__chip-val { font-size: 1.4rem; }
  
}

/* ================================================================
   Colleague-detail — doplňkové styly pro accordion (profil pattern)
   ================================================================ */

/* Meta badge uvnitř summary (count/label na rigu titulku) */
.prof__card-meta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.4rem;
  height: 1.4rem;
  padding: 0 .5rem;
  background: var(--color-accent);
  color: #fff;
  font-size: .7rem;
  font-weight: 700;
  border-radius: 999px;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

/* Oprávnění — (legacy) grid checkboxů, zachováno pro ostatní stránky */


/* ── Nová oprávnění: sekce s barevným akcentem + toggle switche ── */
.perms-stack {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.perms-section {
  background: #fff;
  border: 1px solid #eef2f7;
  border-radius: 10px;
  overflow: hidden;
  position: relative;
}
.perms-section::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--perm-accent, var(--color-accent));
}
.perms-section__head {
  display: flex;
  align-items: center;
  gap: .65rem;
  padding: .7rem 1rem .7rem 1.15rem;
  background: linear-gradient(90deg, color-mix(in srgb, var(--perm-accent) 8%, transparent) 0%, transparent 60%);
  border-bottom: 1px solid #f1f5f9;
}
.perms-section__icon {
  flex-shrink: 0;
  width: 28px; height: 28px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  box-shadow: 0 2px 5px color-mix(in srgb, var(--perm-accent) 35%, transparent);
}
.perms-section__icon svg { width: 15px; height: 15px; }
.perms-section__title-wrap {
  display: flex;
  align-items: baseline;
  gap: .6rem;
  flex-wrap: wrap;
  min-width: 0;
  flex: 1;
}
.perms-section__title {
  margin: 0;
  font-size: .88rem;
  font-weight: 700;
  color: var(--color-text);
  letter-spacing: -.005em;
}
.perms-section__count {
  font-size: .7rem;
  color: var(--color-text-muted);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.perms-section__body {
  display: flex;
  flex-direction: column;
}

.perm-row {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: .7rem 1rem .7rem 1.15rem;
  border-top: 1px solid #f6f7f9;
  cursor: pointer;
  transition: background .12s;
}
.perm-row:first-child { border-top: 0; }
.perm-row:hover { background: #fafbfc; }
.perm-row--on { background: color-mix(in srgb, var(--perm-accent) 4%, transparent); }
.perm-row--on:hover { background: color-mix(in srgb, var(--perm-accent) 7%, transparent); }

.perm-row__text {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: .15rem;
}
.perm-row__label {
  font-size: .88rem;
  font-weight: 600;
  color: var(--color-text);
  letter-spacing: -.005em;
}
.perm-row__desc {
  font-size: .74rem;
  color: var(--color-text-muted);
  line-height: 1.4;
}

/* Toggle switch (CSS-only) */
.perm-switch {
  position: relative;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  width: 38px;
  height: 22px;
}
.perm-switch input { position: absolute; opacity: 0; width: 100%; height: 100%; cursor: pointer; margin: 0; }
.perm-switch__track {
  display: block;
  width: 38px;
  height: 22px;
  border-radius: 999px;
  background: #e2e8f0;
  position: relative;
  transition: background .18s;
}
.perm-switch__thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 18px;
  height: 18px;
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 1px 3px rgba(15,23,42,.2);
  transition: transform .2s cubic-bezier(.4,0,.2,1);
}
.perm-switch input:checked + .perm-switch__track {
  background: var(--perm-accent, var(--color-accent));
}
.perm-switch input:checked + .perm-switch__track .perm-switch__thumb {
  transform: translateX(16px);
}
.perm-switch input:focus-visible + .perm-switch__track {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--perm-accent) 25%, transparent);
}

@media (max-width: 520px) {
  .perm-row { gap: .75rem; padding-right: .75rem; }
  .perm-row__desc { display: none; }
}

/* ── Position notice — obyčejný text pod selectem pozice ── */
.pos-notice {
  font-size: .82rem;
  line-height: 1.55;
  color: var(--color-text-muted);
}
.pos-notice p { margin: 0 0 .35rem; }
.pos-notice p:last-child { margin-bottom: 0; }
.pos-notice strong { color: var(--color-text); font-weight: 600; }

/* ── Ordinační hodiny — dvousloupcový layout pro odd_even mode ── */
.oh-split {
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  align-items: start;
}
.oh-split__col {
  min-width: 0;
}
.oh-split__head {
  font-size: .82rem;
  font-weight: 700;
  color: var(--color-primary);
  padding: .5rem .75rem;
  border: 1px solid transparent;
  border-bottom: none;
  border-radius: 6px 6px 0 0;
  text-align: center;
}
.oh-split__head--odd  { background: #eff6ff; border-color: #bfdbfe; }
.oh-split__head--even { background: #fef3c7; border-color: #fde68a; }

@media (max-width: 900px) {
  .oh-split { grid-template-columns: 1fr; }
  .oh-split__col + .oh-split__col { margin-top: .5rem; }
}

/* Form actions row (tlačítka Uložit v accordion body) */
.prof__form-actions {
  display: flex;
  justify-content: flex-end;
  gap: .5rem;
  margin-top: .75rem;
  padding-top: .75rem;
  border-top: 1px solid var(--color-border);
}

/* Kategorie — chip toggles */
.col-cat-chips {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  padding: .75rem;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: #fafbfc;
  min-height: 48px;
  margin-bottom: 0;
}
.col-cat-chip {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .35rem .75rem;
  background: #fff;
  color: #475569;
  border: 1px solid #cbd5e1;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 600;
  cursor: pointer;
  transition: all .12s;
  user-select: none;
}
.col-cat-chip input { display: none; }
.col-cat-chip:hover { border-color: var(--color-accent); color: var(--color-accent); }
.col-cat-chip--active {
  background: var(--color-accent);
  color: #fff;
  border-color: var(--color-accent);
}
.col-cat-chip--active:hover { background: #0f766e; color: #fff; }
.col-cat-chip__code {
  font-family: var(--font-mono);
  font-size: .7rem;
  opacity: .9;
}

/* Login history — table-like řádky */
.col-login-list {
  display: flex;
  flex-direction: column;
  gap: .25rem;
}
.col-login-row {
  display: grid;
  grid-template-columns: 140px 110px 1fr;
  gap: .75rem;
  padding: .5rem .75rem;
  border-radius: 6px;
  font-size: .82rem;
  color: var(--color-text-muted);
  transition: background .12s;
  align-items: center;
}
.col-login-row:hover { background: #f8fafc; }
.col-login-row--first {
  font-weight: 600;
  color: var(--color-text);
  background: #f0fdfa;
}
.col-login-row--first:hover { background: #ccfbf1; }
.col-login-date { font-variant-numeric: tabular-nums; }
.col-login-device { font-weight: 600; }
.col-login-ip {
  font-family: var(--font-mono);
  font-size: .72rem;
  color: #94a3b8;
}

@media (max-width: 640px) {
  .col-login-row { grid-template-columns: 1fr; gap: .15rem; padding: .55rem .65rem; }
  
}

/* Boční panely u mini křížů — sjednocený grid 20% / 60% / 20% pro všechny 3 (zubní/paro/DH).
   minmax(0, ...) na všech sloupcích — bez něj by min-content vnitřku vytlačil pravý panel mimo blok. */
.kd-chart-layout,
.dc-board > .dc-chart-layout.kd-chart-layout {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(0, 4fr) minmax(0, 1fr) !important;
  gap: .6rem !important;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: clip !important;
  overflow-y: visible !important;
}
/* Extra vertikální prostor na full-chart stránce — vybrané zuby vystupují 26 px nad/pod čelist */
.dc-board > .dc-chart-layout.kd-chart-layout {
  margin-top: .75rem;
  margin-bottom: .75rem;
}
.dc-board > .dc-chart-layout.kd-chart-layout .kd-mini-chart .dc-jaw { padding: 1.35rem 0; }
.dc-board > .dc-chart-layout.kd-chart-layout .kd-mini-chart .dc-chart { padding: 1.35rem .75rem; }
.kd-chart-layout > * { min-width: 0 !important; max-width: 100%; }
/* !important — dental-chart.css je loaded AFTER main.css a má min-width: 220px na .dc-chart-layout__side */
.kd-chart-layout .dc-chart-layout__side { min-width: 0 !important; gap: 1rem; min-height: 0; }
.kd-chart-layout .dc-quadrant-panel {
  padding: .45rem .5rem; font-size: .7rem; max-width: 100%;
  /* Kontainment — karta nikdy nepřesáhne výšku přidělené pozice (kvadrantu) */
  display: flex; flex-direction: column;
  min-height: 0;
  max-height: 100%;
  overflow: hidden;
}
/* Vnitřní list / obsah — flex-grow + clip; když je více záznamů, fade-out hint na spodu */
.kd-chart-layout .dc-quadrant-panel > .dc-quadrant-panel__list,
.kd-chart-layout .dc-quadrant-panel > ul {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 18px), transparent);
          mask-image: linear-gradient(to bottom, #000 calc(100% - 18px), transparent);
}
/* Když je obsah krátký a nedotyká se okraje, fade nepůsobí rušivě (linear-gradient nezpůsobí ořez) */

/* Footer link/CTA — vždy zůstane viditelný na spodu karty */
.kd-chart-layout .dc-quadrant-panel__footer-link,
.kd-chart-layout .dc-quadrant-panel__cta,
.kd-chart-layout .dc-quadrant-panel .kd-panel-overflow-link {
  flex-shrink: 0;
  margin-top: auto;
}
.kd-chart-layout .dc-quadrant-panel__row { padding: .2rem .3rem; font-size: .68rem; column-gap: .35rem; }
.kd-chart-layout .dc-quadrant-panel__num { font-size: .7rem; min-height: 18px; }
.kd-chart-layout .dc-quadrant-panel__anat { font-size: .62rem; }
.kd-chart-layout .dc-quadrant-panel__title { font-size: .78rem; white-space: nowrap; }
.kd-chart-layout .dc-quadrant-panel__sublabel { display: none; }

/* Mini kříž = středový sloupec, žádný horizontální scroll (chart se zmenší tak, aby se vešel) */
.kd-chart-layout .kd-mini-chart {
  max-width: 100%;
  margin: 0;
  min-width: 0;
  overflow-x: clip;
  overflow-y: visible;
}

/* Dental kříž — sjednocená šířka s DH (~980 px) */
.kd-chart-layout .kd-mini-chart .dc-chart { padding: 1rem .75rem; }
.kd-chart-layout .kd-mini-chart .dc-tooth { width: 48px; height: 100px; }
.kd-chart-layout .kd-mini-chart .dc-half { gap: 21px; }
.kd-chart-layout .kd-mini-chart .dc-midline { margin: 0 .5rem; min-height: 80px; }
.kd-chart-layout .kd-mini-chart .dc-tooth-num { font-size: .7rem; }
.kd-chart-layout .kd-mini-chart .dc-jaw { padding: 1rem 0; }
/* Okluzální strip — sjednocení šířky/gapu s side-view zuby (alignment do sloupců) */
.kd-chart-layout .kd-mini-chart .dc-occlusal { width: 48px; height: 42px; border-radius: 9px; }
.kd-chart-layout .kd-mini-chart .dc-occlusal-half { gap: 21px; }
.kd-chart-layout .kd-mini-chart .dc-occlusal-mid { margin: 0 .5rem; }

/* Multi-select bulk agenda — kompaktní varianta v klient-detail */
.kd-mini-chart .dc-agenda { margin: 0 0 .5rem; }
.kd-mini-chart .dc-agenda:not(.is-active) { display: none; }

/* Inline agenda nahrazující "Přehled zubů se záznamem" když je výběr aktivní */
.kd-agenda-inline { display: none; }
.kd-agenda-inline.is-active { display: block; }
.kd-agenda-inline.is-active ~ .kd-tooth-list { display: none !important; }
.kd-agenda-inline .dc-agenda-title { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-muted); font-weight: 700; margin: 0 0 .55rem; }

/* Obohacený řádek "Vybrané zuby" */
.kd-agenda-inline .dc-agenda-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .45rem; }
.kd-agenda-inline .kd-agenda-row { display: flex; align-items: stretch; gap: .5rem; padding: .55rem .65rem; background: #fff; border: 1px solid var(--color-border); border-radius: 7px; transition: box-shadow .12s; }
.kd-agenda-inline .kd-agenda-row:hover { box-shadow: 0 1px 6px rgba(15,23,42,.08); }
.kd-agenda-row__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .3rem; }
.kd-agenda-row__head { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.kd-agenda-row__badge { display: inline-flex; align-items: center; justify-content: center; min-width: 30px; height: 26px; padding: 0 .35rem; font-family: var(--font-mono); font-weight: 700; font-size: .82rem; background: #fff; border: 1px solid var(--color-slate-300); border-radius: 5px; flex-shrink: 0; }
.kd-agenda-row__badge sup { font-size: .55rem; margin-left: 2px; opacity: .7; }
.kd-agenda-row__anat { font-size: .72rem; color: var(--color-text-muted); white-space: nowrap; }
.kd-agenda-row__status { font-size: .82rem; font-weight: 600; }
.kd-agenda-upd { font-size: .68rem; color: #475569; white-space: nowrap; align-self: center; flex-shrink: 0; margin-right: .65rem; }
.kd-agenda-row__chips { display: flex; flex-wrap: wrap; gap: .25rem; }
.kd-chip { display: inline-flex; align-items: center; padding: .12rem .45rem; font-size: .68rem; font-weight: 600; border-radius: 999px; background: var(--color-slate-100); color: #475569; }
.kd-chip--mat { background: #eff6ff; color: var(--color-info-strong); }
.kd-chip--warn { background: var(--color-warning-bg); color: var(--color-warning-text); }
.kd-chip--danger { background: #fee2e2; color: #991b1b; }
.kd-chip--endo { background: #ede9fe; color: #5b21b6; }
.kd-agenda-surf { display: flex; flex-wrap: wrap; gap: .25rem; font-size: .68rem; color: #475569; }
.kd-agenda-surf span { background: #f8fafc; border: 1px solid #e2e8f0; padding: .1rem .35rem; border-radius: 4px; font-family: var(--font-mono); }
.kd-agenda-row__actions { display: flex; flex-direction: column; gap: .3rem; align-self: center; flex-shrink: 0; }

/* Sjednocená velikost: Zrušit výběr, Upravit, Zobrazit detaily výběru */
.kd-agenda-inline .dc-agenda-head { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin-bottom: .55rem; }
.kd-agenda-inline .dc-agenda-title { margin: 0 auto 0 0 !important; }
.kd-agenda-inline .dc-agenda-bulk { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; padding-right: .65rem; padding-left: .65rem; }
.kd-agenda-inline .dc-agenda-clear,
.kd-agenda-inline .dc-agenda-edit-link,
.kd-agenda-inline .dc-agenda-detail-link {
  display: inline-flex; align-items: center; justify-content: center;
  padding: .32rem .7rem;
  font-size: .72rem; font-weight: 600;
  border-radius: 5px; cursor: pointer; text-decoration: none; white-space: nowrap;
  min-height: 28px; line-height: 1;
}
.kd-agenda-inline .dc-agenda-edit-link { min-width: 110px; }
.kd-agenda-inline .dc-agenda-edit-link { background: var(--color-accent-soft, #ccfbf1); color: var(--color-accent, #0d9488); border: 1px solid color-mix(in srgb, var(--color-accent, #0d9488) 30%, transparent); }
.kd-agenda-inline .dc-agenda-edit-link:hover { background: var(--color-accent, #0d9488); color: #fff; }
/* Detail + Zrušit výběr — stejný shape, barvy ponechány individuální */
.kd-agenda-inline .dc-agenda-detail-link,
.kd-agenda-inline .dc-agenda-clear { padding: .32rem .7rem; font-size: .72rem; font-weight: 600; min-height: 28px; line-height: 1; border-radius: 5px; }
.kd-agenda-inline .dc-agenda-detail-link { background: #fff; color: #475569; border: 1px solid var(--color-slate-300); }
.kd-agenda-inline .dc-agenda-detail-link:hover { background: var(--color-slate-100); color: #1f2937; border-color: #94a3b8; }
.kd-agenda-inline .dc-agenda-clear { background: #fee2e2; color: #b91c1c; border: 1px solid #fca5a5; min-width: 110px; }
.kd-agenda-inline .dc-agenda-clear:hover { background: #b91c1c; color: #fff; border-color: #b91c1c; }

/* ── Laptop / úzký monitor (1181-1700px) — 3-col grid drží, ale zuby zmenšit aby se vešly do 4fr cell ── */
@media (max-width: 1700px) and (min-width: 1181px) {
  .kd-chart-layout { gap: .4rem !important; }
  /* Zubní kříž — 48→42 px width (5% větší než předchozí 40), 100→90 px height */
  .kd-chart-layout .kd-mini-chart .dc-tooth { width: 42px !important; height: 90px !important; }
  .kd-chart-layout .kd-mini-chart .dc-half { gap: 13px !important; }
  .kd-chart-layout .kd-mini-chart .dc-midline { margin: 0 .35rem !important; }
  .kd-chart-layout .kd-mini-chart .dc-tooth-num { font-size: .66rem; }
  .kd-chart-layout .kd-mini-chart .dc-chart { padding: .8rem .45rem; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal { width: 42px !important; height: 36px !important; border-radius: 8px !important; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal-half { gap: 13px !important; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal-mid { margin: 0 .35rem !important; }
  /* Side panely — kompaktnější font + padding od 1700px */
  .kd-chart-layout .dc-quadrant-panel { padding: .35rem .4rem; font-size: .66rem; }
  .kd-chart-layout .dc-quadrant-panel__title { font-size: .72rem; }
  .kd-chart-layout .dc-quadrant-panel__row { font-size: .64rem; padding: .15rem .25rem; }
  /* Paro mini kříž — 48→42 px tile (+5%) */
  .kd-mini-chart--paro .kd-mini-tile { width: 42px !important; height: 42px !important; font-size: 1.05rem !important; }
  .kd-mini-chart--paro [style*="gap:20px"] { gap: 10px !important; }
  /* DH mini kříž — agresivnější, kvůli mezizubním kartáčkům (15× navíc šířka) */
  .kd-mini-chart--dh .kd-mini-tile { width: 36px !important; height: 36px !important; font-size: .92rem !important; }
  .kd-mini-chart--dh .kd-mini-brush { width: 14px !important; height: 14px !important; margin-bottom: 8px !important; }
  .kd-mini-chart--dh .kd-mini-brush__iso { font-size: .58rem !important; }
}

/* ── Středně úzký laptop (1181-1500px) — další stupeň zmenšení ── */
@media (max-width: 1500px) and (min-width: 1181px) {
  .kd-chart-layout .kd-mini-chart .dc-tooth { width: 38px !important; height: 84px !important; }
  .kd-chart-layout .kd-mini-chart .dc-half { gap: 10px !important; }
  .kd-chart-layout .kd-mini-chart .dc-midline { margin: 0 .3rem !important; }
  .kd-chart-layout .kd-mini-chart .dc-tooth-num { font-size: .62rem; }
  .kd-chart-layout .kd-mini-chart .dc-chart { padding: .7rem .4rem; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal { width: 38px !important; height: 32px !important; border-radius: 7px !important; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal-half { gap: 10px !important; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal-mid { margin: 0 .3rem !important; }
  .kd-chart-layout .dc-quadrant-panel { padding: .3rem .35rem; font-size: .62rem; }
  .kd-chart-layout .dc-quadrant-panel__title { font-size: .68rem; }
  .kd-mini-chart--paro .kd-mini-tile { width: 38px !important; height: 38px !important; font-size: .96rem !important; }
  .kd-mini-chart--paro [style*="gap:20px"] { gap: 7px !important; }
  .kd-mini-chart--dh .kd-mini-tile { width: 32px !important; height: 32px !important; font-size: .82rem !important; }
  .kd-mini-chart--dh .kd-mini-brush { width: 12px !important; height: 12px !important; margin-bottom: 6px !important; }
  .kd-mini-chart--dh .kd-mini-brush__iso { font-size: .54rem !important; }
}

/* ── Úzký laptop 13" (1181-1320px) — minimální velikost při zachování čitelnosti ── */
@media (max-width: 1320px) and (min-width: 1181px) {
  .kd-chart-layout .kd-mini-chart .dc-tooth { width: 34px !important; height: 76px !important; }
  .kd-chart-layout .kd-mini-chart .dc-half { gap: 8px !important; }
  .kd-chart-layout .kd-mini-chart .dc-midline { margin: 0 .25rem !important; }
  .kd-chart-layout .kd-mini-chart .dc-tooth-num { font-size: .58rem; }
  .kd-chart-layout .kd-mini-chart .dc-chart { padding: .6rem .35rem; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal { width: 34px !important; height: 28px !important; border-radius: 6px !important; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal-half { gap: 8px !important; }
  .kd-chart-layout .kd-mini-chart .dc-occlusal-mid { margin: 0 .25rem !important; }
  .kd-chart-layout .dc-quadrant-panel { padding: .25rem .3rem; font-size: .6rem; }
  .kd-chart-layout .dc-quadrant-panel__title { font-size: .64rem; }
  .kd-chart-layout .dc-quadrant-panel__row { font-size: .58rem; padding: .12rem .2rem; }
  .kd-mini-chart--paro .kd-mini-tile { width: 34px !important; height: 34px !important; font-size: .86rem !important; }
  .kd-mini-chart--paro [style*="gap:20px"] { gap: 5px !important; }
  .kd-mini-chart--dh .kd-mini-tile { width: 28px !important; height: 28px !important; font-size: .72rem !important; }
  .kd-mini-chart--dh .kd-mini-brush { width: 10px !important; height: 10px !important; margin-bottom: 5px !important; }
  .kd-mini-chart--dh .kd-mini-brush__iso { font-size: .5rem !important; }
}

@media (max-width: 1180px) {
  .kd-chart-layout { grid-template-columns: 1fr !important; }
  .kd-chart-layout .dc-chart-layout__side { flex-direction: row; flex-wrap: wrap; gap: .75rem; }
  .kd-chart-layout .dc-chart-layout__side--left { order: 2; }
  .kd-chart-layout .dc-chart-layout__side--right { order: 3; }
  .kd-chart-layout .kd-mini-chart { order: 1; max-width: 100%; margin: 0 auto; }
  .kd-chart-layout .kd-mini-chart .dc-tooth { width: 44px; height: 92px; }
  .kd-chart-layout .kd-mini-chart .dc-half { gap: 12px; }
  .kd-chart-layout .dc-quadrant-panel { flex: 1 1 220px; }
}

/* ============================================================
 * Certifikáty (profil.php — accordion karta)
 * Spec: docs/superpowers/specs/2026-04-25-certifikaty-design.md §7.4
 * ============================================================ */

.cert-list {
  display: flex;
  flex-direction: column;
  gap: .55rem;
  margin-bottom: 1rem;
}

.cert-row {
  display: grid;
  grid-template-columns: minmax(140px, max-content) 1fr minmax(140px, max-content) auto;
  gap: .85rem;
  align-items: center;
  padding: .7rem .9rem;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  transition: box-shadow .15s, border-color .15s;
}
.cert-row:hover {
  box-shadow: 0 2px 8px rgba(15, 23, 42, .06);
  border-color: #cbd5e1;
}

.cert-row__type-badge {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .25rem .55rem;
  font-size: .72rem;
  font-weight: 700;
  border-radius: 6px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.cert-row__type-badge svg { width: 12px; height: 12px; flex-shrink: 0; }

.cert-row__main { min-width: 0; }
.cert-row__name {
  font-size: .92rem;
  font-weight: 600;
  color: var(--color-text);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cert-row__meta {
  font-size: .72rem;
  color: var(--color-text-muted);
  margin-top: .15rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.cert-row__expiry {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .25rem .65rem;
  font-size: .72rem;
  font-weight: 700;
  border-radius: 999px;
  white-space: nowrap;
}
.cert-row__expiry--ok       { background: #dcfce7; color: #15803d; }
.cert-row__expiry--warn     { background: #fef3c7; color: #92400e; }
.cert-row__expiry--expired  { background: #fee2e2; color: #b91c1c; }
.cert-row__expiry--missing  { background: #f1f5f9; color: #475569; }

.cert-row__actions {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
}
.cert-act {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: #fff;
  color: var(--color-text-muted);
  border: 1px solid var(--color-border);
  border-radius: 50%;
  cursor: pointer;
  transition: transform .12s cubic-bezier(.25,1.5,.5,1), color .12s, border-color .12s, background .12s;
  padding: 0;
}
.cert-act:hover {
  background: #f8fafc;
  color: var(--color-accent);
  border-color: var(--color-accent);
  transform: scale(1.3);
}
.cert-act--danger:hover {
  color: #dc2626;
  border-color: #fecaca;
  background: #fef2f2;
}
.cert-act svg { width: 14px; height: 14px; }

.cert-empty {
  text-align: center;
  padding: 1.5rem;
  color: var(--color-text-muted);
  font-size: .88rem;
  background: #fafbfc;
  border: 1px dashed var(--color-border);
  border-radius: 10px;
  margin-bottom: 1rem;
}

/* Add cert modal — chips */
.cert-type-chips {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: .4rem;
  margin: .5rem 0 1rem;
}
.cert-type-chip__group-title {
  grid-column: 1 / -1;
  font-size: .7rem;
  font-weight: 700;
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-top: .5rem;
}
.cert-type-chip {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .7rem;
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  cursor: pointer;
  transition: all .12s;
  font-size: .82rem;
  font-weight: 500;
}
.cert-type-chip:hover { border-color: var(--color-accent); background: #f8fafc; }
.cert-type-chip input[type="radio"] { display: none; }
.cert-type-chip.is-selected {
  border-color: var(--color-accent);
  background: rgba(13, 148, 136, .08);
  color: var(--color-accent);
}

.cert-modal__password-display {
  display: block;
  padding: 1rem;
  background: #f1f5f9;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  font-family: var(--font-mono);
  font-size: 1.05rem;
  font-weight: 700;
  word-break: break-all;
  text-align: center;
  margin: .8rem 0;
  color: var(--color-text);
}


.cert-notify-chips { display: flex; flex-wrap: wrap; gap: .35rem; }
.cert-notify-chip {
  display: inline-flex; align-items: center;
  padding: .3rem .65rem;
  font-size: .78rem; font-weight: 600;
  background: #fff; border: 1px solid var(--color-border); border-radius: 999px;
  cursor: pointer; transition: all .12s;
  user-select: none;
}
.cert-notify-chip input { display: none; }
.cert-notify-chip.is-selected { background: rgba(13,148,136,.1); border-color: var(--color-accent); color: var(--color-accent); }

.cert-preview {
  display: none;
  padding: .7rem;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 8px;
  margin-bottom: 1rem;
  font-size: .85rem;
  line-height: 1.5;
}
.cert-preview--error {
  background: #fee2e2;
  border-color: #fecaca;
  color: #b91c1c;
}
.cert-preview--loading {
  background: #fef3c7;
  border-color: #fde68a;
  color: #92400e;
}

/* ============================================================
 * Multi-pobočky — table + modal (profil.php)
 * Spec: docs/superpowers/specs/2026-04-25-multi-pobocky-design.md §4
 * ============================================================ */

.loc-table {
  width: 100%;
  border-collapse: collapse;
  margin: .5rem 0 1rem;
  font-size: .88rem;
}
.loc-table thead th {
  text-align: left;
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--color-text-muted);
  padding: .5rem .75rem;
  border-bottom: 1.5px solid var(--color-border);
  background: #fafbfc;
}
.loc-table tbody td {
  padding: .85rem .75rem;
  border-bottom: 1px solid #f1f5f9;
  vertical-align: top;
}
.loc-table tbody tr:hover td {
  background: #fafbfc;
}
.loc-row--primary {
  background: linear-gradient(90deg, rgba(217, 119, 6, .04), transparent 12%);
}
.loc-row--primary td:first-child {
  border-left: 3px solid #d97706;
}

.loc-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  padding: .15rem .5rem;
  background: #f1f5f9;
  color: #475569;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 700;
}

.loc-recmode {
  display: inline-flex;
  padding: .2rem .55rem;
  font-size: .68rem;
  font-weight: 700;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.loc-recmode--shared { background: #ecfeff; color: #155e75; border: 1px solid #a5f3fc; }
.loc-recmode--split  { background: #fef3c7; color: #92400e; border: 1px solid #fde68a; }

/* ── Pobočky — kartový layout, každá pobočka v samostatném řádku (full-width) ── */
.loc-cards { display: flex; flex-direction: column; gap: .75rem; margin-top: .25rem; }
.loc-cards__divider {
  margin: .85rem 0 .1rem;
  font-size: .78rem;
  font-weight: 700;
  color: #475569;
  text-transform: uppercase;
  letter-spacing: .06em;
  display: flex;
  align-items: center;
  gap: .55rem;
}
.loc-cards__divider::before,
.loc-cards__divider::after {
  content: '';
  flex: 1 1 auto;
  height: 1px;
  background: #e2e8f0;
}

.loc-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  /* overflow: visible — tooltipy info ikon nesmí být ořezané kartou */
  transition: box-shadow .15s, border-color .15s;
}
.loc-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,.05); }
.loc-card--primary { border-color: #fde68a; box-shadow: inset 4px 0 0 #f59e0b; }

.loc-card__head {
  display: flex; align-items: center; gap: .5rem;
  padding: .65rem .85rem;
  background: #f8fafc;
  border-bottom: 1px solid #e5e7eb;
  border-radius: 10px 10px 0 0;
}
.loc-card--primary .loc-card__head { background: linear-gradient(90deg, #fffbeb 0%, #f8fafc 30%); }

/* Kind chip — typ pobočky (ordinace vs administrativa) */
.loc-card__kind {
  display: inline-block;
  font-size: .68rem; font-weight: 600;
  padding: .12rem .5rem;
  border-radius: 999px;
  white-space: nowrap;
}
.loc-card__kind--ordinace       { background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; }
.loc-card__kind--administrativa { background: #fef3c7; color: #92400e; border: 1px solid #fde68a; }
.loc-card__title { display: flex; align-items: center; gap: .45rem; flex: 1 1 auto; min-width: 0; flex-wrap: wrap; }
.loc-card__star { color: #d97706; font-size: 1.05rem; flex-shrink: 0; line-height: 1; }
.loc-card__name { margin: 0; font-size: .95rem; font-weight: 700; color: #0f172a; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.loc-card__chip { display: inline-block; font-size: .68rem; font-weight: 600; padding: .12rem .5rem; background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; border-radius: 999px; white-space: nowrap; }

.loc-card__head-actions { display: flex; align-items: center; gap: .35rem; flex-shrink: 0; }

/* Smazat místnost — souhrnové pill chipy v modalu */
.locroom-del-pill {
  display: inline-flex; align-items: center; gap: .35rem;
  font-size: .8rem; color: #475569;
  padding: .3rem .65rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
}
.locroom-del-pill__icon { line-height: 1; }
.locroom-del-pill strong { color: #0f172a; font-weight: 700; }

/* Info ikona vlevo od „Upravit" — hover tooltip (bublina) */
.loc-card__info {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #eff6ff;
  color: #1e40af;
  cursor: help;
  flex-shrink: 0;
  transition: background .12s, color .12s;
}
.loc-card__info:hover,
.loc-card__info:focus { background: #dbeafe; color: #1e3a8a; outline: none; }
.loc-card__info::after {
  content: attr(data-tooltip);
  position: absolute;
  right: calc(100% + 8px);
  top: 50%;
  transform: translateY(-50%);
  background: #0f172a;
  color: #fff;
  font-size: .72rem;
  font-weight: 500;
  line-height: 1.4;
  padding: .55rem .75rem;
  border-radius: 6px;
  width: max-content;
  max-width: 280px;
  white-space: normal;
  text-align: left;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s;
  z-index: 1000;
  box-shadow: 0 4px 14px rgba(0,0,0,.18);
}
.loc-card__info::before {
  content: '';
  position: absolute;
  right: calc(100% + 2px);
  top: 50%;
  transform: translateY(-50%);
  border: 6px solid transparent;
  border-left-color: #0f172a;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s;
  z-index: 1000;
}
.loc-card__info:hover::after,
.loc-card__info:focus::after,
.loc-card__info:hover::before,
.loc-card__info:focus::before { opacity: 1; }
.loc-card__del {
  background: transparent; color: #dc2626; border: 1px solid #fecaca; border-radius: 6px;
  width: 26px; height: 26px; padding: 0; display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; font-size: 1rem; line-height: 1; transition: background .12s, color .12s;
}
.loc-card__del:hover { background: #fef2f2; }

.loc-card__body { padding: .65rem .85rem .55rem; display: flex; flex-direction: column; gap: .55rem; }

.loc-card__addr { display: flex; align-items: flex-start; gap: .45rem; font-size: .82rem; color: #1a2035; line-height: 1.4; }
.loc-card__addr-icon { flex-shrink: 0; opacity: .5; line-height: 1.4; }
.loc-card__addr-text { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.loc-card__addr-line1 { font-weight: 600; }
.loc-card__addr-line2 { font-size: .75rem; color: #64748b; }

.loc-card__contact { display: flex; flex-wrap: wrap; gap: .65rem; font-size: .74rem; color: #475569; }

.loc-card__metrics {
  display: flex; flex-wrap: wrap; gap: .45rem;
  padding-top: .35rem; border-top: 1px dashed #e2e8f0;
}
.loc-card__metric {
  display: inline-flex; align-items: center; gap: .3rem;
  font-size: .74rem; color: #475569;
  padding: .15rem .5rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  white-space: nowrap;
}
.loc-card__metric-icon { line-height: 1; }
.loc-card__metric-val { font-weight: 700; color: #0f172a; }
.loc-card__metric-lbl { color: #64748b; }

.loc-card__rooms-wrap { border-top: 1px solid #f1f5f9; }
.loc-card__rooms-toggle {
  display: flex; align-items: center; justify-content: space-between;
  padding: .45rem .85rem; cursor: pointer;
  font-size: .76rem; font-weight: 600; color: #64748b;
  background: #fafbfc;
  list-style: none;
  user-select: none;
}
.loc-card__rooms-toggle::-webkit-details-marker { display: none; }
.loc-card__rooms-toggle:hover { background: #f1f5f9; color: #14b8a6; }
.loc-card__rooms-chev { transition: transform .15s; opacity: .6; }
.loc-card__rooms-wrap[open] > .loc-card__rooms-toggle .loc-card__rooms-chev { transform: rotate(180deg); }
.loc-card__rooms-wrap > .loc-rooms-list { padding: .55rem .85rem .75rem; }

/* Tabs uvnitř modal */
.loc-tabs {
  display: flex;
  gap: .25rem;
  border-bottom: 2px solid #e2e8f0;
  margin: 0;
  padding: .65rem .85rem 0;
  background: #f8fafc;
  flex-wrap: wrap;
}
.loc-tab {
  padding: .65rem 1.1rem;
  font-size: .85rem;
  font-weight: 600;
  color: #64748b;
  cursor: pointer;
  border: 1px solid transparent;
  border-bottom: none;
  background: rgba(255,255,255,.6);
  border-radius: 8px 8px 0 0;
  margin-bottom: -2px;
  transition: color .12s, background .12s, border-color .12s, transform .08s;
  font-family: inherit;
  letter-spacing: .005em;
  position: relative;
}
.loc-tab:hover {
  color: #0f172a;
  background: #fff;
  border-color: #e2e8f0;
  border-bottom-color: transparent;
}
.loc-tab:active { transform: translateY(1px); }
.loc-tab.is-active {
  color: #0f766e;
  background: #fff;
  border-color: #e2e8f0;
  border-bottom: 2px solid #fff;
  box-shadow: 0 -2px 0 0 #0d9488 inset;
  z-index: 1;
}
.loc-tab.is-active::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, #0d9488, #14b8a6);
  border-radius: 8px 8px 0 0;
}
.loc-tab-panel { display: none; padding: 1rem 0 .25rem; }
.loc-tab-panel.is-active { display: block; }

/* locEditModal — statický rozměr (modal se nemění při přepínání tabů) */
.modal-overlay#locEditModal > .modal {
  width: min(96vw, 760px) !important;
  max-width: min(96vw, 760px) !important;
  height: min(88vh, 720px) !important;
  max-height: min(88vh, 720px) !important;
  min-height: min(88vh, 720px) !important;
  display: flex !important;
  flex-direction: column !important;
}
.modal-overlay#locEditModal > .modal > form {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow: hidden !important;
}
.modal-overlay#locEditModal > .modal > form > .modal__body {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  /* Vlastní min-height na body aby content area měla stálou velikost i při přepínání tabů */
  min-height: 380px !important;
}
.modal-overlay#locEditModal > .modal > form > .loc-tabs {
  flex-shrink: 0 !important;
}
.modal-overlay#locEditModal > .modal > form > .modal__footer {
  flex-shrink: 0 !important;
}
.modal-overlay#locEditModal .loc-tab-panel {
  /* Min-height na panelu pro extra zajištění pevné výšky tab content */
  min-height: 360px;
}

.loc-doctor-list {
  display: flex;
  flex-direction: column;
  gap: .4rem;
  max-height: 360px;
  overflow-y: auto;
  padding: .6rem;
  background: #fafbfc;
  border: 1px solid var(--color-border);
  border-radius: 8px;
}
.loc-doctor-item {
  display: flex;
  align-items: center;
  gap: .65rem;
  padding: .65rem .85rem;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  cursor: pointer;
  font-size: .9rem;
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.loc-doctor-item:hover { background: #f8fafc; border-color: #cbd5e1; }
.loc-doctor-item:has(input:checked) { background: #ecfeff; border-color: #67e8f9; box-shadow: 0 0 0 2px rgba(13,148,136,.08); }
.loc-doctor-item input[type="checkbox"] { margin: 0; flex-shrink: 0; width: 16px; height: 16px; accent-color: var(--color-accent, #0d9488); }
.loc-doctor-item__name { font-weight: 600; color: #0f172a; flex: 1 1 auto; }
.loc-doctor-item__pos { font-size: .78rem; color: var(--color-text-muted); padding: .15rem .55rem; background: #f1f5f9; border-radius: 999px; flex-shrink: 0; }

/* ============================================================
 * Signature display — sjednocený renderer napříč aplikací
 * Použito v: submission-detail.php, client-treatment-plan.php
 * Bezpečnostní opatření: blokace download/drag/select/context-menu
 * Spec: viz templates/partials/signature-display.php
 * ============================================================ */

/* Fixní rozměry — všechny podpisy v aplikaci stejně velké bez ohledu na rodič.
 * 360×130 box (img) + 0.65rem padding + 1.5px border = ~395×165 wrapper. */
.sig-render {
  position: relative;
  display: inline-block;
  width: fit-content;
  background: #fff;
  border: 1.5px solid var(--color-border);
  border-radius: 12px;
  padding: .65rem;
  overflow: hidden;
  max-width: 100%;
  user-select: none;
  -webkit-user-select: none;
  box-sizing: border-box;
}

.sig-render__img {
  display: block;
  width: 360px;
  max-width: 100%;
  height: 130px;
  object-fit: contain;
  object-position: center;
  background: #fff;
  pointer-events: none;
  user-select: none;
  -webkit-user-drag: none;
  -khtml-user-drag: none;
  -moz-user-drag: none;
  -o-user-drag: none;
  user-drag: none;
}

/* Multi-row diagonální watermark přes celou plochu */
.sig-render__wm {
  position: absolute;
  inset: -25%;
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  pointer-events: none;
  user-select: none;
  font-family: ui-sans-serif, system-ui, sans-serif;
  transform: rotate(-15deg);
  overflow: hidden;
}

.sig-render__wm span {
  display: block;
  text-align: center;
  white-space: nowrap;
  color: rgba(100, 116, 139, .14);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-shadow: 0 1px 0 rgba(255, 255, 255, .4);
  line-height: 1.6;
}

/* Razítko UPROSTŘED podpisu — datum + jméno na 2 řádcích, semi-transparent
 * Datum +25% vs. předchozí .98rem (1.22rem), pod ním tenké „Elektronicky podepsáno: jméno". */
.sig-render__stamp {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .15rem;
  pointer-events: none;
  user-select: none;
  -webkit-user-select: none;
}
.sig-render__stamp-date {
  font-family: var(--font-mono);
  font-size: 1.6rem;             /* zvětšeno z 1.22rem (~+30%) */
  font-weight: 700;
  color: rgba(71, 85, 105, .62);
  letter-spacing: .02em;
  text-shadow: 0 1px 2px rgba(255, 255, 255, .75);
  line-height: 1.05;
}
.sig-render__stamp-signer {
  font-family: ui-sans-serif, system-ui, sans-serif;
  font-size: 1rem;               /* zvětšeno z .78rem (~+28%) */
  font-weight: 600;
  color: rgba(71, 85, 105, .62);
  letter-spacing: .02em;
  text-shadow: 0 1px 2px rgba(255, 255, 255, .75);
  text-align: center;
  max-width: 95%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.15;
}

/* Legacy single-line date — zachováno pro zpětnou kompatibilitu (pokud někde nepřišla refactor) */


@media (max-width: 640px) {
  /* Mobile fallback — stejné rozměry, jen menší (260×95) ale opět fixní pro všechny */
  .sig-render__img { width: 260px; height: 95px; }
  .sig-render__wm span { font-size: .9rem; letter-spacing: .04em; }
  .sig-render__stamp-date { font-size: 1.3rem; }
  .sig-render__stamp-signer { font-size: .82rem; }
  
}
@media (max-width: 380px) {
  /* Velmi malá zařízení — ještě o krok menší (220×80) */
  .sig-render__img { width: 220px; height: 80px; }
  .sig-render__stamp-date { font-size: 1.1rem; }
  .sig-render__stamp-signer { font-size: .72rem; }
  
}

/* ==========================================================================
   ════════════════════════════════════════════════════════════════════════
   RESPONZIVITA — V0.25 AUDIT FIXES (2026-04-26)
   Cíl: Galaxy Z Fold split (282px) → 4K desktop (3840px)
   Politika: aditivní fixy, nepřepisují základní vrstvu
   ════════════════════════════════════════════════════════════════════════
   ========================================================================== */

/* ------------------------------------------------------------------------
   GLOBÁLNÍ ZÁKLAD — overflow-x prevention + min-width 0
   ------------------------------------------------------------------------ */
html, body {
  overflow-x: clip;        /* clip nepoškozuje sticky descendantů (na rozdíl od hidden) */
  max-width: 100%;
}
@supports not (overflow-x: clip) {
  /* Fallback pro starší prohlížeče bez podpory `overflow: clip` */
  html, body { overflow-x: hidden; }
}

/* Hlavní app kontejnery — nikdy neexpandují kvůli vnitřnímu obsahu */
.dash, .main-content, .container { min-width: 0; }
.card, .card__body, .col-row,
.dash__hero, .file-row, .sub-row, .qr-row, .pin-row, .notif-row  {
  min-width: 0;
}
/* Karty s flex layoutem — flex položky musí mít min-width:0 aby nepřetekly */
 .file-row__main,
.col-row__main, .pin-row__main, .qr-row__main  { min-width: 0; }

/* Header height variable (využívá se pro sticky offsety) */
:root {
  --header-height: 48px;
}

/* ------------------------------------------------------------------------
   TABULKY — automatický horizontální scroll
   ------------------------------------------------------------------------ */
.table-responsive,
.dash .card__body .table-responsive,
.dash .card__body table.dh-aids,
.dash .card__body > div[style*="overflow-x:auto"],
.dash .card__body > div[style*="overflow-x: auto"] {
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
}
/* loc-table a kd inline tabulky — automaticky responsivní */
.loc-table, .table {
  max-width: 100%;
}

/* ------------------------------------------------------------------------
   TOUCH TARGETS — minimální 40×40 px na mobile (a11y WCAG 2.5.5 AA)
   ------------------------------------------------------------------------ */
@media (max-width: 768px) {
  .btn--xs { min-height: 32px; }
  .btn--sm { min-height: 36px; }
  .btn       { min-height: 40px; }
  .dropdown__item { min-height: 40px; padding: .65rem 1.1rem; }
  /* .modal__close je 32px i na mobilu — sjednoceno s referenčním vzorem */
  .navbar__hamburger { width: 44px; height: 44px; padding: .55rem; }
  /* Kategorie ikonkové akce (fav, qr, ...) musí být na mobilu klikatelné */
  .fav-act, .qr-act, .col-fav-act { min-width: 40px; min-height: 40px; }
}

/* ------------------------------------------------------------------------
   STICKY ELEMENTS — kolize navbaru se sticky thead/cards
   ------------------------------------------------------------------------ */

.cis-table thead th {
  top: var(--header-height, 48px);
}

/* ------------------------------------------------------------------------
   MODAL — vždy scrollovatelné body, max-height na mobile
   ------------------------------------------------------------------------ */
.modal {
  /* Legacy modal — zajistit scroll body i bez modal--{sm|md|lg} modifieru */
  max-height: calc(100vh - 2rem);
}
.modal-overlay { padding: 1rem; }
@media (max-width: 768px) {
  .modal-overlay { padding: .75rem; align-items: flex-start; padding-top: 1rem; }
  .modal { max-height: calc(100vh - 1.5rem); width: 100%; }
}
@media (max-width: 480px) {
  .modal-overlay { padding: .5rem; align-items: flex-start; }
  .modal { max-height: calc(100vh - 1rem); }
}

/* Modal--lg na úzkých laptopech — fit do viewportu */
@media (max-width: 1080px) {
  .modal.modal--lg { max-width: calc(100vw - 2rem); }
}
@media (max-width: 760px) {
  .modal.modal--md, .modal.modal--lg { max-width: calc(100vw - 1.5rem); }
}

/* ------------------------------------------------------------------------
   NOTIFIKAČNÍ PANEL — fix pro Z Fold split (282px)
   ------------------------------------------------------------------------ */
@media (max-width: 480px) {
  .navbar__notif-panel {
    width: 100% !important;
    max-width: 100vw !important;
    left: 0 !important;
    right: 0 !important;
    border-radius: 0 !important;
  }
  .navbar__notif-item {
    padding: .65rem .75rem;
  }
}

/* ------------------------------------------------------------------------
   IPHONE 17 PRO MAX (430px) / S25U (412px) / iPhone Pro (393px)
   ------------------------------------------------------------------------ */
@media (max-width: 430px) {
  /* Modaly */
  .modal { padding: 1.25rem 1rem 1rem; }
  .modal__title { font-size: 1.15rem; }
  /* Karty kolegů — 1-sloupcový stack i pro 4 položky */
  .col-stats { grid-template-columns: 1fr 1fr; }
  /* Form rows na velmi úzkých zařízeních */
  .form-row, .reg__fields { grid-template-columns: 1fr !important; }
  /* Prof grid — single column pro karty */
  .prof__grid { grid-template-columns: 1fr !important; gap: 1rem; }
  /* Tabulky uvnitř karet — wrap textu */
  .card__body table { font-size: .8rem; }
  .card__body table td, .card__body table th { padding: .4rem .5rem; }
  /* Page header stack */
  .page-header { flex-direction: column; align-items: stretch; gap: .65rem; }
  .page-header__actions { flex-wrap: wrap; gap: .35rem; }
  .page-header__actions .btn { flex: 1 1 auto; min-width: 0; }
  /* Notif panel item kompaktnější */
  .navbar__notif-item-title { font-size: .82rem; }
  .navbar__notif-item-meta { font-size: .68rem; }
  /* Dropdown menu fitting */
  .dropdown__menu { min-width: 130px; max-width: calc(100vw - 1rem); }
}

/* ------------------------------------------------------------------------
   GALAXY Z FLIP (412px / 360px portrait) + S25U
   ------------------------------------------------------------------------ */
@media (max-width: 412px) {
  /* Hero akce — sloupec aby se vešly */
  .dash__hero-actions { flex-direction: column; align-items: stretch; }
  .dash__hero-actions .btn { width: 100%; justify-content: center; }
  /* Kartové kolegové — 4 metriky → 2 sloupce */
  .col-row__stats { grid-template-columns: repeat(2, 1fr) !important; }
  /* Dental chart kontejnery — oversize svg adjust */
  .kd-chart-layout { overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* ------------------------------------------------------------------------
   GALAXY FOLD UNFOLDED (717px) / iPad mini (744px)
   ------------------------------------------------------------------------ */
@media (min-width: 700px) and (max-width: 768px) {
  .col-stats { grid-template-columns: repeat(3, 1fr); }
  .container { padding: 0 1.25rem; }
}

/* ------------------------------------------------------------------------
   GALAXY Z FOLD COVER SPLIT (282px) — extrémní edge case
   Cíl: žádný horizontální scroll, klikatelné prvky aspoň 36×36
   ------------------------------------------------------------------------ */
@media (max-width: 320px) {
  :root { --app-content-padding: .5rem; }
  .container { padding: 0 .5rem; }
  body { font-size: 14px; }

  /* Navbar */
  .navbar__inner { gap: .35rem; height: 44px; }
  .navbar__logo-text { font-size: 1.21rem; letter-spacing: -.03em; }
  .navbar__logo-icon svg { width: 31.46px; height: 31.46px; }
  :root { --header-height: 44px; }

  /* Hero kompaktní */
  .dash__hero { padding: .65rem; }
  .dash__hero-top { flex-direction: column; gap: .4rem; padding: 1rem; }
  .dash__name { font-size: 1.05rem; }
  .dash__greeting { font-size: .72rem; }

  /* Karty */
  .card { border-radius: 8px; }
  .card__head, .card__body, .card__foot { padding: .65rem .75rem; }
  
  
  
  .col-stats { grid-template-columns: 1fr 1fr !important; }
  .col-stats__val { font-size: 1.2rem; }
  .col-row__stats { grid-template-columns: 1fr 1fr !important; gap: .35rem !important; }

  /* Modaly */
  .modal-overlay { padding: .25rem; }
  .modal {
    max-width: calc(100vw - .5rem) !important;
    padding: .85rem .75rem !important;
    border-radius: 10px !important;
  }
  .modal__title { font-size: 1.05rem; }
  .modal__head { padding: .7rem .75rem .65rem; }
  .modal__body { padding: .75rem; }
  .modal__foot { padding: .65rem .75rem; gap: .35rem; flex-direction: column; }
  .modal__foot .btn { width: 100%; }
  .modal-overlay.is-cover .modal { max-width: calc(100vw - .5rem); padding: 1rem .85rem; }

  /* Tabulky — extra kompaktní */
  .table td, .table th, .cis-table td, .cis-table th {
    font-size: .7rem;
    padding: .35rem .4rem;
  }
  .table th.sortable { padding-right: 1.1rem; }

  /* Statistické grids */
  .stats-grid, .steps  { grid-template-columns: 1fr !important; }
  .st-grid-4, .st-grid-5, .st-grid-2 { grid-template-columns: 1fr !important; }

  /* Filter bar */
  .sf { padding: .65rem .75rem; }
  .sf__row { flex-direction: column; gap: .35rem; }
  .sf__date { font-size: .78rem; padding: .45rem .5rem; }

  /* Footer */
  .footer__inner { padding: 1rem .5rem; gap: .75rem; grid-template-columns: 1fr; }
  .footer__bottom { padding: .5rem .35rem; font-size: .68rem; flex-direction: column; gap: .25rem; }

  /* Hero stats */
  
  
  

  /* Pagination */
  .pagination__list { gap: .15rem; flex-wrap: wrap; }
  .pagination__link { padding: .25rem .4rem; font-size: .7rem; min-width: 28px; }

  /* Dropdown */
  .dropdown__menu { min-width: 110px; max-width: calc(100vw - .5rem); right: .25rem; }
  .dropdown__item { font-size: .8rem; padding: .55rem .75rem; }

  /* Notifikační panel */
  .navbar__notif-panel { max-width: 100vw !important; }
  .navbar__notif-item { padding: .5rem .65rem; font-size: .78rem; }
  .navbar__notif-item-title { font-size: .8rem; }

  /* Hide non-essential UI */
  
  
  
  

  /* Klient detail mini-charts → scrollable */
  .kd-chart-layout {
    grid-template-columns: 1fr !important;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .kd-chart-layout .kd-mini-chart { min-width: 280px; }

  /* Touch targets — ne menší než 36×36 */
}

@media (max-width: 360px) {
  .kd-chart-layout { grid-template-columns: 1fr !important; }
  .kd-chart-layout .kd-mini-chart { min-width: 100%; max-width: 100%; }
}

@media (max-width: 600px) {
  .btn--xs { min-height: 30px; padding: .35rem .55rem; font-size: .72rem; }
  .btn--sm { min-height: 34px; padding: .4rem .65rem; font-size: .78rem; }
  .btn { min-height: 40px; padding: .5rem .75rem; font-size: .82rem; }
}

/* ------------------------------------------------------------------------
   SAMSUNG S25 ULTRA (412px landscape) / iPhone landscape
   Pro velmi nízké výšky — modaly nesmí být cropped
   ------------------------------------------------------------------------ */
@media (max-height: 480px) and (orientation: landscape) {
  .modal-overlay { align-items: flex-start; padding: .5rem; }
  .modal { max-height: calc(100vh - 1rem); }
  .modal__body { max-height: calc(100vh - 9rem); }
  /* Patient form sticky header — kompaktní */
  .pf__header { padding: .5rem 1rem; }
  .pf__steps-bar { padding: .4rem 1rem; }
}

/* ------------------------------------------------------------------------
   IPAD MINI / iPad portrait (744-820px)
   ------------------------------------------------------------------------ */
@media (min-width: 700px) and (max-width: 820px) {
  .container { padding: 0 1.5rem; }
  /* Profil dvousloupec → single column dříve aby se obsah nemačkal */
  .prof__grid { grid-template-columns: 1fr !important; gap: 1.25rem; }
  /* Statistiky — 4 sloupce příliš tísnivé */
  .col-stats { grid-template-columns: repeat(2, 1fr); }
  .col-stats__item:nth-child(2n) { border-right: 0; }
  .col-stats__item:nth-child(odd) { border-right: 1px solid #eef2f7; }
  .col-stats__item:nth-child(n+3) { border-top: 1px solid #eef2f7; }
}

/* ------------------------------------------------------------------------
   IPAD PRO 11" / IPAD AIR (1024px) — landscape tabletu
   ------------------------------------------------------------------------ */
@media (min-width: 900px) and (max-width: 1100px) {
  /* Notif panel by neměl přečnívat */
  .navbar__notif-panel { max-width: 480px; }
  /* Dashboard recent rows kompaktnější */
  .dash__recent-row[style*="grid-template-columns"] { font-size: .82rem; }
}

/* ------------------------------------------------------------------------
   LARGE DESKTOP (1920px+) — polish
   ------------------------------------------------------------------------ */
@media (min-width: 1920px) {
  :root {
    --app-content-max: 1800px;
    --app-content-padding: 1.5rem;
  }
  body { font-size: 16.5px; }
  .dash__name { font-size: 1.65rem; }
  /* Větší modaly aby nebyly ztracené uprostřed */
  .modal.modal--lg { max-width: 1100px; }
}

/* ------------------------------------------------------------------------
   4K DISPLAY (2560px+ Retina, 3840px+) — polish
   ------------------------------------------------------------------------ */
@media (min-width: 2560px) {
  :root {
    --app-content-max: 2200px;
  }
  body { font-size: 17px; }
}
@media (min-width: 3200px) {
  :root {
    --app-content-max: 2600px;
  }
}

/* ------------------------------------------------------------------------
   Veřejné formuláře — clinic-hub & rozcestník (extra-malé Z Fold)
   ------------------------------------------------------------------------ */
@media (max-width: 320px) {
  .clinic-hub, .clinic-hub__container, .roz, .roz__container {
    padding: .5rem !important;
  }
  .clinic-hub__title, .roz__title { font-size: 1.1rem; }
  .clinic-hub__hero, .roz__hero { padding: 1rem .75rem; }
}

/* ------------------------------------------------------------------------
   Print mode — odstranit sticky positioning při tisku
   ------------------------------------------------------------------------ */
@media print {
  .navbar, .cis-table thead th  { position: static !important; }
  html, body { overflow: visible !important; }
}

/* ==================== LEGAL DOCUMENT PAGES ==================== */
.legal-shell {
  width: 85%;
  max-width: 1700px;
  margin: 0 auto;
  padding: 2.5rem 0 4rem;
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 2.5rem;
  align-items: start;
}
@media (max-width: 1100px) {
  .legal-shell { width: 92%; }
}
@media (max-width: 900px) {
  .legal-shell { grid-template-columns: 1fr; padding: 1.5rem 0 3rem; gap: 1.5rem; width: 92%; }
}

.legal-doc__crumb {
  grid-column: 1 / -1;
  font-size: .8rem;
  color: #6e7389;
  margin-bottom: .5rem;
}
.legal-doc__crumb a { color: #6e7389; }
.legal-doc__crumb a:hover { color: #0d9488; text-decoration: underline; }
.legal-doc__crumb .sep { margin: 0 .35rem; opacity: .55; }

.legal-doc__toc {
  position: sticky;
  top: calc(48px + 1rem);
  align-self: start;
  max-height: calc(100vh - 48px - 2rem);
  overflow-y: auto;
  padding: 1.25rem 1rem;
  background: #f4f5f7;
  border: 1px solid #e5e7ec;
  border-radius: 10px;
  font-size: .82rem;
  z-index: 5;
}
.legal-doc__toc-title {
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: #6e7389;
  margin-bottom: .55rem;
}
.legal-doc__toc ol {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: ld-toc;
}
.legal-doc__toc li {
  counter-increment: ld-toc;
  margin: 0;
  line-height: 1.4;
}
.legal-doc__toc a {
  display: block;
  padding: .35rem .25rem .35rem 1.7rem;
  color: #3d4255;
  border-radius: 4px;
  text-decoration: none;
  position: relative;
  transition: background .14s, color .14s;
}
.legal-doc__toc a::before {
  content: counter(ld-toc) ".";
  position: absolute;
  left: .25rem;
  font-weight: 700;
  color: #9aa0b3;
  font-variant-numeric: tabular-nums;
}
.legal-doc__toc a:hover { background: #fff; color: #0d9488; }
.legal-doc__toc a.is-active { background: #fff; color: #0d9488; box-shadow: 0 1px 2px rgba(58,64,90,.05); }
@media (max-width: 900px) {
  .legal-doc__toc { position: static; max-height: none; }
}

.legal-doc {
  background: #fff;
  border: 1px solid #e5e7ec;
  border-radius: 14px;
  box-shadow: 0 2px 8px rgba(58,64,90,.04);
  padding: 2.5rem 2.75rem 3rem;
}
@media (max-width: 720px) {
  .legal-doc { padding: 1.75rem 1.25rem 2rem; }
}

.legal-doc__head {
  border-bottom: 1px solid #e5e7ec;
  padding-bottom: 1.5rem;
  margin-bottom: 1.75rem;
}
.legal-doc__eyebrow {
  display: inline-block;
  padding: .2rem .65rem;
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  background: #eefbfa;
  color: #0b7e73;
  border-radius: 999px;
  margin-bottom: .85rem;
}
.legal-doc__title {
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  font-weight: 800;
  color: #1a1d2b;
  letter-spacing: -.01em;
  line-height: 1.18;
  margin: 0 0 .65rem;
  overflow-wrap: break-word;
  word-wrap: break-word;
  hyphens: auto;
}
@media (max-width: 480px) {
  .legal-doc__title { font-size: 1.25rem !important; line-height: 1.25; }
}
.legal-doc__lede {
  font-size: 1rem;
  color: #3d4255;
  line-height: 1.65;
  margin: 0 0 1.1rem;
  max-width: 60ch;
}
.legal-doc__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.6rem;
  font-size: .82rem;
  color: #3d4255;
}
@media (max-width: 480px) {
  .legal-doc__meta { gap: .75rem 1rem; font-size: .75rem; }
  .legal-doc__meta-item { min-width: 0; }
}
.legal-doc__meta-item .lbl {
  display: block;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #6e7389;
  margin-bottom: .2rem;
}
.legal-doc__meta-item .val { font-weight: 600; color: #1a1d2b; }

.legal-doc__placeholder-callout {
  background: #fffbeb;
  border: 1px solid #fcd34d;
  border-left: 4px solid #d97706;
  padding: .9rem 1.1rem;
  margin: 1.25rem 0 1.6rem;
  border-radius: 8px;
  font-size: .85rem;
  color: #92400e;
}
.legal-doc__placeholder-callout strong { color: #78350f; }

.legal-doc__content {
  font-size: .95rem;
  line-height: 1.72;
  color: #1a1d2b;
}
.legal-doc__content h2 {
  font-size: 1.2rem;
  font-weight: 800;
  color: #2d3346;
  margin: 2.2rem 0 .85rem;
  padding-top: .25rem;
  letter-spacing: -.005em;
  scroll-margin-top: 5rem;
}
.legal-doc__content h3 {
  font-size: 1.02rem;
  font-weight: 700;
  color: #2d3346;
  margin: 1.5rem 0 .55rem;
}
.legal-doc__content h4 {
  font-size: .92rem;
  font-weight: 700;
  color: #3d4255;
  margin: 1.1rem 0 .4rem;
}
.legal-doc__content p { margin: 0 0 .85rem; }
.legal-doc__content ul,
.legal-doc__content ol { margin: 0 0 .95rem 1.55rem; padding: 0; list-style: revert; }
.legal-doc__content li { margin: .15rem 0; }
.legal-doc__content li::marker { color: #6e7389; }
.legal-doc__content strong { color: #1e2433; font-weight: 700; }
.legal-doc__content em { color: #3d4255; font-style: italic; }
.legal-doc__content code {
  background: #f4f5f7;
  border: 1px solid #e5e7ec;
  border-radius: 4px;
  padding: 1px 6px;
  font-size: .82rem;
  font-family: var(--font-mono);
  color: #2d3346;
}
.legal-doc__content blockquote {
  border-left: 3px solid #0d9488;
  padding: .35rem 1rem;
  margin: 1rem 0;
  background: #eefbfa;
  color: #2d3346;
  border-radius: 0 6px 6px 0;
  font-size: .92rem;
}
.legal-doc__content table {
  width: 100%;
  border-collapse: collapse;
  margin: 1rem 0 1.4rem;
  font-size: .88rem;
}
.legal-doc__content thead th {
  background: #f4f5f7;
  text-align: left;
  font-weight: 700;
  color: #2d3346;
  padding: .55rem .75rem;
  border-bottom: 1px solid #cbd5e1;
}
.legal-doc__content tbody td {
  padding: .55rem .75rem;
  border-bottom: 1px solid #eef0f4;
  vertical-align: top;
}
.legal-doc__content tbody tr:hover td { background: #fafafb; }
.legal-doc__content hr {
  border: none;
  border-top: 1px solid #e5e7ec;
  margin: 2rem 0;
}

.legal-doc__article {
  margin: 1.6rem 0;
  scroll-margin-top: 5rem;
}
.legal-doc__article:first-of-type { margin-top: 0; }

.legal-doc__article-num {
  display: inline-block;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #6e7389;
  margin-right: .55rem;
}

.legal-doc__footnote {
  margin-top: 2.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid #e5e7ec;
  font-size: .8rem;
  color: #6e7389;
  line-height: 1.55;
}

.legal-doc__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
  margin: 1.5rem 0 0;
}
.legal-doc__actions .btn--print,
.legal-doc__actions .btn--related {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .55rem 1rem;
  font-size: .85rem;
  font-weight: 600;
  background: #fff;
  color: #2d3346;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  cursor: pointer;
  text-decoration: none;
  transition: all .15s;
}
.legal-doc__actions .btn--print:hover,
.legal-doc__actions .btn--related:hover {
  border-color: #0d9488;
  color: #0b7e73;
  background: #eefbfa;
}

@media print {
  .legal-doc__toc, .legal-doc__crumb, .legal-breadcrumb, .legal-doc__actions, .footer-strip, .navbar, .footer { display: none !important; }
  .legal-shell { display: block; padding: 0; max-width: 100%; }
  .legal-doc { box-shadow: none; border: none; padding: 0; }
  .legal-doc__head, .legal-doc__header { padding: 0 0 1rem; }
  .legal-doc__content { font-size: 11pt; line-height: 1.5; }
  .legal-doc__content h2 { font-size: 14pt; page-break-after: avoid; margin-top: 1.5rem; }
  .legal-doc__content h3 { font-size: 12pt; page-break-after: avoid; }
}

/* === Sjednocené aliasy a komponenty pro legal stránky (verze 2026-04-30) === */

/* Aliasy: nové třídy mapované na existující styly (zpětná kompatibilita) */
.legal-breadcrumb {
  grid-column: 1 / -1;
  font-size: .8rem;
  color: #6e7389;
  margin-bottom: .5rem;
}
.legal-breadcrumb a { color: #6e7389; }
.legal-breadcrumb a:hover { color: #0d9488; text-decoration: underline; }
.legal-breadcrumb__sep { margin: 0 .35rem; opacity: .55; }
.legal-breadcrumb__current { color: #2d3346; font-weight: 600; }

/* legal-layout: neutrální wrapper pro 2sloupcový layout, využívá grid z legal-shell */
.legal-layout {
  display: contents;
}

/* legal-doc__header == legal-doc__head (alias) */
.legal-doc__header {
  margin-bottom: 2rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid #e5e7ec;
}

/* legal-doc__section == legal-doc__article (alias) */
.legal-doc__section {
  margin: 1.6rem 0;
  scroll-margin-top: 5rem;
}
.legal-doc__section:first-of-type { margin-top: 0; }

/* TOC list class (kompatibilita s legal-doc__toc-list, kromě tag selectoru ol) */
.legal-doc__toc-list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: ld-toc;
}
.legal-doc__toc-list li {
  counter-increment: ld-toc;
  margin: 0;
  line-height: 1.4;
}
.legal-doc__toc-list a {
  display: block;
  padding: .35rem .25rem .35rem 1.7rem;
  color: #3d4255;
  border-radius: 4px;
  text-decoration: none;
  position: relative;
  transition: background .14s, color .14s;
}
.legal-doc__toc-list a::before {
  content: counter(ld-toc) ".";
  position: absolute;
  left: .25rem;
  font-weight: 700;
  color: #9aa0b3;
  font-variant-numeric: tabular-nums;
}
.legal-doc__toc-list a:hover { background: #fff; color: #0d9488; }
.legal-doc__toc-list a.is-active { background: #fff; color: #0d9488; box-shadow: 0 1px 2px rgba(58,64,90,.05); }

/* Meta jako <dl> s <dt>/<dd> (sémantičtější varianta) */
.legal-doc__meta dl,
dl.legal-doc__meta {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem 1.4rem;
  margin: 1rem 0 0;
  padding: 0;
}
.legal-doc__meta dt {
  display: block;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #6e7389;
  margin: 0;
}
.legal-doc__meta dd {
  margin: 0;
  font-weight: 600;
  color: #1a1d2b;
  font-size: .9rem;
}

/* Audience info (komu je dokument určen) */
.legal-doc__audience {
  margin: 1.1rem 0 0;
  padding: .85rem 1rem;
  background: #f8fafc;
  border-left: 3px solid #94a3b8;
  border-radius: 4px;
  font-size: .9rem;
  color: #3d4255;
  line-height: 1.55;
}

/* Callout box (info varianta) */
.legal-doc__callout {
  margin: 1.4rem 0;
  padding: 1rem 1.15rem;
  border-radius: 8px;
  font-size: .92rem;
  line-height: 1.55;
}
.legal-doc__callout--info {
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  color: #1e40af;
}
.legal-doc__callout--info strong { color: #1e3a8a; }
.legal-doc__callout--warning {
  background: #fef3c7;
  border: 1px solid #fde68a;
  color: #78350f;
}
.legal-doc__callout--success {
  background: #ecfdf5;
  border: 1px solid #a7f3d0;
  color: #047857;
}

/* Card (kontaktní/informativní box) */
.legal-doc__card {
  margin: 1rem 0;
  padding: 1.05rem 1.2rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  font-size: .92rem;
  line-height: 1.55;
}
.legal-doc__card p { margin: 0; }
.legal-doc__card p + p { margin-top: .5rem; }

/* Tabulka v legal dokumentu */
.legal-doc__table-wrap {
  margin: 1rem 0 1.5rem;
  overflow-x: auto;
  border-radius: 8px;
  border: 1px solid #e5e7ec;
}
.legal-doc__table {
  width: 100%;
  border-collapse: collapse;
  font-size: .88rem;
  background: #fff;
}
.legal-doc__table thead th {
  background: #f4f5f7;
  color: #2d3346;
  text-align: left;
  padding: .65rem .8rem;
  font-weight: 700;
  border-bottom: 1px solid #e5e7ec;
}
.legal-doc__table tbody th[scope="row"] {
  background: #f8fafc;
  text-align: left;
  padding: .55rem .8rem;
  font-weight: 600;
  vertical-align: top;
  border-bottom: 1px solid #eef0f3;
  color: #2d3346;
  width: 32%;
}
.legal-doc__table tbody td {
  padding: .55rem .8rem;
  vertical-align: top;
  border-bottom: 1px solid #eef0f3;
  color: #3d4255;
}
.legal-doc__table tbody tr:last-child td,
.legal-doc__table tbody tr:last-child th { border-bottom: 0; }
.legal-doc__table tbody tr:hover td { background: #fafafb; }
.legal-doc__table code {
  font-family: var(--font-mono);
  font-size: .82em;
  background: #f1f3f5;
  padding: .08rem .3rem;
  border-radius: 3px;
}

/* Právní základ - zvýraznění */
.legal-doc__legal-basis {
  margin: .55rem 0 1rem;
  padding: .55rem .75rem;
  background: #f4f5f7;
  border-left: 3px solid #0d9488;
  border-radius: 0 4px 4px 0;
  font-size: .9rem;
  color: #2d3346;
  line-height: 1.55;
}
.legal-doc__legal-basis strong { color: #0b7e73; }

/* Note (drobná poznámka pod tabulkou) */
.legal-doc__note {
  font-size: .82rem;
  color: #6e7389;
  font-style: italic;
  margin: .35rem 0 0;
  line-height: 1.5;
}

/* Akce (tlačítka) - nová varianta */
.legal-doc__action {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .55rem 1rem;
  font-size: .85rem;
  font-weight: 600;
  background: #0d9488;
  color: #fff;
  border: 1px solid #0d9488;
  border-radius: 6px;
  cursor: pointer;
  text-decoration: none;
  transition: all .15s;
}
.legal-doc__action:hover {
  background: #0b7e73;
  border-color: #0b7e73;
  color: #fff;
}
.legal-doc__action--ghost {
  background: #fff;
  color: #2d3346;
  border-color: #cbd5e1;
}
.legal-doc__action--ghost:hover {
  border-color: #0d9488;
  color: #0b7e73;
  background: #eefbfa;
}

/* Optional explicit h2/h3 inside legal-doc (when not wrapped in __content) */
.legal-doc__h2 {
  font-size: 1.32rem;
  font-weight: 700;
  color: #1a1d2b;
  margin: 1.5rem 0 .75rem;
  line-height: 1.3;
  letter-spacing: -.005em;
}
.legal-doc__h3 {
  font-size: 1.05rem;
  font-weight: 700;
  color: #2d3346;
  margin: 1.1rem 0 .55rem;
  line-height: 1.35;
}

/* Sekce direktivně v article (pro stránky bez legal-doc__content wrapperu) */
.legal-doc > .legal-doc__section,
.legal-doc > section.legal-doc__section {
  padding: 0;
}
.legal-doc > .legal-doc__section p {
  margin: 0 0 .85rem;
  line-height: 1.65;
  color: #2d3346;
}
.legal-doc > .legal-doc__section ul,
.legal-doc > .legal-doc__section ol {
  margin: 0 0 .95rem 1.55rem;
  padding: 0;
  list-style: revert;
}
.legal-doc > .legal-doc__section li { margin: .15rem 0; line-height: 1.55; }

/* === Mid-stage pick-location === */
.page--mid-stage {
  min-height: 80vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
}
.card--mid-stage {
  max-width: 720px;
  width: 100%;
  padding: 2rem;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,.08);
}
.card--mid-stage h1 { margin: 0 0 .5rem; }
.location-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px,1fr));
  gap: 1rem;
  margin-top: 1.5rem;
}
.location-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 1.25rem;
  border: 2px solid #e5e7eb;
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: all .2s;
  text-align: left;
  font-family: inherit;
}
.location-card:hover {
  border-color: #14b8a6;
  box-shadow: 0 4px 16px rgba(20,184,166,.12);
}
.location-card__icon { font-size: 1.5rem; margin-bottom: .5rem; }
.location-card__name { font-size: 1.1rem; margin-bottom: .25rem; color: #1a2035; }
.location-card__addr { color: #6e7389; font-size: .85rem; }
.location-card--all { border-style: dashed; }

/* === Sklad listing === */
.stock-row {
    display: grid;
    grid-template-columns: 2fr 3fr auto;
    gap: 1rem;
    padding: .9rem 1rem;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,.04);
    margin-bottom: .5rem;
    border-left: 4px solid var(--cat-color, #cbd5e1);
    transition: box-shadow .2s;
}
.stock-row:hover { box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.stock-row__main { display: flex; flex-direction: column; gap: .15rem; }
.stock-row__name { color: #1a2035; font-size: 1rem; }
.stock-row__ean { font-size: .8rem; color: #6e7389; }
.stock-row__meta { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; font-size: .9rem; }
.stock-row__qty { font-weight: 600; color: #1a2035; }
.stock-row__qty.is-low { color: #dc2626; }
.stock-row__exp.is-soon { color: #f59e0b; }
.stock-row__exp.is-expired { color: #dc2626; font-weight: 600; }
.stock-row__loc { color: #6e7389; font-size: .85rem; }
.stock-row__actions { display: flex; gap: .25rem; align-items: center; }
.badge--alert { background: #fef3c7; color: #92400e; padding: .15rem .5rem; border-radius: 4px; font-size: .75rem; }
.badge--cat { padding: .15rem .5rem; border-radius: 4px; font-size: .75rem; }

/* Filtr bar */
.filter-bar {
    display: flex;
    gap: .5rem;
    align-items: center;
    flex-wrap: wrap;
    padding: .75rem 1rem;
    background: #f8fafc;
    border-radius: 8px;
    margin-bottom: 1rem;
}
.filter-bar select, .filter-search {
    padding: .4rem .8rem;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    font-family: inherit;
    font-size: .9rem;
}
.filter-states { display: flex; gap: .25rem; }
.filter-states a { padding: .35rem .75rem; border-radius: 4px; text-decoration: none; color: #6e7389; font-size: .85rem; }
.filter-states a:hover { background: #f0f2f5; }
.filter-states a.is-active { background: #14b8a6; color: #fff; }
.filter-search { flex: 1; min-width: 200px; }

/* Hero stats */
.hero__stats { display: flex; gap: 1.5rem; margin: .5rem 0; font-size: .95rem; color: rgba(255,255,255,.85); }
.hero__stat--alert { color: #fca5a5; }
.hero__stat--warn { color: #fcd34d; }
.hero__actions { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .75rem; }

/* Pagination */
.pagination { display: flex; gap: .25rem; justify-content: center; margin-top: 1rem; }
.pagination a { padding: .35rem .65rem; border: 1px solid #e5e7eb; border-radius: 4px; text-decoration: none; color: #1a2035; }
.pagination a:hover { background: #f0f2f5; }
.pagination a.is-active { background: #14b8a6; color: #fff; border-color: #14b8a6; }

@media (max-width: 640px) {
    .stock-row { grid-template-columns: 1fr; }
    .stock-row__actions { justify-content: flex-end; }
    .filter-bar { flex-direction: column; align-items: stretch; }
}

/* === Stock consumption modal === */
.consumption-item {
    display: grid;
    grid-template-columns: auto 1fr 80px 60px auto;
    gap: .5rem;
    align-items: center;
    padding: .6rem 0;
    border-bottom: 1px solid #f0f2f5;
    font-size: .9rem;
}
.consumption-name { font-weight: 500; }
.consumption-qty {
    border: 1px solid #e5e7eb;
    border-radius: 4px;
    font-family: inherit;
}
.consumption-unit { color: #6e7389; font-size: .85rem; }
.btn-link {
    background: none;
    border: none;
    color: #14b8a6;
    cursor: pointer;
    text-decoration: underline;
    font-family: inherit;
    font-size: .85rem;
    padding: 0;
}
.btn-link:hover { color: #0f766e; }

/* === Dashboard sklad cards === */
.dash-card--sklad-low.is-alert .dash-card__big { color: #dc2626; }
.dash-card--sklad-exp.is-warn .dash-card__big { color: #f59e0b; }
.dash-card--sklad-low,
.dash-card--sklad-exp {
    text-decoration: none;
    color: inherit;
    display: block;
    padding: 1rem 1.25rem;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,.04);
    transition: box-shadow .2s;
}
.dash-card--sklad-low:hover,
.dash-card--sklad-exp:hover { box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.dash-card__title { font-size: .9rem; color: #6e7389; margin: 0 0 .35rem; font-weight: 500; }
.dash-card__big { font-size: 2rem; font-weight: 600; margin: 0 0 .25rem; color: #1a2035; }
.dash-card__sub { font-size: .8rem; color: #6e7389; margin: 0; }

/* ────────────────────────────────────────────────────────────
   Sklad redesign 2026-04-29 — grid + KPI + table + sidebar
   ──────────────────────────────────────────────────────────── */
.sklad-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 1.5rem;
  align-items: start;
}
.sklad-main { min-width: 0; }
@media (max-width: 1024px) {
  .sklad-grid { grid-template-columns: 1fr; }
}

/* KPI strip */
.kpi-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .75rem;
  margin-bottom: 1.25rem;
}
.kpi-card {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .9rem 1rem;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  text-decoration: none;
  color: inherit;
  transition: box-shadow .15s, border-color .15s, transform .1s;
}
.kpi-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,.08); border-color: #cbd5e1; text-decoration: none; }
.kpi-card, .kpi-card:hover, .kpi-card:focus, .kpi-card:active { text-decoration: none !important; }
.kpi-card * { text-decoration: none !important; }
.kpi-card.is-active {
  border-color: #14b8a6;
  background: #f0fdfa;
  box-shadow: 0 0 0 1px #14b8a6 inset;
}
.kpi-card--alert.is-active { border-color: #dc2626; background: #fef2f2; box-shadow: 0 0 0 1px #dc2626 inset; }
.kpi-card--warn.is-active  { border-color: #f59e0b; background: #fffbeb; box-shadow: 0 0 0 1px #f59e0b inset; }
.kpi-card__icon { font-size: 1.5rem; line-height: 1; }
.kpi-card__body { display: flex; flex-direction: column; min-width: 0; }
.kpi-card__label { font-size: .78rem; color: #6e7389; }
.kpi-card__value { font-size: 1.4rem; font-weight: 600; color: #1a2035; line-height: 1.2; }
.kpi-card--alert .kpi-card__value { color: #dc2626; }
.kpi-card--warn .kpi-card__value  { color: #d97706; }

/* Toolbar — dvouúrovňový: search nahoře (full-width), filtry pod ním */
.sklad-toolbar {
  display: flex;
  flex-direction: column;
  gap: .55rem;
  padding: .75rem;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  margin-bottom: 1rem;
}
.sklad-toolbar__search-row {
  display: flex;
  gap: .5rem;
  align-items: center;
  width: 100%;
}
.sklad-toolbar__search-row > .srm-search-wrap {
  flex: 1 1 auto;
  min-width: 0;
}
.sklad-toolbar__filters-row {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  align-items: center;
}
.sklad-toolbar select,
.sklad-toolbar__search {
  padding: .45rem .6rem;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  background: #fff;
  font-size: .9rem;
  color: #1a2035;
}
.sklad-toolbar__search { width: 100%; min-width: 0; }

/* Hero KPI — mini-cards Pod min / Brzy exp na hero gradientu (sklad.php) */
.dash__hero-side {
  display: flex;
  flex-direction: column;
  gap: .75rem;
  align-items: flex-end;
}
.sklad-hero-kpi {
  display: flex;
  gap: .55rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.sklad-hero-kpi__card {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .5rem .85rem;
  border-radius: 10px;
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .12);
  text-decoration: none;
  color: #fff;
  font-size: .82rem;
  transition: background .15s, border-color .15s;
  min-width: 130px;
}
.sklad-hero-kpi__card:hover {
  background: rgba(255, 255, 255, .14);
  border-color: rgba(255, 255, 255, .22);
}
.sklad-hero-kpi__card.is-active {
  background: rgba(255, 255, 255, .18);
  border-color: rgba(255, 255, 255, .35);
}
.sklad-hero-kpi__icon { font-size: 1.05rem; line-height: 1; flex-shrink: 0; }
.sklad-hero-kpi__body { display: flex; flex-direction: column; gap: .05rem; line-height: 1.15; }
.sklad-hero-kpi__label { font-size: .68rem; opacity: .8; text-transform: uppercase; letter-spacing: .05em; }
.sklad-hero-kpi__value { font-size: 1.15rem; font-weight: 700; }
.sklad-hero-kpi__card--alert .sklad-hero-kpi__value { color: #fca5a5; }
.sklad-hero-kpi__card--warn  .sklad-hero-kpi__value { color: #fcd34d; }
@media (max-width: 720px) {
  .dash__hero-side { align-items: stretch; }
  .sklad-hero-kpi { justify-content: flex-start; }
  .sklad-hero-kpi__card { min-width: 0; flex: 1 1 calc(50% - .3rem); }
}
.sklad-toolbar select:hover,
.sklad-toolbar__search:hover { border-color: #cbd5e1; }
.sklad-toolbar select:focus,
.sklad-toolbar__search:focus { outline: none; border-color: #14b8a6; box-shadow: 0 0 0 3px rgba(20,184,166,.12); }

/* Stock table — fixed layout, sjednocený font/velikost/barva napříč sloupci */
.stock-table {
  width: 100%;
  table-layout: fixed;            /* sloupce neměnit po filtrování */
  border-collapse: separate;
  border-spacing: 0;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  overflow: hidden;
  font-size: .85rem;              /* jednotná velikost — čitelná */
  font-family: inherit;           /* žádné mono/jiné — vše jednotné */
  color: #1a2035;
}
/* Pevné šířky sloupců — table-layout: fixed je honoruje */
.stock-table__col-check { width: 36px; }
.stock-table__col-code  { width: 130px; }
.stock-table__col-name  { width: auto; }   /* zbytek místa */
.stock-table__col-qty   { width: 120px; }
.stock-table__col-exp   { width: 100px; }
.stock-table__col-batch { width: 140px; }
.stock-table__col-fav   { width: 44px; }  /* prostorově úsporný — jen ikona */

.stock-table thead th {
  text-align: left;
  font-weight: 600;
  padding: .5rem .65rem;
  background: #f8fafc;
  border-bottom: 1px solid #e5e7eb;
  color: #475569;
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  white-space: nowrap;
}
.stock-table thead th a { color: inherit; text-decoration: none; }
.stock-table thead th a:hover { color: #14b8a6; }
.stock-table tbody td {
  padding: .45rem .65rem;
  border-bottom: 1px solid #f1f5f9;
  vertical-align: middle;
  line-height: 1.35;
  /* Default chování pro fixed layout: ellipsis při přetečení */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.stock-table tbody tr:last-child td { border-bottom: none; }
.stock-table tbody tr:hover { background: #f8fafc; }
.stock-table tbody tr.is-selected { background: #ecfeff; }
.stock-table tbody tr.is-low { background: linear-gradient(90deg, #fef2f2 0%, transparent 24px); }
.stock-table__check { padding-left: .75rem !important; }
.stock-table__check input { transform: scale(.9); }

.stock-table__code-td { font-variant-numeric: tabular-nums; }
.stock-table__code {
  font-family: inherit;           /* sjednoceno se zbytkem — žádné mono */
  font-size: inherit;
  color: #475569;
  letter-spacing: 0;
  white-space: nowrap;
  background: transparent;
  border: 1px solid transparent;
  padding: .12rem .4rem;
  border-radius: 4px;
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.stock-table__code:hover {
  background: #f1f5f9;
  color: #0f766e;
  border-color: #e2e8f0;
}
.stock-table__code.is-copied {
  background: #dcfce7;
  color: #166534;
  border-color: #86efac;
}
.stock-table__code.is-copied::after {
  content: ' ✓';
  font-weight: 700;
}
.stock-table__name {
  color: #1a2035;
  font-weight: 500;
  text-decoration: none;
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
.stock-table__name:hover { color: #14b8a6; }
.stock-table__loc {
  display: block;
  font-size: .72rem;
  color: #94a3b8;
  margin-top: .15rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

/* Sklad receive — full-page formulář (dříve modal `skladReceiveModal`) */
.sklad-receive-page {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  overflow: hidden;
}
/* Větší nadpisy polí na samostatné stránce (vejde se víc místa než v modalu) */
.sklad-receive-page .modal__field-label {
  font-size: .85rem;
  letter-spacing: .04em;
  color: #475569;
  margin-bottom: .45rem;
}
.sklad-receive-page__body { padding: 1.25rem 1.5rem; }
.sklad-receive-page__footer {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  justify-content: flex-end;
  padding: 1rem 1.5rem;
  background: #f8fafc;
  border-top: 1px solid #e5e7eb;
}

/* Sklad view actions (?view=transfer / ?view=create-item) — placeholder s CTA + auto-open modal */
.sklad-view-action {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 1.5rem 1.75rem;
  text-align: center;
}
.sklad-view-action__intro { max-width: 600px; margin: 0 auto; }
.sklad-view-action__title { margin: 0 0 .5rem; font-size: 1.15rem; font-weight: 700; color: #0f172a; }
.sklad-view-action__desc { margin: 0 0 1.25rem; color: #475569; font-size: .92rem; line-height: 1.55; }
.sklad-view-action__cta { display: flex; gap: .5rem; justify-content: center; flex-wrap: wrap; }

/* Report view (state=low / state=expiring) — kompletní přehled napříč pobočkami */
.stock-report__head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1rem; flex-wrap: wrap;
  padding: 0 0 1rem;
}
.stock-report__head-text { flex: 1 1 320px; min-width: 0; }
.stock-report__title { font-size: 1.05rem; font-weight: 700; color: #0f172a; margin: 0 0 .25rem; }
.stock-report__meta { font-size: .85rem; color: #64748b; margin: 0; line-height: 1.5; }
/* Filter pill — zobrazí se když je aktivní branch_id filter; klik vede na zrušení filtru */
.stock-report__filter-pill {
  display: inline-flex; align-items: center; gap: .45rem;
  padding: .35rem .65rem .35rem .85rem;
  background: #eef2ff; border: 1px solid #c7d2fe; border-radius: 999px;
  font-size: .82rem; font-weight: 600; color: #3730a3;
  text-decoration: none; flex-shrink: 0;
  transition: background .15s, border-color .15s;
}
.stock-report__filter-pill:hover { background: #e0e7ff; border-color: #a5b4fc; }
.stock-report__filter-pill-x {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; border-radius: 50%;
  background: #c7d2fe; color: #4338ca;
  font-size: .9rem; line-height: 1;
}
/* Auto-fit grid — single branch = full width, 2+ branches = 2 columns, more = 3+ */
.stock-report__branches {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 900px) {
  .stock-report__branches {
    grid-template-columns: repeat(auto-fit, minmax(440px, 1fr));
  }
}
.stock-report__branch {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15,23,42,.04);
  display: flex; flex-direction: column;
}
.stock-report__branch-head {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .7rem 1rem;
  background: linear-gradient(135deg, #1a2035 0%, #3d4a65 100%);
  color: #fff;
}
.stock-report__branch-icon { font-size: 1rem; line-height: 1; }
.stock-report__branch-name { font-weight: 700; font-size: .95rem; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stock-report__branch-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.8rem;
  padding: .15rem .55rem;
  background: rgba(255,255,255,.18);
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 700;
}
.stock-report__items { list-style: none; padding: 0; margin: 0; }
/* Item layout — name top-left | qty right; meta full-width below s lepším spacingem.
 * Předtím flex `1fr auto` lépe nešlo s long product names + dlouhým meta (room/batch/exp).
 * Nový grid drží qty vertikálně zarovnaný k name a meta tečou pod ně bez squashe. */
.stock-report__item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 1rem;
  row-gap: .25rem;
  padding: .75rem 1rem;
  border-top: 1px solid #f1f5f9;
  align-items: start;
}
.stock-report__item:first-child { border-top: 0; }
.stock-report__item:hover { background: #f8fafc; }
.stock-report__item-name {
  grid-column: 1;
  grid-row: 1;
  font-weight: 600;
  color: #1a2035;
  text-decoration: none;
  font-size: .92rem;
  line-height: 1.35;
  display: block;
  overflow-wrap: anywhere;
}
.stock-report__item-name:hover { color: #14b8a6; text-decoration: underline; }
.stock-report__item-qty {
  grid-column: 2;
  grid-row: 1 / span 2;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  font-size: .92rem;
  min-width: 100px;
  text-align: right;
}
.stock-report__item-qty .is-low { color: #dc2626; font-weight: 700; }
.stock-report__item-qty small { font-size: .72rem; color: #94a3b8; line-height: 1.4; margin-top: .1rem; }
.stock-report__item-meta {
  grid-column: 1;
  grid-row: 2;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .35rem .8rem;
  font-size: .78rem;
  color: #64748b;
}
.stock-report__item-room {
  display: inline-flex; align-items: center; gap: .2rem;
  font-weight: 500;
  padding: .1rem .45rem;
  background: #f1f5f9; border-radius: 4px; color: #475569;
}
.stock-report__item-batch {
  font-family: var(--font-mono); font-size: .72rem;
  color: #6b7280;
  padding: .1rem .4rem;
  background: #fafafa; border: 1px solid #e5e7eb; border-radius: 4px;
}
.stock-report__item-exp {
  display: inline-flex; align-items: center; gap: .2rem;
  font-variant-numeric: tabular-nums;
  padding: .1rem .4rem;
  border-radius: 4px;
}
.stock-report__item-exp small { font-size: .68rem; opacity: .8; }
.stock-report__item-exp.is-soon     { background: #fef3c7; color: #92400e; font-weight: 600; }
.stock-report__item-exp.is-critical { background: #fee2e2; color: #991b1b; font-weight: 700; }
.stock-report__item-exp.is-expired  { background: #fecaca; color: #7f1d1d; font-weight: 700; text-decoration: line-through; }
/* Mobile compactness */
@media (max-width: 640px) {
  .stock-report__item { padding: .65rem .8rem; }
  .stock-report__item-name { font-size: .88rem; }
  .stock-report__item-qty { font-size: .85rem; min-width: 80px; }
  .stock-report__item-meta { gap: .25rem .55rem; font-size: .72rem; }
}

.stock-table__ean {
  display: inline-block;
  font-size: .72rem;
  color: #94a3b8;
  margin-left: .35rem;
  font-variant-numeric: tabular-nums;
  vertical-align: middle;
}
.stock-table__qty {
  font-weight: 600;
  color: #1a2035;
  font-variant-numeric: tabular-nums;
}
.stock-table__qty.is-low { color: #dc2626; }
.stock-table__exp {
  font-variant-numeric: tabular-nums;
  color: #1a2035;
}
.stock-table__exp.is-soon { color: #f59e0b; font-weight: 500; }
.stock-table__exp.is-expired { color: #dc2626; font-weight: 600; }
.stock-table__batch {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #475569;
}
.stock-table__batch-td .text-muted { color: #94a3b8; }

/* TOP — favorite toggle (per-user). Decentní zlatá hvězda v posledním sloupci, klikací. */
.stock-table__col-fav-th { text-align: center; padding-left: .35rem !important; padding-right: .35rem !important; }
.stock-table__fav-td { text-align: center; padding-left: .35rem !important; padding-right: .35rem !important; overflow: visible !important; }
.stock-table__fav {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
  font-size: 1rem;
  line-height: 1;
  color: #cbd5e1;
  cursor: pointer;
  transition: transform .12s, color .12s;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
}
.stock-table__fav:hover { color: #f59e0b; transform: scale(1.18); background: rgba(245,158,11,.08); }
.stock-table__fav:disabled { opacity: .5; cursor: wait; }
.stock-table__fav:focus-visible { outline: 2px solid #f59e0b; outline-offset: 2px; }
.stock-table__fav--on {
  color: #f59e0b;
  text-shadow: 0 0 1px rgba(245,158,11,.25);
}
.stock-table__fav--on:hover { color: #d97706; }
.stock-table tbody tr.is-favorite {
  background: linear-gradient(90deg, transparent 0%, transparent calc(100% - 4px), #fbbf24 100%);
}
.stock-table tbody tr.is-favorite:hover { background: linear-gradient(90deg, #fffbeb 0%, #fffbeb calc(100% - 4px), #f59e0b 100%); }
.stock-table .badge--alert {
  font-size: .7rem;
  padding: .05rem .3rem;
  margin-left: .25rem;
}

@media (max-width: 768px) {
  .stock-table thead { display: none; }
  .stock-table, .stock-table tbody, .stock-table tr, .stock-table td { display: block; width: 100%; }
  .stock-table tr {
    border-bottom: 1px solid #e5e7eb;
    padding: .5rem .75rem;
  }
  .stock-table tr:last-child { border-bottom: none; }
  .stock-table td {
    padding: .25rem 0;
    border: none;
  }
  .stock-table td:before {
    content: attr(data-label);
    display: inline-block;
    width: 80px;
    color: #6e7389;
    font-size: .75rem;
    text-transform: uppercase;
  }
  .stock-table__check { width: auto; padding-left: 0 !important; }
  .stock-table__check:before { display: none; }
}

/* Sidebar */
.sklad-sidebar {
  display: flex;
  flex-direction: column;
  gap: .75rem;
}
.sklad-sidebar__section {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: .85rem 1rem;
}
.sklad-sidebar__section--bulk {
  border-color: #14b8a6;
  background: #f0fdfa;
  box-shadow: 0 4px 12px rgba(20,184,166,.12);
}
.sklad-sidebar__title {
  display: block;
  font-size: .8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #475569;
  margin: 0 0 .5rem;
  cursor: default;
}
details.sklad-sidebar__section--collapsible > summary.sklad-sidebar__title {
  cursor: pointer;
  position: relative;
  list-style: none;
  padding-right: 1rem;
}
details.sklad-sidebar__section--collapsible > summary.sklad-sidebar__title::-webkit-details-marker { display: none; }
details.sklad-sidebar__section--collapsible > summary.sklad-sidebar__title::after {
  content: '▾';
  position: absolute;
  right: 0;
  top: 0;
  color: #94a3b8;
  transition: transform .15s;
}
details.sklad-sidebar__section--collapsible[open] > summary.sklad-sidebar__title::after {
  transform: rotate(180deg);
}
/* KPI mini-karty (Pod min / Brzy exp) v sidebar sekci „Pobočky a místnosti" — kompaktní */
.sklad-sidebar__kpi {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .3rem;
  margin-bottom: .55rem;
  min-width: 0;
}
.sklad-sidebar__kpi-card {
  display: flex;
  align-items: center;
  gap: .3rem;
  padding: .35rem .4rem;
  border-radius: 6px;
  background: #f8fafc;
  border: 1px solid #e5e7eb;
  text-decoration: none;
  color: #0f172a;
  transition: background .15s, border-color .15s, transform .12s;
  min-width: 0;
}
.sklad-sidebar__kpi-card:hover { background: #f1f5f9; border-color: #cbd5e1; transform: translateY(-1px); text-decoration: none; }
.sklad-sidebar__kpi-card,
.sklad-sidebar__kpi-card:hover,
.sklad-sidebar__kpi-card:focus,
.sklad-sidebar__kpi-card:active,
.sklad-sidebar__kpi-card:visited { text-decoration: none; }
.sklad-sidebar__kpi-card.is-active { background: #fff; border-color: #94a3b8; box-shadow: 0 1px 4px rgba(15,23,42,.08); }
/* Alert / warn KPI v sidebaru — sjednocený styl s neutrálním pozadím (jako lupa/filtry
 * v sklad-main toolbaru). Barevně diferencuje jen ikona (🔴 / 🟡) a hodnota; pozadí zůstává
 * neutrální (#fff/#f8fafc), na hover lehký color tint. Aktivní stav přebírá barevný tint. */
.sklad-sidebar__kpi-card--alert { background: #fff; border-color: #e5e7eb; }
.sklad-sidebar__kpi-card--alert:hover { background: #fef2f2; border-color: #fecaca; }
.sklad-sidebar__kpi-card--alert.is-active { background: #fef2f2; border-color: #fca5a5; box-shadow: 0 1px 4px rgba(220,38,38,.12); }
.sklad-sidebar__kpi-card--warn { background: #fff; border-color: #e5e7eb; }
.sklad-sidebar__kpi-card--warn:hover { background: #fffbeb; border-color: #fde68a; }
.sklad-sidebar__kpi-card--warn.is-active { background: #fffbeb; border-color: #fcd34d; box-shadow: 0 1px 4px rgba(217,119,6,.12); }
.sklad-sidebar__kpi-icon { font-size: .85rem; line-height: 1; flex-shrink: 0; }
.sklad-sidebar__kpi-body { display: flex; flex-direction: column; gap: 0; line-height: 1.05; min-width: 0; flex: 1 1 auto; }
.sklad-sidebar__kpi-label { font-size: .6rem; color: #64748b; text-transform: uppercase; letter-spacing: .03em; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sklad-sidebar__kpi-value { font-size: .95rem; font-weight: 700; color: #0f172a; }
.sklad-sidebar__kpi-card--alert .sklad-sidebar__kpi-value { color: #dc2626; }
.sklad-sidebar__kpi-card--warn  .sklad-sidebar__kpi-value { color: #d97706; }

/* Per-branch varianta — ještě kompaktnější (uvnitř branch karty, pod názvem pobočky) */
.sklad-sidebar__kpi--branch {
  margin: .35rem 0 .4rem;
  gap: .25rem;
}
.sklad-sidebar__kpi--branch .sklad-sidebar__kpi-card { padding: .25rem .35rem; gap: .25rem; border-radius: 5px; }
.sklad-sidebar__kpi--branch .sklad-sidebar__kpi-icon { font-size: .75rem; }
.sklad-sidebar__kpi--branch .sklad-sidebar__kpi-label { font-size: .58rem; letter-spacing: .02em; }
.sklad-sidebar__kpi--branch .sklad-sidebar__kpi-value { font-size: .85rem; }

/* Pobočky → místnosti hierarchie v sidebaru skladu */
.sklad-sidebar__branches { display: flex; flex-direction: column; gap: .55rem; }
.sklad-sidebar__branch { background: #fafbfc; border: 1px solid #e5e7eb; border-radius: 8px; padding: .55rem .65rem; }
.sklad-sidebar__branch-head { display: flex; align-items: center; gap: .4rem; padding-bottom: .35rem; margin-bottom: .35rem; border-bottom: 1px dashed #e2e8f0; }
.sklad-sidebar__branch-icon { font-size: .9rem; flex-shrink: 0; }
.sklad-sidebar__branch-name { font-size: .8rem; font-weight: 700; color: #0f172a; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sklad-sidebar__branch-count { font-size: .68rem; font-weight: 700; padding: .1rem .4rem; background: #e2e8f0; color: #475569; border-radius: 999px; flex-shrink: 0; }
.sklad-sidebar__list--rooms { padding-left: .25rem; }
.sklad-sidebar__list--rooms li > a { font-size: .78rem; padding: .25rem .35rem; }
.sklad-sidebar__branch-empty { font-size:.74rem; color:#94a3b8; font-style:italic; padding:.25rem .35rem; margin:0; }
/* Oblíbené — badge na tlačítku v sekci „📦 Akce" */
.sklad-sidebar__fav-badge { display:inline-block; font-size:.66rem; font-weight:700; padding:.05rem .35rem; background:#fef3c7; color:#b45309; border:1px solid #fde68a; border-radius:999px; margin-left:.25rem; vertical-align:1px; }

/* Pohyby — `<details>` s `<summary>` který vypadá jako standardní tlačítko v seznamu Akce.
   Po rozkliknutí se pod ním zobrazí indented podnabídka. */
.sklad-sidebar__btn-group { display: contents; }
.sklad-sidebar__btn-group-toggle {
  /* summary mimicry standardního tlačítka */
  list-style: none;
  cursor: pointer;
  position: relative;
  padding-right: 1.6rem; /* místo pro chevron */
}
.sklad-sidebar__btn-group-toggle::-webkit-details-marker { display: none; }
.sklad-sidebar__btn-group-toggle::after {
  content: '▸';
  position: absolute;
  right: .65rem;
  top: 50%;
  transform: translateY(-50%);
  color: #94a3b8;
  font-size: .75rem;
  transition: transform .15s;
}
.sklad-sidebar__btn-group[open] > .sklad-sidebar__btn-group-toggle::after {
  transform: translateY(-50%) rotate(90deg);
}
.sklad-sidebar__btn-group-menu {
  display: flex;
  flex-direction: column;
  gap: .3rem;
  margin: .3rem 0 .15rem .9rem;
  padding-left: .55rem;
  border-left: 2px solid #e5e7eb;
}
.sklad-sidebar__btn-group-menu .btn {
  justify-content: flex-start;
  text-align: left;
  width: 100%;
}


/* Sidebar info card — clean neutral, sjednoceně se zbytkem aplikace */
.sklad-sidebar__info { margin-top: .8rem; padding: .8rem .9rem; background: #fafbfc; border: 1px solid #e5e7eb; border-radius: 8px; }
.sklad-sidebar__info-label { display: block; font-size: .8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: #475569; margin: 0 0 .5rem; }
.sklad-sidebar__info-text { margin: 0 0 .5rem; font-size: .78rem; color: #475569; line-height: 1.5; }
.sklad-sidebar__info-link { display: inline-block; font-size: .78rem; color: #0d9488; font-weight: 600; text-decoration: none; }
.sklad-sidebar__info-link:hover { color: #0f766e; text-decoration: underline; }
.sklad-sidebar__count {
  display: inline-block;
  min-width: 1.4em;
  padding: 0 .35em;
  background: #14b8a6;
  color: #fff;
  border-radius: 4px;
  font-weight: 700;
  text-align: center;
  margin-right: .25rem;
}
.sklad-sidebar__actions {
  display: flex;
  flex-direction: column;
  gap: .35rem;
}
.sklad-sidebar__actions .btn {
  justify-content: flex-start;
  text-align: left;
  width: 100%;
}
.sklad-sidebar__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.sklad-sidebar__list li { margin: 0; }
.sklad-sidebar__list a {
  display: flex;
  align-items: center;
  gap: .4rem;
  padding: .35rem .25rem;
  border-radius: 4px;
  text-decoration: none;
  color: #475569;
  font-size: .85rem;
  transition: background .12s;
}
.sklad-sidebar__list a:hover { background: #f1f5f9; color: #1a2035; }
.sklad-sidebar__list a.is-active { background: #ecfeff; color: #14b8a6; font-weight: 500; }
.sklad-sidebar__list-count {
  margin-left: auto;
  font-size: .75rem;
  color: #94a3b8;
  font-variant-numeric: tabular-nums;
}
.sklad-sidebar__list .dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* Sklad empty state (sklad-kos prázdný apod.) — kompaktní centrovaný card */
.sklad-empty-state {
  max-width: 520px;
  margin: 1.5rem auto;
  padding: 2.5rem 1.5rem;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  text-align: center;
}
.sklad-empty-state h2 {
  margin: 0 0 .5rem;
  font-size: 1.1rem;
  color: #1a2035;
  font-weight: 600;
}
.sklad-empty-state p { margin: 0; }

/* Sklad: zakomponované Číselníky (VZP/ČSK) — kontextová reference */
.sklad-cis-wrap {
  margin-top: 1.5rem;
  padding-top: 1.25rem;
  border-top: 2px solid #e5e7eb;
}
/* Standalone view (?view=ciselniky) — wrap je top of main panel, bez border + margin */
.sklad-cis-wrap--standalone {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}
/* Větší mezera mezi sekcemi Výrobky / Výkony v standalone view */
.sklad-cis-wrap--standalone .sklad-cis-section {
  margin-bottom: 1.75rem;
}
.sklad-cis-wrap--standalone .sklad-cis-section:last-of-type {
  margin-bottom: 0;
}

/* Cis detail modal — vlastní rozložení titulku (kód + rok pill) + ČSK note banner */
.cis-detail-title {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem .75rem;
  margin: 0;
}
.cis-detail-kod {
  font-family: var(--font-mono);
  font-size: 1.25rem;
  font-weight: 700;
  letter-spacing: .02em;
}
.cis-detail-rok-pill {
  display: inline-block;
  background: rgba(13,148,136,.35);
  color: #fff;
  padding: .15rem .6rem;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.cis-detail-name {
  margin-top: .2rem !important;
  font-size: .9rem;
  line-height: 1.4;
  color: rgba(255,255,255,.85) !important;
}
.cis-detail-note {
  background: #f0fdfa;
  border: 1px solid #5eead4;
  border-radius: 8px;
  padding: .75rem 1rem;
  margin-top: 1rem;
}
.cis-detail-note__title {
  display: block;
  color: #0f766e;
  font-size: .78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
}
.cis-detail-note__text {
  margin-top: .5rem;
  color: #1a2035;
  font-size: .9rem;
  line-height: 1.65;
}
.cis-detail-note__text h3 {
  font-size: .82rem;
  font-weight: 700;
  color: #0f766e;
  margin: 1.5rem 0 .65rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  border-bottom: 1px solid #ccfbf1;
  padding-bottom: .35rem;
}
.cis-detail-note__text h3:first-child { margin-top: 0; }
.cis-detail-note__text h4 {
  font-size: .92rem;
  font-weight: 600;
  color: #0f172a;
  margin: 1rem 0 .35rem;
  letter-spacing: 0;
}
.cis-detail-note__text h4:first-child { margin-top: 0; }
.cis-detail-note__text p {
  margin: 0 0 .75rem;
  color: #334155;
}
.cis-detail-note__text p:last-child { margin-bottom: 0; }
.cis-detail-note__text ul,
.cis-detail-note__text ol {
  margin: .25rem 0 .85rem;
  padding-left: 1.4rem;
  color: #334155;
}
.cis-detail-note__text li {
  margin-bottom: .35rem;
  line-height: 1.6;
}
.cis-detail-note__text li:last-child { margin-bottom: 0; }
.cis-detail-note__text strong,
.cis-detail-note__text b {
  color: #0f172a;
  font-weight: 700;
}
.cis-detail-note__text em,
.cis-detail-note__text i { color: #475569; }

/* Disclaimer na konci detail modalu — drobné, decentní, čitelné */
.cis-detail-disclaimer {
  margin: 1.25rem 0 0;
  padding: .65rem .85rem;
  border-top: 1px dashed #e5e7eb;
  background: #f8fafc;
  border-radius: 0 0 6px 6px;
  font-size: .72rem;
  line-height: 1.55;
  color: #64748b;
  font-style: italic;
}
.cis-detail-disclaimer__label {
  font-weight: 700;
  color: #475569;
  font-style: normal;
  letter-spacing: .03em;
  text-transform: uppercase;
  font-size: .68rem;
  margin-right: .25rem;
}
.cis-detail-disclaimer strong {
  color: #475569;
  font-weight: 600;
  font-style: normal;
}

/* Klient-detail submission row — signature status badge */
.kd-sig-badge {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  padding: .1rem .45rem;
  border-radius: 4px;
  font-size: .62rem;
  font-weight: 600;
  white-space: nowrap;
  vertical-align: middle;
  letter-spacing: .01em;
}
.kd-sig-badge--await {
  background: #fef2f2;
  color: #b91c1c;
  border: 1px solid #fecaca;
  animation: kd-sig-pulse 2.4s ease-in-out infinite;
}
@keyframes kd-sig-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220, 38, 38, .25); }
  50%      { box-shadow: 0 0 0 4px rgba(220, 38, 38, 0); }
}
.kd-sig-badge--signed {
  background: #ecfdf5;
  color: #047857;
  border: 1px solid #a7f3d0;
}
.kd-sig-badge--manual {
  background: #f1f5f9;
  color: #475569;
  border: 1px solid #cbd5e1;
}

/* Modal page-mode — full-page-like (pro „Přidat první zařízení" z empty-state) */
.modal--page-mode {
  max-width: min(1100px, 95vw) !important;
  max-height: 95vh;
  width: 100%;
}
.modal--page-mode > .modal__body {
  max-height: calc(95vh - 140px);
}

/* skladActionModal — statický rozměr (modal se nemění při přepínání tabů Naskladnit/Odepsat) */
.modal-overlay#skladActionModal > .modal {
  width: min(96vw, 600px) !important;
  max-width: min(96vw, 600px) !important;
  height: min(85vh, 680px) !important;
  max-height: min(85vh, 680px) !important;
  min-height: min(85vh, 680px) !important;
  display: flex !important;
  flex-direction: column !important;
}
.modal-overlay#skladActionModal > .modal > .modal__header,
.modal-overlay#skladActionModal > .modal > .sklad-action-tabs {
  flex-shrink: 0 !important;
}
.modal-overlay#skladActionModal > .modal > form {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow: hidden !important;
}
.modal-overlay#skladActionModal > .modal > form > .modal__body {
  flex: 1 1 auto !important;
  min-height: 380px !important;
  overflow-y: auto !important;
}
.modal-overlay#skladActionModal > .modal > form > .modal__footer {
  flex-shrink: 0 !important;
}
/* Receive-only fields — když skryté, zachovat min-height aby modal nezmenšil */
#skladActionReceiveFields[style*="display:none"],
#skladActionReceiveFields[style*="display: none"] { display: none; }

/* Dashboard Sklad sekce — odstranit hover underline na všech text/link prvcích */
.dash__section--sklad a:hover,
.dash__section--sklad a:focus,
.dash__section--sklad .btn:hover,
.dash__section--sklad .dash__section-title:hover {
  text-decoration: none !important;
}
.cis-copy-btn {
  margin-right: auto;
}
/* Vyrobek detail body — section headers (h4 z renderVyrobekBody) */
#cis-detail-dialog .modal__body h4 {
  font-size: .72rem !important;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: #0d9488 !important;
  margin: 1rem 0 .35rem !important;
  font-weight: 700;
}
#cis-detail-dialog .modal__body h4:first-child { margin-top: 0 !important; }

/* Sklad pagination bar (sklad.php — info + paginace + per-page selector v jednom řádku) */
.sklad-pagination-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .75rem 1rem;
  margin-top: 1rem;
  padding: .65rem 1rem;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  font-size: .85rem;
}
.sklad-pagination-bar__info {
  color: #475569;
  font-variant-numeric: tabular-nums;
}
.sklad-pagination-bar__info strong { color: #1a2035; }
.sklad-pagination-bar__per-page {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .82rem;
}
.sklad-pagination-bar__per-page select {
  padding: .25rem .5rem;
  border: 1px solid #cbd5e1;
  border-radius: 5px;
  background: #fff;
  font-size: .85rem;
  cursor: pointer;
}
.sklad-pagination-bar__per-page select:hover { border-color: #94a3b8; }
.sklad-pagination-bar__per-page select:focus {
  outline: none;
  border-color: #14b8a6;
  box-shadow: 0 0 0 3px rgba(20,184,166,.12);
}

/* Reusable expand pattern (vzor: klient-detail anamnéza extra info) */
.client-extra-details {
  margin: .75rem 0 .25rem;
}
.client-extra-details > summary.client-extra-details__summary {
  cursor: pointer;
  user-select: none;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding: .5rem .85rem;
  border: 1px dashed #cbd5e1;
  border-radius: 6px;
  background: transparent;
  color: #475569;
  font-size: .82rem;
  font-weight: 600;
  transition: background .15s, border-color .15s, color .15s;
}
.client-extra-details > summary.client-extra-details__summary::-webkit-details-marker { display: none; }
.client-extra-details > summary.client-extra-details__summary:hover {
  background: #f8fafc;
  border-color: #94a3b8;
  color: #0f172a;
}
.client-extra-details__chevron { transition: transform .2s; }
.client-extra-details[open] .client-extra-details__chevron { transform: rotate(180deg); }
/* Tabulka uvnitř expand wrapper — bez thead, pokračuje column widths z první tabulky */
.client-extra-details .cis-table { margin-top: .5rem; }
.sklad-cis-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .5rem 1rem;
  margin-bottom: .75rem;
}
.sklad-cis-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  color: #1a2035;
}
.sklad-cis-meta {
  display: inline-flex;
  align-items: center;
  gap: .75rem;
  font-size: .82rem;
  color: #64748b;
}
.sklad-cis-counts {
  font-variant-numeric: tabular-nums;
}
.sklad-cis-section {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  margin-bottom: .5rem;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0,0,0,.05);
}
.sklad-cis-section[open] {
  /* legacy details — již nepoužíváme, ale pro safety zachováno */
}
.sklad-cis-section > summary {
  cursor: pointer;
  padding: .65rem 1rem;
  font-size: .9rem;
  font-weight: 600;
  color: #1a2035;
  list-style: none;
  position: relative;
  user-select: none;
  background: #f8fafc;
  border-bottom: 1px solid transparent;
}
.sklad-cis-section[open] > summary { border-bottom-color: #e5e7eb; }
.sklad-cis-section > summary::-webkit-details-marker { display: none; }
.sklad-cis-section > summary::after {
  content: '▾';
  position: absolute;
  right: 1rem;
  color: #94a3b8;
  transition: transform .15s;
}
.sklad-cis-section[open] > summary::after { transform: rotate(180deg); }
.sklad-cis-section > summary:hover { background: #f0fdfa; color: #14b8a6; }
.sklad-cis-section > .cis-search-bar { padding: .75rem 1rem 0; }
.sklad-cis-section > table.cis-table { margin: 0; }

/* Per-card bar (header uvnitř .sklad-cis-section--bar) — title + search */
.sklad-cis-section--bar > .sklad-cis-header {
  margin-bottom: 0;
  padding: .75rem 1rem;
  background: #f8fafc;
  border-bottom: 1px solid #e5e7eb;
  flex-wrap: nowrap;
  gap: 1rem;
}
.sklad-cis-section--bar > .sklad-cis-header .sklad-cis-title {
  font-size: 1rem;
  font-weight: 700;
  margin: 0;
  flex-shrink: 0;
}
.sklad-cis-search {
  width: 100%;
  min-width: 300px;
  max-width: 540px;
  padding: .35rem .65rem;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  font-size: .85rem;
  background: #fff;
}
.sklad-cis-search:focus {
  outline: none;
  border-color: #14b8a6;
  box-shadow: 0 0 0 3px rgba(20,184,166,.12);
}
.sklad-cis-section--bar > table.cis-table { margin: 0; }
.sklad-cis-section--bar > .client-extra-details { margin: .5rem 1rem .75rem; }
@media (max-width: 600px) {
  .sklad-cis-section--bar > .sklad-cis-header {
    flex-wrap: wrap;
  }
  .sklad-cis-search { max-width: 100%; }
}

/* Sidebar year picker (ciselniky view) */
.sklad-sidebar__year-form {
  display: flex;
  align-items: center;
  gap: .4rem;
  padding: .25rem 0;
}
.sklad-sidebar__year-label {
  font-size: .8rem;
  color: #475569;
  font-weight: 500;
}
.sklad-sidebar__year-form .cis-year-select {
  flex: 1;
  padding: .25rem .5rem;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  background: #fff;
  font-size: .85rem;
  cursor: pointer;
}

/* Sklad form pages — sjednocený formulář (sklad-prijem, sklad-odpis) */
.sklad-form-wrap {
  width: 100%;
}
.sklad-form-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 1.5rem 1.75rem;
  box-shadow: 0 2px 8px rgba(0,0,0,.04);
}
.sklad-form-card > form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 1rem 2rem;
  align-items: start;
}
.sklad-form__field--full {
  grid-column: 1 / -1;
}
@media (max-width: 768px) {
  .sklad-form-card > form { grid-template-columns: 1fr; gap: .75rem; }
  .sklad-form-card { padding: 1.25rem; }
}
.sklad-form__field {
  margin-bottom: 0;
  position: relative;
}
.sklad-form__field:last-of-type { margin-bottom: 0; }
.sklad-form__label {
  display: block;
  font-size: .85rem;
  font-weight: 600;
  color: #1a2035;
  margin-bottom: .4rem;
}
.sklad-form__step {
  display: inline-block;
  width: 1.4rem;
  height: 1.4rem;
  background: #14b8a6;
  color: #fff;
  border-radius: 50%;
  text-align: center;
  line-height: 1.4rem;
  font-size: .75rem;
  font-weight: 700;
  margin-right: .4rem;
}
.sklad-form__input {
  width: 100%;
  padding: .55rem .75rem;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  font-size: .95rem;
  background: #fff;
  color: #1a2035;
  font-family: inherit;
  box-sizing: border-box;
}
.sklad-form__input:hover { border-color: #94a3b8; }
.sklad-form__input:focus {
  outline: none;
  border-color: #14b8a6;
  box-shadow: 0 0 0 3px rgba(20,184,166,.15);
}
.sklad-form__input--narrow { max-width: 160px; }
.sklad-form__input--medium { max-width: 240px; }
.sklad-form__hint {
  font-size: .8rem;
  color: #64748b;
  margin-top: .35rem;
}
.sklad-form__hint strong { color: #1a2035; }
.sklad-form__suggestions {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  margin-top: 4px;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  max-height: 240px;
  overflow-y: auto;
  list-style: none;
  padding: 0;
  z-index: 10;
  box-shadow: 0 8px 24px rgba(0,0,0,.08);
}
.sklad-form__suggestions li {
  padding: .55rem .75rem;
  cursor: pointer;
  border-bottom: 1px solid #f1f5f9;
  font-size: .9rem;
}
.sklad-form__suggestions li:last-child { border-bottom: none; }
.sklad-form__suggestions li:hover { background: #f0fdfa; }
.sklad-form__optional > summary {
  cursor: pointer;
  color: #14b8a6;
  font-size: .9rem;
  padding: .25rem 0;
  user-select: none;
}
.sklad-form__optional > summary:hover { color: #0f766e; }
.sklad-form__optional[open] > summary { margin-bottom: .75rem; }
.sklad-form__actions {
  display: flex;
  gap: .5rem;
  justify-content: flex-end;
  margin-top: 1.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid #f1f5f9;
}
@media (max-width: 600px) {
  .sklad-form-card { padding: 1.25rem; }
  .sklad-form__actions { flex-direction: column-reverse; }
  .sklad-form__actions .btn { width: 100%; }
}

/* Absence modal — kompaktní sekce uvnitř unified modal__body */
.abs-notify {
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: .55rem .75rem;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .25rem .9rem;
  background: #fafbfc;
}
.abs-notify > legend {
  font-size: .75rem;
  font-weight: 600;
  color: #64748b;
  padding: 0 .35rem;
  background: #fff;
}
.abs-notify-row {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-size: .82rem;
  cursor: pointer;
  user-select: none;
  color: #1a2035;
}
.abs-notify-row input[type="checkbox"] {
  width: 14px;
  height: 14px;
  accent-color: #14b8a6;
  flex-shrink: 0;
}
.abs-list-toggle {
  margin-top: .25rem;
  border-top: 1px solid #f1f5f9;
  padding-top: .5rem;
}
.abs-list-toggle > summary {
  cursor: pointer;
  font-size: .8rem;
  color: #64748b;
  padding: .25rem 0;
  list-style: none;
  position: relative;
  padding-right: 1rem;
  user-select: none;
}
.abs-list-toggle > summary::-webkit-details-marker { display: none; }
.abs-list-toggle > summary::after {
  content: '▾';
  position: absolute;
  right: 0;
  color: #94a3b8;
  transition: transform .15s;
}
.abs-list-toggle[open] > summary::after { transform: rotate(180deg); }
.abs-list-toggle > summary:hover { color: #14b8a6; }
.abs-list-toggle > div { margin-top: .5rem; }

/* ═══════════════════════════════════════════════════════════════════
   ADMIN DASHBOARD — návštěvnost + systémové info + notifikace bloky
   (zavedeno 2026-05-04)
   ═══════════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────────────────────────
   DESIGN TOKENS (admin dashboard scope)
   ───────────────────────────────────────────────────────────────── */
.page-admin-dashboard {
  background: #f7f8fb;
  --adm-card-bg:        var(--color-surface);
  --adm-card-border:    var(--color-border);
  --adm-card-radius:    var(--radius-lg);
  --adm-card-shadow:    0 1px 3px rgba(15, 23, 42, .04), 0 1px 2px rgba(15, 23, 42, .03);
  --adm-card-pad:       1.15rem 1.35rem;
  --adm-divider:        #eef0f4;
  --adm-eyebrow-color:  var(--color-text-muted);
  --adm-eyebrow-size:   .72rem;
  --adm-eyebrow-track:  .05em;
  --adm-stat-color:     var(--color-text);
  --adm-row-label:      var(--color-text-muted);
  --adm-row-value:      var(--color-text);
  --adm-soft-bg:        #f8fafc;
  --adm-soft-bg-hover:  #f1f5f9;
}
.page-admin-dashboard .section-header {
  margin-bottom: .9rem;
}
.page-admin-dashboard .section-header + * { margin-top: 0; }
.page-admin-dashboard .section-header .section-title {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
}
.page-admin-dashboard .section-header + .ntf-pending-card,
.page-admin-dashboard .section-header + .adm-vis-grid,
.page-admin-dashboard .section-header + .adm-sys-grid,
.page-admin-dashboard .section-header + .adm-cards { margin-top: .25rem; }
.page-admin-dashboard .mt-6 { margin-top: 1.75rem !important; }
.page-admin-dashboard .mb-6 { margin-bottom: 1.5rem !important; }
.mb-4 { margin-bottom: 1rem; }
.page-admin-dashboard .mb-4 { margin-bottom: 1rem !important; }

/* Page header shrink na admin dashboardu */
.page-admin-dashboard .page-header {
  padding: 1.1rem 0 1.25rem;
  margin-bottom: 1.5rem;
}
.page-admin-dashboard .page-title {
  font-size: 1.5rem;
}

/* Section-header polish — modern eyebrow + badge */
.page-admin-dashboard .section-header > .text-xs.text-muted,
.page-admin-dashboard .section-header > span.text-xs {
  letter-spacing: 0;
}

/* ─────────────────────────────────────────────────────────────────
   1) NÁVŠTĚVNOST — KPI strip + trend
   ───────────────────────────────────────────────────────────────── */
.adm-vis-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: .85rem;
}
.adm-vis-card {
  background: var(--adm-card-bg);
  border: 1px solid var(--adm-card-border);
  border-radius: var(--adm-card-radius);
  padding: 1.1rem 1.2rem;
  box-shadow: var(--adm-card-shadow);
  display: flex;
  flex-direction: column;
  gap: .55rem;
  position: relative;
  transition: box-shadow .15s, transform .15s;
}
.adm-vis-card:hover { box-shadow: 0 4px 12px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .04); }
.adm-vis-card--accent {
  background: linear-gradient(135deg, var(--color-accent) 0%, #14b8a6 100%);
  color: #fff;
  border-color: transparent;
}
.adm-vis-card--accent .adm-vis-card__sub,
.adm-vis-card--accent .adm-vis-card__label,
.adm-vis-card--accent .adm-vis-card__head { color: rgba(255, 255, 255, .9); }
.adm-vis-card__head {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: var(--adm-eyebrow-size);
  text-transform: uppercase;
  letter-spacing: var(--adm-eyebrow-track);
  font-weight: 600;
  color: var(--adm-eyebrow-color);
}
.adm-vis-card__label { color: inherit; }
.adm-vis-card__dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #4ade80;
  box-shadow: 0 0 0 4px rgba(74, 222, 128, .25);
  animation: admPulse 1.8s ease-in-out infinite;
}
@keyframes admPulse {
  0%, 100% { box-shadow: 0 0 0 4px rgba(74, 222, 128, .25); }
  50%      { box-shadow: 0 0 0 7px rgba(74, 222, 128, .15); }
}
.adm-vis-card__value {
  font-size: 2rem;
  font-weight: 700;
  line-height: 1;
  color: var(--adm-stat-color);
  font-variant-numeric: tabular-nums;
}
.adm-vis-card--accent .adm-vis-card__value { color: #fff; }
.adm-vis-card__split {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}
.adm-pill {
  display: inline-flex;
  align-items: center;
  font-size: .7rem;
  padding: .2rem .55rem;
  border-radius: 999px;
  font-weight: 600;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.adm-pill--reg  { background: rgba(13, 148, 136, .12); color: var(--color-accent); }
.adm-pill--anon { background: rgba(110, 115, 137, .14); color: var(--color-text-secondary); }
.adm-vis-card--accent .adm-pill--reg  { background: rgba(255, 255, 255, .22); color: #fff; }
.adm-vis-card--accent .adm-pill--anon { background: rgba(255, 255, 255, .14); color: rgba(255, 255, 255, .92); }
.adm-vis-card__sub {
  font-size: .72rem;
  color: var(--color-text-muted);
}

/* — Trend 3 týdny (stacked) — */
.adm-vis-trend {
  display: grid;
  grid-template-columns: repeat(21, 1fr);
  gap: .3rem;
  align-items: end;
  height: 130px;
  margin-top: .25rem;
}
.adm-vis-bar {
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
  position: relative;
}
.adm-vis-bar__count {
  font-size: .65rem;
  color: var(--color-text-muted);
  font-weight: 600;
  margin-bottom: 2px;
  min-height: 12px;
  font-variant-numeric: tabular-nums;
}
.adm-vis-bar__col {
  display: flex;
  flex-direction: column-reverse;
  width: 100%;
  height: 100%;
  border-radius: 4px 4px 0 0;
  overflow: hidden;
  background: #f1f5f9;
}
.adm-vis-bar__seg { width: 100%; display: block; transition: opacity .15s; }
.adm-vis-bar__seg--reg  { background: var(--color-accent); }
.adm-vis-bar__seg--anon { background: #cbd5e1; }
.adm-vis-bar:hover .adm-vis-bar__seg { opacity: .82; }
.adm-vis-bar__label {
  font-size: .62rem;
  color: var(--color-text-muted);
  margin-top: 4px;
  font-weight: 500;
}
.adm-vis-legend {
  display: flex;
  gap: .9rem;
  font-size: .75rem;
  color: var(--color-text-muted);
}
.adm-vis-legend__item { display: inline-flex; align-items: center; gap: .35rem; }
.adm-vis-legend__sw { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.adm-vis-legend__sw--reg  { background: var(--color-accent); }
.adm-vis-legend__sw--anon { background: #cbd5e1; }

@media (max-width: 768px) {
  .adm-vis-trend { grid-template-columns: repeat(7, 1fr); height: 110px; }
  .adm-vis-bar:nth-child(3n-1),
  .adm-vis-bar:nth-child(3n-2) { display: none; }
}

/* — Trend karta hlavička — */
.adm-trend-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  flex-wrap: wrap;
  margin-bottom: .75rem;
}
.adm-trend-card__title {
  margin: 0;
  font-size: .95rem;
  font-weight: 600;
  color: var(--color-text);
}

/* ─────────────────────────────────────────────────────────────────
   2) SYSTÉMOVÉ INFORMACE — karty
   ───────────────────────────────────────────────────────────────── */
.adm-sys-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: .85rem;
}
.adm-sys-card {
  background: var(--adm-card-bg);
  border: 1px solid var(--adm-card-border);
  border-radius: var(--adm-card-radius);
  padding: 1.15rem 1.25rem;
  box-shadow: var(--adm-card-shadow);
  position: relative;
  transition: box-shadow .15s;
}
.adm-sys-card:hover { box-shadow: 0 4px 12px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .04); }
.adm-sys-card--wide { grid-column: span 2; }
@media (max-width: 768px) {
  .adm-sys-card--wide { grid-column: auto; }
}
.adm-sys-card__icon {
  position: absolute;
  top: .9rem; right: .9rem;
  width: 34px; height: 34px;
  border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(13, 148, 136, .1);
  color: var(--color-accent);
}
.adm-sys-card__title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--color-text);
  margin-bottom: 1rem;
  padding-right: 44px;
  line-height: 1.3;
}
.adm-sys-card__rows {
  display: flex;
  flex-direction: column;
}
.adm-sys-card__rows > div {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .75rem;
  font-size: .85rem;
  border-bottom: 1px dashed var(--adm-divider);
  padding: .5rem 0;
}
.adm-sys-card__rows > div:first-child { padding-top: 0; }
.adm-sys-card__rows > div:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.adm-sys-card__rows > div > span:first-child { color: var(--adm-row-label); }
.adm-sys-card__rows > div > strong {
  color: var(--adm-row-value);
  font-weight: 600;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* ─────────────────────────────────────────────────────────────────
   3) NOTIFIKACE — sjednocená karta
   ───────────────────────────────────────────────────────────────── */
.ntf-pending-card {
  background: var(--adm-card-bg);
  border: 1px solid var(--adm-card-border);
  border-radius: var(--adm-card-radius);
  box-shadow: var(--adm-card-shadow);
  overflow: hidden;
}
.ntf-pending-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding: .9rem 1.25rem;
  border-bottom: 1px solid var(--adm-divider);
  user-select: none;
  background: var(--color-surface);
}
.ntf-pending-card--clickable .ntf-pending-card__head { cursor: pointer; }
.ntf-pending-card--clickable .ntf-pending-card__head:hover { background: var(--adm-soft-bg); }
.ntf-pending-card__title {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text);
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  flex-wrap: wrap;
}
.ntf-pending-card__ico {
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 7px;
  background: rgba(13, 148, 136, .12);
  color: var(--color-accent);
  flex-shrink: 0;
}
.ntf-pending-card__hint {
  font-weight: 500;
  letter-spacing: 0;
  color: var(--color-text-muted);
}
.ntf-pending-card__head-right {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  flex-shrink: 0;
}
.ntf-pending-card__chev {
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--color-text-muted);
  cursor: pointer;
  flex-shrink: 0;
  transition: background .12s, border-color .12s;
}
.ntf-pending-card__chev:hover { background: var(--adm-soft-bg-hover); border-color: var(--color-text-muted); }
.ntf-pending-card__chev svg { transition: transform .15s; }

.ntf-pending-card__body {
  display: flex;
  flex-direction: column;
}
.ntf-pending-row {
  display: grid;
  grid-template-columns: 38px 1fr auto;
  gap: .85rem;
  align-items: center;
  padding: .75rem 1.25rem;
  border-bottom: 1px dashed var(--adm-divider);
  text-decoration: none;
  color: inherit;
  transition: background .12s;
}
.ntf-pending-row:last-child { border-bottom: none; }
.ntf-pending-row:hover { background: var(--adm-soft-bg); text-decoration: none; }
.ntf-pending-row__ico {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 9px;
  background: var(--adm-soft-bg-hover);
  font-size: 1rem;
  flex-shrink: 0;
}
.ntf-pending-row__main { min-width: 0; }
.ntf-pending-row__top {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
}
.ntf-pending-row__cat {
  font-size: .62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: var(--adm-eyebrow-track);
  padding: .15rem .5rem;
  border-radius: 999px;
  background: var(--adm-soft-bg-hover);
  color: var(--color-text-secondary);
  white-space: nowrap;
}
.ntf-pending-row__cat--danger  { background: rgba(239, 68, 68, .14);  color: #dc2626; }
.ntf-pending-row__cat--warning { background: rgba(245, 158, 11, .15); color: #d97706; }
.ntf-pending-row__cat--info    { background: rgba(59, 130, 246, .14); color: #2563eb; }
.ntf-pending-row__label {
  font-size: .9rem;
  color: var(--color-text);
  font-weight: 500;
  line-height: 1.3;
}
.ntf-pending-row__desc {
  margin-top: 3px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ntf-pending-row__time {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  flex-shrink: 0;
}

.ntf-pending-card__extra { display: contents; }
.ntf-pending-card__extra[hidden] { display: none; }

.ntf-pending-card__foot {
  display: flex;
  justify-content: center;
  padding: .65rem 1.25rem;
  border-top: 1px solid var(--adm-divider);
  background: var(--adm-soft-bg);
}
.ntf-pending-card__more {
  display: inline-flex;
  align-items: center;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  padding: .4rem .9rem;
  font-size: .82rem;
  color: var(--color-text-secondary);
  cursor: pointer;
  transition: all .12s;
}
.ntf-pending-card__more:hover {
  background: var(--color-surface);
  border-color: var(--color-accent);
  color: var(--color-accent);
}

.ntf-pending-card__empty {
  display: flex;
  align-items: center;
  gap: .85rem;
  padding: 1.4rem 1.25rem;
}
.ntf-pending-card__empty-ico {
  width: 40px; height: 40px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: rgba(34, 197, 94, .14);
  color: #16a34a;
  font-size: 1.4rem;
  font-weight: 700;
  flex-shrink: 0;
}
.ntf-pending-card__empty strong {
  display: block;
  font-size: .95rem;
  color: var(--color-text);
  margin-bottom: 2px;
}

@media (max-width: 600px) {
  .ntf-pending-row__time { font-size: .68rem; }
  .ntf-pending-card__head { flex-wrap: wrap; }
}

/* ─────────────────────────────────────────────────────────────────
   4) Sjednocení sekcí top lékařů a recent submissions na admin dashboardu
   ───────────────────────────────────────────────────────────────── */
.page-admin-dashboard .adm-cards .adm-card {
  border: 1px solid var(--adm-card-border);
  border-radius: var(--adm-card-radius);
  background: var(--adm-card-bg);
  box-shadow: var(--adm-card-shadow);
  transition: box-shadow .15s;
}
.page-admin-dashboard .adm-cards .adm-card:hover {
  box-shadow: 0 4px 12px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .04);
}

/* ═══════════════════════════════════════════════════════════════════
   ADMIN — role-permissions.php (matice rolí × oprávnění)
   ═══════════════════════════════════════════════════════════════════ */

/* Role overview cards */
.rp-roles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: .85rem;
}
.rp-role-card {
  background: #fff;
  border-radius: 12px;
  padding: 1rem 1.1rem;
  box-shadow: 0 1px 4px rgba(15, 23, 42, .05);
  display: flex;
  flex-direction: column;
  gap: .45rem;
}
.rp-role-card__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .5rem;
}
.rp-role-card__badge {
  font-size: .78rem;
  font-weight: 700;
  padding: .25rem .6rem;
  border-radius: 999px;
  background: #e2e8f0;
  color: #1e293b;
  white-space: nowrap;
}
.rp-role-card__badge--hlavni         { background: rgba(13, 148, 136, .15); color: #0d9488; }
.rp-role-card__badge--kolega_lekar   { background: rgba(59, 130, 246, .12); color: #2563eb; }
.rp-role-card__badge--kolega_recepce { background: rgba(168, 85, 247, .12); color: #7c3aed; }
.rp-role-card__badge--kolega_other   { background: rgba(100, 116, 139, .14); color: #475569; }
.rp-role-card__count {
  font-weight: 700;
  font-size: 1rem;
  color: #1e293b;
  white-space: nowrap;
}
.rp-role-card__desc {
  font-size: .82rem;
  color: #475569;
  margin: 0;
  line-height: 1.5;
}
.rp-role-card__key {
  display: inline-block;
  font-size: .68rem;
  color: #94a3b8;
  font-family: var(--font-mono);
}

/* Matice */
.rp-matrix-wrap { overflow-x: auto; margin: 0 -.4rem; padding: 0 .4rem; }
.rp-matrix {
  width: 100%;
  border-collapse: collapse;
  font-size: .9rem;
}
.rp-matrix thead tr {
  border-bottom: 2px solid #e2e8f0;
}
.rp-matrix__th-perm,
.rp-matrix__th-role {
  padding: .85rem .6rem;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #64748b;
}
.rp-matrix__th-perm { text-align: left; min-width: 280px; }
.rp-matrix__th-role { text-align: center; min-width: 130px; }
.rp-matrix__th-label { display: block; }
.rp-matrix__th-count {
  display: block;
  font-size: .65rem;
  font-weight: 500;
  color: #94a3b8;
  margin-top: 2px;
  text-transform: none;
  letter-spacing: 0;
}
.rp-matrix tbody tr {
  border-bottom: 1px solid #f1f5f9;
}
.rp-matrix tbody tr:last-child { border-bottom: none; }
.rp-matrix__perm {
  padding: .85rem .6rem;
  vertical-align: top;
}
.rp-matrix__perm-label {
  font-weight: 600;
  color: #0f172a;
  font-size: .92rem;
}
.rp-matrix__perm-desc {
  font-size: .78rem;
  color: #64748b;
  margin-top: .3rem;
  line-height: 1.5;
}
.rp-matrix__perm-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .65rem;
  align-items: center;
  margin-top: .4rem;
}
.rp-matrix__perm-meta code {
  font-size: .65rem;
  color: #94a3b8;
  font-family: var(--font-mono);
}
.rp-matrix__perm-used {
  font-size: .68rem;
  color: #94a3b8;
}
.rp-matrix__cell {
  text-align: center;
  padding: .85rem .6rem;
  vertical-align: top;
  position: relative;
}
.rp-matrix__default {
  display: block;
  font-size: .58rem;
  color: #94a3b8;
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-top: .3rem;
  font-weight: 600;
}
.rp-matrix__empty {
  text-align: center;
  padding: 2rem 1rem;
  color: #64748b;
  font-size: .9rem;
}
.rp-matrix__empty span {
  display: block;
  margin-top: .35rem;
}

/* Akce + info bloky */
.rp-actions {
  display: flex;
  gap: .6rem;
  justify-content: flex-end;
  border-top: 1px solid #f1f5f9;
  padding-top: 1rem;
  margin-top: 1.2rem;
  flex-wrap: wrap;
}
.rp-info {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.rp-info__col {
  background: #f8fafc;
  border: 1px dashed #cbd5e1;
  border-radius: 10px;
  padding: 1rem 1.1rem;
}
.rp-info__title {
  font-size: .92rem;
  margin: 0 0 .55rem;
  color: #1e293b;
  font-weight: 600;
}
.rp-info p {
  font-size: .82rem;
  color: #475569;
  margin: 0 0 .5rem;
  line-height: 1.55;
}
.rp-info p:last-child { margin-bottom: 0; }

@media (max-width: 768px) {
  .rp-info { grid-template-columns: 1fr; }
}

/* Dev rozšíření */
.rp-dev {
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: .75rem 1rem;
  font-size: .82rem;
}
.rp-dev > summary {
  cursor: pointer;
  font-weight: 600;
  color: #475569;
  list-style: none;
  position: relative;
  padding-right: 1.2rem;
}
.rp-dev > summary::-webkit-details-marker { display: none; }
.rp-dev > summary::after {
  content: '▾';
  position: absolute;
  right: 0;
  color: #94a3b8;
  transition: transform .15s;
}
.rp-dev[open] > summary::after { transform: rotate(180deg); }
.rp-dev ol {
  margin: .8rem 0 0;
  padding-left: 1.2rem;
  color: #475569;
  line-height: 1.65;
}
.rp-dev code {
  background: #fff;
  padding: 1px 6px;
  border-radius: 4px;
  border: 1px solid #e2e8f0;
  font-size: .78rem;
}

   Spec: docs/superpowers/specs/2026-05-06-kalendar-design.md §7
   ────────────────────────────────────────────────────────── */

.page-kalendar { background: #f8fafb; }
/* Kalendář full-screen layout: vyřaď padding main-content, ať se kalendar dotkne navbar+bottom */
.page-kalendar .main-content { padding: 0; }
/* Navbar v kalendáři: roztáhnout až k okrajům viewportu (sjednocený celistvý vzhled
   s full-width kalendářovým gridem). Container má jinak max-width — override. */
.page-kalendar .navbar .navbar__inner {
  width: 100%;
  max-width: none;
  padding-left: 1rem;
  padding-right: 1rem;
}
@media (max-width: 520px) {
  .page-kalendar .navbar .navbar__inner {
    padding-left: .75rem;
    padding-right: .75rem;
  }
}

/* ──────────────────────────────────────────────────────────────────────
   TYPOGRAFICKÝ SYSTÉM — UNIFIED CALENDAR FONTS (2026-05-14)

   Goal: jednotné fonty, velikosti, váhy a barvy napříč celým modulem Kalendář
   (shell + 6 modalů + tooltip + sidebar + grid).

   Type scale (rem):
     xs   = .68   — micro labels, badges, status pills, weekday DoW labels
     sm   = .78   — meta info, hints, secondary text, "muted" content
     base = .88   — body text, form labels (po vyřčení), button labels, chips
     md   = .95   — strong field values, modal subtitle alt
     lg   = 1.1   — modal titles (h3), page headers

   Weight scale:
     400 — regular (poznámky)
     500 — primary text (default)
     600 — semibold (chip names, titles, values)
     700 — bold (uppercase labels, section legends, hour markers)

   Color scale:
     strong = #0f172a — primary headers, names, key values
     text   = #334155 — body content
     muted  = #64748b — secondary, descriptions, sub-meta
     soft   = #94a3b8 — placeholders, separators, disabled
     accent = teal (--color-accent var)
   ────────────────────────────────────────────────────────────────────── */
.page-kalendar,
.kalendar,
#kalEventModal,
#kalDetailModal,
#kalSettingsModal,
#kalGlobalSettingsModal,
#kalSearchAllModal,
#kalScopeModal,
#kalNewCalModal,
#kalShareModal,
.kal-event-tooltip {
  --kal-font: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  /* Uživatelská velikost písma kalendáře (Nastavení → 3 úrovně). Násobitel, medium=1.
     Modaly mají --kal-fs-scale nastaven přímo na sobě (jsou v selektoru výše), takže
     se text modalů NEškáluje, i kdyby byly DOM potomky #kalendarApp. */
  --kal-fs-scale: 1;
  --kal-fs-xs: calc(.68rem * var(--kal-fs-scale));
  --kal-fs-sm: calc(.78rem * var(--kal-fs-scale));
  --kal-fs-base: calc(.88rem * var(--kal-fs-scale));
  --kal-fs-md: calc(.95rem * var(--kal-fs-scale));
  --kal-fs-lg: calc(1.1rem * var(--kal-fs-scale));
  --kal-c-strong: #0f172a;
  --kal-c-text: #334155;
  --kal-c-muted: #64748b;
  --kal-c-soft: #94a3b8;
  --kal-c-accent: var(--color-accent, #0d9488);
  --kal-c-accent-dk: var(--color-accent-dk, #0f766e);
}

/* Velikost písma kalendáře — 3 uživatelské úrovně (Nastavení). Medium = bez třídy.
   Mění násobitel --kal-fs-scale → škáluje všechny font tokeny --kal-fs-* naráz. */
.kalendar.kalendar--fs-small { --kal-fs-scale: 0.85; }
.kalendar.kalendar--fs-large { --kal-fs-scale: 1.2; }

/* Font family — všechny prvky napříč modulem */
.page-kalendar,
.page-kalendar *,
.kalendar,
.kalendar *,
#kalEventModal, #kalEventModal *,
#kalDetailModal, #kalDetailModal *,
#kalSettingsModal, #kalSettingsModal *,
#kalGlobalSettingsModal, #kalGlobalSettingsModal *,
#kalSearchAllModal, #kalSearchAllModal *,
#kalScopeModal, #kalScopeModal *,
#kalNewCalModal, #kalNewCalModal *,
#kalShareModal, #kalShareModal *,
.kal-event-tooltip, .kal-event-tooltip * {
  font-family: var(--kal-font);
}

/* Default body text — color + size baseline */
.page-kalendar,
.kalendar,
#kalEventModal .modal__body,
#kalDetailModal .modal__body,
#kalSettingsModal .modal__body,
#kalGlobalSettingsModal .modal__body,
#kalSearchAllModal .modal__body,
#kalScopeModal .modal__body,
#kalNewCalModal .modal__body,
#kalShareModal .modal__body {
  color: var(--kal-c-text);
}

/* Modal titles — h3 unified (lg, semibold, strong color) */
#kalEventModal .modal__title,
#kalDetailModal .modal__title,
#kalSettingsModal .modal__title,
#kalGlobalSettingsModal .modal__title,
#kalSearchAllModal .modal__title,
#kalScopeModal .modal__title,
#kalNewCalModal .modal__title,
#kalShareModal .modal__title {
  font-size: var(--kal-fs-lg);
  font-weight: 700;
  color: var(--kal-c-strong);
  margin: 0;
}
/* Modal subtitles — sm muted */
#kalEventModal .modal__subtitle,
#kalDetailModal .modal__subtitle,
#kalSettingsModal .modal__subtitle,
#kalGlobalSettingsModal .modal__subtitle,
#kalSearchAllModal .modal__subtitle,
#kalScopeModal .modal__subtitle,
#kalNewCalModal .modal__subtitle,
#kalShareModal .modal__subtitle {
  font-size: var(--kal-fs-sm);
  font-weight: 500;
  color: var(--kal-c-muted);
  margin: .25rem 0 0;
}

/* Field labels v modalech — xs uppercase bold muted */
#kalEventModal .modal__field-label,
#kalDetailModal .modal__field-label,
#kalSettingsModal .modal__field-label,
#kalGlobalSettingsModal .modal__field-label,
#kalSearchAllModal .modal__field-label,
#kalScopeModal .modal__field-label,
#kalNewCalModal .modal__field-label,
#kalShareModal .modal__field-label {
  font-size: var(--kal-fs-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--kal-c-muted);
  margin-bottom: .35rem;
}

/* Form-control v kalendářových modalech — base font + text color */
#kalEventModal .form-control,
#kalDetailModal .form-control,
#kalSettingsModal .form-control,
#kalGlobalSettingsModal .form-control,
#kalSearchAllModal .form-control,
#kalScopeModal .form-control,
#kalNewCalModal .form-control,
#kalShareModal .form-control {
  font-size: var(--kal-fs-base);
  font-weight: 500;
  color: var(--kal-c-strong);
}
#kalEventModal .form-control::placeholder,
#kalDetailModal .form-control::placeholder,
#kalGlobalSettingsModal .form-control::placeholder {
  color: var(--kal-c-soft);
  font-weight: 400;
}

/* Buttons v calendar modalech — base + semibold */
#kalEventModal .btn,
#kalDetailModal .btn,
#kalSettingsModal .btn,
#kalGlobalSettingsModal .btn,
#kalSearchAllModal .btn,
#kalScopeModal .btn,
#kalNewCalModal .btn,
#kalShareModal .btn {
  font-size: var(--kal-fs-base);
  font-weight: 600;
}
#kalEventModal .btn--sm,
#kalDetailModal .btn--sm,
#kalSettingsModal .btn--sm,
#kalGlobalSettingsModal .btn--sm,
#kalSearchAllModal .btn--sm,
#kalScopeModal .btn--sm {
  font-size: var(--kal-fs-sm);
}

/* Datetime-local pickery v různých prohlížečích používají systémový font — sjednotit. */
.kalendar input[type="datetime-local"],
.kalendar input[type="date"],
.kalendar input[type="time"],
.kalendar input[type="color"],
#kalEventModal input[type="datetime-local"],
#kalEventModal input[type="date"],
#kalEventModal input[type="time"],
#kalEventModal input[type="color"] {
  font-family: inherit;
  font-feature-settings: 'tnum' 1;
}

.kalendar {
  display: flex;
  flex-direction: column;
  /* Navbar __inner = 48px + border 1px = 49px. main-content padding pro page-kalendar = 0. */
  height: calc(100vh - 49px);
  background: #fff;
}

.kalendar__toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: .85rem 1.25rem;
  border-bottom: 1px solid #e2e8f0;
  background: #fff;
  flex-shrink: 0;
  gap: 1rem;
  flex-wrap: wrap;
}
.kalendar__toolbar-left {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex: 0 0 auto;
}
.kalendar__toolbar-right {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex: 1 1 auto;
  justify-content: flex-end;
  min-width: 0;
}
.kalendar__title {
  font-size: var(--kal-fs-lg, 1.1rem);
  font-weight: 700;
  margin: 0 0 0 .75rem;
  color: var(--kal-c-strong, #0f172a);
  letter-spacing: -.01em;
}
.kalendar__view-switcher {
  display: inline-flex;
  background: #f1f5f9;
  border-radius: 8px;
  padding: 3px;
  gap: 2px;
}
.kalendar__view-btn {
  background: transparent;
  border: 0;
  padding: .35rem .85rem;
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 600;
  color: var(--kal-c-muted, #64748b);
  border-radius: 6px;
  cursor: pointer;
  transition: all .15s;
}
.kalendar__view-btn--active {
  background: #fff;
  color: var(--kal-c-accent-dk, #0f766e);
  box-shadow: 0 1px 3px rgba(0,0,0,.08);
}
.kalendar__sidebar-toggle { display: inline-flex; }

.kalendar__main {
  display: flex;
  flex: 1;
  overflow: hidden;
}

/* Sidebar collapsed (desktop) — hide aside, grid takes full width */
.kalendar--sidebar-collapsed .kalendar__sidebar { display: none; }
.kalendar--sidebar-collapsed .kalendar__main { display: flex; }
.kalendar--sidebar-collapsed .kalendar__grid { flex: 1; }

/* Corner widget v levém horním rohu gridu — vždy viditelný (toggle + proxy actions) */
.kalendar__corner-cell {
  display: flex;
  align-items: center;
  justify-content: flex-start;   /* první ikona = leftmost */
  gap: 4px;
  padding: 2px 6px 2px 14px;     /* drobné odsazení od levého kraje stránky */
}
/* Sidebar collapsed: corner cell má jen jednu ikonu (toggle), bez stackingu — header zůstává v původní výšce. */
.kalendar__corner-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 1px solid var(--color-border, #e2e8f0);
  padding: 5px 7px;
  border-radius: 5px;
  color: var(--color-text, #1a1d2b);
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.kalendar__corner-btn:hover {
  background: rgba(13, 148, 136, .08);
  color: var(--color-accent, #0d9488);
  border-color: var(--color-accent, #0d9488);
}
/* Když je sidebar collapsed, zvýrazni toggle ještě výrazněji — uživatel vidí jasnou „show" akci */
.kalendar--sidebar-collapsed #kalSidebarToggle {
  background: var(--color-accent, #0d9488);
  color: #fff;
  border-color: var(--color-accent, #0d9488);
}
.kalendar--sidebar-collapsed #kalSidebarToggle:hover {
  background: var(--color-accent-dk, #0f766e);
  color: #fff;
}
/* Sidebar collapsed → flip chevronu uvnitř toggle ikony (stejný SVG, zrcadleno) */
.kalendar__corner-btn .kalendar__toggle-svg polyline { transition: transform .2s; }
.kalendar__corner-btn.is-collapsed .kalendar__toggle-svg {
  transform: scaleX(-1);
}

/* Legacy class fallback (Phase 4 dispatched name) */
.kalendar__sidebar-show-btn { display: none; }
.kalendar--sidebar-collapsed .kalendar__sidebar-show-btn { display: inline-flex; }

/* Měsíční pohled & agenda — corner widget floating top-left */
.kalendar__grid--month .kalendar__corner-cell,
.kalendar__grid--agenda .kalendar__corner-cell,
.kalendar__grid--year .kalendar__corner-cell {
  position: absolute;
  top: 8px;
  left: 12px;       /* posun od krajního okraje stránky */
  z-index: 4;
  pointer-events: none;
}
.kalendar__grid--month .kalendar__corner-cell .kalendar__corner-btn,
.kalendar__grid--agenda .kalendar__corner-cell .kalendar__corner-btn,
.kalendar__grid--year .kalendar__corner-cell .kalendar__corner-btn {
  pointer-events: auto;
  background: #fff;
  border: 1px solid #e2e8f0;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .06);
}
.kalendar__grid--month, .kalendar__grid--agenda, .kalendar__grid--year { position: relative; }

/* ── Rok view — 4×3 grid mini kalendářů ─────────────────────────────────── */
.kalendar__grid--year {
  overflow-y: auto;
  padding: 36px 16px 16px;  /* top: prostor pro floating corner widget */
}
.kalendar__year-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  max-width: 1400px;
  margin: 0 auto;
}
@media (max-width: 1100px) {
  .kalendar__year-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
  .kalendar__year-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .kalendar__year-grid { grid-template-columns: 1fr; }
}
.kalendar__year-month {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 10px 12px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .04);
}
.kalendar__year-month-title {
  background: transparent;
  border: 0;
  padding: 4px 0;
  font-size: .9rem;
  font-weight: 700;
  color: #0f172a;
  text-align: left;
  cursor: pointer;
  border-radius: 4px;
  transition: color .12s;
}
.kalendar__year-month-title:hover { color: var(--color-accent, #0d9488); }
.kalendar__year-dow {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
  font-size: .65rem;
  font-weight: 700;
  color: #94a3b8;
  text-transform: uppercase;
}
.kalendar__year-dow span {
  text-align: center;
  padding: 2px 0;
}
.kalendar__year-dow--weekend { color: #cbd5e1; }
.kalendar__year-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.kalendar__year-day {
  background: transparent;
  border: 0;
  padding: 0;
  aspect-ratio: 1;
  min-height: 22px;
  font-size: .72rem;
  color: #334155;
  border-radius: 4px;
  cursor: pointer;
  position: relative;
  transition: background .12s, color .12s;
}
.kalendar__year-day:hover {
  background: rgba(13, 148, 136, .12);
  color: #0d9488;
}
.kalendar__year-day--out {
  color: #cbd5e1;
}
.kalendar__year-day--weekend {
  color: #64748b;
}
.kalendar__year-day--today {
  background: #0d9488;
  color: #fff;
  font-weight: 700;
}
.kalendar__year-day--today:hover { background: #0f766e; color: #fff; }
.kalendar__year-day--has-event::after {
  content: '';
  position: absolute;
  bottom: 2px;
  left: 50%;
  width: 4px;
  height: 4px;
  background: currentColor;
  border-radius: 50%;
  transform: translateX(-50%);
  opacity: .65;
}
.kalendar__year-day--today.kalendar__year-day--has-event::after { background: #fff; opacity: 1; }
/* Ztmavení minulých dnů — aktivní jen pokud má grid třídu --dim-past (řízeno nastavením) */
.kalendar__grid--dim-past .kalendar__year-day--past { opacity: .42; }
.kalendar__grid--dim-past .kalendar__year-day--past:hover { opacity: 1; }

.kalendar__sidebar {
  width: 280px;
  border-right: 1px solid #e2e8f0;
  background: #fafbfc;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.kalendar__sidebar-body {
  flex: 1;
  overflow-y: auto;
  padding: .65rem .5rem;
}
.kalendar__sidebar-footer {
  flex-shrink: 0;
  padding: .65rem .75rem;
  background: #fff;
  border-top: 1px solid #e2e8f0;
  box-shadow: 0 -2px 8px rgba(15, 23, 42, .04);
}
.kalendar__filter-section { margin-bottom: .85rem; }
.kalendar__filter-section.is-collapsed .kalendar__filter-list { display: none; }
/* Collapse chevron — glyph ▼ se rotuje, JS pouze togguje .is-collapsed */
.kalendar__filter-collapse {
  margin-right: 6px;
  font-size: .68rem;
  line-height: 1;
}
.kalendar__filter-collapse { transition: transform .15s; }
.kalendar__filter-section.is-collapsed .kalendar__filter-collapse {
  transform: rotate(-90deg);
}
/* (zachováno: legacy SVG-rotation rule pro případ, že by kdokoliv vložil SVG ▼) */
.kalendar__filter-section.is-collapsed .kalendar__filter-iconbtn[data-action="collapse"] svg { transform: rotate(-90deg); }
.kalendar__filter-header {
  display: flex;
  align-items: center;
  gap: .35rem;
  margin: 0 0 .5rem 0;
  min-height: 24px;
}
.kalendar__filter-title {
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--kal-c-muted, #64748b);
  margin: 0;
  flex: 1;
}
.kalendar__filter-actions { display: inline-flex; gap: 2px; flex-shrink: 0; }
.kalendar__filter-iconbtn {
  background: transparent;
  border: 0;
  padding: 2px;
  border-radius: 4px;
  color: var(--color-text-muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, color .15s, transform .15s;
}
.kalendar__filter-iconbtn:hover { background: rgba(13, 148, 136, .08); color: var(--color-accent, #0d9488); }
.kalendar__filter-iconbtn[data-action="collapse"] svg { transition: transform .2s; }
.kalendar__filter-toggle {
  display: inline-flex;
  background: rgba(15, 23, 42, .04);
  border-radius: 999px;
  padding: 2px;
  flex: 1;
}
.kalendar__filter-toggle-btn {
  flex: 1;
  border: 0;
  background: transparent;
  padding: 3px 10px;
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--color-text-muted);
  border-radius: 999px;
  cursor: pointer;
  transition: background .18s, color .18s;
}
.kalendar__filter-toggle-btn--active {
  background: #fff;
  color: var(--color-accent, #0d9488);
  box-shadow: 0 1px 2px rgba(15, 23, 42, .08);
}
.kalendar__filter-toggle-btn:hover:not(.kalendar__filter-toggle-btn--active) { color: var(--color-text); }
/* Per-item settings ikona — viditelná on hover, není visually rušivá v listu */
.kalendar__filter-checkbox .kalendar__filter-item-cog {
  margin-left: auto;
  background: transparent;
  border: 0;
  padding: 2px;
  border-radius: 4px;
  color: var(--color-text-muted);
  cursor: pointer;
  display: inline-flex;
  opacity: 0;
  transition: opacity .15s, background .15s;
}
.kalendar__filter-checkbox:hover .kalendar__filter-item-cog { opacity: 1; }
.kalendar__filter-checkbox .kalendar__filter-item-cog:hover { background: rgba(13, 148, 136, .12); color: var(--color-accent, #0d9488); }

/* Pobočka karta s rozbalovacím obsahem (sidebar mode = locations) */
.kalendar__loc-card {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  margin-bottom: .3rem;
  overflow: hidden;
  font-family: inherit;
  transition: box-shadow .15s, border-color .15s;
}
.kalendar__loc-card:hover { border-color: #cbd5e1; box-shadow: 0 1px 4px rgba(15, 23, 42, .04); }
.kalendar__loc-card.is-expanded { border-color: var(--color-accent, #0d9488); box-shadow: 0 1px 6px rgba(13, 148, 136, .07); }
.kalendar__loc-card-header {
  display: flex;
  align-items: center;
  gap: .35rem;
  padding: .35rem .45rem;
  cursor: pointer;
  user-select: none;
  background: linear-gradient(135deg, #fafbfc 0%, #fff 60%);
  border-bottom: 1px solid transparent;
  font-family: inherit;
  transition: background .15s, border-color .15s;
}
.kalendar__loc-card.is-expanded .kalendar__loc-card-header {
  background: linear-gradient(135deg, #f0fdfa 0%, #fff 70%);
  border-bottom-color: #e2e8f0;
}
.kalendar__loc-card-toggle {
  background: transparent;
  border: 0;
  padding: 1px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text-muted);
  cursor: pointer;
  border-radius: 3px;
  flex-shrink: 0;
  font-family: inherit;
  transition: transform .2s, color .15s;
}
.kalendar__loc-card-toggle:hover { color: var(--color-accent, #0d9488); }
.kalendar__loc-card.is-expanded .kalendar__loc-card-toggle { transform: rotate(90deg); color: var(--color-accent, #0d9488); }
.kalendar__loc-card-master { margin: 0; flex-shrink: 0; cursor: pointer; }
.kalendar__loc-card-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0;
  min-width: 0;
  line-height: 1.15;
  font-family: inherit;
}
.kalendar__loc-card-name {
  font-family: inherit;
  font-size: .78rem;
  font-weight: 600;
  color: var(--color-text);
  word-break: break-word;
  overflow-wrap: anywhere;
  display: block;
  letter-spacing: -.005em;
}
.kalendar__loc-card-meta {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .25rem;
  font-family: inherit;
  font-size: .62rem;
  color: var(--color-text-muted);
  margin-top: 1px;
  line-height: 1.1;
}
.kalendar__loc-card-branch {
  font-family: inherit;
  font-size: .6rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .02em;
  color: var(--color-accent, #0d9488);
  background: #f0fdfa;
  padding: 0 .3rem;
  border-radius: 999px;
  border: 1px solid #ccfbf1;
  white-space: nowrap;
  line-height: 1.4;
}
.kalendar__loc-card-count {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.kalendar__loc-card.is-expanded .kalendar__loc-card-count { opacity: .6; }
.kalendar__loc-card-body {
  display: none;
  padding: .2rem .45rem .35rem 1.45rem;
  background: #fafbfc;
}
.kalendar__loc-card.is-expanded .kalendar__loc-card-body { display: block; }
.kalendar__loc-card-body .kalendar__filter-checkbox {
  font-family: inherit;
  font-size: .76rem;
  padding: .12rem .3rem;
}
.kalendar__loc-card-empty {
  font-size: .75rem;
  color: var(--color-text-muted);
  font-style: italic;
  padding: .25rem .35rem;
}
.kalendar__filter-list {
  display: flex;
  flex-direction: column;
  gap: .25rem;
}
.kalendar__filter-checkbox,
.kalendar__filter-radio {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .85rem;
  color: var(--color-text);
  cursor: pointer;
  padding: .25rem .35rem;
  border-radius: 4px;
  transition: background .15s;
}
.kalendar__filter-checkbox:hover,
.kalendar__filter-radio:hover { background: #fff; }
.kalendar__filter-checkbox input,
.kalendar__filter-radio input { margin: 0; }
.kalendar__color-dot {
  display: inline-block;
  width: 10px; height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}

.kalendar__grid {
  flex: 1;
  overflow: auto;
  background: #fff;
  position: relative;
}
.kalendar__loading,
.kalendar__empty {
  padding: 3rem 1.5rem;
  text-align: center;
  color: var(--color-text-muted);
  font-size: .9rem;
}

/* Month view */
.kalendar__grid--month { display: flex; flex-direction: column; }
.kalendar__month-header,
.kalendar__month-cells {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
}
.kalendar__month-header {
  border-bottom: 1px solid #cbd5e1;
  background: #f8fafb;
  position: sticky;
  top: 0;
  z-index: 11;
}
.kalendar__month-dow {
  padding: .55rem .5rem;
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--kal-c-muted, #64748b);
  text-align: center;
  border-right: 1px solid #e2e8f0;
}
.kalendar__month-dow:last-child { border-right: 0; }
.kalendar__month-dow--weekend { color: var(--kal-c-soft, #94a3b8); }
/* Cells fill remaining viewport equally — 6 row month grid s flex parent */
.kalendar__month-cells {
  flex: 1;
  grid-auto-rows: minmax(110px, 1fr);
}
.kalendar__month-cell {
  border-right: 1px solid #e2e8f0;
  border-bottom: 1px solid #e2e8f0;
  min-height: 110px;
  padding: .35rem;
  cursor: pointer;
  position: relative;
  transition: background .15s;
  overflow: hidden;          /* clipping pro přetékající event chipy */
  display: flex;
  flex-direction: column;
}
/* Pravý sloupec & spodní řada: bez border (kraj gridu) */
.kalendar__month-cell:nth-child(7n) { border-right: 0; }
.kalendar__month-cell:nth-last-child(-n+7) { border-bottom: 0; }
.kalendar__month-cell:hover { background: #f8fafb; }
.kalendar__month-cell--outside { background: #fafbfc; opacity: .55; }
.kalendar__month-cell--today {
  background: #eff6ff;
  box-shadow: inset 0 0 0 2px var(--color-primary, #3a405a);
}
.kalendar__month-cell--weekend { background: #fafbfc; }
.kalendar__month-num {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 700;
  color: var(--kal-c-strong, #0f172a);
  margin-bottom: .25rem;
  flex: 0 0 auto;
}
.kalendar__month-cell--today .kalendar__month-num {
  color: var(--kal-c-accent-dk, #0f766e);
  font-weight: 800;
}
.kalendar__month-events {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}
.kalendar__month-more {
  background: transparent;
  border: 0;
  padding: 2px 4px;
  font-size: .7rem;
  color: var(--color-primary);
  cursor: pointer;
  text-align: left;
}

/* Event chip */
.kalendar__event {
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  text-align: left;
  gap: 4px;
  padding: 2px 6px;
  border-left: 3px solid #2563eb;
  background: rgba(37,99,235,.08);
  color: #1e40af;
  border-radius: 3px;
  font-size: var(--kal-fs-sm, .78rem);
  font-weight: 500;
  line-height: 1.3;
  cursor: pointer;
  overflow: hidden;
  white-space: nowrap;
  transition: filter .15s;
}
/* Content wrapper — trunkne s ellipsis, ikona zůstává viditelná vpravo */
.kalendar__event-content {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: block;
}
/* Type icon — vždy viditelný v pravém okraji, neskrývá se přes ellipsis */
.kalendar__event-typeicon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  opacity: .7;
  margin-left: 2px;
}
.kalendar__event-typeicon svg {
  width: 12px;
  height: 12px;
  display: block;
}
.kalendar__event:hover .kalendar__event-typeicon { opacity: 1; }
.kalendar__event:hover { filter: brightness(.94); }
.kalendar__event--cancelled { text-decoration: line-through; opacity: .55; }
.kalendar__event--completed { opacity: .7; }
/* Day-view block event — reálná výška dle trvání, wrap titulku pokud je dost místa.
   Obsah zarovnán nahoru-vlevo, ikona vpravo nahoře (přes typeicon align-self). */
.kalendar__event--block {
  align-items: flex-start;
  justify-content: flex-start;
  text-align: left;
  flex-direction: row;
  padding: 3px 7px;
  white-space: normal;
}
.kalendar__event--block .kalendar__event-content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  text-align: left;
  gap: 0;
  white-space: normal;
  min-width: 0;
  flex: 1;
}
.kalendar__event--block .kalendar__event-time {
  font-size: calc(.66rem * var(--kal-fs-scale, 1));
  font-weight: 600;
  opacity: .85;
  line-height: 1.15;
  white-space: nowrap;
}
.kalendar__event--block .kalendar__event-title {
  font-size: calc(.78rem * var(--kal-fs-scale, 1));
  font-weight: 600;
  line-height: 1.2;
  white-space: normal;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
/* Zúžený chip při overlap (více sloupců v clusteru) — menší font, kompaktní padding */
.kalendar__event--narrow {
  padding: 2px 5px;
  font-size: calc(.72rem * var(--kal-fs-scale, 1));
}
.kalendar__event--narrow.kalendar__event--block .kalendar__event-time {
  font-size: calc(.62rem * var(--kal-fs-scale, 1));
}
.kalendar__event--narrow.kalendar__event--block .kalendar__event-title {
  font-size: calc(.72rem * var(--kal-fs-scale, 1));
  -webkit-line-clamp: 2;
}
/* Block chip v day/week gridu — popis VŽDY zarovnaný vlevo nahoře.
   Přebíjí align-items:center z .kalendar__grid--day/--week .kalendar__event
   (specificita 0,3,0 > 0,2,0), jinak je obsah vysokého chipu svisle vycentrovaný.
   z-index: kaskádový překryv — JS zapisuje pořadí přes var(--kal-cascade-z),
   pozdější sloupce navrchu; přebíjí z-index:1 z grid pravidla. */
.kalendar__grid--day  .kalendar__event.kalendar__event--block,
.kalendar__grid--week .kalendar__event.kalendar__event--block {
  align-items: flex-start;
  z-index: var(--kal-cascade-z, 1);
}
/* Hover-to-front — překrytá kaskádová událost vyskočí plně dopředu (čitelnost + klik). */
.kalendar__grid--day  .kalendar__event.kalendar__event--block:hover,
.kalendar__grid--week .kalendar__event.kalendar__event--block:hover {
  z-index: 60;
}

/* ── Překryvový obal (.kalendar__ovl) — kaskáda ⇄ sloupce ────────────────
   placeProportionalEvents() obaluje shluk 2–6 překrývajících událostí.
   Chipy uvnitř NEmají inline left/width — řídí je tyto proměnné, takže
   ⤢ tlačítko přepne kaskádu na sloupce pouhou třídou .is-expanded.
   --ce-* = cascade (kaskáda), --co-* = columns (sloupce). */
.kalendar__ovl {
  position: absolute;
  left: 0;
  right: 0;
}
/* Grid wrap layout pro extrémně husté shluky (10+ překryvů) — chipy do mřížky
   10 × N řádků místo úzkých nepřečtitelných sloupců. Cluster vertikálně přesáhne
   do dalších hodin (jako velký event), čitelnost > 1-řádkový natural layout. */
.kalendar__ovl--grid {
  z-index: 4;  /* nad sloty, pod modaly */
}
.kalendar__ovl--grid .kalendar__event--block {
  position: static !important;
  left: auto !important;
  width: auto !important;
  height: auto !important;
  top: auto !important;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .08);
}
.kalendar__ovl--grid .kalendar__event--block:hover {
  z-index: 60;
  box-shadow: 0 4px 14px rgba(15, 23, 42, .22);
  transform: scale(1.02);
}
.kalendar__ovl .kalendar__event--block {
  left: var(--ce-l);
  width: var(--ce-w);
  transition: left .14s ease, width .14s ease, box-shadow .14s ease;
}
.kalendar__ovl.is-expanded .kalendar__event--block {
  left: var(--co-l);
  width: var(--co-w);
}
/* Průchodnost kaskády myší — „dopředu" řídí JS (placeProportionalEvents → mousemove
   dle pozice kurzoru) třídou .kal-peek, NE :hover. Bez toho fronted široká karta
   (nízký index) překryje ostatní a nešlo by na ně najet ve směru zleva doprava. */
.kalendar__ovl .kalendar__event--block:hover {
  z-index: var(--kal-cascade-z, 1) !important;
}
.kalendar__ovl .kalendar__event--block.kal-peek {
  z-index: 60 !important;
}
/* Roztažení aktivní (hover / peek) karty na čitelnou šířku — platí pro kaskádu
   (2–6, --ce-w = kaskádová šířka) i sloupce (7+, --ce-w = šířka sloupce).
   max(nativní, min(260px,100%)) nikdy nezúží kartu, tenké proužky roztáhne až
   na 260px a min(...,100%) drží roztažení uvnitř denního sloupce (week view).
   :not(.is-expanded) — v ručně rozbaleném kaskádovém shluku (sloupce přes ⤢
   tlačítko) si ponechá --co-w, aby roztažení nepřebilo zvolený layout. */
.kalendar__ovl:not(.is-expanded) .kalendar__event--block.kal-peek,
.kalendar__ovl:not(.is-expanded) .kalendar__event--block:hover {
  z-index: 60 !important;
  width: max(var(--ce-w, 100%), min(260px, 100%)) !important;
  box-shadow: 0 4px 14px rgba(15, 23, 42, .22);
}
/* ⤢ tlačítko — rozbalit/sbalit překryv do sloupců */
.kalendar__ovl-toggle {
  position: absolute;
  top: 2px;
  right: 4px;
  z-index: 61;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  padding: 0;
  border: none;
  border-radius: 5px;
  cursor: pointer;
  color: #fff;
  background: rgba(15, 23, 42, .55);
  opacity: .6;
  transition: opacity .12s ease, background .12s ease;
}
.kalendar__ovl-toggle:hover {
  opacity: 1;
  background: rgba(15, 23, 42, .82);
}
.kalendar__ovl.is-expanded .kalendar__ovl-toggle {
  background: #0d9488;
  opacity: 1;
}

/* POZOR: expand chipu se neaktivuje na :hover (immediate), ale až přes class
   .kalendar__event--tooltip-target — kterou nasadí JS současně se zobrazením
   300ms custom tooltipu. Tím je expand + dim mode + tooltip vždy synchronizováno. */
/* Typeicon v block módu — fixní pozice vpravo nahoře, nezvětšuje řádek */
.kalendar__event--block .kalendar__event-typeicon {
  align-self: flex-start;
  margin-top: 1px;
}
/* Past event: událost už proběhla (ends_at < now) — odbarvit, ať vidíme oddech od aktuálních */
.kalendar__event--past {
  opacity: .5;
  filter: saturate(.55);
}
.kalendar__event--past:hover {
  opacity: .85;
  filter: saturate(.85);
}

/* ── Drag&drop + resize support (Week/Day view) ───────────────────────────── */
/* Draggable chip: grab cursor a hint na hover */
.kalendar__event--draggable {
  cursor: grab;
}
.kalendar__event--draggable:active {
  cursor: grabbing;
}
/* Aktivní drag — visual feedback */
.kalendar__event--draggable.is-dragging {
  opacity: .35;
  cursor: grabbing;
  pointer-events: none;
}
/* Resize — kartička zůstává plně viditelná a jde dopředu, aby bylo vidět
   živé roztahování pod úchytkou (setupEventDragDrop → mousemove přepisuje top/height). */
.kalendar__event--draggable.is-resizing {
  cursor: ns-resize;
  pointer-events: none;
  z-index: 60 !important;
  box-shadow: 0 4px 14px rgba(15, 23, 42, .28);
}
/* Move náhled — klon události v cílovém slotu mřížky (setupEventDragDrop). Nad
   vším ostatním, neklikatelný (pointer-events:none — jinak by rušil elementsFromPoint). */
.kalendar__event--moveproxy {
  z-index: 70 !important;
  pointer-events: none;
  opacity: .95;
  box-shadow: 0 8px 22px rgba(15, 23, 42, .35);
}
/* Resize handles — horní pro úpravu začátku, dolní pro úpravu konce.
   Logika je delta-based: chytíš úchytku, výchozí hodnota = uložený čas,
   tažením přidáváš/ubíráš minuty (snap 15 min). */
.kalendar__event-resize {
  position: absolute;
  left: 0;
  right: 0;
  height: 5px;
  cursor: ns-resize;
  background: transparent;
  z-index: 2;
  transition: background .12s;
}
.kalendar__event-resize--top {
  top: 0;
  border-radius: 4px 4px 0 0;
}
.kalendar__event-resize--bottom {
  bottom: 0;
  border-radius: 0 0 4px 4px;
}
.kalendar__event--draggable:hover .kalendar__event-resize {
  background: rgba(15, 23, 42, .14);
}
.kalendar__event-resize:hover {
  background: rgba(13, 148, 136, .35) !important;
}

/* Drop target highlight — daycol pod kurzorem během dragu */
.kalendar__week-daycol.is-drop-target,
.kalendar__day-daycol.is-drop-target {
  background: rgba(13, 148, 136, .06);
  outline: 2px dashed rgba(13, 148, 136, .45);
  outline-offset: -2px;
}

/* Ghost label — plovoucí indikátor cílového času během dragu */
.kalendar__drag-ghost {
  position: fixed;
  z-index: 99998;
  background: #0f172a;
  color: #fff;
  font-size: .78rem;
  font-weight: 700;
  padding: .35rem .65rem;
  border-radius: 6px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, .25);
  pointer-events: none;
  font-family: var(--font-mono);
  white-space: nowrap;
  letter-spacing: .02em;
}
.kalendar__event-time { font-weight: 700; margin-right: 4px; }
.kalendar__event-title { font-weight: 600; }
/* Procedure-specific emoji v pravém typeicon slotu (block + procedure_type).
   Nahradí SVG ikonu pro Výkon eventy — jediná ikona, vpravo. */
.kalendar__event-typeicon--proc { opacity: 1; margin-left: 4px; }
.kalendar__event-typeicon-emoji {
  font-size: 13px;
  line-height: 1;
  display: inline-block;
  filter: saturate(1.05);
}
/* Daylist popup row — ikona vpravo */
.kalendar__daylist-row-icon {
  flex: 0 0 auto;
  margin-left: auto;
  padding-left: .5rem;
  font-size: 1.05rem;
  line-height: 1;
  opacity: .9;
}
.kalendar__grid--week .kalendar__event,
.kalendar__grid--day .kalendar__event {
  box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
}
.kalendar__grid--week .kalendar__event:hover,
.kalendar__grid--day .kalendar__event:hover {
  box-shadow: 0 2px 4px rgba(0, 0, 0, .12);
}
/* (Expand chipu při aktivním tooltipu odstraněn — chip se při hoveru nemodifikuje,
   jen se objeví custom tooltip card.) */
.kalendar__grid--week .kalendar__event .kalendar__event-title,
.kalendar__grid--day .kalendar__event .kalendar__event-title {
  font-weight: 700;
}
.kalendar__grid--agenda .kalendar__event-title {
  font-weight: 700;
}

/* Week view */
.kalendar__grid--week { display: flex; flex-direction: column; }
.kalendar__week-header {
  display: grid;
  grid-template-columns: 60px repeat(7, 1fr);
  border-bottom: 1px solid #e2e8f0;
  background: #f8fafb;
  position: sticky;
  top: 0;
  z-index: 12;
}
.kalendar__week-day-hdr {
  padding: .35rem .5rem;
  text-align: center;
  border-left: 1px solid #cbd5e1;
  line-height: 1.15;
}
.kalendar__week-day-hdr--today { background: #eff6ff; }
.kalendar__week-dow {
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--kal-c-muted, #64748b);
}
.kalendar__week-num {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 700;
  color: var(--kal-c-strong, #0f172a);
}
.kalendar__week-day-hdr--today .kalendar__week-num { color: var(--kal-c-accent-dk, #0f766e); }

/* ── Lékaři mode (kalendar__grid--doctors) ──
   Layout: 64px hourCol + N × dayCount sloupců. Dvojitý header:
   1. řádek = lékaři (jeden header span = dayCount sloupců)
   2. řádek = dny (Den + Datum, 2 řádky textu, sjednocené pro Day i Week)
   Při mnoha sloupcích (6+ lékařů × 7 dní) je grid horizontálně scrollable,
   hourCol vlevo je sticky aby zůstal viditelný.
*/
.kalendar__grid--doctors {
  overflow-x: auto;  /* horizontal scroll, pokud sloupce přerostou viewport */
}
.kalendar__grid--doctors .kalendar__doctors-header-row {
  background: #fff;
  border-bottom: 1px solid #e2e8f0;
  position: sticky;
  top: 0;
  z-index: 13;
  min-height: 38px;
}
.kalendar__grid--doctors .kalendar__doctors-doc-hdr {
  padding: .45rem .6rem;
  text-align: center;
  font-weight: 700;
  font-size: var(--kal-fs-base, .9rem);
  color: var(--kal-c-strong, #0f172a);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  min-height: 36px;
}
.kalendar__grid--doctors .kalendar__doctors-doc-hdr:not(.kalendar__doctors-doc-hdr--first) {
  border-left: 2px solid #cbd5e1;
}
.kalendar__grid--doctors .kalendar__doctors-doc-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: 0 0 0 1px rgba(0,0,0,.08);
}
.kalendar__grid--doctors .kalendar__doctors-doc-name {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kalendar__grid--doctors .kalendar__doctors-days-row {
  background: #f8fafb;
  position: sticky;
  top: 38px;   /* match header row height */
  z-index: 12;
  min-height: 38px;
  border-bottom: 1px solid #e2e8f0;
}
.kalendar__grid--doctors .kalendar__doctors-day-hdr {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1px;
  padding: .25rem .35rem;
  line-height: 1.15;
  border-left: 1px solid #e2e8f0;
}
.kalendar__grid--doctors .kalendar__doctors-day-hdr--doc-start {
  border-left: 2px solid #cbd5e1;
}
.kalendar__grid--doctors .kalendar__doctors-day-dow {
  font-size: calc(.68rem * var(--kal-fs-scale, 1));
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--kal-c-muted, #64748b);
}
.kalendar__grid--doctors .kalendar__doctors-day-date {
  font-size: calc(.82rem * var(--kal-fs-scale, 1));
  font-weight: 700;
  color: var(--kal-c-strong, #0f172a);
}
.kalendar__grid--doctors .kalendar__week-day-hdr--today .kalendar__doctors-day-dow,
.kalendar__grid--doctors .kalendar__week-day-hdr--today .kalendar__doctors-day-date {
  color: var(--kal-c-accent-dk, #0f766e);
}
.kalendar__grid--doctors .kalendar__week-day-hdr--today {
  background: #ecfdf5;
}

/* Body grid: sticky hourCol (1. column) při horizontálním scrollu */
.kalendar__grid--doctors .kalendar__week-body {
  position: relative;
}
.kalendar__grid--doctors .kalendar__week-hourcol {
  position: sticky;
  left: 0;
  z-index: 11;
  background: #fff;
  border-right: 1px solid #e2e8f0;
}
.kalendar__grid--doctors .kalendar__doctors-header-row > :first-child,
.kalendar__grid--doctors .kalendar__doctors-days-row > :first-child {
  position: sticky;
  left: 0;
  z-index: 14;
  background: inherit;
}

/* Vizuální separátor "doc-start" daycols — kromě levého insetu (JS) i background tint */
.kalendar__grid--doctors .kalendar__doctors-daycol--doc-start {
  border-left: 1px solid rgba(0,0,0,.05);
}
.kalendar__week-allday {
  display: grid;
  grid-template-columns: 60px repeat(7, 1fr);
  grid-auto-rows: minmax(28px, auto);   /* min 28, auto-expand pokud více chipů */
  align-items: stretch;
  border-bottom: 2px solid #e2e8f0;
  background: #fdfdfe;
  position: sticky;
  top: var(--kal-header-height, 56px);
  z-index: 11;
  box-shadow: 0 2px 4px rgba(15, 23, 42, .06);
}
.kalendar__week-allday-col {
  border-left: 1px solid #cbd5e1;
  padding: 3px;
  min-height: 28px;
  display: block;
  min-width: 0;              /* CSS Grid: dovol col shrink na track width */
  overflow: hidden;          /* clip horizontální spill (chipy s nowrap titlem) */
}
.kalendar__week-allday-col > * + * { margin-top: 2px; }
/* All-day chip — override default + week/day grid styling pro správný containment */
.kalendar__grid--week .kalendar__week-allday-col .kalendar__event,
.kalendar__grid--day  .kalendar__day-allday-col  .kalendar__event {
  position: static !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  height: auto !important;
  display: flex !important;            /* flex pro content + typeicon layout */
  align-items: center !important;
  gap: 4px;
  width: 100%;                         /* fix na col content width */
  max-width: 100%;
  min-width: 0;                        /* fix pro flex parent kontext */
  padding: 3px 8px;
  font-size: .75rem;
  font-weight: 600;
  line-height: 1.3;
  border-radius: 4px;
  white-space: nowrap;
  overflow: hidden;
  box-sizing: border-box;
}
.kalendar__grid--week .kalendar__week-allday-col .kalendar__event-title,
.kalendar__grid--day  .kalendar__day-allday-col  .kalendar__event-title {
  display: inline !important;          /* override flex: 1 */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 600;
}
.kalendar__event--allday-more {
  position: static !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  height: auto !important;
  font-size: .68rem;
  padding: 2px 6px;
  width: auto;
  flex: 0 0 auto;
  box-sizing: border-box;
}
.kalendar__week-body {
  display: grid;
  grid-template-columns: 60px repeat(7, 1fr);
  position: relative;
  flex: 1;
}
/* Týdenní/denní mřížka: na úzkých zařízeních (Fold ~280px, malé telefony) nesmršťovat
   7 sloupců na nečitelnou šířku — drž min-width a nech rodiče (.kalendar__grid overflow:auto) scrollovat. */
@media (max-width: 700px) {
  .kalendar__week-header,
  .kalendar__week-body { min-width: 620px; }
}
.kalendar__week-hourcol {
  border-right: 1px solid #cbd5e1;
  background: #f8fafc;
}
.kalendar__week-hour-label {
  padding: .25rem .5rem .25rem .35rem;
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 700;
  color: var(--kal-c-text, #334155);
  text-align: right;
  border-bottom: 1px solid #e2e8f0;
  font-variant-numeric: tabular-nums;
  letter-spacing: -.01em;
}
.kalendar__week-daycol {
  border-left: 1px solid #cbd5e1;
  position: relative;
}
.kalendar__week-daycol--today { background: #eff6ff77; }
.kalendar__week-slot {
  position: absolute;
  left: 0; right: 0;
  border-bottom: 1px solid #e2e8f0;
  cursor: pointer;
  transition: background .15s;
}
.kalendar__week-slot:hover { background: #f1f5f9; }
/* Sub-hodinová mřížka (30 min) — slabší pomocná linka uvnitř každé hodiny */
.kalendar__week-slot::before {
  content: '';
  position: absolute;
  left: 0; right: 0;
  top: 50%;
  border-top: 1px dashed #edf1f6;
  pointer-events: none;
}
.kalendar__grid--week .kalendar__event {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: calc(.72rem * var(--kal-fs-scale, 1));
  padding: 3px 6px;
  border-radius: 4px;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 6px;
  line-height: 1.2;
}
.kalendar__grid--week .kalendar__event:hover { z-index: 2; }
.kalendar__grid--week .kalendar__event .kalendar__event-time {
  flex-shrink: 0;
  font-weight: 700;
}
.kalendar__grid--week .kalendar__event .kalendar__event-title {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Agenda view */
/* Top padding 3rem aby corner-cell (#kalSidebarToggle absolutně na top:8 left:12, ~30 px výška)
   nepřekrýval první "Pondělí, 14.5.2026" datum titulek. */
.kalendar__grid--agenda { padding: 3rem 1.25rem 1rem; }
.kalendar__agenda-day { margin-bottom: 1.5rem; }
.kalendar__agenda-date {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--kal-c-muted, #64748b);
  margin: 0 0 .55rem 0;
  padding-bottom: .25rem;
  border-bottom: 1px solid #e2e8f0;
}
.kalendar__agenda-date--today { color: var(--kal-c-accent-dk, #0f766e); }
.kalendar__agenda-card {
  display: flex;
  align-items: center;
  gap: .55rem;
  white-space: normal;
  margin-bottom: .35rem;
  padding: .55rem .75rem;
  font-size: .85rem;
  border-radius: 6px;
}
.kalendar__agenda-card .kalendar__event-content {
  white-space: normal;
}
.kalendar__agenda-card .kalendar__event-time {
  display: block;
  font-size: .72rem;
  font-weight: 700;
  margin-bottom: 2px;
}
.kalendar__agenda-card .kalendar__event-typeicon svg {
  width: 14px;
  height: 14px;
}

/* Modal: type tabs */
.kal-modal__type-tabs {
  display: flex;
  gap: 4px;
  background: #f1f5f9;
  padding: 3px;
  border-radius: 8px;
}

/* Modal helper: two-column grid pro páry polí (čas, kalendář+lékař…) */
.kal-modal__grid-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .75rem;
}
@media (max-width: 540px) {
  .kal-modal__grid-2 { grid-template-columns: 1fr; }
}

/* Řádek s inline checkboxy + color pickerem */
.kal-modal__grid-color {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem .25rem;
  padding: .55rem .75rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
}
.kal-modal__inline-check {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-size: .85rem;
  font-weight: 500;
  color: #334155;
  cursor: pointer;
  user-select: none;
}
.kal-modal__inline-check input[type="checkbox"] {
  width: 16px; height: 16px; margin: 0;
  accent-color: var(--color-accent, #0d9488);
  cursor: pointer;
}
/* ── Toolbar search — input + live dropdown ── */
.kalendar__search {
  position: relative;
  display: inline-flex;
  align-items: center;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  padding: 0 .35rem 0 .55rem;
  flex: 1 1 auto;
  min-width: 240px;
}
.kalendar__search:focus-within {
  border-color: var(--color-accent, #0d9488);
  box-shadow: 0 0 0 3px rgba(13,148,136,.1);
}
.kalendar__search-icon {
  color: #94a3b8;
  flex: 0 0 auto;
}
.kalendar__search-input {
  flex: 1 1 auto;
  border: 0;
  outline: none;
  padding: .35rem .45rem;
  font-size: var(--kal-fs-base, .88rem);
  color: var(--kal-c-strong, #0f172a);
  background: transparent;
  min-width: 0;
}
.kalendar__search-input::placeholder { color: var(--kal-c-soft, #94a3b8); font-weight: 400; }
.kalendar__search-input::-webkit-search-cancel-button { display: none; }
.kalendar__search-clear {
  flex: 0 0 auto;
  width: 22px; height: 22px;
  border: 0;
  background: transparent;
  color: #94a3b8;
  border-radius: 50%;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
}
.kalendar__search-clear:hover { background: #f1f5f9; color: #475569; }
.kalendar__search-results {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(15,23,42,.12);
  z-index: 200;
  max-height: 420px;
  overflow-y: auto;
  min-width: 340px;
}
.kalendar__search-empty {
  padding: 1rem;
  text-align: center;
  font-size: var(--kal-fs-sm, .78rem);
  color: var(--kal-c-soft, #94a3b8);
}
.kalendar__search-item {
  display: flex;
  gap: .55rem;
  align-items: flex-start;
  padding: .5rem .75rem;
  border-bottom: 1px solid #f1f5f9;
  cursor: pointer;
  transition: background .12s;
}
.kalendar__search-item:hover { background: #f0fdfa; }
.kalendar__search-item:last-of-type { border-bottom: 0; }
.kalendar__search-item-dot {
  flex: 0 0 auto;
  width: 8px; height: 8px;
  border-radius: 50%;
  margin-top: .45rem;
  box-shadow: 0 0 0 1px rgba(15,23,42,.06);
}
.kalendar__search-item-body { flex: 1 1 auto; min-width: 0; }
.kalendar__search-item-title {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 600;
  color: var(--kal-c-strong, #0f172a);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kalendar__search-item-meta {
  font-size: .72rem;
  color: #64748b;
  margin-top: 1px;
}
.kalendar__search-item-type {
  display: inline-block;
  padding: 1px 6px;
  background: #f1f5f9;
  border-radius: 4px;
  font-weight: 600;
  color: #475569;
}
.kalendar__search-show-all {
  display: block;
  width: 100%;
  padding: .65rem .85rem;
  background: #f0fdfa;
  border: 0;
  border-top: 1px solid #ccfbf1;
  font-size: .82rem;
  font-weight: 600;
  color: var(--color-accent-dk, #0f766e);
  text-align: center;
  cursor: pointer;
  transition: background .12s;
}
.kalendar__search-show-all:hover { background: #ccfbf1; }

/* ── Search timeline modal ── */
.kal-search-timeline {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.kal-search-timeline__day {
  border-left: 3px solid #e2e8f0;
  padding: .25rem 0 .25rem 1rem;
  position: relative;
}
.kal-search-timeline__day--today { border-left-color: var(--color-accent, #0d9488); }
.kal-search-timeline__day--past   { opacity: .75; }
.kal-search-timeline__day::before {
  content: '';
  position: absolute;
  left: -8px; top: 8px;
  width: 13px; height: 13px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid #cbd5e1;
}
.kal-search-timeline__day--today::before {
  border-color: var(--color-accent, #0d9488);
  background: var(--color-accent, #0d9488);
  box-shadow: 0 0 0 3px rgba(13,148,136,.18);
}
.kal-search-timeline__date {
  font-size: .82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #475569;
  margin-bottom: .4rem;
}
.kal-search-timeline__count {
  font-weight: 500;
  color: #94a3b8;
  text-transform: none;
  letter-spacing: 0;
}
.kal-search-timeline__events {
  display: flex;
  flex-direction: column;
  gap: .35rem;
}
.kal-search-timeline__event {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: .85rem;
  align-items: baseline;
  padding: .6rem .8rem;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-left: 4px solid #94a3b8;
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  transition: all .12s;
}
.kal-search-timeline__event:hover {
  background: #f8fafc;
  transform: translateX(2px);
  box-shadow: 0 2px 6px rgba(15,23,42,.06);
}
.kal-search-timeline__event-time {
  font-size: .78rem;
  font-weight: 700;
  color: #475569;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.kal-search-timeline__event-body { min-width: 0; }
.kal-search-timeline__event-title {
  font-size: .92rem;
  font-weight: 600;
  color: #0f172a;
}
.kal-search-timeline__event-meta {
  font-size: .76rem;
  color: #64748b;
  margin-top: 2px;
}
.kal-search-timeline__event-type {
  display: inline-block;
  padding: 1px 6px;
  background: #f1f5f9;
  border-radius: 4px;
  font-weight: 600;
  color: #475569;
}
@media (max-width: 540px) {
  .kal-search-timeline__event { grid-template-columns: 1fr; gap: .25rem; }
  .kalendar__search { min-width: 0; flex: 1 1 200px; }
}

/* ── Attendees: standard varianta (search + dropdown + chip list) ──
   Použito pro všechny typy událostí KROMĚ Porady (ta má group picker níže). */
.kal-att__search-wrap {
  position: relative;
  display: flex;
  align-items: stretch;
  gap: 6px;
}
.kal-att__search-wrap .kal-att__search-input {
  flex: 1 1 auto;
  min-width: 0;
}
/* „＋ Procházet" tlačítko vedle search inputu — otevře dropdown s celým seznamem kolegů */
.kal-att__browse-btn {
  flex: 0 0 auto;
  width: 36px;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  color: #475569;
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}
.kal-att__browse-btn:hover {
  background: #ccfbf1;
  border-color: #5eead4;
  color: #0d9488;
}
.kal-att__results {
  position: absolute;
  left: 0; right: 0;
  top: 100%;
  margin-top: 4px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  box-shadow: 0 6px 16px rgba(15,23,42,.08);
  z-index: 50;
  max-height: 240px;
  overflow-y: auto;
}
.kal-att__result {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: .55rem;
  padding: .5rem .75rem;
  font-size: .85rem;
  cursor: pointer;
  border-bottom: 1px solid #f1f5f9;
}
.kal-att__result:last-child { border-bottom: 0; }
.kal-att__result:hover { background: #f0fdfa; color: #0f766e; }
.kal-att__result-name { font-weight: 600; }
.kal-att__result-pos { font-size: .72rem; color: #94a3b8; }
.kal-att__empty {
  padding: .65rem .75rem;
  font-size: .8rem;
  color: #94a3b8;
  text-align: center;
}
.kal-att__list {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-top: .5rem;
}
.kal-att__chip {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  padding: .35rem .6rem;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  font-size: .82rem;
}
.kal-att__chip-name { color: #0f172a; font-weight: 600; }
.kal-att__chip-status {
  font-size: .7rem;
  font-weight: 600;
  padding: 1px 7px;
  border-radius: 999px;
  background: #fef3c7;
  color: #92400e;
  border: 1px solid #fde68a;
}
.kal-att__chip-status--accepted { background:#dcfce7; color:#166534; border-color:#bbf7d0; }
.kal-att__chip-status--declined { background:#fee2e2; color:#991b1b; border-color:#fecaca; }
.kal-att__chip-status--proposed_change { background:#e0e7ff; color:#3730a3; border-color:#c7d2fe; }
.kal-att__chip-remove {
  width: 20px; height: 20px;
  border: 0;
  background: transparent;
  color: #94a3b8;
  border-radius: 50%;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  padding: 0;
}
.kal-att__chip-remove:hover { background: #fee2e2; color: #991b1b; }

/* ── Attendees picker (sekce per pobočka s checkboxy + master toggle) — pouze Porada ── */
.kal-att-picker {
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #f8fafc;
  overflow: hidden;
}
.kal-att-picker__toolbar {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .55rem .65rem;
  background: #fff;
  border-bottom: 1px solid #e2e8f0;
  position: sticky;
  top: 0;
  z-index: 2;
}
.kal-att-picker__search {
  flex: 1 1 auto;
  font-size: .85rem;
  padding: .4rem .65rem;
}
.kal-att-picker__count {
  font-size: .72rem;
  font-weight: 600;
  color: #0f766e;
  background: #ccfbf1;
  border: 1px solid #5eead4;
  padding: .25rem .55rem;
  border-radius: 999px;
  white-space: nowrap;
}
.kal-att-picker__sections {
  max-height: 320px;
  overflow-y: auto;
}
.kal-att-picker__section {
  border-top: 1px solid #e2e8f0;
}
.kal-att-picker__section:first-child { border-top: 0; }
.kal-att-picker__section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: .5rem .75rem;
  background: #eef2f7;
  font-size: .8rem;
  font-weight: 600;
  color: #334155;
  border-bottom: 1px solid #e2e8f0;
}
.kal-att-picker__master {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  cursor: pointer;
  flex: 1 1 auto;
  min-width: 0;
}
.kal-att-picker__master input[type="checkbox"] {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: #0d9488;
  flex: 0 0 16px;
}
.kal-att-picker__master-label {
  font-size: .82rem;
  font-weight: 700;
  color: #0f172a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kal-att-picker__group-count {
  font-size: .72rem;
  color: #64748b;
  font-variant-numeric: tabular-nums;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 999px;
  padding: .1rem .5rem;
  white-space: nowrap;
}
.kal-att-picker__rows {
  background: #fff;
  max-height: 320px;
  overflow-y: auto;
}
.kal-att-picker__row {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .45rem .75rem;
  font-size: .85rem;
  border-bottom: 1px solid #f1f5f9;
  cursor: pointer;
  transition: background .12s;
}
.kal-att-picker__row:last-child { border-bottom: 0; }
.kal-att-picker__row:hover { background: #f0fdfa; }
.kal-att-picker__row.is-selected { background: #ecfdf5; }
.kal-att-picker__row input[type="checkbox"] {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: #0d9488;
  flex: 0 0 16px;
}
.kal-att-picker__row-name {
  font-weight: 600;
  color: #0f172a;
  flex: 1 1 auto;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kal-att-picker__row-pos {
  font-size: .72rem;
  color: #64748b;
  white-space: nowrap;
}
.kal-att-picker__primary-badge {
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #0f766e;
  background: #ccfbf1;
  border: 1px solid #5eead4;
  padding: .1rem .35rem;
  border-radius: 4px;
}
.kal-att-picker__status {
  font-size: .8rem;
  font-weight: 700;
  padding: .1rem .4rem;
  border-radius: 4px;
}
.kal-att-picker__empty {
  padding: 1rem;
  font-size: .82rem;
  color: #94a3b8;
  text-align: center;
  background: #fff;
}

/* Sekce v disabled stavu (např. Upozornění pro událost v minulosti) */
.kal-rec__section--disabled {
  opacity: .55;
  pointer-events: none;
  filter: saturate(.7);
  background: #eef2f7 !important;
}
.kal-rec__section--disabled .kal-rec__legend {
  background: #f1f5f9;
  color: #94a3b8;
}
.kal-rec__section--disabled .kal-rec__legend::before { background: #cbd5e1; }
.kal-rec__section-disabled-hint {
  background: #fef3c7;
  border: 1.5px solid #f59e0b;
  color: #78350f;
  border-radius: 8px;
  padding: .65rem .85rem;
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 600;
  line-height: 1.4;
  pointer-events: auto;
  box-shadow: 0 1px 3px rgba(245,158,11,.15);
}
/* Hint zůstává plně viditelný i když je sekce v disabled stavu */
.kal-rec__section--disabled .kal-rec__section-disabled-hint {
  opacity: 1;
  filter: none;
}

/* ── Procedure picker — custom dropdown (trigger + popup, position:fixed, max-height + scroll) ── */
.kal-proc-trigger {
  display: flex;
  align-items: center;
  gap: .5rem;
  width: 100%;
  text-align: left;
  cursor: pointer;
  padding-right: 2.2rem; /* prostor pro chevron */
  position: relative;
}
.kal-proc-trigger__label {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.kal-proc-trigger__label--placeholder { color: #94a3b8; }
.kal-proc-trigger__chevron {
  position: absolute;
  right: .75rem;
  top: 50%;
  transform: translateY(-50%);
  color: #64748b;
  font-size: .85rem;
  transition: transform .15s ease;
  pointer-events: none;
}
.kal-proc-trigger[aria-expanded="true"] .kal-proc-trigger__chevron {
  transform: translateY(-50%) rotate(180deg);
}
.kal-proc-trigger[aria-expanded="true"] {
  border-color: #0d9488 !important;
  box-shadow: 0 0 0 3px rgba(13,148,136,.18) !important;
}

/* Popup menu — position:fixed, JS pozicuje top/left/width/maxHeight */
.kal-proc-menu {
  position: fixed;
  z-index: 1100; /* nad modalem (typicky 1000) */
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 10px;
  box-shadow: 0 10px 30px rgba(15,23,42,.18), 0 2px 8px rgba(15,23,42,.08);
  padding: .35rem 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}
.kal-proc-menu[hidden] { display: none; }

.kal-proc-menu__group { padding: .15rem 0; }
.kal-proc-menu__group + .kal-proc-menu__group {
  border-top: 1px solid #f1f5f9;
  margin-top: .2rem;
  padding-top: .3rem;
}
.kal-proc-menu__group-title {
  font-size: .66rem;
  font-weight: 700;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding: .25rem .8rem .15rem;
}
.kal-proc-menu__item {
  display: flex;
  align-items: center;
  gap: .55rem;
  width: 100%;
  padding: .45rem .8rem;
  background: transparent;
  border: none;
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: #334155;
  line-height: 1.25;
  transition: background-color .1s ease, color .1s ease;
}
.kal-proc-menu__item:hover,
.kal-proc-menu__item:focus-visible {
  outline: none;
  background: #f0fdfa;
  color: #0f766e;
}
.kal-proc-menu__item[aria-selected="true"] {
  background: #ccfbf1;
  color: #0f766e;
  font-weight: 600;
}
.kal-proc-menu__item[aria-selected="true"]::before {
  content: '✓';
  position: absolute;
  right: .8rem;
  color: #0d9488;
  font-weight: 700;
}
.kal-proc-menu__item { position: relative; padding-right: 2rem; }
.kal-proc-menu__emoji { font-size: 1rem; flex-shrink: 0; line-height: 1; }
.kal-proc-menu__text { flex: 1; min-width: 0; font-size: .85rem; }
.kal-proc-menu__item--emergency[aria-selected="true"] {
  background: #fee2e2;
  color: #991b1b;
}
.kal-proc-menu__item--emergency[aria-selected="true"]::before {
  color: #dc2626;
}

/* ── Porada (meeting) místo + hint ── */
.kal-meeting__hint {
  font-size: .82rem;
  line-height: 1.45;
  color: #475569;
  background: #f0fdfa;
  border: 1px solid #99f6e4;
  border-left: 3px solid #0d9488;
  padding: .55rem .75rem;
  border-radius: 6px;
  margin-bottom: .5rem;
}
.kal-meeting__hint strong { color: #0f766e; }
.kal-meeting__place-mode {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin: .35rem 0 .5rem;
  font-size: .85rem;
}
.kal-meeting__place-mode label {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  cursor: pointer;
  color: #334155;
}
.kal-meeting__place-mode input[type="radio"] {
  accent-color: #0d9488;
  cursor: pointer;
}
.kal-meeting__place-clinic {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .5rem;
}
@media (max-width: 540px) {
  .kal-meeting__place-clinic { grid-template-columns: 1fr; }
}

/* ── Task list (Úkol checklist) ── */
.kal-tasks {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  margin: .25rem 0 .5rem;
}
.kal-task-row {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .25rem .35rem;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 7px;
  transition: border-color .12s ease, background-color .12s ease;
}
.kal-task-row:hover { border-color: #cbd5e1; }
.kal-task-row__check {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: #0d9488;
}
.kal-task-row__text {
  flex: 1;
  min-width: 0;
  border: none;
  background: transparent;
  font: inherit;
  font-size: .88rem;
  color: #1f2937;
  padding: .25rem .15rem;
  outline: none;
}
.kal-task-row__text:focus { background: #f8fafc; border-radius: 4px; }
.kal-task-row--done .kal-task-row__text {
  text-decoration: line-through;
  color: #94a3b8;
}
.kal-task-row__remove {
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  color: #94a3b8;
  font-size: 1.1rem;
  cursor: pointer;
  border-radius: 4px;
  opacity: .6;
  transition: opacity .12s ease, color .12s ease, background-color .12s ease;
}
.kal-task-row:hover .kal-task-row__remove { opacity: 1; }
.kal-task-row__remove:hover { color: #dc2626; background: #fef2f2; }
.kal-tasks__add { margin-top: .15rem; }
.kal-tasks__progress {
  font-size: .72rem;
  font-weight: 600;
  color: #64748b;
  background: #f1f5f9;
  padding: .1rem .5rem;
  border-radius: 999px;
  margin-left: .4rem;
  vertical-align: 1px;
}
.kal-tasks__progress--done { color: #0f766e; background: #ccfbf1; }
/* Event chip — task progress badge "(2/5)" za titulem */
.kalendar__event-task-progress {
  display: inline-block;
  margin-left: 4px;
  font-size: .9em;
  font-weight: 600;
  opacity: .8;
}

/* Highlight pole, na které scrollli validační chyba (puls 2.2s) */
.kal-modal__field--error,
.kal-modal__field--error:focus {
  outline: 2px solid #dc2626 !important;
  outline-offset: 2px;
  box-shadow: 0 0 0 4px rgba(220,38,38,.18) !important;
  border-color: #dc2626 !important;
  animation: kalFieldErrorPulse 1.4s ease-out 1;
}
@keyframes kalFieldErrorPulse {
  0%   { box-shadow: 0 0 0 0 rgba(220,38,38,.45); }
  50%  { box-shadow: 0 0 0 8px rgba(220,38,38,.05); }
  100% { box-shadow: 0 0 0 4px rgba(220,38,38,.18); }
}

/* Error box v modalech — výraznější vizuál */
#kalEventModal .modal__error,
#kalDetailModal .modal__error,
#kalGlobalSettingsModal .modal__error {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 600;
  padding: .7rem .85rem;
  border-width: 1.5px;
}

/* Error v modal__footeru — inline na stejném řádku s tlačítky (fills empty space) */
.kal-modal__footer--with-error {
  align-items: center;
}
.kal-modal__footer-error {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  margin-right: auto;            /* push tlačítka doprava */
  padding: .55rem .75rem;
  font-size: var(--kal-fs-sm, .78rem);
  box-shadow: 0 1px 3px rgba(220,38,38,.18);
  animation: kalErrorFlash .25s ease-out;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
@keyframes kalErrorFlash {
  0%   { transform: translateX(-4px); opacity: 0; }
  100% { transform: translateX(0); opacity: 1; }
}
/* Mobile fallback: na úzkých viewportech zalomit na vlastní řádek */
@media (max-width: 540px) {
  .kal-modal__footer--with-error { flex-wrap: wrap; row-gap: .5rem; }
  .kal-modal__footer-error { flex: 1 0 100%; white-space: normal; }
}

/* Title v Výkon režimu — readonly s decentní indikací */
.kal-modal__title--readonly {
  background: #f1f5f9 !important;
  color: #475569 !important;
  cursor: not-allowed;
  font-style: italic;
}
.kal-modal__title--readonly:focus { outline: none; box-shadow: none; }

/* Typ události + Soukromé v jednom řádku */
.kal-modal__type-row {
  display: flex;
  align-items: flex-end;
  gap: .75rem;
  flex-wrap: wrap;
}
.kal-modal__type-col {
  flex: 1 1 auto;
  min-width: 0;
}
.kal-modal__type-private {
  flex: 0 0 auto;
  padding: .55rem .75rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  white-space: nowrap;
  font-size: .85rem;
}

/* Datum + čas rozdělené do 2 polí (Začátek/Konec) */
.kal-modal__dt-row {
  display: flex;
  flex-direction: column;
  gap: .35rem;
}
.kal-modal__dt-fields {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: .5rem;
}
.kal-modal__dt-fields .kal-modal__dt-date,
.kal-modal__dt-fields .kal-modal__dt-time {
  font-variant-numeric: tabular-nums;
}
/* Skrytí času při "Celý den" */
.kal-modal__dt-row.is-allday .kal-modal__dt-time { display: none; }
.kal-modal__dt-row.is-allday .kal-modal__dt-fields { grid-template-columns: 1fr; }

/* Sekce v kalEventModal (Základní info, Termín, Přiřazení, Opakování, Upozornění, Popis) */
.kal-rec__section {
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 1rem 1.1rem 1.05rem;
  margin: 0;
  background: #f1f5f9;          /* slate-100 — jemně tmavší než modal body */
  display: flex;
  flex-direction: column;
  gap: .85rem;
  position: relative;
  transition: box-shadow .15s, border-color .15s, background .15s;
}
.kal-rec__section:hover {
  border-color: #cbd5e1;
  background: #eef2f7;          /* mírně tmavší při hoveru — feedback */
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.kal-rec__section:focus-within {
  border-color: var(--color-accent, #0d9488);
  box-shadow: 0 0 0 3px rgba(13,148,136,.08);
}
.kal-rec__legend {
  padding: .2rem .75rem;
  margin-left: -.25rem;
  font-size: var(--kal-fs-sm, .78rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--kal-c-accent-dk, #0f766e);
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  position: relative;
}
.kal-rec__legend::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--kal-c-accent, #0d9488);
  margin-right: .45rem;
  vertical-align: middle;
  transform: translateY(-1px);
}

/* Modal body — zvýšený gap mezi sekcemi pro lepší optické oddělení */
#kalEventModal .modal__body,
#kalDetailModal .modal__body {
  gap: 1.15rem;
}

/* Detail modal sections — list rows nemají border-bottom uvnitř karty (karta sama je rámeček) */
/* Akční tlačítka pro recall alert v detail modalu — grid 2×2 na úzkých, flex-wrap jinak */
.kal-detail__alert-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
}
.kal-detail__alert-actions .btn { flex: 1 1 calc(50% - .25rem); min-width: 0; }
.kal-detail__alert-hint {
  margin: .6rem 0 0;
  font-size: .75rem;
  color: var(--color-text-muted, #64748b);
  line-height: 1.5;
}

.kal-detail__section .kal-detail__list { display: flex; flex-direction: column; gap: 0; }
.kal-detail__section .kal-detail__row {
  padding: .35rem 0;
  border-bottom: 1px dashed rgba(148,163,184,.35);
}
.kal-detail__section .kal-detail__row:last-child { border-bottom: none; padding-bottom: 0; }
.kal-detail__section .kal-detail__row:first-child { padding-top: 0; }
/* Icon boxík uvnitř detail section — světlejší (kontrast nad tmavším bg karty) */
.kal-detail__section .kal-detail__row-icon {
  background: #fff;
  border: 1px solid #e2e8f0;
}
/* Popis blok v detail section — vlastní background uvnitř karty */
.kal-detail__section .kal-detail__description {
  margin: 0;
  background: #fff;
  border-color: #e2e8f0;
}
.kal-rec__params {
  display: flex;
  flex-direction: column;
  gap: .75rem;
  padding-top: .25rem;
  border-top: 1px dashed #e2e8f0;
}
.kal-rec__interval-row {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
}
.kal-rec__interval-label {
  margin: 0;
}
.kal-rec__interval-input {
  width: 80px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.kal-rec__interval-unit {
  font-size: .85rem;
  color: #475569;
  font-weight: 500;
}
.kal-rec__sub {
  display: flex;
  flex-direction: column;
  gap: .35rem;
}
.kal-rec__weekdays {
  margin-top: .15rem;
}
.kal-rec__weekdays .modal__chip {
  min-width: 38px;
  text-align: center;
}
.kal-rec__end {
  border-top: 1px dashed #e2e8f0;
  padding-top: .6rem;
}

/* Scope modal pro recurring edit — 3 large „karta" buttony */
.kal-scope__list {
  display: flex;
  flex-direction: column;
  gap: .55rem;
}
.kal-scope__opt {
  text-align: left;
  background: #fff;
  border: 1.5px solid #e2e8f0;
  border-radius: 10px;
  padding: .7rem .85rem;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: .15rem;
  transition: all .15s;
  font-family: inherit;
}
.kal-scope__opt:hover {
  border-color: var(--color-accent, #0d9488);
  background: #f0fdfa;
  transform: translateY(-1px);
}
.kal-scope__opt-title {
  font-weight: 700;
  font-size: .95rem;
  color: #0f172a;
}
.kal-scope__opt-desc {
  font-size: .78rem;
  color: #64748b;
  line-height: 1.4;
}

/* Label row pro Kalendář — label vlevo, barva chip vpravo */
.kal-modal__cal-label-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .55rem;
  margin-bottom: .4rem;
  flex-wrap: wrap;
}
.kal-modal__cal-label-row > label { margin: 0; }

/* Read-only barva podle kalendáře — uživatel needituje, jen vizuální feedback */
.kal-modal__color-info {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .72rem;
  font-weight: 500;
  color: #64748b;
  cursor: help;
  padding: .2rem .5rem;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
}
.kal-modal__color-info-dot {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #94a3b8;
  box-shadow: 0 0 0 1px rgba(15,23,42,.08);
  transition: background .15s;
}
.kal-modal__color-info-label {
  font-size: .76rem;
}
@media (max-width: 540px) {
  .kal-modal__color-info { margin-left: 0; }
}
.kal-modal__tab {
  flex: 1;
  background: transparent;
  border: 0;
  padding: .45rem .35rem;
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 600;
  color: var(--kal-c-muted, #64748b);
  cursor: pointer;
  border-radius: 6px;
  transition: all .15s;
}
.kal-modal__tab--active {
  background: #fff;
  color: var(--kal-c-accent-dk, #0f766e);
  box-shadow: 0 1px 2px rgba(0,0,0,.08);
}
/* Locked = edit mód: typ uložené události nelze měnit (jen klasické duplikovat / smazat) */
.kal-modal__tab--locked,
.kal-modal__tab:disabled {
  opacity: .42;
  cursor: not-allowed;
  pointer-events: auto; /* aby fungoval tooltip */
}
.kal-modal__tab--locked:hover,
.kal-modal__tab:disabled:hover {
  background: transparent;
}
.kal-modal__client-results {
  position: relative;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  margin-top: 4px;
  max-height: 200px;
  overflow-y: auto;
  z-index: 10;
}
.kal-modal__client-item {
  padding: .6rem .9rem;
  font-size: var(--kal-fs-base, .88rem);
  border-bottom: 1px solid #f1f5f9;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: .25rem;
}
.kal-modal__client-item:hover { background: #f0fdfa; }
.kal-modal__client-item:last-child { border-bottom: 0; }

/* Title row: jméno vlevo (flex:1) + RC chip vpravo (margin-left:auto) */
.kal-modal__client-item-name {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 600;
  color: var(--kal-c-strong, #0f172a);
  display: flex;
  align-items: center;
  gap: .55rem;
  flex-wrap: wrap;
  line-height: 1.3;
}
.kal-modal__client-item-name-text {
  flex: 1 1 auto;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Pill age — věk pacienta vypočtený z RC (teal-tinted, vlevo od RC; name-text flex:1 ho pushne doprava) */
.kal-modal__client-item-age {
  flex: 0 0 auto;
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 700;
  color: var(--kal-c-accent-dk, #0f766e);
  background: #ccfbf1;
  border: 1px solid #5eead4;
  border-radius: 999px;
  padding: 2px 8px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.kal-modal__client-item-rc {
  flex: 0 0 auto;
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 600;
  color: var(--kal-c-muted, #64748b);
  background: #f1f5f9;
  border: 1px solid #e2e8f0;
  border-radius: 999px;
  padding: 2px 8px;
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
}

/* Sub a addr — sjednocený monospaced-friendly look, baseline align */
.kal-modal__client-item-sub,
.kal-modal__client-item-addr {
  font-size: var(--kal-fs-sm, .78rem);
  color: var(--kal-c-muted, #64748b);
  line-height: 1.4;
  display: flex;
  align-items: center;
  gap: .35rem;
  font-variant-numeric: tabular-nums;
}
.kal-modal__client-item-addr { color: var(--kal-c-text, #334155); }
.kal-modal__client-item-addr::before { content: '📍'; flex: 0 0 auto; }

/* Vybraný klient — chip se stejnými info jako v dropdownu */
.kal-modal__client-chip {
  display: flex;
  align-items: flex-start;
  gap: .75rem;
  padding: .65rem .85rem;
  background: #f0fdfa;
  border: 1.5px solid #5eead4;
  border-radius: 10px;
}
.kal-modal__client-chip-body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.kal-modal__client-chip-clear {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px solid #99f6e4;
  background: #fff;
  color: #0f766e;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background .12s, border-color .12s;
}
.kal-modal__client-chip-clear:hover {
  background: #ccfbf1;
  border-color: #5eead4;
}

/* ── Form attachments: search + picker + list ── */
.kal-form-attach__search-wrap {
  position: relative;
}
.kal-form-attach__results {
  position: absolute;
  left: 0; right: 0;
  top: 100%;
  margin-top: 4px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  box-shadow: 0 6px 16px rgba(15,23,42,.08);
  z-index: 50;
  max-height: 240px;
  overflow-y: auto;
}
.kal-form-attach__result-item {
  padding: .55rem .85rem;
  font-size: .85rem;
  cursor: pointer;
  border-bottom: 1px solid #f1f5f9;
}
.kal-form-attach__result-item:last-child { border-bottom: 0; }
.kal-form-attach__result-item:hover { background: #f0fdfa; color: #0f766e; }

.kal-form-attach__picker {
  background: #f0fdfa;
  border: 1.5px dashed #5eead4;
  border-radius: 10px;
  padding: .75rem .85rem;
  margin-top: .55rem;
  display: flex;
  flex-direction: column;
  gap: .55rem;
}
.kal-form-attach__picker-title {
  display: flex;
  align-items: center;
  gap: .5rem;
  font-size: .82rem;
  color: #0f766e;
}
.kal-form-attach__picker-title strong { color: #0f172a; }
.kal-form-attach__picker-cancel {
  margin-left: auto;
  width: 24px; height: 24px;
  border: 1px solid #99f6e4;
  background: #fff;
  border-radius: 50%;
  color: #0f766e;
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
}
.kal-form-attach__picker-cancel:hover {
  background: #ccfbf1;
  border-color: #5eead4;
}
.kal-form-attach__picker-row {
  display: flex;
  align-items: center;
  gap: .55rem;
  flex-wrap: wrap;
}
.kal-form-attach__picker-lbl {
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: #475569;
  min-width: 50px;
}
.kal-form-attach__picker-row select.form-control {
  flex: 1 1 auto;
  min-width: 0;
}

.kal-form-attach__list {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  margin-top: .55rem;
}
.kal-form-attach__item {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .5rem .65rem;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
}
.kal-form-attach__item-body { flex: 1 1 auto; min-width: 0; }
.kal-form-attach__item-name {
  font-size: .88rem;
  font-weight: 600;
  color: #0f172a;
}
.kal-form-attach__item-meta {
  font-size: .72rem;
  color: #64748b;
  margin-top: 1px;
}
.kal-form-attach__item-remove {
  flex: 0 0 auto;
  width: 24px; height: 24px;
  border: 1px solid #e2e8f0;
  background: #fff;
  border-radius: 50%;
  color: #94a3b8;
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  transition: all .12s;
}
.kal-form-attach__item-remove:hover {
  background: #fee2e2;
  border-color: #fca5a5;
  color: #991b1b;
}

.kal-detail__row {
  padding: .35rem 0;
  font-size: .9rem;
  border-bottom: 1px solid #f1f5f9;
}
.kal-detail__row:last-child { border-bottom: 0; }
.kal-detail__row strong { color: var(--color-text-muted); font-weight: 600; }

/* ── Detail modal v2 — modern list layout (NextCloud-inspired) ── */
/* Barevný dot vedle title */
.kal-detail__color-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin-right: .55rem;
  vertical-align: middle;
  box-shadow: 0 0 0 1px rgba(15,23,42,.08);
}
.kal-detail__title-text { vertical-align: middle; }

/* Subtitle chip-row (typ + kalendář + soukromé) */
#kalDetailSubtitle {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  align-items: center;
  margin-top: .35rem;
}
.kal-detail__chip {
  display: inline-flex;
  align-items: center;
  gap: .28rem;
  padding: .2rem .55rem;
  border-radius: 999px;
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 600;
  background: #e0f2fe;
  color: #075985;
  border: 1px solid #bae6fd;
}
.kal-detail__chip--ghost {
  background: #f1f5f9;
  color: #475569;
  border-color: #e2e8f0;
}
.kal-detail__chip--muted {
  background: #f1f5f9;
  color: #64748b;
  border-color: #e2e8f0;
}
.kal-detail__chip svg { width: 11px; height: 11px; }

/* Tlačítko „🔔 Připomenout" u pozvaných účastníků v detail modalu — kompaktní ikona */
.kal-detail__remind-btn {
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #f1f5f9;
  border: 1px solid #cbd5e1;
  color: inherit;
  padding: 0;
  font-size: 14px;
  line-height: 1;
  border-radius: 50%;
  cursor: pointer;
  transform-origin: 50% 25%;  /* horní část — jako že zvonek visí za horní okraj */
  transition: transform .15s cubic-bezier(.25,1.5,.5,1), background .12s, border-color .12s, box-shadow .15s;
}
.kal-detail__remind-btn:hover:not(:disabled) {
  background: #ccfbf1;
  border-color: #5eead4;
  animation: kalRemindRing .6s ease;
}
.kal-detail__remind-btn:active:not(:disabled) {
  transform: scale(.95);
}
.kal-detail__remind-btn:disabled {
  opacity: .6;
  cursor: wait;
}
/* Animace odeslání: zvonek se rozzvoní (rychlejší ring) */
.kal-detail__remind-btn.is-sending {
  animation: kalRemindRing .35s ease;
}
@keyframes kalRemindRing {
  0%   { transform: rotate(0); }
  20%  { transform: rotate(-22deg); }
  40%  { transform: rotate(18deg); }
  60%  { transform: rotate(-12deg); }
  80%  { transform: rotate(8deg); }
  100% { transform: rotate(0); }
}
/* Po úspěšném odeslání: bounce + zelená glow */
.kal-detail__remind-btn.is-sent {
  background: #dcfce7;
  border-color: #4ade80;
  box-shadow: 0 0 0 4px rgba(74, 222, 128, .25);
  animation: kalRemindBounce .55s cubic-bezier(.25,1.5,.5,1);
}
@keyframes kalRemindBounce {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.35); }
  70%  { transform: scale(.92); }
  100% { transform: scale(1); }
}

/* Hlavní seznam — vertical rows s ikonou */
.kal-detail__list {
  display: flex;
  flex-direction: column;
  gap: .15rem;
}
.kal-detail__row {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  padding: .6rem 0;
  border-bottom: 1px solid #f1f5f9;
}
.kal-detail__row:last-child { border-bottom: 0; }
.kal-detail__row-icon {
  flex: 0 0 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: #f1f5f9;
  color: #475569;
  margin-top: 1px;
}
.kal-detail__row-icon svg { width: 14px; height: 14px; }
.kal-detail__row-body {
  flex: 1;
  min-width: 0;
}
.kal-detail__row-label {
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--kal-c-muted, #64748b);
  margin-bottom: 2px;
}
.kal-detail__row-value {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 500;
  color: var(--kal-c-strong, #0f172a);
  line-height: 1.45;
  word-break: break-word;
}
.kal-detail__row--block .kal-detail__row-value,
.kal-detail__row--block .kal-detail__description {
  width: 100%;
}
.kal-detail__link {
  color: var(--kal-c-accent, #0d9488);
  text-decoration: none;
  font-weight: 600;
}
.kal-detail__link:hover { text-decoration: underline; }

/* ── Cell-grid layout pro detail modal — organizovaná sekce 2-col karty.
   Použito pro short label/value sekce (Termín, Klient, Místo, Vlastník, …).
   Pro narrativní sekce (Popis, Attendees, Checklist) zůstává .kal-detail__list. */
.kal-detail__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: .5rem;
}
.kal-detail__cell {
  display: grid;
  grid-template-columns: 30px 1fr;
  gap: .55rem;
  align-items: flex-start;
  padding: .65rem .75rem;
  background: #f8fafc;
  border: 1px solid #f1f5f9;
  border-radius: 9px;
  transition: background .12s, border-color .12s;
}
.kal-detail__cell:hover {
  background: #fff;
  border-color: #e2e8f0;
}
.kal-detail__cell-icon {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 7px;
  background: #fff;
  color: var(--kal-c-accent, #0d9488);
  border: 1px solid #e2e8f0;
  margin-top: 1px;
}
.kal-detail__cell-icon svg { width: 14px; height: 14px; }
.kal-detail__cell-body { min-width: 0; }
.kal-detail__cell-label {
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--kal-c-muted, #64748b);
  margin-bottom: 3px;
}
.kal-detail__cell-value {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 600;
  color: var(--kal-c-strong, #0f172a);
  line-height: 1.4;
  word-break: break-word;
}
.kal-detail__cell-value a.kal-detail__link {
  display: inline-block;
}

/* Status pill — barevný badge (znovu definováno pro nový subtitle) */
.kal-detail__status {
  display: inline-flex;
  align-items: center;
  padding: .2rem .55rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 600;
  background: #e0f2fe;
  color: #075985;
  border: 1px solid #bae6fd;
}
.kal-detail__status[data-status="confirmed"] { background:#dcfce7; color:#166534; border-color:#bbf7d0; }
.kal-detail__status[data-status="cancelled"] { background:#fee2e2; color:#991b1b; border-color:#fecaca; }
.kal-detail__status[data-status="completed"] { background:#e0e7ff; color:#3730a3; border-color:#c7d2fe; }
.kal-detail__status[data-status="no_show"]   { background:#fef3c7; color:#92400e; border-color:#fde68a; }

/* Description block */
.kal-detail__description {
  padding: .55rem .75rem;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  white-space: pre-wrap;
  font-size: .88rem;
  line-height: 1.55;
  color: #334155;
  margin-top: 2px;
}

/* Footer buttony s ikonami */
.kal-detail__btn {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
}
.kal-detail__btn svg { width: 13px; height: 13px; }

/* Title v headeru — dovol multi-line s vertical-align */
#kalDetailHeader .modal__title {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}

/* Color stripe nahoře modalu — jemný 3px barevný akcent (z eventColor) */
#kalDetailModal .modal {
  position: relative;
}

/* ── Floating hover tooltip nad eventy (style podle sklad stockQtyCard, 2s delay) ── */
.kal-event-tooltip {
  position: fixed;
  z-index: 9000;
  min-width: 300px;
  max-width: 440px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  box-shadow: 0 18px 42px rgba(15, 23, 42, .14), 0 2px 8px rgba(15, 23, 42, .06);
  font-size: .9rem;
  color: #1f2937;
  pointer-events: none;
  overflow: hidden;     /* zaoblení dolního okraje hint sekce */
  animation: kalEventTooltipSlide .14s ease-out;
}
@keyframes kalEventTooltipSlide {
  from { transform: translateY(-3px); }
  to   { transform: translateY(0); }
}
/* Hlavička: barevný akcentový proužek na levé straně, čisté pozadí, tighter padding */
.kal-event-tooltip__head {
  display: flex;
  flex-direction: column;
  gap: .25rem;
  padding: .75rem .95rem .65rem 1.05rem;
  position: relative;
  background: #fff;
}
.kal-event-tooltip__head::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  background: var(--kal-tt-accent, #94a3b8);
}
.kal-event-tooltip__title-row {
  display: flex;
  align-items: center;
  gap: .5rem;
}
.kal-event-tooltip__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, .08);
  flex: 0 0 auto;
}
.kal-event-tooltip__head strong {
  color: #0f172a;
  font-size: 1.02rem;
  font-weight: 700;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.3;
  letter-spacing: -.01em;
}
.kal-event-tooltip__sub {
  font-size: .76rem;
  color: #64748b;
  font-weight: 500;
  padding-left: 18px;       /* zarovnání pod title-row (dot 10px + gap .5rem) */
}
.kal-event-tooltip__sub-mine {
  color: #94a3b8;
  font-weight: 400;
}
/* Meta sekce: žádné per-row bordery, jen vzdušné spacing */
.kal-event-tooltip__meta {
  margin: 0;
  padding: .3rem .95rem .15rem;
  display: grid;
  row-gap: .25rem;
}
.kal-event-tooltip__row {
  display: grid;
  grid-template-columns: 22px 78px 1fr;
  column-gap: .5rem;
  align-items: baseline;
  font-size: .85rem;
  line-height: 1.45;
}
.kal-event-tooltip__row-icon {
  text-align: center;
  font-size: .9rem;
  line-height: 1;
}
.kal-event-tooltip__row dt {
  margin: 0;
  color: #64748b;
  font-weight: 500;
  white-space: nowrap;
  letter-spacing: -.005em;
}
.kal-event-tooltip__row dd {
  margin: 0;
  color: #0f172a;
  font-weight: 600;
  word-break: break-word;
}
.kal-event-tooltip__when-meta {
  color: #64748b;
  font-weight: 400;
  margin-left: .15rem;
}
/* RSVP bar — porady */
.kal-event-tooltip__rsvp {
  display: flex;
  flex-direction: column;
  gap: .3rem;
  min-width: 0;
}
.kal-event-tooltip__rsvp-bar {
  height: 5px;
  background: #f1f5f9;
  border-radius: 3px;
  overflow: hidden;
}
.kal-event-tooltip__rsvp-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, #10b981, #059669);
  border-radius: 3px;
  transition: width .2s ease-out;
}
.kal-event-tooltip__rsvp-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  font-size: .76rem;
  color: #475569;
  font-weight: 500;
  align-items: center;
}
.kal-event-tooltip__rsvp-pill {
  display: inline-block;
  min-width: 18px;
  padding: 1px 6px;
  border-radius: 9px;
  font-size: .7rem;
  font-weight: 700;
  text-align: center;
  margin-right: 3px;
  line-height: 1.3;
}
.kal-event-tooltip__rsvp-pill--acc { background: #d1fae5; color: #065f46; }
.kal-event-tooltip__rsvp-pill--dec { background: #fee2e2; color: #991b1b; }
.kal-event-tooltip__rsvp-total { color: #94a3b8; font-weight: 500; margin-left: auto; }
/* Task progress */
.kal-event-tooltip__progress {
  display: flex;
  flex-direction: column;
  gap: .3rem;
  min-width: 0;
}
.kal-event-tooltip__progress-bar {
  height: 5px;
  background: #f1f5f9;
  border-radius: 3px;
  overflow: hidden;
}
.kal-event-tooltip__progress-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, #f59e0b, #d97706);
  border-radius: 3px;
  transition: width .2s ease-out;
}
.kal-event-tooltip__progress-label {
  font-size: .76rem;
  color: #64748b;
  font-weight: 500;
}
/* Pending todo list — náhled top 3 nehotových úkolů v tooltipu */
.kal-event-tooltip__todo-list {
  list-style: none;
  padding: 0;
  margin: 0;
  font-size: .78rem;
  color: #334155;
}
.kal-event-tooltip__todo-list li {
  padding: 1px 0 1px 14px;
  position: relative;
  line-height: 1.4;
}
.kal-event-tooltip__todo-list li::before {
  content: '☐';
  position: absolute;
  left: 0;
  color: #94a3b8;
  font-size: .8rem;
}
.kal-event-tooltip__todo-list li.kal-event-tooltip__todo-more {
  font-style: italic;
  color: #94a3b8;
}
.kal-event-tooltip__todo-list li.kal-event-tooltip__todo-more::before { content: '+'; }
.kal-event-tooltip__desc {
  padding: .55rem .8rem;
  margin: .55rem .95rem .15rem;
  background: #f8fafc;
  border-left: 3px solid #cbd5e1;
  border-radius: 6px;
  font-size: .82rem;
  line-height: 1.55;
  color: #334155;
  white-space: pre-wrap;
  word-break: break-word;
  font-style: italic;
}
.kal-event-tooltip__hint {
  padding: .45rem .95rem .55rem;
  font-size: .72rem;
  color: #94a3b8;
  text-align: right;
  font-weight: 500;
  letter-spacing: .02em;
  background: linear-gradient(180deg, transparent, #fafbfc);
}

/* (Dim mode + tooltip-target visual highlights byly odstraněny — při hoveru chip
   nedělá nic vizuálně, jen se objeví custom tooltip card v 300 ms místo nativních 1,5 s.) */

/* Cursor help nad eventy v gridu (kromě overflow „+N další" chipů) */
.kalendar__event[data-event-id]:not(.kalendar__event--overflow) { cursor: pointer; }

/* ── kalGlobalSettingsModal — sjednoceno s kal-rec__section (sekce karta + teal chip legend) ── */
.kal-gs__section {
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 1rem 1.1rem 1.05rem;
  margin: 0;
  background: #f1f5f9;          /* mírně tmavší než modal body (slate-100) */
  display: flex;
  flex-direction: column;
  gap: .85rem;
  position: relative;
  transition: box-shadow .15s, border-color .15s, background .15s;
}
.kal-gs__section:hover {
  border-color: #cbd5e1;
  background: #eef2f7;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.kal-gs__section:focus-within {
  border-color: var(--color-accent, #0d9488);
  box-shadow: 0 0 0 3px rgba(13,148,136,.08);
}
.kal-gs__legend {
  padding: .2rem .75rem;
  margin-left: -.25rem;
  font-size: var(--kal-fs-sm, .78rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--kal-c-accent-dk, #0f766e);
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  position: relative;
}
.kal-gs__legend::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--kal-c-accent, #0d9488);
  margin-right: .45rem;
  vertical-align: middle;
  transform: translateY(-1px);
}
.kal-gs__field {
  display: flex;
  flex-direction: column;
  gap: .35rem;
}
/* Modal body — větší gap mezi sekcemi */
#kalGlobalSettingsModal .modal__body {
  gap: 1.15rem;
}

/* Mobile (≤ 768px) — sidebar overlay (slide-in z leva, hidden default) */
@media (max-width: 768px) {
  .kalendar__sidebar {
    position: absolute;
    top: 0; left: -300px;     /* sync s šířkou 280px + 20px safety pro shadow */
    height: 100%;
    z-index: 10;
    transition: left .25s;
    box-shadow: 2px 0 8px rgba(0,0,0,.08);
  }
  .kalendar--sidebar-open .kalendar__sidebar { left: 0; }
  .kalendar__sidebar-toggle { display: inline-flex; }
  .kalendar__title { font-size: .9rem; max-width: 130px; overflow: hidden; text-overflow: ellipsis; }
  .kalendar__view-switcher { font-size: .72rem; }
  .kalendar__month-cell { min-height: 60px; }
  .kalendar__month-events .kalendar__event { font-size: .65rem; }
}
@media (max-width: 600px) {
  .kalendar__grid--month,
  .kalendar__grid--week { display: none; }
}

/* Day view */
.kalendar__grid--day { display: flex; flex-direction: column; }
.kalendar__day-header {
  display: grid;
  grid-template-columns: 60px 1fr;
  border-bottom: 1px solid #e2e8f0;
  background: #f8fafb;
  position: sticky;
  top: 0;
  z-index: 12;
}
.kalendar__day-hdr {
  padding: .35rem .5rem;
  text-align: center;
  border-left: 1px solid #cbd5e1;
  line-height: 1.15;
}
.kalendar__day-hdr--today { background: #eff6ff; }
.kalendar__day-dow {
  font-size: var(--kal-fs-xs, .68rem);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .07em;
  color: var(--kal-c-muted, #64748b);
}
.kalendar__day-num {
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 700;
  color: var(--kal-c-strong, #0f172a);
}
.kalendar__day-hdr--today .kalendar__day-num { color: var(--kal-c-accent-dk, #0f766e); }
.kalendar__day-allday {
  display: grid;
  grid-template-columns: 60px 1fr;
  grid-auto-rows: minmax(28px, auto);
  align-items: stretch;
  border-bottom: 2px solid #e2e8f0;
  background: #fdfdfe;
  position: sticky;
  top: var(--kal-header-height, 56px);
  z-index: 11;
  box-shadow: 0 2px 4px rgba(15, 23, 42, .06);
}
.kalendar__day-allday-col {
  border-left: 1px solid #cbd5e1;
  padding: 3px;
  min-height: 28px;
  display: block;
  min-width: 0;
  overflow: hidden;
}
.kalendar__day-allday-col > * + * { margin-top: 2px; }
.kalendar__day-body {
  display: grid;
  grid-template-columns: 60px 1fr;
  position: relative;
  flex: 1;
}
.kalendar__day-hourcol {
  border-right: 1px solid #cbd5e1;
  background: #f8fafc;
}
.kalendar__day-hour-label {
  padding: .25rem .5rem .25rem .35rem;
  font-size: var(--kal-fs-base, .88rem);
  font-weight: 700;
  color: var(--kal-c-text, #334155);
  text-align: right;
  border-bottom: 1px solid #e2e8f0;
  font-variant-numeric: tabular-nums;
  letter-spacing: -.01em;
}
.kalendar__day-daycol {
  border-left: 1px solid #cbd5e1;
  position: relative;
}
.kalendar__day-daycol--today { background: #eff6ff77; }
.kalendar__day-slot {
  position: absolute;
  left: 0; right: 0;
  border-bottom: 1px solid #e2e8f0;
  cursor: pointer;
  transition: background .15s;
}
.kalendar__day-slot:hover { background: #f1f5f9; }
/* Sub-hodinová mřížka (30 min) — slabší pomocná linka uvnitř každé hodiny */
.kalendar__day-slot::before {
  content: '';
  position: absolute;
  left: 0; right: 0;
  top: 50%;
  border-top: 1px dashed #edf1f6;
  pointer-events: none;
}
.kalendar__grid--day .kalendar__event {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: calc(.78rem * var(--kal-fs-scale, 1));
  padding: 4px 8px;
  border-radius: 4px;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  line-height: 1.2;
}
.kalendar__grid--day .kalendar__event:hover { z-index: 2; }
.kalendar__grid--day .kalendar__event .kalendar__event-time {
  flex-shrink: 0;
  font-weight: 700;
}
/* Day view title — single-line ellipsis JEN pro non-block chipy (např. all-day band).
   Block chipy (.kalendar__event--block) mají wrap přes .kalendar__event--block rule výše. */
.kalendar__grid--day .kalendar__event:not(.kalendar__event--block) .kalendar__event-title {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── Day list modal (kliknutí na overflow pill „Vše (N) v HH:00") ── */
.kalendar__daylist { display: flex; flex-direction: column; gap: 12px; }
.kalendar__daylist-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-text, #1a1d2b);
  letter-spacing: -.01em;
}
.kalendar__daylist-rows {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.kalendar__daylist-row {
  display: flex;
  align-items: center;
  gap: 14px;
  width: 100%;
  text-align: left;
  padding: 10px 14px;
  border: 1px solid var(--color-border-light, #e2e8f0);
  border-left: 4px solid #64748b;
  border-radius: 6px;
  background: #f8fafc;
  color: var(--color-text, #1a1d2b);
  font: inherit;
  font-size: .9rem;
  cursor: pointer;
  transition: background .12s, transform .08s, box-shadow .12s;
}
.kalendar__daylist-row:hover {
  filter: brightness(.96);
  box-shadow: 0 2px 6px rgba(15, 23, 42, .08);
  transform: translateY(-1px);
}
.kalendar__daylist-row:active { transform: translateY(0); }
.kalendar__daylist-row-time {
  flex-shrink: 0;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  font-size: .82rem;
  min-width: 100px;
  opacity: .85;
}
.kalendar__daylist-row-title {
  flex: 1;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ── Now line (aktuální čas v dnešním sloupci) ── */
.kalendar__now-line {
  position: absolute;
  left: 0;
  right: 0;
  height: 0;
  pointer-events: none;
  z-index: 5;
}
.kalendar__now-line-dot {
  position: absolute;
  left: -5px;
  top: -5px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ef4444;
  box-shadow: 0 0 0 2px rgba(239, 68, 68, .18);
}
.kalendar__now-line-bar {
  display: block;
  height: 2px;
  background: #ef4444;
  box-shadow: 0 0 4px rgba(239, 68, 68, .35);
}

/* ── Calendar overflow chip (>STACK_LIMIT eventů ve stejný čas) ── */
.kalendar__event--overflow {
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-bg, #f1f5f9);
  border: 1px dashed var(--color-border, #cbd5e1);
  color: var(--color-text-muted, #64748b);
  font-size: .72rem;
  font-weight: 600;
  border-radius: 6px;
  cursor: pointer;
  padding: 2px 6px;
}
.kalendar__event--overflow:hover {
  background: var(--color-bg-hover, #e2e8f0);
  color: var(--color-text, #1a1d2b);
}
.kalendar__event-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,.18);
  color: #fff;
  font-size: .65rem;
  font-weight: 700;
  border-radius: 999px;
  padding: 1px 6px;
  margin-left: 6px;
  flex-shrink: 0;
}

/* ── Calendar refactor 2026-05-13: mode toggle + cal cards + share modal ── */
.kalendar__date-jump {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.kalendar__title-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  padding: 4px 8px;
  margin: 0;
  font: inherit;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--color-text, #1a1d2b);
  cursor: pointer;
  transition: background .12s, border-color .12s;
}
.kalendar__title-btn:hover {
  background: var(--color-bg-hover, rgba(0,0,0,.04));
  border-color: var(--color-border, #e2e8f0);
}
.kalendar__title-btn:focus-visible {
  outline: 2px solid var(--color-accent, #0d9488);
  outline-offset: 2px;
}
.kalendar__title-btn svg {
  opacity: .55;
  flex-shrink: 0;
}
.kalendar__date-picker {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 0;
}

.kalendar__new-event-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  margin: 0 0 12px;
  padding: 10px 14px;
  font-size: .9rem;
  font-weight: 600;
  border-radius: 8px;
  /* Pinned na vrchu scrollable sidebar-body — vlastní bg na btn--primary maskuje
     scrolling content za ním. Sentinel-spacer (.65rem) pod sticky stack pomáhá
     vizuálně oddělit od následujících sekcí při scrollu. */
  position: sticky;
  top: 0;
  z-index: 3;
}
.kalendar__new-event-btn svg {
  flex-shrink: 0;
}

.kalendar__mode-toggle {
  display: inline-flex;
  background: var(--color-surface, #fff);
  border: 1px solid var(--color-border, #e2e8f0);
  border-radius: 999px;
  padding: 2px;
  gap: 2px;
  margin-right: 8px;
}
.kalendar__mode-btn {
  background: transparent;
  border: 0;
  padding: 6px 14px;
  font-size: .85rem;
  font-weight: 600;
  color: var(--color-text-muted, #6e7389);
  border-radius: 999px;
  cursor: pointer;
  transition: background .15s, color .15s;
  font-family: inherit;
}
.kalendar__mode-btn:hover { color: var(--color-text, #1a1d2b); }
.kalendar__mode-btn--active {
  background: var(--color-accent, #0d9488);
  color: #fff;
}
.kalendar__mode-btn[disabled] {
  opacity: .4;
  cursor: not-allowed;
}
.kalendar__mode-btn[disabled]:hover { color: var(--color-text-muted, #6e7389); }

.kalendar__cal-card {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 4px 4px 4px 2px;
  border-radius: 6px;
  cursor: pointer;
  transition: background .12s;
  position: relative;
  min-height: 24px;
}
.kalendar__cal-card:hover { background: rgba(0,0,0,.04); }
.kalendar__cal-card input[type="checkbox"] { margin: 0; flex-shrink: 0; }
.kalendar__cal-card-color {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  flex-shrink: 0;
}
/* Ikonka typu události v sekci „Typy událostí" — barva v té sekci nemá smysl
   (events dědí color z přiřazeného kalendáře, ne z typu), proto ikona místo kruhu.
   Mirror ikon z .kalendar__event-typeicon v gridu pro vizuální konzistenci. */
.kalendar__cal-card-typeicon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--kal-c-strong, #475569);
  opacity: .75;
}
.kalendar__cal-card-typeicon svg {
  width: 14px;
  height: 14px;
  display: block;
}
.kalendar__cal-card:hover .kalendar__cal-card-typeicon { opacity: 1; }
/* Jméno kalendáře — single-line s ellipsisem. Plný text dostupný přes title atribut
   (renderCalCard přidává) + hover tooltip. Dvouřádkové zalamování bylo nepřehledné. */
.kalendar__cal-card-name {
  flex: 1;
  min-width: 0;
  font-size: .78rem;
  line-height: 1.3;
  color: var(--kal-c-strong, #0f172a);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kalendar__cal-card--personal .kalendar__cal-card-name { font-weight: 500; }
.kalendar__cal-card--team .kalendar__cal-card-name { font-weight: 600; }
/* Wrapper přes jméno + sub-řádek (aktivní místnost) — flex column, sdílí slot s názvem */
.kalendar__cal-card-name-wrap {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.kalendar__cal-card-name-wrap .kalendar__cal-card-name {
  flex: 0 0 auto;
}
.kalendar__cal-card-sub {
  font-size: .68rem;
  line-height: 1.2;
  color: var(--color-text-muted, #6e7389);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kalendar__cal-card-cog {
  opacity: .55;                  /* mírně viditelný i bez hoveru */
  background: transparent;
  border: 0;
  cursor: pointer;
  color: var(--color-text-muted, #6e7389);
  padding: 2px;
  font-size: 14px;
  line-height: 1;
  border-radius: 4px;
  transition: opacity .12s, background .12s, color .12s;
  flex-shrink: 0;
}
.kalendar__cal-card:hover .kalendar__cal-card-cog { opacity: 1; }
.kalendar__cal-card-cog:hover {
  background: rgba(13,148,136,.1);
  color: var(--color-accent, #0d9488);
  opacity: 1;
}

.kalendar__cal-divider {
  height: 1px;
  background: var(--color-border, #e2e8f0);
  margin: 8px 4px;
}
.kalendar__cal-subhead {
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--color-text-muted, #64748b);
  padding: .35rem .5rem .25rem;
  margin-top: 2px;
}

.kalendar__sys-group { margin-bottom: 6px; }
.kalendar__sys-group-header {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  cursor: pointer;
  user-select: none;
  border-radius: 6px;
}
.kalendar__sys-group-header:hover { background: rgba(0,0,0,.04); }
.kalendar__sys-group-chevron {
  display: inline-block;
  transition: transform .15s;
  font-size: 10px;
}
.kalendar__sys-group.is-collapsed .kalendar__sys-group-chevron {
  transform: rotate(-90deg);
}
.kalendar__sys-group.is-collapsed .kalendar__sys-group-body { display: none; }
.kalendar__sys-group-label {
  font-size: .82rem;
  font-weight: 600;
  color: var(--color-text, #1a1d2b);
}
.kalendar__sys-group-body { padding: 2px 6px 2px 22px; }
.kalendar__sys-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 6px;
  font-size: .8rem;
  border-radius: 4px;
  cursor: pointer;
}
.kalendar__sys-item:hover { background: rgba(0,0,0,.04); }
.kalendar__sys-item input[type="checkbox"] { margin: 0; flex-shrink: 0; }

.kalendar__share-modal .form-row {
  display: block;
  margin-bottom: 12px;
  font-size: .85rem;
  font-weight: 600;
  color: var(--color-text-secondary, #475569);
}
.kalendar__share-modal .form-row input[type="text"],
.kalendar__share-modal .form-row input[type="color"],
.kalendar__share-modal .form-row textarea,
.kalendar__share-modal .form-row select {
  width: 100%;
  margin-top: 4px;
  padding: .5rem .7rem;
  font-size: .9rem;
  font-family: inherit;
  font-weight: 400;
  color: var(--color-text, #1a1d2b);
  background: var(--color-surface, #fff);
  border: 1px solid var(--color-border, #e2e8f0);
  border-radius: 8px;
  transition: border-color .15s, box-shadow .15s;
  box-sizing: border-box;
}
.kalendar__share-modal .form-row input[type="color"] {
  height: 38px;
  padding: 3px;
  cursor: pointer;
}
.kalendar__share-modal .form-row input[type="text"]:focus,
.kalendar__share-modal .form-row textarea:focus,
.kalendar__share-modal .form-row select:focus {
  outline: none;
  border-color: var(--color-accent, #0d9488);
  box-shadow: 0 0 0 3px rgba(13, 148, 136, .12);
}
.kalendar__share-modal h4 {
  margin: 1.1rem 0 .55rem;
  font-size: .82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--color-text-muted, #64748b);
}
.kalendar__share-modal hr {
  border: 0;
  border-top: 1px solid var(--color-border, #e2e8f0);
  margin: 1.1rem 0 .5rem;
}
/* ── Share modal: nový styl (kal-share__*) — karty s permission badge + inline změna ── */
.kal-share__hint {
  font-size: .78rem;
  color: var(--color-text-muted, #64748b);
  margin: 0 0 .65rem;
  line-height: 1.45;
}
.kal-share__color-row {
  display: flex;
  align-items: center;
  gap: .65rem;
}
.kal-share__color-row input[type="color"] {
  width: 42px;
  height: 32px;
  padding: 2px;
  border: 1px solid var(--color-border, #e2e8f0);
  border-radius: 6px;
  cursor: pointer;
  background: #fff;
}
.kal-share__color-hint {
  font-size: .75rem;
  color: var(--color-text-muted, #64748b);
}
.kal-share__list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0 0 .65rem;
}
.kal-share__empty {
  padding: .6rem .75rem;
  font-size: .78rem;
  color: var(--color-text-muted, #94a3b8);
  background: #f8fafc;
  border: 1px dashed var(--color-border, #e2e8f0);
  border-radius: 6px;
  text-align: center;
}
.kal-share__item {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .45rem .6rem;
  background: #fff;
  border: 1px solid var(--color-border, #e2e8f0);
  border-radius: 8px;
  transition: background .12s, border-color .12s;
}
.kal-share__item:hover {
  background: #f0fdfa;
  border-color: #5eead4;
}
.kal-share__item-icon {
  font-size: 1rem;
  flex-shrink: 0;
}
.kal-share__item-name {
  flex: 1 1 auto;
  min-width: 0;
  font-size: .85rem;
  font-weight: 600;
  color: var(--color-text, #0f172a);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.kal-share__perm-badge {
  font-size: .7rem;
  font-weight: 700;
  padding: .12rem .45rem;
  border-radius: 999px;
  white-space: nowrap;
  flex-shrink: 0;
}
.kal-share__perm-badge--read   { background: #f1f5f9; color: #475569; border: 1px solid #cbd5e1; }
.kal-share__perm-badge--add    { background: #dbeafe; color: #1e40af; border: 1px solid #bfdbfe; }
.kal-share__perm-badge--manage { background: #fef3c7; color: #92400e; border: 1px solid #fde68a; }
.kal-share__perm-select {
  font-size: .78rem;
  padding: .25rem .35rem;
  border: 1px solid var(--color-border, #e2e8f0);
  border-radius: 5px;
  background: #fff;
  cursor: pointer;
  flex-shrink: 0;
  min-width: 0;
}
.kal-share__remove {
  background: transparent;
  border: 0;
  color: var(--color-text-muted, #94a3b8);
  cursor: pointer;
  font-size: 14px;
  width: 26px;
  height: 26px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background .12s, color .12s;
}
.kal-share__remove:hover {
  background: rgba(220, 38, 38, .1);
  color: var(--color-danger, #dc2626);
}
.kal-share__add {
  padding: .65rem;
  background: #f8fafc;
  border: 1px solid var(--color-border, #e2e8f0);
  border-radius: 8px;
}
.kal-share__add-row {
  display: flex;
  gap: .5rem;
  align-items: center;
  flex-wrap: wrap;
}
.kal-share__pick { flex: 2 1 180px; min-width: 0; }
.kal-share__perm { flex: 1 1 140px; min-width: 0; }

/* Legacy aliases — zachovat pro starou strukturu (kdyby zůstal HTML callsite) */
.kalendar__share-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
  border-bottom: 1px solid var(--color-border-light, #eef2f7);
}
.kalendar__share-row > span:first-child { flex: 1; font-size: .85rem; }
.kalendar__share-row select { width: 110px; flex-shrink: 0; }
.kalendar__share-add-row {
  display: flex;
  gap: 8px;
  margin: 10px 0 16px;
  align-items: center;
}
.kalendar__share-add-row select { flex: 1; }

.kalendar__priv-row {
  display: flex !important;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}

/* ── Spodní oznamovací lišta (sdílená: cookies + výběr pracoviště) ─────────── */
.notice-bar {
  position: fixed; left: 0; right: 0; bottom: 0;
  z-index: 9990;
  background: linear-gradient(160deg, #1e293b, #334155);
  border-top: 1px solid rgba(255,255,255,.1);
  box-shadow: 0 -4px 20px rgba(0,0,0,.15);
  color: #fff;
  font-family: inherit;
  display: none;
}
.notice-bar--visible { display: block; }
.notice-bar__row {
  max-width: 1100px; margin: 0 auto;
  display: flex; align-items: center; gap: 1.25rem; flex-wrap: wrap;
  padding: .9rem 1.5rem;
}
.notice-bar__text { flex: 1; min-width: 220px; }
.notice-bar__title { margin: 0 0 .15rem; font-size: .92rem; font-weight: 700; }
.notice-bar__sub   { margin: 0; font-size: .82rem; color: rgba(255,255,255,.6); line-height: 1.4; }
.notice-bar__actions { display: flex; gap: .5rem; flex-shrink: 0; flex-wrap: wrap; }
.notice-bar__btn {
  background: transparent; border: 1px solid rgba(255,255,255,.25);
  color: rgba(255,255,255,.8); padding: .5rem 1rem; border-radius: 8px;
  font-size: .82rem; font-weight: 600; cursor: pointer;
  transition: border-color .15s, color .15s, background .15s;
}
.notice-bar__btn:hover { border-color: #5eead4; color: #5eead4; }
.notice-bar__btn--primary {
  background: #0d9488; border-color: #0d9488; color: #fff; font-weight: 700;
}
.notice-bar__btn--primary:hover { background: #0f766e; border-color: #0f766e; color: #fff; }
.notice-bar__countdown { font-size: .78rem; color: rgba(255,255,255,.5); white-space: nowrap; }
.notice-bar__close {
  background: transparent; border: 0; color: rgba(255,255,255,.6);
  font-size: 1.2rem; line-height: 1; cursor: pointer; padding: .25rem .4rem;
}
.notice-bar__close:hover { color: #fff; }
.notice-bar__panel {
  max-width: 1100px; margin: 0 auto;
  padding: .7rem 1.5rem; border-bottom: 1px solid rgba(255,255,255,.1);
  display: none;
}
.notice-bar--expanded .notice-bar__panel { display: block; }
.notice-bar__panel-row { display: flex; align-items: flex-start; gap: .65rem; }
.notice-bar__panel-row + .notice-bar__panel-row { margin-top: .4rem; }
.notice-bar__panel-label {
  flex: 0 0 4.25rem; padding-top: .42rem;
  font-size: .72rem; text-transform: uppercase; letter-spacing: .04em;
  color: rgba(255,255,255,.5);
}
.notice-bar__chips { display: flex; flex-wrap: wrap; gap: .4rem; flex: 1; min-width: 0; }
.notice-bar__chip {
  background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18);
  color: #fff; padding: .4rem .8rem; border-radius: 999px;
  font-size: .82rem; cursor: pointer; transition: background .12s, border-color .12s;
}
.notice-bar__chip:hover { background: rgba(94,234,212,.16); border-color: #5eead4; }
.notice-bar__chip--active { background: #0d9488; border-color: #0d9488; }
.notice-bar__chip--last:not(.notice-bar__chip--active) { border-color: rgba(255,255,255,.42); }
@media (max-width: 600px) {
  .notice-bar__row, .notice-bar__panel { padding-left: 1rem; padding-right: 1rem; }
}

/* ── Karty výběru pracoviště (active-location-modal + msSwitch) ─────────────
   Moderní technický styl: ploché karty, tenké linky, levá accent lišta,
   monospace pro adresu/meta, jeden accent (#0d9488). */
.aloc-list { display: flex; flex-direction: column; gap: .5rem; }
.aloc-special { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .5rem; }
.aloc-special .aloc-card { flex: 1 1 240px; }
.aloc-card {
  display: flex; align-items: center; gap: .8rem;
  width: 100%; text-align: left; padding: .7rem .9rem;
  background: #fff;
  border: 1px solid #e2e8f0; border-left: 3px solid #e2e8f0;
  border-radius: 7px;
  cursor: pointer; font-family: inherit; color: inherit;
  transition: border-color .14s, box-shadow .14s, background .14s;
}
.aloc-card:hover {
  border-color: #0d9488; border-left-color: #0d9488;
  box-shadow: 0 2px 10px rgba(13,148,136,.10);
}
.aloc-card.is-active {
  border-color: #0d9488; border-left-color: #0d9488; background: #f6fdfb;
}
.aloc-card__icon {
  flex-shrink: 0; width: 34px; height: 34px; border-radius: 6px;
  background: #f1f5f9; border: 1px solid #e2e8f0; color: #475569;
  display: inline-flex; align-items: center; justify-content: center;
}
.aloc-card.is-active .aloc-card__icon { background: #0d9488; border-color: #0d9488; color: #fff; }
.aloc-card__body { display: flex; flex-direction: column; gap: .16rem; flex: 1; min-width: 0; }
.aloc-card__head { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; }
.aloc-card__name { font-weight: 650; font-size: .94rem; color: #1e293b; }
.aloc-card__label, .aloc-card__primary {
  font-size: .62rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em;
  color: #64748b; background: #f1f5f9; border: 1px solid #e2e8f0;
  padding: .07rem .4rem; border-radius: 4px;
}
.aloc-card__room {
  font-size: .62rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;
  color: #0f766e; background: #ecfeff; border: 1px solid #a5f3fc;
  padding: .07rem .4rem; border-radius: 4px;
}
.aloc-card__hint { font-size: .73rem; color: #0f766e; }
.aloc-card__addr {
  font-family: var(--font-mono);
  font-size: .73rem; color: #64748b; line-height: 1.4; word-break: break-word;
}
.aloc-card__meta {
  display: flex; flex-wrap: wrap; gap: .8rem;
  font-size: .72rem; color: #64748b; margin-top: .1rem;
}
.aloc-card__check {
  flex-shrink: 0; white-space: nowrap;
  font-size: .64rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: #0d9488;
}
.aloc-card__check::before {
  content: ''; display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  background: #0d9488; margin-right: .35rem; vertical-align: middle;
}
@media (max-width: 540px) {
  .aloc-special { flex-direction: column; }
  .aloc-card { padding: .6rem .7rem; }
  .aloc-card__icon { width: 30px; height: 30px; }
}

/* ── Typografie modalu výběru pracoviště ───────────────────────────────────
   Sjednoceno na Inter (modern / čistý / humanistický = empatický), vyladěná
   škála velikostí, vzdušné line-heighty, jemný negativní tracking u nadpisů. */
/* Odsazení modalu od okrajů obrazovky — vzdušnější na všech stranách */
#activeLocationModal { padding: 2.5rem; }
@media (max-width: 600px) { #activeLocationModal { padding: 1rem; } }
/* Vnitřní odsazení — vzdušnější obsah uvnitř modalu */
#activeLocationModal .modal__header { padding: 1.9rem 2.25rem 1.15rem; }
#activeLocationModal .modal__body   { padding: 1.15rem 2.25rem 1.9rem; }
#activeLocationModal .modal__footer { padding: 1.35rem 2.25rem 1.9rem; }
@media (max-width: 600px) {
  #activeLocationModal .modal__header,
  #activeLocationModal .modal__body   { padding: 1.1rem 1.15rem; }
  #activeLocationModal .modal__footer { padding: .9rem 1.15rem 1.1rem; }
}
#activeLocationModal .modal__title {
  font-size: 1.34rem; font-weight: 700; letter-spacing: -.012em; color: #0f172a;
}
#activeLocationModal .modal__subtitle {
  font-size: .875rem; font-weight: 400; line-height: 1.55; color: #64748b;
}
#activeLocationModal .aloc-card__name {
  font-size: 1rem; font-weight: 600; letter-spacing: -.005em;
}
#activeLocationModal .aloc-card__addr {
  font-family: inherit;          /* Inter místo monospace — čistší a vřelejší */
  font-size: .8rem; line-height: 1.5; color: #64748b;
}
#activeLocationModal .aloc-card__hint { font-size: .8rem; line-height: 1.5; }
#activeLocationModal .aloc-card__label,
#activeLocationModal .aloc-card__primary { font-size: .66rem; }
#activeLocationModal .aloc-card__check { font-size: .68rem; }
#activeLocationModal .modal__footer .btn { font-size: .86rem; }
/* Sjednocená výška karet — krátké (jen název) se dorovnají k vícerádkovým */
#activeLocationModal .aloc-card { min-height: 4.5rem; }

.kalendar__priv-row input[type="checkbox"] { margin: 0; }

/* ============================================================
   SJEDNOCENÝ ZAVÍRACÍ KŘÍŽEK MODALŮ
   Vzor: .navbar__notif-modal-close (#notifBackdrop)
   Platí pro: modal__close, modal__close-x, qr-modal__close,
              navbar__notif-modal-close, navbar__notif-detail-close,
              dc-modal-close (dental-chart.css), chat-lightbox__close (chat-panel.php),
              doc-modal__close (wiki/assets/style.css)
   ============================================================ */
/* Pozdní override pro themed + on-dark varianty — zaručuje výhru specificity */
.modal--themed .modal__close-x,
.modal--themed .modal__close-x:not(:hover),
.modal__close--on-dark {
  background: #f1f5f9 !important;
  color: #475569 !important;
}
.modal--themed .modal__close-x:hover,
.modal__close--on-dark:hover {
  background: #fee2e2 !important;
  color: #b91c1c !important;
  transform: rotate(90deg) !important;
}

/* ==========================================================================
   Úvodní průvodce — onboarding wizard (uvodni-nastaveni.php)
   ========================================================================== */
.btn--text {
  background: transparent;
  border: 1px solid transparent;
  color: var(--color-text-muted);
  box-shadow: none;
  padding: .45rem .65rem;
}
.btn--text:hover {
  background: transparent;
  color: var(--color-accent);
  text-decoration: underline;
}

/* ============================================================
   ÚVODNÍ PRŮVODCE — onboarding wizard (redesign 2026-05-19)
   ============================================================ */
.wiz-wrap {
  width: var(--app-content-width);
  max-width: var(--app-content-max);
  margin: 0 auto 3.5rem;
  padding: 0 var(--app-content-padding);
}

/* — Uvítací hlavička — */
.wiz-hero {
  position: relative;
  overflow: hidden;
  margin: 1.75rem 0 1.5rem;
  padding: 1.9rem 2rem;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, #1a2035 0%, #2b3450 55%, #3d4a65 100%);
  color: #fff;
}
.wiz-hero::after {
  content: "";
  position: absolute;
  right: -70px; top: -70px;
  width: 220px; height: 220px;
  background: radial-gradient(circle, rgba(94, 234, 212, .22), transparent 70%);
  pointer-events: none;
}
.wiz-hero__eyebrow {
  margin: 0 0 .4rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: #5eead4;
  position: relative;
}
.wiz-hero__title {
  margin: 0 0 .45rem;
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.25;
  position: relative;
  color: #ffffff;
}
.wiz-hero__sub {
  margin: 0;
  font-size: .95rem;
  color: rgba(255, 255, 255, .72);
  line-height: 1.55;
  position: relative;
}

/* — Stepper s progress linkou — */
.wiz-steps {
  display: flex;
  margin: 0 0 1.5rem;
  padding: 0 .25rem;
}
.wiz-step {
  flex: 1;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .5rem;
  text-align: center;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}
.wiz-step:hover .wiz-step__num { border-color: var(--color-accent); }
.wiz-step:hover .wiz-step__label { color: var(--color-accent); }
.wiz-step::before,
.wiz-step::after {
  content: "";
  position: absolute;
  top: 16px;
  height: 2px;
  width: 50%;
  background: var(--color-border);
  z-index: 0;
}
.wiz-step::before { left: 0; }
.wiz-step::after  { right: 0; }
.wiz-step:first-child::before { display: none; }
.wiz-step:last-child::after { display: none; }
.wiz-step--done::before,
.wiz-step--done::after,
.wiz-step--active::before { background: var(--color-accent); }
.wiz-step__num {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px; height: 34px;
  border-radius: 50%;
  background: var(--color-surface);
  border: 2px solid var(--color-border);
  color: var(--color-text-muted);
  font-weight: 700;
  font-size: .9rem;
}
.wiz-step__label {
  font-size: .95rem;
  line-height: 1.3;
  max-width: 14ch;
  color: var(--color-text-muted);
}
.wiz-step--active .wiz-step__num {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
  box-shadow: 0 0 0 4px rgba(13, 148, 136, .15);
}
.wiz-step--active .wiz-step__label {
  color: var(--color-accent);
  font-weight: 700;
}
.wiz-step--done .wiz-step__num {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: transparent;
}
.wiz-step--done .wiz-step__num::after {
  content: "✓";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 1rem;
}
.wiz-step--done .wiz-step__label { color: var(--color-text); }

/* — Panel — */
.wiz-panel {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  padding: 2rem 2.25rem;
  animation: wizFade .35s ease;
}
@keyframes wizFade {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.wiz-panel__title {
  margin: 0 0 .4rem;
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--color-heading);
}
.wiz-panel__intro {
  margin: 0 0 1.5rem;
  color: var(--color-text);
  font-size: 1rem;
  line-height: 1.6;
}

/* — Systémová hláška — */
.wiz-alert {
  display: flex;
  gap: .65rem;
  align-items: flex-start;
  margin: 0 0 1.25rem;
  padding: .85rem 1rem;
  border-radius: 10px;
  border: 1px solid;
  font-size: .88rem;
  line-height: 1.5;
}
.wiz-alert__icon { flex-shrink: 0; font-size: 1.05rem; line-height: 1.3; }
.wiz-alert__text { flex: 1; }
.wiz-alert--success { background: #f0fdf4; border-color: #bbf7d0; color: #166534; }
.wiz-alert--danger,
.wiz-alert--error   { background: #fef2f2; border-color: #fecaca; color: #991b1b; }
.wiz-alert--warning { background: #fffbeb; border-color: #fde68a; color: #92400e; }
.wiz-alert--info    { background: #eff6ff; border-color: #bfdbfe; color: #1e40af; }

/* — Callout / poznámka — */
.wiz-note {
  display: flex;
  gap: .6rem;
  align-items: flex-start;
  margin: 0 0 1rem;
  padding: .75rem .9rem;
  border-radius: 10px;
  border: 1px solid;
  font-size: .83rem;
  line-height: 1.55;
}
.wiz-note__icon { flex-shrink: 0; }
.wiz-note--info    { background: #eff6ff; border-color: #bfdbfe; color: #1e40af; }
.wiz-note--success { background: #f0fdf4; border-color: #bbf7d0; color: #166534; }
.wiz-note--warning { background: #fffbeb; border-color: #fde68a; color: #92400e; }
.wiz-note--muted   { background: var(--color-surface-alt); border-color: var(--color-border); color: var(--color-text-muted); }

/* — Form systém — */
.wiz-field { margin-bottom: 1.15rem; }
.wiz-field:last-child { margin-bottom: 0; }
.wiz-field__label {
  display: block;
  margin-bottom: .35rem;
  font-size: .85rem;
  font-weight: 600;
  color: var(--color-text);
}
.wiz-field__hint {
  margin: .35rem 0 0;
  font-size: .78rem;
  color: var(--color-text-muted);
  line-height: 1.5;
}
.wiz-field-row {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.15rem;
}
.wiz-field-row .wiz-field { flex: 1; min-width: 150px; margin-bottom: 0; }

.wiz-section-label {
  margin: 1.6rem 0 .8rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* zamčená (ARES) pole — vizuálně zašedlá */
.wiz-field .form-control[readonly] {
  background: var(--color-surface-alt);
  color: var(--color-text-muted);
  cursor: not-allowed;
}

/* akční lišta panelu — tlačítka staticky, jednotná velikost, plná šířka */
.wiz-panel__actions {
  display: flex;
  flex-direction: column;
  gap: .6rem;
  margin-top: 1.75rem;
}
.wiz-panel__actions .btn {
  width: 100%;
  justify-content: center;
}

/* — Místnosti — */
.wiz-rooms-head,
.wiz-room-row {
  display: grid;
  grid-template-columns: minmax(0, 2fr) 70px minmax(0, 2fr) 38px;
  gap: .5rem;
  align-items: center;
}
.wiz-rooms-head {
  margin-bottom: .35rem;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}
.wiz-room-row { margin-bottom: .5rem; }
.wiz-room-del {
  width: 38px; height: 38px;
  border: 1px solid var(--color-border);
  background: var(--color-surface-alt);
  color: var(--color-text-muted);
  border-radius: 8px;
  cursor: pointer;
  font-size: 1.15rem;
  line-height: 1;
  transition: background .12s, color .12s, border-color .12s;
}
.wiz-room-del:hover { background: #fef2f2; color: #dc2626; border-color: #fecaca; }

/* — Navigace — */
.wiz-nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  margin-top: 1.5rem;
}
.wiz-nav:empty { display: none; }
.wiz-nav__group { display: flex; gap: .5rem; align-items: center; }

.wiz-dismiss {
  text-align: center;
  margin-top: 1.25rem;
}
.wiz-dismiss button {
  background: none;
  border: none;
  padding: .35rem;
  font-size: .82rem;
  color: var(--color-text-muted);
  text-decoration: underline;
  cursor: pointer;
}
.wiz-dismiss button:hover { color: var(--color-text); }

@media (max-width: 640px) {
  .wiz-hero { padding: 1.45rem 1.3rem; }
  .wiz-hero__title { font-size: 1.25rem; }
  .wiz-step__label { font-size: .82rem; }
  .wiz-panel { padding: 1.4rem 1.3rem; }
  .wiz-nav { flex-direction: column-reverse; align-items: stretch; }
  .wiz-nav__group { justify-content: center; }
  .wiz-rooms-head { display: none; }
  .wiz-room-row {
    grid-template-columns: 1fr;
    gap: .45rem;
    padding: .7rem;
    margin-bottom: .6rem;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    background: var(--color-surface-alt);
  }
  .wiz-room-del { width: 100%; }
}

/* ─────────────────────────────────────────────────────────────
   Doctor Credentials (odborné kompetence)
   ───────────────────────────────────────────────────────────── */
.dcred-toolbar {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  padding: .6rem .75rem;
  background: var(--color-surface-alt);
  border-radius: var(--radius);
  margin-bottom: 1rem;
}
.dcred-categories {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
}
.dcred-cat__title {
  margin: 0 0 .35rem;
  font-size: .92rem;
  font-weight: 700;
  color: var(--color-primary);
  display: flex;
  align-items: center;
  gap: .4rem;
  padding-bottom: .3rem;
  border-bottom: 1px solid var(--color-border);
}
.dcred-cat__icon {
  display: inline-block;
  width: 6px; height: 6px;
  background: currentColor;
  border-radius: 50%;
  opacity: .55;
  font-size: 0;
}
.dcred-cat__count {
  font-size: .72rem;
  font-weight: 600;
  color: var(--color-text-muted);
  margin-left: .25rem;
}
.dcred-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.dcred-empty {
  color: var(--color-text-muted);
  font-size: .82rem;
  font-style: italic;
  padding: .35rem .25rem;
}
.dcred-item {
  display: flex;
  align-items: flex-start;
  gap: .75rem;
  padding: .65rem .85rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  transition: box-shadow .15s ease, border-color .15s ease;
}
.dcred-item:hover {
  border-color: #cbd5e1;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.dcred-item__main { flex: 1; min-width: 0; }
.dcred-item__title {
  font-size: .92rem;
  font-weight: 700;
  color: var(--color-text);
  line-height: 1.35;
}
.dcred-item__meta {
  font-size: .76rem;
  color: var(--color-text-muted);
  margin-top: .2rem;
  line-height: 1.4;
}
.dcred-item__desc {
  font-size: .82rem;
  color: var(--color-text);
  margin-top: .35rem;
  line-height: 1.45;
}
.dcred-item__actions {
  display: flex;
  align-items: center;
  gap: .35rem;
  flex-shrink: 0;
}
.dcred-pub {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .2rem .5rem;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 999px;
  font-size: .7rem;
  font-weight: 600;
  color: #166534;
  cursor: pointer;
  user-select: none;
}
.dcred-pub input { margin: 0; cursor: pointer; }
.dcred-pub:has(input:not(:checked)) {
  background: #f8fafc;
  border-color: #e2e8f0;
  color: var(--color-text-muted);
}
.dcred-pub-badge {
  font-size: .68rem;
  font-weight: 700;
  padding: .15rem .55rem;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  color: #166534;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 6px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text-muted);
  cursor: pointer;
  padding: 0;
  transition: all .15s ease;
}
.btn-icon:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: #f8fafc;
}
.btn-icon--danger:hover {
  border-color: #dc2626;
  color: #dc2626;
  background: #fef2f2;
}
@media (max-width: 640px) {
  .dcred-item { flex-direction: column; align-items: stretch; }
  .dcred-item__actions { justify-content: flex-end; }
}

/* iOS-style switch pro toggle checkboxy uvnitř credentials modalu */
.dcred-toggle {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  padding: .7rem .85rem;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
  user-select: none;
}
.dcred-toggle:hover { border-color: #cbd5e1; }
.dcred-toggle input { position: absolute; opacity: 0; pointer-events: none; }
.dcred-toggle__slot {
  position: relative;
  flex-shrink: 0;
  width: 36px;
  height: 20px;
  background: #cbd5e1;
  border-radius: 999px;
  transition: background .2s ease;
  margin-top: 1px;
}
.dcred-toggle__dot {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 1px 2px rgba(0,0,0,.18);
  transition: transform .2s ease;
}
.dcred-toggle input:checked ~ .dcred-toggle__slot { background: #0d9488; }
.dcred-toggle input:checked ~ .dcred-toggle__slot .dcred-toggle__dot { transform: translateX(16px); }
.dcred-toggle input:focus-visible ~ .dcred-toggle__slot {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}
.dcred-toggle__label { flex: 1; min-width: 0; line-height: 1.4; }
.dcred-toggle__label strong {
  display: block;
  font-size: .85rem;
  font-weight: 700;
  color: var(--color-text);
}
.dcred-toggle__label small {
  display: block;
  font-size: .74rem;
  color: var(--color-text-muted);
  margin-top: .15rem;
  line-height: 1.45;
}
.dcred-toggle--public:has(input:checked) {
  background: #f0fdfa;
  border-color: #99f6e4;
}
.dcred-toggle--public:has(input:checked) .dcred-toggle__label strong { color: #0f766e; }

/* ─────────────────────────────────────────────────────────────
   Procedure types (Typy výkonů — HL katalog)
   ───────────────────────────────────────────────────────────── */
.ptype-toolbar {
  display: flex;
  gap: .5rem;
  margin-bottom: 1rem;
  flex-wrap: wrap;
  align-items: center;
}
.ptype-list {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.ptype-cat__title {
  margin: 0 0 .35rem;
  font-size: .82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--color-text-muted);
  padding-bottom: .3rem;
  border-bottom: 1px solid var(--color-border);
}
.ptype-cat__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .35rem;
}
.ptype-row {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .55rem .75rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  transition: box-shadow .15s, border-color .15s;
}
.ptype-row:hover { border-color: #cbd5e1; box-shadow: 0 1px 3px rgba(0,0,0,.04); }
.ptype-row--inactive { opacity: .55; background: var(--color-surface-alt); }
.ptype-row__emoji {
  font-size: 1.1rem;
  width: 30px;
  text-align: center;
  flex-shrink: 0;
}
.ptype-row__main { flex: 1; min-width: 0; }
.ptype-row__name { display: block; font-size: .9rem; font-weight: 600; color: var(--color-text); }
.ptype-row__code {
  display: block;
  font-size: .7rem;
  color: var(--color-text-muted);
  font-family: var(--font-mono, monospace);
  margin-top: .1rem;
}
.ptype-row__dur {
  font-size: .78rem;
  font-weight: 600;
  color: #0f766e;
  background: #f0fdfa;
  border: 1px solid #99f6e4;
  border-radius: 999px;
  padding: .15rem .55rem;
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}
@media (max-width: 640px) {
  .ptype-row { flex-wrap: wrap; }
  .ptype-row__main { flex-basis: calc(100% - 50px); }
  .ptype-row__dur { order: 5; }
}

/* Wizard varianta — kompaktnější, inline duration edit */
.wiz-pt-toolbar {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
  padding: .55rem .75rem;
  background: var(--color-surface-alt);
  border-radius: 8px;
  margin-bottom: 1rem;
}
.wiz-pt-list { display: flex; flex-direction: column; gap: 1rem; }
.wiz-pt-cat__title {
  margin: 0 0 .3rem; font-size: .78rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em;
  color: var(--color-text-muted); padding-bottom: .25rem;
  border-bottom: 1px solid var(--color-border);
}
.wiz-pt-cat__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .3rem; }
.wiz-pt-row {
  display: flex; align-items: center; gap: .55rem;
  padding: .45rem .65rem; background: var(--color-surface);
  border: 1px solid var(--color-border); border-radius: 8px;
}
.wiz-pt-row--inactive { opacity: .55; background: var(--color-surface-alt); }
.wiz-pt-row__emoji { font-size: 1.05rem; width: 26px; text-align: center; flex-shrink: 0; }
.wiz-pt-row__name { flex: 1; font-size: .88rem; font-weight: 600; color: var(--color-text); min-width: 0; }
.wiz-pt-row__dur-wrap { display: inline-flex; align-items: center; gap: .25rem; flex-shrink: 0; }
.wiz-pt-row__dur {
  width: 70px; text-align: center; font-variant-numeric: tabular-nums;
  padding: .25rem .35rem; font-size: .85rem;
}
.wiz-pt-row__dur--saved { background: #f0fdfa !important; border-color: #99f6e4 !important; }
.wiz-pt-row__dur-unit { font-size: .75rem; color: var(--color-text-muted); }
.wiz-pt-row--saved { animation: wiz-pt-row-flash .8s ease-out; }
@keyframes wiz-pt-row-flash {
  0%   { background: #ecfdf5; border-color: #6ee7b7; box-shadow: 0 0 0 2px #d1fae5; }
  100% { background: var(--color-surface); border-color: var(--color-border); box-shadow: none; }
}

/* ─────────────────────────────────────────────────────────────
   Public slug — live availability check + history
   ───────────────────────────────────────────────────────────── */
.prof-slug-check {
  margin-top: .4rem;
  font-size: .75rem;
  line-height: 1.45;
  min-height: 1.2em;
}
.prof-slug-check--idle  { color: transparent; }
.prof-slug-check--ok    { color: #166534; }
.prof-slug-check--warn  { color: #92400e; }
.prof-slug-check--err   { color: #991b1b; }
.prof-slug-check--error { color: var(--color-text-muted); }

.prof-slug-history {
  margin-top: 1rem;
  padding: .85rem 1rem;
  background: #fef3c7;
  border: 1px solid #fde68a;
  border-left: 3px solid #d97706;
  border-radius: 0 8px 8px 0;
}
.prof-slug-history__title {
  font-size: .82rem;
  font-weight: 700;
  color: #78350f;
  margin-bottom: .45rem;
}
.prof-slug-history__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .35rem;
}
.prof-slug-history__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .55rem;
  padding: .35rem .55rem;
  background: rgba(255,255,255,.55);
  border-radius: 6px;
  flex-wrap: wrap;
}
.prof-slug-history__slug {
  font-size: .78rem;
  font-family: var(--font-mono, monospace);
  color: #78350f;
  word-break: break-all;
}
.prof-slug-history__meta {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  flex-shrink: 0;
}
.prof-slug-history__badge {
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: .1rem .45rem;
  background: #fbbf24;
  color: #78350f;
  border-radius: 999px;
}
.prof-slug-history__days {
  font-size: .72rem;
  font-weight: 600;
  color: #92400e;
}

/* Banner: pending deletion request */
.prof-del-banner {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: .85rem 1.1rem;
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-left: 4px solid #dc2626;
  border-radius: 8px;
  margin-bottom: 1.25rem;
  flex-wrap: wrap;
}
.prof-del-banner__icon {
  font-size: 1.5rem;
  flex-shrink: 0;
  color: #dc2626;
}
.prof-del-banner__body { flex: 1; min-width: 200px; }
.prof-del-banner__title {
  font-size: .92rem;
  font-weight: 700;
  color: #991b1b;
  margin-bottom: .15rem;
}
.prof-del-banner__text {
  font-size: .82rem;
  color: #7f1d1d;
  line-height: 1.5;
}

/* ─────────────────────────────────────────────────────────────
   DEMO STRIP — globální banner pod navigací
   ───────────────────────────────────────────────────────────── */
.demo-strip {
  background: linear-gradient(90deg, #fef3c7 0%, #fde68a 100%);
  border-bottom: 1px solid #f59e0b;
  color: #78350f;
  font-size: .82rem;
  line-height: 1.45;
  box-shadow: 0 1px 0 rgba(245,158,11,.15);
}
.demo-strip__inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: .45rem 1rem;
  flex-wrap: wrap;
  text-align: center;
}
.demo-strip__inner svg { color: #d97706; flex-shrink: 0; }
.demo-strip strong { font-weight: 800; letter-spacing: .02em; color: #92400e; }
.demo-strip__sep { color: #b45309; opacity: .6; }
.demo-strip__text { color: #78350f; font-weight: 500; }

@media print {
  .demo-strip { display: none !important; }
}
@media (max-width: 640px) {
  .demo-strip__inner { padding: .4rem .75rem; font-size: .78rem; gap: .4rem; }
  .demo-strip__sep { display: none; }
  .demo-strip__text { flex-basis: 100%; font-size: .76rem; margin-top: .15rem; text-align: center; }
}

/* ===== Responzivita hardening 2026-05-22 (additivní — mobil/foldable) ===== */
/* Pouze přídavná pravidla — neměníme ani nemažeme existující, aby nedošlo k regresím na desktopu. */

/* 1. Layout gridy .grid-2 / .grid-4 nemají vlastní breakpointy → kolaps na mobilu */
@media (max-width: 768px) {
  .grid-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .grid-2 { grid-template-columns: 1fr; }
  .grid-4 { grid-template-columns: 1fr; }
}

/* 2. .approve-grid (2 sloupce) — kolaps na 1 sloupec na malých displejích */
@media (max-width: 640px) {
  .approve-grid { grid-template-columns: 1fr; }
}

/* 3. .reg__submit .btn (min-width:280px) přetéká na skládacích zařízeních */
@media (max-width: 360px) {
  .reg__submit .btn { min-width: 0; width: 100%; }
}

/* 4. .footer__inner — jistota 1 sloupce na velmi malých displejích */
@media (max-width: 480px) {
  .footer__inner { grid-template-columns: 1fr; }
}

/* 5. Modal vs. mobilní adresní lišta — dynamická výška (dvh).
      Existující vh pravidlo zůstává výše jako fallback; toto je jen progresivní vylepšení. */
@media (max-width: 600px) {
  .modal { max-height: calc(100dvh - 1.5rem); }
}

/* 6. Skládací zařízení (≤360px) — žádné fixní min-width, ať nic nevynucuje horizontální scroll */
@media (max-width: 360px) {
  .dropdown__item { min-width: 0; }
}

/* 7. Touch targety na mobilu — min. výška tlačítka */
@media (max-width: 640px) {
  .btn { min-height: 40px; }
}
/* ===== /Responzivita hardening 2026-05-22 ===== */

/* ===== Responzivita hardening 2 (2026-05-22 cont.) ===== */
/* Pouze přídavná pravidla — neměníme ani nemažeme existující. Audit potvrzený zbytek. */

/* 2. Touch target pro ikonová tlačítka .btn-icon (základ width/height:28px) —
      na mobilu zvětšit na min. 36×36 px (přístupnost dotyku). Aditivní, stejný směr (zvětšení),
      neovlivňuje desktop. Ostatní audit-body (1,3,4,5,6,7) přeskočeny — viz report. */
@media (max-width: 640px) {
  .btn-icon { min-width: 36px; min-height: 36px; }
}
/* ===== /Responzivita hardening 2 (2026-05-22 cont.) ===== */


/* ── Role permissions (rpx) — admin matice oprávnění rolí ── */
.rpx-profile { background:#fff; border-radius:12px; box-shadow:0 1px 3px rgba(15,23,42,.08); margin-bottom:1rem; padding:.5rem 1rem; }
.rpx-profile__head { display:flex; align-items:center; gap:.6rem; cursor:pointer; padding:.6rem 0; font-weight:700; }
.rpx-profile__label { font-size:1rem; color:#1e293b; }
.rpx-profile__key { font-size:.72rem; color:#64748b; background:#f1f5f9; padding:.1rem .4rem; border-radius:4px; }
.rpx-profile__count { font-size:.72rem; color:#94a3b8; margin-left:auto; }
.rpx-lock { font-size:.72rem; color:#16a34a; font-weight:700; }
.rpx-note { font-size:.85rem; color:#64748b; margin:.4rem 0 .8rem; }
.rpx-scope { margin:.4rem 0 1rem; font-size:.85rem; }
.rpx-scope select { margin-left:.4rem; padding:.2rem .4rem; }
.rpx-grp-title { font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:#64748b; margin:1rem 0 .4rem; }
.rpx-mods { display:flex; flex-direction:column; gap:.3rem; }
.rpx-mod { display:flex; align-items:center; gap:.6rem; padding:.25rem 0; }
.rpx-mod__label { flex:1; font-size:.88rem; color:#334155; }
.rpx-mod__locked { font-size:.78rem; color:#b91c1c; font-weight:600; }
.rpx-seg { display:inline-flex; border:1px solid #cbd5e1; border-radius:8px; overflow:hidden; }
.rpx-seg__opt { padding:.2rem .6rem; font-size:.78rem; cursor:pointer; color:#64748b; border-right:1px solid #e2e8f0; }
.rpx-seg__opt:last-child { border-right:0; }
.rpx-seg__opt input { display:none; }
.rpx-seg__opt.is-active.rpx-seg__opt--none { background:#fee2e2; color:#b91c1c; font-weight:700; }
.rpx-seg__opt.is-active.rpx-seg__opt--read { background:#fef9c3; color:#854d0e; font-weight:700; }
.rpx-seg__opt.is-active.rpx-seg__opt--full { background:#dcfce7; color:#166534; font-weight:700; }
.rpx-caps { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:.4rem; }
.rpx-cap { font-size:.85rem; color:#334155; display:flex; align-items:center; gap:.4rem; }
.rpx-sens { font-size:.68rem; color:#b91c1c; background:#fee2e2; padding:0 .3rem; border-radius:3px; }
.rpx-actions { display:flex; justify-content:space-between; margin-top:1rem; }

/* ── Delegace v rámci stropu role (fáze 2A) ── */
.perm-locked { font-size:.7rem; color:#b91c1c; font-weight:600; margin-left:.4rem; }
.perm-grandfather { font-size:.66rem; color:#92400e; background:#fef3c7; padding:.05rem .35rem; border-radius:4px; margin-left:.4rem; font-weight:700; }
.perm-toggle--locked { opacity:.55; }
