/* ==========================================================================
   BCG Nexus — modulové štýly
   --------------------------------------------------------------------------
   Sem patrí to, čo je špecifické pre jeden modul a nedá sa vyjadriť
   komponentom zo styles.css. Do šablón sa inline <style> UŽ NEPÍŠE:
   v auguste 2026 ich bolo 2 148 riadkov v 25 súboroch a portál mal preto
   tri rôzne tabuľky, dvoje záložky a štvoro filtračných líšt.

   Pravidlá:
     · žiadna farba natvrdo — všetko cez token, inak nefunguje tmavá téma,
     · nový modul najprv skúsi komponent zo styles.css a až potom pridá sem,
     · modulové pravidlo je VŽDY zúžené na svoj modul (`.vp-table .tag`, nie
       `.tag`) — všeobecné meno bez zúženia prebije komponent systému na
       všetkých obrazovkách naraz (stalo sa pri `.tag`, `.stick-1`, `.money`),
     · tabuľka = .table-wrap + table.tbl (jeden engine pre celý portál),
     · šírkové @media (max-/min-width) sem nepatria — idú do mobil.css,
       časť 0, so šírkou zo sady v jeho hlavičke (audit E11),
     · z-index len cez škálu var(--z-…) zo styles.css (0–5 = poradie vnútri dielu).
   ========================================================================== */


/* ==========================================================================
   Priebeh nahrávania (`static/js/nahravanie.js`) — presunuté zo styles.css
   (audit E11): ide hneď na začiatok, aby poradie voči modulom ostalo.
   ========================================================================== */
/* Priebeh nahrávania súboru (`static/js/nahravanie.js`, formulár
   `data-nahravanie`). Dve fázy: merateľný prenos a nemerateľné spracovanie
   (neurčitý pruh) — falošné percentá by boli horšie než žiadne. */
.nahr-pas { flex: 1 1 100%; margin: 10px 0 0; }
.nahr-pas-bar { height: 8px; border-radius: var(--r-pill); overflow: hidden;
  background: var(--line); }
.nahr-pas-bar span { display: block; height: 100%; width: 0;
  background: var(--accent); transition: width .18s linear; }
.nahr-pas.is-neurcity .nahr-pas-bar span {
  width: 40%; animation: nahr-pas-beh 1.1s ease-in-out infinite; }
.nahr-pas.je-chyba .nahr-pas-bar span { background: var(--danger); }
.nahr-pas-text { margin-top: 6px; font-size: .8125rem; color: var(--muted); }
.nahr-pas.je-chyba .nahr-pas-text { color: var(--danger); font-weight: 600; }
@keyframes nahr-pas-beh {
  0% { margin-left: -40%; } 100% { margin-left: 100%; } }
@media (prefers-reduced-motion: reduce) {
  .nahr-pas.is-neurcity .nahr-pas-bar span { animation: none; margin-left: 0; } }

/* Karta priebehu (nahravanie.js, 9/2026) — súbor, kroky, lesklý pruh. */
.nahr-pas:has(.nahr-hlava) {
  padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--r-lg);
  background: var(--surface); box-shadow: var(--shadow-sm);
  animation: nx-prichod .35s cubic-bezier(.2, .7, .2, 1) both;
}
.nahr-hlava { display: flex; align-items: center; gap: 11px; margin-bottom: 10px; }
.nahr-ikona { width: 36px; height: 36px; border-radius: var(--r); display: grid; place-items: center; flex: 0 0 auto;
  background: color-mix(in srgb, var(--c1) 12%, var(--surface)); color: var(--c1); }
.nahr-ikona .ti { font-size: 1.1875rem; }
.nahr-subor { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.nahr-subor b { font-size: .88rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--ink); }
.nahr-subor small { font-size: .74rem; color: var(--faint); font-variant-numeric: tabular-nums; }
.nahr-eta { font-size: .76rem; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.nahr-kroky { list-style: none; display: flex; gap: 6px; margin: 0 0 10px; padding: 0; counter-reset: krok; }
.nahr-kroky li { counter-increment: krok; display: inline-flex; align-items: center; gap: 6px; font-size: .74rem;
  font-weight: 650; color: var(--faint); padding: 3px 10px 3px 4px; border-radius: var(--r-pill); background: var(--sunken);
  transition: background-color .25s ease, color .25s ease; }
.nahr-kroky li::before { content: counter(krok); width: 18px; height: 18px; border-radius: 50%; display: grid;
  place-items: center; font-size: .66rem; background: var(--surface); color: var(--muted); transition: all .25s ease; }
.nahr-pas.je-krok-1 .nahr-kroky li:nth-child(1),
.nahr-pas.je-krok-2 .nahr-kroky li:nth-child(2),
.nahr-pas.je-krok-3 .nahr-kroky li:nth-child(3) { background: color-mix(in srgb, var(--c1) 13%, var(--surface)); color: var(--ink); }
.nahr-pas.je-krok-1 .nahr-kroky li:nth-child(1)::before,
.nahr-pas.je-krok-2 .nahr-kroky li:nth-child(2)::before { background: var(--c1); color: var(--fill-ink); animation: nahr-pulz 1.4s ease-in-out infinite; }
/* Prejdené kroky dostanú fajku. */
.nahr-pas.je-krok-2 .nahr-kroky li:nth-child(1)::before,
.nahr-pas.je-krok-3 .nahr-kroky li:nth-child(-n+3)::before {
  content: "\ea5e"; font-family: "tabler-icons"; background: var(--fill-ok); color: var(--fill-ink); animation: nx-fajka .4s cubic-bezier(.2, .9, .25, 1.3) both; }
.nahr-pas.je-krok-2 .nahr-kroky li:nth-child(1), .nahr-pas.je-krok-3 .nahr-kroky li { color: var(--ink-soft); }
@keyframes nahr-pulz { 50% { box-shadow: 0 0 0 5px color-mix(in srgb, var(--c1) 22%, transparent); } }
.nahr-pas:has(.nahr-hlava) .nahr-pas-bar { height: 6px; background: var(--sunken); position: relative; }
.nahr-pas:has(.nahr-hlava) .nahr-pas-bar span {
  background: linear-gradient(90deg, var(--c1), var(--c3)); transition: width .3s cubic-bezier(.2, .7, .2, 1);
  position: relative; overflow: hidden; }
.nahr-pas:has(.nahr-hlava) .nahr-pas-bar span::after {
  content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: linear-gradient(90deg, transparent, var(--nx-na-tmavej-ciara), transparent);
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--fill-ink) 45%, transparent), transparent);
  transform: translateX(-100%); animation: nahr-lesk 1.3s ease-in-out infinite; }
@keyframes nahr-lesk { to { transform: translateX(100%); } }
.nahr-pas.je-hotovo .nahr-pas-bar span { background: var(--success); }
.nahr-pas.je-hotovo .nahr-pas-bar span::after { animation: none; }
.nahr-pas.je-hotovo .nahr-ikona { background: var(--success-bg); color: var(--success); }
.nahr-pas.je-chyba:has(.nahr-hlava) { border-color: var(--red-200); background: var(--danger-bg, var(--red-50));
  animation: nahr-tras .4s ease both; }
.nahr-pas.je-chyba .nahr-ikona { background: var(--surface); color: var(--danger); }
@keyframes nahr-tras { 20%, 60% { transform: translateX(-4px); } 40%, 80% { transform: translateX(4px); } }
@media (prefers-reduced-motion: reduce) {
  .nahr-pas:has(.nahr-hlava), .nahr-pas.je-chyba:has(.nahr-hlava) { animation: none; }
  .nahr-pas:has(.nahr-hlava) .nahr-pas-bar span::after, .nahr-kroky li::before { animation: none !important; }
}


/* ==========================================================================
   templates/asistent/widget.html
   ========================================================================== */

    .pav-fab { position:fixed; right:22px; bottom:22px; z-index:var(--z-plavajuce); width:56px; height:56px;
        border:0; border-radius:50%; background:var(--brand); color:var(--brand-ink-on); cursor:pointer;
        font-size:1.5rem; display:flex; align-items:center; justify-content:center;
        box-shadow:0 6px 20px rgba(46,40,40,.28); transition:transform .12s, background .12s; }
    .pav-fab:hover { background:var(--char-800); transform:translateY(-2px); }
    .pav-fab.is-open { display:none; }

    .pav-panel { position:fixed; right:22px; bottom:22px; z-index:calc(var(--z-plavajuce) + 1); width:390px;
        max-width:calc(100vw - 32px); height:560px; max-height:calc(100vh - 44px);
        background:var(--surface); border:1px solid var(--line); border-radius:14px;
        box-shadow:0 16px 44px rgba(46,40,40,.22); display:none; flex-direction:column;
        overflow:hidden; }
    .pav-panel.is-open { display:flex; }

    .pav-head { display:flex; align-items:center; gap:10px; padding:12px 14px;
        background:var(--brand); color:var(--brand-ink-on); flex:0 0 auto; }
    .pav-head .pav-avatar { width:30px; height:30px; border-radius:50%;
        background:rgba(255,255,255,.14); display:flex; align-items:center;
        justify-content:center; font-size:1rem; }
    .pav-head b { font-size:.95rem; font-weight:600; }
    .pav-head small { display:block; font-size:.72rem; opacity:.72; font-weight:400; }
    .pav-close { margin-left:auto; background:0; border:0; color:var(--brand-ink-on); opacity:.7;
        cursor:pointer; font-size:1.15rem; padding:4px; line-height:1; }
    .pav-close:hover { opacity:1; }

    .pav-telo { flex:1; overflow-y:auto; padding:14px; background:var(--surface-2);
        display:flex; flex-direction:column; gap:10px; }
    .pav-sprava { max-width:86%; padding:9px 12px; border-radius:12px; font-size:.86rem;
        line-height:1.5; white-space:pre-wrap; word-wrap:break-word; }
    .pav-sprava.od-cloveka { align-self:flex-end; background:var(--brand); color:var(--brand-ink-on);
        border-bottom-right-radius:4px; }
    .pav-sprava.od-paviela { align-self:flex-start; background:var(--surface);
        border:1px solid var(--line); color:var(--ink); border-bottom-left-radius:4px; }
    .pav-sprava.je-chyba { background:var(--red-50); border-color:var(--red-200);
        color:var(--red-800); }

    .pav-uvod { color:var(--muted); font-size:.82rem; line-height:1.55; padding:6px 2px; }
    .pav-uvod b { color:var(--ink); }

    .pav-caka { align-self:flex-start; display:flex; align-items:center; gap:8px;
        color:var(--muted); font-size:.8rem; padding:4px 2px; }
    .pav-caka i { animation:pav-puls 1.1s ease-in-out infinite; }
    @keyframes pav-puls { 0%,100% { opacity:.35; } 50% { opacity:1; } }

    .pav-spodok { flex:0 0 auto; border-top:1px solid var(--line); background:var(--surface);
        padding:10px; display:flex; gap:8px; align-items:flex-end; }
    .pav-vstup { flex:1; padding:8px 10px; font-size:.86rem; resize:none; max-height:96px; }
    .pav-poslat { flex:0 0 auto; width:38px; height:38px; border:0; border-radius:9px;
        background:var(--brand); color:var(--brand-ink-on); cursor:pointer; font-size:1rem; }
    .pav-poslat:hover:not(:disabled) { background:var(--char-800); }
    .pav-poslat:disabled { background:var(--char-300); cursor:default; }

    .pav-pata { padding:0 12px 9px; font-size:.68rem; color:var(--faint); text-align:center;
        background:var(--surface); }


/* ==========================================================================
   templates/core/changelog.html
   ========================================================================== */

    /* Changelog je text na čítanie, nie pracovná plocha — jediné miesto,
       kde je strop šírky správne (dlhý riadok textu sa zle číta). */
    .content:has(.chlog) { max-width: 900px; }

    .chlog-list { list-style:none; margin:0; padding:0; position:relative; }
    /* zvislá os timeline */
    .chlog-list::before { content:""; position:absolute; left:7px; top:6px; bottom:6px; width:2px; background:var(--line); }

    .chlog-item { position:relative; padding:0 0 18px 34px; }
    .chlog-item:last-child { padding-bottom:0; }
    .chlog-marker { position:absolute; left:0; top:14px; width:16px; height:16px; border-radius:50%;
        background:var(--surface); border:2px solid var(--line); box-shadow:0 0 0 3px var(--surface); }
    .chlog-item.current .chlog-marker { border-color:var(--brand); background:var(--brand); }

    .chlog-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg);
        padding:14px 18px; box-shadow:var(--shadow-xs); transition:box-shadow .15s; }
    .chlog-card:hover { box-shadow:var(--shadow-sm); }
    .chlog-item.current .chlog-card { border-color:var(--brand-200); background:linear-gradient(180deg,var(--brand-50),var(--surface) 60%); }

    .chlog-verhead { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:4px; }
    .chlog-ver { font-size:1.06rem; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
    .chlog-item.current .chlog-ver { color:var(--brand-dark); }
    .chlog-item .tag--brand { text-transform:uppercase; letter-spacing:.04em; }
    .chlog-date { margin-left:auto; font-size:.8rem; color:var(--faint); font-variant-numeric:tabular-nums; }

    .chlog-changes { margin:8px 0 0; padding:0; list-style:none; display:flex; flex-direction:column; gap:9px; }
    .chlog-changes li { position:relative; padding-left:20px; font-size:.9rem; line-height:1.5; color:var(--ink-soft); }
    .chlog-changes li::before { content:""; position:absolute; left:4px; top:9px; width:6px; height:6px;
        border-radius:50%; background:var(--brand-200); }
    .chlog-changes strong { color:var(--ink); font-weight:600; }
    .chlog-changes code { background:var(--surface-2); border:1px solid var(--line-soft); border-radius:5px;
        padding:1px 5px; font-size:.82em; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; color:var(--brand-dark); }


/* ==========================================================================
   templates/core/dashboard.html
   ========================================================================== */

    /* Fronta úloh (`.task-*`) = jedna definícia v sekcii Úloh nižšie; nástenka
       ju upraví cez `.tasks-panel` v styles.css. */

/* ==========================================================================
   templates/dochadzka/_style.html
   ========================================================================== */

    /* ---------- Dochádzka — zdieľané štýly modulu (vzor: Zálohy) ---------- */
    /* Hlavička modulu = spoločná .nx-hlava (styles.css sekcia 19). */

    .dz-card { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface);
        box-shadow:var(--shadow-xs); padding:15px 18px 16px; margin-bottom:14px; }
    .dz-card.sec-new { background:linear-gradient(180deg, var(--brand-50) 0, var(--surface) 96px); border-color:var(--brand-200); }
    .dz-card.sec-wait { background:linear-gradient(180deg, var(--warn-50) 0, var(--surface) 96px); }
    .dz-card.sec-quiet { background:linear-gradient(180deg, var(--surface-2) 0, var(--surface) 96px); }
    .dz-card-head { display:flex; align-items:center; gap:10px; margin-bottom:13px; flex-wrap:wrap; }
    .dz-card-head h2 { margin:0; font-size:1rem; font-weight:700; display:flex; align-items:baseline; gap:7px; letter-spacing:-.01em; }
    .dz-head-note { font-size:.76rem; font-weight:500; color:var(--faint); }
    .dz-ico { width:30px; height:30px; border-radius:9px; flex:0 0 auto; display:flex; align-items:center;
        justify-content:center; font-size:16px; }
    .dz-ico.ind { background:var(--brand-50); color:var(--brand); }
    .dz-ico.amber { background:var(--warn-100); color:var(--warn-700); }
    .dz-ico.teal { background:var(--teal-100); color:var(--teal-700); }
    .dz-ico.slate { background:var(--line-soft); color:var(--muted); }
    .dz-count { margin-left:auto; min-width:24px; height:22px; padding:0 8px; border-radius:var(--r-pill);
        background:var(--line-soft); color:var(--muted); font-weight:700; font-size:.78rem;
        display:inline-flex; align-items:center; justify-content:center; }
    .dz-count.on { background:var(--brand); color:var(--brand-ink-on); }

    /* Navigácia mesiaca (Môj kalendár, Tímový kalendár, HR) */
    .dz-cal-nav { display:flex; align-items:center; gap:8px; margin-left:auto; }
    .dz-cal-nav a { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px;
        border:1px solid var(--line); border-radius:var(--r-sm); color:var(--muted); text-decoration:none;
        transition:border-color .2s ease, color .2s ease; }
    .dz-cal-nav a:hover { border-color:var(--line-strong); color:var(--ink); }
    .dz-cal-nav .obdobie { font-weight:650; font-size:.92rem; color:var(--ink); min-width:130px; text-align:center; }
    .dz-cal-nav .dz-cal-dnes { width:auto; padding:0 12px; font-size:.82rem; font-weight:600; color:var(--ink-soft); }
    /* Neprítomnosť v bunke kalendára (nie čip, ale blok dňa): farba druhu
       (DB, --dz-f) stlmená do plochy karty — sedí v každom vzhľade aj v tmavej
       téme; text preto farbou písma. */
    .dz-udalost { display:block; margin-top:auto; font-size:.66rem; font-weight:600; line-height:1.3;
        color:var(--ink); background:var(--surface-2); /* starý prehliadač bez color-mix */
        background:color-mix(in srgb, var(--dz-f, var(--muted)) 26%, var(--surface));
        box-shadow:inset 3px 0 0 var(--dz-f, var(--muted));
        border-radius:5px; padding:3px 6px 3px 8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .dz-udalost.caka { background:repeating-linear-gradient(135deg, color-mix(in srgb, var(--dz-f, var(--muted)) 18%, var(--surface)) 0 5px, var(--surface) 5px 9px); }
    .dz-udalost--sviatok { color:var(--warning-ink); background:var(--warning-bg); box-shadow:inset 3px 0 0 var(--warning);
        white-space:normal; font-weight:500; }
    .dz-legenda { display:flex; flex-wrap:wrap; gap:8px 16px; margin-top:14px; }
    .dz-leg { display:inline-flex; align-items:center; gap:7px; font-size:.73rem; color:var(--muted); }
    .dz-leg .sw { width:10px; height:10px; border-radius:3px; display:inline-block; background:var(--dz-f); }
    .dz-leg .sw--caka { background:repeating-linear-gradient(135deg, var(--muted) 0 2px, transparent 2px 4px);
        box-shadow:inset 0 0 0 1px var(--muted); }
    .dz-leg .sw--sviatok { background:var(--warning-bg); box-shadow:inset 0 0 0 1px var(--warning); }

    /* Formuláre */
    .dz-fields { display:grid; grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); gap:12px; }
    .dz-fld { display:flex; flex-direction:column; gap:5px; }
    .dz-fld > span { font-size:.77rem; font-weight:600; color:var(--ink-soft); display:inline-flex; align-items:center; gap:6px; }
    .dz-fld > span .ti { font-size:14px; color:var(--faint); }
    .dz-full { margin-top:12px; }
    .dz-form select, .dz-form input[type=text], .dz-form input[type=date], .dz-form input[type=number],
    .dz-form input[type=color], .dz-form input[type=file], .dz-form textarea { width:100%; }
    .dz-form input[type=color] { padding:3px 5px; height:var(--pole-h); }
    .dz-form textarea { resize:vertical; }
    .dz-check { display:inline-flex; align-items:center; gap:7px; font-size:.83rem; color:var(--ink-soft); cursor:pointer; }
    .dz-check input[type=checkbox] { width:15px; height:15px; accent-color:var(--brand); }
    .dz-checkrow { display:flex; gap:18px; margin-top:10px; flex-wrap:wrap; }
    .dz-hint { font-size:.75rem; color:var(--muted); margin-top:8px; }
    .dz-hint.warn { color:var(--warn-700); }

    /* Tlačidlá = jadro .btn-* (audit E6). */

    /* Tabuľky */

    /* Pri horizontálnom scrolle (úzke okno, mobil) ostáva prvý stĺpec —
       zamestnanec/kód — prilepený, aby bolo vždy vidieť, koho riadok je. */
    .dz-table th:first-child, .dz-table td:first-child {
        position:sticky; left:0; z-index:1; background:var(--surface); }
    .dz-table tbody tr:hover td:first-child { background:var(--surface-2); }
    .dz-table tbody tr:last-child td { border-bottom:none; }
    .dz-table .nowrap { white-space:nowrap; }
    .dz-dni { font-variant-numeric:tabular-nums; font-weight:700; color:var(--ink); white-space:nowrap; }
    .dz-time { font-size:.73rem; color:var(--faint); }
    .dz-dash { color:var(--line); }
    .dz-dovod { max-width:230px; color:var(--muted); font-size:.83rem; }

    .dz-emp { display:flex; align-items:center; gap:9px; }
    .dz-ava { width:30px; height:30px; border-radius:50%; flex:0 0 auto; display:flex; align-items:center;
        justify-content:center; font-weight:700; font-size:.7rem; color:var(--brand-ink); background:var(--brand-100);
        letter-spacing:.02em; }
    .dz-emp-info { display:flex; flex-direction:column; gap:1px; line-height:1.25; min-width:0; }
    .dz-emp-name { font-weight:600; color:var(--ink); }
    .dz-emp-sub { font-size:.7rem; color:var(--muted); }

    .dz-druh { display:inline-flex; align-items:center; gap:6px; font-weight:600; color:var(--ink); white-space:nowrap; }
    .dz-druh .sw { width:10px; height:10px; border-radius:3px; display:inline-block; flex:0 0 auto; background:var(--dz-f); }

    /* Stav žiadosti = jadro .tag (audit E6): čaká --wait, schválená --ok,
       zamietnutá --bad, stornovaná --neu, oznámenie --cat. */
    .dz-why { font-size:.7rem; color:var(--muted); margin-left:6px; cursor:help; white-space:nowrap; }
    .dz-table tr.on-me td { background:var(--success-bg); }
    .dz-table tr.on-me td:first-child { box-shadow:inset 3px 0 0 var(--success); }
    .dz-actions { display:flex; gap:7px; align-items:center; justify-content:flex-end; }
    .inline { margin:0; display:inline-flex; }


    /* Potvrdenie od lekára (NX-002): čo musí byť na fotke vidieť */
    .dz-pokyn { display:grid; grid-template-columns:auto 1fr; gap:10px 12px; align-items:start;
        border:1px solid var(--warn-200); border-radius:var(--r-lg);
        background:var(--warn-50); padding:13px 15px; margin:0 0 14px; }
    .dz-pokyn > .ti { font-size:22px; color:var(--warn-700); margin-top:1px; }
    .dz-pokyn b { color:var(--ink); }
    .dz-pokyn ul { margin:6px 0 0; padding-left:18px; font-size:.86rem; color:var(--ink-soft); }
    .dz-pokyn p { margin:0; font-size:.88rem; color:var(--ink-soft); }
    .dz-os { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px; }
    .dz-os li { font-size:.84rem; color:var(--ink-soft); display:flex; gap:8px; align-items:baseline; }
    .dz-os .dz-time { white-space:nowrap; }


/* ==========================================================================
   templates/dochadzka/archiv.html
   ========================================================================== */

    /* Toolbar archívu — server-side filtre (GET), vzor dz-toolbar z HR správy */
    .dz-toolbar { display:flex; flex-wrap:wrap; gap:9px; align-items:center; margin-bottom:12px; }
    .dz-tb-range { display:inline-flex; align-items:center; gap:5px; font-size:.75rem; color:var(--muted);
        border:1px dashed var(--pole-okraj); border-radius:var(--r-sm); padding:3px 8px 3px 10px; }
    .dz-tb-range input[type=date] { height:auto; border:none; padding:4px 2px; background:transparent; }
    .dz-tb-range input[type=date]:focus { box-shadow:none; }
    .dz-toolbar-count { margin-left:auto; font-size:.78rem; color:var(--muted); white-space:nowrap; }

    /* Časová os v rozkliknutom riadku */
    .dz-arch-toggle { border:1px solid var(--line); background:var(--surface); color:var(--muted); cursor:pointer;
        width:26px; height:26px; border-radius:var(--r-sm); display:inline-flex; align-items:center; justify-content:center; }
    .dz-arch-toggle:hover { color:var(--brand); border-color:var(--brand); }
    .dz-arch-toggle .ti { font-size:14px; transition:transform .15s; }
    .dz-arch-toggle[aria-expanded="true"] .ti { transform:rotate(90deg); }
    tr.dz-arch-detail > td { background:var(--surface-2); padding:12px 16px 14px 44px; }
    .dz-tl { list-style:none; margin:0; padding:0; position:relative; }
    .dz-tl::before { content:""; position:absolute; left:5px; top:8px; bottom:8px; width:2px; background:var(--line); }
    .dz-tl li { position:relative; padding:3px 0 3px 22px; font-size:.82rem; color:var(--ink-soft); }
    .dz-tl li::before { content:""; position:absolute; left:0; top:9px; width:12px; height:12px; border-radius:50%;
        background:var(--surface); border:3px solid var(--brand-200); }
    .dz-tl li.ok::before { border-color:var(--success); }
    .dz-tl li.bad::before { border-color:var(--danger); }
    .dz-tl li.off::before { border-color:var(--faint); }
    .dz-tl b { color:var(--ink); }
    .dz-tl .dz-time { margin-left:6px; }
    .dz-tl .pozn { display:block; color:var(--muted); font-size:.78rem; }

/* ==========================================================================
   templates/dochadzka/hr.html
   ========================================================================== */

    .dz-w-70 { width:70px; }
    /* Predtým `style=""` (D-018). */
    .dz-hint.dz-hint--nad { margin:14px 0 6px; }
    .dz-hint.dz-hint--sync { margin:-6px 0 10px; }
    .dz-hint.dz-hint--tesne { margin-top:3px; }
    .inline.dz-sync { margin-left:auto; }
    .dz-actions .dz-sipka { color:var(--faint); }
    .dz-cal-nav a.dz-rok { width:auto; padding:0 10px; }
    .dz-emp-sub.dz-emp-sub--blok { display:block; }
    input.dz-pole-dovod { width:100%; min-width:190px; }
    .dz-form.dz-form--obal { display:contents; }
    .dz-drawer-foot .dz-ulozit { flex:1; justify-content:center; }
    .dz-fld.dz-full--tesne { margin-top:4px; }
    input[type=color].dz-color-mini { width:42px; height:var(--pole-h); padding:2px 3px; }
    .dz-rok-active { border-color:var(--brand) !important; color:var(--brand) !important; font-weight:700; }

    /* Toolbar tabuľky: vyhľadávanie + filtre (filtruje a zoraďuje tabulka.js) */
    .dz-toolbar { display:flex; flex-wrap:wrap; gap:9px; align-items:center; margin-bottom:12px; }
    .dz-toolbar select { color:var(--ink-soft); }
    .dz-toolbar-count { margin-left:auto; font-size:.78rem; color:var(--muted); white-space:nowrap; }

    tr.dz-row-click { cursor:pointer; }
    .dz-badge-sam { font-size:.68rem; font-weight:700; color:var(--brand-ink); background:var(--brand-100);
        border-radius:var(--r-pill); padding:1px 7px; margin-left:5px; white-space:nowrap; }

    /* Detail zamestnanca — bočný panel: rám, clona a pohyb = spoločná .nx-zasuvka
       (styles.css sekcia 14); tu len užšia šírka a stĺpec hlavička / telo / päta. */
    .dz-zasuvka { width:min(410px, 94vw); display:flex; flex-direction:column; overflow:hidden; }
    .dz-drawer-head { display:flex; align-items:center; gap:10px; padding:16px 18px 13px; border-bottom:1px solid var(--line-soft); }
    .dz-drawer-head .dz-ava { width:38px; height:38px; font-size:.82rem; }
    .dz-drawer-title { font-weight:700; color:var(--ink); font-size:1rem; line-height:1.25; }
    .dz-drawer-sub { font-size:.74rem; color:var(--muted); }
    .dz-drawer-close { margin-left:auto; border:none; background:none; cursor:pointer; color:var(--muted); font-size:19px; }
    .dz-drawer-close:hover { color:var(--ink); }
    .dz-drawer-body { padding:15px 18px; overflow-y:auto; flex:1; display:flex; flex-direction:column; gap:13px; }
    .dz-drawer-foot { padding:13px 18px; border-top:1px solid var(--line-soft); display:flex; gap:9px; }
    .dz-readonly { background:var(--surface-2); border:1px dashed var(--line); border-radius:var(--r-sm);
        padding:9px 11px; font-size:.84rem; color:var(--muted); }
    .dz-readonly b { color:var(--ink-soft); }
    .dz-switchrow { display:flex; align-items:center; gap:9px; border:1px solid var(--line); border-radius:var(--r-sm);
        padding:10px 12px; }
    .dz-switchrow input[type=checkbox] { width:16px; height:16px; accent-color:var(--brand); }
    .dz-switchrow .lbl { font-size:.86rem; font-weight:600; color:var(--ink); }
    .dz-switchrow .sub { font-size:.72rem; color:var(--muted); }

/* ==========================================================================
   templates/dochadzka/kalendar.html
   ========================================================================== */

    /* Tímový kalendár — riadok = človek, stĺpec = deň */
    .tk-wrap { overflow-x:auto; }
    /* Mriežka kalendára: `table-layout:fixed` je tu podstatné. Pri automatickom
       rozložení prehliadač IGNORUJE `max-width` na bunke, takže si menný stĺpec
       zobral všetko voľné miesto (na 2K vyše 1200 px) a 31 dní sa tlačilo do
       zvyšku. S fixným rozložením má meno svojich 300 px a dni si rovným dielom
       rozdelia celý zvyšok — čím širší monitor, tým väčšie dni. */
    .tk { border-collapse:separate; border-spacing:0; width:100%; font-size:.78rem; table-layout:fixed; }
    .tk th, .tk td { border-bottom:1px solid var(--line-soft); }
    .tk thead th { position:sticky; top:0; z-index:3; background:var(--surface);
        font-size:.62rem; font-weight:600; color:var(--faint); text-align:center;
        padding:3px 0 6px; line-height:1.25; border-bottom:1px solid var(--line); }
    .tk thead th.tk-emp-col { z-index:4; }
    .tk .tk-emp-col { position:sticky; left:0; background:var(--surface); z-index:2;
        width:300px; text-align:left; padding:6px 12px 6px 4px;
        border-right:1px solid var(--line); }
    .tk tbody tr:hover .tk-emp-col, .tk tbody tr:hover td { background:var(--surface-2); }
    .tk .tk-day { width:auto; height:38px; padding:2px 3px; text-align:center; }
    .tk .tk-day.vikend, .tk .tk-day.sviatok { background:var(--surface-2); }
    .tk thead .den-cislo { font-size:.72rem; font-weight:700; color:var(--ink-soft); display:block; }
    .tk thead th.dnes .den-cislo { color:var(--brand-ink-on); background:var(--brand); border-radius:50%;
        width:20px; height:20px; line-height:20px; margin:0 auto; }
    /* Dnešok = jemne podfarbený stĺpec, nie dve čierne čiary cez celú tabuľku.
       Deň sám je zvýraznený krúžkom v hlavičke, to stačí. */
    .tk td.dnes, .tk th.dnes { background:var(--cream-tint); }
    .tk td.dnes.vikend, .tk td.dnes.sviatok { background:var(--cream-soft); }
    /* Blok neprítomnosti: zaoblený dielik vo farbe druhu, stlmený do karty
       (rovnaká logika ako chip v Mojom kalendári). Je to tlačidlo — detail. */
    .tk-blk { display:block; width:calc(100% - 4px); height:22px; margin:0 auto; padding:0; border:0; cursor:pointer;
        border-radius:5px; background:var(--dz-f, var(--muted)); /* starý prehliadač bez color-mix */
        background:color-mix(in srgb, var(--dz-f, var(--muted)) 72%, var(--surface));
        transition:transform .18s var(--ease), box-shadow .18s ease; }
    .tk-blk:hover, .tk-blk:focus-visible { transform:scaleY(1.14); outline:none;
        box-shadow:0 0 0 2px var(--surface), 0 0 0 3.5px var(--accent); }
    .tk-blk.caka { background:repeating-linear-gradient(135deg, color-mix(in srgb, var(--dz-f, var(--muted)) 55%, var(--surface)) 0 4px, color-mix(in srgb, var(--dz-f, var(--muted)) 18%, var(--surface)) 4px 8px); }
    /* Meno sa neoreže — pri 300 px sa dlhé meno radšej zalomí na dva riadky. */
    .tk-emp-name { font-weight:600; color:var(--ink); font-size:.8rem; line-height:1.25; display:block;
        overflow-wrap:anywhere; }
    .tk-emp-sub { font-size:.66rem; color:var(--muted); }
    .tk-dni { font-size:.68rem; color:var(--faint); font-variant-numeric:tabular-nums; white-space:nowrap; }
    .tk-badge-ja { font-size:.6rem; font-weight:700; color:var(--brand-ink); background:var(--brand-100);
        border-radius:var(--r-pill); padding:0 6px; margin-left:5px; }
    tr.tk-filtered-out { display:none; }

    /* Toolbar (vzor Príprava miezd) */
    .tk-filterbar { display:flex; align-items:center; gap:12px; flex-wrap:wrap; background:var(--surface-2);
        border:1px solid var(--line); border-radius:var(--r); padding:9px 12px; margin-bottom:12px; box-shadow:var(--shadow-xs); }
    .tk-filterbar select { color:var(--ink-soft); }
    .tk-count { margin-left:auto; font-size:.8rem; color:var(--faint); white-space:nowrap; font-variant-numeric:tabular-nums; }

/* ==========================================================================
   Dochádzka — „Môj rytmus" (Moja dochádzka) a „Tím v súlade" (Tímový
   kalendár), návrh B + C, v1.218. Scéna s obrázkom, tmavá hlavná karta,
   pás týždňa, dialóg novej žiadosti. Iba tokeny vzhľadu — sedí vo všetkých
   šablónach aj v tmavej téme; farba druhu neprítomnosti (DB) ide cez --dz-f
   a vždy sa stlmí do plochy karty (color-mix), nikdy nesvieti naplno.
   ========================================================================== */

/* --- Tlačidlá hlavičky a kariet ---------------------------------------------- */
/* Tlačidlo je jadro (.btn-primary, .btn-ghost, .btn-plne); modul píše len
   väčšiu hlavnú akciu hlavičky. */
.dz-velke { min-height: 42px; padding: 10px 18px; font-size: .86rem; }
.dz-planuj .btn-plne, .dz-dostupnost .btn-plne { min-height: 44px; }
.dz-dostupnost .btn-plne .ti-arrow-right { transition: transform .2s var(--ease); }
.dz-dostupnost .btn-plne:hover .ti-arrow-right { transform: translateX(3px); }
.dz-odkaz { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0; border: 0; background: none;
    font: inherit; font-size: .8rem; color: var(--ink-soft); text-decoration: underline; text-underline-offset: 4px;
    text-decoration-color: var(--line-strong); cursor: pointer; transition: color .2s ease, text-decoration-color .2s ease; }
.dz-odkaz:hover { color: var(--ink); text-decoration-color: var(--accent); }
.dz-odkaz .ti { font-size: 15px; transition: transform .2s var(--ease); }
.dz-odkaz:hover .ti { transform: translateX(3px); }
.dz-card-pod { margin: 4px 0 0; font-size: .76rem; color: var(--muted); }

/* --- Kostra: zostatky vľavo, deň a týždeň vpravo ----------------------------- */
.dz-rytmus { display: grid; grid-template-columns: 270px minmax(0, 1fr); gap: 22px; align-items: start; }
.dz-rytmus-bok, .dz-rytmus-hlavne { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.dz-rytmus .dz-card { margin: 0; padding: 20px 22px; }
.dz-rytmus-hlavne > .nx-scena { margin: 0; }
.dz-rytmus .dz-card-head { margin-bottom: 4px; }
.dz-rytmus .dz-card-head h2, .dz-tim .dz-card-head h2 { font-size: 1.02rem; font-weight: 600; }

/* --- Zostatky: prvá (dovolenka) je tmavá hlavná karta ------------------------ */
.dz-zostatky { display: flex; flex-direction: column; gap: 12px; }
.dz-zostatok { position: relative; display: flex; flex-direction: column; padding: 19px 22px 20px;
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-xs);
    transition: transform .25s var(--ease), box-shadow .25s var(--ease), border-color .25s ease; }
.dz-zostatok:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: var(--line-strong); }
.dz-zostatok-lab { display: flex; align-items: center; gap: 6px; font-size: .74rem; color: var(--muted); }
.dz-zostatok-lab .ti { font-size: 15px; }
.dz-zostatok-num { display: flex; align-items: baseline; gap: 10px; margin: 8px 0 4px; font-size: 1.75rem; font-weight: 500;
    line-height: 1.1; letter-spacing: -.04em; color: var(--ink); font-variant-numeric: tabular-nums; }
.dz-zostatok-num small { font-size: .74rem; font-weight: 400; letter-spacing: 0; color: var(--muted); }
.dz-zostatok-num.je-zaporny { color: var(--danger); }
.dz-zostatok p { margin: 4px 0 0; font-size: .74rem; color: var(--muted); }
.dz-meter { display: block; height: 3px; margin-top: 16px; overflow: hidden; border-radius: 99px;
    background: var(--sunken); }
.dz-meter > span { display: block; width: var(--dz-pct, 0%); height: 100%; border-radius: inherit;
    background: var(--success); background: color-mix(in srgb, var(--success) 62%, var(--surface)); }
.dz-zostatok:has(.je-zaporny) .dz-meter > span { background: var(--danger); }
.dz-zostatok--hlavny { background: var(--brand); border-color: var(--brand); color: var(--brand-ink-on); }
.dz-zostatok--hlavny:hover { border-color: var(--brand); }
.dz-zostatok--hlavny :is(.dz-zostatok-lab, p, .dz-zostatok-num small) { color: color-mix(in srgb, var(--brand-ink-on) 74%, var(--brand)); }
.dz-zostatok--hlavny .dz-zostatok-num { margin: 18px 0 8px; font-size: 3.6rem; font-weight: 400; color: var(--brand-ink-on); }
.dz-zostatok--hlavny .dz-zostatok-num.je-zaporny { color: var(--accent-soft); }
.dz-zostatok--hlavny .dz-meter { background: color-mix(in srgb, var(--brand-ink-on) 22%, var(--brand)); }
.dz-zostatok--hlavny .dz-meter > span { background: color-mix(in srgb, var(--brand-ink-on) 70%, var(--warning)); }
.dz-zostatok--hlavny .dz-hint.warn { color: var(--brand-ink-on); }

/* --- Karty s kickerom (plánuj, kto je k dispozícii) -------------------------- */
.dz-planuj h2, .dz-dostupnost h2 { margin: 12px 0 0; font-size: 1.3rem; font-weight: 480; letter-spacing: -.025em; color: var(--ink); }
.dz-planuj p, .dz-dostupnost p { margin: 12px 0 0; font-size: .8rem; line-height: 1.75; color: var(--muted); }
.dz-planuj-kto { display: flex; align-items: center; gap: 7px; font-size: .76rem !important; line-height: 1.4 !important; }
.dz-planuj-kto .ti { font-size: 15px; color: var(--faint); }
.dz-planuj .btn-plne, .dz-dostupnost .btn-plne { margin-top: 18px; }
.dz-dostupnost { display: flex; flex-direction: column; }
.dz-dostupnost .btn-plne { margin-top: auto; }
.dz-dostupnost p { margin-bottom: 18px; }
/* Kto dnes chýba: iniciály v prekrývajúcich sa krúžkoch, mená pod nimi. */
.dz-mimo { display: flex; flex-direction: column; gap: 10px; margin: 0 0 20px; padding: 14px 16px;
    background: var(--surface-2); border: 1px solid var(--line-soft); border-radius: var(--r); }
.dz-mimo-tvare { display: flex; padding-left: 6px; }
.dz-mimo-tvare .dz-ava { margin-left: -6px; box-shadow: 0 0 0 2px var(--surface-2); color: var(--ink-soft);
    background: var(--sunken); }
.dz-mimo-tvare .dz-ava--viac { color: var(--muted); background: var(--surface); }
.dz-mimo-text { font-size: .76rem; line-height: 1.55; color: var(--muted); }
.dz-mimo-text b { display: block; font-weight: 600; color: var(--ink); }
.dz-mimo-text .ti { color: var(--success); }

/* --- Scéna = spoločná .nx-scena (styles.css sekcia 19) ------------------------ */

/* --- Tvoj týždeň: sedem dní ako korálky, pod nimi agenda vybraného ---------- */
.dz-tyzden .dz-card-head { justify-content: space-between; }
.dz-tyzden-rozsah { font-variant-numeric: tabular-nums; }
.dz-tyzden-pas { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; margin: 16px 0 24px; }
.dz-den { position: relative; display: flex; flex-direction: column; align-items: center; gap: 9px;
    min-height: 82px; padding: 14px 4px 16px; font: inherit; color: var(--ink); cursor: pointer;
    background: var(--sunken); border: 1px solid var(--line); border-radius: var(--r);
    transition: background .25s ease, color .25s ease, border-color .25s ease, transform .25s var(--ease), box-shadow .25s var(--ease); }
.dz-den small { font-size: .64rem; color: var(--muted); transition: color .25s ease; }
.dz-den-cislo { font-size: 1.4rem; font-weight: 400; line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.dz-den.je-volno { background: color-mix(in srgb, var(--sunken) 55%, var(--surface)); }
.dz-den.je-volno .dz-den-cislo { color: var(--muted); }
.dz-den:hover { transform: translateY(-2px); border-color: var(--line-strong); box-shadow: var(--shadow-xs); }
.dz-den:focus-visible { outline: none; box-shadow: var(--focus); }
.dz-den.je-dnes::before { content: ""; position: absolute; top: 8px; right: 8px; width: 5px; height: 5px;
    border-radius: 50%; background: var(--accent); }
.dz-den[aria-selected="true"] { background: var(--brand); border-color: var(--brand); color: var(--brand-ink-on);
    box-shadow: var(--shadow); }
.dz-den[aria-selected="true"] :is(small, .dz-den-cislo) { color: color-mix(in srgb, var(--brand-ink-on) 78%, var(--brand)); }
.dz-den[aria-selected="true"] .dz-den-cislo { color: var(--brand-ink-on); }
/* Značka neprítomnosti pod číslom: farba druhu; čakajúca len obrysom. */
.dz-den-znacka { position: absolute; left: 30%; right: 30%; bottom: 8px; height: 3px; border-radius: 3px;
    background: var(--dz-f, var(--muted)); background: color-mix(in srgb, var(--dz-f, var(--muted)) 80%, var(--surface)); }
.dz-den-znacka.caka { background: transparent; box-shadow: inset 0 0 0 1px var(--dz-f, var(--muted)); height: 4px; }
.dz-den-znacka--sviatok { background: var(--warning); }

.dz-agenda { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 16px; padding: 20px 0 6px;
    border-top: 1px solid var(--line); }
.dz-agenda[hidden] { display: none; }
.dz-agenda-datum { padding-top: 3px; font-size: .64rem; font-weight: 600; line-height: 1.6; letter-spacing: .1em;
    text-transform: uppercase; color: var(--muted); }
.dz-agenda-text { padding-left: 18px; border-left: 3px solid var(--line-strong); }
.dz-agenda-text.ma-nepritomnost { border-left-color: var(--accent); }
.dz-agenda-text h3 { margin: 0; font-size: 1.05rem; font-weight: 520; letter-spacing: -.015em; color: var(--ink); }
.dz-agenda-text p { margin: 7px 0 0; font-size: .8rem; color: var(--muted); }
.dz-agenda-text .dz-odkaz { margin-top: 8px; }
.dz-tyzden-pata { margin-top: 16px; padding-top: 12px; border-top: 1px dashed var(--line); }
.dz-mesiac-skry { display: none; }
[data-dz-mesiac][aria-expanded="true"] .dz-mesiac-zobraz { display: none; }
[data-dz-mesiac][aria-expanded="true"] .dz-mesiac-skry { display: inline; }
[data-dz-mesiac][aria-expanded="true"] .ti { transform: rotate(90deg); }

/* --- Môj kalendár: mriežka dní, voľný deň = tlačidlo novej žiadosti ---------- */
.dz-mesiac .dz-card-head { margin-bottom: 14px; }
.dz-mriezka { border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; }
.dz-mriezka-hlava, .dz-mriezka-riadok { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.dz-mriezka-hlava span { padding: 9px 4px; text-align: center; font-size: .62rem; font-weight: 600; letter-spacing: .08em;
    text-transform: uppercase; color: var(--muted); background: var(--sunken); border-bottom: 1px solid var(--line); }
.dz-mriezka-riadok + .dz-mriezka-riadok .dz-mden { border-top: 1px solid var(--line-soft); }
.dz-mden { position: relative; display: flex; flex-direction: column; align-items: stretch; gap: 6px; min-width: 0;
    min-height: 84px; padding: 9px; margin: 0; font: inherit; text-align: left; color: var(--ink);
    background: var(--surface); border: 0; border-left: 1px solid var(--line-soft); }
.dz-mden:first-child { border-left: 0; }
.dz-mden.je-volno { background: color-mix(in srgb, var(--sunken) 55%, var(--surface)); }
.dz-mden.je-mimo { background: color-mix(in srgb, var(--sunken) 30%, var(--surface)); }
.dz-mden-cislo { font-size: .8rem; font-weight: 500; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.dz-mden.je-volno .dz-mden-cislo { color: var(--faint); }
.dz-mden.je-dnes { box-shadow: inset 0 0 0 1.5px var(--accent); }
.dz-mden.je-dnes .dz-mden-cislo { color: var(--accent); font-weight: 700; }
button.dz-mden { cursor: pointer; transition: background .2s ease; }
button.dz-mden:hover { background: var(--sunken); }
button.dz-mden:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--brand); }
button.dz-mden::after { content: "+"; position: absolute; top: 6px; right: 9px; font-size: .95rem; line-height: 1;
    color: var(--muted); opacity: 0; transition: opacity .2s ease; }
button.dz-mden:hover::after, button.dz-mden:focus-visible::after { opacity: 1; }

/* --- Najbližšie v kalendári a kto je k dispozícii ----------------------------- */
.dz-dvojica { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 18px; align-items: stretch; }
.dz-najblizsie-zoznam { list-style: none; margin: 8px 0 0; padding: 0; }
.dz-polozka { display: flex; align-items: flex-start; gap: 14px; padding: 16px 0; border-bottom: 1px solid var(--line); min-width: 0; }
.dz-polozka:last-child { border-bottom: 0; padding-bottom: 2px; }
.dz-dlazdica { flex: 0 0 auto; width: 46px; padding: 8px 0 7px; text-align: center; font-size: 1.15rem; font-weight: 450;
    line-height: 1.1; color: var(--ink); font-variant-numeric: tabular-nums;
    background: var(--sunken); border-radius: var(--r-sm); box-shadow: inset 0 -3px 0 color-mix(in srgb, var(--dz-f, var(--muted)) 75%, var(--surface)); }
.dz-dlazdica small { display: block; margin-top: 3px; font-size: .56rem; font-weight: 600; letter-spacing: .1em;
    text-transform: uppercase; color: var(--muted); }
.dz-polozka-text { flex: 1; min-width: 0; }
.dz-polozka-text h3 { margin: 1px 0 0; font-size: .88rem; font-weight: 600; color: var(--ink); }
.dz-polozka-text > p { margin: 4px 0 0; font-size: .74rem; color: var(--muted); }
.dz-polozka-stav { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 8px; }
.dz-polozka-stav .dz-why { display: inline-flex; align-items: center; gap: 4px; min-height: 40px; margin-left: 2px; }
.dz-polozka-dovod { font-style: italic; overflow-wrap: anywhere; }
.dz-polozka-akcia { flex: 0 0 auto; align-self: center; }

/* --- História: zbalená, rozbalí sa na tabuľku --------------------------------- */
.dz-historia { padding: 0 !important; }
.dz-historia > summary { display: flex; align-items: center; gap: 6px; min-height: 58px; padding: 0 22px;
    cursor: pointer; list-style: none; border-radius: var(--r-lg); }
.dz-historia > summary::-webkit-details-marker { display: none; }
.dz-historia > summary:hover { background: var(--surface-2); }
.dz-historia > summary:focus-visible { outline: none; box-shadow: var(--focus); }
.dz-historia-nadpis { font-size: .92rem; font-weight: 600; color: var(--ink); white-space: nowrap; }
.dz-historia-sip { margin-left: auto; font-size: 17px; color: var(--muted); transition: transform .25s var(--ease); }
.dz-historia[open] .dz-historia-sip { transform: rotate(180deg); }
.dz-historia[open] > summary { border-bottom: 1px solid var(--line); border-radius: var(--r-lg) var(--r-lg) 0 0; }
.dz-historia > :not(summary) { padding: 14px 22px 18px; }
.dz-historia .dz-tablewrap { margin: 0; }

/* --- Dialóg: nová žiadosť a detail v tímovom kalendári ------------------------
   Rám, nadpis, zatvorenie a tlačidlá = spoločný .nx-dlg (styles.css sekcia 19);
   tu len obsah formulára. */
.nx-dlg .dz-form { display: flex; flex-direction: column; gap: 12px; }
.nx-dlg .dz-checkrow, .nx-dlg .dz-full, .nx-dlg .dz-hint { margin-top: 0; }
.dz-fields--dva { grid-template-columns: repeat(2, minmax(0, 1fr)); }
#dz-ziadost .nx-dlg-akcie > *, #dz-uprava .nx-dlg-akcie > * { min-height: 42px; padding: 9px 16px; }
.dz-tk-detail-riadok { display: flex; align-items: center; gap: 9px; margin: 10px 0 0; font-size: .86rem; color: var(--ink-soft); }
.dz-tk-detail-riadok .sw { width: 12px; height: 12px; border-radius: 3px; background: var(--dz-f, var(--muted)); background: color-mix(in srgb, var(--dz-f, var(--muted)) 72%, var(--surface)); }
.nx-dlg--maly .dz-hint { margin-top: 16px; }

/* --- Tímový kalendár: scéna + tmavý súhrn, mriežka ľudí ----------------------- */
.dz-tim-uvod { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 18px; margin-bottom: 22px; }
/* Tímový obrázok má diely cez celú výšku — neoreže sa a nadpis je menší,
   aby ho stuha neprekrývala. */
.dz-scena--tim { margin: 0; }
.dz-scena--tim .nx-scena-nadpis { font-size: clamp(1.6rem, 2.3vw, 2.15rem); }
.dz-scena--tim .nx-scena-text { max-width: 400px; }
/* Plocha = .nx-tmava (styles.css sekcia 19); modul píše len rozloženie. */
.dz-tim-suhrn { display: flex; flex-direction: column; justify-content: center; gap: 10px; padding: 20px 22px; }
.dz-tim-suhrn-num { font-size: 2.6rem; font-weight: 350; line-height: 1; letter-spacing: -.05em; font-variant-numeric: tabular-nums; }
.dz-tim-suhrn h3 { margin: 0; font-size: .95rem; font-weight: 500; }
.dz-tim-suhrn p { display: flex; align-items: center; gap: 6px; margin: 6px 0 0; font-size: .74rem;
    color: color-mix(in srgb, var(--brand-ink-on) 74%, var(--brand)); }
.dz-tim-suhrn p .ti { font-size: 14px; }
.dz-tim-suhrn-dnes b { color: var(--brand-ink-on); }
.dz-tim { padding: 20px 22px; }
.dz-tim .dz-card-head { align-items: flex-start; margin-bottom: 18px; }
.dz-tim .tk-filterbar { padding: 0; margin-bottom: 16px; background: transparent; border: 0; box-shadow: none; }
.dz-tim .tk-wrap { max-height: min(72vh, 680px); overflow: auto; border: 1px solid var(--line); border-radius: var(--r); }
.dz-tim .tk thead th { padding: 8px 0 9px; font-size: .58rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
    color: var(--muted); background: var(--sunken); }
.dz-tim .tk thead .den-cislo { margin-top: 2px; font-size: .76rem; font-weight: 500; letter-spacing: 0; color: var(--ink-soft); }
.dz-tim .tk thead th.tk-emp-col { padding-left: 16px; font-size: .62rem; letter-spacing: .12em; }
.dz-tim .tk .tk-emp-col { width: 220px; padding: 10px 12px 10px 16px; }
.dz-tim .tk .tk-day { height: 48px; border-left: 1px solid var(--line-soft); }
.dz-tim .tk .tk-day.vikend, .dz-tim .tk .tk-day.sviatok { background: color-mix(in srgb, var(--sunken) 60%, var(--surface)); }
.dz-tim .tk thead th.tk-day.vikend, .dz-tim .tk thead th.tk-day.sviatok { background: var(--sunken); background: color-mix(in srgb, var(--sunken) 80%, var(--line)); }
.dz-tim .tk td.dnes, .dz-tim .tk th.dnes { background: var(--surface-2); background: color-mix(in srgb, var(--accent) 7%, var(--surface)); }
.dz-tim .tk-dni-col { width: 52px; }
.dz-tim .tk tbody tr { transition: background .15s ease; }
.dz-tim .tk tr.je-moj .tk-emp-col { box-shadow: inset 3px 0 0 var(--accent); }
.dz-tim .tk-nic td { padding: 26px 16px; text-align: center; color: var(--muted); }
/* Štátny sviatok: teplý stĺpec (nie sivý ako víkend), v hlavičke ikonka,
   pod kalendárom zoznam sviatkov mesiaca s názvami. */
.dz-tim .tk .tk-day.sviatok, .dz-tim .tk thead th.tk-day.sviatok { background: var(--warning-bg); background: color-mix(in srgb, var(--warning) 11%, var(--surface)); }
.dz-tim .tk thead th.sviatok, .dz-tim .tk thead th.sviatok .den-cislo { color: var(--warning-ink); }
.tk-sviatok-znak { display: block; margin-top: 2px; font-size: 11px; color: var(--warning); }
.dz-sviatky { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 10px 0 0; font-size: .74rem; color: var(--muted); }
.dz-sviatky > .ti { font-size: 15px; color: var(--warning); }
.dz-sviatok { display: inline-flex; gap: 5px; padding: 3px 10px; border-radius: 999px; color: var(--warning-ink);
    background: var(--warning-bg); border: 1px solid var(--warning-line); }
.dz-sviatok b { font-weight: 650; }
.dz-mden.je-sviatok { background: color-mix(in srgb, var(--warning) 9%, var(--surface)); }
.dz-mden.je-sviatok .dz-mden-cislo { color: var(--warning-ink); }
.dz-den.je-sviatok { background: color-mix(in srgb, var(--warning) 10%, var(--surface)); border-color: var(--warning-line); }
.dz-den.je-sviatok .dz-den-cislo { color: var(--warning-ink); }

/* Tmavá téma: farby druhov sú navrhnuté na svetlú plochu (Home office je
   takmer čierny) — tu sa preto nemiešajú s plochou, ale so svetlým písmom. */
:root[data-theme="dark"] .tk-blk { background: color-mix(in srgb, var(--dz-f, var(--muted)) 62%, var(--ink)); }
:root[data-theme="dark"] .tk-blk.caka { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--dz-f, var(--muted)) 55%, var(--ink)) 0 4px, transparent 4px 8px); }
:root[data-theme="dark"] :is(.dz-leg .sw, .dz-druh .sw, .dz-tk-detail-riadok .sw, .dz-den-znacka:not(.caka, .dz-den-znacka--sviatok)) {
    background: color-mix(in srgb, var(--dz-f, var(--muted)) 62%, var(--ink)); }
:root[data-theme="dark"] .dz-udalost:not(.dz-udalost--sviatok) {
    background: color-mix(in srgb, var(--dz-f, var(--muted)) 30%, var(--surface));
    box-shadow: inset 3px 0 0 color-mix(in srgb, var(--dz-f, var(--muted)) 62%, var(--ink)); }
:root[data-theme="dark"] .dz-dlazdica { box-shadow: inset 0 -3px 0 color-mix(in srgb, var(--dz-f, var(--muted)) 62%, var(--ink)); }

/* --- Pohyb: scéna nabehne a obrázok dýcha, karty jedna po druhej ------------- */
@media (prefers-reduced-motion: no-preference) {
    .dz-tim-suhrn { animation: dz-nabeh .5s cubic-bezier(.2, .65, .3, 1) .08s both; }
    .dz-zostatok, .dz-rytmus-hlavne > :not(.nx-scena) { animation: dz-nabeh .45s cubic-bezier(.2, .65, .3, 1) both; }
    .dz-zostatok:nth-child(2) { animation-delay: .06s; }
    .dz-zostatok:nth-child(3) { animation-delay: .12s; }
    .dz-zostatok:nth-child(4) { animation-delay: .18s; }
    .dz-rytmus-hlavne > :nth-child(2) { animation-delay: .08s; }
    .dz-rytmus-hlavne > :nth-child(n+3) { animation-delay: .14s; }
    .dz-meter > span { animation: dz-pas 1.1s cubic-bezier(.2, .65, .3, 1) .3s both; }
    .dz-agenda:not([hidden]) { animation: dz-agenda .35s cubic-bezier(.2, .65, .3, 1) both; }
    .dz-mesiac:not([hidden]) { animation: dz-nabeh .4s cubic-bezier(.2, .65, .3, 1) both; }
}
@keyframes dz-nabeh { from { opacity: 0; transform: translateY(8px); } }
@keyframes dz-pas { from { width: 0; } }
@keyframes dz-agenda { from { opacity: 0; transform: translateX(-6px); } }

/* --- Menšie obrazovky ---------------------------------------------------------- */
/* Pod 960 px (tablet na výšku, menu vedľa) ide ľavý stĺpec nad obsah:
   zostatky vedľa seba, karta „Plánuj" pod nimi. */

/* ==========================================================================
   templates/financie/index.html
   ========================================================================== */

.fin-vs { color:var(--faint); font-size:.78rem; }

.fin-upload { display:flex; flex-wrap:wrap; align-items:flex-end; gap:12px; background:var(--surface-2);
  border:1px solid var(--line); border-radius:var(--r-lg); padding:15px 17px; margin-bottom:20px; }
.fin-upload-l { width:100%; font-size:.8rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  color:var(--muted); display:flex; align-items:center; gap:7px; }
.fin-upload-l .ti { font-size:17px; color:var(--brand); }
.fin-f { display:flex; flex-direction:column; gap:5px; font-size:.78rem; font-weight:600; color:var(--muted); }
.fin-files { flex:1 1 320px; }
.fin-upload-hint { width:100%; margin:2px 0 0; font-size:.8rem; color:var(--faint); line-height:1.5; }

.fin-filters { display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin-bottom:18px; }
/* Hlavný formulár filtrov je `display: contents` — jeho prvky sú položky
   lišty a hneď vedľa nich môže stáť panel skupiny s vlastnými formulármi
   (formuláre sa nesmú vnárať). */
.fin-filters-f { display:contents; }

/* Skupina stredísk — rozbaľovací panel vedľa výberu strediska. */
.fin-skup > summary { list-style:none; cursor:pointer; font-weight:600; color:var(--ink); font-size:.9rem; user-select:none; }
.fin-skup > summary::-webkit-details-marker { display:none; }
.fin-skup > summary .ti { color:var(--muted); }
.fin-skup > summary:hover { border-color:var(--line-strong); }
.fin-skup > summary.is-on { border-color:var(--brand); background:color-mix(in srgb, var(--brand) 9%, var(--surface)); }
.fin-skup > summary.is-on .ti { color:var(--brand); }
.fin-skup > summary span { max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fin-skup-sip { font-size:14px; transition:transform .2s var(--ease); }
.fin-skup[open] .fin-skup-sip { transform:rotate(180deg); }
.fin-skup-panel { width:620px; max-height:min(72vh, 640px); overflow:auto; padding:14px 16px;
  display:flex; flex-direction:column; gap:14px; }
.fin-skup-panel h3 { margin:0 0 8px; font-size:.74rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--muted); }
.fin-skup-ulozene { display:flex; flex-direction:column; gap:6px; padding-bottom:12px; border-bottom:1px solid var(--line); }
.fin-skup-g { display:flex; align-items:center; gap:6px; }
.fin-skup-g form { margin:0; }
/* Uložená skupina = riadok-odkaz (názov + strediská), nie čip. */
.fin-skup-volba { flex:1 1 auto; display:flex; align-items:baseline; gap:10px; min-width:0; padding:8px 12px;
  border:1px solid var(--line); border-radius:10px; color:var(--ink); text-decoration:none; }
.fin-skup-volba:hover { border-color:var(--brand); background:var(--tonal); }
.fin-skup-volba.is-on { border-color:var(--brand); background:color-mix(in srgb, var(--brand) 9%, var(--surface)); }
.fin-skup-volba small { color:var(--muted); font-size:.76rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fin-skup-x { border:0; background:transparent; color:var(--faint); cursor:pointer; padding:6px; border-radius:8px; }
.fin-skup-x:hover { color:var(--danger); background:var(--danger-bg); }
.fin-skup-zoznam { display:grid; grid-template-columns:repeat(auto-fill, minmax(180px, 1fr)); gap:4px 8px; }
.fin-skup-polozka { display:flex; align-items:center; gap:8px; min-width:0; padding:6px 8px; border-radius:8px;
  cursor:pointer; font-size:.84rem; border:1px solid transparent; }
.fin-skup-polozka:hover { background:var(--tonal); }
@supports selector(:has(a)) {   /* zvýraznenie vybraného — vylepšenie (Edge 83 bez neho) */
  .fin-skup-polozka:has(input:checked) { border-color:color-mix(in srgb, var(--brand) 45%, transparent);
    background:color-mix(in srgb, var(--brand) 8%, var(--surface)); }
}
.fin-skup-polozka input { accent-color:var(--brand); margin:0; flex:0 0 auto; }
.fin-skup-polozka b { font-weight:700; color:var(--ink); white-space:nowrap; }
.fin-skup-polozka span { color:var(--muted); font-size:.76rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fin-skup-akcie { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:10px; }
.fin-skup-uloz { padding-top:12px; border-top:1px solid var(--line); }
.fin-skup-uloz .fin-skup-akcie { margin-top:0; }
.fin-skup-uloz input[type=text] { flex:1 1 220px; min-width:0; }

.fin-korekcie { display:flex; flex-wrap:wrap; gap:10px 26px; align-items:baseline;
  background:var(--cream-tint); border:1px solid var(--cream-200); border-left:3px solid var(--brand);
  border-radius:var(--r-lg); padding:13px 17px; margin:-4px 0 18px; }
.fin-kor { display:flex; align-items:baseline; gap:7px; font-size:.86rem; }
.fin-kor-n { color:var(--ink-soft); font-weight:600; }
.fin-kor b { font-variant-numeric:tabular-nums; color:var(--ink); }
.fin-kor em { font-style:normal; font-size:.76rem; color:var(--faint); }
.fin-kor-in { color:var(--teal-700); }
.fin-kor-out { color:var(--warn-700); }
/* „odhad“ = jadro `.tag.tag--sm.tag--wait` (audit E6) + kapitálky */
.fin-odhad { font-size:.64rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; vertical-align:middle; }
.fin-table th { cursor:pointer; user-select:none; }
.fin-table tbody tr:hover { background:var(--cream-tint); }
.fin-table td.strong { font-weight:700; }
.fin-kod { font-weight:700; }

.fin-nazov { color:var(--faint); font-size:.82rem; margin-left:4px; }
.fin-pos { color:var(--teal-700); }
.fin-neg { color:var(--danger); }
.fin-foot { display:flex; gap:8px; align-items:flex-start; font-size:.8rem; line-height:1.5; margin:12px 0 0; }
.fin-foot .ti { font-size:16px; color:var(--faint); flex:0 0 auto; margin-top:1px; }

/* --- Denníkový reporting: záložky, nálezy, percentá v bunkách ------------- */
.fin-kumul { margin-left:2px; }
.fin-obdobie-popis { font-size:.84rem; color:var(--faint); }

/* Nálezy kontrol: spoločná karta `.nalez` v styles.css. */

/* Percento pod eurovou sumou v tej istej bunke — jednotka patrí k číslu,
   nie do hlavičky stĺpca, inak sa pri scrollovaní stratí. */
.fin-pct { display:block; font-size:.74rem; color:var(--faint); font-weight:600; }
/* Percento v pásme — rovnaká stupnica ako teplotná mapa. Bez pásma (prázdna
   trieda) ostáva percento nenápadné; farba je tvrdenie a bez čísla ho niet
   z čoho odvodiť. */
.fin-pasmo.pas-0, .fin-pasmo.pas-1, .fin-pasmo.pas-2, .fin-pasmo.pas-3,
.fin-pasmo.pas-4, .fin-pasmo.pas-5 {
  display:inline-block; padding:1px 7px; border-radius:999px; color:var(--pas-ink);
  font-variant-numeric:tabular-nums; }
.fin-pasmo.pas-0 { background:var(--pas-0); }
.fin-pasmo.pas-1 { background:var(--pas-1); }
.fin-pasmo.pas-2 { background:var(--pas-2); }
.fin-pasmo.pas-3 { background:var(--pas-3); }
.fin-pasmo.pas-4 { background:var(--pas-4); }
.fin-pasmo.pas-5 { background:var(--pas-5); color:var(--pas-ink-5); }
.fin-rezia td { color:var(--muted); background:var(--surface-2); }
.fin-sucet td { font-weight:700; background:var(--sunken); }
.fin-sucet--hlavny td { font-size:.95rem; border-top:2px solid var(--line); }
.fin-skupina td { font-weight:700; background:var(--sunken); font-size:.82rem;
  text-transform:uppercase; letter-spacing:.03em; }
.fin-podriadok { padding-left:26px !important; color:var(--ink-soft); }
.fin-vysl th, .fin-vysl td { white-space:nowrap; }
.fin-riadok-chyba td { background:var(--danger-bg); }
/* Manažérska korekcia vo výsledovke — nie je to účtovný riadok, musí byť
   na prvý pohľad vidieť, že to číslo v účtovníctve nenájdeš. */
.fin-riadok-korekcia td { color:var(--brand-ink); font-style:italic; }
.fin-riadok-korekcia .fin-podriadok { padding-left:34px !important; }
/* Stĺpec korekcií — rozdiel medzi účtovným a manažérskym číslom. */
.fin-kor-c { color:var(--brand-ink); }

/* Editovateľné polia v tabuľkách — hodnota ostáva surová (bodka), aby ju
   vedel prečítať prehliadač aj triedič tabuľky. */
.fin-in { width:100%; max-width:130px; text-align:right; font-variant-numeric:tabular-nums; }
.fin-in--pct { max-width:88px; }
.fin-in--text { max-width:none; text-align:left; }
.fin-in--sel { max-width:none; text-align:left; }
.fin-in:disabled { background:var(--sunken); color:var(--muted); }

.fin-mesiac { display:flex; flex-wrap:wrap; gap:14px 22px; align-items:flex-end; margin:4px 0 6px; }
.fin-mesiac .fin-f input { min-width:220px; }
/* Náhľad mailu pre účtovníčku — biely papier ako v Outlooku aj v tmavej téme
   (mail má inline farby pre Outlook, tak sa nesmie prefarbiť). */
/* Položky bodu uzávierky s tlačidlom „Nehlásiť“. */
.fin-mail-nahlad { display:block; width:100%; min-height:120px; background:#fff; border:1px solid var(--line);
  border-radius:var(--r); margin:10px 0 4px; }
.fin-f--wide { flex:1 1 320px; }
.fin-f--wide input { width:100%; }
.fin-check { display:inline-flex; align-items:center; gap:8px; font-size:.88rem;
  color:var(--ink-soft); padding-bottom:8px; }
/* --- Vzhľad „A · Manažérsky prehľad" (ZIP nexus-financny-reporting-A, 6. 10. 2026)
   Spoločné diely sú v styles.css (nx-hlava, scéna, rad kariet .nx-cisla,
   rebríček .nx-rank, .nx-upozornenie--info, .nx-stav, .nx-pocet, .nx-dlg);
   tu je len to, čím sa Financie líšia. Strážca: financie.tests_vzhlad. */

/* Lišta filtrov — stav uzavretia (.nx-stav) vpravo */
.fin-filters .fin-uzavrety { margin-left:auto; text-decoration:none; }
.fin-filters a.fin-uzavrety:hover { border-color:currentColor; }

/* Import denníka v dialógu — pôvodný formulár (_upload.html), bez vlastného rámu */
.fin-dlg { width:min(640px, calc(100vw - 32px)); }
.fin-dlg .fin-upload { margin:0; padding:0; background:transparent; border:0; }
.fin-dlg .fin-upload-l { display:none; }

/* Rad kariet: tmavá EBITDA je širšia, vedľa tri ukazovatele v % z tržieb */
.fin-cisla { grid-template-columns:minmax(0, 1.3fr) repeat(3, minmax(0, 1fr)); }
.fin-skore, .fin-ukaz { display:flex; flex-direction:column; }
.fin-skore { padding:22px 24px 20px; }
.fin .nx-cisla .fin-skore-v { margin:12px 0 6px; font-size:clamp(2rem, 3vw, 2.7rem); font-weight:440; letter-spacing:-.05em; }
.fin-skore-pod { margin-bottom:20px; font-size:.78rem; }
.fin-skore-delta { display:block; margin-top:4px; }
/* Smer na tmavej karte (tokeny jadra, sedia aj v tmavej téme): pri EBITDA
   a tržbách je rast dobrý — teda farba „poklesu" nákladov a naopak. */
.fin .nx-cisla > .accent .je-dobre { color:var(--nx-na-tmavej-pokles); }
.fin .nx-cisla > .accent .je-zle { color:var(--nx-na-tmavej-rast); }
.fin .nx-cisla > .fin-skore > .fin-skore-spodok { opacity:1; }
.fin .nx-cisla > .accent.je-zaporna .fin-skore-v { color:var(--nx-na-tmavej-rast); }
/* Čiara a plocha na tmavej karte = tokeny .nx-tmava (styles.css sekcia 19). */
.fin-skore > .fin-skore-spodok { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin-top:auto; }
.fin-skore-spodok small { display:block; font-size:.6rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; opacity:.74; }
.fin-skore-spodok b { display:block; margin-top:5px; font-size:1.3rem; font-weight:450; letter-spacing:-.02em; font-variant-numeric:tabular-nums; white-space:nowrap; }
.fin-skore-trzby { margin:-6px 0; padding:6px 0 6px 10px; text-align:right; color:inherit; font:inherit;
  background:transparent; border:0; border-radius:8px; cursor:pointer; transition:background-color .15s ease; }
.fin-skore-trzby:hover, .fin-skore-trzby:focus-visible { background:var(--nx-na-tmavej-plocha); }
.fin-ukaz { cursor:pointer; }
.fin-ukaz:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.fin-ukaz .stat-value { margin:10px 0 6px; }
.fin-ukaz .stat-sub { font-size:.74rem; line-height:1.45; color:var(--muted); }
.fin-ukaz-pas { height:4px; margin:auto 0 0; padding-top:0; border-radius:4px; background:var(--sunken); overflow:hidden; }
.fin-ukaz .stat-sub + .fin-ukaz-pas { margin-top:18px; }
.fin-ukaz-pas i { display:block; height:100%; border-radius:4px; background:var(--line-strong); transform-origin:left center; }
.fin-ukaz-pas.pas-0 i { background:var(--pas-0); }
.fin-ukaz-pas.pas-1 i { background:var(--pas-1); }
.fin-ukaz-pas.pas-2 i { background:var(--pas-2); }
.fin-ukaz-pas.pas-3 i { background:var(--pas-3); }
.fin-ukaz-pas.pas-4 i { background:var(--pas-4); }
.fin-ukaz-pas.pas-5 i { background:var(--pas-5); }
.fin-ukaz-pod { display:flex; flex-wrap:wrap; align-items:center; gap:6px; min-height:22px; margin-top:10px; font-size:.72rem; color:var(--faint); }

/* Hlavička karty s prepínačom vpravo (rebríček) a tichá poznámka pod kartou */
.fin-karta-hlava { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:10px 16px; }
.fin-karta-hlava > div { flex:1 1 260px; min-width:0; }
.fin-karta-hlava .seg { flex:0 0 auto; margin-bottom:12px; }
.fin-karta-pozn { margin:12px 0 0; font-size:.76rem; line-height:1.6; color:var(--muted); }

/* Rebríček prevádzok: výber (najlepší + najhorší) / všetky / stratové (ui.js 12) */
.fin-rank[data-rezim="vyber"] > .nx-rank:not(.je-vyber),
.fin-rank[data-rezim="straty"] > .nx-rank:not(.je-zaporny),
.fin-rank:not([data-rezim="vyber"]) > .fin-rank-medzera,
.fin-rank:not([data-rezim="straty"]) > .fin-rank-bez-strat { display:none; }
.fin-rank-medzera, .fin-rank-bez-strat { margin:0; padding:8px; border-bottom:1px solid var(--line);
  font-size:.72rem; color:var(--faint); text-align:center; letter-spacing:.02em; }

/* Kontroly: prepínač „Na preverenie" ukáže len chyby (ui.js 12) */

/* Výsledovka: dlaždice nad tabuľkou */
.fin-karty-hore { margin-bottom:18px; }

/* Od tržieb k výsledku — sedem dlaždíc, posledná tmavá (výsledok) */
.fin-most { display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:8px; margin:6px 0 0; padding:0; list-style:none; }
.fin-most-krok { min-width:0; padding:14px 12px 13px; border-radius:var(--r); background:var(--tonal); border:1px solid var(--line);
  transition:transform .25s var(--ease), box-shadow .25s var(--ease); }
.fin-most-krok:hover { transform:translateY(-2px); box-shadow:var(--shadow); }
.fin-most-krok small { display:block; min-height:2.4em; font-size:.68rem; line-height:1.3; color:var(--muted); }
.fin-most-krok b { display:block; margin-top:4px; font-size:.95rem; font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap; }
.fin-most-pas { display:block; height:5px; margin-bottom:12px; border-radius:5px; background:var(--sunken); overflow:hidden; }
.fin-most-pas i { display:block; height:100%; border-radius:5px; background:var(--line-strong); transform-origin:left center; }
.fin-most-krok.je-zaporny b { color:var(--danger); }
.fin-most-krok.je-vysledok { background:var(--brand); border-color:var(--brand); color:var(--brand-ink-on); }
.fin-most-krok.je-vysledok small { color:inherit; opacity:.74; }
.fin-most-krok.je-vysledok .fin-most-pas { background:rgba(255,255,255,.16); }
.fin-most-krok.je-vysledok .fin-most-pas i { background:var(--accent-soft, var(--brand-ink-on)); }
.fin-most-krok.je-vysledok.je-zaporny b { color:var(--nx-na-tmavej-rast); }
@media (prefers-reduced-motion: no-preference) {
  .fin-ukaz-pas i, .fin-most-pas i { animation:nx-pas-nabeh .7s cubic-bezier(.2, .65, .3, 1) both; }
  .fin-most-krok:nth-child(2) .fin-most-pas i { animation-delay:.05s; }
  .fin-most-krok:nth-child(3) .fin-most-pas i { animation-delay:.1s; }
  .fin-most-krok:nth-child(4) .fin-most-pas i { animation-delay:.15s; }
  .fin-most-krok:nth-child(5) .fin-most-pas i { animation-delay:.2s; }
  .fin-most-krok:nth-child(6) .fin-most-pas i { animation-delay:.25s; }
  .fin-most-krok:nth-child(7) .fin-most-pas i { animation-delay:.3s; }
}
@media (prefers-reduced-motion: reduce) {
  .fin-most-krok { transition:none; }
  .fin-most-krok:hover { transform:none; }
}

/* Tabuľka prevádzok — podnadpis pod nadpisom panelu */
.fin-panel-pod { margin:3px 0 0; font-size:.76rem; color:var(--muted); }


/* Financie — pás nezaúčtovaného obdobia a legenda presunov (zo styles.css, audit E11). */
/* Obdobie, ktoré účtovníctvo ešte nezaúčtovalo — čísla pod tým neplatia.
   Pás je zámerne cez celú šírku a nad dlaždicami: nález v zozname sa dá
   prehliadnuť, toto nie. */
.fin-nezauctovane { border: 1px solid var(--danger); border-left-width: 4px;
  border-radius: var(--r); background: var(--danger-bg); padding: 12px 16px; margin: 0 0 14px; }
.fin-nezauctovane-h { display: flex; gap: 8px; align-items: center;
  font-weight: 650; color: var(--danger); }
.fin-nezauctovane p { margin: 6px 0 0; font-size: .8125rem; color: var(--danger-dark); max-width: 90ch; }

/* Legenda k presunom v osobných nákladoch. Dvojice, ktoré sa vyrušia, sú
   najčastejšia otázka nad výsledovkou — odpoveď má byť pri tabuľke, nie
   v hlave toho, kto ju písal. */
.fin-legenda { margin: 14px 0 4px; padding: 14px 16px; border-radius: var(--r);
  background: var(--tonal); border: 1px solid var(--line); }
.fin-legenda h3 { margin: 0 0 6px; font-size: .875rem; }
.fin-legenda > p { margin: 0 0 10px; font-size: .8125rem; color: var(--muted);
  max-width: 100ch; }
.fin-legenda dl { margin: 0; display: grid; grid-template-columns: minmax(180px, 22%) 1fr;
  gap: 6px 18px; }
.fin-legenda dt { font-weight: 650; font-size: .8125rem; }
.fin-legenda dd { margin: 0; font-size: .8125rem; color: var(--muted);
  max-width: 95ch; }

/* ==========================================================================
   templates/mzdy/priprava.html
   ========================================================================== */

    .mzdy-page h1 { margin:0 0 2px; font-size:1.5rem; }

    /* Prehľadové karty strediska (živo sa prepočítavajú pri úpravách) */
    .mz-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin:16px 0 8px; }
    .mz-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:12px 15px; display:flex; flex-direction:column; gap:3px; box-shadow:var(--shadow-xs); transition:box-shadow .15s; }
    .mz-card:hover { box-shadow:var(--shadow-sm); }
    .mz-card .mzc-k { font-size:.72rem; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; font-weight:600; display:flex; align-items:center; gap:6px; }
    .mz-card .mzc-k .ti { font-size:15px; opacity:.85; }
    .mz-card .mzc-v { font-size:1.32rem; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
    .mz-card .mzc-v b { font-weight:700; }
    .mz-card .mzc-sub { font-size:.74rem; color:var(--faint); }
    /* Hlavná karta (K výplate) je tmavá zo spoločného .nx-cisla > .accent
       (styles.css) — vlastné farby pre .mz-card.accent sem nepatria, prebili by ju. */
    .mz-card .mzc-v.flash { animation:mzCardFlash .5s ease; }
    @keyframes mzCardFlash { 0%{ color:var(--brand); } 100%{} }
    /* Na tmavej karte je --brand pozadie — číslo by pri zábleske zmizlo. */
    .nx-cisla > .accent .mzc-v.flash { animation-name:mzCardFlashTmava; }
    @keyframes mzCardFlashTmava { 0%{ opacity:.45; } 100%{} }

    /* --- Toolbar --- */
    .mz-toolbar { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:18px 0; }
    .mz-selectors label { font-size:.82rem; color:var(--muted); display:inline-flex; align-items:center; gap:8px; }
    .mz-selectors select { font-weight:500; }
    .mz-export { display:flex; align-items:center; gap:8px; margin-left:auto; }

    .mz-lock { display:flex; align-items:center; gap:9px; background:var(--warn-50); border:1px solid var(--warn-200); color:var(--warn-800); padding:11px 15px; border-radius:var(--r); margin:6px 0 14px; font-size:.9rem; }
    /* `display:flex` by prebilo UA pravidlo pre [hidden] → pruh o nulových
       mzdách by svietil aj na stredisku, kde nikto taký nie je. */
    .mz-lock[hidden] { display:none; }
    .mz-lock .ti { font-size:18px; }
    .mz-lock.ro { background:var(--danger-bg); border-color:var(--danger-line); color:var(--danger-dark); }
    .mz-lock.ok { background:var(--teal-50); border-color:var(--teal-100); color:var(--teal-800); }
    /* pozeráš sa na mesiac za prvým otvoreným — najsilnejšie jantárové varovanie */
    .mz-lock.ahead { background:var(--warn-100); border-color:var(--warn-400); border-left:4px solid var(--warn-500); color:var(--warn-800); align-items:flex-start; }
    .mz-lock.ahead a { margin-left:6px; white-space:nowrap; }
    .mz-lock a { color:inherit; font-weight:600; text-decoration:underline; }
    .mz-fieldset { border:none; padding:0; margin:0; min-width:0; }

    .mz-addpanel { background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r); padding:14px; margin-bottom:14px; }
    .mz-addform { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:10px; }
    .mz-newemp { margin-top:10px; }
    .mz-newemp summary { cursor:pointer; color:var(--brand-dark); font-size:.88rem; font-weight:500; }

    /* Našepkávač (`nasepkavac.js` v RBAC, vlastný v Príprave) — JEDNA definícia.
       Predtým druhá kópia v sekcii RBAC (char-300 okraje, iný hover) prebíjala
       túto podľa poradia v súbore (audit 8. 10. 2026, P1 č. 15). */
    .ac-picker { position:relative; max-width:460px; margin-top:6px; }
    .ac-search { width:100%; }
    /* Nápoveda pri krátkom dopyte — bez nej vyzerá mlčiace pole ako porucha. */

    /* --- Tabuľka --- */

    .cg-meno { width:280px; } .cg-m { width:118px; } .cg-v { width:152px; } .cg-x { width:52px; }

    .mz-table thead th { position:sticky; top:0; z-index:3; }


    /* `background` je tu kvôli prilepenému stĺpcu s menom: priehľadná bunka
       by nechala popod seba presvitať čísla, ktoré pri bočnom scrolle
       prechádzajú pod ňou. Riadkové odtiene (paskova, cmt-missing, :hover)
       toto pravidlo prebíjajú nižšie v súbore — poradie je zámerné. */
    .mz-table tbody td { background:var(--surface); }
    .mz-table tbody tr:last-child td { border-bottom:none; }
    .col-x { text-align:center; }

    /* --- Menná bunka: avatar + info --- */
    /* Prilepené meno. Tabuľka Prípravy má cez 2 100 px a na 1366 px monitore
       sa scrolluje do boku o vyše 1 000 px; bez toho manažér pri úprave
       sumy nevidí, čí riadok upravuje. To isté už robí Dochádzka
       (`.dz-table td:first-child`) aj Výpočet (`.vp-table .stick`). */
    .mz-table td.col-meno { position:sticky; left:0; z-index:2; padding-right:36px;
        border-right:1px solid var(--line-soft); }
    .mz-table thead th.col-meno { left:0; z-index:4; border-right:1px solid var(--line); }
    .z-person { display:flex; align-items:center; gap:11px; }
    .z-avatar { width:36px; height:36px; border-radius:50%; background:var(--brand-100); color:var(--brand-ink); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.78rem; flex-shrink:0; }
    tr.paskova .z-avatar { background:var(--line); color:var(--muted); }
    .z-info { min-width:0; flex:1; }
    .z-meno { font-weight:600; display:flex; align-items:center; gap:6px; white-space:nowrap; }
    .z-note { position:absolute; top:9px; right:8px; }
    .z-note .cmt { margin:0; }
    /* Štítok pri mene = jadro `.tag.tag--sm` (audit E6): len odmena --wait,
       výpomoc --ok, kvóta --cat, ručne --neu, prenesené --akcent. Tu len
       písmo riadku mena. */
    .z-meno .tag { font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; flex:0 0 auto; }
    .z-meno .tag[title] { cursor:help; }
    .z-row2 { display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; margin-top:6px; min-width:0; }
    .z-osobne { width:120px; font-size:.76rem; color:var(--ink-soft); background:var(--surface-2); letter-spacing:.02em; text-overflow:ellipsis; }
    .z-osobne:focus { background:var(--surface); }
    /* Prepínač „pásková mzda" = .nx-prepinac (styles.css); tu len menšie písmo riadku. */
    .z-paska { font-size:.76rem; }

    /* --- Peňažná bunka: elegantné pole s € vnútri --- */
    .mcell { display:flex; align-items:center; gap:5px; }
    .mcell:has(.num) { border:1px solid var(--pole-okraj); border-radius:var(--r-sm); background:var(--surface); height:36px; padding:0 9px; transition:border-color .12s, box-shadow .12s; }
    .mcell:has(.num):hover { border-color:var(--pole-okraj-hover); }
    .mcell:has(.num):focus-within { border-color:var(--brand); box-shadow:var(--ring); }
    /* `width` je tu naschvál malé, hoci `flex:1` pole aj tak roztiahne na
       celú bunku. Bez neho si `<input type="number">` pýta svojich
       predvolených ~20 znakov (192 px) a o toľko si tabuľka nafúkne
       KAŽDÝ peňažný stĺpec — na QHD to nebolo vidieť, na 1920 px sa
       tým Príprava rozliezla o 500 px do boku. Na širokom monitore
       vyzerá všetko rovnako (stĺpce sa dopočítajú), na užšom sa
       tabuľka konečne zmestí. */
    .mcell .num { flex:1; min-width:0; width:7ch; height:100%; border:none !important; background:transparent; box-shadow:none !important; outline:none !important; text-align:right; padding:0; font-size:.9rem; font-variant-numeric:tabular-nums; color:var(--ink); -moz-appearance:textfield; }
    .mcell .num::-webkit-outer-spin-button, .mcell .num::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
    .mcell .num.locked { color:var(--faint); cursor:not-allowed; -webkit-text-fill-color:var(--faint); opacity:1; }
    .mcell .eur { color:var(--faint); font-size:.8rem; flex-shrink:0; }
    .mcell .nnum, .mcell .vnum { flex:1; text-align:right; font-variant-numeric:tabular-nums; }

    /* Na HD notebooku chýba Príprave posledných pár desiatok pixelov. Uberá
       sa len vzduch okolo čísla (rámček peňažného poľa, medzera pred €),
       samotné číslo ostáva rovnako veľké. */

    /* výpočtové stĺpce (bez orámovania) */
    td[data-calc="nadcas"] .nnum { color:var(--ink-soft); }
    .mz-table td[data-calc="vyplata"] { background:var(--brand-50); }
    td[data-calc="vyplata"] .vnum { color:var(--brand-ink); font-weight:700; font-size:1rem; }
    td[data-calc="vyplata"] .eur { color:var(--faint); }
    .mz-table tbody tr:hover td[data-calc="vyplata"] { background:var(--brand-100); }

    /* pásková mzda — zošednutý riadok, chip, „na páske" */
    .chip-doplatky { display:none; font-size:.62rem; background:var(--line); color:var(--ink-soft); padding:2px 8px; border-radius:var(--r-pill); font-weight:700; text-transform:uppercase; letter-spacing:.03em; }
    tr.paskova .chip-doplatky { display:inline; }
    tr.paskova td { background:var(--surface-2); }
    .na-paske { display:none; flex:1; text-align:right; color:var(--faint); font-style:italic; font-size:.82rem; }
    tr.paskova .mz-mzda .num, tr.paskova .mz-mzda .eur { display:none; }
    tr.paskova .mz-mzda .mcell { border-style:dashed; background:var(--surface-2); }
    tr.paskova .mz-mzda .na-paske { display:inline; }
    tr.paskova td[data-calc="vyplata"] { background:var(--brand-50); }
    .paska-ic { display:none; color:var(--faint); cursor:help; }
    .paska-ic .ti { font-size:15px; }
    tr.paskova .paska-ic { display:inline-flex; align-items:center; }

    /* kvótový u zamestnávateľa — len odmena/nadčas do obálky (mzda zamknutá) */
    .riesi-op { display:none; flex:1; text-align:right; color:var(--warn-700); font-style:italic; font-size:.82rem; white-space:nowrap; }
    tr.odmena-only .mz-mzda .num, tr.odmena-only .mz-mzda .eur, tr.odmena-only .mz-mzda .na-paske { display:none; }
    tr.odmena-only .mz-mzda .mcell { border-style:dashed; background:var(--warn-50); }
    tr.odmena-only .mz-mzda .riesi-op { display:inline; }
    tr.odmena-only .z-paska { opacity:.4; pointer-events:none; }
    tr.odmena-only td.col-meno { box-shadow: inset 3px 0 0 var(--warn-400); }
    .odmena-ic { display:none; color:var(--warn-600); cursor:help; }
    .odmena-ic .ti { font-size:15px; }
    tr.odmena-only .odmena-ic { display:inline-flex; align-items:center; }

    /* výpomoc z inej prevádzky — čisto hotovosť, bez väzieb */
    tr.vypomoc td.col-meno { box-shadow: inset 3px 0 0 var(--success); }
    tr.vypomoc .z-avatar { background:var(--success-line); color:var(--success-dark); }
    /* Prepínač = .nx-prepinac (styles.css); tu len riadok pod hľadaním a dlhší text, ktorý sa zalamuje. */
    .mz-vyp-toggle { display:flex; gap:9px; margin:10px 0 2px; font-size:.84rem; color:var(--ink-soft); max-width:520px; white-space:normal; }
    .mz-vyp-toggle .ti { font-size:16px; color:var(--success); }
    .ac-picker.vyp-on .ac-search { border-color:var(--success); box-shadow:0 0 0 3px var(--success-line); }

    @keyframes mzflash { 0% { background:var(--warn-200); } 100% { background:transparent; } }
    .mz-table td.flash { animation: mzflash .7s ease-out; }

    /* --- Ikonkové tlačidlá (dôvod / poznámka) --- */
    .cmt { position:relative; display:inline-flex; }
    /* Tlačidlo = jadro `.btn.btn-ikona` (audit E6); tu len stav dôvodu. */
    .cmt-ikona.filled { color:var(--brand); }
    .cmt-ikona.required { color:var(--warn-600); position:relative; }
    .cmt-ikona.required::after { content:""; position:absolute; top:2px; right:2px; width:6px; height:6px; border-radius:50%; background:var(--danger); box-shadow:0 0 0 2px var(--surface); }

    /* Riadok s chýbajúcim povinným dôvodom */
    tr.cmt-missing td { background:var(--warning-bg) !important; }
    tr.cmt-missing td[data-calc="vyplata"] { background:var(--warn-200) !important; }
    tr.cmt-missing td[data-calc="vyplata"] .vnum { color:var(--warn-800); }
    tr.cmt-missing td.col-meno { box-shadow: inset 3px 0 0 var(--warn-500); }

    .cmt-pop { position:fixed; z-index:calc(var(--z-plavajuce) - 10); background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--shadow-lg); padding:10px; width:236px; text-align:left; }
    .cmt-pop textarea { width:100%; height:62px; padding:8px; font-size:.82rem; resize:vertical; }
    .cmt-pop .cmt-close { margin-top:8px; }
    .note-pop { width:290px; }
    .note-pop textarea { height:84px; }

    .z-remove { border:none; background:transparent; color:var(--faint); cursor:pointer; padding:6px; border-radius:var(--r-sm); display:inline-flex; transition:color .12s, background .12s; }
    .z-remove .ti { font-size:17px; }
    .z-remove:hover { color:var(--danger-dark); background:var(--danger-bg); }

    /* --- Footer + akcie --- */

    .sum-label { text-align:right; font-weight:600; color:var(--ink-soft); }
    #sum-vyplata { font-weight:700; }
    .mz-actions { display:flex; align-items:center; gap:14px; margin-top:16px; flex-wrap:wrap; }
    .mz-odomknut input[name=dovod_zamietnutia] { flex:1 1 280px; min-width:0; max-width:520px; }
    .mz-actions.mz-odomknut--pod { margin-top:12px; }
    .mz-ikona-dovod { font-size:14px; vertical-align:-2px; }

    /* --- Filter lišta (hľadanie + chipy + kompaktný režim) --- */
    .mz-filterbar { position:sticky; top:0; z-index:5; display:flex; align-items:center; gap:12px; flex-wrap:wrap; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r); padding:9px 12px; margin:8px 0 12px; box-shadow:var(--shadow-xs); }
    .mzf-clear { margin-right:-6px; border:none; background:transparent; color:var(--faint); cursor:pointer; font-size:18px; line-height:1; padding:2px 7px; border-radius:var(--r-sm); }
    .mzf-clear:hover { color:var(--ink-soft); background:var(--line-soft); }
    .mzf-chips { display:flex; gap:6px; }
    /* filtre = jadro `.chip.chip--volba` (audit E6) */
    .mzf-count { margin-left:auto; font-size:.8rem; color:var(--faint); font-variant-numeric:tabular-nums; white-space:nowrap; }

    .mz-table tr.mz-filtered-out { display:none; }

    /* --- Kompaktný režim: nižšie riadky, druhý riadok (os. číslo/páska) až pri hoveri/fokuse --- */
    /* výšku a padding riadi token --row-h/--cell-x; tu ostáva len to,
       čo je špecifické pre Prípravu (druhý riadok informácií). */
    /* Druhý riadok (os. číslo, štítky) je skrytý a vyjde pri hoveri/fokuse riadka (inak polovica ľudí).
       Hover LEN pri myši: iPhone/iPad berie prvý ťuk ako hover, a keď ním obsah vyjde, klik
       nepošle — bublina poznámky/dôvodu sa neotvorila (Aleš 29. 10. 2026, iOS 16, iPad Pro). */
    .mz-table .z-row2 { display:none; }
    @media (hover:hover) and (pointer:fine) { .mz-table tbody tr:hover .z-row2 { display:flex; margin-top:5px; } }
    .mz-table tbody tr:focus-within .z-row2 { display:flex; margin-top:5px; }
    /* Kompaktná hustota uberá už len z avatara a výšky peňažných polí. */
    :root[data-density="compact"] .mz-table .z-person { gap:9px; }
    :root[data-density="compact"] .mz-table .z-avatar { width:26px; height:26px; font-size:.68rem; }
    :root[data-density="compact"] .mz-table .mcell:has(.num) { height:30px; }

/* ==========================================================================
   templates/mzdy/reporting.html
   ========================================================================== */

.rep-fakt-intro { font-size:.86rem; margin:-4px 0 12px; }
.rep-filters { display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin-bottom:18px; }
.rep-firstnote { display:flex; gap:9px; align-items:center; background:var(--info-bg); border:1px solid var(--info-line); border-radius:var(--r-lg); padding:11px 15px; font-size:.9rem; color:var(--ink-soft); margin-bottom:18px; }
.rep-firstnote .ti { font-size:18px; color:var(--muted); }

.rep-paneintro { display:flex; gap:9px; align-items:flex-start; background:var(--surface-2); border:1px solid var(--line);
  border-left:3px solid var(--brand); border-radius:var(--r-lg); padding:11px 15px; font-size:.88rem;
  color:var(--ink-soft); line-height:1.55; margin:0 0 20px; }
.rep-paneintro .ti { font-size:18px; color:var(--muted); flex:0 0 auto; margin-top:1px; }
.rep-paneintro em { font-style:normal; text-decoration:underline; text-decoration-color:var(--line); text-underline-offset:2px; }
.rep-noconsol { display:flex; gap:8px; align-items:flex-start; font-size:.86rem; margin:0; }

.rep-delta { font-weight:700; font-size:.8rem; display:inline-flex; align-items:center; gap:3px; }
.rep-delta .ti { font-size:14px; }
.rep-up { color:var(--warn-600); }
.rep-down { color:var(--teal-700); }
.rep-flat { color:var(--faint); }
.rep-vs { color:var(--faint); font-size:.76rem; margin-left:6px; }

/* Rozpad kanálov, vývoj po mesiacoch aj labor cost kreslí spoločný engine
   (`static/js/graf.js`, vzhľad v styles.css). Modul si tu drží len to, čo je
   okolo grafu — vlastný pásik, legendu ani SVG triedy už nepotrebuje. */

/* --- Kam to odišlo: celá suma práce po príjemcovi --- */
.rep-kam { margin-bottom:18px; }
.rep-kam-head h2 { margin:0 0 4px; }
.rep-kam-sub { color:var(--muted); font-size:.85rem; line-height:1.5; margin:0 0 14px; max-width:92ch; }
/* Výber mesiaca je spoločný `.seg` — tá istá pilulka ako prepínač firmy hore. */
.rep-kam .seg { margin-bottom:14px; }
/* Súhrn: jedna veta v číslach — koľko celkom, koľko ľuďom, koľko štátu. */
.rep-kam-suhrn { display:grid; gap:12px; margin-bottom:16px;
    grid-template-columns:repeat(auto-fit, minmax(210px, 1fr)); }
.rep-kam-kus { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface);
    padding:12px 15px; display:flex; flex-direction:column; gap:3px; min-width:0; }
.rep-kam-kus.is-spolu { border-color:var(--line-strong); background:var(--tonal); }
.rep-kam-kus.is-ludia { box-shadow:inset 3px 0 0 var(--c1); }
.rep-kam-kus.is-stat { box-shadow:inset 3px 0 0 var(--c5); }
.rep-kam-l { font-size:.76rem; text-transform:uppercase; letter-spacing:.05em; color:var(--faint); font-weight:650; }
.rep-kam-v { font-size:1.34rem; font-weight:800; letter-spacing:-.02em; color:var(--ink);
    font-variant-numeric:tabular-nums; }
.rep-kam-v em { font-style:normal; font-size:.62em; font-weight:600; color:var(--faint); }
.rep-kam-p { font-size:.76rem; color:var(--muted); }
.rep-kam-note { display:flex; gap:8px; align-items:flex-start; font-size:.8rem; line-height:1.5; margin:14px 0 0; }

.rep-trend-hint { font-size:.82rem; margin:-4px 0 10px; }
.rep-trend, .rep-fakt, .rep-ctrl { margin-bottom:18px; }

.rep-kvbadge { font-size:.66rem; font-weight:700; color:var(--teal-800); background:var(--teal-50); border:1px solid var(--teal-200); border-radius:999px; padding:1px 6px; margin-left:4px; }

.rep-tablehead { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
.rep-tablehead h2 { margin:0; }
.rep-tablehead > .nx-hladaj { flex: 0 1 260px; }
.rep-table tbody tr:hover { background:var(--cream-tint); }
.rep-table td.strong { font-weight:700; }
.rep-strkod { font-weight:700; }
.rep-strnazov { color:var(--faint); font-size:.82rem; margin-left:4px; }
/* Korekčné stĺpce labor cost: von = odpočet (jantár), sem = prípočet (tyrkys) */
.rep-th-out { color:var(--warn-600) !important; }
.rep-th-in { color:var(--teal-700) !important; }
.rep-cell-out { color:var(--warn-700); font-weight:600; }
.rep-cell-in { color:var(--teal-800); font-weight:600; }
.rep-th-lc { color:var(--brand-ink) !important; }
/* Meno v Kontrole podkladov = preklik do Výpočtu miezd na toho človeka.
   Šípka je viditeľná až pri nájazde, aby tabuľka pôsobila pokojne. */
.rep-osoba { color:inherit; text-decoration:none; border-bottom:1px dashed var(--line); display:inline-flex; align-items:center; gap:5px; }
.rep-osoba:hover { color:var(--brand); border-bottom-color:var(--brand); }
.rep-osoba .ti { font-size:14px; color:var(--faint); opacity:0; transition:opacity .12s; }
.rep-osoba:hover .ti { opacity:1; color:var(--brand); }
.rep-akcia { text-align:right; white-space:nowrap; width:1%; }
.rep-akcia form { display:inline-flex; gap:5px; }
/* Tlačidlá nálezu = jadro `.btn-ghost.btn-sm` (audit E6); odchýlky: */
.rep-akcia .rep-trvalo { color:var(--faint); }
/* Odpoveď na otázku „čím je platený?" — nie je to odškrtnutie, je to
   rozhodnutie, ktoré niečo zmení (prepne príznak, uzavrie nález natrvalo). */
.rep-akcia .rep-odpoved { border-color:var(--brand); color:var(--brand); }
.rep-doplnit { margin-left:6px; color:var(--brand); font-weight:600; text-decoration:underline; }
.rep-akcia .rep-vybavene { border-color:var(--success-line); background:var(--success-bg); color:var(--success); }
.rep-hotovy td { opacity:.5; }
.rep-hotovy td.rep-akcia { opacity:1; }
.rep-ok { background:var(--success-bg); border-color:var(--success-line); margin-bottom:18px; }
.rep-ok-h { display:flex; align-items:center; gap:9px; font-weight:700; color:var(--success); font-size:1rem; }
.rep-ok-h .ti { font-size:20px; }
.rep-ok p { margin:7px 0 0; font-size:.88rem; color:var(--ink-soft); }
.rep-lc { color:var(--brand-ink); }

.rep-ctrl .chips { margin-bottom:8px; }
.rep-ctrl-note { font-size:.8rem; margin:0; }

/* Odvody a mzdové náklady celej firmy */
.rep-odv { margin-bottom:22px; }
.rep-odv-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:14px; }
.rep-odv-head h2 { margin:0; }
.rep-odv-src { font-size:.78rem; color:var(--muted); display:inline-flex; align-items:center; gap:6px; }
.rep-odv-src .ti { font-size:15px; color:var(--faint); }
.rep-odv-tile { border:1px solid var(--line); background:var(--surface); }
.rep-odv-l { font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); font-weight:600; margin-bottom:6px; }
.rep-odv-hint { text-transform:none; letter-spacing:0; color:var(--faint); font-weight:500; }
.rep-odv-v { font-size:clamp(1.2rem, 1.6vw, 1.5rem); font-weight:500; letter-spacing:-.03em; font-variant-numeric:tabular-nums; color:var(--ink); }
.rep-odv-split { display:flex; flex-wrap:wrap; gap:4px 14px; margin-top:6px; font-size:.8rem; color:var(--ink-soft); }
.rep-odv-split b { color:var(--muted); font-weight:600; }
.rep-odv-d { margin-top:8px; font-size:.78rem; }
.rep-odv-note { display:flex; gap:8px; align-items:flex-start; font-size:.82rem; line-height:1.5; margin:0 0 14px; }
.rep-odv-note .ti { font-size:16px; color:var(--faint); flex:0 0 auto; margin-top:1px; }

/* Vysvetľujúca poznámka pod tabuľkou (z čoho je číslo zložené) + „bad" variant,
   keď v podklade niečo chýba. Trieda sa používala v šablóne bez štýlu. */
.rep-note { display:flex; gap:8px; align-items:flex-start; font-size:.82rem; line-height:1.5;
            color:var(--ink-soft); margin:10px 0 0; }
.rep-note .ti { font-size:16px; color:var(--faint); flex:0 0 auto; margin-top:1px; }
.rep-note.bad { color:var(--warn-800); }
.rep-note.bad .ti { color:var(--warn-700); }

/* Rozklikávací detail (rozpis po ľuďoch) — súčet ostáva na očiach, mená sú o klik. */
.rep-detail { margin-top:12px; border-top:1px solid var(--line); padding-top:10px; }
.rep-detail > summary { cursor:pointer; font-weight:600; font-size:.86rem; color:var(--brand-dark); }
.rep-detail > summary:hover { text-decoration:underline; }
.rep-detail .rep-tablewrap { margin-top:10px; }
/* Riadok mesiaca, ktorý je práve zobrazený hore — nech sa v rade rokov nájde. */
.rep-table tr.je-teraz > td { background:var(--surface-2); }
/* Súčtový riadok v pätičke tabuľky (podklad k faktúre) */
.rep-table tfoot tr.rep-sucet td { border-top:2px solid var(--line); background:var(--surface-2);
  font-variant-numeric:tabular-nums; padding-top:10px; }
.rep-table tfoot tr.rep-sucet td:last-child { color:var(--brand-ink,var(--brand)); }

/* Čo odchádza na úrady (Sociálna / Zdravotná / daň) + kontrolná identita */
.rep-urady { border-top:1px solid var(--line); padding-top:16px; margin-bottom:14px; }
.rep-urady .rep-odv-head h3 { margin:0; font-size:1.02rem; }
.rep-urady-kontrola { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface-2); padding:10px 16px; margin-bottom:14px; max-width:560px; }
.rep-urady-kontrola.is-nesedi { border-color:var(--warn-200); background:var(--warn-50); }
.rep-uk-r { display:flex; justify-content:space-between; gap:16px; padding:5px 0; font-size:.88rem; }
.rep-uk-r + .rep-uk-r { border-top:1px dashed var(--line); }
.rep-uk-l { color:var(--ink-soft); }
.rep-uk-v { font-variant-numeric:tabular-nums; font-weight:600; white-space:nowrap; }
.rep-uk-r.is-total { border-top:1px solid var(--line); font-weight:700; }
.rep-uk-r.is-total .rep-uk-l, .rep-uk-r.is-total .rep-uk-v { color:var(--brand-ink,var(--brand)); }
.rep-uk-r.is-diff .rep-uk-l, .rep-uk-r.is-diff .rep-uk-v { color:var(--warn-700); font-weight:700; }
.rep-uk-r.is-diff .ti { font-size:15px; vertical-align:-2px; margin-right:4px; }

/* Anomálie odvodov (koeficient mimo pásma) */
.rep-warn-tbl th { border-bottom-color:var(--warn-200); }
.rep-koef-low { color:var(--accent,var(--danger)); }
.rep-koef-high { color:var(--warn-700,var(--warn-700)); }

/* Labor cost po strediskách (interaktívny výber + graf) */
.rep-labor { margin-bottom:22px; }
.rep-labor-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:6px; }
.rep-labor-head h2 { margin:0 0 4px; }
.rep-labor-sub { color:var(--muted); font-size:.88rem; margin:0; max-width:62ch; line-height:1.5; }
.rep-labor-modes { display:inline-flex; background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-pill); padding:3px; box-shadow:var(--shadow-xs); flex:0 0 auto; }
.rep-lmode { border:0; background:transparent; color:var(--ink-soft); font-weight:600; font-size:.84rem; padding:7px 14px; border-radius:var(--r-pill); cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
.rep-lmode .ti { font-size:15px; }
.rep-lmode.is-on { background:var(--brand); color:var(--brand-ink-on); box-shadow:var(--shadow-xs); }
/* Vysvetlenie prepočtu kvótových */
.rep-kvnote { border:1px solid var(--teal-200); background:var(--teal-50); border-radius:var(--r-lg); padding:12px 15px; margin:14px 0 4px; }
.rep-kvnote-h { display:flex; align-items:center; gap:8px; font-weight:700; color:var(--teal-800); font-size:.9rem; }
.rep-kvnote-h .ti { font-size:17px; }
.rep-kvnote p { font-size:.83rem; color:var(--ink-soft); margin:6px 0 0; line-height:1.55; }
.rep-labor-hint { font-size:.8rem; color:var(--faint); margin:12px 0 10px; }
.rep-labor-chips { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
.rep-lchip { display:inline-flex; align-items:center; gap:7px; border:1px solid var(--line); background:var(--surface); border-radius:var(--r-pill); padding:5px 12px 5px 9px; cursor:pointer; font-size:.82rem; color:var(--ink-soft); transition:border-color .12s, background .12s; }
.rep-lchip:hover { border-color:var(--line-strong); }
.rep-lchip-dot { width:10px; height:10px; border-radius:3px; background:var(--c,var(--faint)); flex:0 0 auto; opacity:.35; transition:opacity .12s; }
.rep-lchip-kod { font-weight:700; }
.rep-lchip-v { color:var(--faint); font-variant-numeric:tabular-nums; }
.rep-lchip.is-on { border-color:var(--c,var(--brand)); background:color-mix(in srgb, var(--c,var(--brand)) 8%, var(--surface)); color:var(--ink); box-shadow:inset 0 0 0 1px var(--c,var(--brand)); }
.rep-lchip.is-on .rep-lchip-dot { opacity:1; }
.rep-labor-kpi { grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); margin-bottom:16px; }
.rep-labor-kpi:empty { display:none; }
.rep-lk { border:1px solid var(--line); background:var(--surface); }
.rep-lk-l { font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); font-weight:700; margin-bottom:5px; display:flex; align-items:center; gap:6px; }
.rep-lk-l .rep-lk-sw { width:9px; height:9px; border-radius:2px; flex:0 0 auto; }
.rep-lk-v { font-size:1.42rem; font-weight:500; letter-spacing:-.03em; font-variant-numeric:tabular-nums; color:var(--ink); }
.rep-lk-d { margin-top:6px; font-size:.76rem; }
.rep-lk-korekcia { margin-top:6px; font-size:.74rem; display:flex; flex-direction:column; gap:2px; }
.rep-lk-korekcia .k-out { color:var(--warn-700); font-weight:600; }
.rep-lk-korekcia .k-in { color:var(--teal-800); font-weight:600; }
.rep-labor-tblhead { margin-top:20px; }
.rep-labor-tblhead h3 { margin:0; font-size:1rem; }
.rep-labor-tbl-hi { background:color-mix(in srgb, var(--teal-700) 8%, transparent) !important; }
.rep-labor-note { display:flex; gap:8px; align-items:flex-start; font-size:.8rem; line-height:1.5; margin:12px 0 0; }
.rep-labor-note .ti { font-size:16px; color:var(--faint); flex:0 0 auto; margin-top:1px; }
.rep-labor-note .rep-up, .rep-labor-note .rep-down { font-weight:700; }

/* Konsolidovaný reálny náklad na ľudí (naprieč firmami) */
.rep-konsol { margin-bottom:18px; background:var(--cream-tint); border-color:var(--line); }
.rep-konsol-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:16px; }
.rep-konsol-head h2 { margin:0; }
.rep-konsol-flow { display:flex; align-items:stretch; flex-wrap:wrap; gap:10px; }
.rep-konsol-op { flex:1 1 190px; border:1px solid var(--line); border-radius:var(--r-lg); padding:14px 16px; background:var(--surface); }
.rep-konsol-op.is-in { border-color:var(--teal-200); background:var(--teal-50); }
.rep-konsol-op.is-out { border-color:var(--warn-200); background:var(--warn-50); }
.rep-konsol-op.is-result { border-color:var(--brand); background:var(--surface); box-shadow:0 0 0 1px var(--brand) inset; }
.rep-konsol-l { font-size:.78rem; text-transform:uppercase; letter-spacing:.03em; color:var(--muted); font-weight:700; margin-bottom:6px; }
.rep-konsol-firm { display:block; text-transform:none; letter-spacing:0; font-weight:600; color:var(--ink-soft); margin-top:2px; }
.rep-konsol-v { font-size:1.55rem; font-weight:800; letter-spacing:-.02em; font-variant-numeric:tabular-nums; color:var(--ink); }
.rep-konsol-op.is-result .rep-konsol-v { color:var(--brand-ink,var(--brand)); }
.rep-konsol-op.is-in .rep-konsol-v { color:var(--teal-800); }
.rep-konsol-op.is-out .rep-konsol-v { color:var(--warn-700); }
.rep-konsol-s { font-size:.78rem; color:var(--faint); margin-top:6px; line-height:1.4; }

/* ==========================================================================
   templates/mzdy/schvalovanie.html
   ========================================================================== */

    .sv-toolbar { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:14px; }

    .sv-cards { display:grid; grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); gap:10px; margin-bottom:16px; }
    .sv-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:10px 14px; display:flex; flex-direction:column; gap:2px; }
    .sv-card.hot { border-color:var(--warn-500); background:var(--warn-50); }
    .svc-k { font-size:.78rem; color:var(--ink-soft); display:flex; align-items:center; gap:6px; }
    .svc-v { font-size:1.35rem; font-weight:700; line-height:1.1; }
    .svc-sub { font-size:.72rem; color:var(--faint); }

    .sv-bulkbar { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:10px; }
    .sv-selall { display:flex; align-items:center; gap:7px; font-size:.88rem; color:var(--ink-soft); cursor:pointer; }
    .sv-hint { font-size:.82rem; color:var(--ink-soft); }
    .sv-table { min-width:980px; }
    .sv-table th, .sv-table td { text-align:left; }
    .sv-table tbody tr:last-child td { border-bottom:none; }
    .sv-table .num { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
    .sv-table .num.warn { color:var(--danger-dark); }
    .sv-table .num.strong { font-weight:700; }
    .sv-table .chk { width:30px; text-align:center; }
    .sv-table td.kod a { font-weight:700; text-decoration:none; color:var(--ink); }
    .sv-table td.kod a:hover { text-decoration:underline; }
    .sv-naz { display:block; font-size:.74rem; color:var(--faint); }
    .sv-table tr.st-schvalena td, .sv-table tr.st-neodoslana td { color:var(--ink-soft); }
    .sv-table tr.st-schvalena .num.strong { color:var(--ink); }

    /* Stav uzávierky = jadro .tag (audit E6); tlačidlá = .btn-* -sm. */
    .sv-meta { display:block; font-size:.72rem; color:var(--faint); margin-top:3px; }   /* zalomí sa — na 1440 px rozťahoval tabuľku */
    .sv-meta.own { color:var(--warn-800); font-weight:600; }
    .sv-meta.rej { color:var(--danger-dark); font-weight:600; }

    .sv-table td.akcie { white-space:nowrap; }
    .hidden-form { display:none; }

/* ==========================================================================
   templates/mzdy/vypocet.html
   ========================================================================== */


    /* Záložky výpočtu (`.nx-zalozky`). Obrazovka bola jeden nekonečný stĺpec;
       teraz sa otvára na tabuľke ľudí a zvyšok je o klik ďalej. Číslo na ušku
       (`.nx-pocet`) je jediné, čo o skrytej časti prezradí, že tam niečo čaká. */
    .vp-tab[hidden] { display:none; }

    /* toolbar */
    .mz-toolbar { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:18px 0; }
    .mz-selectors label { font-size:.82rem; color:var(--muted); display:inline-flex; align-items:center; gap:8px; }
    .mz-selectors select { font-weight:500; }
    .mz-export { margin-left:auto; }

    /* upload / stavy */
    .vp-upload { background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-lg); padding:14px 16px; margin-bottom:16px; }
    .vp-upform { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
    .vp-file { display:flex; align-items:center; gap:9px; font-size:.85rem; color:var(--ink-soft); font-weight:500; }
    .vp-file .ti { font-size:18px; color:var(--muted); }
    .vp-file input[type=file] { font-size:.82rem; }


    /* Pruh „prípravy čakajú na schválenie" — nad tabuľkou Ľudí. Jantárový,
       keď sa len čaká; bordový, keď schválenie zhodila úprava po odoslaní
       (vtedy je to chyba v procese, nie bežné čakanie). */
    .vp-blok { background:var(--warning-bg); border:1px solid var(--warning-line); color:var(--warn-800);
               border-radius:var(--r-lg); padding:14px 18px; margin-bottom:16px; font-size:.9rem; }
    .vp-blok.zrusene { background:var(--danger-bg); border-color:var(--danger-line); color:var(--danger-dark); }
    .vp-blok-h { font-size:1rem; font-weight:700; margin-bottom:4px; display:flex; align-items:center; gap:8px; }
    .vp-blok p { margin:4px 0 10px; }

    .vp-uploaded { background:var(--success-bg); border:1px solid var(--success-line); border-radius:var(--r-lg); padding:12px 16px; margin-bottom:16px; }
    .vp-up-status { color:var(--success-dark); font-size:.9rem; display:flex; align-items:center; gap:8px; }
    .vp-up-status .ti { font-size:17px; }
    .vp-reupload { margin-top:8px; }
    .vp-reupload summary { cursor:pointer; color:var(--brand-dark); font-size:.84rem; font-weight:500; }
    .vp-reupload .vp-upform { margin-top:10px; }

    .vp-stav { border-radius:var(--r-lg); padding:14px 18px; margin-bottom:16px; font-size:.9rem; border:1px solid transparent; }
    .vp-stav.pending { background:var(--warning-bg); border-color:var(--warning-line); color:var(--warn-800); }
    .vp-stav.ok { background:var(--success-bg); border-color:var(--success-line); color:var(--success-dark); font-weight:500; display:flex; align-items:center; gap:8px; }
    .vp-stav.none { background:var(--surface-2); border-color:var(--line); color:var(--ink-soft); }
    .vp-stav-h { font-size:1rem; font-weight:700; margin-bottom:4px; display:flex; align-items:center; gap:8px; }
    .vp-kontrola { border-radius:var(--r-lg); padding:12px 16px; margin-bottom:16px; border:1px solid var(--line); background:var(--surface-2); font-size:.9rem; }
    .vp-kontrola.warn { background:var(--warning-bg); border-color:var(--warning-line); }
    .vp-kontrola-h { font-weight:700; display:flex; align-items:center; gap:8px; margin-bottom:6px; }
    .vp-kontrola-sum { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
    /* Čip stavu (Výpočet, Rozpis, Preplatky v Trezore) = jadro .tag (audit
       E6): číslo +/− `.tag--ok/--wait/--neu` + `.tag--obrys`, stav
       `.tag--ok` (hotovo), `.tag--wait` (čaká), `.tag--cat` (upravuje sa),
       malý `.tag--sm`. */
    .vp-kontrola-bad { margin-top:8px; color:var(--warn-800); }
    .vp-kontrola-bad ul { margin:6px 0 0; padding-left:18px; }
    .vp-kontrola-bad code { background:var(--surface); padding:1px 5px; border-radius:4px; border:1px solid var(--warning-line); }
    .vp-kontrola-ok { margin-top:6px; color:var(--success-dark); display:flex; align-items:center; gap:6px; }
    .vp-pn-note { margin:0 0 8px; font-size:.85rem; color:var(--muted); }
    .vp-np { color:var(--success-dark); font-weight:600; }
    .vp-protokol { border:1px solid var(--line); border-radius:var(--r-lg); padding:8px 14px; margin-bottom:16px; background:var(--surface-2); font-size:.9rem; }
    .vp-protokol > summary { cursor:pointer; font-weight:700; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
    .vp-protokol > summary .muted { font-weight:400; }
    .vp-protokol-list { margin:10px 0 4px; padding-left:2px; list-style:none; display:flex; flex-direction:column; gap:5px; }
    .vp-protokol-list li { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
    .vp-protokol-list code { background:var(--surface); padding:1px 5px; border-radius:4px; border:1px solid var(--warning-line); }
    .vp-stav p { margin:4px 0 10px; }
    .vp-chips { list-style:none; display:flex; flex-wrap:wrap; gap:8px; margin:0; padding:0; }
    /* Strediská, ktoré ešte čakajú v Príprave — odkaz s počtom
       (`a.tag.tag--wait.tag--obrys` + odchýlka `.vp-pend`). */
    .vp-pend { gap:7px; padding:5px 7px 5px 13px; font-weight:500; font-size:.84rem; color:var(--ink);
        transition:box-shadow .15s, transform .15s, border-color .15s; }
    a.vp-pend:hover { border-color:var(--warn-500); box-shadow:var(--shadow-xs); transform:translateY(-1px); }
    .vp-pend .vp-cnt { background:var(--fill-warn); color:var(--fill-ink); border-radius:var(--r-pill); padding:1px 8px; font-size:.74rem; font-weight:700; min-width:20px; text-align:center; }
    .vp-pend .vp-pend-go { font-size:14px; color:var(--warn-700); opacity:.5; margin-left:-3px; transition:opacity .15s, transform .15s; }
    .vp-rej { display:inline-flex; align-items:center; gap:3px; color:var(--danger-dark); font-size:.74rem; font-weight:600; }
    .vp-rej .ti { font-size:13px; }
    a.vp-pend:hover .vp-pend-go { opacity:1; transform:translateX(2px); }

    /* Odoslané prípravy — pekné kartičky s časom uzávierky */
    .vp-odo { background:linear-gradient(180deg,var(--success-bg),var(--surface) 78%); border:1px solid var(--success-line);
              border-radius:var(--r-lg); padding:14px 16px; margin-bottom:16px; box-shadow:var(--shadow-xs); }
    .vp-odo-h { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
                font-size:1rem; font-weight:700; color:var(--success-dark); margin-bottom:12px; }
    .vp-odo-h > span:first-child { display:flex; align-items:center; gap:8px; }
    .vp-odo-h .ti { font-size:19px; }
    .vp-odo-hint { font-size:.76rem; font-weight:600; color:var(--success-dark); background:var(--surface);
                   border:1px solid var(--success-line); border-radius:var(--r-pill); padding:3px 11px; }
    .vp-odo-hint.all { background:var(--fill-ok); color:var(--fill-ink); border-color:var(--success-dark); }
    .vp-odo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(184px,1fr)); gap:10px; }
    .vp-odo-card { text-decoration:none; color:inherit; background:var(--surface); border:1px solid var(--success-line); border-radius:var(--r);
                   padding:10px 12px; display:flex; flex-direction:column; gap:5px; position:relative; overflow:hidden; cursor:pointer;
                   transition:box-shadow .15s, transform .15s, border-color .15s; }
    .vp-odo-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--success-dark); }
    .vp-odo-card:hover { box-shadow:var(--shadow-sm); transform:translateY(-1px); border-color:var(--success-dark); }
    .vp-odo-go { display:flex; align-items:center; gap:5px; margin-top:3px; font-size:.7rem; font-weight:700;
                 color:var(--success-dark); opacity:.5; transition:opacity .15s, transform .15s; }
    .vp-odo-go .ti { font-size:14px; }
    .vp-odo-card:hover .vp-odo-go { opacity:1; transform:translateX(2px); }
    .vp-odo-top { display:flex; align-items:center; justify-content:space-between; gap:8px; }
    .vp-odo-kod { font-weight:800; font-size:.98rem; color:var(--ink); letter-spacing:.01em; }
    .vp-odo-cnt { background:var(--success-bg); color:var(--success-dark); border-radius:var(--r-pill);
                  padding:1px 9px; font-size:.74rem; font-weight:700; min-width:22px; text-align:center; }
    .vp-odo-naz { font-size:.78rem; color:var(--muted); line-height:1.25; margin-top:-1px; }
    .vp-odo-time { display:flex; align-items:center; gap:6px; font-size:.8rem; color:var(--success-dark);
                   font-weight:600; font-variant-numeric:tabular-nums; margin-top:1px; }
    .vp-odo-time .ti { font-size:15px; }
    .vp-odo-kto { display:flex; align-items:center; gap:6px; font-size:.72rem; color:var(--faint); }
    .vp-odo-kto .ti { font-size:13px; }

    /* prehľadové karty */
    .vp-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(148px,1fr)); gap:12px; margin:6px 0 18px; }
    .vp-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:14px 16px; display:flex; flex-direction:column; gap:3px; box-shadow:var(--shadow-xs); }
    .vp-card .vp-k { font-size:.72rem; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; font-weight:600; }
    .vp-card .vp-v { font-size:1.4rem; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
    .vp-card .vp-sub { font-size:.76rem; color:var(--faint); }
    .vp-card .warn { color:var(--warn-700); }
    .vp-card.accent { background:var(--success-bg); border-color:var(--success-line); }
    .vp-card.accent .vp-v { color:var(--success-dark); }
    .vp-card.danger, .vp-kontrola.chyba { background:var(--danger-bg); border-color:var(--danger-line); }
    .vp-card.danger .vp-v { color:var(--danger-dark); }
    .vp-card.fakt { background:var(--info-bg); border-color:var(--info-line); }
    .vp-card.fakt .vp-v { color:var(--teal-700); }

    /* Odsúhlasenie „Na účet" s ledgerom — dva stĺpce vedľa seba (ledger vs.
       výpočet), aby sa rozdiel dal prečítať bez počítania na papieri. */
    .vp-odsuhl { border:1px solid var(--success-line); background:var(--success-bg); border-radius:var(--r-lg);
                 padding:12px 16px; margin-bottom:14px; font-size:.88rem; }
    .vp-odsuhl.warn { border-color:var(--warning-line); background:var(--warning-bg); }
    .vp-odsuhl-h { font-weight:700; display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
    .vp-odsuhl-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:8px 22px; }
    .vp-odsuhl-col { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:9px 13px; }
    .vp-odsuhl-t { font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); font-weight:600; margin-bottom:5px; }
    .vp-odsuhl-r { display:flex; justify-content:space-between; gap:14px; padding:2px 0; }
    /* nowrap: na telefóne sa inak „10 912,33 €" zlomilo tak, že € ostalo samo */
    .vp-odsuhl-r b { font-variant-numeric:tabular-nums; font-weight:600; white-space:nowrap; }
    .vp-odsuhl-r.sum { border-top:1px solid var(--line); margin-top:4px; padding-top:5px; font-weight:700; }
    .vp-odsuhl-note { margin:9px 0 0; font-size:.84rem; color:var(--muted); }
    .vp-odsuhl-note.bad { color:var(--warn-800); }

    .vp-inline { margin:0; display:inline; }

    .vp-fuzzy-save { display:flex; align-items:center; gap:14px; flex-wrap:wrap; background:var(--brand-50); border:1px solid var(--brand-200); border-radius:var(--r-lg); padding:12px 16px; margin-bottom:14px; font-size:.88rem; color:var(--brand-ink); }

    /* Tabuľky kontrol Výpočtu = `table.tbl` (krok 0b); modul pridáva len rám
       (nie sú v .table-wrap) a farbu hlavičky podľa panela, v ktorom sedia. */
    .tbl.vp-chyba-t, .tbl.vp-fakt-t { border:1px solid var(--line); border-radius:var(--r); overflow:hidden; }
    .tbl.vp-chyba-t tbody tr:last-child td, .tbl.vp-fakt-t tbody tr:last-child td { border-bottom:0; }
    .tbl.vp-chyba-t thead th { color:var(--warn-800); background:var(--warn-50); border-bottom-color:var(--warning-line); }
    .vp-chyba-t a { color:var(--brand-dark); }
    .vp-chyba-act { display:flex; gap:6px; white-space:nowrap; }

    .vp-fakt-panel { background:var(--teal-50); border:1px solid var(--teal-200); border-radius:var(--r-lg); padding:12px 16px; margin-bottom:14px; font-size:.88rem; color:var(--teal-800); }
    .vp-fakt-h { font-size:1rem; font-weight:700; margin-bottom:4px; display:flex; align-items:center; gap:8px; }
    /* Malé tabuľky Výpočtu si na telefóne odscrollujú samy, nech netrhajú stránku. */
    .vp-tablewrap { overflow-x:auto; }
    .tbl.vp-fakt-t { margin-top:8px; }
    .tbl.vp-fakt-t thead th { background:var(--teal-100); color:var(--teal-800); }

    .vp-ignor { background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r-lg); padding:8px 14px; margin-bottom:14px; }
    .vp-ignor summary { cursor:pointer; color:var(--ink-soft); font-size:.86rem; font-weight:600; }
    .vp-ignor ul { list-style:none; margin:8px 0 2px; padding:0; }
    .vp-ignor li { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:4px 0; font-size:.85rem; }

    /* --- Tabuľka --- */
    .mz-tablewrap { max-width:100%; }
    .vp-table { white-space:nowrap; }
    .vp-table thead th { position:sticky; top:0; z-index:3; line-height:1.2; }
    .vp-table th.l { text-align:left; }
    .vp-table td { text-align:right; }
    .vp-table tbody tr:last-child td { border-bottom:none; }
    .vp-table td.l { text-align:left; }
    .vp-table td.c { text-align:center; }
    .vp-table td.n { font-variant-numeric:tabular-nums; }
    .vp-table td.mono { font-family:ui-monospace,"Cascadia Code",monospace; font-size:.78rem; color:var(--muted); letter-spacing:.02em; }
    .vp-table td.ucet { color:var(--info); font-weight:500; }
    .vp-table td.hotovost { background:var(--success-bg); color:var(--success-dark); font-weight:600; }
    .vp-table tbody tr.nespar td { background:var(--warning-bg); }
    .vp-table tbody tr.nespar td.hotovost { background:var(--warn-100); }
    .vp-table tfoot td { z-index:3; }
    .vp-table .strong { font-weight:700; }

    /* zmrazené stĺpce Stredisko + Zamestnanec */
    .vp-table th.stick, .vp-table td.stick { position:sticky; background:var(--surface); }
    .vp-table td.stick { z-index:2; }
    .vp-table thead th.stick { z-index:5; }
    .vp-table .stick-1 { left:0; width:78px; min-width:78px; }
    .vp-table .stick-2 { left:78px; width:200px; min-width:200px; }
    .vp-table td.stick-2, .vp-table th.stick-2 { border-right:1px solid var(--line); white-space:normal; }
    /* Zmrazený stĺpec má vlastnú linku vpravo — tieň jadra (.tbl .stick-2) by bol druhá;
       hlavička si nechá spodnú linku. Hlavičky Výpočtu sa nezalamujú (široká mriežka). */
    .vp-table td.stick-2 { box-shadow: none; }
    .vp-table thead th.stick-2 { box-shadow: var(--th-linka, inset 0 -1px 0 var(--line)); }
    table.vp-table thead th { white-space: nowrap; }

    /* tagy */
    .vp-table .tag { display:inline-flex; align-items:center; gap:4px; font-size:.62rem; padding:2px 8px; border-radius:var(--r-pill); margin-left:6px; background:var(--line); color:var(--ink-soft); font-weight:700; text-transform:uppercase; letter-spacing:.03em; vertical-align:middle; white-space:nowrap; }
    .vp-table .tag.warn { background:var(--warn-100); color:var(--warn-800); }
    .vp-table .tag.fuzzy { background:var(--brand-100); color:var(--brand-ink); cursor:help; }
    .vp-table .tag.kvota { background:var(--teal-100); color:var(--teal-800); cursor:help; }
    .vp-table .tag.odmena { background:var(--warn-100); color:var(--warn-800); cursor:help; }
    .vp-table .tag.vypomoc { background:var(--success-line); color:var(--success-dark); cursor:help; }
    .vp-table tbody tr.vypomoc td.hotovost { background:var(--success-line); }
    .vp-note-odmena { display:flex; gap:10px; align-items:flex-start; background:var(--warn-50); border:1px solid var(--warn-200); color:var(--warn-800); padding:11px 14px; border-radius:var(--r); margin:0 0 12px; font-size:.86rem; line-height:1.45; }
    .vp-note-odmena .ti { font-size:18px; flex-shrink:0; margin-top:1px; }
    .vp-note-odmena .tag.odmena { white-space:nowrap; }
    /* V stĺpci mena sa štítok smie zalomiť — „→ len výplata na účet (mzdu rieši
       iná firma)" na jednom riadku (278 px) rozťahoval tabuľku na QHD o 46 px. */
    .vp-table td.stick-2 .tag { white-space:normal; }
    .cena-fakt { color:var(--muted); cursor:help; }
    .cena-fakt em { font-style:normal; font-size:.82em; color:var(--faint); }
    .tag.note { background:transparent; padding:2px; cursor:help; color:var(--muted); }
    .tag.note .ti { font-size:15px; }

    /* na vrátenie + záporná hotovosť */
    .vp-table td.hotovost.negativ { background:var(--danger-bg) !important; color:var(--danger-dark); font-weight:800; }
    .vp-table td.faktura.akt { background:var(--info-bg); color:var(--teal-700); font-weight:700; }
    .vp-table tbody tr.row-vratit td.stick-1 { box-shadow: inset 4px 0 0 var(--danger); }
    .ret { display:inline-flex; align-items:center; gap:3px; font-size:.64rem; background:var(--fill-bad); color:var(--fill-ink); padding:2px 7px; border-radius:var(--r-pill); margin-left:5px; font-weight:700; cursor:help; }
    .ret .ti { font-size:13px; }
    /* V číselnej bunke (nowrap) pod sumu, so zalomením: „+ hotovosť 100,00 → spolu
       100,00" vedľa sumy dával stĺpcu Vyplatiť 273 px (QHD, 2. 10. 2026). */
    .vp-table td .ret { display:flex; width:fit-content; margin:3px 0 0 auto; white-space:normal; text-align:left; }

    /* filter */
    .vp-filter { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:16px 0 10px; }
    .vp-filter .vp-chk { display:inline-flex; align-items:center; gap:7px; font-size:.84rem; color:var(--ink-soft); cursor:pointer; white-space:nowrap; }
    .vp-filter .vp-chk input[type=checkbox] { width:16px; height:16px; accent-color:var(--brand); cursor:pointer; }
    .vp-count { font-size:.82rem; color:var(--muted); margin-left:auto; }
    .vp-norows td { text-align:center; color:var(--muted); padding:20px; }
    /* preklik z Reportingu: spiatočný odkaz + dočasné zvýraznenie riadku človeka */
    .vp-priklik { display:inline-flex; align-items:center; gap:5px; font-size:.8rem; font-weight:600;
      color:var(--brand); text-decoration:none; border:1px solid var(--brand-200); background:var(--brand-50);
      border-radius:var(--r-pill); padding:5px 11px; white-space:nowrap; }
    /* `display:inline-flex` by prebilo UA pravidlo pre [hidden] → odkaz by
       svietil aj bez prekliku. */
    .vp-priklik[hidden] { display:none; }
    .vp-priklik:hover { border-color:var(--brand); }
    .vp-priklik .ti { font-size:15px; }
    .vp-table tbody tr.vp-hit td { background:var(--brand-100); }
    .vp-table tbody tr.vp-hit td.stick-1 { box-shadow: inset 4px 0 0 var(--brand); }


/* ==========================================================================
   templates/planovac/detail.html
   ========================================================================== */

    /* Formulár nastavení pravidelnej úlohy (_nastavenie_*.html) — namiesto inline štýlov. */
    .pl-pole { display:block; margin:12px 0 6px; max-width:38ch; }
    .pl-pomoc { margin:0 0 14px; max-width:75ch; }
    .pl-prepinace { margin-bottom:6px; }
    .rbac-form .checks.pl-prepinace--odsek, .checks.pl-prepinace--odsek { margin:18px 0 6px; }
    .pl-pomoc.pl-pomoc--koniec { margin-bottom:18px; }
    .pl-pomoc.pl-pomoc--pod-polom { margin:4px 0 18px; }
    .pl-pomoc.pl-pomoc--plna { max-width:none; }
    .pl-pomoc-pod { margin:4px 0 0; }
    input.pl-pocet { max-width:120px; }
    .pl-popis { margin:10px 0 0; max-width:75ch; }
    .pl-veta-pod { margin:-4px 0 12px; }
    .pl-max { max-width:75ch; }
    .pl-skupina-popis { margin:4px 0 10px; max-width:75ch; }
    .pl-st-110 { width:110px; }
    .pl-st-130 { width:130px; }
    .pl-st-150 { width:150px; }
    .tbl.pl-tabulka { margin-top:18px; }
    /* Názov úlohy je textový odkaz v bunke (nie tlačidlo) — bez triedy, ako bol. */
    .tbl.pl-tabulka td:first-child > a:first-child { font-weight:600; color:var(--brand-ink); text-decoration:none; }
    .pl-popis-riadok { margin-top:3px; max-width:60ch; }

    .pl-group { border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin-bottom:12px; }
    .pl-group-head { font-weight:600; display:flex; align-items:center; gap:8px; }
    .pl-list { margin:0; padding-left:20px; font-size:.88rem; color:var(--ink-soft); }
    .pl-list li { padding:2px 0; }
    .pl-test { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
    .pl-test input { min-width:260px; }
    .pl-detail { margin:0; font-size:.76rem; color:var(--muted); white-space:pre-wrap; font-family:inherit; max-height:130px; overflow:auto; }

/* ==========================================================================
   templates/rbac/audit.html
   ========================================================================== */

    .audit-lista { display:flex; align-items:center; gap:8px; margin:0 0 12px;
                   font-size:.88rem; color:var(--muted); }
    .audit-st-14 { width:14%; }
    .audit-st-16 { width:16%; }
    .audit-st-40 { width:40%; }
    .audit-lista [data-tabulka-zrus] { margin-left:8px; }
    .audit-lista [data-tabulka-zrus][hidden] { display:none; }

    /* Pevné rozloženie — filtre si inak vynútia šírku podľa najdlhšej položky. */
    .audit-table { table-layout:fixed; }
    .audit-table td, .audit-table th { overflow-wrap:anywhere; }

    .a-filtre th { padding-top:0 !important; padding-bottom:8px !important; font-weight:400; }
    .a-filtre input, .a-filtre select { width:100%; min-width:0; }

/* ==========================================================================
   templates/rbac/console.html — Admin centrum (rám, Ľudia, Roly, Strediská, koncept)
   Návrh 11. 10. 2026: záložky namiesto ľavého panelu, zoznam + detail,
   koncept zmien s kontrolou dopadu. Diely jadra: .nx-zalozky, .nx-cisla,
   .nx-dlg, .nx-akcie-lista, .tag, .tbl, .nx-hladaj, .nx-prepinac.
   ========================================================================== */

    .ac-podzalozky { margin-top: -10px; }
    .ac-podzalozky > a { font-size: .82rem; }
    .ac-suhrn > button { text-align: left; font: inherit; color: inherit; cursor: pointer; }
    .ac-suhrn-pod { font-size: .78rem; opacity: .75; }
    .ac-pozornost { display: grid; gap: 10px; margin: 0 0 16px; }

    /* Zoznam vľavo (vlastný posuv), detail vpravo — Ľudia aj Roly. */
    .ac-split { display: grid; grid-template-columns: minmax(260px, 340px) minmax(0, 1fr); gap: 16px; align-items: start; }
    .ac-panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); min-width: 0; }
    .ac-zoznam { position: sticky; top: 12px; overflow: hidden; display: flex; flex-direction: column; max-height: calc(100vh - 24px); }
    .ac-panel-hlava { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 16px 16px 10px; }
    .ac-panel-hlava h2 { margin: 0; font-size: 1rem; }
    .ac-zoznam-lista { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 0 16px 10px; }
    .ac-zoznam .ac-zoznam-lista { border-bottom: 1px solid var(--line); }
    .ac-zoznam-lista .nx-hladaj { flex: 1 1 100%; }
    .ac-zoznam-lista select { flex: 1 1 auto; min-width: 0; }
    .ac-pocet { font-size: .78rem; color: var(--muted); white-space: nowrap; }
    .ac-zoznam-telo { overflow-y: auto; min-height: 0; }
    .ac-detail { padding: 22px 24px; }
    .ac-skryte { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

    /* Zoznam ľudí = tabuľka (hľadanie a filter z tabulka.js), vyzerá ako zoznam. */
    table.ac-ludia thead { display: none; }
    table.ac-ludia td { padding: 0; border: 0; }
    table.ac-ludia td + td { display: none; }
    .ac-osoba-odkaz { display: flex; align-items: center; gap: 10px; padding: 9px 14px; color: inherit; text-decoration: none; border-left: 3px solid transparent; }
    .ac-osoba-odkaz:hover { background: var(--surface-2); }
    .ac-osoba.is-on .ac-osoba-odkaz { background: var(--sunken); border-left-color: var(--accent); }
    .ac-osoba.je-vypnuta .ac-osoba-text b { color: var(--muted); }
    .ac-osoba-text { display: flex; flex-direction: column; min-width: 0; flex: 1; }
    .ac-osoba-text b { font-weight: 600; font-size: .88rem; }
    .ac-osoba-text small { font-size: .74rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .ac-ava { flex: none; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; font-size: .75rem; font-weight: 600; background: var(--sunken); color: var(--ink-soft); border: 1px solid var(--line); }
    .ac-ava--velky { width: 48px; height: 48px; font-size: .95rem; }
    .ac-bodka { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--faint); }
    .ac-bodka--ok { background: var(--success); }
    .ac-bodka--caka { background: var(--warning); }

    /* Detail človeka / roly: hlavička a očíslované sekcie. */
    .ac-profil { display: flex; gap: 14px; align-items: flex-start; flex-wrap: wrap; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
    .ac-profil-text { flex: 1 1 260px; min-width: 0; }
    .ac-profil-text h2 { margin: 0; font-size: 1.35rem; font-weight: 500; letter-spacing: -.02em; }
    .ac-profil-text > small { color: var(--muted); font-size: .8rem; }
    .ac-profil-text > p { margin: 8px 0 0; }
    .ac-stitky { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
    .ac-profil-akcie { display: flex; gap: 8px; flex-wrap: wrap; }
    .ac-profil-akcie form, .ac-pary form, .ac-karta-ludia form { margin: 0; }
    .ac-detail > .nx-upozornenie { margin: 14px 0 0; }
    .ac-sekcia { padding: 18px 0 6px; border-bottom: 1px solid var(--line); }
    .ac-sekcia:last-child { border-bottom: 0; }
    .ac-sekcia-hlava { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
    .ac-sekcia-hlava h3 { margin: 0; font-size: 1rem; }
    .ac-sekcia-hlava small { margin-left: auto; font-size: .76rem; color: var(--muted); }
    .ac-krok { flex: none; width: 26px; height: 26px; border-radius: 50%; display: inline-grid; place-items: center; font-size: .7rem; color: var(--muted); background: var(--sunken); }
    .ac-cipy { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 10px; }
    .ac-cip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 6px 4px 12px; border: 1px solid var(--line); border-radius: var(--r-pill); background: var(--sunken); font-size: .84rem; }
    .ac-cip a { color: inherit; text-decoration: none; }
    .ac-cip a:hover { text-decoration: underline; }
    .ac-cip form { margin: 0; display: inline-flex; }
    .ac-cip small { font-size: .72rem; color: var(--muted); }
    .ac-cip--pevny { padding-right: 12px; background: transparent; border-style: dashed; }
    .ac-cip-x { width: 26px; height: 26px; border: 0; border-radius: 50%; background: transparent; color: var(--muted); cursor: pointer; display: grid; place-items: center; }
    .ac-cip-x:hover { background: var(--surface-2); color: var(--ink); }
    .ac .je-nove { border-color: var(--success-line); background: var(--success-bg); }
    .ac .je-odobrate { opacity: .7; border-style: dashed; }
    .ac-nove { color: var(--success); font-weight: 600; }
    .ac-pary { display: grid; gap: 8px; }
    .ac-par { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 7px 8px 7px 14px; border: 1px solid var(--line); border-radius: var(--r); }
    .ac-par > .tag:last-of-type { margin-left: auto; }
    .ac-rozsah { display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; margin: 14px 0 8px; }
    .ac-pristup tr.je-bez td { color: var(--muted); }
    .ac-konto { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 12px; }
    .ac-konto-polozka { border: 1px solid var(--line); border-radius: var(--r); padding: 12px 14px; }
    .ac-konto-polozka p { margin: 6px 0 10px; }
    .ac-konto-polozka form { margin: 0; }

    /* Roly: zoznam a matica (výber úrovne + dialóg ďalších schopností). */
    .ac-roly { overflow-y: auto; min-height: 0; padding: 4px 8px 10px; }
    .ac-rola { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: var(--r); color: inherit; text-decoration: none; border-left: 3px solid transparent; }
    .ac-rola > span:first-child { display: flex; flex-direction: column; min-width: 0; flex: 1; }
    .ac-rola b { font-weight: 600; font-size: .88rem; }
    .ac-rola small, .ac-rola-pocet { font-size: .74rem; color: var(--muted); }
    .ac-rola:hover { background: var(--surface-2); }
    .ac-rola.is-on { background: var(--sunken); border-left-color: var(--accent); }
    .ac-rozsah-box { display: flex; gap: 16px; align-items: center; justify-content: space-between; flex-wrap: wrap; margin: 16px 0 12px; padding: 14px 16px; border-radius: var(--r); background: var(--sunken); }
    .ac-rozsah-box p { margin: 4px 0 0; }
    .ac-rozsah-box.je-zmenene, .ac-matica tr.je-zmenene td:first-child { box-shadow: inset 3px 0 0 var(--warning); }
    .ac-matica td { vertical-align: middle; }
    .ac-matica td small { display: block; font-size: .74rem; margin-top: 2px; }
    .ac-matica-sekcia th { font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); padding-top: 14px; }
    .ac-matica select { min-width: 150px; }
    .ac-matica-dalsie { text-align: right; white-space: nowrap; }
    .ac-matica form, .ac-vratit { margin: 0; display: inline-flex; align-items: center; gap: 6px; }
    .ac-povodne { color: var(--warning); }

    /* Dialógy: výber viacerých rolí / stredísk / ľudí naraz. */
    .ac-dlg-siroky { width: min(760px, calc(100vw - 32px)); }
    .ac-volby { display: grid; gap: 6px; margin: 0 0 12px; max-height: 52vh; overflow-y: auto; }
    .ac-volba { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: start; padding: 9px 12px; border: 1px solid var(--line); border-radius: var(--r); cursor: pointer; }
    @supports selector(:has(a)) {   /* zvýraznenie vybraného — vylepšenie */
        .ac-volba:has(input:checked) { border-color: var(--brand-200); background: var(--brand-50); }
    }
    .ac-volba input { margin-top: 3px; }
    .ac-volba span { display: flex; flex-direction: column; gap: 2px; }
    .ac-volba small { font-size: .78rem; color: var(--muted); }
    .nx-dlg .ac-zoznam-lista { padding: 0 0 10px; }
    .ac-dlg-tabulka { max-height: 46vh; overflow-y: auto; margin-bottom: 12px; }
    .ac-vyber td:first-child { width: 36px; }
    .ac-vyber label { cursor: pointer; }
    .ac-pole { display: flex; flex-direction: column; gap: 4px; margin: 0 0 12px; font-size: .84rem; }
    .ac-pole > span { font-weight: 600; color: var(--ink-soft); }
    .nx-dlg .ac-picker { max-width: none; }
    .ac-novy-volby { margin-top: 14px; }

    /* Strediská: filtre a karty s manažérmi. */
    .ac-filtre { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 16px; }
    .ac-filtre .nx-hladaj { flex: 1 1 240px; max-width: 360px; }
    .ac-filtre-akcia { margin-left: auto; }
    .ac-karty { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); gap: 14px; }
    .ac-karta { display: flex; flex-direction: column; gap: 4px; padding: 16px 18px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); min-width: 0; }
    .ac-karta.je-vypnuta { background: var(--surface-2); }
    .ac-karta.je-vypnuta h3 { color: var(--muted); }
    .ac-karta-hore { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
    .ac-karta h3 { margin: 4px 0 0; font-size: 1.1rem; font-weight: 600; }
    .ac-karta-ludia { display: grid; gap: 4px; margin: 10px 0 auto; padding-top: 10px; border-top: 1px solid var(--line); font-size: .86rem; }
    .ac-karta-ludia > div { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 2px 6px; border-radius: var(--r-sm); border: 1px solid transparent; }
    .ac-karta-ludia a { color: inherit; }
    .ac-karta-akcie { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; align-items: center; }
    .ac-karta-akcie form { margin: 0 0 0 auto; }

    /* Koncept: lišta a kontrola dopadu. */
    .ac-lista { margin-top: 18px; }
    .ac-lista form { margin: 0; }
    .ac-zmeny { display: grid; gap: 8px; margin: 0 0 16px; }
    .ac-zmena { border: 1px solid var(--line); border-radius: var(--r); padding: 10px 14px; }
    .ac-zmena ul { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 2px; font-size: .86rem; }
    .ac-zmena li { display: flex; align-items: center; gap: 6px; }
    .ac-dopad-h { font-size: .95rem; margin: 6px 0 8px; }
    .ac-dopad td { vertical-align: top; }
    .ac-ziska { color: var(--success); font-weight: 600; }
    .ac-strati { color: var(--danger); font-weight: 600; }
    .ac-pouzit { margin-top: 16px; }


    /* --- Z pôvodnej konzoly ostáva -------------------------------------- */
    /* zaškrtávací čip = jadro `.chip.chip--volba` (audit E6) */

    /* Schopnosti v Novej role (rola_nova.html). */
    .pe-caps { display:flex; flex-direction:column; gap:6px; padding:6px 0 2px 4px; }
    .pe-cap { display:grid; grid-template-columns:auto 1fr; gap:2px 9px; align-items:start;
              padding:6px 9px; border-radius:8px; cursor:pointer; }
    .pe-cap:hover { background:var(--surface-2); }
    .pe-cap input { margin:3px 0 0; grid-row:1 / span 4; }
    .pe-cap-label { font-size:.86rem; font-weight:600; }
    @supports selector(:has(a)) { .pe-cap:has(input:checked) .pe-cap-label { color:var(--brand-ink); } }
    .pe-cap-popis { font-size:.78rem; color:var(--muted); grid-column:2; }
    .pe-cap > .nx-text-pozor { grid-column:2; font-size:.78rem; }

    /* --- Nová rola: vzory a kópia --------------------------------------- */
    .rola-nova { max-width:760px; }
    .rn-zaklad { max-width:460px; }
    input.rn-pole, textarea.rn-pole { width:100%; }
    select.rn-kopia { min-width:240px; }
    .rn-vytvorit { margin-top:14px; }
    .rn-vyber { display:flex; flex-direction:column; gap:8px; }
    .rn-volba { display:grid; grid-template-columns:auto 1fr; gap:10px; align-items:start;
                border:1px solid var(--line-soft); border-radius:10px; padding:12px 14px;
                cursor:pointer; background:var(--surface); }
    .rn-volba.rn-aktivna { border-color:var(--brand-200); background:var(--brand-50); }
    .rn-volba input[name=zaklad] { margin:3px 0 0; }
    .rn-volba-telo { display:flex; flex-direction:column; gap:2px; }
    .rn-volba-nazov { font-weight:600; }
    .rn-volba-popis { font-size:.82rem; color:var(--muted); }
    .rn-podvyber { margin-top:8px; display:flex; flex-direction:column; gap:6px; }
    .rn-volba:not(.rn-aktivna) .rn-podvyber { opacity:.45; }
    .rn-vzor { display:grid; grid-template-columns:auto 1fr; gap:9px; align-items:start;
               padding:7px 10px; border-radius:8px; background:var(--surface); cursor:pointer; }
    .rn-vzor:hover { background:var(--surface-2); }
    .rn-vzor-telo { display:flex; flex-direction:column; gap:1px; }
    .rn-vzor-detail { font-style:italic; }
    /* Štítok rozsahu patrí k názvu vzoru, nie cez celú šírku stĺpca. */
    .rn-vzor-nazov { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }

    /* Karty výmeny a ukončenia konta (konto_vymena / konto_ukoncit). */
    .kd-karta { border:1px solid var(--line-soft); border-radius:10px; padding:12px 14px;
                background:var(--surface); }
    .kd-karta-nazov { font-size:.72rem; letter-spacing:.08em; text-transform:uppercase;
                      color:var(--muted); font-weight:700; margin-bottom:8px; }
    .kd-karta p { margin:8px 0 0; }
    .kd-prepnutie { margin:0 0 20px; }
    .kd-prepnutie-form { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
    .kd-prepnutie-form input { flex:1 1 280px; min-width:0; }

    /* Štítok prepnutého admina (core.prepnutie) — vľavo dole, Paviel je vpravo. */
    .nx-prepnutie { position:fixed; left:calc(var(--sidebar-w) + 16px); bottom:16px; z-index:calc(var(--z-plavajuce) - 1); display:flex;
                    align-items:center; gap:8px; max-width:calc(100vw - var(--sidebar-w) - 104px); margin:0;
                    padding:5px 5px 5px 12px; border-radius:999px; font-size:.8rem;
                    background:var(--warn-100); color:var(--warn-700);
                    border:1px solid var(--warn-400); box-shadow:var(--shadow-lg); }
    .nx-prepnutie > span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
    .nx-prepnutie button { flex:none; border:0; border-radius:999px; padding:4px 10px; cursor:pointer;
                           font:inherit; font-weight:600; background:var(--warn-600); color:#fff; }
    .nx-prepnutie button:hover { background:var(--warn-700); }

    .rbac-tablewrap { overflow-x:auto; }

    /* Form */
    .rbac-form { max-width:560px; }
    .rbac-form label.fld { display:block; margin:14px 0 4px; font-size:.85rem; color:var(--ink-soft); font-weight:600; }
    .rbac-form input[type=text], .rbac-form textarea, .rbac-form select { width:100%; }
    .rbac-form .checks { display:flex; flex-wrap:wrap; gap:8px 16px; margin-top:6px; }
    .rbac-form .checks label { font-size:.9rem; display:flex; align-items:center; gap:6px; }
    /* Predtým `style=""` (D-018). Vzhľad poľa je jadro (styles.css), modul len šírku. */
    input.rbac-kod { text-transform:uppercase; }
    .rbac-pomoc { margin:4px 0 0; }
    .rbac-pomoc.rbac-pomoc--6 { margin-top:6px; }
    .rbac-pata { margin-top:16px; }
    .rbac-st-150 { width:150px; }
    .rbac-st-poznamka { width:38%; }

/* ==========================================================================
   templates/rbac/moduly.html
   ========================================================================== */

    .mod-list { display:flex; flex-direction:column; gap:11px; margin-top:18px; max-width:760px; }
    .mod-row { display:flex; align-items:center; gap:14px; border:1px solid var(--line);
        border-radius:var(--r-lg); background:var(--surface); box-shadow:var(--shadow-xs);
        padding:14px 17px; }
    .mod-row.off { background:var(--surface-2); }
    .mod-row.off .mod-nazov { color:var(--muted); }
    .mod-ico { width:38px; height:38px; border-radius:10px; flex:0 0 auto; display:flex;
        align-items:center; justify-content:center; font-size:19px;
        background:var(--brand-50); color:var(--brand); }
    .mod-row.off .mod-ico { background:var(--line-soft); color:var(--faint); }
    .mod-info { min-width:0; }
    .mod-nazov { font-weight:700; color:var(--ink); }
    .mod-popis { font-size:.8rem; color:var(--muted); margin-top:2px; }
    .mod-stav { margin-left:auto; display:flex; align-items:center; gap:10px; flex:0 0 auto; }
    .mod-stav-txt { font-size:.78rem; font-weight:700; color:var(--success-dark); min-width:56px; text-align:right; }
    .mod-row.off .mod-stav-txt { color:var(--faint); font-weight:600; }

/* ==========================================================================
   templates/rbac/pristupy.html
   ========================================================================== */

    .pr-suhrn { border-radius:12px; padding:14px 18px; margin:18px 0 6px; border:1px solid; }
    .pr-suhrn-t { font-weight:700; margin-bottom:4px; }
    .pr-suhrn p { margin:0; font-size:.88rem; }
    .pr-suhrn.ok { background:var(--success-bg); border-color:var(--success-line); color:var(--success-dark); }
    .pr-suhrn.blizi { background:var(--warn-50); border-color:var(--warn-200); color:var(--warn-800); }
    .pr-suhrn.kriticky, .pr-suhrn.vyprsany { background:var(--danger-bg); border-color:var(--danger-line); color:var(--danger-dark); }

    .pr-tech { font-family:ui-monospace,monospace; font-size:.76rem; opacity:.75; }

    /* stav prístupu = jadro `.tag` (audit E6) */

    .pr-dopad { background:var(--surface-2); border:1px solid var(--line); border-radius:10px; padding:10px 14px; font-size:.85rem; color:var(--ink-soft); margin-top:10px; max-width:78ch; }
    .pr-navod { font-size:.88rem; color:var(--ink-soft); max-width:78ch; padding-left:20px; margin:0 0 10px; }
    .pr-navod li { padding:3px 0; }

/* ==========================================================================
   templates/core/stav_servera.html
   ========================================================================== */

    /* Nálezy monitoringu sú spoločná karta `.nalez--varovanie/--kriticky` (styles.css). */

    /* Šírky stĺpcov a odsadenia (predtým `style=""`, D-018). */
    .sv-st-110 { width:110px; }
    .sv-st-120 { width:120px; }
    .sv-st-130 { width:130px; }
    .sv-st-150 { width:150px; }
    .sv-st-cas { width:170px; }
    .sv-st-180 { width:180px; }
    .sv-st-230 { width:230px; }
    .sv-st-240 { width:240px; }
    .nahr-pas.sv-zaloha-pas { margin-top:8px; }
    .pr-dopad.sv-graf-dopad { margin-top:0; }
    .sv-graf-nic { margin:8px 0 0; }
    .sv-zasobnik { white-space:pre-wrap; margin:4px 0 0; }
    .sv-dopad-veta { margin:0 0 8px; }
    .pr-navod.sv-navod { margin-bottom:0; }

    /* Dlaždice: popiska s obdobím, číslo, jednotka, doplnok. Bez jednotky pod
       číslom by dlaždica klamala — 87 čoho? */
    .sv-kpi { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(190px, 100%), 1fr));
        gap:12px; margin:12px 0 0; }
    .sv-tile { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface);
        box-shadow:var(--shadow-xs); padding:12px 14px; min-width:0; }
    .sv-tile.zle { border-color:var(--danger-line); background:var(--danger-bg); }
    .sv-l { font-size:.72rem; color:var(--faint); text-transform:none; line-height:1.3; }
    .sv-v { font-size:1.5rem; font-weight:700; color:var(--ink); letter-spacing:-.02em;
        margin-top:6px; line-height:1.1; }
    .sv-u { font-size:.75rem; color:var(--muted); margin-top:1px; }
    .sv-p { font-size:.75rem; color:var(--faint); margin-top:6px; }
    .sv-zle { color:var(--danger-dark); font-weight:600; }
    /* Priebeh ručnej zálohy — pruh je spoločný `.nahr-pas` (styles.css). */
    .sv-zaloha { margin-top:14px; padding:14px 16px; border:1px solid var(--line);
                 border-radius:10px; background:var(--surface); }
    .sv-zaloha.je-hotovo { border-color:var(--success-line); background:var(--success-bg); }
    .sv-zaloha.je-hotovo .nahr-pas-bar span { background:var(--success); }
    .sv-zaloha-h { display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
    .sv-zaloha-pct { font-variant-numeric:tabular-nums; font-weight:600; }
    .sv-kroky { list-style:none; margin:12px 0 0; padding:0; display:grid; gap:4px; }
    .sv-krok { display:grid; grid-template-columns:18px 1fr auto; gap:8px; align-items:baseline;
               font-size:13px; color:var(--muted); }
    .sv-krok-z { text-align:center; }
    .sv-krok-s { font-size:12px; }
    .sv-krok--hotovo .sv-krok-z { color:var(--success); }
    .sv-krok--bezi { color:var(--ink); font-weight:600; }
    .sv-krok--bezi .sv-krok-z { color:var(--accent); animation:sv-krok-pulz 1s ease-in-out infinite; }
    .sv-krok--chyba, .sv-krok--chyba .sv-krok-z { color:var(--danger); font-weight:600; }
    .sv-krok--preskocene .sv-krok-n { text-decoration:line-through; }
    @keyframes sv-krok-pulz { 50% { opacity:.3; } }
    @media (prefers-reduced-motion: reduce) { .sv-krok--bezi .sv-krok-z { animation:none; } }

    .sv-riadok { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(300px, 100%), 1fr));
        gap:12px; margin-top:12px; }
    .sv-riadok .pr-dopad { max-width:none; }

    .sv-grafy { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(280px, 100%), 1fr));
        gap:12px; }
    .sv-graf { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface);
        padding:12px 14px 10px; min-width:0; color:var(--brand); }
    .sv-graf-h { display:flex; align-items:baseline; gap:10px; margin-bottom:8px; }
    .sv-graf-n { font-size:.82rem; font-weight:600; color:var(--ink); }
    .sv-graf-v { margin-left:auto; font-size:.82rem; color:var(--muted); white-space:nowrap; }
    /* Sparkline kreslí spoločný engine (`static/js/graf.js`) — dostal tým aj
       bublinu s hodnotou a časom, ktorú vlastné SVG nemalo. */
    .sv-graf-os { display:flex; justify-content:space-between; font-size:.7rem;
        color:var(--faint); margin-top:2px; }

    .sv-hladat { min-width:220px; }

/* ==========================================================================
   templates/core/stav_servera.html — prepínač obdobia
   ========================================================================== */

    .stav-filter { display:flex; align-items:center; gap:8px; margin:-6px 0 18px; }
    .stav-label { font-size:.8rem; color:var(--faint); }

/* ==========================================================================
   templates/ulohy/vsetky.html
   ========================================================================== */


    .vt-card { border:1px solid var(--line); border-radius:var(--r-lg);
        background:linear-gradient(180deg, var(--surface-2) 0, var(--surface) 96px);
        box-shadow:var(--shadow-xs); padding:15px 18px 16px; }
    .vt-head { display:flex; align-items:center; gap:10px; margin-bottom:13px; }
    .vt-head h2 { margin:0; font-size:1rem; font-weight:700; letter-spacing:-.01em; }
    .zl-ico { width:30px; height:30px; border-radius:9px; display:flex; align-items:center; justify-content:center; font-size:16px; }
    .zl-ico.slate { background:var(--line-soft); color:var(--muted); }
    .vt-count { margin-left:auto; min-width:24px; height:22px; padding:0 8px; border-radius:var(--r-pill);
        background:var(--line-soft); color:var(--muted); font-weight:700; font-size:.78rem; display:inline-flex;
        align-items:center; justify-content:center; }
    .vt-count.on { background:var(--brand); color:var(--brand-ink-on); }
    .vt-table tbody tr:last-child td { border-bottom:none; }
    .vt-table .nowrap { white-space:nowrap; }
    .vt-table tr.is-urgent td:first-child { box-shadow:inset 3px 0 0 var(--danger); }
    .vt-table tr.is-warn td:first-child { box-shadow:inset 3px 0 0 var(--warn-500); }

    /* Admin uzavretie úlohy — tichý ghost button, aby neťahal oko k akcii,
       ktorá je poistka, nie bežný krok. */
    .vt-zavri-form { display:inline; }
    .vt-zavri { display:inline-flex; align-items:center; gap:5px; font:inherit; font-size:.74rem; font-weight:600;
        color:var(--muted); background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm);
        padding:4px 9px; cursor:pointer; white-space:nowrap; }
    .vt-zavri:hover { color:var(--ink); background:var(--surface-2); border-color:var(--line-strong); }
    .vt-zavri .ti { font-size:14px; }

    /* Zmazanie je nevratné. V pokoji vyzerá rovnako tlmene ako Uzavrieť (aby
       sa oko neťahalo k tomu horšiemu z dvoch tlačidiel), farbu dostane až
       pod kurzorom — bordová je podľa dizajnového systému rezervovaná presne
       na toto, nie na bežnú akciu. */
    .vt-zmaz { display:inline-flex; align-items:center; gap:5px; font:inherit; font-size:.74rem; font-weight:600;
        color:var(--muted); background:var(--surface); border:1px solid var(--line); border-radius:var(--r-sm);
        padding:4px 9px; cursor:pointer; white-space:nowrap; margin-left:6px; }
    .vt-zmaz:hover { color:var(--danger); background:var(--danger-bg); border-color:var(--danger-line); }
    .vt-zmaz .ti { font-size:14px; }

    .vt-typ { display:inline-block; font-size:.7rem; font-weight:700; padding:3px 9px; border-radius:var(--r-pill); white-space:nowrap; }
    .vt-typ--approve { background:var(--warn-100); color:var(--warn-800); }
    .vt-typ--process { background:var(--brand-50); color:var(--brand-ink); }
    .vt-typ--info { background:var(--line-soft); color:var(--muted); }
    .vt-title { font-weight:600; color:var(--ink); }
    .vt-meta { display:inline-flex; align-items:center; gap:6px; }

    /* Menná bunka (zdieľané so Zálohami) */
    .zl-emp { display:flex; align-items:center; gap:9px; }
    .zl-ava { width:30px; height:30px; border-radius:50%; flex:0 0 auto; display:flex; align-items:center;
        justify-content:center; font-weight:700; font-size:.7rem; color:var(--brand-ink); background:var(--brand-100); letter-spacing:.02em; }
    .zl-emp-info { display:flex; flex-direction:column; gap:1px; line-height:1.25; }
    .zl-emp-name { font-weight:600; color:var(--ink); }
    .zl-osc { font-family:ui-monospace, "SFMono-Regular", Menlo, monospace; font-size:.68rem; color:var(--muted);
        background:var(--line-soft); padding:0 5px; border-radius:4px; letter-spacing:.02em; }
    .zl-firma { font-size:.68rem; font-weight:600; color:var(--muted); background:var(--line-soft); padding:1px 6px; border-radius:4px; letter-spacing:.02em; }
    .zl-time { font-size:.73rem; color:var(--faint); }
    .zl-dash { color:var(--line); }

    .vt-person { display:inline-flex; align-items:center; gap:6px; font-size:.85rem; color:var(--ink-soft); }
    .vt-person .ti { font-size:14px; opacity:.6; }
    .vt-people { display:flex; flex-wrap:wrap; gap:4px; }
    .vt-none { display:inline-flex; align-items:center; gap:5px; font-size:.78rem; color:var(--danger-dark); }

    .vt-age { display:inline-block; font-weight:600; font-size:.78rem; padding:2px 10px; border-radius:var(--r-pill);
        background:var(--line-soft); color:var(--muted); font-variant-numeric:tabular-nums; }
    .vt-age.warn { background:var(--warn-100); color:var(--warn-800); }
    .vt-age.urgent { background:var(--danger-bg); color:var(--danger-dark); }

    /* Riadok filtrov v hlavičke (filtruje tabulka.js) */
    .vt-filtre th { padding-top:0 !important; padding-bottom:8px !important; font-weight:400; }
    .vt-filtre input, .vt-filtre select { width:100%; min-width:0; }

/* ==========================================================================
   templates/ulohy/zoznam.html
   ========================================================================== */

    /* Fronta úloh — JEDNA definícia pre Moje úlohy aj nástenku (tá ju upraví
       cez `.tasks-panel` v styles.css). Predtým kópia v sekcii nástenky, ktorá
       sa s touto prebíjala poradím: poslednej karte chýbal spodný okraj
       (audit 8. 10. 2026, P1 č. 15). Naliehavosť nesie pruh vľavo. */
    .task-list { list-style:none; margin:0; padding:0; }
    .task-item { display:flex; justify-content:space-between; align-items:center; gap:12px;
        padding:12px 14px; border:1px solid var(--line); border-radius:var(--r); margin-bottom:8px;
        border-left:4px solid var(--brand-200); background:var(--surface-2); }
    .task-item:hover { background:var(--tonal); }
    .task--zaloha_schvalit { border-left-color:var(--warning); }
    /* Bezhotovostné zálohy (v1.73.0) prevzali farby po hotovostných typoch:
       akcia pre spracovateľa ostáva petrolejová, uzavretie prípadu zelené.
       Bez týchto dvoch riadkov by živé úlohy vyšli bez pruhu, kým mŕtve typy
       (spracovat/pripravena) farbu držali. */
    .task--zaloha_spracovat, .task--zaloha_vyplatit { border-left-color:var(--info); }
    .task--zaloha_zamietnuta { border-left-color:var(--danger); }
    .task--zaloha_pripravena, .task--zaloha_vyplatena { border-left-color:var(--success); }
    .task-body { display:flex; flex-direction:column; gap:2px; min-width:0; }
    .task-title { font-weight:600; color:var(--ink); text-decoration:none; }
    a.task-title:hover { color:var(--brand-dark); text-decoration:underline; }
    .task-meta { display:inline-flex; flex-wrap:wrap; align-items:center; gap:8px; }
    .task-note { font-size:.82rem; color:var(--muted); }
    .task-osc { font-family:ui-monospace, "SFMono-Regular", Menlo, monospace; font-size:.7rem; color:var(--muted);
        background:var(--line-soft); padding:1px 6px; border-radius:var(--r-xs); letter-spacing:.02em; }
    .task-actions { display:flex; align-items:center; gap:10px; white-space:nowrap; }
    .task-time { font-size:.78rem; color:var(--faint); }
    .btn-ack { background:var(--surface); border:1px solid var(--line-strong); border-radius:var(--r-sm); padding:4px 12px;
        cursor:pointer; font-size:.82rem; font-weight:600; color:var(--ink-soft); }
    .btn-ack:hover { background:var(--line-soft); }
    /* Preplatok s viacerými ľuďmi — manažér zaškrtne, za koho peniaze doniesol. */
    .task-ohlas { position:relative; }
    .task-ohlas > summary { list-style:none; display:inline-block; }
    .task-ohlas > summary::-webkit-details-marker { display:none; }
    .task-ohlas-form { position:absolute; right:0; top:calc(100% + 6px); z-index:5;
        display:flex; flex-direction:column; gap:6px; min-width:260px; padding:10px 12px;
        background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
        box-shadow:var(--shadow); white-space:normal; }
    .task-ohlas-form label { display:flex; gap:8px; align-items:center; font-size:.84rem; }
    .task-ohlas-form .n { margin-left:auto; font-variant-numeric:tabular-nums; }
    .uloha-zvuk { margin:0 0 14px; }
    /* --- Rýchle prihlásenie: nastavenie (accounts/rychle.html) ------------- */
    .rp-panel { margin-bottom:16px; }
    .rp-panel h2 { display:flex; align-items:center; gap:8px; margin-top:0; }
    .rp-pin-form { display:flex; flex-wrap:wrap; align-items:flex-end; gap:12px; margin-top:12px; }
    .rp-pin-form label { display:flex; flex-direction:column; gap:4px; }
    .rp-pin-form input[type=password] { width:10em; letter-spacing:.3em; }
    .rp-pin-form .rp-spolocne { flex-direction:row; align-items:center; gap:8px; flex-basis:100%; }
    .rp-riadok { margin:12px 0; }
    .rp-zmena-pinu summary { cursor:pointer; color:var(--muted); }
    .rp-body { margin:0; padding-left:18px; display:grid; gap:6px; }
    .admin-tasks-link { display:flex; align-items:center; gap:12px; padding:13px 16px; margin-bottom:16px;
        border:1px solid var(--brand-200); background:var(--brand-50); border-radius:var(--r);
        color:var(--brand-ink); text-decoration:none; transition:.15s; }
    .admin-tasks-link:hover { box-shadow:var(--shadow-sm); border-color:var(--brand); }
    .admin-tasks-link > span { flex:1; font-size:.92rem; }
    .admin-tasks-link .ti { font-size:19px; }

/* ==========================================================================
   templates/vyplaty/rozpis.html
   ========================================================================== */


    .mz-toolbar { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:18px 0; }
    .mz-selectors label { font-size:.82rem; color:var(--muted); display:inline-flex; align-items:center; gap:8px; }
    .mz-selectors select { font-weight:500; }
    /* Prepínač mesiaca (`core/_mesiac_prepinac.html`) — jediná definícia;
       predtým 4× v tomto súbore a platila len posledná. */
    .mz-month { display:flex; align-items:center; gap:2px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-pill); padding:3px; box-shadow:var(--shadow-xs); }
    .mz-month .btn-ghost { border:none; padding:6px 12px; border-radius:var(--r-pill); background:transparent; }
    .mz-month .btn-ghost:hover { background:var(--line-soft); }
    .mz-month-label { min-width:120px; text-align:center; font-weight:600; font-size:.92rem; }
    .mz-export { margin-left:auto; display:flex; gap:8px; }


    /* karty */
    .vp-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:12px; margin:6px 0 18px; }
    .vp-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:14px 16px; display:flex; flex-direction:column; gap:3px; box-shadow:var(--shadow-xs); }
    .vp-card .vp-k { font-size:.72rem; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; font-weight:600; }
    .vp-card .vp-v { font-size:1.4rem; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
    .vp-card .vp-sub { font-size:.76rem; color:var(--faint); }
    .vp-card .warn { color:var(--warn-700); }
    .vp-card.accent { background:var(--success-bg); border-color:var(--success-line); }
    .vp-card.accent .vp-v { color:var(--success-dark); }
    .vp-card.danger { background:var(--danger-bg); border-color:var(--danger-line); }
    .vp-card.danger .vp-v { color:var(--danger-dark); }

    .vp-stav { border-radius:var(--r-lg); padding:14px 18px; margin-bottom:16px; font-size:.9rem; border:1px solid transparent; }
    .vp-stav.pending { background:var(--warning-bg); border-color:var(--warning-line); color:var(--warn-800); }
    .vp-stav.ok { background:var(--success-bg); border-color:var(--success-line); color:var(--success-dark); }
    .vp-stav-h { font-size:1rem; font-weight:700; margin-bottom:4px; display:flex; align-items:center; gap:8px; }
    .vp-stav p { margin:4px 0 0; }

    /* Zásobník a strediská = `table.tbl`; odchýlka: šírka podľa obsahu a čísla
       vpravo bez `.n` (textový stĺpec nesie `.l`). */
    .tbl.vp-zas-t, .tbl.vp-str-t { width:auto; min-width:420px; }
    .tbl.vp-zas-t th, .tbl.vp-zas-t td, .tbl.vp-str-t th, .tbl.vp-str-t td { text-align:right; }
    .tbl.vp-zas-t th.l, .tbl.vp-zas-t td.l, .tbl.vp-str-t th.l, .tbl.vp-str-t td.l { text-align:left; }
    .vp-str-scroll { overflow-x:auto; }
    .tbl.vp-str-t.wide { min-width:100%; }
    .vp-str-t td.zero { color:var(--faint); }
    .vp-str-t .stick-s { position:sticky; left:0; background:var(--surface); z-index:1; }
    .vp-str-t thead .stick-s { background:var(--sunken); z-index:4; }
    .vp-str-t tfoot .stick-s { background:var(--tonal); z-index:3; }
    .vp-str-t tr.row-caka td { background:var(--warning-bg); }
    .vp-num { width:90px; text-align:right; font-variant-numeric:tabular-nums; }
    .negativ { color:var(--danger-dark); font-weight:700; }
    .strong { font-weight:700; }

    /* štítky stavu = jadro `.tag` (audit E6) */

    /* zoznam dávok */
    .vp-davky { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }
    .vp-davka { border:1px solid var(--line); border-radius:var(--r); padding:12px 14px; display:flex; flex-direction:column; gap:6px; background:var(--surface-2); }
    .vp-davka.aktivna { border-color:var(--brand); background:var(--brand-50); }
    .vp-davka-h { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
    .vp-davka-c { font-weight:700; font-size:.95rem; }
    .vp-davka-sumy { display:flex; align-items:baseline; gap:8px; }
    .vp-davka-sumy strong { font-size:1.15rem; font-variant-numeric:tabular-nums; }
    .vp-davka-str { line-height:1.35; }
    .vp-davka-akcie { display:flex; gap:6px; flex-wrap:wrap; margin-top:2px; }
    .vp-davka-akcie form { display:inline; }
    .btn-ghost.danger { color:var(--danger-dark); border-color:var(--danger-line); }

    /* výber stredísk a jednotlivcov (Rozpis; `.vp-chk` má aj filter Výpočtu) */
    .vp-chks { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:9px; align-items:start; }
    .vp-chk { border:1px solid var(--line); border-radius:var(--r); background:var(--surface); transition:border-color .12s, background .12s; }
    .vp-chk:hover { border-color:var(--brand); }
    @supports selector(:has(a)) {   /* zvýraznenie vybraného — vylepšenie; stav nesie checkbox */
        .vp-chk:has(input:checked) { border-color:var(--brand); background:var(--brand-50); }
    }
    .vp-chk.part { border-color:var(--warning-line); }
    .vp-chk-master { display:flex; align-items:center; gap:9px; cursor:pointer; }
    .vp-chk input { margin-top:3px; }
    .vp-ludia { margin:10px -16px -10px; border-top:1px dashed var(--line); }
    .vp-ludia > summary { cursor:pointer; font-size:.72rem; color:var(--muted); padding:8px 16px; }
    .vp-ludia > summary:hover { color:var(--brand-dark); }
    .vp-osoba { display:flex; align-items:baseline; gap:7px; padding:4px 16px; font-size:.78rem; cursor:pointer; }
    .vp-osoba:hover { background:var(--line-soft); }
    .vp-osoba:last-child { padding-bottom:10px; }
    .vp-osoba input { margin:0; }
    /* Meno sa NIKDY neoreže (pravidlo portálu). Ak sa nezmestí na riadok,
       zalomí sa — tri bodky namiesto priezviska sú horšie ako dva riadky. */
    .vp-osoba-meno { flex:1 1 auto; min-width:0; overflow-wrap:anywhere; }
    .vp-osoba-suma { font-variant-numeric:tabular-nums; font-weight:600; }
    .vp-osoba.doplatok { background:var(--warning-bg); }
    .vp-chk-kod { font-weight:650; font-size:.8rem; letter-spacing:.02em; }
    .vp-chk-suma { display:block; margin:12px 0 4px; font-size:1.5rem; font-weight:450; letter-spacing:-.035em;
        font-variant-numeric:tabular-nums; color:var(--ink); }
    .vp-chk-sub { display:block; font-size:.72rem; color:var(--muted); }
    .vp-bilancia { font-size:.8rem; font-weight:600; font-variant-numeric:tabular-nums; }
    .vp-bilancia.ok { color:var(--success-dark); }
    .vp-bilancia.zle { color:var(--danger-dark); }

    /* Záložka „PDF pre manažéra" — výber stredísk pred tlačou. */
    .vp-pdf-uvod { color:var(--muted); font-size:.88rem; margin:14px 0 12px; }
    .vp-pdf-lista { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
    /* Dlaždice stredísk hovoria rečou modulov na nástenke — ikona, názov, dáta
       pod ním a zdvih pri prejdení myšou. Zoznam zaškrtávacích políčok vyzeral
       ako formulár na úrade, hoci je to výber, cez ktorý človek chodí očami. */
    .vp-pdf-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(232px, 1fr)); gap:14px; }
    .vp-pdf-str { position:relative; display:block; padding:15px 17px 14px;
        border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface);
        cursor:pointer; user-select:none;
        transition:transform .14s var(--ease), box-shadow .14s var(--ease),
                   border-color .14s var(--ease), background .14s var(--ease); }
    .vp-pdf-str:hover { transform:translateY(-2px); box-shadow:var(--shadow);
        border-color:var(--line-strong); }
    .vp-pdf-str.on { border-color:var(--brand); background:var(--brand-50); }
    /* Políčko ostáva v DOM (nesie hodnotu aj klávesnicu), len ho zastupuje
       kruhová značka v rohu — tá o stave hovorí zreteľnejšie. */
    .vp-pdf-str input { position:absolute; opacity:0; width:1px; height:1px;
        margin:0; pointer-events:none; }
    .vp-pdf-ico { width:38px; height:38px; border-radius:10px; display:flex;
        align-items:center; justify-content:center; font-size:20px;
        background:var(--surface-2); color:var(--faint); margin-bottom:11px;
        transition:background .14s var(--ease), color .14s var(--ease); }
    .vp-pdf-str.on .vp-pdf-ico { background:var(--brand-100); color:var(--brand-ink); }
    .vp-pdf-znak { position:absolute; top:14px; right:15px;
        width:22px; height:22px; border-radius:50%; display:flex;
        align-items:center; justify-content:center; font-size:14px;
        border:1.5px solid var(--line-strong); background:var(--surface);
        color:transparent; transition:background .14s var(--ease),
                                     border-color .14s var(--ease), color .14s var(--ease); }
    .vp-pdf-str.on .vp-pdf-znak { background:var(--brand); border-color:var(--brand);
        color:var(--brand-ink-on); }
    .vp-pdf-str input:focus-visible ~ .vp-pdf-znak { box-shadow:var(--ring); }
    .vp-pdf-kod { display:block; font-weight:640; font-size:1rem; letter-spacing:.01em; }
    .vp-pdf-nazov { display:block; margin-top:2px; font-size:.84rem; color:var(--muted);
        overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .vp-pdf-staty { display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; }
    .vp-pdf-stat { display:inline-flex; align-items:center; gap:5px;
        padding:3px 9px; border-radius:var(--r-pill); background:var(--surface-2);
        border:1px solid var(--line-soft);
        font-size:.75rem; color:var(--ink-soft); font-variant-numeric:tabular-nums; }
    .vp-pdf-stat .ti { font-size:14px; color:var(--faint); }
    .vp-pdf-str.on .vp-pdf-stat { background:var(--surface); }
    .vp-pdf-akcia { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:16px; }
    .vp-pdf-pozn { font-size:.8rem; color:var(--muted); }
    #pdf-vytvor.je-vypnuty { opacity:.45; pointer-events:none; }

    /* filter */
    .vp-filter { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:16px 0 10px; }
    .vp-count { font-size:.82rem; color:var(--muted); margin-left:auto; }

    /* tabuľka menoslovu */
    .mz-tablewrap { max-width:100%; }
    .vp-table { white-space:nowrap; }
    .vp-table thead th { position:sticky; top:0; z-index:3; }
    .vp-table th.l { text-align:left; }
    .vp-table td { text-align:right; }
    .vp-table tbody tr:last-child td { border-bottom:none; }
    .vp-table td.l { text-align:left; }
    .vp-table td.c { text-align:center; }
    .vp-table td.n { font-variant-numeric:tabular-nums; }
    .vp-table td.zero { color:var(--faint); }
    .vp-table td.mono { font-family:ui-monospace,"Cascadia Code",monospace; font-size:.78rem; color:var(--muted); }
    .vp-table tfoot td { z-index:3; }
    .vp-table tbody tr.row-vratit td.hotovost, .vp-table td.negativ { color:var(--danger-dark); font-weight:700; }
    .vp-table tbody tr.row-vratit td.stick-1 { box-shadow: inset 4px 0 0 var(--danger); }

    .vp-table th.stick, .vp-table td.stick { position:sticky; background:var(--surface); }
    .vp-table td.stick { z-index:2; }
    .vp-table thead th.stick { z-index:5; }
    .vp-table .stick-1 { left:0; width:78px; min-width:78px; }
    .vp-table .stick-2 { left:78px; width:200px; min-width:200px; border-right:1px solid var(--line); }
    .vp-norows td { text-align:center; color:var(--muted); padding:20px; }

/* ==========================================================================
   templates/zalohy/index.html
   ========================================================================== */

    /* ---------- Zálohy — kompaktný enterprise vzhľad ---------- */
    /* Vysvetlivka pod poľom formulára (napr. „vypláca sa na účet") */
    .zl-hint { display:block; margin-top:4px; color:var(--muted); font-size:.78rem; line-height:1.35; font-weight:400; }

    /* Karty s jemným farebným prechodom „do stratena" */
    .zl-card { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface);
        box-shadow:var(--shadow-xs); padding:15px 18px 16px; margin-bottom:14px; }
    .sec-new { background:linear-gradient(180deg, var(--brand-50) 0, var(--surface) 96px); border-color:var(--brand-200); }

    .zl-card-head { display:flex; align-items:center; gap:10px; margin-bottom:13px; }
    .zl-card-head h2 { margin:0; font-size:1rem; font-weight:700; display:flex; align-items:baseline; gap:7px; letter-spacing:-.01em; }
    .zl-head-note { font-size:.76rem; font-weight:500; color:var(--faint); }
    .zl-ico { width:30px; height:30px; border-radius:9px; flex:0 0 auto; display:flex; align-items:center;
        justify-content:center; font-size:16px; }
    .zl-ico.ind { background:var(--brand-50); color:var(--brand); }
    .zl-ico.amber { background:var(--warn-100); color:var(--warn-700); }
    .zl-ico.slate { background:var(--line-soft); color:var(--muted); }
    .zl-period { margin-left:auto; font-size:.78rem; color:var(--brand-ink); background:var(--surface);
        border:1px solid var(--brand-200); padding:3px 10px; border-radius:var(--r-pill); font-weight:600; white-space:nowrap; }

    /* Formulár */
    .zl-fields { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; }
    .zl-fld { display:flex; flex-direction:column; gap:5px; }
    /* `display:flex` by prebilo UA pravidlo pre [hidden] → pole „meno nového
       zamestnanca" by svietilo stále, aj keď je vybraný existujúci človek. */
    .zl-fld[hidden] { display:none; }
    /* Chýbajúci účet nie je chyba, len iná cesta — preto jantár, nie červená. */
    .zl-hint--cash { color:var(--warn-800); font-weight:600; }

    /* ---------- Zamestnanci a účty (register IBAN-ov) ---------- */

    .zu-kpi { display:grid; grid-template-columns:repeat(auto-fit, minmax(190px, 1fr));
        gap:12px; margin-bottom:16px; }
    .zu-dlazdica { display:flex; flex-direction:column; gap:2px; padding:13px 15px;
        border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface); }
    .zu-label { font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; color:var(--faint); }
    .zu-dlazdica strong { font-size:1.5rem; font-weight:700; letter-spacing:-.02em; color:var(--ink); }
    .zu-jednotka { font-size:.75rem; color:var(--muted); }
    .zu-dlazdica--ok { border-color:var(--success-line); background:var(--success-bg); }
    .zu-dlazdica--ok strong { color:var(--success-dark); }
    /* Chýbajúci účet nie je chyba, je to nedorobená práca — jantár, nie červená. */
    .zu-dlazdica--warn { border-color:var(--warn-200); background:var(--warn-50); }
    .zu-dlazdica--warn strong { color:var(--warn-800); }

    .zu-filtre { display:flex; gap:5px; margin-left:14px; }

    .zu-checkbox { display:flex; align-items:center; gap:8px; font-size:.85rem; color:var(--ink-soft); }
    .zu-checkbox input[type=checkbox] { width:16px; height:16px; accent-color:var(--brand); }
    .zu-poznamka { margin:6px 0 0; font-size:.83rem; color:var(--muted);
        display:flex; align-items:center; gap:6px; }
    .zu-problem { margin:6px 0 0; font-size:.83rem; color:var(--danger-dark);
        display:flex; align-items:flex-start; gap:6px; }
    .zu-problem .ti, .zu-poznamka .ti { flex:0 0 auto; }

    /* ---------- Zamestnanci (HR evidencia) ---------- */
    /* KPI dlaždice sú tu zároveň filtre — preto sú to tlačidlá. */
    .zu-dlazdica.js-filter { cursor:pointer; text-align:left; font:inherit; transition:.15s; }
    .zu-dlazdica.js-filter:hover { border-color:var(--brand); box-shadow:var(--shadow-xs); }

    .hr-importy { display:flex; align-items:center; gap:8px; flex-wrap:wrap;
        margin-bottom:14px; font-size:.8rem; color:var(--muted); }
    .hr-import { font-weight:600; color:var(--ink-soft); background:var(--surface);
        border:1px solid var(--line); padding:2px 9px; border-radius:var(--r-pill); }

    .hr-osoba { display:flex; align-items:center; gap:9px; text-decoration:none; color:inherit; }
    .hr-osoba:hover .zl-emp-name { color:var(--brand-ink); text-decoration:underline; }
    .zl-ava--velka { width:44px; height:44px; font-size:.95rem; }
    .hr-meno { font-size:1.15rem; font-weight:700; letter-spacing:-.01em; color:var(--ink); }

    /* Časová os pomerov: aktívny je zvýraznený, ukončené idú do stratena. */
    .hr-pomery .zd-krok:not(.zd-krok--hotovo) { opacity:.72; }
    .hr-pomer-udaje { display:flex; flex-wrap:wrap; gap:4px 14px; margin-top:5px;
        font-size:.8rem; color:var(--muted); }
    .hr-pomer-udaje span { display:inline-flex; align-items:center; gap:5px; }
    .hr-pomer-udaje .ti { font-size:14px; color:var(--faint); }

    .hr-vazby { display:grid; grid-template-columns:repeat(auto-fit, minmax(230px, 1fr)); gap:18px; }
    .hr-vazba { display:flex; flex-direction:column; gap:5px; min-width:0; }
    .hr-riadok { display:flex; align-items:center; gap:7px; flex-wrap:wrap;
        font-size:.85rem; color:var(--ink-soft); }
    .hr-riadok .ti { color:var(--faint); }

    .hr-zoznam { display:flex; flex-wrap:wrap; gap:5px; margin-top:7px; }
    .hr-zoznam span { font-size:.76rem; background:var(--surface); border:1px solid var(--line);
        padding:2px 9px; border-radius:var(--r-pill); }
    .hr-zoznam--panel { padding:0 13px 13px; }
    .hr-suhrn { margin:14px 0; }

    /* Dovolenka. Zostatok je jediné číslo, ktoré v exporte z Pohody nie je —
       portál ho skladá z položiek, tak ich rozpis vyzerá ako výpočet (položky
       pod sebou, súčet oddelený čiarou), nie ako ďalšia tabuľka údajov. */
    .hr-dov-bunka .zu-jednotka { font-size:.72rem; color:var(--muted); margin-left:3px; }
    .hr-dov-bunka .zl-time { display:block; font-size:.72rem; width:100%; }
    /* Dovolenka patrí pomeru, takže sa v riadku skladá pod seba rovnako ako
       zaradenie vedľa — obe strany riadku si tak zodpovedajú. */
    .hr-dov-riadok { justify-content:flex-end; }
    /* Súčet zostatkov u človeka s dvoma pomermi. Nie je to ďalší údaj, je to
       kľúč, podľa ktorého stĺpec stojí — preto sa drží pri čísle a vyzerá ako
       súčet (čiara nad ním), nie ako tretí riadok pomeru. */
    .hr-dov-spolu { margin-top:3px; padding-top:3px; border-top:1px solid var(--line);
        font-size:.74rem; color:var(--ink-soft); font-variant-numeric:tabular-nums; }
    .hr-dov-minus { color:var(--danger); }
    .hr-dov-vela { color:var(--warn-700); }
    .hr-dov summary .tag { margin-left:6px; }
    .hr-dov-rozpis { padding:4px 13px 0; max-width:34rem; }
    .hr-dov-r { display:flex; justify-content:space-between; align-items:baseline;
        gap:14px; padding:4px 0; font-size:.88rem; border-bottom:1px dashed var(--line); }
    .hr-dov-r span { color:var(--ink-soft); }
    .hr-dov-r strong { font-variant-numeric:tabular-nums; white-space:nowrap; }
    .hr-dov-r--suma { border-bottom:0; border-top:2px solid var(--line);
        margin-top:4px; padding-top:7px; font-size:.95rem; }
    .hr-dov-r--suma span { color:var(--ink); font-weight:600; }
    .hr-dov-detail { display:flex; flex-wrap:wrap; gap:5px; padding:10px 13px 13px; }
    .hr-dov-detail span { font-size:.76rem; color:var(--ink-soft); background:var(--surface);
        border:1px solid var(--line); padding:2px 9px; border-radius:var(--r-pill); }
    .hr-dov-minuly { color:var(--muted) !important; }

    /* Kontrola formátu importu: chýbajúci povinný stĺpec je chyba, nie splnená
       úloha — zelené `on-me` by pri ňom hovorilo presný opak toho, čo znamená. */
    .zl-table tr.hr-chyba td { background:var(--danger-bg); }
    .zl-table tr.hr-chyba td:first-child { box-shadow:inset 3px 0 0 var(--danger);
        color:var(--danger-dark); font-weight:600; }
    /* Tlačidlá sa musia vedieť zalomiť. Mobil rieši mobil.css až od 700 px
       nadol, takže na tablete (768) by štvrté tlačidlo vytlačilo hlavičku
       o 37 px za okraj obrazovky — presne to, čo mobilný kontrakt zakazuje. */
    .hr-hlavicka-akcie { display:flex; gap:8px; align-items:center;
        flex-wrap:wrap; justify-content:flex-end; }

    /* Hľadanie s našepkávačom (Zamestnanci). Široký pruh hneď pod hlavičkou
       karty — políčko schované napravo medzi ovládaním človek nenájde. */
    .hr-hladanie { margin-bottom:10px; }
    .hr-filtre { display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end;
        padding:11px 13px; margin-bottom:12px; border:1px solid var(--line);
        border-radius:var(--r); background:var(--surface-2); }
    .hr-filter { display:flex; flex-direction:column; gap:4px; }
    .hr-filter > span { font-size:.7rem; text-transform:uppercase; letter-spacing:.05em;
        color:var(--faint); }
    .hr-filter select { min-width:130px; }
    .hr-prepinace { display:flex; gap:5px; flex-wrap:wrap; }
    .hr-filtre #f-zrusit { margin-left:auto; }

    /* Človek s dvoma úväzkami má v riadku dva pomery pod sebou. */
    .hr-pomer-riadok { display:flex; flex-wrap:wrap; align-items:center; gap:5px; }
    .hr-pomer-riadok + .hr-pomer-riadok { margin-top:5px; padding-top:5px;
        border-top:1px dashed var(--line-soft); }
    .hr-potvrdenie { display:flex; flex-direction:column; gap:7px; align-items:flex-start; }

    /* Návrh na zlúčenie: naľavo starý záznam, napravo ten z Pohody, medzi nimi
       dôvod. Rozhodnutie sa má dať spraviť bez otvárania oboch kariet. */
    .hr-dvojice { display:flex; flex-direction:column; gap:10px; }
    .hr-dvojica { display:grid; grid-template-columns:1fr auto 1fr; gap:14px;
        align-items:center; padding:13px 15px; border:1px solid var(--line);
        border-radius:var(--r-lg); background:var(--surface); }
    .hr-strana { display:flex; flex-direction:column; gap:5px; min-width:0; }
    .hr-strana--stara { opacity:.75; }
    .hr-sipka { display:flex; flex-direction:column; align-items:center; gap:3px;
        color:var(--muted); font-size:.72rem; text-align:center; max-width:170px; }
    .hr-sipka .ti { font-size:19px; color:var(--brand); }
    .hr-akcie { grid-column:1 / -1; display:flex; gap:8px; justify-content:flex-end;
        padding-top:10px; border-top:1px solid var(--line-soft); }

    /* Ceruzka a kôš pri riadku pomeru / mzdovej identity — držia sa vpravo
       a zjavia sa až pri prejdení myšou, aby zoznam ostal čitateľný. */
    .hr-riadok-akcie { display:inline-flex; gap:4px; align-items:center; margin-left:auto; }
    .zd-krok .hr-riadok-akcie { position:absolute; top:10px; right:10px; }
    .hr-ikonbtn { display:inline-flex; align-items:center; justify-content:center;
        width:26px; height:26px; border-radius:var(--r-sm); border:1px solid var(--line);
        background:var(--surface); color:var(--muted); cursor:pointer; transition:.15s;
        text-decoration:none; padding:0; }
    .hr-ikonbtn:hover { color:var(--brand-ink); border-color:var(--brand); background:var(--brand-50); }
    .hr-ikonbtn--zle:hover { color:var(--danger-dark); border-color:var(--danger-line);
        background:var(--danger-bg); }
    .hr-ikonbtn .ti { font-size:14px; }
    .hr-prekazky { list-style:none; margin:0 0 12px; padding:0; display:flex;
        flex-direction:column; gap:6px; font-size:.88rem; color:var(--ink-soft); }
    .hr-prekazky li { display:flex; align-items:flex-start; gap:6px; line-height:1.45; }
    .hr-prekazky .ti { font-size:14px; color:var(--warn-700); flex:0 0 auto; margin-top:2px; }

    .zl-fld > span { font-size:.77rem; font-weight:600; color:var(--ink-soft); display:inline-flex; align-items:center; gap:6px; }
    .zl-fld > span .ti { font-size:14px; color:var(--faint); }
    .zl-full { margin-top:12px; }
    .zl-form select, .zl-form input[type=text], .zl-form input[type=number],
    .zl-form input[type=date], .zl-form input[type=email], .zl-form input[type=file],
    .zl-form textarea { width:100%; }
    .zl-form textarea { resize:vertical; }

    /* Tlačidlá = jadro .btn-* (audit E6); tu len mazanie riadku. */
    .zl-del { display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px;
        border-radius:var(--r-sm); border:1px solid var(--line); background:var(--surface); color:var(--faint); cursor:pointer; transition:.15s; }
    .zl-del:hover { color:var(--danger); border-color:var(--danger-line); background:var(--danger-bg); }
    .zl-del .ti { font-size:15px; }

    /* Tabuľka — profesionálna, hustá */

    .zl-table tbody tr:last-child td { border-bottom:none; }
    .zl-table .nowrap { white-space:nowrap; }
    .zl-time { font-size:.73rem; color:var(--faint); }
    .zl-dash { color:var(--line); }

    /* Menná bunka: plochý avatar + meno + osobné číslo */
    .zl-emp { display:flex; align-items:center; gap:9px; }
    .zl-ava { width:30px; height:30px; border-radius:50%; flex:0 0 auto; display:flex; align-items:center;
        justify-content:center; font-weight:700; font-size:.7rem; color:var(--brand-ink); background:var(--brand-100);
        letter-spacing:.02em; }
    .zl-emp-info { display:flex; flex-direction:column; gap:1px; line-height:1.25; min-width:0; }
    .zl-emp-name { font-weight:600; color:var(--ink); }
    .zl-osc { font-family:ui-monospace, "SFMono-Regular", Menlo, monospace; font-size:.68rem; color:var(--muted);
        background:var(--line-soft); padding:0 5px; border-radius:4px; align-self:flex-start; letter-spacing:.02em; }
    .zl-loc { font-weight:700; color:var(--ink); }
    .zl-firma { font-size:.68rem; font-weight:600; color:var(--muted); background:var(--line-soft); padding:1px 6px;
        border-radius:4px; letter-spacing:.02em; }

    /* Stavové pilulky = jadro .tag (audit E6): čaká → --wait, príprava
       hotovosti → --brand (plný, odlíšený od mien), čaká na odovzdanie →
       --cat (tyrkys), schválená → --ok, zamietnutá → --bad. */

    /* „Čaká na koho" — reálne mená vykonávateľov */
    .zl-nextcell { min-width:180px; }
    .zl-actors { display:flex; flex-wrap:wrap; gap:4px; margin-top:5px; }
    .zl-actor { font-size:.72rem; font-weight:600; color:var(--brand-ink); background:var(--brand-50);
        border:1px solid var(--brand-200); padding:1px 8px; border-radius:var(--r-pill); }
    .zl-nobody { display:inline-flex; align-items:center; gap:5px; margin-top:5px; font-size:.73rem; color:var(--danger-dark); }
    .zl-table tr.on-me td { background:var(--success-bg); }
    .zl-table tr.on-me td:first-child { box-shadow:inset 3px 0 0 var(--success); }
    .zl-table td .tag--sm { margin-left:4px; }
    .zl-why { font-size:.7rem; color:var(--muted); margin-left:6px; cursor:help; white-space:nowrap; }
    .zl-selfnote { font-size:.76rem; color:var(--faint); display:inline-flex; align-items:center; gap:5px; }

    .zl-actions { display:flex; gap:7px; align-items:center; justify-content:flex-end; }
    .inline { margin:0; display:inline-flex; }


    /* ---------- Hotovostná vetva a nastavenie modulu ---------- */
    /* Hotovosť je jantárová (niečo sa fyzicky chystá), odovzdanie tyrkysové
       (peniaze čakajú na človeka) — rovnaká reč farieb ako v e-mailoch:
       `.tag--wait` / `.tag--cat`. */

    .zl-nastavenie { padding:0; margin-bottom:14px; }
    .zl-nastavenie > summary { display:flex; align-items:center; gap:10px; padding:12px 16px;
        cursor:pointer; font-size:.86rem; color:var(--ink-soft); list-style:none; }
    .zl-nastavenie > summary::-webkit-details-marker { display:none; }
    .zl-nastavenie > summary::after { content:'▾'; margin-left:auto; color:var(--faint); }
    .zl-nastavenie[open] > summary::after { content:'▴'; }
    .zl-nastavenie > summary:hover { background:var(--surface-2); }
    .zl-nastavenie em { font-style:normal; font-weight:700; color:var(--brand-ink); }
    .zl-nastavenie-form { padding:0 16px 16px; max-width:640px; }

    /* ---------- Karta prípadu (detail zálohy) ---------- */
    .zd-back { display:inline-flex; align-items:center; gap:6px; margin-bottom:12px;
        font-size:.83rem; font-weight:600; color:var(--muted); text-decoration:none; }
    .zd-back:hover { color:var(--brand-ink); }

    .zd-hlava-top { display:flex; align-items:center; gap:14px; }
    .zd-suma { margin-left:auto; font-size:1.5rem; font-weight:700; letter-spacing:-.02em;
        color:var(--ink); white-space:nowrap; }
    .zd-fakty { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
        gap:12px; margin-top:16px; padding-top:14px; border-top:1px solid var(--line-soft); }
    .zd-fakty > div { display:flex; flex-direction:column; gap:3px; min-width:0; }
    .zd-fakty span { font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; color:var(--faint); }
    .zd-fakty strong { font-size:.88rem; font-weight:600; color:var(--ink); display:inline-flex;
        align-items:center; gap:5px; flex-wrap:wrap; }
    .zd-dovod { margin-top:14px; padding-top:12px; border-top:1px solid var(--line-soft); }
    .zd-dovod span { font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; color:var(--faint); }
    .zd-dovod p { margin:4px 0 0; font-size:.88rem; color:var(--ink-soft); }

    /* Panel akcie: keď je krok na prihlásenom, je orámovaný značkovou farbou —
       „toto je tvoja vec" musí byť vidno z druhého konca miestnosti. */
    .zd-akcia--na-mna { border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-50); }
    .zd-veta { margin:0 0 12px; font-size:.9rem; color:var(--ink-soft); line-height:1.5; }
    .zd-veta .ti { color:var(--faint); }
    .zd-caka { margin:0; font-size:.85rem; color:var(--muted); display:flex; align-items:center;
        gap:6px; flex-wrap:wrap; }
    .zd-tlacidla { display:flex; gap:9px; flex-wrap:wrap; margin-top:4px; }
    .zd-tlacidla--alebo { align-items:center; margin-top:10px; }
    .zd-alebo { font-size:.8rem; color:var(--faint); }

    /* Delegovanie je pri hotovosti hlavná akcia — preto formulár, nie panel. */
    .zd-deleg { padding:13px 14px; border:1px solid var(--brand-200); border-radius:var(--r-lg);
        background:var(--brand-50); }
    .zd-deleg-riadok { display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; }
    .zd-deleg-riadok .zl-fld { flex:1 1 200px; min-width:170px; }
    .zd-deleg-riadok .btn-primary { margin-bottom:1px; }

    .zd-vyzva { display:flex; gap:11px; align-items:flex-start; margin-bottom:13px;
        padding:12px 14px; border-radius:var(--r-lg); font-size:.87rem; line-height:1.5;
        border:1px solid var(--warn-200); background:var(--warn-50); color:var(--warn-800); }
    .zd-vyzva .ti { font-size:19px; flex:0 0 auto; margin-top:1px; }
    .zd-vyzva--ok { border-color:var(--teal-200); background:var(--teal-50); color:var(--teal-800); }

    /* Platobný príkaz */
    .zd-prikaz { display:flex; gap:20px; flex-wrap:wrap; align-items:flex-start;
        padding:15px; border:1px solid var(--line); border-radius:var(--r-lg);
        background:var(--surface-2); margin-bottom:14px; }
    .zd-qr { display:flex; flex-direction:column; align-items:center; gap:5px; }
    .zd-qr img { width:200px; height:200px; border:1px solid var(--line); border-radius:var(--r);
        background:#fff; padding:6px; }
    .zd-qr span { font-size:.66rem; font-weight:700; letter-spacing:.06em; color:var(--muted);
        text-transform:uppercase; }
    .zd-udaje { display:grid; grid-template-columns:auto 1fr; gap:7px 16px; margin:0; flex:1 1 260px; }
    .zd-udaje dt { font-size:.7rem; text-transform:uppercase; letter-spacing:.04em; color:var(--faint);
        align-self:center; }
    .zd-udaje dd { margin:0; font-size:.9rem; font-weight:600; color:var(--ink); align-self:center; }
    .zd-udaje .mono { font-family:ui-monospace, "SFMono-Regular", Menlo, monospace; letter-spacing:.01em; }
    .zd-kopiruj { font:inherit; color:inherit; background:none; border:none; padding:2px 6px;
        margin:-2px -6px; border-radius:var(--r-sm); cursor:pointer; display:inline-flex;
        align-items:center; gap:7px; }
    .zd-kopiruj:hover { background:var(--brand-50); color:var(--brand-ink); }
    .zd-kopiruj .ti { font-size:14px; color:var(--faint); }

    /* Nástroje spracovateľa (účet, prepnutie cesty) — schované, kým netreba. */
    .zd-nastroje { margin-top:16px; padding-top:14px; border-top:1px solid var(--line-soft);
        display:flex; flex-direction:column; gap:8px; }
    .zd-panel { border:1px solid var(--line); border-radius:var(--r); background:var(--surface); }
    .zd-panel > summary { display:flex; align-items:center; gap:8px; padding:9px 13px; cursor:pointer;
        font-size:.84rem; font-weight:600; color:var(--ink-soft); list-style:none; }
    .zd-panel > summary::-webkit-details-marker { display:none; }
    .inline.zd-zmazat { margin-left:auto; }
    .zd-panel > summary:hover { color:var(--brand-ink); }
    .zd-panel > summary .ti { color:var(--faint); }
    .zd-form { padding:0 13px 13px; display:flex; flex-direction:column; gap:11px; max-width:560px; }
    .zd-form .btn-primary { align-self:flex-start; }

    /* Časová os prípadu */
    .zd-os { list-style:none; margin:0; padding:0; }
    .zd-krok { display:flex; gap:12px; padding-bottom:16px; position:relative; }
    .zd-krok:not(:last-child)::before { content:''; position:absolute; left:13px; top:28px; bottom:0;
        width:2px; background:var(--line); }
    .zd-bod { width:28px; height:28px; border-radius:50%; flex:0 0 auto; display:flex;
        align-items:center; justify-content:center; font-size:14px; z-index:1;
        background:var(--line-soft); color:var(--muted); }
    .zd-krok--hotovo .zd-bod { background:var(--success-bg); color:var(--success-dark); }
    .zd-krok--zle .zd-bod { background:var(--danger-bg); color:var(--danger-dark); }
    .zd-krok > div { display:flex; flex-direction:column; gap:2px; min-width:0; padding-top:3px; }
    .zd-krok strong { font-size:.88rem; color:var(--ink); }
    .zd-krok p { margin:3px 0 0; font-size:.83rem; color:var(--muted); line-height:1.45; }


/* ==========================================================================
   templates/zmluvy/_style.html
   ========================================================================== */

    /* ---------- Modul Zmluvy ----------
       Hlavička, záložky a rad kariet sú spoločné diely (nx-hlava, „Záložky
       modulu" nižšie, .nx-cisla); vzhľad „A" je na konci súboru. */
    .zm-sub { margin:1px 0 0; color:var(--muted); font-size:.88rem; }

    /* Filtre */
    .zm-filters { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:14px; }

    /* Karty — panel ako v návrhu A: väčší vzduch, bez tieňa */
    .zm-card { border:1px solid var(--line); border-radius:var(--r-xl); background:var(--surface);
        padding:20px 22px 22px; margin-bottom:18px; }
    .zm-card-head { display:flex; align-items:center; gap:10px; margin-bottom:14px; }
    .zm-card-head h2 { margin:0; font-size:1rem; font-weight:600; letter-spacing:-.015em; }

    /* Tabuľka */

    .zm-table tbody tr:last-child td { border-bottom:none; }
    .zm-table .nowrap { white-space:nowrap; }
    /* Odkaz na záznam: jemné podčiarknutie ako v návrhu A — vidno, že sa dá kliknúť. */
    .zm-name { font-weight:600; color:var(--ink); text-decoration:underline; text-decoration-color:var(--line-strong);
        text-decoration-thickness:1px; text-underline-offset:4px; }
    .zm-name:hover { color:var(--brand); text-decoration-color:currentColor; }
    .zm-cislo { display:inline-block; margin-left:6px; font-size:.7rem; color:var(--muted);
        background:var(--line-soft); padding:1px 6px; border-radius:4px; font-family:ui-monospace, Menlo, monospace; }
    .zm-muted { color:var(--muted); font-size:.78rem; }
    /* Rozpis pod sumou („1 250,00 + 8 232,10 energie") sa smie zalomiť — čísla drží &nbsp;. */
    .zm-table td.money .zm-muted { white-space:normal; }
    /* Údaj, ktorý register vie, že nesedí — nie chyba aplikácie, ale číslo,
       ktorému sa nedá veriť. Jantár, nie červená: červená je v tomto portáli
       rezervovaná pre chyby a akcenty (viď bcg-nexus-dizajn). */
    /* Výnos sa musí dať odlíšiť od nákladu na prvý pohľad — v jednom stĺpci
       sú obe a bez rozlíšenia sa sčítajú očami. */
    .zm-vynos { color:var(--success); }
    .zm-firma { font-weight:700; color:var(--ink); }
    /* Dodatok, ktorého dočasné zmeny už dobehli — ostáva v histórii, ale
       nesmie sa čítať ako aktuálny stav zmluvy. */
    .zm-dodatok--dobehol { opacity:.62; }

    /* Nálezy kontrol nad zmluvou (zmluvy.kontroly) — spoločná karta `.nalez`. */
    .zm-splatky { font-size:.82rem; margin-top:10px; }
    .zm-splatky th, .zm-splatky td { padding:5px 8px; }
    .zm-splatky td > input.nx-bunka-pole { width:5.8rem; text-align:right; font-weight:inherit; } /* rozpis ako v Exceli (zmluvy.kalendar) */
    .zm-splatky td > input.nx-bunka-pole[type="date"] { width:8.4rem; text-align:left; }
    #zm-kalendar .zm-fld { flex:0 0 12rem; }
    /* Tá istá tabuľka slúži aj na zadávanie riadkov kalendára vo formulári —
       polia v nej nesmú rozhodiť šírku stĺpcov. */
    #zm-splatky-riadky input[type="text"],
    #zm-splatky-riadky input[type="number"] { width:100%; min-width:70px; }
    #zm-splatky-riadky input[type="date"] { width:100%; min-width:130px; }
    #zm-splatky-riadky select { width:100%; min-width:70px; }

    /* Značky — prepínateľné štítky. `--zn-farba` si nesie každá značka sama,
       predvolene je to farba značky portálu. */
    .zm-znacky-filter { display:flex; gap:6px; flex-wrap:wrap; align-items:center;
        padding-top:2px; }
    .zm-znacky-label { font-size:.72rem; text-transform:uppercase; letter-spacing:.04em;
        font-weight:700; color:var(--faint); display:inline-flex; align-items:center; gap:4px; }
    .zm-znacka { --zn-farba:var(--brand-ink);
        display:inline-flex; align-items:center; gap:5px; font-size:.72rem; font-weight:600;
        padding:3px 10px; border-radius:var(--r-pill); white-space:nowrap;
        border:1px solid var(--line); background:var(--surface); color:var(--ink-soft);
        text-decoration:none; cursor:pointer; }
    .zm-znacka:hover { border-color:var(--zn-farba); color:var(--zn-farba); }
    .zm-znacka--on { background:var(--zn-farba); border-color:var(--zn-farba); color:#fff; }
    .zm-znacka--on:hover { color:#fff; opacity:.88; }
    .zm-znacka-pocet { font-weight:500; color:var(--faint); font-size:.68rem; }
    /* V riadku tabuľky je značka len štítok, nie prepínač. */
    .zm-znacka--riadok { cursor:default; margin-left:4px; padding:1px 8px;
        border-color:var(--zn-farba); color:var(--zn-farba); }
    .zm-znacky-vyber { display:flex; gap:6px; flex-wrap:wrap; align-items:center;
        margin-top:10px; }
    .zm-znacka--vyber { cursor:pointer; }
    .zm-znacka--vyber input { margin:0; }
    @supports selector(:has(a)) {   /* farba vybranej značky — vylepšenie, stav nesie checkbox */
        .zm-znacka--vyber:has(input:checked) { background:var(--zn-farba);
            border-color:var(--zn-farba); color:#fff; }
    }

    /* --- Košielka zmluvy (tlačový list) ----------------------------------
       Jeden papier so všetkým podstatným. Na obrazovke vyzerá ako list, pri
       tlači zmizne všetko, čo sa nedá vytlačiť (navigácia, tlačidlá). */
    .zm-kos-akcie { display:flex; gap:12px; align-items:center;
        justify-content:space-between; margin-bottom:14px; }
    .zm-kosielka { background:var(--surface); border:1px solid var(--line);
        border-radius:var(--r); padding:26px 30px; max-width:920px; }
    .zm-kos-hlava { display:flex; gap:20px; justify-content:space-between;
        align-items:flex-start; border-bottom:2px solid var(--ink);
        padding-bottom:12px; margin-bottom:16px; }
    .zm-kos-nadpis { font-size:.68rem; text-transform:uppercase; letter-spacing:.12em;
        font-weight:700; color:var(--faint); }
    .zm-kos-hlava h1 { font-size:1.28rem; margin:2px 0 4px; line-height:1.25; }
    .zm-kos-podnadpis { font-size:.8rem; color:var(--ink-soft); }
    .zm-kos-znacky { margin-top:6px; }
    .zm-kos-meta { text-align:right; font-size:.78rem; color:var(--ink-soft);
        white-space:nowrap; }
    .zm-kos-chyby { border:1px solid var(--danger-line); background:var(--danger-bg);
        border-radius:var(--r-sm); padding:10px 14px; margin-bottom:16px;
        font-size:.82rem; color:var(--danger-dark); }
    .zm-kos-chyby ul { margin:6px 0 0; padding-left:18px; }
    .zm-kos-blok { margin-bottom:18px; break-inside:avoid; }
    .zm-kos-blok h2 { font-size:.72rem; text-transform:uppercase; letter-spacing:.08em;
        font-weight:700; color:var(--faint); border-bottom:1px solid var(--line);
        padding-bottom:4px; margin:0 0 8px; }
    .zm-kos-dl { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr));
        gap:6px 26px; margin:0; }
    .zm-kos-dl > div { display:grid; grid-template-columns:minmax(120px, 34%) 1fr;
        gap:10px; align-items:baseline; font-size:.84rem; }
    .zm-kos-siroky { grid-column:1 / -1; }
    .zm-kos-dl dt { color:var(--faint); font-size:.76rem; }
    .zm-kos-dl dd { margin:0; color:var(--ink); }
    .zm-kos-text { font-size:.82rem; color:var(--ink-soft); margin:6px 0 0;
        line-height:1.5; }
    /* Tabuľka na papieri = `table.tbl tbl--zalom`; odchýlka: hustá, bez
       prilepenej hlavičky a výplne (tlačí sa). */
    .tbl.zm-kos-tab { font-size:.8rem; background:transparent; }
    .tbl.zm-kos-tab thead th { position:static; height:auto; padding:3px 8px 3px 0; font-size:.7rem;
        color:var(--faint); background:transparent; box-shadow:none; }
    .tbl.zm-kos-tab tbody td { height:auto; padding:4px 8px 4px 0; vertical-align:top; }
    .tbl.zm-kos-tab tbody tr:hover td { background:transparent; }
    .zm-kos-pata { margin-top:20px; padding-top:10px; border-top:1px solid var(--line);
        font-size:.72rem; color:var(--faint); line-height:1.5; }

    @media print {
        /* Tlačí sa LEN košielka. Bez tohto by na papier išla aj bočná
           navigácia a hlavička portálu — a z jednostranového listu by boli tri. */
        .no-print, .sidebar, .topbar, .zm-kos-akcie { display:none !important; }
        .content { padding:0 !important; }
        .zm-kosielka { border:none; padding:0; max-width:none; }
        .zm-kos-blok { page-break-inside:avoid; }
        body { background:#fff; }
    }
    /* Štítky a pilulky expirácie = jadro `.tag.tag--sm` (audit E6): značka
       --akcent, banka --neu, chyba a po splatnosti --bad, čoskoro --wait. */

    /* Stavové štítky */
    .zm-state { display:inline-block; font-size:.72rem; font-weight:600; padding:2px 9px; border-radius:var(--r-pill); white-space:nowrap; }
    .zm-state--aktivna { background:var(--success-bg); color:var(--success-dark); }
    .zm-state--koncept { background:var(--line-soft); color:var(--muted); }
    .zm-state--expirovana { background:var(--danger-bg); color:var(--danger-dark); }
    .zm-state--vypovedana { background:var(--warn-100); color:var(--warn-800); }
    .zm-state--archivovana { background:var(--line-soft); color:var(--faint); }
    .zm-state--duplikat { background:var(--line-soft); color:var(--faint); text-decoration:line-through; }

    /* Detail */
    .zm-detail-grid { display:grid; grid-template-columns:minmax(0, 2fr) minmax(0, 1fr); gap:14px; align-items:start; }
    .zm-meta { display:grid; grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); gap:12px 18px; }
    .zm-meta dt { font-size:.7rem; text-transform:uppercase; letter-spacing:.04em; color:var(--faint); font-weight:600; margin-bottom:2px; }
    .zm-meta dd { margin:0 0 2px; font-size:.92rem; color:var(--ink); font-weight:500; }
    .zm-back { display:inline-flex; align-items:center; gap:6px; color:var(--muted); text-decoration:none; font-size:.85rem; margin-bottom:10px; }
    .zm-back:hover { color:var(--brand); }
    .zm-doclist { list-style:none; margin:8px 0 0; padding:0; display:flex; flex-direction:column; gap:6px; }
    .zm-doclist a { display:flex; align-items:center; gap:8px; padding:8px 10px; border:1px solid var(--line);
        border-radius:var(--r-sm); text-decoration:none; color:var(--ink); font-size:.85rem; background:var(--surface); overflow-wrap:anywhere; }
    .zm-doclist a:hover { border-color:var(--brand); background:var(--brand-50); }
    .zm-doclist .ti { color:var(--brand); font-size:17px; }
    .zm-doclist .zm-docsize { margin-left:auto; flex-shrink:0; white-space:nowrap; color:var(--faint); font-size:.72rem; }
    .zm-timeline { list-style:none; margin:0; padding:0; }
    .zm-timeline li { position:relative; padding:0 0 14px 20px; border-left:2px solid var(--line); }
    .zm-timeline li:last-child { border-left-color:transparent; padding-bottom:0; }
    .zm-timeline li::before { content:""; position:absolute; left:-6px; top:3px; width:10px; height:10px;
        border-radius:50%; background:var(--brand); }
    .zm-obrat { background:var(--warn-50); border:1px solid var(--warn-100); border-radius:var(--r-sm); padding:10px 12px; margin-top:10px; }
    .zm-obrat h4 { margin:0 0 4px; font-size:.8rem; color:var(--warn-800); display:flex; align-items:center; gap:6px; }

    /* Formulár */
    .zm-form { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface); box-shadow:var(--shadow-xs); padding:18px; }
    .zm-fset { border:none; margin:0 0 18px; padding:0; }
    .zm-fset > legend { font-size:.8rem; font-weight:700; color:var(--brand-ink); text-transform:uppercase; letter-spacing:.04em;
        padding:0 0 10px; margin-bottom:12px; border-bottom:1px solid var(--line-soft); width:100%; }
    .zm-fgrid { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(200px, 100%), 1fr)); gap:12px 14px; }
    .zm-fld { display:flex; flex-direction:column; gap:5px; }
    .zm-fld.full, .zm-formfoot.full { grid-column:1 / -1; }
    .zm-fld > span { font-size:.77rem; font-weight:600; color:var(--ink-soft); }
    .zm-fld input, .zm-fld select, .zm-fld textarea { width:100%; }
    .zm-fld textarea { resize:vertical; }
    .zm-check { flex-direction:row; align-items:center; gap:8px; }
    .zm-check input { width:auto; }
    .zm-formfoot { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:6px; }
    .zm-formfoot .btn-danger { margin-left:auto; }
    .zm-hint { font-size:.76rem; color:var(--faint); }
    /* Predtým `style=""` (D-018). */
    .zm-hint.zm-hint--uvod { margin:-4px 0 10px; }
    .zm-hint.zm-hint--pozor { color:var(--warn-800); }
    .zm-hint.zm-hint--chyba { color:var(--danger-dark); }
    .zm-fgrid.zm-fgrid--pod { margin-top:12px; }
    .zm-formfoot.zm-formfoot--tesne { margin-top:0; }
    .zm-formfoot.zm-formfoot--pod { margin-top:10px; }
    .zm-fld.zm-check--odsek { margin-bottom:10px; }
    .zm-fld.zm-fld--pod { margin-top:8px; }
    .zm-fld.zm-fld--pod10 { margin-top:10px; }
    .zm-card.zm-card--nad { margin-bottom:12px; }
    .zm-card.zm-card--pod { margin-top:12px; }
    .checks.zm-ako { display:flex; gap:16px; flex-wrap:wrap; }
    .zm-sken-obrazok { max-width:100%; border:1px solid var(--line); border-radius:var(--r-sm); }
    .zm-inline { display:inline; }
    .tbl.zm-kos-tab.zm-kos-tab--pod { margin-top:8px; }
    .req { color:var(--danger); font-weight:700; margin-left:2px; }
    .zm-reqnote { font-size:.8rem; color:var(--muted); margin:0 0 12px; }
    .zm-req-hint { font-size:.76rem; color:var(--warn-800); margin:6px 0 0; display:flex; align-items:center; gap:5px; }
    /* Sken, ktorý je už na serveri (odložený z AI extrakcie) — formulár ho
       druhýkrát nenahráva, len sa naň odkazuje tokenom. */
    /* Hlásenie „pracujem, počkaj" — má byť vidieť, nie sa strácať v šedej. */
    .zm-praca { font-size:.8rem; font-weight:600; color:var(--brand); display:inline-flex;
        align-items:center; gap:6px; }
    .zm-praca::before { content:""; width:12px; height:12px; border-radius:50%;
        border:2px solid var(--brand); border-top-color:transparent;
        animation:zm-toc .8s linear infinite; }
    @keyframes zm-toc { to { transform:rotate(360deg); } }
    @media (prefers-reduced-motion:reduce) { .zm-praca::before { animation:none; } }
    /* Väzby zmluvy — musia udrieť do očí hneď pod hlavičkou. */
    .zm-vazby { display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px;
        margin:0 0 12px; padding:12px 14px; border:1px solid var(--brand-200);
        border-left:4px solid var(--brand); border-radius:var(--r-lg);
        background:var(--brand-50); }
    .zm-vazby-label { font-size:.72rem; text-transform:uppercase; letter-spacing:.05em;
        font-weight:700; color:var(--brand-ink); display:inline-flex; align-items:center; gap:6px; }
    .zm-vazby-chips { display:flex; flex-wrap:wrap; gap:8px; }
    .zm-vazba-odkaz { display:inline-flex; align-items:center; gap:9px; padding:8px 13px;
        border:1px solid var(--line); border-radius:var(--r-sm); background:var(--surface);
        text-decoration:none; color:var(--ink); font-size:.82rem; line-height:1.25;
        box-shadow:var(--shadow-xs); }
    .zm-vazba-odkaz:hover { border-color:var(--brand); background:var(--surface-2); }
    .zm-vazba-odkaz .ti { font-size:19px; flex:0 0 auto; }
    .zm-vazba-odkaz strong { font-weight:700; color:var(--ink); }
    .zm-vazba-odkaz span { color:var(--muted); }
    .zm-vazba-odkaz--zaruka .ti { color:var(--success); }
    .zm-vazba-odkaz--dodatok .ti { color:var(--brand); }
    .zm-vazba-odkaz--rodic .ti { color:var(--warn-500); }

    /* Skok z lišty na konkrétny dodatok — cieľ musí byť vidieť. */
    .zm-timeline li:target { background:var(--warn-50); border-radius:var(--r-sm);
        box-shadow:0 0 0 3px var(--warn-100); }

    /* Naviazanie na zmluvu — lišta akcií na detaile a banner vo formulári. */
    .zm-pridat { display:flex; flex-wrap:wrap; align-items:center; gap:8px;
        margin:0 0 14px; padding:10px 14px; border:1px solid var(--line);
        border-radius:12px; background:var(--surface-2); }
    .zm-pridat-label { font-size:.8rem; font-weight:600; color:var(--ink-soft);
        display:inline-flex; align-items:center; gap:6px; margin-right:2px; }
    .zm-vazba { display:flex; gap:10px; align-items:flex-start; margin:0 0 14px;
        padding:12px 14px; border:1px solid var(--brand-200); border-radius:12px;
        background:var(--brand-50); font-size:.86rem; color:var(--ink-soft); }
    .zm-vazba .ti { color:var(--brand-ink); font-size:1.1rem; }
    .zm-dodatok { border:1px solid var(--line); border-radius:10px; padding:10px 12px; margin-bottom:10px;
        background:var(--surface-2, transparent); }
    .zm-odlozene { display:flex; flex-wrap:wrap; gap:8px; }
    .zm-odlozene:not(:empty) { margin-top:10px; }


/* ==========================================================================
   templates/navstevnost/index.html — Návštevnosť portálu
   --------------------------------------------------------------------------
   Obrazovka stojí na komponentoch systému (stat-card, panel, filterbar,
   table-wrap + table.tbl). Tu je len to, čo systém nemá: filtračný riadok
   s oknami, graf a rozpadové zoznamy. Všetko zúžené na `.nv-`.
   ========================================================================== */

    /* E-mail konta nemá kde sa zalomiť — na 1440 px rozťahoval tabuľku (2. 10. 2026). */
    #nv-ludia td.nv-konto { overflow-wrap:anywhere; min-width:14ch; }
    .nv-filters { display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px;
        background:var(--sunken); border:1px solid var(--line); border-radius:var(--r);
        padding:12px 14px; margin-bottom:18px; }
    /* okná 7/30/90 dní = jadro `.seg` (audit E6) */
    .nv-f { display:flex; flex-direction:column; gap:4px; font-size:.74rem; font-weight:640;
        color:var(--faint); letter-spacing:.02em; }
    .nv-check { display:flex; align-items:center; gap:7px; font-size:.82rem; color:var(--ink-soft);
        padding-bottom:7px; }
    .nv-reset { font-size:.8rem; color:var(--faint); text-decoration:none; padding-bottom:8px; }
    .nv-reset:hover { color:var(--ink); text-decoration:underline; }

    /* Denný graf aj teplotnú mapu kreslí spoločný engine (`static/js/graf.js`);
       modulu ostal len popis nad nimi. */
    .nv-grafsub { color:var(--muted); font-size:.83rem; line-height:1.5; margin:-6px 0 14px; max-width:92ch; }

    /* Rozpad (zariadenia): meno · pásik · podiel · doplnok pod tým. */
    .nv-breakdown { display:flex; flex-direction:column; gap:12px; }
    .nv-bd { display:grid; grid-template-columns:1fr 90px 52px; align-items:center;
        column-gap:10px; row-gap:2px; }
    .nv-bd-n { display:inline-flex; align-items:center; gap:8px; font-size:.87rem; color:var(--ink); }
    .nv-bd-n .ti { font-size:17px; color:var(--faint); }
    .nv-bd b { text-align:right; font-size:.87rem; font-variant-numeric:tabular-nums; }
    .nv-bd em { grid-column:1 / -1; font-style:normal; font-size:.74rem; color:var(--faint); }
    .nv-bd .bar-mini > i { background:var(--c1); }

    /* Spodná hranica je šírka NAJUŽŠEJ tabuľky, ktorá v tejto trojici žije
       (systém/prehliadač: 5 stĺpcov ≈ 440 px). Pri 340 px sa na 1366 px
       monitore vošli tri stĺpce, ale tabuľky v nich museli scrollovať do
       boku — radšej dva široké panely než tri úzke. */
    .nv-grid3 { display:grid; grid-template-columns:repeat(auto-fit, minmax(440px, 1fr));
        gap:18px; align-items:start; }
    .nv-grid3 .panel { margin-bottom:0; }

    .nv-mi { color:var(--faint); font-size:16px; margin-right:4px; vertical-align:-2px; }
    .nv-barcell { display:inline-flex; align-items:center; gap:9px; }
    .nv-barcell .bar-mini { width:96px; }
    .nv-barcell .bar-mini > i { background:var(--c1); }
    .nv-barcell em { font-style:normal; font-size:.8rem; color:var(--ink-soft);
        font-variant-numeric:tabular-nums; min-width:44px; text-align:right; }

    .nv .tbl tbody tr.nv-off td { color:var(--faint); }

    .nv-note { margin:10px 17px 14px; font-size:.76rem; color:var(--faint); max-width:var(--read-max); }
    .nv-priv { display:flex; gap:10px; align-items:flex-start; margin:22px 0 0;
        padding:13px 15px; border:1px solid var(--line); border-radius:var(--r);
        background:var(--sunken); font-size:.8rem; color:var(--ink-soft); }
    .nv-priv .ti { font-size:18px; color:var(--faint); flex:0 0 auto; }
    .nv-priv code { font-size:.76rem; }

/* ==========================================================================
   ZJEDNOTENIE — jeden tabuľkový engine, jedny záložky, jedny tlačidlá
   --------------------------------------------------------------------------
   Moduly si historicky spravili vlastné záložky a vlastné pilulky. Tento blok
   ich sťahuje na spoločný vzhľad zo styles.css. (Tabuľky už takto nie —
   nesú rovno `tbl`, viď nižšie.) Stojí zámerne ZA staršími modulovými blokmi
   vyššie — pri rovnakej špecificite vyhráva neskoršie pravidlo. Na konci
   súboru už nie je: moduly pridané neskôr sú pod ním.

   Nová obrazovka píše rovno .table-wrap + table.tbl.
   ========================================================================== */

/* --- Tabuľky: jadro (`table.tbl` + `.table-wrap` v styles.css) ------------
   Každá modulová tabuľka nesie `tbl` a jej obal `table-wrap` (krok 0b,
   2. 10. 2026) — zoznam 13 tried tu už nie je a modul si píše len odchýlky
   (ich vlastné staré hlavičky a bunky, ktoré tento blok prebíjal, sú zmazané). */

/* Pilulky stavov a primárne tlačidlá modulov sú od auditu E6 jadro (.tag,
   .btn-primary) — tu bol blok, ktorý ich na jadro len prirovnával. */

/* --- Vyhľadávacie a filtračné lišty modulov ------------------------------- */
.dz-toolbar, .zm-filters {
    display: flex; align-items: center; gap: 9px; flex-wrap: wrap;
    margin-bottom: 12px;
}

/* Viacriadkový filtračný pás (register zmlúv). Pätnásť rozbaľovačiek v jednom
   páse sa nedá prečítať, preto sa lámu do riadkov: kto a čo / peniaze a stav /
   značky. Musí to byť AŽ TU: `.zm-filters` vyššie v tejto sekcii má rovnakú
   špecifickosť a skorší zápis by prebilo. */
.zm-filters--clm { flex-direction: column; align-items: stretch; gap: 8px; }
.zm-filters--clm .nx-hladaj { flex: 0 0 auto; width: 100%; max-width: none; }
.zm-filter-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.zm-filter-row select { flex: 1 1 180px; min-width: 150px; max-width: 280px; }

/* ==========================================================================
   Príprava miezd — panel „prečo mi v menu svieti číslo"
   --------------------------------------------------------------------------
   Číslo pri module musí byť rozkliknuteľné na dôvod. Toto je ten dôvod:
   strediská, ktorých otvorená príprava ešte nie je odoslaná.
   ========================================================================== */

.mz-todo {
    border: 1px solid var(--warning-line);
    background: var(--warning-bg);
    border-radius: var(--r-lg);
    padding: 13px 16px 14px;
    margin-bottom: 16px;
}
.mz-todo-h { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.mz-todo-h .ti { font-size: 19px; color: var(--warning); }
.mz-todo-h b { font-size: .95rem; color: var(--warning-ink); }
.mz-todo-note { font-size: .76rem; color: var(--warning); opacity: .85; }
.mz-todo-p { margin: 6px 0 11px; font-size: .86rem; color: var(--ink-soft); max-width: 92ch; }
.mz-todo-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
/* Položka zoznamu (odkaz: kód, obdobie, štítok `.tag`) — nie čip, ale riadok
   úloh v tvare pilulky. */
.mz-todo-polozka {
    display: inline-flex; align-items: center; gap: 8px;
    background: var(--surface); border: 1px solid var(--line);
    border-radius: var(--r-pill); padding: 5px 13px 5px 11px;
    text-decoration: none; color: var(--ink); font-size: .84rem;
    transition: border-color .12s var(--ease), background .12s var(--ease);
}
.mz-todo-polozka:hover { border-color: var(--pole-okraj); background: var(--tonal); }
.mz-todo-polozka.is-late { border-color: var(--danger-line); }
.mz-todo-polozka.is-here { border-color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand); }
.mz-todo-kod { font-weight: 650; }
.mz-todo-obd { color: var(--muted); font-size: .78rem; text-transform: capitalize; }

/* Dlaždica Faktúry po splatnosti — dve veľké čísla vedľa seba, pod nimi firmy */
.fps-dvojica { display: flex; gap: 18px; flex-wrap: wrap; }
.fps-dvojica > div { flex: 1 1 140px; min-width: 0; }
.fps-firma { margin-top: 6px; }
.fps-stav { font-size: 1.05rem; font-weight: 600; }

/* KPI dlaždica, ktorá vedie na svoj dôvod */
a.stat-card--link { text-decoration: none; color: inherit; transition: border-color .12s var(--ease); }
a.stat-card--link:hover, a.stat-card--link[aria-current="true"] { border-color: var(--pole-okraj); }
a.stat-card--link::after {
    content: "\ea61"; font-family: "tabler-icons"; position: absolute; right: 12px; top: 12px;
    font-size: 15px; color: var(--faint); opacity: .6;
}

.mz-todo-more { margin-top: 9px; }
.mz-todo-more > summary {
    cursor: pointer; font-size: .8rem; font-weight: 620; color: var(--warning);
    list-style: none; display: inline-flex; align-items: center; gap: 5px;
}
.mz-todo-more > summary::before { content: "\ea5f"; font-family: "tabler-icons"; font-size: 14px; }
.mz-todo-more[open] > summary::before { content: "\ea62"; }
.mz-todo-more > summary::-webkit-details-marker { display: none; }
.mz-todo-more .mz-todo-list { margin-top: 9px; }

/* Druhá skupina panela — práca, ktorá ešte nemešká (v menu nesvieti). */
.mz-todo.is-running { border-color: var(--line); background: var(--sunken); }
.mz-todo.is-running .mz-todo-h .ti { color: var(--muted); }
.mz-todo.is-running .mz-todo-h b { color: var(--ink); }
.mz-todo.is-running .mz-todo-note { color: var(--faint); }

/* Zbalená skupina „beží tento mesiac" — informácia, nie výzva k akcii. */
details.mz-todo.is-running > summary { cursor: pointer; list-style: none; }
details.mz-todo.is-running > summary::-webkit-details-marker { display: none; }
details.mz-todo.is-running > summary::after {
    content: "\ea5f"; font-family: "tabler-icons"; font-size: 15px;
    color: var(--faint); margin-left: 4px;
}
details.mz-todo.is-running[open] > summary::after { content: "\ea62"; }
details.mz-todo.is-running[open] > .mz-todo-list { margin-top: 11px; }

/* Cena obeda — editovateľný parameter priamo v dlaždici (mení sa opatrením) */
.rep-cena-form { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:10px;
  padding-top:10px; border-top:1px dashed var(--line); }
.rep-cena-l, .rep-cena-eur { font-size:.76rem; color:var(--muted); } .rep-cena-l { font-weight:600; }
.rep-cena-in { max-width:9rem; font-variant-numeric:tabular-nums; }
.rep-cena-hint { margin-top:6px; font-size:.72rem; color:var(--faint); line-height:1.45; }
.rep-cena-zmeny { list-style:none; margin:8px 0 0; padding:0; font-size:.76rem; line-height:1.7; color:var(--muted); font-variant-numeric:tabular-nums; } .rep-cena-zmeny strong { color:var(--ink); }

/* ==========================================================================
   MODUL TREZOR — hotovosť v officei
   --------------------------------------------------------------------------
   Obrazovka vedome kopíruje excelový hárok, ktorý kolegyne poznajú: stĺpec
   nominálií od 500 € po cent a JEDEN stĺpec, do ktorého sa píše. Všetko
   ostatné (stav, súčty, rozdiel) sa dopočítava — tak ako to v hárku robil
   vzorec. Vstupné políčka sú preto vysoké a zarovnané doprava: písať sa má
   z numerickej klávesnice, bez trafovania myšou.
   ========================================================================== */

.tz-page { max-width: 100%; }

/* Preplatky na vrátenie — jeden panel na prípad (stredisko × mesiac). */
.tz-preplatok { margin-bottom: 16px; }
.tz-preplatok-h { display: flex; gap: 16px; align-items: flex-start;
                  justify-content: space-between; flex-wrap: wrap; }
.tz-preplatok-h h2 { margin: 0 0 2px; }
.tz-preplatok-h p { margin: 0; font-size: .84rem; }
.tz-preplatok-suma { font-size: 1.5rem; font-weight: 700; color: var(--danger-dark);
                     white-space: nowrap; }
.tz-preplatok-zlozky { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0 12px; }
.tz-esk { color: var(--danger-dark); font-weight: 600; }
.tz-prevzat { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap;
              margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.tz-prevzat label { display: flex; flex-direction: column; gap: 4px;
                    font-size: .8rem; color: var(--ink-soft); }
.tz-prevzat-note { font-size: .78rem; }
.tz-udalosti { list-style: none; margin: 10px 0 0; padding: 0;
               display: flex; flex-direction: column; gap: 8px; font-size: .84rem; }
.tz-udalosti li { padding-left: 12px; border-left: 2px solid var(--line); }
.tz-udalost-detail { color: var(--ink-soft); white-space: pre-line; margin-top: 2px; }
/* Položky preplatku — bunka tabuľky = jedna položka (človek × obálka / účet),
   každá sa zaškrtáva a vybavuje zvlášť. */
.tz-pol { display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
          white-space: nowrap; }
.tz-pol input { margin: 0; }
.tz-pol-vyb { color: var(--faint); text-decoration: line-through; white-space: nowrap; }
.tz-pol-stav { margin-left: 6px; }
.tz-pol-zost { white-space: nowrap; }
.tz-skupiny { list-style: none; margin: 8px 0 0; padding: 0; display: flex;
              flex-direction: column; gap: 6px; font-size: .84rem; }
.tz-skupiny li { padding-left: 12px; border-left: 2px solid var(--line); }
.tz-skupiny .tz-prevzat { margin-top: 6px; padding-top: 6px; }


/* --- Prepínač režimu: pripočítať vs. prepočítať --------------------------- */
.tz-zapis {
    border: 1px solid var(--line); border-radius: var(--r-lg);
    background: var(--surface); padding: 15px 17px 17px; margin-bottom: 16px;
}
.tz-rezim { display: flex; gap: 9px; flex-wrap: wrap; margin-bottom: 14px; }
.tz-rez {
    flex: 1 1 260px; display: flex; flex-direction: column; gap: 2px; position: relative;
    border: 1px solid var(--line); border-radius: var(--r); padding: 10px 13px;
    cursor: pointer; background: var(--sunken);
    transition: border-color .12s var(--ease), background .12s var(--ease);
}
.tz-rez input { position: absolute; opacity: 0; pointer-events: none; }
.tz-rez span { display: flex; align-items: center; gap: 7px; font-weight: 650; font-size: .88rem; }
.tz-rez em { font-style: normal; font-size: .75rem; color: var(--faint); }
.tz-rez:hover { border-color: var(--pole-okraj); }
.tz-rez.is-on { border-color: var(--brand); background: var(--brand-50); box-shadow: inset 0 0 0 1px var(--brand); }
.tz-rez.is-on span { color: var(--brand-ink); }

.tz-meta { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 11px; }
/* Menovka sa láme do riadka, nie do stĺpca. Doložka („nepovinné", „na doklade
   sa vytlačí") tak sedí VEDĽA názvu poľa a samotné pole ostáva na druhom
   riadku — teda v rovnakej výške ako polia bez doložky. So stĺpcom bola
   doložka tretím riadkom navyše a „Prevádzka" s „Účelom platby" visela
   o 22 px nižšie než „Dátum" a „Suma" vedľa nich. */
.tz-meta label { display: grid; grid-template-columns: auto minmax(0, 1fr);
    justify-items: start; align-items: baseline; gap: 3px 6px;
    font-size: .76rem; color: var(--muted); font-weight: 620; }
.tz-meta label > input, .tz-meta label > select, .tz-meta label > textarea,
.tz-meta label > .tz-hladaj { grid-column: 1 / -1; justify-self: stretch; min-width: 0; }
.tz-meta .tz-pozn { flex: 1 1 320px; }
.tz-meta .tz-pozn input { width: 100%; }
.tz-nepovinne { font-weight: 500; color: var(--faint); text-transform: none; }

/* Proti čomu sa dnešný počet porovnáva — posledný prepočet a čo systém eviduje
   odvtedy. Bez toho je rozdiel len číslo bez príbehu. */
.tz-odvtedy {
    border: 1px solid var(--line); border-left: 3px solid var(--brand);
    background: var(--sunken); border-radius: var(--r);
    padding: 10px 14px; margin-bottom: 12px; font-size: .8rem; color: var(--ink-soft);
}
.tz-odvtedy-h { display: flex; align-items: center; gap: 8px; font-weight: 620; color: var(--ink); }
.tz-odvtedy-h .ti { font-size: 16px; color: var(--faint); }
.tz-odvtedy p { margin: 5px 0 0; max-width: 110ch; line-height: 1.5; }

.tz-hint {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    font-size: .78rem; color: var(--ink-soft); background: var(--sunken);
    border: 1px solid var(--line); border-radius: var(--r); padding: 8px 12px;
    margin-bottom: 11px;
}
.tz-hint .ti { font-size: 16px; color: var(--faint); }
/* `display:flex` prebíja atribút `hidden` — bez tohto by skrytá výstraha
   ostala na obrazovke ako prázdny pruh s ikonou. */
.tz-hint[hidden] { display: none; }
/* Výstraha o nesediacej uzávierke je varovanie, nie nápoveda. */
#tz-sup-uzav-hint { border-color: var(--danger-line); background: var(--danger-bg); }
#tz-sup-uzav-hint .ti { color: var(--danger); }
.tz-hint kbd {
    font-family: inherit; font-size: .72rem; font-weight: 650; padding: 1px 6px;
    border: 1px solid var(--line); border-bottom-width: 2px; border-radius: 4px;
    background: var(--surface); color: var(--ink-soft);
}

/* --- Mriežka nominálií ---------------------------------------------------- */

.tz-table .l { text-align: left; }
.tz-table th.tz-th-vstup { background: var(--brand-50); color: var(--brand-ink); }
.tz-th-sub { font-weight: 500; opacity: .75; letter-spacing: 0; text-transform: none; }
/* Kompaktné riadky (mriežka nominálov, kniha) — bez výšky riadka jadra. */
.tz-table tbody td { padding: 4px 11px; border-bottom: 1px solid var(--line); height: auto; }
.tz-table tfoot td { padding: 9px 11px; font-weight: 700; background: var(--sunken); }

/* Riadok drobných: do trezora patrí, do obálky sa nikdy nedostane. */
.tz-table tr.tz-drobne td:first-child { color: var(--muted); }
.tz-mini {
    display: inline-block; margin-left: 7px; font-size: .68rem; font-weight: 600;
    color: var(--faint); background: var(--sunken); border: 1px solid var(--line);
    border-radius: var(--r-pill); padding: 0 7px;
}
.tz-mini-bad { color: var(--danger); border-color: var(--danger-line); background: var(--danger-bg); }
.tz-mince-row td { background: var(--sunken); }

.tz-in {
    width: 100%; max-width: 8rem; text-align: right;
    font-size: .95rem; font-weight: 620; font-variant-numeric: tabular-nums;
}
.tz-table tr.tz-zmenene td { background: var(--brand-50); }
.tz-table tr.tz-zmenene .tz-po, .tz-table tr.tz-zmenene .tz-hod { color: var(--brand-ink); font-weight: 700; }
/* Napočítané menej, než systém eviduje — buď chýba zápis výdaja, alebo je manko. */
.tz-table tr.tz-chyba td { background: var(--danger-bg); }
.tz-table tr.tz-chyba .tz-po { color: var(--danger); font-weight: 700; }

/* Vysvetlenie úbytku — ukáže sa len vtedy, keď napočítané klesne pod evidenciu.
   Vyzerá ako výstraha zámerne: je to jediný okamih, keď sa dá povedať, kam tá
   hotovosť išla, a formulár sa bez toho neuloží. */
.tz-ubytok {
    border: 1px solid var(--danger-line); border-left: 3px solid var(--danger);
    background: var(--danger-bg); border-radius: var(--r);
    padding: 11px 14px 4px; margin-top: 13px;
}
.tz-ubytok-h { display: flex; align-items: flex-start; gap: 8px; font-size: .82rem;
    color: var(--ink-soft); line-height: 1.5; margin-bottom: 9px; }
.tz-ubytok-h .ti { font-size: 17px; color: var(--danger); flex: none; margin-top: 1px; }
.tz-ubytok-h strong { color: var(--danger); }
.tz-ubytok .tz-meta { margin-bottom: 9px; }
.tz-ubytok .tz-meta select { min-width: 12rem; }
.tz-povinne { font-weight: 650; color: var(--danger); text-transform: none; }

.tz-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 13px; }
.tz-bilancia { flex: 1 1 auto; font-size: .82rem; color: var(--faint); font-weight: 600; }
.tz-bilancia.ok { color: var(--success-dark); }
.tz-bilancia.warn { color: var(--warning); }
.tz-bilancia.zle { color: var(--danger); }

/* Rozpad prírastku: odkiaľ prišlo a komu sa odovzdávalo. Dva stĺpce vedľa seba
   preto, lebo to je jedna otázka v dvoch smeroch — a odpovedať treba na obe. */
.tz-rozpad-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 22px; margin: 8px 0 4px; }
.tz-rozpad-h { display: flex; align-items: center; gap: 6px; font-weight: 650;
    font-size: .78rem; color: var(--ink); margin-bottom: 4px; }
.tz-rozpad-h .ti { font-size: 15px; color: var(--faint); }
.tz-rozpad-zoznam { list-style: none; margin: 0; padding: 0; }
.tz-rozpad-zoznam li { display: flex; align-items: baseline; gap: 8px; padding: 2px 0;
    border-bottom: 1px dotted var(--line); font-size: .78rem; }
.tz-rozpad-zoznam li:last-child { border-bottom: 0; }
.tz-rozpad-zoznam span { font-weight: 650; color: var(--ink); }
.tz-rozpad-zoznam em { font-style: normal; color: var(--faint); font-size: .72rem; flex: 1 1 auto; }
.tz-rozpad-zoznam b { font-variant-numeric: tabular-nums; }
/* Príjem bez prevádzky = peniaze, o ktorých sa nevie, z ktorej kasy sú. */
.tz-rozpad-zoznam li.je-bez-dokladu span { color: var(--danger); }

/* --- Súpiska tržby -------------------------------------------------------- */
.tz-odpocty { border: 1px solid var(--line); border-radius: var(--r); background: var(--sunken);
    padding: 9px 11px; margin-bottom: 4px; }
.tz-odpocty-h { font-size: .74rem; font-weight: 650; color: var(--muted); margin-bottom: 7px;
    text-transform: uppercase; letter-spacing: .02em; }
.tz-odp { display: grid; grid-template-columns: 13rem 8rem 1fr; gap: 8px; align-items: center;
    padding: 3px 0; border-bottom: 1px solid var(--line); }
.tz-odp:last-child { border-bottom: 0; }
.tz-odp-l { font-size: .8rem; font-weight: 620; color: var(--ink); display: flex; flex-direction: column; }
.tz-odp-l em { font-style: normal; font-size: .66rem; color: var(--faint); font-weight: 500; }
/* Nepeňažná časť tržby v trezore nikdy nebola — nech to nesplýva s hotovosťou
   minutou na prevádzke, sú to dve úplne rôzne veci s rovnakým účinkom. */
.tz-odp.je-nepenazna .tz-odp-l { color: var(--muted); }
.tz-odp-in { text-align: right; font-variant-numeric: tabular-nums; font-weight: 620; }

/* Šírky polí denníka. Sú triedami, nie inline štýlom, práve preto, aby sa dali
   na telefóne vypnúť — inline `min-width` sa médiovým pravidlom prebiť nedá. */
.tz-w-s { width: 8rem; } .tz-w-m { min-width: 9rem; }
.tz-w-l { min-width: 11rem; }
.tz-meta input, .tz-meta select { max-width: 100%; }

/* --- Číselník dôvodov (vypnutý dôvod je bledý, kód prečiarknutý) ---------- */
.tz-ciselnik tr.je-vypnuty td { opacity: .55; }
.tz-ciselnik tr.je-vypnuty code { text-decoration: line-through; }

/* --- Rozpis prírastku (odkiaľ prišlo / čo odišlo) -------------------------- */
.tz-rozpis { border: 1px solid var(--line); border-left: 3px solid var(--brand);
    background: var(--sunken); border-radius: var(--r); padding: 10px 13px 11px;
    margin-top: 13px; }
.tz-rozpis[hidden] { display: none; }
.tz-rozpis-h { display: flex; align-items: baseline; justify-content: space-between;
    gap: 12px; flex-wrap: wrap; font-size: .8rem; color: var(--ink-soft); margin-bottom: 9px; }
.tz-rozpis-h .ti { font-size: 16px; color: var(--faint); vertical-align: -2px; }
.tz-rozpis-h strong { color: var(--ink); margin-right: 6px; }
/* Koľko ešte nie je rozdelené — jediné číslo, ktoré tu treba sledovať. */
.tz-zvysok { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.tz-zvysok.ok { color: var(--success-dark); }
.tz-zvysok.zle { color: var(--danger); }

/* Tlačidlá prevádzok a ľudí. Musia byť na prvý pohľad vidieť, že sa na ne dá
   kliknúť — pri prvom pokuse splývali s podkladom pruhu a nebolo zrejmé, kde
   sa vlastne začína. Preto biele pozadie, značkový okraj a znamienko plus. */
.tz-chipy { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 9px;
    align-items: center; }
/* `display:flex` prebíja atribút `hidden` — bez tohto by boli obe sady
   tlačidiel (výdaj aj banka) na obrazovke naraz. */
.tz-chipy[hidden] { display: none; }
/* Čipy prevádzok a osôb = jadro `.chip.chip--pridaj.chip--sm`, drobné a
   hotovosť bez prevádzky `+ .chip--carkovane` (audit E6). */
.tz-chip-vyber { height: 30px; border: 1px solid var(--brand); border-radius: var(--r-pill);
    background: var(--surface); color: var(--brand-ink); font-size: .78rem;
    font-weight: 650; padding: 0 10px; cursor: pointer; }
/* Mená sú dlhšie než kódy prevádzok — nech riadok tlačidiel nenarastie do neba. */
.tz-chipy-osoby .chip { font-weight: 620; }
.tz-riadok.je-office .tz-riadok-l b { color: var(--muted); }
.tz-riadok-l em { font-style: normal; font-size: .68rem; color: var(--faint); }
/* Riadok, ktorý drží zvyšok. Musí byť vidieť, že to číslo tam nikto nenapísal
   a že sa bude meniť — inak vyzerá ako údaj a nikto ho neopraví. */
.tz-riadok.je-auto .tz-riadok-suma { border-style: dashed; border-color: var(--brand);
    color: var(--brand-ink); background: var(--brand-50); }
.tz-auto-znak { color: var(--brand-ink); background: var(--brand-100);
    border-radius: var(--r-pill); padding: 1px 7px; white-space: nowrap; }
.tz-auto-znak[hidden] { display: none; }
.tz-rozpis-tip { display: block; font-style: normal; font-size: .72rem;
    color: var(--faint); margin-top: 2px; max-width: 56rem; }
.tz-pridaj { border: 1px dashed var(--line); background: transparent; color: var(--muted);
    border-radius: var(--r-sm); padding: 4px 12px; font-size: .78rem; font-weight: 620;
    cursor: pointer; font-family: inherit; margin-top: 6px; }
.tz-pridaj:hover { border-color: var(--brand); color: var(--brand-ink); }
#tz-vydaj-blok[hidden] { display: none; }

.tz-riadky { display: flex; flex-direction: column; gap: 5px; }
.tz-riadky[hidden] { display: none; }
.tz-riadok { display: flex; align-items: center; gap: 7px; }
.tz-riadok-l { display: flex; align-items: center; gap: 6px; min-width: 9rem;
    font-size: .82rem; color: var(--ink); }
.tz-riadok-l .ti { font-size: 15px; color: var(--faint); }
.tz-riadok-suma { width: 7.5rem; text-align: right; font-variant-numeric: tabular-nums;
    font-weight: 650; }
.tz-riadok-v { flex-wrap: wrap; }
/* Obal našepkávača je položkou riadka, nie pole v ňom — `flex` na samotnom
   `input` preto nerobilo nič a „komu" si držalo prirodzenú šírku, až kým
   riadok nepretiekol a prevádzka so sumou nespadli pod neho. */
.tz-riadok .tz-hladaj { display: block; flex: 1 1 11rem; min-width: 0; }
.tz-riadok .tz-hladaj > input { width: 100%; }
.tz-riadok-komu { flex: 1 1 11rem; min-width: 0; }
.tz-riadok > select { flex: 0 1 auto; min-width: 0; }
.tz-riadok-str { width: 8rem; min-width: 0; }
.tz-riadok-x { border: 0; background: transparent; color: var(--faint); cursor: pointer;
    font-size: .9rem; line-height: 1; padding: 4px 6px; border-radius: var(--r-sm);
    font-family: inherit; }
.tz-riadok-x:hover { color: var(--danger); background: var(--danger-bg); }
/* Riadky rozpisu (príjem, bez prevádzky, výdaj) sú JEDNA MRIEŽKA so šiestimi
   pevnými stĺpcami: popis | suma | druh | pole A | pole B | ✕.
   Flex skladal každý riadok podľa jeho obsahu, takže „čo to je", „prevádzka"
   a poznámka končili každé inde a rozpis sa nedal čítať po stĺpcoch.
   Pole A/B: bez prevádzky = od koho / čo to je; výdaj = komu / prevádzka;
   tržba = poznámka cez oba (s preplatkom: výber preplatku / poznámka). */
.tz-riadok-p { display: grid; gap: 7px;
    grid-template-columns: 17rem 7.5rem 12.5rem minmax(0, 1fr) minmax(0, 1fr) 2rem; }
.tz-riadok-p > * { min-width: 0; }
.tz-riadok-p > input:not([type="hidden"]), .tz-riadok-p > select,
.tz-riadok-p > .tz-hladaj { width: 100%; }
.tz-riadok-p .tz-riadok-l { grid-column: 1; flex-wrap: wrap; }
.tz-riadok-p > .tz-riadok-suma { grid-column: 2; }
.tz-riadok-p > select[data-druh], .tz-riadok-v > select[name="vydaj_kategoria"] { grid-column: 3; }
.tz-riadok-p > select[data-preplatok], .tz-riadok-p > .tz-hladaj { grid-column: 4; }
.tz-riadok-p > .tz-riadok-pozn { grid-column: 4 / 6; }
.tz-riadok-p > select[data-preplatok]:not([hidden]) ~ .tz-riadok-pozn,
.tz-riadok-bez > .tz-riadok-pozn, .tz-riadok-v > .tz-str-obal { grid-column: 5; }
.tz-str-obal { display: block; min-width: 0; } .tz-str-obal > .tz-riadok-str { width: 100%; }
.tz-riadok-p > .tz-riadok-x { grid-column: 6; justify-self: center; }
.tz-riadok-v .tz-riadok-l .ti { color: var(--danger); }
.tz-riadok-pozn.je-povinne { border-color: var(--danger-line); }
.tz-riadok-pozn.je-povinne::placeholder { color: var(--danger); opacity: .75; }
.tz-riadok-bez .tz-riadok-komu:placeholder-shown { border-color: var(--danger-line); }
.tz-riadok-bez .tz-riadok-komu::placeholder { color: var(--danger); opacity: .75; }
@supports selector(:has(a)) {   /* nevybraný druh červeno — vylepšenie, povinnosť stráži server */
    .tz-riadok-bez select[data-druh]:has(option[value=""]:checked) { border-color: var(--danger-line);
        color: var(--danger); }
}
.tz-riadok-suma[readonly] { background: var(--sunken); color: var(--muted); cursor: not-allowed; }
/* Druh, ktorý nie je tržba — nech ho na prvý pohľad odlíšiť od zvyšku rozpisu. */
.tz-riadok.je-ina select[data-druh] { border-color: var(--brand); color: var(--brand-ink);
    font-weight: 620; }
/* Prevádzka, ktorá má čo vrátiť — upozornenie priamo v riadku. */
.tz-riadok.ma-preplatok [data-druh-popis]:not(:empty) { color: var(--warn-700);
    background: var(--warn-50); border-radius: var(--r-pill); padding: 1px 7px;
    white-space: nowrap; }
/* „+ preplatok“ = jadro `button.tag.tag--sm.tag--wait` s čiarkovaným okrajom. */
.tz-preplatok { border-style: dashed; }
.tz-preplatok:hover { border-style: solid; }
.tz-preplatok[hidden] { display: none; }

.tz-odislo { display: flex; align-items: center; gap: 7px; margin: 9px 0 6px;
    font-size: .8rem; font-weight: 620; color: var(--ink); cursor: pointer; }
.tz-odislo em { font-style: normal; font-weight: 500; font-size: .72rem; color: var(--faint); }
.tz-zvysok-blok { margin-top: 9px; padding-top: 8px; border-top: 1px dashed var(--line); }
.tz-zvysok-blok[hidden] { display: none; }
.tz-zvysok-blok:not([hidden]) { display: flex; align-items: center; flex-wrap: wrap;
    gap: 4px 12px; font-size: .8rem; font-weight: 620; color: var(--danger); }
.tz-zvysok-blok .tz-pridaj { margin-top: 0; border-color: var(--danger-line); color: var(--danger); }

/* Odkaz na obrazovku výdaja — nahradil dva formuláre, ktoré robili to isté. */
.tz-odkaz { display: flex; align-items: center; justify-content: space-between;
    gap: 16px; flex-wrap: wrap; }
.tz-odkaz strong { display: flex; align-items: center; gap: 8px; font-size: .9rem; }
.tz-odkaz strong .ti { font-size: 17px; color: var(--faint); }
.tz-odkaz p { margin: 4px 0 0; font-size: .8rem; max-width: 80ch; }

/* --- Obrazovka výdaja ------------------------------------------------------ */
/* Potvrdenie po uložení. Uložiť a vytlačiť sú dve rôzne veci — zápis je hotový,
   papier na podpis sa ponúkne. */
.tz-ulozene { display: flex; align-items: center; justify-content: space-between;
    gap: 14px; flex-wrap: wrap; margin: 0 0 13px;
    border: 1px solid var(--success); border-left: 3px solid var(--success);
    background: var(--success-bg); border-radius: var(--r); padding: 11px 14px;
    font-size: .84rem; color: var(--ink); }
.tz-ulozene .ti { color: var(--success-dark); font-size: 17px; vertical-align: -3px; }

.tz-vydajf { border: 1px solid var(--line); border-radius: var(--r-lg);
    background: var(--surface); padding: 14px 16px 16px; margin-bottom: 16px; }
.tz-vydajf .tz-meta { align-items: flex-start; }
.tz-vydajf .tz-meta label[hidden] { display: none; }
/* Pole s našepkávačom musí mať priestor na zoznam pod sebou. */
.tz-hladaj-pole { flex: 1 1 15rem; min-width: 0; }
.tz-hladaj-pole .tz-hladaj { display: block; }
.tz-hladaj-pole input { width: 100%; }

/* --- Panel výdaja --------------------------------------------------------- */
.tz-panel { border: 1px solid var(--line); border-radius: var(--r-lg);
    background: var(--surface); padding: 13px 16px 15px; margin-bottom: 16px; }
.tz-panel-sum, .tz-panel-h {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    flex-wrap: wrap; font-weight: 650; font-size: .9rem; cursor: pointer;
}
.tz-panel-h { cursor: default; margin-bottom: 10px; }
.tz-panel-sum > span, .tz-panel-h > span { display: flex; align-items: center; gap: 8px; }
.tz-panel-sum em { font-style: normal; font-size: .75rem; color: var(--faint); font-weight: 500; }
.tz-panel-sum::-webkit-details-marker { display: none; }
details.tz-panel > .tz-panel-sum { list-style: none; }
details.tz-panel[open] > .tz-panel-sum { margin-bottom: 13px; padding-bottom: 11px;
    border-bottom: 1px solid var(--line); }

/* --- Kniha pohybov -------------------------------------------------------- */
.tz-filtre { display: flex; gap: 9px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 12px; }
.tz-filtre label { display: flex; flex-direction: column; gap: 3px; font-size: .74rem;
    color: var(--muted); font-weight: 620; }
.tz-pocet { font-size: .78rem; color: var(--faint); margin-left: auto; }

/* V tabuľke musí farba prebiť predvolené písmo bunky jadra (`.tbl tbody td`). */
.tz-plus, .tz-table td.tz-plus { color: var(--success-dark); font-weight: 650; }
.tz-minus, .tz-table td.tz-minus { color: var(--danger); font-weight: 650; }
.tz-table tr.tz-storno td { color: var(--faint); text-decoration: line-through; }
.tz-table tr.tz-storno .tz-mini-bad { text-decoration: none; }
.tz-pozn-cell { max-width: 46ch; }
.tz-kto { color: var(--muted); font-size: .78rem; }
.tz-rozpad > summary { cursor: pointer; font-size: .72rem; color: var(--faint); }
.tz-rozpad > span { font-size: .72rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.tz-storno-akcia > summary { cursor: pointer; list-style: none; color: var(--faint);
    font-weight: 700; text-align: center; }
.tz-storno-akcia > summary::-webkit-details-marker { display: none; }
.tz-storno-akcia > summary:hover { color: var(--danger); }
.tz-storno-akcia form { position: absolute; z-index: var(--z-obsah); right: 14px; width: 320px;
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--r);
    padding: 11px 13px; box-shadow: 0 8px 26px rgba(0,0,0,.16); }
.tz-storno-akcia p { margin: 0 0 7px; font-size: .76rem; color: var(--ink-soft); }
.tz-storno-akcia input { width: 100%; margin-bottom: 8px; }

.tz-note { margin-top: 10px; font-size: .75rem; color: var(--faint); max-width: 100ch; }
.tz-note.tz-note--hore { margin: 0 0 10px; }
.tz-veta { margin: 0 0 8px; }
.tz-veta.tz-veta--10 { margin-bottom: 10px; }

/* ==========================================================================
   Faktúry — formulárové polia, našeptávač z registra
   --------------------------------------------------------------------------
   Modul stavia na systémových triedach (.panel, .tbl, .filterbar, .tag);
   vlastné je len to, čo inde nie je: dvojriadkové pole s popisom a vysvetlivkou
   a rozbaľovací zoznam návrhov z registra RPO.
   ========================================================================== */

.fa-pole { display: grid; align-content: start; gap: 5px; font-size: .82rem; }
/* `display:flex` by prebilo UA pravidlo pre [hidden] → skryté pole („Za koho
   je faktúra“ pri jednoosobovej živnosti) by ostalo na obrazovke. */
.fa-pole[hidden] { display: none; }
.fa-pole > span { color: var(--faint); font-weight: 620; font-size: .76rem;
    text-transform: uppercase; letter-spacing: .04em; }
.fa-pole > em { font-style: normal; color: var(--faint); font-size: .74rem; line-height: 1.4; }
.fa-pole input, .fa-pole select, .fa-pole textarea { width: 100%; }
/* Predtým `style=""` v šablónach Faktúr (D-018). */
.fa-pole.fa-pole--rel { position: relative; }
.fa-pole.fa-pole--uvod { margin-bottom: 14px; }
.panel-body.fa-akcie-telo { display: flex; gap: 18px; flex-wrap: wrap; align-items: flex-start; }
.fa-akcia { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; }
.fa-akcia.fa-akcia--odoslat { gap: 10px; align-items: center; }
.fa-akcia-pole { display: flex; flex-direction: column; gap: 4px; font-size: .8rem; color: var(--faint); }
.fa-akcia-potvrd { display: flex; gap: 6px; align-items: center; font-size: .8rem; color: var(--warning-ink); }
.fa-akcia-pozn { max-width: 34ch; }
.fa-akcia-pozn.fa-akcia-pozn--siroka { max-width: 40ch; }
.fa-akcia-pozn.fa-akcia-pozn--stred { align-self: center; }
.fa-kopia { display: flex; gap: 6px; align-items: center; }
input.fa-pole-cislo { width: 150px; }
input.fa-pole-dovod { width: 200px; }
input.fa-pole-plne { width: 100%; }
input.fa-pole-suma { width: 120px; }
.panel-body.fa-udaje { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 22px; }
.fa-st-40 { width: 40px; }
.fa-st-80 { width: 80px; }
.fa-st-90 { width: 90px; }
.fa-st-120 { width: 120px; }
.fa-st-140 { width: 140px; }
.fa-st-220 { width: 220px; }
.fa-st-320 { width: 320px; }
.fa-st-text { min-width: 280px; }
textarea.fa-poznamka { width: 100%; }
.fa-ulozit { display: flex; gap: 10px; margin-bottom: 28px; }
.fa-nalez { color: var(--warning-ink); margin-top: 2px; }
.fa-riadok-akcie { display: flex; gap: 6px; }
.fa-riadok-akcie.fa-riadok-akcie--vpravo { gap: 7px; justify-content: flex-end; }
.fa-chyba-text { color: var(--danger); }
.fa-ina-suma { color: var(--warning); }
.panel .panel-head.fa-hlava-tesna { padding: 13px 16px; }
.panel .panel-body.fa-telo-tesne { padding: 12px 16px 0; }
.fa-telo-veta { margin: 0 0 6px; }
.panel.fa-sami { padding: 0; }
.fa-sami > summary { padding: 14px 16px; cursor: pointer; font-weight: 660; font-size: .95rem; }
.fa-sami-pozn { font-weight: 400; }
.tbl td.fa-vpravo { text-align: right; }

/* Osoby v mzdách na karte dodávateľa: cez jednu živnosť fakturuje aj viac
   ľudí, takže rozbaľovačiek je pod sebou toľko, koľko ich karta má. */
#fa-osoby { display: flex; flex-direction: column; gap: 6px; }
#fa-pridat-osobu { align-self: flex-start; }

/* Riadky položiek — vstupy majú vyplniť bunku, nie plávať v nej. */
#fa-polozky td input, #fa-polozky td select { width: 100%; }
#fa-polozky td input.n { text-align: right; font-variant-numeric: tabular-nums; }
#fa-polozky td select:disabled { background: var(--sunken); color: var(--faint); }


/* --- Faktúry: založenie subjektu bez opustenia faktúry -------------------- */
.fa-pridat-subjekt { margin-left: 8px; border: 1px solid var(--line); background: var(--surface);
    color: var(--ink-soft); border-radius: var(--r-pill); padding: 1px 9px; cursor: pointer;
    font-size: .68rem; font-weight: 650; letter-spacing: 0; text-transform: none; }
.fa-pridat-subjekt:hover { border-color: var(--brand); color: var(--ink); }
/* Dialóg „Nový subjekt" — rám, clona, Esc, klik mimo = spoločný .nx-dlg (Nexus.dialog); tu len šírka. */
.nx-dlg.fa-ns { width: min(760px, calc(100vw - 32px)); padding: 0; }
.fa-modal-head { display: flex; align-items: center; gap: 10px; padding: 14px 18px;
    border-bottom: 1px solid var(--line); }
.fa-modal-head h2 { margin: 0; font-size: 1rem; font-weight: 660; }
.fa-modal-head .btn-ghost { margin-left: auto; }
.fa-modal-body { padding: 16px 18px; }
.fa-modal-foot { display: flex; align-items: center; gap: 12px; padding: 14px 18px;
    border-top: 1px solid var(--line); background: var(--sunken); }

/* --- Faktúry: formulárová mriežka a voľby -------------------------------- */
/* Pôvodné `auto-fit` rozhadzovalo polia podľa toho, koľko sa ich zmestilo,
   takže sa raz vedľa seba ocitlo šesť políčok a inokedy dve — a blok
   zaškrtávatiek trčal von. Pevná 12-stĺpcová mriežka drží formulár v rade
   na každej šírke a šírka poľa nesie informáciu (IBAN je široký, PSČ úzke). */
.fa-mriezka { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 15px 18px; }
/* Menovka, pole a vysvetlivka musia v celom riadku mriežky sedieť na spoločnej
   linke. Bez toho stačí, aby sa JEDNA menovka zalomila do dvoch riadkov (a to
   sa v úzkom stĺpci deje bežne — „Dátum vystavenia povinné" áno, „Dátum
   dodania povinné" nie) a pole vedľa nej stojí o riadok nižšie. `subgrid` dá
   celému riadku spoločné stopy, takže sa polia zarovnajú bez ohľadu na to,
   koľko miesta si vypýtal text nad nimi. */
.fa-mriezka > .fa-pole { grid-row: span 3; grid-template-rows: subgrid; row-gap: 5px;
    min-width: 0; }
.fa-mriezka > .fa-pole > * { max-width: 100%; min-width: 0; }
/* Pole s chybou (ARCHITEKTURA §3g) má o riadok viac — veta pod poľom. */
.fa-mriezka > .fa-pole.je-chyba { grid-row: span 4; }
.fa-mriezka > .sp-2  { grid-column: span 2; }
.fa-mriezka > .sp-3  { grid-column: span 3; }
.fa-mriezka > .sp-4  { grid-column: span 4; }
.fa-mriezka > .sp-5  { grid-column: span 5; }
.fa-mriezka > .sp-6  { grid-column: span 6; }
.fa-mriezka > .sp-12 { grid-column: 1 / -1; }

/* Zaškrtávatko nesmie dediť šírku a výšku textového poľa — inak sa roztiahne
   na celú bunku (a vyzerá to presne tak zle, ako to znie). */
.fa-pole input[type=checkbox], .fa-pole input[type=radio],
.fa-volba input[type=checkbox] {
    width: 17px; height: 17px; flex: 0 0 17px; padding: 0; margin: 0;
    accent-color: var(--brand); cursor: pointer;
}

.fa-nutne { font-size: .62rem; font-weight: 700; letter-spacing: .04em; margin-left: 6px;
    color: var(--faint); text-transform: uppercase; }

.fa-volby { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }
.fa-volba { display: flex; gap: 11px; align-items: flex-start; cursor: pointer;
    padding: 11px 13px; border: 1px solid var(--line); border-radius: var(--r);
    background: var(--surface); transition: border-color .12s, background .12s; }
.fa-volba:hover { border-color: var(--pole-okraj); }
.fa-volba.is-on { border-color: var(--brand); background: var(--tonal); }
.fa-volba input { margin-top: 2px; }
.fa-volba b { display: block; font-size: .855rem; font-weight: 640; color: var(--ink); }
.fa-volba span { display: block; font-size: .75rem; line-height: 1.4; color: var(--faint); margin-top: 2px; }

/* Riadok, ktorý už má faktúru — needituje sa. Namiesto vypnutých políčok
   (tie vyzerajú ako rozbitý formulár) je tam obyčajný text: nič neponúka,
   nič nesľubuje. Zámok v prvom stĺpci povie prečo, zelený pruh že je hotovo. */
.tbl tbody tr.fa-hotovy { background: var(--sunken); }
.tbl tbody tr.fa-hotovy > td:first-child { color: var(--faint); text-align: center; }
/* Text položky z faktúry býva dlhý („Fakturujem Vám služby v oblasti…“).
   Pole ho držalo na šírke stĺpca, obyčajný text nie — a na notebooku vytlačil
   sumu aj stav mimo obrazovku. Preto strop a zalomenie namiesto jedného riadka. */
.fa-ro { color: var(--ink-soft); display: block; max-width: 52ch; }
.fa-ro.money { font-variant-numeric: tabular-nums; }

/* Oprava vnútorného priradenia nákladu na detaile faktúry — nie je to zásah
   do dokladu, preto je to tichý panel pod údajmi, nie ďalšie veľké tlačidlo. */
.fa-priradenie { margin-top: 14px; padding: 12px 14px; border: 1px solid var(--line);
    border-radius: var(--r); background: var(--sunken);
    /* Údaje dokladu sú mriežka stĺpcov — panel patrí pod ne, cez celú šírku,
       nie do posledného stĺpca ako ďalší údaj. */
    grid-column: 1 / -1; }
.fa-priradenie h3 { margin: 0 0 3px; font-size: .9rem; font-weight: 650; }
.fa-priradenie p { margin: 0 0 10px; }
.fa-priradenie-polia { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap; }
.fa-priradenie-polia .fa-pole { flex: 1 1 220px; }

.fa-akcie { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 30px; }
.fa-akcie-sep { flex: 1; }

/* `hidden` musí vyhrať nad `display:flex` — inak sa prázdny stavový pás
   zobrazuje aj vtedy, keď sa nič nehľadá. */

/* Panel „doklad ešte neodišiel“ — akcie, ktoré po odoslaní zmiznú. */
.fa-poznamka-akcie { flex: 1 1 320px; border: 1px solid var(--line);
    border-radius: var(--r); background: var(--sunken); padding: 12px 14px;
    font-size: .84rem; line-height: 1.45; color: var(--ink-soft); }
.fa-poznamka-akcie b { display: block; color: var(--ink); }
.fa-zasah { display: flex; gap: 8px; margin-top: 9px; align-items: center; flex-wrap: wrap; }

/* Rozšírené filtre faktúr — zbalené, kým ich niekto nepotrebuje. */
.fa-filtre-viac { margin-top: -6px; }
.fa-filtre-viac[hidden] { display: none; }
.fa-sucty { margin: 4px 0 14px; }

/* --- Faktúry: lišta s filtrami ------------------------------------------- */
/* Lišta ostáva prázdna, kým človek nechce filtrovať: hľadanie a rýchle pohľady
   sú vždy po ruke, zvyšok je v jednom rozbaľovacom paneli a to, čo je zapnuté,
   drží v pilulkách. Štrnásť polí rozostavaných na obrazovke bolo neprehľadných
   — filtre majú byť po ruke, nie na očiach. */
/* IBAN v zozname subjektov: smie sa zalomiť, ale najviac na dva riadky (tri štvorice
   na riadok) — bez minima ho tabuľka na 1440 px rozsekala po štyroch znakoch. */
.fa-iban-bunka { min-width: calc(15ch + 2 * var(--cell-x, 14px)); }
.fa-toolbar { display: flex; align-items: center; gap: 9px; flex-wrap: wrap;
    margin-bottom: 12px; }


.fa-pohlady { display: inline-flex; background: var(--sunken); border: 1px solid var(--line);
    border-radius: var(--r-pill); padding: 2px; gap: 2px; }
.fa-pohlady a { padding: 5px 13px; border-radius: var(--r-pill); font-size: .8rem;
    font-weight: 600; color: var(--faint); white-space: nowrap; }
.fa-pohlady a:hover { color: var(--ink); }
.fa-pohlady a.is-on { background: var(--surface); color: var(--ink);
    box-shadow: var(--shadow-xs); }

.fa-dd-tlacidlo { display: inline-flex; align-items: center; gap: 7px; height: 36px;
    padding: 0 13px; border: 1px solid var(--line); border-radius: var(--r);
    background: var(--surface); color: var(--ink-soft); font-size: .84rem;
    font-weight: 600; cursor: pointer; }
.fa-dd-tlacidlo:hover { border-color: var(--pole-okraj); color: var(--ink); }
.fa-dd-tlacidlo.is-on { border-color: var(--brand); color: var(--ink); }
.fa-pocet { display: inline-grid; place-items: center; min-width: 18px; height: 18px;
    padding: 0 5px; border-radius: var(--r-pill); background: var(--brand);
    color: var(--brand-ink-on); font-size: .7rem; font-weight: 700; }

.fa-dd-panel { width: 760px; overflow: hidden; }
.fa-dd-hlava { display: flex; align-items: baseline; gap: 10px; padding: 12px 16px;
    border-bottom: 1px solid var(--line); }
.fa-dd-hlava b { font-size: .92rem; }
.fa-dd-hlava span { font-size: .76rem; color: var(--faint); }
.fa-dd-telo { display: grid; grid-template-columns: repeat(auto-fit, minmax(215px, 1fr));
    gap: 18px; padding: 16px; }
.fa-dd-pata { display: flex; justify-content: flex-end; gap: 8px; padding: 11px 16px;
    border-top: 1px solid var(--line); background: var(--sunken); }

.fa-fskupina { display: flex; flex-direction: column; gap: 9px; }
.fa-fnadpis { font-size: .68rem; font-weight: 700; letter-spacing: .06em;
    text-transform: uppercase; color: var(--brand); }
.fa-fpole { display: flex; flex-direction: column; gap: 4px; }
.fa-fpole > span { font-size: .74rem; font-weight: 600; color: var(--ink-soft); }
.fa-fpole > span em { font-style: normal; font-weight: 400; color: var(--faint); }
.fa-fdvoj { display: flex; align-items: center; gap: 5px; }
.fa-fdvoj > i { color: var(--faint); font-style: normal; }
.fa-fpole input, .fa-fpole select { min-width: 0; width: 100%; }

.fa-toolbar-vpravo { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.fa-pocet-faktur { font-size: .8rem; color: var(--faint); white-space: nowrap; }
.fa-pocet-faktur b { color: var(--ink); font-variant-numeric: tabular-nums; }

/* Aktívne filtre ako pilulky — vidno, prečo je výber taký, a dajú sa zrušiť. */
.fa-chipy { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
/* čipy = jadro `.chip.chip--zrus` (+ `--carkovane` pre „Zrušiť všetky“), audit E6 */

.fa-sucty { margin: 0 0 14px; }

/* Ručný prepis preplatenej dovolenky priamo v kontrolnom paneli Výpočtu.
   Polia sú úzke zámerne — panel má sedieť na QHD vedľa ostatných stĺpcov. */
.vp-dov-form { display:flex; gap:6px; align-items:center; }
.vp-dov-form input { min-width:0; }
.vp-dov-form input[name="suma"] { max-width:78px; text-align:right; }
.vp-dov-form input[name="dovod"] { max-width:170px; }


/* ==========================================================================
   templates/novinky/* — modul Novinky (interné vydania)
   --------------------------------------------------------------------------
   Vzhľad poľa (výška, rám, radius, fokus) je od 8. 10. 2026 v jadre
   (styles.css „Formulárové prvky“); .nv-fld nesie už len rozloženie.
   ========================================================================== */

.nv-back { display:inline-flex; align-items:center; gap:6px; color:var(--muted);
    text-decoration:none; font-size:.85rem; margin-bottom:10px; }
.nv-back:hover { color:var(--brand); }
.nv-inline { display:inline-flex; gap:8px; align-items:center; }
.nv-muted { color:var(--faint); }
.nv-kicker { display:block; font-size:.72rem; font-weight:700; letter-spacing:.12em;
    text-transform:uppercase; color:var(--accent); }

/* Formulár vydania */
.nv-form { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface); padding:18px; }
.nv-fset { border:none; margin:0 0 18px; padding:0; }
.nv-fset > legend { font-size:.8rem; font-weight:700; color:var(--brand-ink); text-transform:uppercase;
    letter-spacing:.04em; padding:0 0 10px; margin-bottom:12px; border-bottom:1px solid var(--line-soft); width:100%; }
/* Stĺpec aspoň tretina riadka: pole `.full` (1 / -1) drží VŠETKY stopy auto-fit,
   takže pri 200px by sa na QHD rozpadol riadok na ~10 stĺpcov a pole „Odkaz
   tlačidla" by ostalo 200px úzke — URL sa doň nezmestila (kontrola šírky, +88 px). */
.nv-fgrid { display:grid; grid-template-columns:repeat(auto-fit, minmax(max(200px, calc(33.333% - 10px)), 1fr)); gap:12px 14px; }
.nv-fld { display:flex; flex-direction:column; gap:5px; }
.nv-fld.full { grid-column:1 / -1; }
.nv-fld > span { font-size:.77rem; font-weight:600; color:var(--ink-soft); }
.nv-fld input, .nv-fld select, .nv-fld textarea { width:100%; }
.nv-fld textarea { resize:vertical; }
.nv-formfoot { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:6px; }
.nv-formfoot.full { grid-column:1 / -1; }
.nv-uprava { margin-bottom:18px; }
.nv-fld > .nv-prepinac { display:flex; align-items:center; gap:8px; min-height:40px; font-size:.86rem;
    font-weight:400; color:var(--ink-soft); }
.nv-fld .nv-prepinac input { width:auto; padding:0; }
.nv-hint { font-size:.76rem; color:var(--faint); display:block; }
/* `display:block` vyššie prebíja `[hidden]`, ktoré je len v štýle prehliadača —
   bez tohto riadku ostane hláška „nič sa nenašlo" na obrazovke aj vtedy, keď
   sa našlo všetko. */
.nv-hint[hidden] { display:none; }
.nv-hint--blok { margin:0 0 12px; }

/* Opakované riadky — čísla vedľa seba, novinky pod sebou.
   Posledný stĺpec je kôš: riadok sa pridáva aj odoberá priamo v editore,
   takže musí mať kde. */
.nv-riadok { display:grid; grid-template-columns:2fr 1.2fr 1fr 1.6fr auto; gap:10px; margin-bottom:10px; align-items:end; }
.nv-polozka { border:1px solid var(--line-soft); border-radius:var(--r); padding:13px 14px; margin-bottom:10px; background:var(--sunken); }
.nv-polozka-head { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.nv-polozka-cislo { font-size:.74rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
.nv-odober { margin-left:auto; display:inline-flex; align-items:center; justify-content:center;
    width:32px; height:32px; flex:0 0 auto; padding:0; border:1px solid var(--line); border-radius:var(--r-sm);
    background:var(--surface); color:var(--faint); cursor:pointer; }
.nv-odober:hover { border-color:var(--danger-line); color:var(--danger); }
.nv-odober .ti { font-size:16px; }
.nv-opak > .nv-formfoot { margin:0 0 16px; }


/* Výber publika */
.nv-zoznamy { display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr)); gap:10px; }
.nv-zoznam { display:flex; gap:10px; align-items:flex-start; padding:11px 13px; border:1px solid var(--line);
    border-radius:var(--r); background:var(--surface); cursor:pointer; }
.nv-zoznam:hover { border-color:var(--brand); }
.nv-zoznam input { margin-top:3px; }
.nv-zoznam strong { display:block; font-size:.88rem; }

/* Panel odoslania — je to nevratná akcia, má mať vlastnú plochu */
.nv-odoslanie { border-color:var(--brand-200); }
.nv-odoslanie h2 { margin-bottom:8px; }
.nv-detail summary { cursor:pointer; font-size:.82rem; color:var(--muted); margin:8px 0; }
.nv-adresy { list-style:none; margin:0 0 10px; padding:0; display:grid;
    grid-template-columns:repeat(auto-fit, minmax(230px, 1fr)); gap:6px; max-height:280px; overflow:auto; }
.nv-adresy li { font-size:.84rem; }
.nv-zmazat { margin-top:18px; }

/* Výber ľudí — dvojpanelový presun (adresár → zoznam).
   Mriežka zaškrtávadiel tu bola prvá verzia a nefungovala: pri 83 adresách
   sa v nej nedalo hľadať ani prehliadnuť, koho mám vlastne vybraného. */
.nv-transfer { display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start; }
.nv-pane { border:1px solid var(--line); border-radius:var(--r-lg); background:var(--surface);
    display:flex; flex-direction:column; overflow:hidden; }
.nv-pane--vybrane { border-color:var(--brand-200); }
.nv-pane-head { display:flex; align-items:center; gap:10px; padding:13px 16px;
    border-bottom:1px solid var(--line-soft); }
.nv-pane-head h2 { margin:0; font-size:.92rem; font-weight:660; }
.nv-pane-count { margin-left:auto; font-size:.76rem; font-weight:700; color:var(--muted);
    background:var(--sunken); border-radius:999px; padding:2px 9px; font-variant-numeric:tabular-nums; }
.nv-pane-count--akcent { background:var(--brand-50); color:var(--brand-ink); }
.nv-pane-tools { padding:12px 16px; display:flex; flex-direction:column; gap:10px;
    border-bottom:1px solid var(--line-soft); background:var(--sunken); }

.nv-list { list-style:none; margin:0; padding:6px; overflow:auto; max-height:480px;
    display:flex; flex-direction:column; gap:2px; }
.nv-osoba-akcia { display:flex; align-items:center; gap:11px; width:100%; text-align:left;
    padding:8px 10px; border:1px solid transparent; border-radius:var(--r-sm);
    background:transparent; font-family:inherit; cursor:pointer; color:var(--ink); }
.nv-osoba-akcia:hover { background:var(--tonal); border-color:var(--line); }
.nv-osoba-akcia.is-citanie { cursor:default; }
.nv-osoba-akcia.is-citanie:hover { background:transparent; border-color:transparent; }
.nv-osoba-akcia.is-citanie .nv-osoba-ikona { display:none; }
.nv-osoba-akcia:focus-visible { outline:none; border-color:var(--brand); box-shadow:var(--ring); }
.nv-avatar { width:30px; height:30px; flex:0 0 auto; border-radius:50%; background:var(--brand-50);
    color:var(--brand-ink); display:flex; align-items:center; justify-content:center;
    font-size:.82rem; font-weight:700; }
.is-vybrany .nv-avatar { background:var(--brand); color:var(--brand-ink-on); }
.nv-osoba-text { min-width:0; display:flex; flex-direction:column; }
.nv-osoba-text strong { font-size:.87rem; font-weight:600; overflow:hidden; text-overflow:ellipsis;
    white-space:nowrap; }
.nv-osoba-text .nv-hint { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nv-znak { margin-left:auto; color:var(--faint); font-size:15px; display:flex; }
.nv-znak + .nv-osoba-ikona { margin-left:8px; }
.nv-osoba-ikona { margin-left:auto; color:var(--faint); font-size:16px; display:flex; flex:0 0 auto; }
.nv-osoba-akcia:hover .nv-osoba-ikona { color:var(--brand); }
.nv-pane--vybrane .nv-osoba-akcia:hover .nv-osoba-ikona { color:var(--danger); }
.nv-pane-foot { display:flex; align-items:center; gap:10px; padding:11px 16px;
    border-top:1px solid var(--line-soft); background:var(--sunken); }
.nv-vyber-foot { margin-top:16px; }

/* Skúška — tá istá plocha ako odoslanie, ale bez varovnej farby.
   Je to vratná akcia: pošli si to hoci desaťkrát. Preto nemá rám značky. */
.nv-skuska { margin-bottom:18px; }
.nv-skuska h2 { margin-bottom:8px; }
.nv-skuska-ja { max-width:420px; margin-bottom:12px; }
.nv-skuska-viac > summary { cursor:pointer; font-size:.84rem; font-weight:600;
    color:var(--brand-ink); margin-bottom:10px; }
.nv-skuska-viac > summary:hover { color:var(--brand); }
.nv-skuska-pane { max-width:560px; }
/* Nižšie než pri zoznamoch — tu sa vyberajú dvaja ľudia, nie publikum. */
.nv-list--skuska { max-height:260px; }
.nv-list--skuska .nv-osoba-akcia { cursor:pointer; }
.nv-list--skuska input[type="checkbox"] { flex:0 0 auto; margin:0; }
.nv-skuska-dalsie { max-width:560px; margin-top:12px; }

/* Naplánované vydanie — musí byť vidieť na prvý pohľad, že to ešte neodišlo. */
.nv-plan { display:flex; align-items:center; gap:13px; padding:13px 15px; margin:0 0 14px;
    border:1px solid var(--line); border-left:4px solid var(--warn-500);
    border-radius:var(--r); background:var(--warn-50); }
.nv-plan > .ti { font-size:22px; color:var(--warn-600); flex:0 0 auto; }
.nv-plan > div { display:flex; flex-direction:column; gap:2px; min-width:0; }
.nv-plan form { margin-left:auto; }
.nv-kedy { align-items:end; margin-bottom:10px; }
.nv-zfin { margin-bottom:18px; background:var(--sunken); }


/* ==========================================================================
   TECHNICKÉ ODDELENIE — tickety na poruchy a opravy
   ==========================================================================
   Karty, tlačidlá, tabuľka a formulárové polia si modul neprináša vlastné —
   berie `zl-*` primitíva, ktoré už používajú Zálohy aj Zamestnanci. Tu je len
   to, čo inde nie je: hlavička karty ticketu a časová os (záložky sú spoločné
   `.nx-zalozky`).
   (Že to nie je v `styles.css` ako token, je známy dlh — viď ARCHITEKTURA.md
   §5. Ďalší modul si to skopíruje rovnako ako ja.) */


/* Hlavička ticketu: pár faktov v dvoch stĺpcoch. Nie tabuľka — je to karta
   jedného záznamu, nie zoznam. */
.tk-meta { display:grid; grid-template-columns:auto 1fr; gap:6px 14px; margin:0 0 14px;
    font-size:.86rem; }
.tk-meta dt { color:var(--muted); font-weight:600; }
.tk-meta dd { margin:0; color:var(--ink); }
.tk-popis { margin:0; padding:12px 14px; background:var(--sunken);
    border-radius:var(--r-sm); font-size:.9rem; line-height:1.55; white-space:normal; }

/* Časová os ticketu. Komentár, zmena stavu a pridelenie sú jeden zoznam —
   človek číta ticket ako rozhovor, nie ako tri tabuľky. */
.tk-os { list-style:none; margin:0 0 16px; padding:0; }
/* Potomok, nie ktorýkoľvek `li` vnútri: galéria príloh je tiež zoznam a bez
   `>` by každá dlaždica dostala bodku aj zvislú čiaru časovej osi. */
.tk-os > li { position:relative; padding:0 0 15px 20px; border-left:2px solid var(--line); }
.tk-os > li:last-child { border-left-color:transparent; padding-bottom:0; }
.tk-os > li::before { content:""; position:absolute; left:-6px; top:4px; width:10px; height:10px;
    border-radius:50%; background:var(--brand); }
/* Zmena stavu je udalosť, nie reč — tichší bod, nech v osi vyniknú komentáre. */
.tk-os > li.tk-stav::before, .tk-os > li.tk-pridelenie::before { background:var(--line-strong, var(--line)); }
.tk-os-hlava { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; font-size:.82rem; }
.tk-os-hlava time { color:var(--faint); }
.tk-os > li > p { margin:3px 0 0; font-size:.9rem; line-height:1.55; }


/* Technické oddelenie — SLA, roztriedenie, výdavky (v1.181). */
.tk-napoveda { margin:0 0 12px; color:var(--muted); font-size:.84rem; line-height:1.5; }
.tk-termin { color:var(--faint); font-size:.76rem; margin-left:4px; white-space:nowrap; }
/* Rýchle pridelenie priamo z riadku zoznamu — technik + tlačidlo vedľa seba. */
.tk-rychle { display:flex; gap:6px; align-items:center; margin:0; }
.tk-rychle select { min-width:150px; }
.zl-form + .zl-form { margin-top:18px; }
/* Karta „Čo s tým": každá akcia je jeden riadok — pole a tlačidlo vedľa seba,
   nie pod sebou na celú šírku. */
.tk-akcie form { display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap;
    padding:10px 0; border-top:1px solid var(--line); margin:0; }
.tk-akcie .zl-card-head + form { border-top:0; padding-top:0; }
.tk-akcie .zl-fld { flex:1 1 220px; max-width:360px; margin:0; }
.tk-akcie .zl-fld.zl-full { max-width:none; flex-basis:100%; }
.tk-vydavok-form { margin-top:16px; }
/* Zrušený výdavok ostáva viditeľný, ale nesmie sa čítať ako peniaze. */
.tk-zruseny, .tk-zruseny td { color:var(--faint); text-decoration:line-through; }
.tk-zruseny em { text-decoration:none; }
.tk-zrus summary { cursor:pointer; color:var(--muted); font-size:.8rem; }
.tk-zrus form { display:flex; gap:6px; margin-top:6px; flex-wrap:wrap; }


/* Technické oddelenie — prehľad, schvaľovanie, krokovník (v1.183). */
.tk-hlava .nx-hlava-akcie { align-items: center; }
/* Nastavenia sú admin vec — nenápadná ikona v rohu, nie tlačidlo vedľa hlavnej akcie. */
.tk-hlava .btn-ikona { width: 36px; height: 36px; margin-left: 6px; color: var(--muted); }
.tk-hlava .btn-ikona:hover { color: var(--ink); border-color: var(--line); }
.tk-hlava .btn-ikona .ti { font-size: 19px; }
.tk-panel { margin-bottom: 14px; }
.tk-panel h2 { margin: 0 0 4px; font-size: 1rem; }
.zl-card-head h2 .ti { color: var(--muted); margin-right: 4px; }
.tk-export { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; }
.tk-podnadpis { margin: 18px 0 4px; font-size: .92rem; }
.tk-schval-tab { max-height: 360px; overflow: auto; margin-bottom: 12px; }

/* ==========================================================================
   Technické oddelenie — „pracovný dispečing" (návrh B, v1.217)
   Hlavička s bodkou, scéna s prepojenými dielmi, pracovná fronta v troch
   stĺpcoch, vpravo pás metrík a to, čo čaká na rozhodnutie. Iba tokeny
   vzhľadu — prehľad sedí vo všetkých šablónach aj v tmavej téme; stavové
   farby (--success/--warning/--danger) nesú význam, nie ozdobu.
   ========================================================================== */
.tk-zle { color: var(--danger); }

/* Nápoveda nad zoznamom ako jemná lišta s ikonou. */
.tk-lista { display: flex; align-items: flex-start; gap: 10px; padding: 11px 14px; max-width: none;
    background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-sm); }
.tk-lista .ti { flex: 0 0 auto; font-size: 17px; color: var(--muted); margin-top: 1px; }
.tk-lista--zle { border-color: var(--danger-line); }
.tk-lista--zle .ti { color: var(--danger); }

/* --- Kostra: hlavný stĺpec + pravý pás ------------------------------------ */
.tk-disp { display: grid; grid-template-columns: minmax(0, 1fr) 290px; gap: 20px; align-items: start; margin-bottom: 20px; }
.tk-disp-hlavne { min-width: 0; }
.tk-disp-bok { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.tk-disp-bok .tk-panel { margin: 0; }

/* --- Scéna = spoločná .nx-scena (styles.css sekcia 19); tu len odznak stavu - */
.tk-scena .nx-scena-text { max-width: 470px; }
.tk-scena-stav { display: inline-flex; align-items: center; gap: 7px; min-height: 42px; margin-top: 16px; padding: 5px 14px;
    font-size: .74rem; color: var(--ink-soft); text-decoration: none; border-radius: 999px;
    background: color-mix(in srgb, var(--surface) 82%, transparent); border: 1px solid var(--line);
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.tk-scena-stav .ti { font-size: 15px; color: var(--success); }
.tk-scena-stav--zle { color: var(--danger); background: var(--danger-bg); border-color: var(--danger-line); font-weight: 600; }
.tk-scena-stav--zle .ti { color: var(--danger); }
.tk-scena-stav--zle:hover { border-color: var(--danger); }

/* --- Pracovná fronta: tri stĺpce ------------------------------------------ */
.tk-sekcia-hlava { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 0 2px 12px; }
.tk-sekcia-hlava h2 { margin: 0; font-size: 1rem; font-weight: 600; }
.tk-fronta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 20px; }
.tk-stlpec { display: flex; flex-direction: column; gap: 10px; min-width: 0; min-height: 230px; padding: 12px;
    background: var(--sunken); border: 1px solid var(--line); border-radius: var(--r-lg); }
.tk-stlpec--ziada { background: color-mix(in srgb, var(--warning-bg) 55%, var(--sunken)); border-color: var(--warning-line); }
.tk-stlpec-hlava { display: flex; align-items: center; justify-content: space-between; gap: 8px;
    min-height: 42px; padding: 3px 4px; color: var(--ink); text-decoration: none; border-radius: var(--r-sm); }
.tk-stlpec-hlava h3 { display: flex; align-items: center; gap: 7px; margin: 0; font-size: .84rem; font-weight: 600; }
.tk-stlpec-hlava h3 .ti { font-size: 16px; color: var(--muted); transition: color .2s ease; }
.tk-stlpec-hlava:hover h3 .ti { color: var(--accent); }
.tk-stlpec-pocet { min-width: 26px; padding: 1px 8px; text-align: center; font-size: .76rem; font-weight: 650;
    font-variant-numeric: tabular-nums; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); }
.tk-stlpec--ziada .tk-stlpec-pocet { background: var(--warning-bg); border-color: var(--warning-line); color: var(--warning-ink); }
.tk-stlpec-pozn { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: -2px 4px 0; font-size: .76rem; }
.tk-stlpec-pozn a { color: var(--ink-soft); }
.tk-stlpec-viac { margin-top: auto; align-self: flex-end; display: inline-flex; align-items: center; gap: 5px;
    padding: 2px 4px; font-size: .76rem; color: var(--muted); text-decoration: none; }
.tk-stlpec-viac:hover { color: var(--ink); }
.tk-stlpec-viac .ti { transition: transform .2s var(--ease); }
.tk-stlpec-viac:hover .ti { transform: translateX(3px); }

/* Karta ticketu: celá klikateľná (odkaz cez ::after), rýchle pridelenie nad ňou.
   Ľavá hrana = priorita (stojí / súrne), pri hotových zelená. */
.tk-karta { position: relative; display: flex; flex-direction: column; gap: 3px; padding: 12px 14px 13px;
    background: var(--surface); border: 1px solid var(--line); border-left: 3px solid var(--line-strong);
    border-radius: var(--r); box-shadow: var(--shadow-xs);
    transition: transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s ease; }
.tk-karta--hori { border-left-color: var(--danger); }
.tk-karta--surne { border-left-color: var(--warning); }
.tk-karta--hotove { border-left-color: var(--success); }
.tk-karta:hover { transform: translateY(-2px); box-shadow: var(--shadow);
    border-top-color: var(--line-strong); border-right-color: var(--line-strong); border-bottom-color: var(--line-strong); }
.tk-karta:has(.tk-karta-odkaz:focus-visible) { box-shadow: var(--focus); }
.tk-karta-kod { font-size: .6rem; font-weight: 650; letter-spacing: .13em; text-transform: uppercase; color: var(--faint); }
.tk-karta-odkaz { display: flex; flex-direction: column; gap: 3px; min-height: 44px; color: var(--ink); text-decoration: none; }
.tk-karta-nazov { font-size: .9rem; font-weight: 600; line-height: 1.35; overflow-wrap: anywhere; }
.tk-karta-odkaz:focus-visible { outline: none; }
.tk-karta-odkaz::after { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; border-radius: inherit; }
.tk-karta-kat { font-size: .74rem; color: var(--muted); }
.tk-karta-tagy { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.tk-karta-pata { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-top: 8px;
    padding-top: 8px; border-top: 1px dashed var(--line); font-size: .72rem; color: var(--muted); }
.tk-karta-pata span { display: inline-flex; align-items: center; gap: 5px; min-width: 0; }
.tk-karta .tk-rychle { position: relative; z-index: 1; margin-top: 9px; }
.tk-karta .tk-rychle select { flex: 1; min-width: 0; }
.tk-karta .tk-rychle .btn { min-height: 42px; }

/* --- Graf ------------------------------------------------------------------ */
.tk-graf { margin: 0; }

/* --- Pravý pás: metriky pod sebou (1 px mriežka = deliace čiary) ---------- */
.tk-metriky { display: grid; grid-template-columns: 1fr; gap: 1px; overflow: hidden;
    background: var(--line); border: 1px solid var(--line); border-radius: var(--r-lg); }
.tk-metrika { display: flex; flex-direction: column; gap: 4px; padding: 18px 20px; background: var(--surface); min-width: 0; }
.tk-metrika-lab { display: flex; align-items: center; gap: 6px; font-size: .74rem; color: var(--muted); }
.tk-metrika-lab .ti { font-size: 15px; }
.tk-metrika strong { font-size: 1.95rem; font-weight: 520; line-height: 1.1; letter-spacing: -.045em;
    color: var(--ink); font-variant-numeric: tabular-nums; }
.tk-metrika strong small { margin-left: 2px; font-size: .78rem; font-weight: 400; letter-spacing: 0; color: var(--muted); }
.tk-metrika-pod { font-size: .7rem; line-height: 1.5; color: var(--faint); }
.tk-metrika--dobre strong { color: var(--success); }
.tk-metrika--zle strong { color: var(--danger); }
.tk-sla-pas { display: block; height: 5px; margin: 5px 0 3px; overflow: hidden; border-radius: 99px; background: var(--sunken); }
.tk-sla-pas > span { display: block; width: var(--tk-pct, 0%); height: 100%; border-radius: inherit; background: var(--warning); }
.tk-metrika--dobre .tk-sla-pas > span { background: var(--success); }
.tk-metrika--zle .tk-sla-pas > span { background: var(--danger); }

/* --- Pravý pás: čo čaká na rozhodnutie ------------------------------------- */
.tk-pozornost h2 { margin: 0 0 6px; font-size: .95rem; }
.tk-riadok { display: grid; grid-template-columns: 22px minmax(0, 1fr); align-items: center; gap: 1px 8px;
    margin: 0; padding: 11px 0; border-bottom: 1px solid var(--line-soft); font-size: .84rem; color: var(--ink); text-decoration: none; }
.tk-riadok:last-child { border-bottom: 0; padding-bottom: 2px; }
.tk-riadok .ti { grid-row: span 2; font-size: 17px; color: var(--success); }
.tk-riadok small { grid-column: 2; font-size: .72rem; color: var(--faint); }
.tk-riadok--zle span, .tk-riadok--zle .ti { color: var(--danger); font-weight: 600; }
.tk-riadok--ziada .ti { color: var(--warning); }
.tk-riadok--ziada span { font-weight: 600; }
a.tk-riadok:hover span { text-decoration: underline; text-underline-offset: 3px; }
.tk-schval { list-style: none; margin: 0; padding: 0 0 4px; max-height: 340px; overflow: auto; }
.tk-schval li { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px;
    padding: 8px 0 8px 30px; border-bottom: 1px dashed var(--line-soft); font-size: .8rem; }
.tk-schval li:last-child { border-bottom: 0; }
.tk-schval a { min-width: 0; color: var(--ink); text-decoration: none; }
.tk-schval a:hover strong { color: var(--accent); }
.tk-schval-nazov { display: block; font-size: .74rem; color: var(--muted); overflow-wrap: anywhere; }
.tk-schval-suma { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* --- Analytika pod dispečingom --------------------------------------------- */
.tk-analytika { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(400px, 100%), 1fr)); gap: 20px; margin-bottom: 20px; }
.tk-analytika .zl-card { margin: 0; min-width: 0; }
.zl-card-head .nx-kicker { margin-left: auto; }
.tk-opakovane-nic { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px 20px;
    margin-bottom: 16px; padding: 15px 20px; font-size: .8rem; color: var(--muted);
    border: 1px dashed var(--line-strong); border-radius: var(--r); }
.tk-opakovane-nic strong { display: inline-flex; align-items: center; gap: 7px; font-weight: 560; color: var(--ink-soft); }

/* --- Pohyb: scéna nabehne, obrázok pomaly dýcha, stĺpce jeden po druhom ---- */
@media (prefers-reduced-motion: no-preference) {
    .tk-stlpec { animation: tk-nabeh .45s cubic-bezier(.2, .65, .3, 1) both; }
    .tk-stlpec:nth-child(2) { animation-delay: .07s; }
    .tk-stlpec:nth-child(3) { animation-delay: .14s; }
    .tk-sla-pas > span { animation: tk-pas 1.1s cubic-bezier(.2, .65, .3, 1) .35s both; }
}
@keyframes tk-nabeh { from { opacity: 0; transform: translateY(8px); } }
@keyframes tk-pas { from { width: 0; } }

/* --- Menšie obrazovky ------------------------------------------------------ */
/* Pravý pás ide pod frontu skôr, než by stĺpce fronty zúžil pod čitateľnú
   šírku (menu zaberá ~240 px, tablet na šírku mal stĺpce po 119 px). */


/* Peniaze a schvaľovanie. */
.tk-schvalenie { border-color: var(--warning-line); background: var(--warning-bg); }
.tk-suma-velka { font-size: 1.6rem; font-weight: 700; letter-spacing: -.02em; margin: 0 0 6px; }
.tk-rozbal { margin: 10px 0 14px; }
.tk-rozbal > summary { cursor: pointer; font-weight: 650; font-size: .88rem; color: var(--ink); padding: 6px 0; }
.tk-rozbal[open] > summary { margin-bottom: 8px; }

/* Dlaždica manažéra prevádzky: číslo vedie na zoznam, tlačidlo na nahlásenie. */
.stat-card.tk-dlazdica { gap: 10px; }
.tk-dlazdica-hlava { display: flex; flex-direction: column; gap: 5px; color: inherit; text-decoration: none; }
.tk-dlazdica-hlava:hover .stat-value { text-decoration: underline; text-decoration-thickness: 1px; }
.tk-dlazdica-akcia { align-self: flex-start; }

.zl-fld.tk-check { display: flex; flex-direction: row; align-items: center; gap: 8px; }
.zl-fld.tk-check input { width: auto; }
.zl-fld.tk-check span { font-weight: 500; }

/* Typ ticketu — porucha alebo požiadavka. Dve možnosti = dve tlačidlá, nie
   rozbaľovačka: je to prvá otázka formulára a má byť zodpovedaná jedným
   klepnutím, nie otvorením zoznamu s dvoma položkami. */
.tk-typ { display:flex; gap:8px; flex-wrap:wrap; margin:0 0 16px; padding:0; border:0; }
.tk-typ legend { padding:0; margin:0 0 6px; font-size:.77rem; font-weight:600; color:var(--ink-soft); }
.tk-typ-volba { flex:1 1 220px; }
.tk-typ-volba input { position:absolute; opacity:0; width:1px; height:1px; }
.tk-typ-volba span {
    display:flex; align-items:center; justify-content:center; gap:8px;
    padding:12px 14px; cursor:pointer; font-size:.88rem; font-weight:600;
    border:1.5px solid var(--line); border-radius:var(--r);
    background:var(--surface); color:var(--ink-soft);
}
.tk-typ-volba span .ti { font-size:19px; color:var(--muted); }
.tk-typ-volba:hover span { border-color:var(--brand); }
.tk-typ-volba input:checked + span {
    border-color:var(--brand); background:var(--brand-50); color:var(--brand-ink);
}
.tk-typ-volba input:checked + span .ti { color:var(--brand); }
/* Klávesnica musí vidieť, kde je — prepínač je skrytý, obrys kreslí nálepka. */
.tk-typ-volba input:focus-visible + span { outline:2px solid var(--brand); outline-offset:2px; }

/* Technické oddelenie — otázka na prevádzku a nové odpovede (v1.191). */
.tk-otazka-karta { border-color: var(--warning-line); background: var(--warning-bg); }
.tk-otazka-karta .zl-card-head h2 .ti { color: var(--warning-ink); }
.tk-otazka-text { margin: 0 0 12px; font-size: .95rem; line-height: 1.55; }
.tk-os > li.tk-otazka::before { background: var(--warn-500, var(--brand)); }
.tk-os-hlava .tag .ti { font-size: 13px; }
/* Bodka „nová odpoveď" pred názvom ticketu v zozname. */
.tk-nove { display: inline-block; width: 8px; height: 8px; margin-right: 6px; border-radius: 50%;
    background: var(--accent, #ef3e3d); vertical-align: middle; }

/* ==========================================================================
   Príprava miezd — baseline modulu (v1.219). Zúžené na .mzdy-page: triedy
   .mz-toolbar/.mz-month/.mz-tablewrap/.mz-actions zdieľa Výpočet, Rozpis
   aj Trezor a tie sa meniť nemajú. Hlavička, scéna, kroky, stav, lišta
   a kríž mriežky sú spoločné komponenty (styles.css sekcia 19).
   ========================================================================== */
.mzdy-page .nx-hlava h1 { margin: 8px 0 0; font-size: clamp(1.6rem, 2.4vw, 2.15rem); font-weight: 560; letter-spacing: -.035em; }
.mzdy-page .mz-scena .nx-scena-text { max-width: 640px; }
.mzdy-page .mz-scena .nx-scena-text p { max-width: 62ch; }
.mzdy-page .mz-toolbar { margin: 0 0 14px; gap: 10px 14px; }
.mzdy-page .mz-toolbar .mz-export { margin-left: auto; }
.mzdy-page .mz-proces { display: flex; align-items: center; justify-content: space-between; gap: 10px 16px;
    flex-wrap: wrap; margin: 0 0 18px; }
.mzdy-page .mz-proces .nx-kroky { margin: 0; }

/* KPI: šesť dlaždíc v rade, „K výplate" je tmavá hlavná — vzhľad dáva .nx-cisla */
.mzdy-page .mz-cards { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.mzdy-page .mz-card { gap: 8px; }
.mzdy-page .mz-card .mzc-k { font-size: .74rem; font-weight: 500; letter-spacing: 0; text-transform: none; }
.mzdy-page .mz-card .mzc-v { font-size: 1.35rem; font-weight: 500; letter-spacing: -.025em; }
.mzdy-page .mz-card .mzc-v b { font-weight: 560; }

/* Filtre a tabuľka tvoria jeden panel (lišta hore, tabuľka pod ňou) */
.mzdy-page .mz-filterbar { margin: 0; padding: 12px 14px; background: var(--surface); box-shadow: none;
    border-bottom: 0; border-radius: var(--r-lg) var(--r-lg) 0 0; }
.mzdy-page .mzf-chips { flex-wrap: wrap; }
.mzdy-page .mz-filterbar ~ .mz-addpanel:not([hidden]) { margin: 0; border-radius: 0; }
.mzdy-page .mz-filterbar ~ form .mz-tablewrap { border-top-left-radius: 0; border-top-right-radius: 0; }
/* V samotnej tabuľke (vlastný posuv) nesmie aktívna bunka zapadnúť pod
   prilepenú hlavičku, pätičku ani stĺpec s menom (280 px). */
.mzdy-page .mz-tablewrap { scroll-padding: 44px 0 48px 280px; }
.mzdy-page .mz-table thead th { font-size: .62rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.mzdy-page .mz-table .z-avatar { transition: background .2s ease, color .2s ease; }
.mzdy-page .mz-table tr.nx-riadok-aktivny .z-avatar { background: var(--brand); color: var(--brand-ink-on); }

/* Lišta akcií: súčet vľavo, uložiť/odoslať vpravo, pomoc pod nimi */
.mzdy-page .mz-actions.nx-akcie-lista { gap: 8px 12px; }


/* Režim sústredenia: tabuľka dostane výšku, ktorú zaberala scéna */
html.nx-sustredenie .mzdy-page .mz-tablewrap { max-height: calc(100vh - 150px); }


/* ==========================================================================
   Trezor — baseline modulu (v1.220). Návrh „Všetko má svoj pôvod" (ZIP
   nexus-trezor) prenesený do Djanga: spoločná hlavička + scéna + záložky
   bez ikon (_hlavicka.html), rad kariet s tmavou poslednou, prepočet ako
   práca vľavo a živý súčet vpravo, lišta akcií dole, filter a tabuľka ako
   jeden panel. Zúžené na .tz-page — všetky ID, mená polí a poradie stĺpcov
   ostali (viaže sa na ne skript obrazovky, polia.js aj testy).
   ========================================================================== */
.tz-page .nx-hlava h1 { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; }

/* Firma v hlavičke — rovnaká výška ako tlačidlá vedľa nej */
.tz-page .nx-hlava-akcie { align-items: center; }
.tz-firma-vyber { display: flex; align-items: center; gap: 8px; margin: 0; }
.tz-firma-vyber label { display: flex; align-items: center; gap: 8px; margin: 0;
    font-size: .74rem; font-weight: 600; color: var(--muted); }
.tz-firma-vyber select { font-weight: 560; }

/* Scéna nesie aj vysvetľujúcu vetu záložky — širší text ako v Príprave. */
.tz-page .tz-scena .nx-scena-text { max-width: 640px; }
.tz-page .tz-scena .nx-scena-text p { max-width: 62ch; }
.tz-page .mz-lock { margin-bottom: 18px; }

/* --- Prepočet: práca vľavo, súčet a príbeh vpravo, lišta dole ------------ */
.tz-page .tz-prepocet { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 18px 20px;
    align-items: start; margin: 0 0 20px; padding: 0; border: 0; background: transparent; }
.tz-page .tz-prepocet > .nx-akcie-lista { grid-column: 1 / -1; margin: 0; }
.tz-prepocet-praca { min-width: 0; padding: 20px 22px 22px; background: var(--surface);
    border: 1px solid var(--line); border-radius: var(--r-lg); }
.tz-prepocet-hlava { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px 16px;
    flex-wrap: wrap; margin: 0 0 16px; }
.tz-prepocet-hlava h2 { margin: 0; font-size: 1.05rem; font-weight: 600; letter-spacing: -.01em; }
.tz-prepocet-hlava p { margin: 4px 0 0; font-size: .8rem; color: var(--muted); }

/* Režim ako prepínač v koľajničke (celý obsah / len nová hotovosť) */
.tz-page .tz-rezim { gap: 4px; padding: 4px; margin: 0 0 16px; background: var(--sunken); border-radius: var(--r); }
.tz-page .tz-rez { flex: 1 1 220px; align-items: center; text-align: center; gap: 1px; padding: 9px 12px;
    border: 0; border-radius: var(--r-sm); background: transparent; box-shadow: none; }
.tz-page .tz-rez span { justify-content: center; font-size: .86rem; font-weight: 600; color: var(--ink-soft); }
.tz-page .tz-rez em { font-size: .7rem; }
.tz-page .tz-rez:hover { background: var(--tonal); }
.tz-page .tz-rez.is-on { background: var(--raised); box-shadow: var(--shadow-xs); }
.tz-page .tz-rez.is-on span { color: var(--ink); }
.tz-page .tz-rez.is-on span .ti { color: var(--accent); }
.tz-page .tz-rez:focus-within { outline: 2px solid var(--brand); outline-offset: 1px; }
@supports selector(:has(a)) {   /* bez :has ostane rám fokusu aj pri kliku myšou — len kozmetika */
    .tz-page .tz-rez:not(:has(input:focus-visible)):focus-within { outline: 0; }
}

/* Text nápovedy prepisuje skript (innerHTML so <strong>/<kbd>) — ako flex by sa
   každé slovo zalomilo do vlastného stĺpčeka; plynulý odsek. */
.tz-page .tz-hint { display: block; line-height: 1.6; border-color: transparent; background: var(--success-bg); color: var(--ink-soft); }
.tz-page .tz-hint[hidden] { display: none; }
.tz-page .tz-hint .ti { margin-right: 4px; vertical-align: -3px; }
.tz-page .tz-hint .ti { color: var(--success); }

/* Mriežka nominálov: nominál ako žetón, vstupný stĺpec zvýraznený */
.tz-page #tz-mriezka thead th { font-size: .62rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
/* Len na širokej obrazovke — na telefóne z mriežky robí mobil.js karty a ich
   bunky potrebujú vlastné odsadenie (vľavo miesto na popisok stĺpca). */
.tz-page #tz-mriezka td.l strong { display: inline-block; min-width: 66px; padding: 4px 10px; border-radius: 6px;
    background: var(--sunken); font-weight: 600; text-align: center; font-variant-numeric: tabular-nums; }
.tz-page #tz-mriezka tr.tz-drobne td.l strong { border-radius: 99px; font-weight: 550; }
.tz-page #tz-mriezka .tz-mince-row td.l strong { min-width: 0; padding: 0; background: transparent; }
/* Napočítané z posledného prepočtu sa predvyplní — prepísané pole (jadro
   `td input.je-zmenene`) tu nesvieti, stav nesie riadok `.tz-zmenene`. */
.tz-page .tz-in { border-color: var(--pole-okraj); background: var(--tonal); }
.tz-page .tz-in:focus { background: var(--raised); }
.tz-page #tz-mriezka tfoot td { font-size: .9rem; }
.tz-page .tz-prepocet .tz-tablewrap { max-height: none; }

/* Pravý stĺpec: živý súčet, príbeh od posledného prepočtu, odkaz na výdaj */
.tz-rail { display: flex; flex-direction: column; min-width: 0; }
/* Medzery okrajom, nie flex gap — ten Edge 83 (LCTTC) v stĺpci nepozná. */
.tz-rail > * + * { margin-top: 14px; }
.tz-rail-karta, .tz-rail-odkaz, .tz-page .tz-rail .tz-odvtedy { padding: 18px 20px; background: var(--surface);
    border: 1px solid var(--line); border-radius: var(--r-lg); margin: 0; }
.tz-rail-nad { display: block; font-size: .6rem; font-weight: 650; letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.tz-rail-suma { display: block; margin: 10px 0 6px; font-size: 1.9rem; font-weight: 450; letter-spacing: -.04em;
    line-height: 1.05; color: var(--ink); font-variant-numeric: tabular-nums; }
.tz-rail-karta p, .tz-rail-odkaz p { margin: 0; font-size: .78rem; line-height: 1.65; color: var(--muted); }
.tz-rail-rozdiel { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.tz-rail-rozdiel strong { display: block; margin: 7px 0 4px; font-size: 1.3rem; font-weight: 550;
    letter-spacing: -.02em; font-variant-numeric: tabular-nums; color: var(--ink); }
.tz-rail-rozdiel strong.tz-plus { color: var(--success-dark); }
.tz-rail-rozdiel strong.tz-minus { color: var(--danger); }
.tz-rail-odkaz strong { display: block; margin-bottom: 6px; font-size: .95rem; font-weight: 600; }
.tz-rail-odkaz .btn-ghost { margin-top: 12px; }
.tz-page .tz-rail .tz-odvtedy { font-size: .78rem; }
.tz-page .tz-rail .tz-odvtedy-h { display: block; font-weight: 500; line-height: 1.55; }
.tz-page .tz-rail .tz-odvtedy-h .ti { margin-right: 4px; vertical-align: -3px; }
.tz-page .tz-rail .tz-rozpad-grid { grid-template-columns: 1fr; gap: 12px; }
.tz-page .tz-rail .tz-odvtedy p { font-size: .76rem; }

/* Lišta akcií: tlačidlo vľavo, súčet, potom správa */
.tz-page .tz-actions.nx-akcie-lista { gap: 8px 12px; }
.tz-page .nx-akcie-lista .tz-bilancia { font-weight: 600; }
.tz-page .tz-nula { display: inline-flex; align-items: center; gap: 6px; font-size: .78rem; color: var(--danger); font-weight: 600; }
.tz-page .tz-nula[hidden] { display: none; }

/* --- Panely a tabuľky na ostatných záložkách ------------------------------ */
.tz-page .tz-panel { padding: 16px 18px 18px; border-radius: var(--r-lg); }
.tz-page .tz-panel-h > span { font-size: .95rem; font-weight: 600; }
.tz-page .tz-table thead th { font-size: .62rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.tz-page .tz-table tbody tr > td { transition: background-color .15s ease; }
.tz-page .tz-table tbody tr:hover > td { background-color: var(--tonal); }
/* Filter a tabuľka pod ním = jeden panel (baseline, bod 8) */
.tz-page .tz-filtre { margin: 0; padding: 12px 14px; background: var(--surface); border: 1px solid var(--line);
    border-bottom: 0; border-radius: var(--r-lg) var(--r-lg) 0 0; }
.tz-page .tz-filtre input[type="search"] { min-width: 15rem; background: var(--sunken); }
.tz-page .tz-filtre input[type="search"]:focus { background: var(--surface); }
.tz-page .tz-filtre + .tz-tablewrap { border-top-left-radius: 0; border-top-right-radius: 0; }
.tz-page .tz-tablewrap { border-radius: var(--r-lg); }

/* Výdaj: formulár vľavo, dostupná hotovosť vpravo */
.tz-vydaj-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 20px; align-items: start; margin: 0 0 16px; }
.tz-vydaj-grid > .tz-vydajf { margin: 0; padding: 20px 22px 22px; }
.tz-vydaj-grid .nx-akcie-lista { margin-top: 18px; }
.tz-rail-suma.je-zle { color: var(--danger); }

/* Po mesiacoch: graf vľavo, zmena stavu posledného mesiaca vpravo */
.tz-mesiace-hore { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 20px; align-items: stretch; margin: 0 0 18px; }
.tz-mesiace-graf { min-width: 0; padding: 18px 20px 12px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.tz-mesiace-graf h2 { margin: 0; font-size: 1.05rem; font-weight: 600; }
.tz-mesiace-graf p { margin: 4px 0 8px; font-size: .78rem; color: var(--muted); }
.tz-rail-karta .tz-rail-suma.tz-plus { color: var(--success-dark); }
.tz-rail-karta .tz-rail-suma.tz-minus { color: var(--danger); }
.tz-rail-karta .btn-ghost { margin-top: 14px; }

/* Preplatky: suma prípadu ľahká a veľká ako čísla v kartách */
.tz-page .tz-preplatok { border-radius: var(--r-lg); }
.tz-page .tz-preplatok-suma { font-weight: 500; letter-spacing: -.03em; font-size: 1.8rem; }


/* ==========================================================================
   Reporting miezd — baseline modulu (v1.221). Návrh „B · Príbeh nákladu"
   (ZIP nexus-reporting-miezd-B, 1. 10. 2026) prenesený do Djanga: nx-hlava,
   filtre, záložky bez ikon, scéna s obrázkom na každej záložke (_rep_scena),
   Prehľad ako príbeh od výsledku k príčine (tmavá karta vľavo, kapitoly
   01–04 vpravo), karty s tmavou poslednou, tabuľky ako v Trezore.
   Zúžené na .rep — ID, dátové bloky a poradie stĺpcov ostali.
   Edge 83 (LCTTC): žiadne `inset`, medzery v stĺpci okrajmi (nie flex gap),
   color-mix sa tu nepoužíva.
   ========================================================================== */
.rep .rep-hlava { margin-bottom: 18px; }
.rep .rep-hlava .nx-hlava-akcie { align-items: center; }
.rep .rep-hlava .nx-hlava-akcie .ti { font-size: 15px; vertical-align: -2px; }

/* Filtre: firma ako koľajnička, obdobie ako žetón, info vpravo */
.rep .rep-filters { margin: 0 0 16px; }
.rep .rep-filters-info { margin-left: auto; font-size: .76rem; color: var(--faint); }
.rep .rep-firstnote { border-radius: var(--r-lg); font-size: .84rem; }

/* Scéna — širší text, vysvetlenie záložky v nej */
.rep .rep-scena { margin-bottom: 18px; }
.rep .rep-scena .nx-scena-text { max-width: 620px; }
.rep .rep-scena .nx-scena-text p { max-width: 58ch; }

/* --- Prehľad: príbeh (bok + hlavná časť) -------------------------------- */
.rep-pribeh { display: grid; grid-template-columns: 280px minmax(0, 1fr); grid-gap: 22px; gap: 22px; align-items: start; }
.rep-pribeh-bok { position: sticky; top: 16px; min-width: 0; }
.rep-pribeh-bok > * + * { margin-top: 14px; }
.rep-pribeh-hlavna { min-width: 0; }
.rep-pribeh-hlavna > .panel { margin: 0 0 18px; }

/* Karta = .nx-tmava (styles.css sekcia 19); modul píše len riadok zmeny a podiel na výnosoch. */
.rep-skore > .rep-skore-delta { margin: 14px 0 0; font-size: .8rem; font-weight: 600; opacity: 1; font-variant-numeric: tabular-nums; }
.rep-skore-delta span { font-weight: 450; opacity: .72; }
/* Na tmavej karte smer nákladu svetlejšími odtieňmi (rast = jantár, pokles = mäta) */
.rep-skore .rep-flat { color: inherit; opacity: .72; }
.rep-skore-lc small { display: block; font-size: .6rem; font-weight: 650; letter-spacing: .14em; text-transform: uppercase; opacity: .7; }
.rep-skore-lc strong { display: block; margin-top: 6px; font-size: 1.6rem; font-weight: 450; letter-spacing: -.03em;
    font-variant-numeric: tabular-nums; white-space: nowrap; }
.rep-skore-lc p { margin: 6px 0 0; font-size: .74rem; line-height: 1.55; opacity: .8; }
.rep-skore-lc p span { font-weight: 650; }


/* Ďalšie otázky — tiché odkazy na záložky */
.rep-otazky { display: block; padding: 4px 2px 0; }
.rep-otazky-nad { display: block; padding: 0 0 6px; font-size: .6rem; font-weight: 650; letter-spacing: .2em;
    text-transform: uppercase; color: var(--faint); }
.rep-otazky button { display: flex; justify-content: space-between; align-items: center; width: 100%; padding: 11px 2px;
    border: 0; border-bottom: 1px solid var(--line); background: transparent; color: var(--ink-soft);
    font: inherit; font-size: .82rem; text-align: left; cursor: pointer; transition: color .15s ease, padding .2s ease; }
.rep-otazky button span { margin-left: 10px; color: var(--faint); transition: transform .2s ease, color .15s ease; }
.rep-otazky button:hover { color: var(--ink); padding-left: 6px; }
.rep-otazky button:hover span { color: var(--accent); transform: translateX(3px); }
.rep-otazky button:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* Kapitoly 01–04 */
.rep-kapitola { display: flex; align-items: center; margin: 4px 0 12px; font-size: .86rem; font-weight: 560; color: var(--ink); }
.rep-kapitola span { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 28px; height: 28px;
    margin-right: 11px; border-radius: 50%; background: var(--sunken); color: var(--muted);
    font-size: .7rem; font-weight: 650; font-variant-numeric: tabular-nums; }

/* Spoločná hlavička panelov príbehu */
.rep .rep-panel-hlava { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; margin: 0 0 12px; }
.rep .rep-panel-hlava > * { margin-bottom: 4px; }
.rep .rep-panel-hlava > * + * { margin-left: 12px; }
.rep .rep-panel-hlava h2, .rep .rep-konsol-head h2 { margin: 0; font-size: 1.02rem; font-weight: 600; letter-spacing: -.01em; }
.rep .rep-panel-pod { margin: 4px 0 0; font-size: .78rem; line-height: 1.55; color: var(--muted); }
.rep .rep-panel-odkaz { margin-top: 14px; }

/* 01 · Ako vzniklo — rovnica v kartách, výsledok tmavý */
.rep .rep-konsol { background: var(--surface); border-color: var(--line); }
.rep .rep-konsol-head { align-items: flex-start; }
.rep .rep-konsol-flow { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); grid-gap: 10px; gap: 10px; }
.rep .rep-konsol-op { padding: 14px 14px 13px; background: var(--surface-2, var(--surface)); border-color: var(--line);
    transition: transform .25s ease, box-shadow .25s ease; }
.rep .rep-konsol-op:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
.rep .rep-konsol-op.is-in, .rep .rep-konsol-op.is-out { background: var(--surface-2, var(--surface)); border-color: var(--line); }
.rep .rep-konsol-l { font-size: .68rem; font-weight: 600; letter-spacing: .04em; line-height: 1.35; }
.rep .rep-konsol-znak { display: inline-block; min-width: 1em; font-size: .95rem; font-weight: 700; color: var(--faint); }
.rep .rep-konsol-op.is-in .rep-konsol-znak { color: var(--teal-700); }
.rep .rep-konsol-op.is-out .rep-konsol-znak { color: var(--warn-600); }
.rep .rep-konsol-firm { font-size: .72rem; font-weight: 500; color: var(--muted); }
.rep .rep-konsol-v { margin-top: 8px; font-size: 1.18rem; font-weight: 550; letter-spacing: -.02em; white-space: nowrap; }
.rep .rep-konsol-v .unit { font-weight: 450; color: var(--muted); }
.rep .rep-konsol-op.is-in .rep-konsol-v, .rep .rep-konsol-op.is-out .rep-konsol-v { color: var(--ink); }
.rep .rep-konsol-s { font-size: .7rem; }
.rep .rep-konsol-op.is-result { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr) auto;
    grid-gap: 2px 18px; gap: 2px 18px; align-items: center; padding: 16px 20px;
    background: var(--brand); border-color: var(--brand); box-shadow: none; color: var(--brand-ink-on); }
.rep .rep-konsol-op.is-result .rep-konsol-v { grid-column: 2; grid-row: 1 / span 2; margin: 0; font-size: 1.55rem; font-weight: 450; letter-spacing: -.035em; }
.rep .rep-konsol-op.is-result .rep-konsol-s { margin: 0; }
.rep .rep-konsol-op.is-result .rep-konsol-l,
.rep .rep-konsol-op.is-result .rep-konsol-s,
.rep .rep-konsol-op.is-result .rep-konsol-znak,
.rep .rep-konsol-op.is-result .unit { color: var(--brand-ink-on); opacity: .74; }
.rep .rep-konsol-op.is-result .rep-konsol-v { color: var(--brand-ink-on); }
.rep .rep-vysvetlenie p { margin: 8px 0 0; font-size: .8rem; line-height: 1.65; color: var(--ink-soft); max-width: 92ch; }

/* 02 · Poradie stredísk = spoločný rebríček .nx-rank (styles.css sekcia 19) */

/* 03 · Rozklad nákladu a výplatné kanály */
.rep-dvoj { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-gap: 18px; gap: 18px; margin: 0 0 18px; }
.rep-dvoj > .panel { margin: 0; min-width: 0; }
.rep .rep-prepinac { display: inline-flex; padding: 3px; border-radius: var(--r-sm); background: var(--sunken); }
.rep .rep-prepinac button { padding: 5px 11px; border: 0; border-radius: 5px; background: transparent; color: var(--muted);
    font: inherit; font-size: .74rem; font-weight: 600; cursor: pointer; }
.rep .rep-prepinac button.is-on { background: var(--raised, var(--surface)); color: var(--ink); box-shadow: var(--shadow-xs); }
.rep-stack { display: flex; height: 12px; margin: 10px 0 8px; overflow: hidden; border-radius: 99px; background: var(--sunken); }
.rep-stack i { display: block; height: 100%; transform-origin: left center; animation: nx-pas-nabeh .7s cubic-bezier(.2, .65, .3, 1) both; }
.rep-stack i + i { border-left: 2px solid var(--surface); }
.rep-stack i.is-cena, .rep-bod.is-cena { background: var(--c1); }
.rep-stack i.is-hot, .rep-bod.is-hot { background: var(--c2); }
.rep-stack i.is-fakt, .rep-bod.is-fakt { background: var(--c3); }
.rep-stack[hidden], .rep-kolac[hidden] { display: none; }
.rep-kolac { position: relative; width: 168px; height: 168px; margin: 14px auto 10px; border-radius: 50%;
    background: var(--c1);
    background: conic-gradient(var(--c1) 0 var(--k1), var(--c2) var(--k1) var(--k2), var(--c3) var(--k2) 100%);
    animation: rep-kolac-nabeh .6s cubic-bezier(.2, .65, .3, 1) both; }
.rep-kolac span { position: absolute; top: 26px; right: 26px; bottom: 26px; left: 26px; display: flex; align-items: center;
    justify-content: center; border-radius: 50%; background: var(--surface); font-size: .6rem; font-weight: 650;
    letter-spacing: .2em; text-transform: uppercase; color: var(--muted); }
.rep-riadok { display: flex; align-items: center; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid var(--line); }
.rep-riadok-l { display: flex; align-items: flex-start; flex: 1 1 auto; min-width: 0; font-size: .84rem; overflow-wrap: anywhere; }
.rep-riadok-l > span { min-width: 0; }
.rep-riadok-l small { display: block; margin-top: 2px; font-size: .7rem; color: var(--muted); }
.rep-bod { flex: 0 0 auto; width: 9px; height: 9px; margin: 5px 10px 0 0; border-radius: 3px; }
.rep-riadok-v { flex: 0 0 auto; margin-left: 12px; text-align: right; }
.rep-riadok-v strong { display: block; font-size: .9rem; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rep-riadok-v .rep-delta { margin-top: 3px; font-size: .72rem; white-space: nowrap; }
.rep-pas-l { display: flex; align-items: baseline; justify-content: space-between; margin: 16px 0 7px; font-size: .84rem; }
.rep-pas-l b { margin-left: 12px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
/* Pás kanála = pás rebríčka z jadra (.nx-rank-pas), modul dáva len farbu. */
.rep-kanal.is-hot i { background: var(--c2); }
.rep-kanal.is-fakt i { background: var(--c3); }
.rep .rep-vysvetli { margin: 16px 0 0; padding: 11px 14px; border-radius: var(--r-sm); background: var(--sunken);
    font-size: .76rem; line-height: 1.6; color: var(--ink-soft); }

/* 04 · Kam to odišlo — panel ostáva, len v rytme príbehu */
.rep .rep-kam { margin-bottom: 18px; }
.rep .rep-kam-head h2 { font-size: 1.02rem; font-weight: 600; }

/* Panely a tabuľky ako v Trezore: ľahké hlavičky, riadok pri prejdení */
.rep .rep-pane > .panel { border-radius: var(--r-lg); }
.rep .rep-tablehead h2, .rep .rep-odv-head h2, .rep .rep-labor-head h2 { font-size: 1.02rem; font-weight: 600; letter-spacing: -.01em; }
.rep .rep-table thead th { font-size: .62rem; font-weight: 600; letter-spacing: .08em; }
.rep .rep-table tbody tr > td { transition: background-color .15s ease; }
.rep .rep-table tbody tr:hover > td { background-color: var(--tonal, var(--cream-tint)); }

/* Režimy grafu stredísk ako koľajnička (ako v Trezore) */
.rep .rep-labor-modes { padding: 3px; background: var(--sunken); border-color: transparent; border-radius: var(--r-sm); box-shadow: none; }
.rep .rep-lmode { padding: 7px 13px; border-radius: 5px; font-size: .8rem; }
.rep .rep-lmode.is-on { background: var(--raised, var(--surface)); color: var(--ink); box-shadow: var(--shadow-xs); }
.rep .rep-lmode.is-on .ti { color: var(--accent); }

/* Smer nákladu na tmavých kartách — tokeny jadra (sekcia 19), sedia aj v tmavej téme */
.rep-skore .rep-up, .rep .nx-cisla > .accent .rep-up { color: var(--nx-na-tmavej-rast); }
.rep-skore .rep-down, .rep .nx-cisla > .accent .rep-down { color: var(--nx-na-tmavej-pokles); }
@keyframes rep-kolac-nabeh { from { opacity: 0; transform: rotate(-30deg) scale(.94); } }

@media (prefers-reduced-motion: reduce) {
    .rep-stack i, .rep-kolac { animation: none; }
    .rep .rep-konsol-op { transition: none; }
    .rep .rep-konsol-op:hover { transform: none; }
}

/* ==========================================================================
   Zálohy — baseline modulu (v1.222). Návrh „Pomoc v správny čas" (ZIP
   nexus-zalohy, 1. 10. 2026) prenesený do Djanga: nx-hlava → scéna → rad
   kariet s tmavou poslednou → vľavo „Teraz je na rade" + tabuľky, vpravo ako
   záloha prechádza systémom; karta prípadu s tmavou hlavičkou a pásom krokov.
   Zúžené na .zl-page — triedy zl-*/zd-* zdieľa Zamestnanci, Technické
   a import, preto sa základné pravidlá vyššie NEMENIA, len sa tu prekrývajú.
   ========================================================================== */
.zl-page .nx-hlava-akcie { align-items: center; }
.zl-page .zl-scena .nx-scena-text { max-width: 560px; }

/* --- Rozloženie: práca vľavo, vysvetlenie vpravo ---------------------------- */
/* Vedľa seba len „Teraz je na rade" a postup — tabuľky majú 7–9 stĺpcov
   a idú pod to na celú šírku (vedľa 280 px stĺpca sa akcie orezali). */
.zl-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; grid-gap: 20px; gap: 20px; margin: 0 0 20px; }
.zl-hlavny { min-width: 0; display: flex; flex-direction: column; }
/* Režim sústredenia skryje postup vpravo — stĺpec nesmie ostať prázdny. */
html.nx-sustredenie .zl-grid { grid-template-columns: minmax(0, 1fr); }
.zl-grid .zl-teraz { flex: 1 0 auto; margin: 0; display: flex; flex-direction: column; }
.zl-grid .zl-teraz-pata { margin-top: auto; }
.zl-grid .zl-teraz--pokoj { flex-direction: row; }
.zl-grid .zl-rail { display: flex; flex-direction: column; }
.zl-grid .zl-rail-karta { flex: 1 0 auto; }
.zl-suvis { margin: 0 0 20px; }
.zl-suvis p { max-width: 90ch; }
.zl-suvis p + p { margin-top: 4px; }

/* Spoločné: štítok, osoba s avatarom, suma */
.zl-stitok { display: inline-block; padding: 3px 10px; font-size: .7rem; font-weight: 600; white-space: nowrap;
    color: var(--muted); background: var(--surface-2); border: 1px solid var(--line); border-radius: 999px; }
.zl-stitok--ok { color: var(--success-dark); background: var(--success-bg); border-color: var(--success-line); }
.zl-osoba { display: flex; align-items: center; min-width: 0; }
.zl-osoba > * + * { margin-left: 12px; }
.zl-osoba .zl-ava { width: 42px; height: 42px; font-size: .78rem; }
.zl-osoba h3, .zl-osoba h1 { margin: 0; font-size: 1.05rem; font-weight: 600; letter-spacing: -.01em; color: inherit; }
.zl-osoba p { margin: 3px 0 0; font-size: .74rem; color: var(--muted); }
.zl-suma { font-size: clamp(1.5rem, 2.4vw, 1.9rem); font-weight: 500; letter-spacing: -.035em; white-space: nowrap;
    font-variant-numeric: tabular-nums; color: var(--ink); }

/* --- Teraz je na rade ------------------------------------------------------- */
.zl-teraz { margin: 0 0 20px; padding: 22px 24px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.zl-teraz.je-moje { border-color: var(--success-line); background: var(--success-bg);
    background: color-mix(in srgb, var(--success-bg) 55%, var(--surface)); }
.zl-teraz-hlava { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.zl-teraz-hlava h2 { margin: 0 12px 4px 0; font-size: .95rem; font-weight: 600; letter-spacing: -.01em; }
.zl-teraz-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-top: 16px; }
.zl-teraz-top .zl-osoba { margin: 0 16px 6px 0; }


.zl-teraz-pata { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap;
    padding-top: 16px; border-top: 1px solid var(--line); }
.zl-teraz-pata > div { margin: 0 16px 6px 0; }
.zl-teraz-pata b { display: block; font-size: .84rem; font-weight: 600; color: var(--ink); }
.zl-teraz-pata p { margin: 3px 0 0; font-size: .76rem; color: var(--muted); }
.zl-teraz--pokoj { display: flex; align-items: center; }
.zl-teraz--pokoj > .ti { flex: 0 0 auto; margin-right: 14px; font-size: 28px; color: var(--success); }
.zl-teraz--pokoj h2 { margin: 0; font-size: 1rem; font-weight: 600; }
.zl-teraz--pokoj p { margin: 4px 0 0; font-size: .8rem; color: var(--muted); }

/* --- Panely s tabuľkou: hlavička, hľadanie + stredisko, tabuľka --------------- */
.zl-panel { margin: 0 0 20px; padding: 20px 22px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.zl-panel-hlava { display: flex; align-items: flex-start; justify-content: space-between; margin: 0 0 14px; }
.zl-panel-hlava > :first-child { margin-right: 12px; }
.zl-panel-hlava h2 { margin: 0; font-size: 1rem; font-weight: 600; letter-spacing: -.01em; }
.zl-panel-hlava p { margin: 4px 0 0; font-size: .76rem; color: var(--muted); }
.zl-nastroje { display: flex; flex-wrap: wrap; margin: 0 -4px 12px; }
.zl-nastroje > * { margin: 0 4px 6px; }
.zl-page .zl-table th { font-size: .62rem; letter-spacing: .08em; }
/* Bunka akcií bola `display: flex` → prestala byť bunkou: nebrala farbu
   riadku „čaká na teba" ani zvislé zarovnanie. Tu je to opäť bunka.
   Len na širokej obrazovke — na telefóne z tabuľky robí mobil.js karty. */
.zl-page .zl-table .zl-time { white-space: nowrap; }

/* --- Pravý stĺpec ------------------------------------------------------------ */
.zl-rail { min-width: 0; }
.zl-rail > * + * { margin-top: 14px; }
.zl-rail-karta { padding: 18px 20px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.zl-rail-karta h3 { margin: 10px 0 6px; font-size: 1.05rem; font-weight: 500; letter-spacing: -.02em; }
.zl-rail-karta p { margin: 12px 0 0; font-size: .76rem; line-height: 1.7; color: var(--muted); }
.zl-rail-suma { display: block; margin: 12px 0 6px; font-size: 2rem; font-weight: 450; letter-spacing: -.04em;
    line-height: 1.1; font-variant-numeric: tabular-nums; }
.zl-riadok { display: flex; align-items: baseline; justify-content: space-between; padding: 11px 0;
    border-bottom: 1px solid var(--line); font-size: .78rem; }
.zl-riadok span { flex: 0 0 auto; margin-right: 12px; color: var(--muted); }
.zl-riadok b { font-weight: 600; text-align: right; color: var(--ink); }
.zl-riadok b .zl-nobody { margin: 0; }

/* Nastavenie modulu (admin) — zbalené dole, ako v návrhu */
.zl-page .zl-nastavenie { margin: 4px 0 0; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); }
.zl-page .zl-nastavenie > summary { border-radius: var(--r-lg); font-size: .82rem; }
.zl-page .zl-nastavenie > summary .ti { color: var(--muted); }

/* --- Dialóg novej žiadosti: rám je spoločný .nx-dlg, tu len formulár a kontrola - */
.zl-dlg-vstup, .zl-dlg-kontrola { display: flex; flex-direction: column; }
.zl-dlg-vstup > * + *, .zl-dlg-kontrola > * + * { margin-top: 12px; }
.zl-dlg-vstup[hidden], .zl-dlg-kontrola[hidden] { display: none; }
.zl-dlg .zl-period { align-self: flex-start; margin: 4px 0 0; padding: 7px 12px; }
.zl-dlg .nx-dlg-akcie { margin-top: 18px; }
.zl-dlg .nx-dlg-akcie .btn-primary, .zl-dlg .nx-dlg-akcie .btn-ghost { min-height: 42px; padding: 9px 16px; }
.zl-dlg-suma { display: block; font-size: 2.3rem; font-weight: 450; letter-spacing: -.045em; line-height: 1.1;
    font-variant-numeric: tabular-nums; }
.zl-dlg-udaje { display: grid; grid-template-columns: auto 1fr; grid-gap: 8px 18px; gap: 8px 18px; margin: 4px 0 0;
    padding: 14px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.zl-dlg-udaje dt { font-size: .66rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--faint); align-self: center; }
.zl-dlg-udaje dd { margin: 0; font-size: .88rem; font-weight: 600; color: var(--ink); }
.zl-dlg-dovod { padding: 12px 14px; font-size: .86rem; line-height: 1.55; white-space: pre-wrap; color: var(--ink-soft);
    border: 1px dashed var(--line-strong); border-radius: var(--r); }

/* --- Karta prípadu ----------------------------------------------------------- */
.zl-page .zd-back { margin-bottom: 16px; }
/* Karta prípadu = .nx-tmava (styles.css sekcia 19); modul píše rozloženie faktov. */
.zl-page .zd-hlava { margin: 0 0 20px; padding: 26px 28px; }
.zl-page .zd-hlava-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.zl-page .zd-hlava-top .zl-osoba { margin: 0 16px 6px 0; }
.zl-page .zd-hlava .zl-ava { width: 48px; height: 48px; color: var(--brand-ink-on); background: var(--nx-na-tmavej-ciara); }
.zl-page .zd-hlava h1 { font-size: 1.3rem; }
.zl-page .zd-hlava .zl-osoba p { color: var(--brand-ink-on); opacity: .68; }
.zl-page .zd-suma { margin-left: 0; font-size: clamp(2rem, 3.2vw, 2.6rem); font-weight: 450; letter-spacing: -.045em;
    color: var(--brand-ink-on); font-variant-numeric: tabular-nums; }
.zl-page .zd-hlava .zd-fakty { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-gap: 18px 20px; gap: 18px 20px; margin-top: 22px; padding-top: 18px;
    border-top: 1px solid var(--nx-na-tmavej-ciara); }
.zl-page .zd-hlava .zd-fakty > div > span, .zl-page .zd-hlava .zd-dovod > span { font-size: .6rem; font-weight: 600; letter-spacing: .14em;
    color: var(--brand-ink-on); opacity: .6; }
.zl-page .zd-hlava .zd-fakty strong { font-size: .86rem; font-weight: 500; color: var(--brand-ink-on); }
/* Úzky telefón: hodnota a dlhý stav („Čaká na prípravu hotovosti“) sa radšej
   zalomia, než by trčali z bunky (360 px: o 44 px). */
.zl-page .zd-hlava .zd-fakty strong { display: block; overflow-wrap: anywhere; }
.zl-page .zd-hlava .zd-fakty strong > .ti { margin-right: 4px; }
.zl-page .zd-hlava .zd-fakty .tag { white-space: normal; }
/* Platobný príkaz: IBAN sa zalomí a tlačidlo kopírovania nemá záporný okraj
   vpravo — ten ho tlačil o 6 px za okraj (aj na 1024 px). */
.zl-page .zd-udaje { grid-template-columns: auto minmax(0, 1fr); }
.zl-page .zd-udaje dd { min-width: 0; overflow-wrap: anywhere; }
.zl-page .zd-kopiruj { flex-wrap: wrap; margin-right: 0; }
.zl-page .zd-hlava .zd-dovod p { color: var(--brand-ink-on); opacity: .9; }
/* Štítok stavu je tiež <span> — základné `.zd-fakty span` (popis poľa) by mu
   dalo veľké písmená a drobné písmo. */
.zl-page .zd-hlava .zd-fakty .tag { font-size: .73rem; letter-spacing: 0; text-transform: none; }
.zl-page .zd-hlava .zd-fakty .tag .dot { opacity: 1; }
/* Plný grafitový štítok fázy by na grafitovej hlavičke zanikol. */
.zl-page .zd-hlava .tag--brand { color: var(--brand-ink-on); background: var(--nx-na-tmavej-ciara); }

.zd-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; grid-gap: 20px; gap: 20px; align-items: start; }
.zd-hlavny { min-width: 0; }
.zl-page .zd-akcia { margin: 0 0 20px; padding: 22px 24px; background: var(--surface); border: 1px solid var(--line);
    border-radius: var(--r-lg); }
.zl-page .zd-akcia--na-mna { border-color: var(--success-line); box-shadow: none; background: var(--success-bg);
    background: color-mix(in srgb, var(--success-bg) 55%, var(--surface)); }
.zd-akcia-nadpis { margin: 10px 0 0; font-size: 1.35rem; font-weight: 450; letter-spacing: -.03em; line-height: 1.25; }
.zl-page .zd-akcia .nx-kroky--pas { margin: 16px -4px 18px; }
.zl-page .zl-panel .zd-os { margin-top: 4px; }


/* ==========================================================================
   Rozpis hotovosti — vzhľad „A · Pracovný prehľad" (ZIP nexus-rozpis-hotovosti-A,
   6. 10. 2026). Baseline modulu: nx-hlava, scéna, rad kariet, lišta akcií sú
   spoločné (styles.css sekcia 19); tu je len to, čím sa Rozpis líši — tri kroky
   nad jedným formulárom, karty stredísk, tmavá karta pripravovanej dávky vpravo.
   Zúžené na `.rh` (koreň obrazovky), lebo `vp-*` zdieľa aj Výpočet a Trezor.
   ========================================================================== */
.rh-filtre { margin:0 0 18px; }
.rh-filtre .nx-stav { margin-left:auto; }
.rh .nx-cisla > .rh-zostava.je-dlh { background:var(--danger-bg); border-color:var(--danger-line, var(--line)); }
.rh .nx-cisla > .rh-zostava.je-dlh .stat-value { color:var(--danger); }

.rh-praca { display:grid; grid-template-columns:minmax(0, 1fr) 300px; grid-gap:20px; gap:20px; align-items:start; }
.rh-praca.je-bez-davky { grid-template-columns:minmax(0, 1fr); }
.rh-hlavny { min-width:0; }

/* Kroky = záložky (01 výber, 02 zásoba, 03 kontrola); aktívny tmavý. */
.rh-kroky { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); grid-gap:6px; gap:6px; margin:0 0 14px; }
.rh-krok { min-width:0; padding:12px 15px; text-align:left; font:inherit; font-size:.82rem; font-weight:600; line-height:1.3;
    color:var(--muted); background:var(--sunken); border:1px solid transparent; border-radius:var(--r);
    cursor:pointer; transition:background-color .2s ease, color .2s ease, border-color .2s ease; }
.rh-krok:hover { color:var(--ink); border-color:var(--line-strong); }
.rh-krok:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.rh-krok-c { display:block; margin-bottom:4px; font-size:.64rem; letter-spacing:.12em; opacity:.7; font-variant-numeric:tabular-nums; }
.rh-krok small { display:block; margin-top:3px; overflow:hidden; font-size:.7rem; font-weight:500; opacity:.8;
    white-space:nowrap; text-overflow:ellipsis; font-variant-numeric:tabular-nums; }
.rh-krok.je-aktivny { color:var(--brand-ink-on); background:var(--brand); border-color:var(--brand); }
.rh-krok.je-zle small { color:var(--danger); opacity:1; }
.rh-krok.je-aktivny.je-zle small { color:var(--nx-na-tmavej-rast); }
.rh-krok.je-stare small { font-style:italic; }

.rh-panel { margin:0 0 18px; padding:22px 24px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-xl); }
.rh-panel[hidden] { display:none; }
.rh-panel-h { display:flex; align-items:center; gap:10px; }
.rh-panel-h h2 { margin:0; font-size:1rem; font-weight:600; letter-spacing:-.015em; color:var(--ink); }
.rh-panel-c { flex:0 0 28px; display:grid; place-items:center; width:28px; height:28px; border-radius:50%;
    font-size:.68rem; font-weight:650; color:var(--muted); background:var(--sunken); font-variant-numeric:tabular-nums; }
.rh-panel-c .ti { font-size:15px; }
.rh-pod { margin:8px 0 0; max-width:90ch; font-size:.8rem; line-height:1.65; color:var(--muted); }
.rh-pod .ti { font-size:15px; vertical-align:-2px; }
.rh-panel-spodok { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px;
    margin-top:18px; padding-top:14px; border-top:1px solid var(--line); }
.rh-panel-spodok .rh-pod { margin:0; }
.rh .rh-dalej { color:var(--brand-ink-on); background:var(--brand); border-color:var(--brand); }
.rh .rh-dalej:hover { color:var(--brand-ink-on); opacity:.9; }
.rh-podnadpis { margin:24px 0 0; font-size:.88rem; font-weight:650; letter-spacing:-.01em; color:var(--ink); }
.rh-doplatky { margin:8px 0 0; padding-left:20px; }
.rh-doplatky li { margin-bottom:3px; }

/* 01 · výber: hľadanie + karty stredísk (zelená = celé vybrané, piesková = časť). */
.rh-nastroje { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:16px 0; }
.rh .rh-strediska { grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); grid-gap:10px; gap:10px; }
.rh .vp-chk.rh-str { padding:15px 16px 10px; background:var(--surface); border-radius:var(--r-lg);
    transition:border-color .2s ease, background-color .2s ease, box-shadow .2s var(--ease); }
.rh .vp-chk.rh-str:hover { border-color:var(--line-strong); box-shadow:var(--shadow-xs); }
.rh .vp-chk.rh-str.je-vybrane { background:var(--success-bg); border-color:var(--success-line, var(--line)); }
.rh .vp-chk.rh-str.je-ciastocne { background:var(--warning-bg); border-color:var(--warning-line); }
.rh .vp-chk.rh-str[hidden] { display:none; }
.rh .vp-chk.rh-str input[type=checkbox] { margin:0; width:16px; height:16px; accent-color:var(--brand); }
.rh .vp-chk.rh-str .vp-osoba input[type=checkbox] { width:14px; height:14px; }

/* 02 · zásoba: tabuľka nominálov (mriežka polia.js), prázdne nominály stlmené. */
.rh .rh-zas-t { width:100%; max-width:640px; margin-top:16px; }
.rh .rh-zas-t tr.je-nula td { color:var(--faint); }
.rh .rh-zas-t tr.je-nula .vp-num { border-style:dashed; }

/* 03 · kontrola: tri čísla výsledku nad tabuľkami. */
.rh-vysledok { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); grid-gap:10px; gap:10px; margin:16px 0 0; }
.rh-vysledok > div { padding:14px 16px; background:var(--tonal); border:1px solid var(--line); border-radius:var(--r); }
.rh-vysledok small { display:block; font-size:.66rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
.rh-vysledok strong { display:block; margin:8px 0 2px; font-size:1.35rem; font-weight:450; letter-spacing:-.03em; font-variant-numeric:tabular-nums; }
.rh-vysledok span { font-size:.72rem; color:var(--muted); }
.rh-vysledok .je-zle strong { color:var(--danger); }
.rh-vysledok .je-dobre strong { color:var(--success); }
.rh .nx-upozornenie { margin:16px 0 0; }
.rh .nx-upozornenie[hidden] { display:none; }
.rh #rh-krok-3 .vp-str-scroll { margin-top:10px; }

/* Tmavá karta pripravovanej dávky (vpravo, prilepená pri posúvaní). */
/* Žiadne stredisko pri hľadaní — prázdny stav z jadra cez celý riadok mriežky. */
.rh-q-nic { grid-column: 1 / -1; }
.rh-rail { position:sticky; top:76px; min-width:0; }
/* Karta = .nx-tmava (styles.css sekcia 19); modul píše len pás pokrytia a stav „po prepočte". */
.rh-davka { padding:24px; border-radius:var(--r-xl); }
.rh-pokrytie { height:5px; margin:18px 0 8px; overflow:hidden; border-radius:4px; background:var(--nx-na-tmavej-ciara); }
.rh-pokrytie i { display:block; max-width:100%; height:100%; border-radius:4px; background:var(--nx-na-tmavej-pokles); transition:width .35s var(--ease); }
.rh-davka .nx-tmava-riadok.je-stare b { font-weight:500; font-style:italic; opacity:.7; }
.rh-ticho { margin:14px 0 0; padding:15px 17px; font-size:.74rem; line-height:1.7; color:var(--muted);
    border:1px dashed var(--line-strong); border-radius:var(--r-lg); }

/* Lišta akcií: dátum výplaty vedľa tlačidiel. */
.rh-datum { display:inline-flex; align-items:center; gap:8px; font-size:.76rem; color:var(--muted); }

.rh-davky .vp-davky { margin-top:14px; }
.rh .rh-navrh-rada { margin:0 0 14px; }
/* Storno výdaja v karte dávky: pole na dôvod sa zúži s kartou (telefón). */
.rh .vp-davka { min-width:0; }
.rh .vp-davka-storno form { display:flex; flex-wrap:wrap; gap:8px; }
.rh .vp-davka-storno input[type="text"] { flex:1 1 180px; min-width:0; max-width:100%; }
.rh .rh-stav-t { width:100%; margin-top:12px; }

@media (prefers-reduced-motion: reduce) {
    .rh-pokrytie i, .rh .vp-chk.rh-str { transition:none; }
}

/* =============================================================================
   Denné tržby (NX-003) — len odchýlky od baseline (hlavička, scéna, karty,
   tabuľky, lišta akcií a dialógy sú spoločné diely zo sekcie 19 styles.css).
   Tržby mesiaca = vzhľad „A" (8. 10. 2026): tmavá karta PRVÁ a širšia (BASELINE §4e).
   ========================================================================== */
.tr-filtre { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 14px; }
.tr-filtre .nx-stav { margin-left: auto; }
.tr-h2 { display: flex; align-items: center; gap: 9px; margin: 0 0 12px; font-size: 1rem; letter-spacing: -.01em; }
.tr-h2 > span:first-child:not(.nx-pocet) { font-size: .7rem; font-weight: 700; color: var(--faint); letter-spacing: .08em; }
.tr-nedostupne { font-size: .9rem; font-weight: 600; color: var(--faint); letter-spacing: 0; }
.tr-zle { color: var(--danger); font-weight: 700; }
.tr-napoveda { margin: -4px 0 14px; font-size: .84rem; color: var(--muted); line-height: 1.5; max-width: 90ch; }

.tr-tok { display: flex; flex-direction: column; gap: 6px; padding: 20px 20px 16px; }
.tr-tok-ikona { font-size: 20px; color: var(--muted); }
.tr-tok h2 { margin: 6px 0 2px; font-size: .86rem; font-weight: 600; }
.tr-tok-suma { font-size: clamp(1.35rem, 1.8vw, 1.7rem); font-weight: 450; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.tr-tok p { margin: 0; font-size: .76rem; color: var(--muted); line-height: 1.6; }
.tr-tok small { margin-top: auto; padding-top: 8px; border-top: 1px solid var(--line); color: var(--faint); font-size: .72rem; }
.tr-preverit { margin: 0 0 18px; }
.tr-tabulka { margin: 0 0 24px; }

/* --- Denný report ---------------------------------------------------------- */
.tr-den-lista { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 12px; }
.tr-den-stredisko { display: inline-flex; align-items: center; gap: 7px; font-weight: 650; }
.tr-den-nav { display: inline-flex; align-items: center; gap: 4px; }
.tr-den-datum input { font-weight: 600; }
.tr-den-lista .nx-stav { margin-left: auto; }
.tr-pas { display: grid; grid-template-columns: repeat(14, minmax(0, 1fr)); gap: 4px; margin: 0 0 16px; }
.tr-pas-d { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 6px 0 7px;
    border: 1px solid var(--line); border-radius: var(--r); background: var(--surface); color: var(--ink); text-decoration: none; }
.tr-pas-d small { font-size: .62rem; color: var(--faint); text-transform: uppercase; letter-spacing: .04em; }
.tr-pas-d b { font-size: .9rem; font-weight: 650; font-variant-numeric: tabular-nums; }
.tr-pas-d i { width: 7px; height: 7px; border-radius: 50%; background: var(--line); }
.tr-pas-d.je-ok i { background: var(--success); }
.tr-pas-d.je-caka i { background: var(--warning); }
.tr-pas-d.je-zle i { background: var(--danger); }
.tr-pas-d:hover { background: var(--sunken); }
.tr-pas-d.je-vybrany { border-color: var(--brand); box-shadow: 0 0 0 1px var(--brand) inset; }
.tr-termin { margin: 0 0 12px; font-size: .82rem; }

.tr-report { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 20px; align-items: start; margin-bottom: 18px; }
.tr-blok { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-xl); padding: 18px 18px 16px; margin-bottom: 14px; }
.tr-mriezka { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.tr-mriezka--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tr-mriezka--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 14px; }
.tr-pole { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.tr-pole-n { font-size: .78rem; font-weight: 650; color: var(--ink-soft); }
.tr-pole-v { display: flex; align-items: center; gap: 6px; min-height: 46px; padding: 0 12px;
    border: 1px solid var(--pole-okraj); border-radius: var(--r); background: var(--surface); }
.tr-pole-v:focus-within { border-color: var(--brand); box-shadow: var(--ring); }
.tr-pole-v input { flex: 1 1 auto; min-width: 0; border: 0; background: transparent; padding: 10px 0;
    font: inherit; font-size: 1.05rem; font-weight: 600; color: var(--ink); text-align: right; font-variant-numeric: tabular-nums; }
.tr-pole-v input:focus { outline: none; }
.tr-pole-v input.tr-pole-text { text-align: left; }
.tr-pole-v input[readonly] { color: var(--ink-soft); }
.tr-pole-v em { font-style: normal; color: var(--faint); font-size: .85rem; }
.tr-pole small { font-size: .72rem; color: var(--muted); line-height: 1.4; }
.tr-pole.je-chyba .tr-pole-v { border-color: var(--danger); }
.tr-pole .tr-pole-chyba, .tr-gastro .tr-pole-chyba { color: var(--danger); font-weight: 600; }
.tr-pole--text { margin-top: 14px; }
.tr-pole--text textarea { width: 100%; resize: vertical; }

.tr-gastro { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--line); }
.tr-gastro-r { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, .7fr) 90px 32px;
    align-items: center; gap: 8px; margin-bottom: 8px; }
.tr-gastro-r.ma-vydavatela { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto minmax(0, .7fr) 90px 32px; }
.tr-gastro-r.tr-gastro-r--polozka { grid-template-columns: minmax(0, 2fr) 72px auto minmax(0, .8fr) 84px 90px 32px; }
.tr-gastro-r--polozka input[data-tr-pol-text] { text-align: left; font-weight: 500; }
.tr-gastro-r input, .tr-gastro-r select { min-width: 0; }
.tr-gastro-r input { text-align: right; font-weight: 600; }
.tr-gastro-r > span { color: var(--faint); }
.tr-gastro-r b { text-align: right; font-size: .86rem; font-variant-numeric: tabular-nums; }
.tr-gastro-x { width: 32px; height: 32px; border: 0; border-radius: var(--r-sm); background: transparent; color: var(--muted); cursor: pointer; }
.tr-gastro-x:hover { background: var(--sunken); color: var(--danger); }

.tr-report-rail { position: sticky; top: 16px; display: flex; flex-direction: column; gap: 12px; }
.tr-rail-cisla { margin: 0; grid-template-columns: minmax(0, 1fr); }
.tr-kpi { margin: 0; padding: 4px 16px; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface); }
.tr-kpi > div { display: flex; justify-content: space-between; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--line); font-size: .84rem; }
.tr-kpi > div:last-child { border-bottom: 0; }
.tr-kpi dt { color: var(--muted); }
.tr-kpi dd { margin: 0; font-weight: 650; font-variant-numeric: tabular-nums; }
.tr-kontroly:empty { display: none; }
.tr-kontroly p { display: flex; gap: 7px; margin: 0 0 6px; padding: 9px 12px; border-radius: var(--r); font-size: .8rem; line-height: 1.45; }
.tr-kontroly p.je-zle { background: var(--danger-bg); color: var(--danger); }
.tr-kontroly p.je-caka { background: var(--warning-bg); color: var(--warning-ink); }
.tr-historia { border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface); padding: 10px 14px; font-size: .8rem; }
.tr-historia summary { cursor: pointer; font-weight: 600; display: flex; align-items: center; gap: 6px; }
.tr-historia ol { margin: 10px 0 0; padding-left: 18px; }
.tr-historia li { margin-bottom: 7px; }
.tr-historia li small { display: block; color: var(--muted); }

/* --- Dni (matica) ----------------------------------------------------------- */
.tr-legenda { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 0 0 12px; font-size: .8rem; color: var(--muted); }
.tr-matica th, .tr-matica td { padding: 4px 2px; text-align: center; }
.tr-matica thead th { font-size: .74rem; font-weight: 650; }
.tr-matica thead th small { display: block; font-size: .6rem; color: var(--faint); text-transform: uppercase; }
.tr-matica thead th.je-vikend { color: var(--faint); }
.tr-matica tbody th { text-align: left; padding-left: 10px; white-space: nowrap; position: sticky; left: 0; background: var(--surface); }
.tr-bunka { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px;
    border-radius: var(--r-sm); font-size: .78rem; font-weight: 700; text-decoration: none; background: var(--sunken); color: var(--faint); }
.tr-bunka.je-ok { background: var(--success-bg); color: var(--success); }
.tr-bunka.je-caka { background: var(--warning-bg); color: var(--warning-ink); }
.tr-bunka.je-zle { background: var(--danger-bg); color: var(--danger); }
a.tr-bunka:hover { outline: 2px solid var(--brand); outline-offset: 1px; }

/* --- Nastavenia ------------------------------------------------------------- */
.tr-nast-tab tr.je-vypnute td { color: var(--faint); }
.tr-dni-vyber { white-space: nowrap; }
.tr-dni-vyber label { display: inline-flex; flex-direction: column; align-items: center; gap: 1px; margin-right: 4px; font-size: .68rem; color: var(--muted); }
.tr-check { display: inline-flex; align-items: center; gap: 6px; font-size: .82rem; }

.tr-test { align-items: flex-start; margin: 0 0 14px; padding: 12px 14px; border-radius: var(--r); background: var(--warning-bg); max-width: 90ch; }
.tr-test input { margin-top: 3px; }
/* --- Denné tržby v2.2: úseky, na faktúru, iné, rozpis gastro, nastavenia prevádzky --- */
.tr-pole-obal { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.tr-gastro { margin: 0; padding: 0; border: 0; }
.tr-gastro > summary { cursor: pointer; font-size: .76rem; color: var(--muted); }
.tr-gastro[open] > summary { margin-bottom: 8px; }
/* Kroky denného reportu (v2.3): polia „+“, súčet platieb v kroku, rada. */
.tr-pole-obal[hidden] { display: none; }
.tr-pole-obal--fa { grid-column: 1 / -1; }
.tr-pridaj { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.tr-pridaj[hidden] { display: none; }
/* „+ pridať“ = jadro `.btn-ghost.btn-carkovane` (audit E6) */
.tr-pridaj .btn-carkovane, .tr-fa-polozky { min-height: 40px; }
.tr-blok-suma { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; margin: 14px 0 0;
    padding-top: 12px; border-top: 1px solid var(--line); font-size: .9rem; color: var(--ink-soft); }
.tr-blok-suma b { color: var(--ink); font-variant-numeric: tabular-nums; }
.tr-blok-stav { margin-left: auto; padding: 2px 10px; border-radius: var(--r-pill); background: var(--sunken); }
.tr-blok-stav:not(.tr-ok):not(.tr-zle) { visibility: hidden; }   /* bez tržby nie je čo porovnať */
.tr-blok-stav.tr-ok, .tr-lista-bilancia b.tr-ok { color: var(--success-dark, var(--ink)); background: var(--success-bg, var(--sunken)); }
.tr-blok-stav.tr-zle, .tr-lista-bilancia b.tr-zle { color: var(--danger); background: var(--danger-bg, var(--sunken)); }
.tr-lista-bilancia b { padding: 1px 8px; border-radius: var(--r-pill); }
.tr-blok-rada { margin: 8px 0 0; padding: 8px 12px; border-radius: var(--r); background: var(--warn-100);
    font-size: .82rem; color: var(--ink); }
.tr-blok-rada[hidden] { display: none; }
/* Na faktúru: firma (názov alebo IČO, našeptávač), suma, za čo. */
.tr-fa-box { display: flex; flex-direction: column; gap: 10px; }
.tr-fa { display: grid; grid-template-columns: minmax(0, 2fr) 130px 84px minmax(0, 1.6fr) minmax(0, 1.2fr) 32px;
    align-items: end; gap: 8px; padding: 10px 12px; border-radius: var(--r); background: var(--sunken); }
.tr-fa-bezdph { grid-column: 1 / -1; font-size: .72rem; color: var(--muted); }
.tr-fa-bezdph:empty, .tr-fa-info:empty, .tr-fa > [hidden] { display: none; }
.tr-fa-mailchyba { grid-column: 1 / -1; font-size: .78rem; font-weight: 600; color: var(--danger); }
.tr-fa label.je-chyba input { border-color: var(--danger); }
.tr-fa-firma { position: relative; min-width: 0; }
.tr-fa-firma label { display: flex; flex-direction: column; gap: 4px; }
.tr-fa-firma input { font-weight: 600; }
.tr-fa label > span em { font-style: normal; font-weight: 500; color: var(--faint); }
.tr-fa label { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.tr-fa label > span { font-size: .7rem; font-weight: 650; color: var(--muted); }
.tr-fa input, .tr-fa select { min-width: 0; width: 100%; }
.tr-fa-suma input { text-align: right; font-weight: 600; }
.tr-fa-info { grid-column: 1 / -1; font-size: .72rem; color: var(--muted); }
.tr-fa-info.tr-zle { color: var(--danger); }
.tr-fa-napoveda { font-size: .72rem; color: var(--muted); line-height: 1.4; }
/* Faktúra poslaná office / vystavená — len na čítanie. */
.tr-fa-pevna { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0; padding: 10px 12px;
    border-radius: var(--r); background: var(--sunken); font-size: .84rem; }
.tr-fa-pevna > span small { display: block; color: var(--muted); font-size: .74rem; }
.tr-fa-pevna--vystavena { background: var(--success-bg, var(--sunken)); }
.tr-fa-pevna--poslana > .ti { color: var(--brand); }
.tr-fa-pevna-stav { color: var(--muted); margin-left: auto; }
.tr-fa.je-chyba { box-shadow: inset 0 0 0 2px var(--danger); }
.tr-fa-priebeh, .tr-fa-polozky { grid-column: 1 / -1; margin-bottom: 0; }
.tr-fa-polozky { justify-self: start; }
.tr-fa-akcia { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.tr-fa-akcia small { font-size: .74rem; color: var(--muted); }
.tr-ine-poznamka[hidden] { display: none; }
/* Obrazovka Faktúry (office). */
.tr-fakt { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; margin: 0 0 14px;
    border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--surface); }
.tr-fakt-hlava { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 8px 16px; }
.tr-fakt-hlava h3 { margin: 2px 0 4px; font-size: 1.05rem; }
.tr-fakt-udaje { margin: 0; font-size: .8rem; color: var(--muted); user-select: all; }
.tr-fakt-suma { font-size: 1.25rem; font-variant-numeric: tabular-nums; text-align: right; }
.tr-fakt-suma small { display: block; font-size: .78rem; font-weight: 500; color: var(--muted); }
.tr-fakt-akcie { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.tr-fakt-akcie .tr-input { width: 220px; }
.tr-blok--poznamka .tr-pole--text { margin-top: 0; }
.tr-checky { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0 0 14px; }
.tr-input { min-width: 0; }
.tr-input--kratky { width: 90px; }
.tr-kpi--plocha { border: 0; padding: 0; }
.tr-pole--siroke { grid-column: span 2; }
/* Tím — mesačná dochádzka strediska (NX-004): mriežka ako Excel. */
.tr-tim-mesiac { min-width: 130px; text-align: center; }
.tr-tim-obal { max-width: 100%; overflow-x: auto; }
.tr-tim { --cell-x: 0px; border-collapse: separate; border-spacing: 0; font-size: .8rem; }
.tr-tim th, .tr-tim td { padding: 0; white-space: nowrap; }
.tr-tim thead th { position: sticky; top: 0; z-index: 2; background: var(--surface); padding: 6px 4px;
    font-size: .72rem; text-align: center; }
.tr-tim-d small { display: block; color: var(--muted); font-weight: 500; }
.tr-tim-d.je-vikend, .tr-tim-b.je-vikend { background: var(--sunken); }
.tr-tim-d.je-sviatok { color: var(--danger); }
.tr-tim-meno { position: sticky; left: 0; z-index: 1; background: var(--surface); text-align: left;
    min-width: 190px; max-width: 230px; padding: 4px 8px !important; border-right: 1px solid var(--line); }
.tr-tim thead .tr-tim-meno { z-index: 3; }
.tr-tim tbody .tr-tim-meno { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.tr-tim-kto { display: flex; flex-direction: column; min-width: 0; overflow: hidden; }
.tr-tim-kto b { overflow: hidden; text-overflow: ellipsis; }
.tr-tim-meno small { display: block; color: var(--muted); font-size: .7rem; }
.tr-tim-b { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); }
.tr-tim-b input::placeholder { color: var(--faint); font-weight: 500; opacity: 1; }
.tr-tim-b.je-dochadzka input::placeholder { color: var(--teal-700, var(--ink-soft)); font-weight: 650; }
.tr-tim-b.je-kod { background: var(--warn-100); }
.tr-tim-b.je-dochadzka { background: var(--teal-50); }
.tr-tim { user-select: none; }
.tr-tim-b.je-vybrane { background: var(--sunken); box-shadow: inset 0 0 0 2px var(--brand); }
.tr-tim td.num { padding: 4px 8px; }
.tr-tim-kody span { display: inline-block; margin: 0 4px 0 0; padding: 1px 6px; border-radius: var(--r-xs);
    background: var(--sunken); font-size: .72rem; }
.tr-tim-pole { width: 4.2rem; text-align: right; }
.tr-tim tfoot td, .tr-tim tfoot th { border-top: 2px solid var(--line); padding: 6px 4px; font-weight: 650; }
.tr-tim-crew { text-align: center; }
.tr-tim-pridat { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: center; max-width: 100%; }
.tr-tim-pridat select { flex: 1 1 auto; min-width: 0; max-width: 260px; }
.tr-tim-rytmus { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }

/* --- Zmluvy — vzhľad „A · Prehľad záväzkov" (ZIP nexus-zmluvy-A, 7. 10. 2026)
   Spoločné diely sú v styles.css (nx-hlava, scéna, rad kariet .nx-cisla,
   .nx-pocet, .seg); tu je len to, čím sa register líši.
   Strážca: zmluvy.tests_vzhlad. */
.zm-hlava-form { margin: 0; }
/* Detail a formulár nesú v nadpise dlhý názov zmluvy — o stupeň menší. */
.zm-hlava--zaznam .nx-hlava-pod { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }

/* Rad kariet: tmavá „Aktívne zmluvy" je prvá a o kúsok širšia */
.zm-cisla { grid-template-columns: minmax(0, 1.15fr) repeat(3, minmax(0, 1fr)); }
.zm-cisla--5 { grid-template-columns: minmax(0, 1.15fr) repeat(4, minmax(0, 1fr)); }
.zm .zm-cisla > * { padding: 20px 20px 18px; }
.zm .zm-cisla .stat-value { margin: 10px 0 4px; font-size: clamp(1.6rem, 2.3vw, 2.1rem); font-weight: 450; letter-spacing: -.045em; }
.zm .zm-cisla .stat-sub { font-size: .74rem; }

/* Pás „čo si žiada pozornosť": číslo, čo sa deje, kam kliknúť */
.zm-priority { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-gap: 12px; gap: 12px; margin: 0 0 24px; }

/* Register = jeden panel: počet vpravo, hľadanie + stav + typ v prvom riadku,
   ostatné filtre v „Ďalších filtroch". Selektor prebije `.zm-filters--clm .nx-hladaj`. */
.zm-card-pocet { margin-left: auto; font-size: .78rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.zm-register .zm-filters { margin-bottom: 16px; }
.zm-filter-row--hlavny .nx-hladaj { flex: 1 1 280px; width: auto; }
.zm-filter-row--hlavny select { flex: 0 1 200px; min-width: 140px; }
.zm-dalsie > summary { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; padding: 4px 0;
    list-style: none; cursor: pointer; font-size: .8rem; font-weight: 600; color: var(--ink-soft); }
.zm-dalsie > summary::-webkit-details-marker { display: none; }
.zm-dalsie > summary:hover { color: var(--ink); }
.zm-dalsie > summary .ti { font-size: 16px; color: var(--muted); }
.zm-dalsie-pod { font-weight: 500; color: var(--faint); }
.zm-dalsie[open] > summary { margin-bottom: 8px; }
.zm-dalsie > .zm-filter-row + .zm-filter-row, .zm-dalsie > .zm-znacky-filter { margin-top: 8px; }

/* Tabuľka registra: protistrana pod názvom, stredisko nad firmou (návrh A) */
.zm-pod { display: block; margin-top: 3px; font-size: .76rem; color: var(--muted); }
.zm-riadok-tagy { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.zm-riadok-tagy .zm-znacka--riadok { margin-left: 0; }
.zm-typ { font-size: .8rem; color: var(--ink-soft); }
.zm-firma--cela { font-weight: 500; }
.zm-kod { font-size: .7rem; letter-spacing: .06em; }
.zm-th-o { color: var(--faint); }
.zm-riadok { display: block; }

/* Viacriadkové bunky (názov + protistrana, rozpis sumy) nesmú lepiť na čiaru —
   jadro tabuľky dáva len výšku riadka. Kompaktná hustota zostane tesnejšia. */
.zm-table.tbl tbody td { padding-top: 10px; padding-bottom: 10px; }
:root[data-density="compact"] .zm-table.tbl tbody td { padding-top: 5px; padding-bottom: 5px; }
/* Vysvetlivka pod nadpisom panela (Inbox, Preskočené, Odosielatelia) */
.zm-panel-pod { margin: -6px 0 14px; max-width: 110ch; font-size: .78rem; line-height: 1.7; color: var(--muted); }

/* Sken pri dodatku (detail): na dotyk min. 40 px — bol to 19 px riadok. */
.zm-dod-sken { display: inline-flex; gap: 4px; align-items: center; }

/* Náhľad PDF skenu v návrhu z Inboxu */
.zm-sken-nahlad { display: block; width: 100%; height: 70vh; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface-2); }

/* Inbox: stavy návrhov ako segmentový prepínač */
.zm-seg { margin: 0 0 14px; }

/* --- CLM štandard 10/2026: evidenčné číslo, termíny, úpravy na mieste --- */
.zm-ev { font-size: .78rem; font-weight: 600; letter-spacing: .02em; color: var(--brand-ink); white-space: nowrap; }
.zm-dt { font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; color: var(--faint); font-weight: 600; }
.zm-inline-form { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; margin-top: 10px; }
.zm-inline-form .zm-fld { flex: 1 1 140px; margin: 0; }
.zm-inline-form .btn-ghost { flex: 0 0 auto; }
.zm-riadok-dnes td { background: var(--brand-50); }
.zm-dod-uprava { margin-top: 8px; }
.zm-dod-uprava[open] { padding: 10px; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface-2); }
.zm-dod-akcie { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; justify-content: space-between; margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--line); }
.zm-dod-akcie .zm-inline-form { margin-top: 0; flex: 1 1 320px; }
.zm-terminy { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.zm-terminy li { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: flex-start; padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--r-sm); font-size: .85rem; }
.zm-terminy li > .ti { margin-top: 2px; color: var(--muted); }
.zm-terminy li > span:not(.zm-termin-akcie) { flex: 1 1 0; min-width: 0; }
.zm-terminy li.is-blizko { border-color: var(--warn-200); background: var(--warn-50); }
.zm-terminy li.is-blizko > .ti { color: var(--warn-800); }
.zm-terminy li.is-po { border-color: var(--danger); background: var(--danger-bg); }
.zm-terminy li.is-po > .ti { color: var(--danger-dark); }
.zm-terminy li.is-splneny { opacity: .6; }
.zm-terminy--auto { margin-bottom: 8px; }
.zm-terminy--auto li { background: var(--surface-2); border-style: dashed; }
.zm-termin-akcie { display: flex; gap: 4px; flex: 1 0 100%; justify-content: flex-end; }
.zm-termin-akcie form { margin: 0; }
.zm-terminy--navrh { margin: 6px 0 12px; }
.zm-sub--soft { color: var(--ink-soft); }
.zm-sub--odsek { margin-top: 6px; }
.zm-obrat .zm-table { margin-top: 8px; }
.zm-obrat--splatky { background: var(--brand-50); border-color: var(--brand-200); }
.zm-obrat--splatky h4 { color: var(--brand-ink); }
.zm-blok { margin-top: 12px; }
.zm-blok .zm-sub { margin: 4px 0 0; color: var(--ink-soft); }
.zm-rozbal { margin-top: 12px; }
.zm-rozbal > summary { display: inline-flex; }
.zm-rozbal-form { margin-top: 10px; }
.zm-form-tesny { margin: 0; }


/* Prehľad registra (12. 10. 2026): čo treba riešiť + karty prevádzok.
   Štítky stavu = spoločné .tag--*, mriežka = .nx-karty/.nx-span-4. */
.zm-pohlad { margin-left: 12px; }
.zm-ulohy-zoznam { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.zm-uloha { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto auto; align-items: center; gap: 12px;
    padding: 8px 12px; border-radius: var(--r); background: var(--sunken); border-left: 3px solid var(--line-strong); }
.zm-uloha--chyba { border-left-color: var(--danger); background: var(--danger-bg); }
.zm-uloha--pozor { border-left-color: var(--warning); background: var(--warning-bg); }
.zm-uloha-kedy { display: flex; flex-direction: column; line-height: 1.15; font-variant-numeric: tabular-nums; }
.zm-uloha-kedy small { font-size: .7rem; color: var(--muted); }
.zm-uloha-text { color: var(--ink); font-weight: 600; font-size: .86rem; }
.zm-uloha-kde { font-size: .74rem; color: var(--muted); white-space: nowrap; }
.zm-uloha-akcia { margin: 0; }
.zm-zavrete { margin-top: 12px; font-size: .8rem; }
.zm-zavrete > summary { cursor: pointer; color: var(--muted); font-weight: 600; }
.zm-zavrete ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 4px; }
.zm-zavrete li { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 12px;
    padding: 6px 12px; border-radius: var(--r); background: var(--sunken); color: var(--ink-soft); }
.zm-sekcia-head { margin: 26px 0 12px; }
.zm-sekcia-head h2 { margin: 0; font-size: 1.05rem; }
.zm-sekcia-head p, .zm-card-pod { margin: 3px 0 10px; font-size: .8rem; color: var(--muted); max-width: 80ch; }
.zm-prev { border-top: 3px solid var(--success); display: flex; flex-direction: column; gap: 8px; }
.zm-prev--pozor { border-top-color: var(--warning); }
.zm-prev--chyba { border-top-color: var(--danger); }
.zm-prev-hlava { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.zm-prev-hlava h3 { margin: 0; font-size: 1rem; letter-spacing: -.01em; }
.zm-prev-hlava small { color: var(--muted); font-size: .74rem; }
.zm-prev-zmluvy, .zm-prev-dovody, .zm-firemne { list-style: none; margin: 0; padding: 0; }
.zm-prev-zmluvy li { display: flex; flex-direction: column; padding: 6px 0; border-bottom: 1px solid var(--line-soft); font-size: .84rem; }
.zm-prev-zmluvy a { color: var(--ink); font-weight: 600; }
.zm-prev-strana, .zm-prev-meta { font-size: .76rem; color: var(--muted); }
.zm-prev-chyba { color: var(--danger); font-weight: 600; font-size: .84rem; }
.zm-prev-ostatne { margin: 0; font-size: .76rem; color: var(--muted); }
.zm-prev-ostatne a { color: var(--ink-soft); }
.zm-prev-cisla { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 0; font-size: .78rem; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.zm-prev-cisla small { color: var(--faint); }
.zm-prev-dovody li { font-size: .76rem; line-height: 1.4; color: var(--ink-soft); padding-left: 12px; position: relative; }
.zm-prev-dovody li::before { content: "•"; position: absolute; left: 0; color: var(--danger); }
.zm-firemne li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; padding: 8px 0; border-bottom: 1px solid var(--line-soft); font-size: .84rem; }
.zm-firemne a { color: var(--ink); font-weight: 600; }
.zm-firemne-meta { margin-left: auto; font-size: .78rem; color: var(--ink-soft); font-variant-numeric: tabular-nums; }

/* ==========================================================================
   Funkčné minimum Chromium 83 (Edge 83 na prevádzke) — ARCHITEKTURA §2.
   Flex `gap` vie Chromium až od 84 a cez @supports sa zistiť nedá; prehliadač
   bez `aspect-ratio` (88) dostane náhradné okraje na formulároch, menovkách
   a tlačidlách modulov (ako na konci styles.css). Nový flex `gap` na
   kritickom diele modulu = riadok sem (brána `stary-prehliadac`).
   ========================================================================== */
@supports not (aspect-ratio: 1 / 1) {
    .nx-dlg .dz-form > * + * { margin-top: 12px; }
    .mz-selectors label > * + * { margin-left: 8px; }
    .rep-akcia form > * + * { margin-left: 5px; }
    .ac-matica form > * + *, .ac-vratit > * + * { margin-left: 6px; }
    .rbac-form .checks label > * + * { margin-left: 6px; }
    .task-ohlas-form label > * + * { margin-left: 8px; }
    .rp-pin-form label > * + * { margin-top: 4px; }
    .tz-prevzat label > * + * { margin-top: 4px; }
    .tz-filtre label > * + * { margin-top: 3px; }
    .tk-akcie form > * + * { margin-left: 10px; }
    .tk-zrus form > * + * { margin-left: 6px; }
    .tz-firma-vyber label > * + * { margin-left: 8px; }
    .rh .vp-davka-storno form > * + * { margin-left: 8px; }
    .tr-dni-vyber label > * + * { margin-top: 1px; }
    .tr-fa-firma label > * + *, .tr-fa label > * + * { margin-top: 4px; }
    .tr-tim tbody .tr-tim-meno > * + * { margin-left: 6px; }
}

/* ==========================================================================
   Banka (úvery) — odsadenie textu v paneli bez tabuľky (predtým `style=""`, D-018)
   ========================================================================== */
.bk-bez-zapisov { padding:14px 17px; }
.bk-pata { padding:0 17px 10px; }
/* Výber zmluvy s dlhými názvami roztiahol detail linky o 567 px (tablet, meranie 3. 11. 2026). */
.bk-form-grid select { max-width: 100%; }

/* === Firemné dokumenty (NX-005) — len odchýlky; karty, štítky, pruhy, hľadanie, upozornenia a dialógy sú spoločné. */
.dk-hladaj { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 14px; }
.dk-hladaj-pole { --pole-h: 52px; flex: 1 1 320px; font-size: 1.05rem; }
.dk-odpoved-text { white-space: pre-line; color: var(--ink); font-size: .92rem; }
.dk-nadpis { display: flex; align-items: center; gap: 8px; margin: 22px 0 10px; font-size: .95rem; font-weight: 660; }
.dk-zlozka { color: inherit; text-decoration: none; } .dk-zlozka h2 .ti { color: var(--brand); }
.dk-zlozka-pata, .dk-dokument-hlava, .dk-dokument-akcie, .dk-sprava-akcie { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.dk-vysledky, .dk-dokumenty { list-style: none; margin: 0; padding: 0; }
.dk-vysledky > li { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 14px 17px; border-top: 1px solid var(--line); }
.dk-vysledok-nazov, .dk-dokument-nazov { display: inline-flex; align-items: center; min-height: 44px; font-weight: 650; font-size: 1rem; color: var(--ink); }
.dk-uryvok { flex: 1 1 100%; margin: 0; font-size: .86rem; line-height: 1.55; color: var(--ink-soft); }
.dk-dokument { padding: 16px 18px; margin-bottom: 10px; background: var(--surface); border: 1px solid var(--line);
    border-left: 4px solid var(--success); border-radius: var(--r-lg); } .dk-dokument.je-zle { border-left-color: var(--danger); } .dk-dokument.je-caka { border-left-color: var(--warning); }
.dk-skratka { margin: 10px 0; padding-left: 20px; font-size: .92rem; line-height: 1.6; }
.dk-stav strong { font-size: 1.1rem; }
.dk-nahlad iframe { display: block; width: 100%; height: 72vh; border: 0; border-radius: var(--r); background: var(--sunken); }
@media (max-width: 760px) { .dk-nahlad { display: none; } }
.dk-pata { margin: 0; padding: 10px 17px; } .dk-zhrnutie-uprava > form { padding: 0 16px 16px; }
