/* ============================================================
   CORE — MAGNAPRO design systém (revize 18. 8. 2026 — směr
   „Materiál a hloubka“): navy #343E5B + tyrkys #55D0D4 identita.
   Písmo: Manrope Variable (samohostované), JetBrains Mono pro
   čísla a kódy. Zásady: tónované plátno, karty jako vyvýšené
   vrstvy s měkkou vícevrstvou hloubkou MÍSTO okrajů, plovoucí
   tmavý sidebar, aurora gradient v hero. Tyrkys jen pro aktivní/
   akcentní stavy a fokus.
   ============================================================ */

@font-face {
  font-family: "Montserrat";
  src: url("fonty/MontserratVariable.woff2") format("woff2-variations");
  font-weight: 400 800;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Inter";
  src: url("fonty/InterVariable.woff2") format("woff2-variations");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Manrope";
  src: url("fonty/manrope-latin-wght-normal.woff2") format("woff2-variations");
  font-weight: 200 800; font-style: normal; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Manrope";
  src: url("fonty/manrope-latin-ext-wght-normal.woff2") format("woff2-variations");
  font-weight: 200 800; font-style: normal; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "JetBrains Mono";
  src: url("fonty/jetbrains-mono-latin-wght-normal.woff2") format("woff2-variations");
  font-weight: 100 800; font-style: normal; font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "JetBrains Mono";
  src: url("fonty/jetbrains-mono-latin-ext-wght-normal.woff2") format("woff2-variations");
  font-weight: 100 800; font-style: normal; font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  /* — typografie výpisů (30. 8., ZÁVAZNÉ pro seznamy/stromy/panely):
     jednotná, kompaktní a dobře čitelná velikost napříč portálem — */
  --pismo-seznam: .84rem;      /* řádky výpisů, stromů a bočních panelů */
  --pismo-drobne: .74rem;      /* meta údaje, počty, druhé řádky */
  /* ============ TOKENY MOTIVŮ (revize 1. 10. 2026 — „měkké plochy, hairline, vrstvy“) ============
     Sémantika je ve všech třech motivech stejná, mění se jen hodnoty:
       plátno    --plocha          pozadí stránky (jemně tónované — nikdy čistě bílé ani čistě černé)
       vrstva 1  --karta           karty, tabulky, panely; hairline obrys --okraj-karty
       vrstva 2  --plocha-jemna    vnořené plochy, hover řádků, hlavičky tabulek
       vrstva 3  --vrstva          plovoucí prvky (dropdown, popover, tooltip) — vždy o stupeň světlejší
       pole      --pole            vstupní pole (nejvýraznější plocha = afordance zápisu)
       linky     --okraj-jemny < --okraj < --okraj-silny    (hairline → výrazná)
       text      --inkoust (primární) > --inkoust-2 (sekundární) > --seda (terciární, meta, popisky)
       akcent    --tyrkys (značka) · --tyrkys-tmavy (akcent s kontrastem jako text/ikona) ·
                 --akcent-pozadi (plný nádech) · --akcent-jemny (průsvitný nádech) ·
                 --akcent-okraj (linka) · --fokus-kruh (focus ring polí a tlačítek)
       chrom     --pas-1/--pas-2 (tmavý pás sidebaru, hera, hlavy chatu) + --chrom-* (text, linky,
                 hover, aktivní položka, patička a pole UVNITŘ tmavého pásu — platí i ve světlém motivu)
       překryv   --prekryv (backdrop modalů a dropdownů)
     Pravidlo: moduly NIKDY nepíší barvy natvrdo — používají tokeny (hlídá core.tests_motivy). */
  --navy: #3A405A;                  /* firemní barva (6. 9. 2026) */
  --navy-tmava: #2C3146;
  --navy-svetla: #474E6B;           /* horní konec přechodu primárního tlačítka */
  --pas-1: #1B2137; --pas-2: #13182A;
  --aurora-1: rgba(85, 208, 212, .30); --aurora-2: rgba(76, 110, 245, .14);
  --tyrkys: #55D0D4;
  --tyrkys-tmavy: #1B6F75;          /* ztlumený akcent: 5,7 : 1 na kartě (text/ikona) */
  --akcent-text: #FFFFFF;           /* text NA akcentní výplni (tyrkys-tmavy) */
  --text-na-vyplni: #FFFFFF;        /* text NA sytě barevné výplni (chyba, šedá, navy) */
  --seda: #66718A;                  /* terciární text (meta, popisky) — 4,9 : 1 na bílé */
  --inkoust: #1E2537;               /* primární text — tmavá navy, ne čistá čerň (menší únava) */
  --inkoust-2: #3F4A61;             /* sekundární text (podtituly, druhé řádky) */
  --plocha: #F3F5F9;                /* plátno — chladně tónované, karty na něm vystupují hairline linkou */
  --karta: #FFFFFF;
  --okraj-karty: #E3E8EF;           /* hairline karet a tabulek (dřív transparent — jen stín) */
  --okraj: #D8DEE8;
  --okraj-jemny: #EAEEF4;
  --okraj-silny: #B9C3D3;
  --plocha-jemna: #F6F8FB;
  --vrstva: #FFFFFF;
  --pole: #FFFFFF;
  --ok: #287049;
  /* GLOBÁLNÍ PALETA STAVŮ dokladů/dokumentů (rozhodnutí uživatele 12. 9. 2026, ZÁVAZNÉ pro všechny moduly):
     Nová modrá · K potvrzení převzetí oranžová · V přípravě žlutá · V zakázce zelená · Odložená šedá ·
     Stornovaná červená · Dokončená firemní navy. Použití: data-stav-barva="<klíč>" na <tr class="radek-stav">,
     <span class="stitek stav-stitek"> nebo .legenda-stavu-polozka — prvek dostane --stav-barva. */
  --stav-nova: #7A98C2;            /* 12. 9. laděno 4× (#3B7DD8 → #5FA0EA → #7DB4F0 → #94B6DB → #7A98C2): tlumená šedomodrá, „svítí, tahá za oči“ — nových je většina řádků */
  --stav-k-potvrzeni: #E8912D;
  --stav-priprava: #D6B300;
  --stav-zakazka: #3E9A6E;
  --stav-odlozena: #9AA3B8;
  --stav-storno: #C75B5B;
  --stav-dokoncena: #3a405a;
  --stav-spam: color-mix(in srgb, var(--stav-storno) 45%, var(--stav-odlozena));   /* 1. 10. 2026: tlumená, „odklizeno“ */
  --chyba: #B84141;
  --varovani: #8A5D10; --varovani-pozadi: #F7EFDE;
  --varovani-okraj: #E8D9B8;
  --ok-pozadi: #E4F2EA; --ok-text: #2F7A54; --ok-okraj: #CBE5D6;
  --chyba-pozadi: #F9ECEC; --chyba-okraj: #EDD3D3;
  --akcent-pozadi: #E6F5F6;
  --akcent-jemny: rgba(85, 208, 212, .14);
  --akcent-okraj: rgba(27, 111, 117, .40);
  --fokus-kruh: 0 0 0 3px rgba(85, 208, 212, .25);
  --prekryv: rgba(20, 26, 45, .45);
  --odkaz: var(--navy); --navy-text: var(--navy);
  /* — doplňkové barvy a aliasy (21. 9. 2026) — moduly je používaly jako
     var(--akcent) / var(--text) / var(--oranzova, #…) BEZ definice; teď jsou
     tokeny a mění se s motivem. --pozor = žluto-oranžové upozornění. */
  --akcent: var(--tyrkys-tmavy); --text: var(--inkoust);
  --cervena: var(--chyba); --oranzova: #A8641A; --pozor: var(--varovani);
  --ai: #5B4BD6;                    /* AI prvky (štítky, avatary) */
  --kod-pozadi: var(--navy-tmava); --kod-text: #E7EBF4;   /* bloky kódu (.md pre) */
  /* — papír: podklad fotek produktů a stránek dokumentů (Správce souborů v2, 4. 10. 2026) —
     fotky výrobců a PDF jsou bílé, v tmavém motivu se jen mírně ztlumí, aby neoslňovaly */
  --papir: #FFFFFF; --papir-2: #DFE4EC; --papir-inkoust: #1E2537; --papir-okraj: #E3E8EF;
  /* — chrom: barvy UVNITŘ tmavého pásu (sidebar, hero, hlava chatu) — */
  --chrom-text: #B9C2D8;            /* běžná položka menu */
  --chrom-text-jasny: #FFFFFF;      /* hover / aktivní */
  --chrom-text-tlumeny: #8E9AB8;    /* popisky skupin, neaktivní, meta */
  --chrom-linka: rgba(255, 255, 255, .09);
  --chrom-hover: var(--chrom-hover);
  --chrom-aktivni: rgba(85, 208, 212, .13);
  --chrom-paticka: #111629;
  --chrom-pole: var(--chrom-pole);
  --chrom-okraj: var(--chrom-hover);
  color-scheme: light;
  --pismo: "Manrope", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: "JetBrains Mono", ui-monospace, "Cascadia Code", Menlo, monospace;
  /* — hloubka a tvar: hairline obrys + měkký, navy tónovaný stín (vzor „level 1 / level 2“) — */
  --stin-1: 0 1px 2px rgba(26, 33, 56, .04), 0 1px 3px rgba(26, 33, 56, .06);
  --stin-2: 0 2px 6px rgba(26, 33, 56, .05), 0 8px 24px rgba(26, 33, 56, .09);
  --stin-vyrazny: 0 16px 44px rgba(20, 26, 45, .28);
  --stin-chrom: 0 4px 12px rgba(18, 23, 43, .16), 0 24px 48px -20px rgba(18, 23, 43, .45);   /* plovoucí sidebar / hero pás */
  --r-karta: 16px;
  --r-prvek: 10px;
  /* — ŠKÁLA ODSAZENÍ (2. 9. 2026, ZÁVAZNÁ pro další vývoj) —
     jednotný vertikální rytmus; nové komponenty používají tyto tokeny
     místo náhodných hodnot. xxs mezi těsně souvisejícím, s = odstavce,
     m = nadpis↔obsah / spodek karty, l = mezi sekcemi, xl = velké bloky. */
  --mezera-xxs: .2rem;
  --mezera-xs: .35rem;
  --mezera-s: .55rem;
  --mezera-m: .85rem;
  --mezera-l: 1.25rem;
  --mezera-xl: 1.9rem;
  /* ZÁVAZNÉ: vodorovné odsazení VŠECH pásem modalu (hlava, tělo, patička)
     i obsahu v nich — nadpis, text a akce tak stojí na jedné svislici.
     Modal nikdy nesmí mít vlastní padding/margin do stran. */
  --modal-okraj: 1.2rem;
}

/* ---- tmavé motivy: přepisují jen tokeny; navy/tyrkys identita zůstává.
   „tmavy“ = midnight-blue (navy podtón), „cerny“ = midnight-black (neutrální
   černá — sdílí všechny tmavé tokeny, přepisuje povrchy, chrom a akcent). ---- */
html[data-theme="tmavy"], html[data-theme="cerny"] {
  color-scheme: dark;
  --seda: #95A0BC;
  --inkoust: #E2E7F2;
  --inkoust-2: #B7C0D6;
  --plocha: #151A28;
  --karta: #1C2232;
  --okraj-karty: #262E45;
  --okraj: #2C3550;
  --okraj-jemny: #232B41;
  --okraj-silny: #3C4668;
  --plocha-jemna: #222941;
  --vrstva: #27304A;
  --pole: #141927;
  --tyrkys-tmavy: #5FC9CE;          /* akcent musí svítit na tmavé ploše */
  --akcent-text: #12172B;           /* na světlé cyan výplni musí být text TMAVÝ */
  --ok: #62BE95;
  --chyba: #E79999;
  --text-na-vyplni: #14181F;        /* na světlé výplni (chyba/šedá) musí být text TMAVÝ */
  --oranzova: #E3A860; --ai: #A99BFF;
  --kod-pozadi: #10141F;
  --papir: #E9EDF4; --papir-2: #B9C2D2; --papir-inkoust: #1E2537; --papir-okraj: #C6CEDB;
  --stav-dokoncena: #8A93B5;        /* firemní #3a405a na tmavé ploše splývá */
  --varovani: #D9AC55; --varovani-pozadi: #33290F; --varovani-okraj: #574A22;
  --ok-pozadi: #16301F; --ok-text: #82CBA6; --ok-okraj: #275239;
  --chyba-pozadi: #33191B; --chyba-okraj: #5C3639;
  --akcent-pozadi: #12333A;
  --akcent-jemny: rgba(95, 201, 206, .14);
  --akcent-okraj: rgba(95, 201, 206, .45);
  --fokus-kruh: 0 0 0 3px rgba(95, 201, 206, .28);
  --prekryv: rgba(5, 8, 18, .60);
  --odkaz: #A9B6DC; --navy-text: #C7D0E8;
  --chrom-text: #B3BDD6; --chrom-text-jasny: #FFFFFF; --chrom-text-tlumeny: #8A96B6;
  --chrom-linka: var(--chrom-pole); --chrom-hover: var(--chrom-pole);
  --chrom-aktivni: rgba(85, 208, 212, .14); --chrom-paticka: #101528;
  --chrom-pole: var(--chrom-pole); --chrom-okraj: var(--chrom-hover);
  --stin-1: 0 1px 2px rgba(0, 0, 0, .35), 0 1px 6px rgba(0, 0, 0, .25);
  --stin-2: 0 4px 14px rgba(0, 0, 0, .45);
  --stin-vyrazny: 0 18px 50px rgba(0, 0, 0, .60);
  --stin-chrom: 0 4px 12px rgba(0, 0, 0, .35), 0 24px 48px -20px rgba(0, 0, 0, .6);
}

/* midnight-black (revize 1. 10. 2026, vzor „čtyřstupňový žebřík ploch“): plátno < karta <
   vnořená plocha < plovoucí vrstva, všechno neutrální a téměř černé, oddělené hairline
   linkami s nízkým kontrastem, NE stínem. Text není čistě bílý, akcent je jediný a
   ztlumený — žádný ostrý černo-bílý kontrast. */
html[data-theme="cerny"] {
  --plocha: #0B0C0F;
  --karta: #121316;
  --okraj-karty: #1F2126;
  --okraj: #26282E;
  --okraj-jemny: #1C1E23;
  --okraj-silny: #363940;
  --plocha-jemna: #17181C;
  --vrstva: #1C1E23;
  --pole: #141518;
  --inkoust: #E4E6EA;
  --inkoust-2: #AEB3BC;
  --seda: #878C96;
  --odkaz: #AEB9CE; --navy-text: #C5CBD6;
  --tyrkys-tmavy: #5EC3C8;
  --akcent-text: #0B0C0F;
  --text-na-vyplni: #0B0C0F;
  --akcent-pozadi: #10272A;
  --akcent-jemny: rgba(94, 195, 200, .12);
  --akcent-okraj: rgba(94, 195, 200, .40);
  --fokus-kruh: 0 0 0 3px rgba(94, 195, 200, .25);
  --prekryv: rgba(0, 0, 0, .62);
  --ok: #62BE95; --ok-pozadi: #12281C; --ok-text: #8FD3AF; --ok-okraj: #24503A;
  --varovani: #DCAF5C; --varovani-pozadi: #2B2410; --varovani-okraj: #4E4222;
  --chyba: #E79191; --chyba-pozadi: #2B1618; --chyba-okraj: #533436;
  --oranzova: #E3A860; --ai: #A99BFF;
  --kod-pozadi: #0A0C11; --kod-text: #E3E5EA;
  /* firemní navy by v neutrální černé zůstala jediným modrým prvkem (primární
     tlačítka, aktivní záložky, vybraný den) → neutrální břidlice téhož jasu */
  --navy: #33373F; --navy-tmava: #26292F; --navy-svetla: #3F444D;
  --pas-1: #121316; --pas-2: #0E0F12;
  --aurora-1: rgba(94, 195, 200, .12); --aurora-2: rgba(255, 255, 255, .03);
  --chrom-text: #B9BDC5; --chrom-text-jasny: #F1F2F4; --chrom-text-tlumeny: #7C8189;
  --chrom-linka: #202227; --chrom-hover: rgba(255, 255, 255, .05);
  --chrom-aktivni: rgba(94, 195, 200, .10); --chrom-paticka: #0E0F12;
  --chrom-pole: rgba(255, 255, 255, .05); --chrom-okraj: var(--chrom-linka);
  --stav-dokoncena: #8A93B5;
  --stin-1: inset 0 1px 0 rgba(255, 255, 255, .025);      /* jen světlá horní hrana — obrys dělá hairline */
  --stin-2: 0 10px 26px rgba(0, 0, 0, .55);
  --stin-vyrazny: 0 24px 60px rgba(0, 0, 0, .7);
  --stin-chrom: 0 0 0 1px #1F2126;
}

* { box-sizing: border-box; }
/* [hidden] MUSÍ vyhrát nad display třídek (inline-flex/flex/grid) — jinak se
   „skryté“ prvky vykreslují (viděno 3×: našeptávač, Označit vše, chp-main) */
[hidden] { display: none !important; }
/* čitelnost (18. 8.): celé UI je v rem → kořenový font 17px zvětší všechny
   texty o ~6 % se zachováním hierarchie; hustota layoutu zůstává */
html { font-size: 17px; }
body {
  margin: 0; font-family: var(--pismo); background: var(--plocha);
  color: var(--inkoust); font-size: .875rem; line-height: 1.55;
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
}
/* odkazy globálně BEZ podtržení (rozhodnutí 21. 8. 2026) — underline jen tam,
   kde ho konkrétní styl explicitně zapne (např. :hover afordance) */
a { color: var(--odkaz); text-decoration: none; text-decoration-thickness: 1px; text-underline-offset: 2px; }
a:hover { color: var(--tyrkys-tmavy); }

/* — typografická škála — */
h1 { font-size: 1.55rem; font-weight: 700; letter-spacing: -0.02em; margin: 0 0 .8rem; }
h2 { font-size: .94rem; font-weight: 640; letter-spacing: -0.01em; margin: var(--mezera-l) 0 var(--mezera-s); }
h3 { font-size: .68rem; text-transform: uppercase; letter-spacing: .09em;
     color: var(--seda); margin: 0 0 var(--mezera-xs); font-weight: 620; }

/* ============ kostra: sidebar + obsah ============ */
.kostra { display: flex; min-height: 100vh; gap: .2rem; }
.sidebar {
  /* šířka: výchozí 216px, uživatel ji mění tahem za pravý okraj (sidebar.js →
     --sidebar-sirka na <html>, localStorage core_sidebar_sirka, 190–320 px) */
  --sidebar-sirka-vychozi: 216px;
  width: var(--sidebar-sirka, var(--sidebar-sirka-vychozi)); flex-shrink: 0;
  background: linear-gradient(178deg, var(--pas-1) 0%, var(--pas-2) 100%);
  color: var(--chrom-text-jasny); display: flex; flex-direction: column; padding: 1.1rem 0 0;
  /* scroll má VÝHRADNĚ nav (jen položky menu, a jen když se nevejdou) —
     overflow hidden tu drží zaoblený box a brání scrollbaru celého menu
     (absolutní toast v patičce dřív o pár px přetekl → scrollbar) */
  position: sticky; top: .7rem; max-height: calc(100vh - 1.4rem); overflow: hidden;
  margin: .7rem 0 .7rem .7rem; border-radius: 18px;
  box-shadow: var(--stin-chrom);
}
/* scrolluje jen seznam položek (auto = scrollbar pouze když se nevejdou);
   logo nahoře a patička s hodinami zůstávají na místě */
.sidebar nav {
  flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain;
  scrollbar-width: none;   /* bez viditelného scrollbaru — scroll kolečkem/dotykem funguje dál */
  position: relative;      /* kotva pro pilulku hoveru a indikátor aktivní položky */
  padding-bottom: .4rem;
}
.sidebar nav::-webkit-scrollbar { display: none; }
/* 30. 9. 2026 (přání uživatele): po roztažení panelu zůstává logo + CORE vlevo — nápis je
   vycentrovaný jen pod logem (.core-nazev-text má šířku loga), linka jde přes celou šířku */
.sidebar { --logo-odsazeni: .6rem;
  --logo-sirka: min(184px, calc(var(--sidebar-sirka, var(--sidebar-sirka-vychozi)) - 1.8rem - var(--logo-odsazeni))); }
.sidebar .logo-odkaz { align-self: flex-start; display: block; margin: .4rem 0 .45rem var(--logo-odsazeni); max-width: 100%; }
.sidebar .logo { width: var(--logo-sirka); height: auto; display: block; }
.sidebar .core-nazev-text { display: inline-block; width: var(--logo-sirka); margin-left: var(--logo-odsazeni);
  text-align: center; text-indent: .52em; }
.sidebar .core-nazev {
  text-align: left; color: var(--tyrkys);
  font-family: "Montserrat", var(--pismo); font-weight: 640;
  letter-spacing: .52em; font-size: .74rem; margin: -0.1rem 0 0;
  text-indent: 0; text-transform: uppercase;
  padding-bottom: .85rem; border-bottom: 1px solid var(--chrom-linka);
  margin-bottom: .35rem;
}

/* ---- sidebar v3 (1. 10. 2026) — hlavní sekce s ikonou v pevném sloupci, čitelná
   hierarchie, barvy jen z tokenů --chrom-* (stejná kostra ve všech motivech).
   Vrstvy chování zůstávají ze v2 (15. 9. 2026, vzor 21st.dev „sidebar-001“):
   1) .nav-pilulka — zaoblený podklad hoveru, JS ji posouvá/morfuje mezi položkami
      (pružinový easing), CSS :hover podklad se používá jen bez JS (nav bez .nav-js);
   2) .nav-indikator — svislý tyrkysový proužek u levého okraje, JS ho přisune
      k aktivní položce (na sbalené skupině k její hlavičce);
   3) skupiny .nav-skupina — hlavička (odkaz s ikonou) + tlačítko šipky, podmenu se
      rozbaluje animací výšky (grid 0fr→1fr), šipka se otáčí;
   4) podpoložky .nav-sub — zarovnané pod text hlavičky, vodicí linka stromu
      pod ikonou, krátká pomlčka jako „odbočka“ (roste na hoveru/aktivní). */
.sidebar nav a, .sidebar nav span {
  display: flex; align-items: center; gap: .5rem;
  padding: .3rem .6rem .3rem .55rem; margin: 0 .55rem; border-radius: 8px;
  color: var(--chrom-text); text-decoration: none; font-size: .8rem; line-height: 1.3;
  position: relative; z-index: 1;           /* nad pilulkou */
  transition: color .16s ease;
}
.sidebar nav a { min-width: 0; }
/* ikona sekce: pevný sloupec (zarovnání textů pod sebou), decentní, svítí s položkou */
.sidebar nav span.nav-ik {
  flex: 0 0 1.15rem; width: 1.15rem; height: 1.15rem; padding: 0; margin: 0; border-radius: 0;
  display: inline-flex; align-items: center; justify-content: center; color: var(--chrom-text-tlumeny);
  position: static; z-index: auto; transition: color .16s ease;
}
.sidebar nav span.nav-ik svg { width: 1rem; height: 1rem; stroke-width: 1.9; }
.sidebar nav a:hover .nav-ik, .sidebar nav a.aktivni .nav-ik { color: var(--tyrkys); }
/* název položky: na úzkém menu se nezalamuje, ale zkracuje (…) */
.sidebar nav span.nav-text {
  display: block; flex: 0 1 auto; min-width: 0; padding: 0; margin: 0; border-radius: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: inherit;
  font: inherit; letter-spacing: inherit; text-transform: inherit; position: static; z-index: auto;
}
.sidebar nav a:hover { color: var(--chrom-text-jasny); }
.sidebar nav:not(.nav-js) a:hover { background: var(--chrom-hover); }   /* bez JS: statický hover */
/* aktivní položka: jemný tyrkysový nádech; svítící proužek dělá .nav-indikator (JS),
   bez JS ho nahrazuje vnitřní stín */
.sidebar nav a.aktivni { color: var(--chrom-text-jasny); font-weight: 640; background: var(--chrom-aktivni); }
.sidebar nav:not(.nav-js) a.aktivni { box-shadow: inset 3px 0 0 var(--tyrkys); }
.sidebar nav span.nav-pilulka {   /* specificita nad `.sidebar nav span` */
  position: absolute; left: 0; top: 0; width: 0; height: 0; z-index: 0; padding: 0; margin: 0; display: block;
  border-radius: 8px; background: var(--chrom-hover);
  box-shadow: inset 0 0 0 1px var(--chrom-linka);
  opacity: 0; pointer-events: none;
  transition: transform .34s cubic-bezier(.22, 1.35, .36, 1), width .34s cubic-bezier(.22, 1.35, .36, 1),
              height .34s cubic-bezier(.22, 1.35, .36, 1), opacity .16s ease;
}
.sidebar nav span.nav-pilulka.viditelna { opacity: 1; }
.sidebar nav span.bez-prechodu { transition: none !important; }
.sidebar nav span.nav-indikator {
  position: absolute; left: 0; top: 0; width: 3px; height: 0; z-index: 2; padding: 0; margin: 0; display: block;
  border-radius: 0 3px 3px 0; background: var(--tyrkys);
  opacity: 0; pointer-events: none; transform-origin: 50% 50%;
  transition: transform .42s cubic-bezier(.22, 1.3, .36, 1), height .42s cubic-bezier(.22, 1.3, .36, 1),
              opacity .25s ease;
}
.sidebar nav span.nav-indikator.viditelna { opacity: 1; }
.sidebar nav .nav-eyebrow {
  display: flex; align-items: center; gap: .5rem;
  padding: .6rem .2rem .18rem; margin: 0 .75rem;
  font-size: .65rem; text-transform: uppercase; letter-spacing: .15em;
  color: var(--chrom-text-tlumeny); font-weight: 700; cursor: default; border-radius: 0;
}
.sidebar nav .nav-eyebrow:first-child { padding-top: .25rem; }
/* rozevírací sekce: klik na hlavní položku naviguje, tlačítko šipky vedle ní
   sbalí/rozbalí podmenu (stav si pamatuje sidebar.js; skupina s aktivní
   položkou je vždy otevřená). Hlavička = hlavní sekce s ikonou. */
.nav-radek { display: flex; align-items: center; position: relative; }
.sidebar nav .nav-radek a.ma-sub {
  flex: 1; margin-right: 0; padding-right: .3rem; border-radius: 8px 0 0 8px;
  font-weight: 620; color: var(--chrom-text);
}
.sidebar nav .nav-radek a.ma-sub:hover { color: var(--chrom-text-jasny); }
.sidebar nav .nav-radek a.ma-sub.aktivni { color: var(--chrom-text-jasny); }
/* samostatné sekce (bez podmenu) mají stejnou váhu jako hlavičky skupin */
.sidebar nav > a { font-weight: 620; }
.sidebar nav .nav-skupina + .nav-skupina, .sidebar nav a + .nav-skupina,
.sidebar nav .nav-skupina + a, .sidebar nav > a + a { margin-top: .16rem; }
.sidebar nav .nav-sipka {
  flex: none; width: 1.6rem; height: 1.75rem; margin: 0 .55rem 0 0; padding: 0;
  border: 0; border-radius: 0 8px 8px 0; background: transparent; color: var(--chrom-text-tlumeny);
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  position: relative; z-index: 1; transition: color .16s ease;
}
.sidebar nav .nav-sipka svg { transition: transform .3s cubic-bezier(.3, 1.3, .5, 1); }
.sidebar nav .nav-skupina.otevrene .nav-sipka svg { transform: rotate(90deg); }
.sidebar nav .nav-sipka:hover { color: var(--chrom-text-jasny); }
.sidebar nav .nav-sipka:focus-visible { outline: 2px solid var(--tyrkys); outline-offset: -2px; }
/* v hlavičce skupiny nechat badge dýchat od šipky rozbalení */
.sidebar nav a.ma-sub .nav-badge { margin-right: .1rem; }
/* podmenu: animace výšky přes grid-template-rows (bez měření v JS) */
.nav-podmenu {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows .32s cubic-bezier(.4, 0, .2, 1), opacity .24s ease;
  opacity: 0;
}
.nav-podmenu.otevrene { grid-template-rows: 1fr; opacity: 1; }
.nav-podmenu-vnitrek { min-height: 0; overflow: hidden; padding: .1rem 0 .2rem; }
.nav-podmenu:not(.otevrene) .nav-podmenu-vnitrek { visibility: hidden; transition: visibility 0s .32s; }
/* podpoložky: text lícuje s textem hlavičky (ikona 1.15rem + mezera .5rem),
   vodicí linka stromu pod středem ikony, krátká pomlčka jako odbočka */
.sidebar nav a.nav-sub {
  margin: 0 .55rem 0 .55rem; padding: .22rem .6rem .22rem calc(.55rem + 1.15rem + .5rem);
  font-size: .78rem; font-weight: 500; color: var(--chrom-text); gap: .45rem;
}
.sidebar nav a.nav-sub::before {                    /* odbočka ze stromu */
  content: ""; position: absolute; left: calc(.55rem + .575rem); top: 50%; width: .55rem; height: 1px;
  background: var(--chrom-text-tlumeny); opacity: .55;
  transition: width .25s cubic-bezier(.3, 1.4, .5, 1), opacity .18s ease, background-color .18s ease;
}
.sidebar nav a.nav-sub:hover::before { width: .8rem; opacity: .9; }
.sidebar nav a.nav-sub.aktivni::before { width: .8rem; opacity: 1; background: var(--tyrkys); }
.sidebar nav a.nav-sub:hover { color: var(--chrom-text-jasny); }
.sidebar nav a.nav-sub.aktivni { color: var(--chrom-text-jasny); font-weight: 640; background: var(--chrom-aktivni); }
.nav-podmenu-vnitrek { position: relative; }
.nav-podmenu-vnitrek::before {            /* vodicí linka stromu pod středem ikony hlavičky */
  content: ""; position: absolute; left: calc(.55rem + .55rem + .575rem); top: .1rem; bottom: .2rem; width: 1px;
  background: var(--chrom-linka); pointer-events: none;
}
.sidebar nav span.neaktivni { color: var(--chrom-text-tlumeny); cursor: default; }
/* decentní badge počtu čekajících oznámení u názvu sekce (TYP_NAV) —
   živě ho obnovuje polling zvonečku */
/* specificita nad `.sidebar nav span` (obecný layout odkazů) */
.nav-badge, .sidebar nav span.nav-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 1rem; height: 1rem; padding: 0 .3rem; margin: 0;
  margin-left: auto; border-radius: 999px; flex: none; white-space: nowrap;
  background: var(--chrom-aktivni); color: var(--tyrkys);
  border: 1px solid var(--akcent-okraj);
  font-size: .58rem; font-weight: 650; line-height: 1;
  font-variant-numeric: tabular-nums; letter-spacing: .02em;
  text-transform: none; position: static; z-index: auto;
}
/* uchop pro změnu šířky menu na pravém okraji (sidebar.js): 8px hit-zóna,
   viditelná linka na hoveru / při tahu */
.sidebar-uchop {
  position: absolute; top: 0; right: 0; bottom: 0; width: 8px; cursor: col-resize;
  z-index: 5; touch-action: none;
}
.sidebar-uchop::after {
  content: ""; position: absolute; top: 14%; bottom: 14%; right: 2px; width: 3px;
  border-radius: 3px; background: var(--tyrkys); opacity: 0;
  transition: opacity .18s ease;
}
.sidebar-uchop:hover::after, .sidebar.sirka-tazena .sidebar-uchop::after { opacity: .75; }
html.sirka-tazena, html.sirka-tazena * { cursor: col-resize !important; user-select: none !important; }
.sidebar .paticka {
  margin-top: auto; position: sticky; bottom: 0;
  /* obsah drží linii s patičkami bočních panelů (Profily ▾ v kalendáři):
     spodní odsazení jen 4 px — nativní náhled odkazu prohlížeče se může
     krátkodobě překrýt s datem, linie napříč portálem má přednost */
  padding: 16px .9rem 4px; display: flex; justify-content: space-between; align-items: center;
  background: var(--chrom-paticka); border-top: 1px solid var(--chrom-linka);
  border-radius: 0 0 18px 18px;
}
/* toast „Uloženo" ve spodním (rezervovaném) pruhu patičky — vyjede na 2 s */
.paticka-toast {
  position: absolute; left: .9rem; right: .9rem; bottom: 3px;
  font-size: .74rem; font-weight: 580; color: var(--tyrkys);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  opacity: 0; transform: translateY(3px); pointer-events: none;  /* 3px = zůstává uvnitř patičky (nevyvolá overflow) */
  transition: opacity .22s ease, transform .22s ease;
}
.paticka-toast.zobraz { opacity: 1; transform: none; }
.paticka-cas { display: flex; flex-direction: column; text-decoration: none; line-height: 1.15; }
.paticka-cas .pc-cas { font-family: var(--mono); font-variant-numeric: tabular-nums;
  font-size: 1.28rem; font-weight: 660; color: var(--chrom-text-jasny); letter-spacing: .02em; }
.paticka-cas .pc-datum { font-size: .78rem; font-weight: 540; color: var(--chrom-text); }
a.paticka-cas:hover .pc-cas { color: var(--tyrkys); }
/* ---- mobilní lišta (≤ 900 px): ☰ + logo nahoře, sidebar je výsuvný panel (drawer) ---- */
.mob-lista { display: none; }
.sidebar-pozadi { display: none; }
.obsah { flex: 1; padding: .6rem clamp(.9rem, 1.6vw, 1.6rem) 2.5rem; min-width: 0; }

/* ---- hero-bar: horní pruh stránky zarovnaný s clusterem zvoneček+avatar ----
   Rezervovaný pro nadpis a ovládací prvky aktuální stránky (výška = 38px tlačítek,
   pravý sloupec drží padding-right na .obsah). Pokrývá všechny vzory hlaviček:
   .hlavicka-sekce, holé <h1>, drobečky .drobky i kalendářní toolbar. */
/* ovládání hlavičky se centruje na výšku celého bloku (align-items: center
   z .hlavicka-sekce); cluster ikon dorovnává na tentýž střed skript
   v base.html (fixed prvek nezná výšku hlavičky) */
/* jednotná výška HERO řádku napříč portálem — vzor dashboard (H1 + stavový řádek) */
.kal > .kal-toolbar { min-height: 4.5rem; align-items: center; }
.obsah > .hlavicka-sekce:first-of-type { min-height: 4.5rem; margin-top: 0; }
.obsah > .hlavicka-sekce:first-of-type .prepinac { height: 38px;  /* výška tlačítek clusteru */
  align-self: center;
  /* flex centruje v content-boxu — kompenzace padding-bottom+border hlavičky,
     ať střed sedí na střed CELÉHO bloku (stejně jako cluster); platí JEN
     pro ne-sticky hlavičku (bez padding-top) — sticky varianta níže ruší */
  margin-bottom: calc(-.55rem - 1px); }
.profil-menu { transition: none; }   /* top nastavuje skript — bez animace skoku */
.obsah > h1:first-of-type {
  min-height: 4.5rem; display: flex; align-items: center; gap: .55rem;
  flex-wrap: wrap; margin-top: 0; /* jednotná výška HERO řádku (vzor dashboard) */
}
.obsah > .drobky:first-child { min-height: 38px; display: flex; align-items: center; margin: 0 0 .3rem; }

/* sticky HERO (20. 8.): hlavička sekce zůstává při scrollu přišpendlená
   nahoře — drží kontext stránky; border-bottom funguje jako oddělovač.
   Negativní margin + padding pohlcují horní padding .obsah, ať obsah
   neprosvítá nad hlavičkou. Na mobilu (sloupcová hlavička) se vypíná. */
@media (min-width: 960px) {
  .obsah > .hlavicka-sekce:first-of-type, .obsah > h1:first-of-type {
    position: sticky; top: 0; z-index: 60; background: var(--plocha);
    margin-top: -.6rem; padding-top: .6rem;
  }
  /* sticky hlavička má padding-top .6rem ≈ padding-bottom+border → obsahový
     box je už symetrický a flex centruje sám; stará kompenzace by přepínač
     posunula ~5px POD střed (viditelné na širokých monitorech) */
  .obsah > .hlavicka-sekce:first-of-type .prepinac { margin-bottom: 0; }
}

/* ============ karty a dlaždice ============ */
.karta {
  background: var(--karta); border: 1px solid var(--okraj-karty);
  border-radius: var(--r-karta); padding: 1rem 1.15rem; margin: 0 0 var(--mezera-m);
  box-shadow: var(--stin-1);
}
/* auto-fit (NE auto-fill — to na širokých monitorech tvoří prázdné ghost
   sloupce a mačká karty do ~200px pruhů); strop 640px drží karty čitelné
   a zároveň brání absurdně širokým kartám při malém počtu */
.dlazdice { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 640px)); gap: .6rem; align-items: start; }
/* kompaktní varianta pro číselné stat dlaždice (velká karta na jedno číslo působí prázdně) */
.dlazdice-staty { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.dlazdice .karta { margin: 0; min-width: 0; overflow-x: auto; }
/* široká varianta pro karty s tabulkami/kódem — 200px sloupce je rozsypou */
.dlazdice-siroke { grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); }
.karta.stat .cislo {
  font-family: var(--mono); font-size: 1.45rem; font-weight: 620;
  margin: .1rem 0; color: var(--navy-text); font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}
.karta.stat small { color: var(--seda); font-size: .74rem; }
.karta p { margin: var(--mezera-s) 0; }
.karta h2:first-child, .karta h3:first-child { margin-top: 0; }

/* ============ tabulky ============ */
.tabulka {
  width: 100%; border-collapse: separate; border-spacing: 0; font-variant-numeric: tabular-nums;
  background: var(--karta); border: 1px solid var(--okraj-karty);
  border-radius: var(--r-karta); overflow: hidden; overflow: clip; box-shadow: var(--stin-1);
  margin: 0 0 var(--mezera-m);
}
/* sticky hlavička VŠECH tabulek (6. 9. 2026): `overflow: clip` místo hidden —
   hidden by z tabulky dělal „scroll kontejner" a sticky by nefungovalo.
   Odsazení shora = výška sticky hlavičky sekce (--hlavicka-vyska měří
   razeni.js), uvnitř scroll panelu .bp-hlavni a v modalu je 0. */
.tabulka thead th, .tabulka > tr:first-child > th, .tabulka > tbody:first-child > tr:first-child > th,
.tabulka > tbody > tr:first-child > th {
  position: sticky; top: var(--hlavicka-vyska, 0px); z-index: 5; }
.bp-hlavni, .modal-telo, .ozn-modal { --hlavicka-vyska: 0px; }   /* vlastní scroll kontejner → lepí se k jeho hornímu okraji */
/* Široké tabulky (1. 10. 2026): razeni.js dá tabulce, která se nevejde do karty, třídu
   .tabulka-posuv → scrolluje vodorovně UVNITŘ karty (ne celá stránka), řádky se nelámou
   po slovech do úzkých sloupců, sticky hlavička se vypíná (lepila by se k tabulce).
   Tabulky, které se vejdou, zůstávají normální (plná šířka, sticky th) — na všech šířkách. */
.tabulka.tabulka-posuv th, .tabulka.tabulka-posuv thead th, .tabulka.tabulka-posuv > tr:first-child > th,
.tabulka.tabulka-posuv > tbody:first-child > tr:first-child > th,
.tabulka.tabulka-posuv > tbody > tr:first-child > th { position: static; }
.tabulka.tabulka-posuv { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.tabulka.tabulka-posuv td { white-space: nowrap; }
.tabulka.tabulka-posuv td p, .tabulka.tabulka-posuv td .md, .tabulka.tabulka-posuv td.zalom, .tabulka.tabulka-posuv td .zalom,
.tabulka.tabulka-posuv td textarea, .tabulka.tabulka-posuv td .helptext { white-space: normal; }
.tabulka.tabulka-posuv td p, .tabulka.tabulka-posuv td .md { min-width: 18rem; }
@media (max-width: 960px) { .tabulka th { position: static; } }
.tabulka th {
  text-align: left; font-size: .7rem; text-transform: uppercase;
  letter-spacing: .08em; color: var(--seda); font-weight: 640;
  padding: .46rem .7rem; border-bottom: 1px solid var(--okraj);
  background: var(--plocha-jemna); white-space: nowrap;
}
/* hustota seznamů = rytmus doladěných výpisů (Aktivity/kalendář):
   .84rem místo .9rem, sjednoceno napříč portálem (1. 9. 2026) */
.tabulka td { padding: .44rem .7rem; border-bottom: 1px solid var(--okraj-jemny); vertical-align: middle; font-size: var(--pismo-seznam); }
.tabulka tr:last-child td { border-bottom: 0; }
.tabulka tr:hover td { background: var(--plocha-jemna); }
.tabulka td form { margin: 0; }
/* tabulka vnořená v kartě: bez vlastní elevace (stín na stínu ruší hierarchii) */
.karta .tabulka { box-shadow: none; border: 1px solid var(--okraj-jemny); }

/* ============ tlačítka ============ */
.btn {
  display: inline-block; background: linear-gradient(170deg, var(--navy-svetla), var(--navy-tmava));
  color: #fff; border: 0;
  border-radius: var(--r-prvek); padding: .38rem .85rem; font: inherit;
  font-size: .84rem; font-weight: 640; cursor: pointer; text-decoration: none;
  box-shadow: 0 1px 2px rgba(18, 23, 43, .2), 0 8px 18px -8px rgba(18, 23, 43, .45);
  line-height: 1.4; text-align: center;
  transition: box-shadow .15s ease, transform .15s ease, filter .15s ease;
}
.btn:hover { color: #fff; filter: brightness(1.12); transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(18, 23, 43, .2), 0 12px 24px -8px rgba(18, 23, 43, .5); }
/* sekundární: hover NESMÍ ztmavit pozadí pod tmavým textem (fix čitelnosti) */
.btn-vedlejsi { background: var(--karta); color: var(--navy-text); border: 1px solid var(--okraj); box-shadow: none; }
.btn-vedlejsi:hover { background: var(--plocha); color: var(--navy-text); border-color: var(--okraj-silny); box-shadow: none; }
.btn-maly { padding: .16rem .5rem; font-size: .76rem; font-weight: 560; }
.btn-nebezpecny { background: transparent; color: var(--chyba); border: 1px solid var(--chyba-okraj); box-shadow: none; }
.btn-nebezpecny:hover { background: var(--chyba); color: var(--text-na-vyplni); border-color: var(--chyba); box-shadow: none; }
.btn:disabled { opacity: .55; cursor: default; }

/* ============ formuláře ============ */
label { display: block; margin: var(--mezera-s) 0; font-size: .84rem; color: var(--inkoust); }
input, select, textarea {
  width: 100%; max-width: 24rem; padding: .34rem .55rem; margin-top: .18rem;
  border: 1px solid var(--okraj); border-radius: var(--r-prvek); font: inherit;
  font-size: .85rem; background: var(--pole); color: var(--inkoust);
}
/* rozbalené <option> seznamy: explicitní paleta — bez ní prohlížeč míchá
   světlé pozadí popupu s barvou textu selectu (nečitelné v tmavých motivech) */
option, optgroup { background-color: var(--karta); color: var(--inkoust); }
textarea { resize: vertical; }  /* roztahování jen svisle — vodorovné láme mřížky */
input:hover, select:hover, textarea:hover { border-color: var(--okraj-silny); }
input:focus, select:focus, textarea:focus {
  outline: none; border-color: var(--tyrkys);
  box-shadow: var(--fokus-kruh);
}
:focus-visible { outline: 2px solid var(--tyrkys); outline-offset: 1px; }
input[type="checkbox"], input[type="radio"] { accent-color: var(--navy); }
.formular { max-width: 30rem; }
.modal-form.formular { max-width: none; }  /* v modalu šířku řídí modal, ne formular */
.formular .helptext, form .helptext { font-size: .78rem; color: var(--seda); display: block; margin-top: .15rem; }
.formular ul, form ul.errorlist { color: var(--chyba); font-size: .85rem; padding-left: 1.1rem; }
/* seznamy checkboxů z Django widgetů (CheckboxSelectMultiple v form.as_p —
   Mailing kampaň): ne chybová barva, checkbox bez globální width:100 % */
.formular div[id^="id_"]:has(> div > label > input[type="checkbox"]),
.formular ul[id^="id_"] { color: inherit; font-size: inherit; list-style: none; padding: 0; margin: .2rem 0 .6rem; display: grid; gap: .25rem; }
.formular div[id^="id_"] > div > label, .formular ul[id^="id_"] label { display: flex; gap: .5rem; align-items: center; margin: 0; font-weight: 400; }
.formular div[id^="id_"] > div > label > input, .formular ul[id^="id_"] input { width: auto; margin: 0; }

/* skupina spojených tlačítek — outline, radius jen na krajích, borders se
   překrývají (-1px); vzor shadcn button-group. Použití: <span class=btn-skupina>
   [button.btn | form>button.btn]… </span> */
.btn-skupina { display: inline-flex; align-items: stretch; vertical-align: middle;
  border-radius: var(--r-prvek); box-shadow: var(--stin-1); }
.btn-skupina > form { display: inline-flex; }
.btn-skupina .btn { background: var(--karta); color: var(--inkoust);
  border: 1px solid var(--okraj); box-shadow: none; border-radius: 0;
  margin-left: -1px; font-weight: 540; }
.btn-skupina > :first-child .btn, .btn-skupina > .btn:first-child {
  border-top-left-radius: var(--r-prvek); border-bottom-left-radius: var(--r-prvek);
  margin-left: 0; }
.btn-skupina > :last-child .btn, .btn-skupina > .btn:last-child {
  border-top-right-radius: var(--r-prvek); border-bottom-right-radius: var(--r-prvek); }
.btn-skupina .btn:hover { background: var(--plocha); border-color: var(--okraj-silny);
  transform: none; filter: none; position: relative; z-index: 1; }
.btn-skupina .btn-nebezpecny { color: var(--chyba); background: var(--karta); }

/* ============ drobné prvky ============ */
.hlavicka-sekce {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  flex-wrap: wrap; margin: 0 0 .8rem; padding-bottom: .55rem;
  border-bottom: 1px solid var(--okraj);
}
.hlavicka-sekce h1 { margin: 0; }
/* levý textový blok hera = těsný sloupec H1 + podtitul (#27/4.9.):
   podtitul nesmí „viset" ani se lepit ke spodní hraně sekce */
.hlavicka-sekce > div:first-child { display: flex; flex-direction: column;
  gap: .15rem; }
.hlavicka-sekce > div:first-child > .stav-radek { margin: 0; }
.stitek {
  display: inline-block; background: var(--plocha); border: 1px solid var(--okraj);
  border-radius: 999px; padding: .08rem .62rem; font-size: .76rem;
  font-weight: 540; color: var(--seda); text-decoration: none; line-height: 1.5;
}
/* výběr adresy na mapě (#10) */
.mapa-vyber-modal { width: min(56rem, 96vw); max-width: 96vw; }
.mapa-vyber-telo { display: flex; flex-direction: column; gap: .5rem; padding: 0 .2rem; }
.mapa-vyber-napoveda { margin: 0; }
.mapa-vyber-platno { height: min(58vh, 30rem); width: 100%; border-radius: var(--r-prvek);
  border: 1px solid var(--okraj); overflow: hidden; }
.mapa-vyber-adresa { font-weight: 540; min-height: 1.4rem; }
.mapa-vyber-akce { display: flex; justify-content: flex-end; gap: .6rem; margin-top: .6rem; }

/* globální paleta stavů — mapování klíče na token + sdílené prvky (12. 9. 2026) */
[data-stav-barva="nova"] { --stav-barva: var(--stav-nova); }
[data-stav-barva="k_potvrzeni"] { --stav-barva: var(--stav-k-potvrzeni); }
[data-stav-barva="priprava"] { --stav-barva: var(--stav-priprava); }
[data-stav-barva="zakazka"] { --stav-barva: var(--stav-zakazka); }
[data-stav-barva="odlozena"] { --stav-barva: var(--stav-odlozena); }
[data-stav-barva="storno"] { --stav-barva: var(--stav-storno); }
[data-stav-barva="dokoncena"] { --stav-barva: var(--stav-dokoncena); }
[data-stav-barva="spam"] { --stav-barva: var(--stav-spam); }
tr.radek-stav td:first-child { box-shadow: inset 6px 0 0 var(--stav-pruh, var(--stav-barva)); padding-left: calc(.5rem + 6px); }
tr.radek-stav td { background: color-mix(in srgb, var(--stav-barva) var(--stav-sila, 9%), transparent); }
tr.radek-stav:hover td { background: color-mix(in srgb, var(--stav-barva) var(--stav-sila-hover, calc(var(--stav-sila, 9%) + 7%)), var(--plocha-jemna)); }
tr.radek-stav[data-stav-barva="nova"] { --stav-sila: 2%; --stav-sila-hover: 4%; --stav-pruh: color-mix(in srgb, var(--stav-barva) 45%, transparent); }
  /* Nová = výchozí/většinový stav → sotva znatelný nádech (2 %), tlumený hover (4 % místo 11 %) a pruh na 45 %
     (16. 9. 2026: modré pozadí i pruh působily jako zvýrazňovač, když je takových řádků většina) */
/* text štítku: odstín stavu se MÍCHÁ S INKOUSTEM (55 %) — ve světlém motivu se
   ztmaví (žlutá #D6B300 měla na bílé 2,0 : 1), v tmavých naopak zesvětlí. Hue
   paleta zůstává, mění se jen jas (21. 9. 2026). */
.stitek.stav-stitek { border-color: color-mix(in srgb, var(--stav-barva) 62%, transparent);
  color: color-mix(in srgb, var(--stav-barva) 55%, var(--inkoust));
  background: color-mix(in srgb, var(--stav-barva) 12%, transparent); font-weight: 600; }
/* Dokončená v tmavých motivech: #3a405a splývá s pozadím → token --stav-dokoncena
   je v obou tmavých blocích přepsaný na #8A93B5 (proužek, podklad i štítek). */
.legenda-stavu { display: flex; flex-wrap: wrap; gap: .25rem 1rem; margin: 0 0 var(--mezera-s, .5rem); font-size: var(--pismo-drobne); color: var(--seda); }
.legenda-stavu-polozka { display: inline-flex; align-items: center; gap: .35rem; white-space: nowrap; }
.legenda-tecka { display: inline-block; width: .62rem; height: .62rem; border-radius: 999px; background: var(--stav-barva); flex: 0 0 auto; }

/* priorita — barevná tečka (#32) */
.prio-tecka {
  display: inline-block; width: .62rem; height: .62rem; border-radius: 999px;
  vertical-align: middle; flex: 0 0 auto; box-shadow: 0 0 0 2px var(--plocha);
}
.prio-urgentni { animation: prio-puls 1.8s ease-in-out infinite; }
@keyframes prio-puls { 0%,100% { opacity: 1; } 50% { opacity: .45; } }
.stitek.aktivni { border-color: var(--akcent-okraj); color: var(--tyrkys-tmavy); background: var(--akcent-pozadi); }
.zprava { border-radius: var(--r-prvek); padding: .4rem .75rem; margin: 0 0 .6rem; font-size: .84rem; }
.zprava.success { background: var(--ok-pozadi); color: var(--ok-text); border: 1px solid var(--ok-okraj); }
.zprava.error { background: var(--chyba-pozadi); color: var(--chyba); border: 1px solid var(--chyba-okraj); }
.zprava.warning { background: var(--varovani-pozadi); color: var(--varovani); border: 1px solid var(--varovani-okraj); }
.zprava-flash { transition: opacity .4s ease; }
/* flash zprávy — decentní centrální overlay s animovanou ikonou (base.html) */
.flash-overlay { position: fixed; inset: 0; z-index: 95; display: grid; place-items: center;
  pointer-events: none; background: rgba(13, 17, 32, .22);
  backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px);
  opacity: 0; transition: opacity .25s ease; }
.flash-overlay.ukaz { opacity: 1; }
.flash-karta { display: flex; align-items: center; gap: 1rem; background: var(--karta);
  border: 1px solid var(--okraj); border-radius: var(--r-karta); box-shadow: var(--stin-2);
  padding: 1.15rem 1.7rem; max-width: min(34rem, 90vw);
  transform: translateY(8px) scale(.94); transition: transform .25s ease; }
.flash-overlay.ukaz .flash-karta { transform: none; }
.flash-ikona { width: 2.6rem; height: 2.6rem; flex: none;
  display: grid; place-items: center; border: 2px solid currentColor; border-radius: 999px; }
.flash-uspech .flash-ikona { color: var(--tyrkys-tmavy); }
.flash-chyba .flash-ikona { color: var(--chyba); }
.flash-varovani .flash-ikona { color: var(--varovani); }
.flash-ikona svg { stroke-dasharray: 34; stroke-dashoffset: 34;
  animation: flash-tah .45s .2s ease forwards; }
@keyframes flash-tah { to { stroke-dashoffset: 0; } }
.flash-texty { font-weight: 600; font-size: .98rem; display: grid; gap: .2rem; }
@media (prefers-reduced-motion: reduce) { .flash-ikona svg { animation: none; stroke-dashoffset: 0; } }
.zprava-mizi { opacity: 0; }
.ok { color: var(--ok); } .chyba { color: var(--chyba); }
ul.kontroly { columns: 2; list-style: none; padding: 0; font-size: .87rem; }
ul.kontroly li { break-inside: avoid; padding: .1rem 0; }
ul.kontroly li::before { content: "● "; font-size: .7em; vertical-align: 2px; }
ul.kontroly li.ok::before { color: var(--ok); }
ul.kontroly li.chyba::before { color: var(--chyba); }
.seznam-odkazu { list-style: none; padding: 0; }
.seznam-odkazu li { padding: .4rem 0; border-bottom: 1px solid var(--okraj); }
.seznam-odkazu li:last-child { border-bottom: 0; }
.neaktivni { color: var(--seda); }
.drobky { color: var(--seda); font-family: var(--mono); font-size: .8rem; font-variant-numeric: tabular-nums; }
/* Toast UI editor: přepínač Markdown/WYSIWYG má vlastní šedou (2,7 : 1) */
.toastui-editor-defaultUI .toastui-editor-mode-switch .tab-item { color: var(--seda); }
.toastui-editor-defaultUI .toastui-editor-mode-switch .tab-item.active { color: var(--inkoust); }
.toastui-editor-defaultUI.toastui-editor-dark .toastui-editor-mode-switch .tab-item { color: #A8AFBD; }
.toastui-editor-defaultUI.toastui-editor-dark .toastui-editor-mode-switch .tab-item.active { color: #EDEFF3; }
.md pre { background: var(--kod-pozadi); color: var(--kod-text); padding: .8rem 1rem; border-radius: var(--r-prvek); overflow-x: auto; font-size: .85rem; }
.md code { font-family: var(--mono); font-size: .88em; }
.md table { border-collapse: collapse; display: block; overflow-x: auto; max-width: 100%; }
.md td, .md th { border: 1px solid var(--okraj); padding: .3rem .6rem; }
.md img { max-width: 100%; }
code.tajemstvi { font-family: var(--mono); background: var(--akcent-pozadi); border: 1px solid var(--tyrkys); border-radius: 6px; padding: .1rem .5rem; }
.nahravani { margin-top: .9rem; display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; }
.nahravani input, .nahravani select { max-width: 20rem; margin-top: 0; width: auto; }
.koreny { display: flex; gap: .45rem; margin-bottom: .8rem; flex-wrap: wrap; }
.koreny .stitek { padding: .22rem .75rem; font-size: .8rem; }

/* ---- pill přepínač pohledů ---- */
.prepinac { display: inline-flex; background: var(--karta); border: 1px solid var(--okraj); border-radius: 999px; overflow: hidden; box-shadow: var(--stin-1); }
.prepinac a { text-decoration: none; display: flex; }
.prepinac button { border: 0; background: none; padding: .38rem 1rem; font: inherit; font-size: .85rem; cursor: pointer; color: var(--seda); }
.prepinac button.aktivni { background: var(--navy); color: #fff; font-weight: 620; }
/* ---- Můj profil: kompozice karet ---- */
/* 28. 9. 2026: Můj profil vodorovný přepínač záložek NEPOUŽÍVÁ — navigaci
   dělá sdílený boční panel sekce Nastavení (standard .bp-obal, registr
   nastaveni/navigace.py) a karty záložky scrollují v .bp-hlavni. Třída
   .profil-zalozky tu zůstává kvůli Nastavení → Firemní profil, které na
   stejném pillovém přepínači pořád jede. */
.profil-zalozky { margin: .2rem 0 1.1rem; }
/* mřížka karet záložky: zarovnané sloupce, karty v řadě dorovnané do stejné výšky */
.profil-mriz { display: grid; gap: .7rem; align-items: stretch; }
.profil-mriz .karta { margin: 0; min-width: 0; display: flex; flex-direction: column; }
/* tlačítko Uložit sedí na spodní hraně karty → tlačítka sousedních karet lícují */
.profil-mriz .karta > form:not(.nahravani) { display: flex; flex-direction: column; flex: 1; }
.profil-mriz .karta > form:not(.nahravani) > .btn { margin-top: auto; align-self: flex-start; }
@media (min-width: 980px) {
  /* Můj profil → Údaje (2. 9. večer): foto a hlavní Údaje přes celou
     šířku, pod nimi Sociální sítě + Pracovní doba vedle sebe */
  .profil-udaje { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .profil-udaje > .profil-foto-vrch,
  .profil-udaje > .profil-udaje-hlavni { grid-column: 1 / -1; }
  .profil-zabezpeceni { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: auto 1fr; }
  .profil-zabezpeceni > .karta-prihlaseni { grid-column: 2; grid-row: 1 / 3; }
  .profil-vyuziti { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
/* modal konektoru (přidání/úprava) */
.kon-modal { width: min(46rem, 100%); height: 80vh; max-height: 80vh; }
/* ✕ k pravému okraji hlavičky (hlavička je jen titulek + zavřít) */
.kon-modal .ozn-zavrit, .kon-hist-modal .ozn-zavrit { margin-left: auto; }
.kon-form { padding: 1rem; overflow-y: auto; flex: 1; min-height: 0;
  scrollbar-width: none; }
.kon-form::-webkit-scrollbar { display: none; }
.kon-paticka { display: flex; gap: .6rem; justify-content: flex-end; margin-top: .8rem; }
/* režim konektoru — segmentový radio přepínač + pravidla režimu */
.rezim-prepinac { margin: .1rem 0 .5rem; flex-wrap: wrap; }
.rezim-prepinac label { margin: 0; display: inline-flex; }
.rezim-prepinac input { position: absolute; opacity: 0; width: 0; height: 0; }
.rezim-prepinac span { display: block; padding: .38rem 1rem; font-size: .85rem; color: var(--seda); cursor: pointer; white-space: nowrap; }
.rezim-prepinac input:checked + span { background: var(--tyrkys-tmavy); color: var(--akcent-text); font-weight: 660; box-shadow: inset 0 -2px 0 rgba(255,255,255,.35); }
.rezim-prepinac input:focus-visible + span { outline: 2px solid var(--tyrkys); outline-offset: -2px; }
.rezim-prepinac label[data-jen-devprod] span { border-left: 1px solid var(--okraj); }
.rezim-pravidla { list-style: none; margin: .3rem 0 0; padding: .5rem .7rem; font-size: .8rem;
  background: var(--plocha); border: 1px solid var(--okraj); border-radius: var(--r-prvek); }
.rezim-pravidla li { padding: .12rem 0 .12rem 1.1rem; position: relative; }
.rezim-pravidla li::before { content: "•"; position: absolute; left: .2rem; color: var(--seda); }
.rezim-pravidla.rezim-varovani { border-color: var(--varovani-okraj); background: var(--varovani-pozadi); }
.kon-rezim { margin: .3rem 0 .6rem; }
.kon-zaloha { margin: .3rem 0 .6rem; padding: .5rem .7rem; border: 1px solid var(--varovani-okraj); border-radius: var(--r-prvek); background: var(--varovani-pozadi); }
.kon-zaloha textarea { width: 100%; max-width: 100%; margin-top: .1rem; font-family: var(--mono); font-size: .78rem; }
.kon-ftp { margin: .3rem 0 .6rem; padding: .4rem .7rem .6rem; border: 1px solid var(--okraj); border-radius: var(--r-prvek); }
.kon-ftp legend { padding: 0 .3rem; font-weight: 600; color: var(--tyrkys-tmavy); }
.kon-sekce { margin-top: .5rem; }
.kon-tag-nahled { display: inline-flex; gap: .4rem; align-items: center; margin-top: .4rem; padding-left: 1.2rem; }
.kon-tag-nahled input { width: auto; }
.kon-kontext { display: block; margin: .3rem 0 .6rem; }
.kon-kontext textarea { width: 100%; max-width: 100%; margin-top: .15rem; }
.kon-sekce > summary { cursor: pointer; font-weight: 600; padding: .2rem 0; }
/* karta aplikačního účtu (přehled v modalu) */
.ucet-karta { padding: .6rem .7rem; border: 1px solid var(--okraj); border-radius: var(--r-prvek); margin-bottom: .55rem; }
.ucet-hlava { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap; }
.kon-karta .kon-akce { margin-left: auto; display: inline-flex; gap: .35rem; flex-wrap: wrap; }
.kon-karta { padding: .7rem .85rem; }
/* název + ID + štítky režim/prostředí v jedné řadě; akce zůstávají vpravo */
.kon-karta .ucet-popis { display: inline-flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
/* název jako tlačítko kopírování ID (bez rámečku, dědí barvu/velikost) */
.kon-nazev { background: none; border: 0; padding: 0; margin: 0; cursor: pointer;
  font: inherit; color: inherit; }
/* jedinečné ID konektoru — monospace čip, kliknutím se kopíruje */
.kon-id { font-size: .72rem; font-weight: 400; letter-spacing: .01em; cursor: pointer;
  color: var(--tlumene, #8b93a7); background: var(--pole-pozadi, rgba(255,255,255,.04));
  border: 1px solid var(--okraj); border-radius: var(--r-prvek, 4px); padding: .05rem .4rem; }
.kon-id:hover { color: var(--text); border-color: var(--akcent, #4aa3df); }
.kon-nazev.kopirovano, .kon-id.kopirovano { color: var(--ok, #5cc98a); }
.kon-nazev.kopir-chyba, .kon-id.kopir-chyba { color: var(--chyba, #e06666); }
.ucet-popis { margin-right: auto; font-size: .95rem; }
.ucet-udaje { display: grid; grid-template-columns: max-content 1fr; gap: .1rem .7rem; margin: .45rem 0 0; font-size: .82rem; }
.ucet-udaje dt { color: var(--seda); }
.ucet-udaje dd { margin: 0; word-break: break-word; }
/* diagnostika konektoru — bodový seznam ✓/⚠/✗ */
.test-seznam { list-style: none; margin: .3rem 0 0; padding: 0; }
.test-seznam li { display: grid; grid-template-columns: 1.4rem minmax(0,15rem) 1fr; gap: .5rem;
  align-items: baseline; padding: .45rem 0; border-bottom: 1px solid var(--okraj); font-size: .85rem; }
.test-seznam li:last-child { border-bottom: 0; }
.test-ikona { font-weight: 700; text-align: center; }
.test-ok .test-ikona { color: var(--ok); } .test-warn .test-ikona { color: var(--varovani); }
.test-fail .test-ikona { color: var(--chyba); }
.test-probiha .test-ikona { color: var(--seda); } .test-probiha .test-detail { color: var(--seda); font-style: italic; }
.test-nazev { font-weight: 560; }
.test-detail { color: var(--seda); word-break: break-word; }
@media (max-width: 640px) { .test-seznam li { grid-template-columns: 1.4rem 1fr; } .test-detail { grid-column: 2; } }
/* zlatá pravidla konektoru — seznam s +/− v modalu */
.kon-pravidla { margin: .5rem 0 .6rem; }
#konPravidla { max-height: 34vh; overflow-y: auto; scrollbar-width: none; }
#konPravidla::-webkit-scrollbar { display: none; }
.kon-prav-radek { display: flex; gap: .4rem; margin-bottom: .35rem; }
.kon-prav-radek input { flex: 1; max-width: 100%; margin-top: 0; }
/* historie konektoru — modal s výpisem záznamů */
.kon-hist-modal { width: min(58rem, 100%); }
/* Debuging konektoru (2. 10. 2026): zdroje hlášení DEV/PROD + tokeny */
.modal-okno.kon-debug-okno { width: min(54rem, 100%); }
.kon-debug-okno .tabulka { display: block; overflow-x: auto; }
.kon-debug-okno code { overflow-wrap: anywhere; }
.kon-debug-zapnuto { display: flex; gap: .45rem; align-items: center; }
.kon-debug-token { width: 100%; min-width: 16rem; font-family: monospace; font-size: .8rem; cursor: copy; }
/* ---- Debuging: přepínací lišta (04/10/2026) — skupiny Projekt · Zobrazit (+ E-maily) · Přidělení;
   všechny pilly jedna výška, popisek skupiny nad ní, počty jako odznaky (dashboard/debug_lista.py) ---- */
.dbg-lista { display: flex; flex-wrap: wrap; gap: .55rem 1.6rem; align-items: flex-end; margin: .1rem 0 .95rem; }
.dbg-lista-skupina { display: flex; flex-direction: column; gap: .28rem; min-width: 0; max-width: 100%; }
.dbg-lista-popisek { font-size: .66rem; font-weight: 650; letter-spacing: .08em; text-transform: uppercase;
  color: var(--seda); padding-left: .95rem; line-height: 1; }
.dbg-lista-radek { display: flex; gap: .4rem; align-items: center; min-width: 0; max-width: 100%; }
.prepinac.dbg-prep { height: 2.05rem; align-items: stretch; flex: 0 1 auto; min-width: 0; }
.prepinac.dbg-prep a.dbg-prep-pol { display: inline-flex; align-items: center; gap: .4rem; padding: 0 .95rem;
  font-size: .82rem; line-height: 1; color: var(--seda); white-space: nowrap; text-decoration: none; flex: 0 0 auto; }
.prepinac.dbg-prep a.dbg-prep-pol + a.dbg-prep-pol { border-left: 1px solid var(--okraj-jemny); }
.prepinac.dbg-prep a.dbg-prep-pol:hover { background: var(--plocha-jemna); color: var(--inkoust); }
.prepinac.dbg-prep a.dbg-prep-pol.aktivni { background: var(--navy); color: var(--text-na-vyplni); font-weight: 620;
  border-left-color: transparent; }
.prepinac.dbg-prep a.dbg-prep-pol.aktivni + a.dbg-prep-pol { border-left-color: transparent; }
.prepinac.dbg-prep a.dbg-prep-pol svg { width: .9rem; height: .9rem; flex: 0 0 auto; }
.dbg-pocet { display: inline-flex; align-items: center; justify-content: center; min-width: 1.25rem; height: 1.15rem;
  padding: 0 .35rem; font-size: .68rem; font-weight: 650; font-variant-numeric: tabular-nums;
  background: var(--plocha-jemna); color: var(--inkoust-2); border: 1px solid var(--okraj-jemny);
  border-radius: 999px !important; box-sizing: border-box; }
.dbg-prep-pol.aktivni .dbg-pocet { background: transparent; color: var(--text-na-vyplni); border-color: currentColor; }
.dbg-prep-pol.dbg-prep-varovani:not(.aktivni) .dbg-pocet { background: var(--chyba-pozadi); color: var(--chyba);
  border-color: var(--chyba-okraj); }
@media (max-width: 700px) {
  .dbg-lista { gap: .5rem; }
  .dbg-lista-skupina { flex: 1 1 100%; }
  .dbg-lista-popisek { padding-left: .2rem; }
}
.dbg-sber { margin: .2rem 0 .8rem; }
.dbg-sber-zdroj { overflow-wrap: anywhere; }
.stitek.dbg-projekt { background: var(--akcent-pozadi); color: var(--tyrkys-tmavy); border-color: var(--akcent-okraj); }
.stitek.dbg-priorita-vysoka { color: var(--chyba); border-color: currentColor; }
.stitek.dbg-priorita-kriticka { color: var(--chyba); border-color: currentColor; background: var(--chyba-pozadi); font-weight: 650; }
.stitek.dbg-priorita-nizka, .stitek.dbg-priorita-normalni { opacity: .85; }
/* stav hlášení = tytéž názvy jako nabídka stavu, barva přes globální .stav-stitek */
.stitek.dbg-stav-nove { --stav-barva: var(--stav-nova); }
.stitek.dbg-stav-resim { --stav-barva: var(--stav-k-potvrzeni); }
.stitek.dbg-stav-opraveno_dev { --stav-barva: var(--tyrkys); }
.stitek.dbg-stav-vyreseno { --stav-barva: var(--ok); }
.kon-hist-telo { padding: .6rem 1rem 1rem; overflow-y: auto; overscroll-behavior: contain; }
.kon-hist-radek { padding: .5rem 0; border-bottom: 1px solid var(--okraj); }
.kon-hist-radek:last-child { border-bottom: 0; }
.kon-hist-meta { display: flex; gap: .6rem; align-items: center; margin-bottom: .2rem; }
.kon-hist-vstup { display: block; font-size: .8rem; overflow-x: auto; white-space: pre-wrap; word-break: break-all; }
.kon-hist-vystup { margin: .3rem 0 0; max-height: 20rem; overflow: auto; font-size: .78rem; white-space: pre-wrap; word-break: break-word; }
a.ozn-zavrit { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
/* veřejný klíč konektorů — kliknutím se kopíruje */
.klic-kopir { overflow-x: auto; cursor: pointer; user-select: all; }
.klic-kopir:hover { outline: 1px solid var(--tyrkys); outline-offset: -1px; }
/* Firemní profil: rozumné šířky karet per záložka */
/* Údaje firmy + Loga a razítko vedle sebe (pod 1400px pod sebou) */
.firma-udaje { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); }
@media (max-width: 1400px) { .firma-udaje { grid-template-columns: 1fr; } }
/* `span.tel-radek > select` (ne jen `.tel-radek select`): specificita (0,1,2)
   musí porazit `.linkovy-form select`/`.modal-form select`/`.mozaika select`
   (0,1,1; obecné pravidlo „vstupy na lince“ výše) — jinak select předvolby
   dostane jejich width:100% a v `.blok`/`.tel-radek` flexu vytlačí vedle
   sebe stojící vstup čísla úplně mimo řádek (nahlášené „rozbité“ telefonní
   pole). `>` navíc cíleně MIMO vnořený .tel-predvolba (overlay widget níže,
   position:absolute — ten width:100% naopak potřebuje). */
span.tel-radek > select, .tel-predvolba-select { width: auto; max-width: 8rem;
  flex: none; margin-top: 0; }
.firma-doba { max-width: 38rem; }
.firma-sla-nova { max-width: 62rem; margin-top: .7rem; }
/* záložka Využití: řádkové statistiky (popis vlevo, hodnota vpravo) */
.vyuziti-celkem { font-size: .76rem; font-weight: 480; color: var(--seda); margin-left: .55rem; }
.vyuziti-seznam { list-style: none; margin: .3rem 0 0; padding: 0; font-size: .85rem; }
.vyuziti-seznam li { display: flex; justify-content: space-between; gap: 1rem; padding: .32rem 0; border-bottom: 1px solid var(--okraj); }
.vyuziti-seznam li:last-child { border-bottom: 0; }
.vyuziti-seznam .hodnota { font-variant-numeric: tabular-nums; font-weight: 620; white-space: nowrap; }
.vyuziti-seznam .vedlejsi { color: var(--seda); font-weight: 420; margin-right: .55rem; }
/* Upozornění (přestavba 1. 9. večer): zvoneček přes celou šířku,
   Denní přehled + Zvuky vedle sebe */
/* karty využívají CELOU šířku plochy (2. 9. večer) — bez max-width */
.profil-upozorneni {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.profil-zabezpeceni input[type="password"] { max-width: 22rem; }
/* 12sloupcová mřížka formuláře — šířka pole podle očekávaného obsahu (.pole-N = počet sloupců);
   label je sloupec zarovnaný k dolní hraně, takže pole v řadě lícují i při zalomeném popisku */
.f-mrizka { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: .1rem .85rem; }
.f-mrizka label { min-width: 0; display: flex; flex-direction: column; justify-content: flex-end; gap: .18rem; }
.f-mrizka input, .f-mrizka textarea { display: block; width: 100%; max-width: 100%; margin-top: 0; }
.pole-2 { grid-column: span 2; } .pole-3 { grid-column: span 3; } .pole-4 { grid-column: span 4; } .pole-5 { grid-column: span 5; } .pole-6 { grid-column: span 6; }
.pole-8 { grid-column: span 8; } .pole-12 { grid-column: span 12; }
@media (max-width: 700px) { .f-mrizka > label { grid-column: 1 / -1; } }
/* formulář s popisky vlevo ve vyrovnaném sloupci (sociální sítě) */
.f-popisky { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: .5rem .8rem; align-items: center; }
.f-popisky label { display: contents; }
.f-popisky input { width: 100%; max-width: 100%; margin-top: 0; }
/* odkrytí hesla — tlačítko 👁 UVNITŘ pole vpravo (heslo.js) */
.heslo-obal { position: relative; display: block; width: 100%; max-width: 24rem; }
/* skryté pole hesla (hidden) = skrýt i obal s okem — jinak oko visí u prázdného místa (přílohy kampaně, 6. 9. 2026) */
.heslo-obal:has(> input[hidden]) { display: none; }
.heslo-obal input { width: 100%; max-width: 100%; padding-right: 2.2rem; box-sizing: border-box; }
.heslo-oko { position: absolute; right: .3rem; top: 50%; transform: translateY(-50%);
  background: none; border: 0; padding: .15rem .25rem; cursor: pointer; font-size: .95rem;
  line-height: 1; opacity: .5; filter: grayscale(1); z-index: 1; }
.heslo-oko:hover, .heslo-oko.aktivni { opacity: 1; filter: none; }
/* telefon: předvolba (select) + číslo v jedné lince. Nativní <option> neumí
   část textu zmenšit → zavřený stav kreslí .tel-predvolba-text (malá země
   + kód) a průhledný select leží PŘES něj (klávesnice i klik fungují nativně). */
.tel-radek { display: flex; gap: .4rem; }
.tel-radek input { flex: 1; min-width: 0; margin-top: 0; }
.tel-predvolba { position: relative; flex: none; display: inline-flex; margin-top: .18rem; }
.tel-predvolba select { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; margin: 0; }
.tel-predvolba-text {
  display: inline-flex; align-items: baseline; gap: .28rem; white-space: nowrap;
  padding: .34rem .55rem; border: 1px solid var(--okraj);
  background: var(--pole); color: var(--inkoust); font-size: .85rem;
}
.tel-predvolba-text small { font-size: .66rem; font-weight: 640; color: var(--seda); letter-spacing: .04em; }
.tel-predvolba-text::after { content: "▾"; font-size: .58rem; color: var(--seda); margin-left: .12rem; align-self: center; }
.tel-predvolba:focus-within .tel-predvolba-text {
  border-color: var(--tyrkys); box-shadow: var(--fokus-kruh);
}
/* výběr zvuku + tlačítko Přehrát v jedné lince */
.zvuk-radek { display: flex; gap: .5rem; align-items: center; }
.zvuk-radek select { flex: 1; max-width: 17rem; margin-top: 0; }
/* poslední přihlášení jako čistý seznam řádků */
.prihlaseni-seznam { list-style: none; margin: .3rem 0 0; padding: 0; font-size: .85rem; }
.prihlaseni-seznam li { display: flex; justify-content: space-between; gap: 1rem; padding: .3rem 0; border-bottom: 1px solid var(--okraj); }
.prihlaseni-seznam li:last-child { border-bottom: 0; }
.prihlaseni-seznam .ip { color: var(--seda); font-variant-numeric: tabular-nums; }
/* autosave indikátor v nadpisu karty („Ukládám…" / „✓ Uloženo HH:MM") */
.autosave-stav { font-size: .76rem; font-weight: 480; color: var(--seda); margin-left: .55rem; vertical-align: .1em; }
/* modal úpravy profilové fotografie (ořez / zoom / rotace) */
.avatar-modal { width: min(27rem, 100%); }
.avatar-modal .ozn-zavrit { margin-left: auto; }
.avatar-telo { padding: 1rem; display: flex; flex-direction: column; align-items: center; gap: .85rem; }
#avatarPlatno { border-radius: var(--r-prvek); border: 1px solid var(--okraj); cursor: grab; touch-action: none; max-width: 100%; }
#avatarPlatno.tahne { cursor: grabbing; }
.avatar-ovladani { width: 100%; max-width: 20rem; }
.avatar-ovladani input[type="range"] { width: 100%; max-width: none; accent-color: var(--tyrkys-tmavy); padding: 0; border: 0; background: none; box-shadow: none; }
.avatar-tlacitka { display: flex; gap: .5rem; align-items: center; margin-top: .35rem; flex-wrap: wrap; }
.avatar-paticka { display: flex; gap: .6rem; align-items: center; justify-content: flex-end; padding: .8rem 1rem; border-top: 1px solid var(--okraj); }
.avatar-paticka .chyba { margin-right: auto; font-size: .82rem; }
/* karta Profilová fotografie: ovládání vlevo, větší kulatý náhled vpravo */
.avatar-karta { display: flex; gap: 1.1rem; align-items: center; flex: 1; }
.avatar-karta-text { flex: 1; min-width: 0; }
.avatar-nahled {
  flex: none; margin-left: auto; width: 116px; height: 116px; border-radius: 999px;
  object-fit: cover; border: 2px solid var(--okraj); box-shadow: var(--stin-1);
}
.avatar-nahled-inicialy {
  display: flex; align-items: center; justify-content: center;
  background: var(--plocha); color: var(--seda); font-weight: 640; font-size: 1.9rem;
}

/* ---- našeptávač adres (kniha jízd, Mapy.cz) ---- */
.naseptavac-obal { position: relative; display: inline-flex; align-items: center; gap: .3rem; width: 100%; max-width: 26rem; }
.naseptavac-obal input { flex: 1; max-width: none; }
.naseptavac-gps { border: 1px solid var(--okraj); background: var(--karta); border-radius: var(--r-prvek); padding: .35rem .5rem; cursor: pointer; font-size: 1rem; }
.naseptavac-gps:hover { background: var(--plocha); }
.naseptavac-seznam { position: absolute; top: 100%; left: 0; right: 2.4rem; background: var(--vrstva); border: 1px solid var(--okraj); border-radius: var(--r-prvek); box-shadow: var(--stin-2); z-index: 90; max-height: 16rem; overflow-y: auto; }
.naseptavac-radek { padding: .42rem .7rem; font-size: .87rem; cursor: pointer; }
.naseptavac-radek:hover { background: var(--plocha); }
.naseptavac-radek strong { margin-right: .2rem; }
/* kotva sdíleného našeptávače (naseptavac.js) — obal bez GPS tlačítka */
.naseptavac-kotva { position: relative; display: block; min-width: 0; }
.naseptavac-kotva .naseptavac-seznam { right: 0; }

/* ============ přihlašovací stránka ============ */
.prihlaseni-stranka {
  min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background:
    radial-gradient(60rem 32rem at 85% -10%, rgba(85, 208, 212, .38), transparent 62%),
    radial-gradient(46rem 26rem at 5% 115%, rgba(76, 110, 245, .2), transparent 55%),
    linear-gradient(150deg, #1A2138, #12172B);
  padding: 1rem;
}
/* Přihlašovací karta je tmavá ve VŠECH motivech — logo v obrázku je bílé
   a na světlé kartě by zmizelo. Paleta je proto LOKÁLNÍ (přepis tokenů na
   samotném boxu), ne token motivu: nerozbije ji ani světlý motiv, ani
   budoucí přeladění, a všechny prvky uvnitř (pole, tlačítka, linky) se
   přizpůsobí samy. */
.prihlaseni-box {
  --karta: #1D2334; --plocha: #151A28; --plocha-jemna: #222941; --pole: #141927;
  --inkoust: #E3E8F4; --seda: #96A0BE;
  --okraj: #2B3450; --okraj-jemny: #242C42; --okraj-silny: #3B4566;
  --tyrkys-tmavy: #5FC9CE; --akcent-text: #12172B;
  --odkaz: #A9B6DC; --navy-text: #C7D0E8;
  --navy: #343E5B; --navy-svetla: #3D486A; --navy-tmava: #2A3249;
  background: #1D2334; color: #E3E8F4;
  border-radius: 16px; padding: 2rem 2.2rem;
  width: min(94vw, 24.5rem); box-shadow: 0 18px 50px rgba(0, 0, 0, .6);
}
.prihlaseni-box .logo { width: 250px; max-width: 80%; display: block; margin: 0 auto .5rem; }
.prihlaseni-box h1 { text-align: center; letter-spacing: .35em; text-indent: .35em; color: var(--tyrkys-tmavy); font-size: 1.05rem; }
.prihlaseni-box hr { border: 0; border-top: 1px solid var(--okraj); margin: 1.2rem 0; }
.prihlaseni-box .btn { width: 100%; margin-top: .45rem; }
.prihlaseni-box input { max-width: 100%; }
/* stránka ověřovacího kódu — širší box, výrazné pole na kód */
.kod-box { width: min(94vw, 30rem); padding: 2.4rem 2.6rem; text-align: center; }
.kod-box .logo { margin: 0 auto .7rem; }
.kod-nadpis { text-align: center; letter-spacing: normal; text-indent: 0;
  font-size: 1.3rem; color: var(--inkoust); margin: 0 0 .5rem; }
.kod-info { color: var(--seda); font-size: .92rem; line-height: 1.5; margin: 0 0 1.2rem; }
.kod-info strong { color: var(--inkoust); }
.kod-platnost { white-space: nowrap; }   /* „Platí 10 minut." se nezalomí */
.kod-box form label { text-align: left; }
.kod-vstup { font-family: var(--mono); font-size: 1.7rem; letter-spacing: .5em;
  text-align: center; text-indent: .25em; padding: .55rem .4rem; }
.kod-zpet { display: inline-block; margin-top: 1.1rem; font-size: .86rem;
  color: var(--seda); text-decoration: none; }
.kod-zpet:hover { color: var(--tyrkys-tmavy); text-decoration: underline; }

/* ============ Veřejné stránky (odkazy z e-mailů, F4 / Z21) ============
   Jednotný vzhled odvozený ze šablony rozesílek 960 px a z obálky
   systémových e-mailů (nastaveni.sablony.LAYOUT_VYCHOZI): karta max
   960 px na středu, navy hlavička se značkou, obsah, patička s kontakty.
   Rám je v templates/verejna_base.html; hlavička drží navy identitu
   i v tmavém režimu, zbytek jede na proměnných portálu. */
.verejna-stranka {
  min-height: 100vh; display: flex; align-items: center; justify-content: center;
  background: var(--plocha); padding: 2rem 0.9rem 2.6rem;
}
.verejna-karta {
  width: min(100%, 960px); background: var(--karta);
  border-radius: var(--r-karta); box-shadow: var(--stin-2); overflow: hidden;
}
.verejna-hlava {
  background: var(--navy); color: #FFFFFF; padding: 2.2rem 2.6rem 2rem;
}
.verejna-znacka {
  margin: 0 0 .6rem; font-size: .76rem; line-height: 1.4; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase; color: #FFFFFF;
}
.verejna-znacka a { color: #FFFFFF; text-decoration: none; }
.verejna-znacka a:hover { text-decoration: underline; }
.verejna-lomitko { padding: 0 .5rem; color: #9AA1BB; }
.verejna-badge { color: #E7E9F2; }
.verejna-nadpis {
  margin: 0; padding: 0; max-width: 46rem; font-size: 1.55rem; line-height: 1.3;
  font-weight: 700; letter-spacing: -.01em; color: #FFFFFF;
  text-align: left; text-indent: 0;
}
.verejna-nadpis:empty { display: none; }
.verejna-podtitul {
  margin: .7rem 0 0; max-width: 46rem; font-size: .95rem; line-height: 1.6;
  color: rgba(255, 255, 255, .88);
}
.verejna-obsah {
  padding: 2.1rem 2.6rem 2.4rem; font-size: 1rem; line-height: 1.75;
  color: var(--inkoust);
}
.verejna-obsah > :first-child { margin-top: 0; }
.verejna-obsah > :last-child { margin-bottom: 0; }
.verejna-obsah p { margin: 0 0 var(--mezera-m); }
.verejna-obsah h2 { margin: var(--mezera-l) 0 var(--mezera-s); font-size: 1.12rem; }
/* .drobky je globálně mono (meta údaje výpisů) — na veřejné stránce je to
   běžný vysvětlující text, takže si bere písmo stránky */
.verejna-obsah .drobky { color: var(--seda); font-family: inherit;
  font-size: .88rem; line-height: 1.6; }
/* formulářová pole veřejných stránek (výběr termínu, vzkaz) */
.verejna-obsah label { margin: 0 0 var(--mezera-xs); font-size: .92rem; }
.verejna-obsah textarea { width: 100%; max-width: 100%; display: block; }
.verejna-volba { display: flex; align-items: center; gap: .5rem; margin: .3rem 0; }
.verejna-volba input { width: auto; margin: 0; }
.verejna-pole { margin-top: var(--mezera-m); }
.verejna-obsah .tabulka { width: 100%; margin: var(--mezera-s) 0 var(--mezera-m); }
.verejna-obsah .btn { margin-top: .2rem; }
.verejna-obsah .chyba { color: var(--chyba); }
/* akce stránky (tlačítka) — pod obsahem, na středu jako v e-mailu */
.verejna-akce { margin: var(--mezera-l) 0 0; text-align: center; }
.verejna-akce .btn { min-width: 15rem; }
/* poznámka pod akcí (specifičtější než .verejna-obsah p — jinak by
   odstavcové pravidlo přebilo odsazení a linka by se lepila na tlačítko) */
.verejna-obsah p.verejna-pozn {
  margin: var(--mezera-l) 0 0; padding-top: var(--mezera-m);
  border-top: 1px solid var(--okraj); color: var(--seda);
  font-size: .84rem; line-height: 1.6;
}
.verejna-paticka {
  background: var(--plocha-jemna); border-top: 1px solid var(--okraj);
  padding: 1.2rem 2.6rem 1.4rem; color: var(--seda); font-size: .8rem;
  line-height: 1.7;
}
.verejna-paticka-radky {
  display: flex; flex-wrap: wrap; gap: .4rem 1.2rem;
  justify-content: space-between; align-items: flex-start;
}
.verejna-paticka strong { color: var(--inkoust); }
.verejna-kontakty { text-align: right; }
.verejna-kontakty a { color: var(--navy-text); font-weight: 600; text-decoration: none; }
.verejna-kontakty a:hover { text-decoration: underline; }
/* meta řádky patičky (obory, adresa) — čitelnost (M2): písmo aspoň
   .78rem a tmavší šedá, aby kontrast na světlé ploše (--plocha-jemna
   #F7F9FC) vyšel 6,7 : 1 místo hraničních 4,7 : 1 u --seda; v tmavém
   i černém motivu je --seda proti tmavé ploše 5,5 : 1, resp. 6,2 : 1,
   takže tam zůstává beze změny */
.verejna-obory {
  margin: .8rem 0 0; padding-top: .75rem; border-top: 1px solid var(--okraj);
  text-align: center; font-size: .78rem; color: #4F5872;
}
.verejna-adresa { margin: .45rem 0 0; text-align: center; font-size: .78rem;
  color: #4F5872; }
html[data-theme="tmavy"] .verejna-obory, html[data-theme="cerny"] .verejna-obory,
html[data-theme="tmavy"] .verejna-adresa, html[data-theme="cerny"] .verejna-adresa {
  color: var(--seda);
}
@media (max-width: 700px) {
  .verejna-stranka { padding: 0; align-items: stretch; }
  .verejna-karta { border-radius: 0; box-shadow: none; }
  .verejna-hlava { padding: 1.5rem 1.2rem 1.35rem; }
  .verejna-nadpis { font-size: 1.3rem; }
  .verejna-obsah { padding: 1.4rem 1.2rem 1.6rem; }
  .verejna-paticka { padding: 1rem 1.2rem 1.2rem; }
  .verejna-paticka-radky { justify-content: flex-start; }
  .verejna-kontakty { text-align: left; }
}

/* ============ responzivita ============ */
@media (max-width: 1280px) {
  .sidebar { --sidebar-sirka-vychozi: 200px; }
}
@media (max-width: 900px) {
  .kostra { flex-direction: column; }
  /* mobilní lišta nahoře: ☰ + logo; mezi 700 a 900 px vpravo místo pro cluster ikon
     (absolutní .profil-menu), pod 700 px jde cluster do toku jako vlastní řádek */
  .mob-lista { display: flex; align-items: center; gap: .6rem; padding: .45rem 9.4rem .45rem .7rem; height: 52px;
    background: linear-gradient(178deg, var(--pas-1), var(--pas-2)); color: var(--chrom-text-jasny);
    position: fixed; top: 0; left: 0; right: 0; z-index: 65; box-shadow: var(--stin-chrom); }
  body { padding-top: 52px; }                             /* místo pro fixní lištu; cluster ikon (≤ 700 px) jde pod ni */
  .mob-lista .logo-odkaz { display: block; line-height: 0; }
  .mob-lista .logo { height: 30px; width: auto; display: block; }
  .mob-menu-tl { width: 42px; height: 42px; flex: none; border: 1px solid var(--chrom-okraj); border-radius: 10px;
    background: var(--chrom-pole); color: var(--chrom-text-jasny); display: inline-flex; align-items: center;
    justify-content: center; cursor: pointer; padding: 0; }
  .mob-menu-tl svg { width: 22px; height: 22px; }
  /* sidebar = výsuvný panel zleva (drawer); uvnitř zůstává svislý strom — skupiny,
     sbalování, badge i patička fungují stejně jako na PC */
  .sidebar {
    position: fixed; top: 0; left: 0; bottom: 0; z-index: 960; width: min(320px, 86vw); max-height: none; margin: 0;
    border-radius: 0 18px 18px 0; padding-top: .8rem;
    transform: translateX(-104%); transition: transform .28s cubic-bezier(.2, .8, .2, 1), visibility 0s .28s; visibility: hidden;
  }
  html.menu-otevrene .sidebar { transform: none; visibility: visible; transition: transform .28s cubic-bezier(.2, .8, .2, 1); }
  .menu-plovouci { display: none !important; }
  .sidebar-uchop { display: none; }
  .sidebar-pozadi { display: block; position: fixed; inset: 0; z-index: 950; background: var(--prekryv);
    backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px);
    opacity: 0; pointer-events: none; transition: opacity .25s ease; }
  html.menu-otevrene .sidebar-pozadi { opacity: 1; pointer-events: auto; }
  html.menu-otevrene { overflow: hidden; }
  /* dotykové cíle ≥ 40 px (tablet, telefon) */
  .sidebar nav a, .sidebar nav span { padding-top: .5rem; padding-bottom: .5rem; font-size: .9rem; }
  .sidebar nav a.nav-sub { padding-top: .42rem; padding-bottom: .42rem; font-size: .86rem; }
  .sidebar nav .nav-sipka { width: 2.4rem; height: 2.4rem; }
  .sidebar .paticka { border-radius: 0 0 18px 0; }
  .obsah { padding: .8rem .9rem 2.5rem; }
  ul.kontroly { columns: 1; }
}
@media (max-width: 560px) {
  h1 { font-size: 1.25rem; }
  .hlavicka-sekce { flex-direction: column; align-items: flex-start; gap: .6rem; }
  .hlavicka-sekce > * { max-width: 100%; }
  .hlavicka-sekce > form { flex-wrap: wrap; }          /* inline filtry hlavičky (Mzdové podklady) */
  .dlazdice { grid-template-columns: 1fr; }
  input, select, textarea, .formular { max-width: 100%; }
}
@media (prefers-reduced-motion: no-preference) {
  .karta, .btn, .stitek, input, select, textarea { transition: background .14s ease, border-color .14s ease, box-shadow .14s ease, color .14s ease; }
}
@media (prefers-reduced-motion: reduce) {
  .nav-pilulka, .nav-indikator, .nav-podmenu, .sidebar nav a::before, .sidebar nav .nav-sipka svg,
  .nav-podmenu:not(.otevrene) .nav-podmenu-vnitrek { transition: none; }
}
@media print {
  .sidebar, #chatFab, #chatPanel, .profil-menu, .menu-plovouci { display: none !important; }
  .obsah { padding: 0 !important; max-width: none; }
  .karta, .tabulka { box-shadow: none; }
}

/* ---- sbalovací menu (tag-režim požadavek 17. 8.) ---- */
.menu-sbalit {
  width: 28px; height: 28px;
  border: 1px solid var(--chrom-okraj); border-radius: 7px;
  background: var(--chrom-pole); color: var(--chrom-text);
  cursor: pointer; padding: 0;
  display: flex; align-items: center; justify-content: center;
}
.menu-sbalit svg { display: block; }
.menu-sbalit:hover { background: var(--chrom-hover); color: var(--chrom-text-jasny); }
/* rozbalení menu: decentní vertikální proužek u levého okraje (experiment 20. 8.)
   — širší neviditelná hit-zóna, viditelný 4px pásek uprostřed výšky */
.menu-plovouci {
  display: none; position: fixed; left: 0; top: 0; bottom: 0; z-index: 900;
  width: 20px; border: 0; padding: 0; background: transparent; cursor: pointer;
}
.menu-plovouci svg { display: none; }
.menu-plovouci::before {
  content: ""; position: absolute; left: 5px; top: 50%;
  transform: translateY(-50%); width: 8px; height: 42vh;
  background: var(--okraj); opacity: .8;
  transition: opacity .15s ease, width .15s ease, background .15s ease;
}
.menu-plovouci:hover::before, .menu-plovouci:focus-visible::before {
  width: 12px; opacity: 1; background: var(--seda);
}
html.menu-sbaleno .menu-plovouci { display: block; }
html.menu-sbaleno .sidebar { display: none; }
/* na mobilu je menu vždy drawer — „sbalené“ desktop menu se neuplatní */
@media (max-width: 900px) { html.menu-sbaleno .sidebar { display: flex; } }

/* ---- profilový avatar + dropdown (vpravo nahoře) ---- */
/* mobil: absolute (odscrolluje se); ≥960px FIXED — cluster se při scrollu
   nehýbe a drží se sticky HERO baru (viewport souřadnice počítá zarovnejCluster) */
.profil-menu { position: absolute; top: .6rem; right: .8rem; z-index: 70; }
@media (min-width: 960px) { .profil-menu { position: fixed; } }
.profil-avatar {
  width: 38px; height: 38px; border-radius: 99px; border: 2px solid var(--karta);
  background: var(--navy); color: #fff; cursor: pointer; padding: 0;
  font: inherit; font-size: .8rem; font-weight: 640; overflow: hidden;
  box-shadow: var(--stin-2); display: flex; align-items: center; justify-content: center;
}
.profil-avatar img { width: 100%; height: 100%; object-fit: cover; }
.profil-avatar:hover { border-color: var(--tyrkys); }
.profil-dropdown {
  position: absolute; right: 0; top: calc(100% + .45rem); min-width: 17rem; width: max-content; max-width: min(24rem, 92vw);
  background: var(--vrstva); border: 1px solid var(--okraj); border-radius: var(--r-karta);
  box-shadow: var(--stin-2); padding: .35rem; 
}
.profil-dropdown[hidden] { display: none; }
.profil-kdo { margin: .3rem .6rem .45rem; font-size: .84rem; font-weight: 640;
  padding-bottom: .45rem; border-bottom: 1px solid var(--okraj); }
.profil-dropdown .profil-kdo { display: flex; align-items: center; justify-content: space-between; gap: .6rem; white-space: nowrap; }
.profil-dropdown a, .profil-dropdown .profil-odhlasit { white-space: nowrap; }   /* 22. 9. 2026: nabídka se lámala na úzkou (jméno na dva řádky) */
.motiv-prepinac {
  flex-shrink: 0; width: 28px; height: 28px; border-radius: 99px; cursor: pointer;
  border: 1px solid var(--okraj); background: var(--plocha); font-size: .82rem; line-height: 1; padding: 0;
}
.motiv-prepinac:hover { border-color: var(--tyrkys); }
/* 05/10/2026: obecná pravidla tlačítek v nabídkách ho roztahovala na celou šířku (254 px) — pevné kolečko vpravo od jména */
.profil-dropdown .profil-kdo .motiv-prepinac { display: inline-grid; place-items: center; flex: 0 0 28px; width: 28px; min-width: 0;
  max-width: 28px; height: 28px; margin: 0; padding: 0; color: var(--seda); }
.profil-dropdown .profil-kdo .motiv-prepinac svg { width: 15px; height: 15px; }
.profil-dropdown .profil-kdo .motiv-prepinac:hover { color: var(--tyrkys-tmavy); }
.profil-kdo small { color: var(--seda); font-weight: 480; }
.profil-dropdown a { display: flex; align-items: center; gap: .55rem; padding: .4rem .6rem; border-radius: var(--r-prvek);
  font-size: .86rem; text-decoration: none; color: var(--inkoust); }
.profil-dropdown a:hover { background: var(--plocha); color: var(--inkoust); }
/* odhlášení je formulář (POST) — tlačítko musí vypadat jako položka */
.profil-dropdown .profil-odhlasit-form { margin: 0; }
.profil-dropdown .profil-odhlasit { display: flex; align-items: center;
  gap: .55rem; width: 100%; padding: .4rem .6rem; font-size: .86rem;
  font-family: inherit; text-align: left; cursor: pointer;
  background: none; border: 0; color: var(--chyba); margin-top: .2rem;
  border-top: 1px solid var(--okraj); border-radius: 0 0 var(--r-prvek) var(--r-prvek); }
.profil-dropdown .profil-odhlasit:hover { background: var(--plocha); }
.profil-oddel { border-top: 1px solid var(--okraj); margin: .3rem .35rem; }

/* ---- akce stránky v hero clusteru (blok hero_akce v base.html):
   dropdown nabídky vlevo od zvonečku, oddělené svislým separátorem;
   prázdný slot se separátorem se nevykreslí ---- */
.hero-akce { display: flex; gap: .5rem; align-items: center; }
.hero-akce:not(:has(*)) { display: none; }
.hero-akce-oddel { display: none; width: 1px; height: 26px;
  background: var(--okraj-silny, var(--okraj)); }
/* mezi .hero-akce a oddel stojí form hledání → obecný sourozenec ~ */
.hero-akce:has(*) ~ .hero-akce-oddel { display: block; }
.hero-drop { position: relative; display: inline-flex; }
/* akční tlačítka hero = vzhled .btn-vedlejsi (jako patka panelu kalendáře:
   1px rámeček, bez stínu, hover plocha) — stanoveno 28. 8. 2026 */
.hero-drop-tlacitko {
  height: 38px; padding: 0 .95rem; cursor: pointer;
  border-radius: var(--r-prvek) !important;   /* mírné rohy, ne pill */
  border: 1px solid var(--okraj); background: var(--karta);
  color: var(--navy-text); font: inherit; font-size: .84rem;
  font-weight: 640; box-shadow: none;
  display: inline-flex; align-items: center; gap: .4rem; white-space: nowrap;
}
.hero-drop-tlacitko:hover { background: var(--plocha); color: var(--navy-text); border-color: var(--okraj-silny); }
.hero-drop .profil-dropdown { top: calc(100% + .45rem); }
.hero-drop .drop-rolovaci { max-height: 24rem; overflow-y: auto; }
.hero-drop .drop-hledani { width: calc(100% - .9rem); margin: .25rem .45rem .4rem;
  padding: .35rem .6rem; font-size: .82rem; border: 1px solid var(--okraj);
  border-radius: 9px; background: var(--plocha-jemna); color: var(--inkoust);
  position: sticky; top: 0; }
.hero-drop .profil-dropdown a.aktivni { color: var(--tyrkys-tmavy);
  font-weight: 640; }
/* ikonový sloupec položek — pevná šířka drží ikony i popisky nad sebou */
.hero-drop .profil-dropdown a { display: flex; align-items: center;
  gap: .55rem; }
.drop-ikona { width: 17px; display: inline-flex; align-items: center;
  justify-content: center; flex: none; color: var(--seda); }
.hero-drop .profil-dropdown a:hover .drop-ikona,
.hero-drop .profil-dropdown a.aktivni .drop-ikona,
.hero-drop-tlacitko .drop-ikona { color: currentColor; }
.hero-drop-tlacitko .drop-ikona { margin-right: .15rem; }
/* delší nabídky (subjekty, uživatelé) — scroll uvnitř panelu */
.hero-drop .profil-dropdown { max-height: 24rem; overflow-y: auto; }
/* přímé akce obsahu (Uložit / Zrušit) — VŽDY poslední před separátorem;
   Uložit je akcentní (nepřehlédnutelné), Zrušit decentní ghost */
.hero-drop-tlacitko.hero-ulozit {
  background: var(--tyrkys-tmavy); color: var(--akcent-text);
  border-color: var(--tyrkys-tmavy); font-weight: 660;
}
.hero-drop-tlacitko.hero-ulozit:hover { filter: brightness(1.07);
  color: var(--akcent-text); }
.hero-drop-tlacitko.hero-zrusit { color: var(--seda); }
.hero-drop-tlacitko.hero-zrusit:hover { color: var(--chyba); }
/* vyhledávání uprostřed hera — pill ve výšce řady tlačítek clusteru.
   Šířku nese FLEX-BASIS formuláře se shrink 1: pole se na užších
   displejích STLAČÍ místo zalomení na další řádek (15,6" laptop). */
/* GLOBÁLNÍ hledání v clusteru (25. 8., zadání): pole je skryté; lupa
   vlevo od zvonečku ho ROZBALÍ do strany místo akcí stránky (klik mimo
   sbalí). Šířka je na všech stránkách stejná (26rem). */
.hero-hledani {
  position: relative;              /* kotva panelu výsledků (.hp-panel) */
  display: flex; overflow: hidden;
  width: 0; opacity: 0; pointer-events: none;
  transition: width .28s cubic-bezier(.4, 0, .2, 1), opacity .2s;
}
#profilMenu.hledani-otevrene .hero-hledani {
  width: 26rem; opacity: 1; pointer-events: auto; overflow: visible;
}
#profilMenu.hledani-otevrene .hero-akce { display: none; }
/* hledani.js obaluje pole do span.hledani-obal (✕ mazání) — obal musí
   plnit formulář, jinak input drží jen obsahovou šířku */
.hero-hledani .hledani-obal { flex: 1 1 auto; width: 100%; min-width: 0; }
.hero-hledani input {
  height: 38px; width: 100%; min-width: 0; max-width: 100%;
  padding: 0 1.1rem; border-radius: 0 !important;   /* hranaté (zadání) */
  border: 1px solid var(--okraj); background: var(--karta);
  color: var(--inkoust); box-shadow: var(--stin-1); font-size: .85rem;
  transition: border-color .15s, box-shadow .15s;
}
/* klik/fokus = rozšíření (dvojnásobek, ale jen kolik dá volné místo)
   + zvýraznění aktivního pole */
.hero-hledani input:focus {
  border-color: var(--tyrkys-tmavy); outline: none;
  box-shadow: var(--fokus-kruh), var(--stin-2);
}
@media (max-width: 900px) { .hero-hledani, #hledatTlacitko { display: none; } }
/* panel globálního hledání pod hero polem (hledani-portal.js) */
.hp-panel {
  position: absolute; top: calc(100% + .45rem); left: 0; right: 0;
  z-index: 90; background: var(--karta); border: 1px solid var(--okraj);
  box-shadow: var(--stin-2); max-height: 30rem; overflow-y: auto;
  padding: .35rem;
}
/* nadpis kategorie = zřetelný pás (podklad + levá linka + počet), sticky
   při scrollu panelu; položky pod ním odsazené */
.hp-skupina { position: sticky; top: -.35rem; z-index: 1; display: flex; align-items: center; gap: .5rem;
  margin: .3rem 0 .15rem; padding: .32rem .6rem; border-radius: var(--r-prvek);
  background: color-mix(in srgb, var(--tyrkys) 12%, var(--plocha));
  border-left: 3px solid var(--tyrkys-tmavy);
  font-size: .72rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .06em; color: var(--tyrkys-tmavy); }
.hp-skupina:first-child { margin-top: 0; }
.hp-skupina .hp-pocet { margin-left: auto; font-weight: 600; letter-spacing: 0;
  color: var(--seda); text-transform: none; }
/* položka výsledku: kompaktní jeden řádek — název vlevo (ořez), popis
   vpravo šedě (ořez), menší písmo; výpis bude časem dlouhý */
.hp-radek { display: flex; flex-direction: row; align-items: baseline; gap: .6rem;
  padding: .22rem .6rem .22rem .85rem; text-decoration: none; color: var(--inkoust);
  border-radius: var(--r-prvek); font-size: .8rem; line-height: 1.3; }
.hp-radek:hover { background: var(--plocha); }
.hp-radek strong { flex: 1 1 60%; min-width: 0; font-weight: 600;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hp-radek small { flex: 0 1 40%; min-width: 0; font-size: .72rem; color: var(--seda);
  text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hp-radek + .hp-radek { border-top: 1px solid color-mix(in srgb, var(--okraj) 55%, transparent); }
.hp-nic { padding: .6rem; color: var(--seda); font-size: .85rem; }
/* modal všech výsledků hledání (Enter) — skupiny po max 25 + tlačítko
   celé skupiny; scroll jen v .modal-telo (pravidla modalů) */
.hp-modal-telo { padding: .4rem 1.2rem 1.1rem; }
.hp-modal-skupina { margin-bottom: 1.1rem; }
.hp-modal-skupina h3 {
  display: flex; align-items: center; gap: .5rem;
  margin: 0 0 .45rem; padding: 0 0 .4rem;
  border-bottom: 1px solid var(--okraj);
  font-size: .82rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--tyrkys-tmavy);
}
.hp-modal-skupina .nav-badge { margin-left: 0; }
.hp-modal-skupina .hp-radek { padding: .28rem .55rem; }
.hp-vice, .hp-zpet { margin-top: .45rem; }
.hp-zpet { margin-bottom: .8rem; }
@media (max-width: 900px) { .hero-akce-oddel { display: none !important; } }
/* backdrop otevřeného profil dropdownu — stejný vzhled jako modalový
   .ozn-pozadi (ztmavení + blur), jen bez centrování; sedí uvnitř
   .profil-menu jako první potomek, dropdown i ikony clusteru jsou nad ním */
.profil-pozadi {
  position: fixed; inset: 0; z-index: 69; background: var(--prekryv);   /* nad obsahem s vlastním z-indexem (chipy kalendáře), pod .profil-menu (70) */
  backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px);
}
.profil-pozadi[hidden] { display: none; }
/* rezerva pro cluster zvoneček + chat + avatar (3 × 38px + mezery) patří JEN
   prvnímu řádku obsahu (hero-bar) — zbytek stránky využívá plnou šířku */
/* rezervu počítá skript v base.html z reálné šířky clusteru (akce
   stránky ji rozšiřují) — fallback = šířka 3 ikon */
.obsah > .hlavicka-sekce:first-of-type,
.obsah > h1:first-of-type,
.obsah > .drobky:first-child,
.kal > .kal-toolbar {
  padding-right: var(--cluster-rezerva, clamp(8.6rem, 7.5vw, 9.4rem));
}
@media (max-width: 900px) {
  .profil-menu { top: .55rem; right: .6rem; }
  /* sidebar je statický horní pruh — rezervu potřebuje on, obsah začíná až pod ním */
  .obsah > .hlavicka-sekce:first-of-type, .obsah > h1:first-of-type,
  .obsah > .drobky:first-child, .kal > .kal-toolbar { padding-right: 0; }
  /* 1. 10. 2026: rezervu pro cluster drží fixní mobilní lišta (.mob-lista), hlavička
     stránky tedy využívá plnou šířku i se „sbaleným“ desktop menu */
  .obsah > .hlavicka-sekce:first-of-type > * { max-width: 100%; min-width: 0; }
}

/* ---- široký cluster (akce stránky) na tabletu: vlastní řádek nad hlavičkou (1. 10. 2026) ----
   nastavuje skript zarovnejCluster v base.html, když se cluster nevejde vedle nadpisu */
@media (min-width: 901px) {
  html.cluster-radek .profil-menu { position: relative; top: auto !important; right: auto;
    display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem;
    margin: .6rem clamp(.9rem, 1.6vw, 1.6rem) 0 calc(var(--sidebar-sirka, var(--sidebar-sirka-vychozi, 216px)) + 1.6rem); }
  html.cluster-radek.menu-sbaleno .profil-menu { margin-left: 1.6rem; }
  html.cluster-radek .hero-akce { flex-wrap: wrap; justify-content: flex-end; row-gap: .4rem; }   /* akce stránky se lámou jako celek, ikony zůstávají pohromadě */
  html.cluster-radek .obsah > .hlavicka-sekce:first-of-type, html.cluster-radek .obsah > h1:first-of-type,
  html.cluster-radek .obsah > .drobky:first-child, html.cluster-radek .kal > .kal-toolbar { padding-right: 0; }
}

/* ---- telefon: shluk ikon na VLASTNÍ řádek nad obsahem (21. 9. 2026) ----
   Plovoucí cluster (nápověda, hledání, zvoneček, chat, avatar, akce stránky)
   ležel na nadpisu: „Dobré ráno, Lukáši." bylo zakryté, z „Kalendáře" zbylo
   „Kal". Rezerva padding-right by ze 390 px ukrojila 160 px a nadpis by se
   lámal po jednom slově, proto cluster jde do toku jako samostatný řádek. */
@media (max-width: 700px) {
  .profil-menu {
    position: relative; top: auto; right: auto;
    justify-content: flex-end; margin: .5rem .8rem -.15rem;
    flex-wrap: wrap; row-gap: .4rem;                 /* akce stránky + ikony se lámou, nic neujíždí vlevo mimo displej */
  }
  .profil-menu .hero-akce { flex-wrap: wrap; justify-content: flex-end; row-gap: .4rem; }
  .mob-lista { padding-right: .7rem; }       /* rezervu už nikdo nepotřebuje */
}

/* ---- zvoneček notifikací (vedle avataru) ---- */
.profil-menu { display: flex; gap: .5rem; align-items: center; }
.zvonek {
  position: relative; width: 38px; height: 38px; border-radius: 99px;
  border: 2px solid var(--karta); background: var(--karta); color: var(--navy-text);
  cursor: pointer; padding: 0; display: flex; align-items: center; justify-content: center;
  box-shadow: var(--stin-2);
}
.zvonek:hover { border-color: var(--tyrkys); }

/* ---- efekt „máš tu něco nového“ (zvoneček + chat FAB) ---- */
.zvonek.ma-nove::after, #chatFab.ma-nove::after {
  content: ""; position: absolute; inset: -3px; border-radius: 99px;
  border: 2px solid var(--tyrkys); pointer-events: none;
  animation: pulz-pozornost 1.9s ease-out infinite;
}
.zvonek.ma-nove svg { animation: zvonek-kyv 1.9s ease-in-out infinite; transform-origin: 50% 4px; }
@keyframes pulz-pozornost {
  0% { transform: scale(.92); opacity: .85; }
  70% { transform: scale(1.35); opacity: 0; }
  100% { transform: scale(1.35); opacity: 0; }
}
@keyframes zvonek-kyv {
  0%, 55%, 100% { transform: rotate(0); }
  62% { transform: rotate(11deg); }
  70% { transform: rotate(-9deg); }
  78% { transform: rotate(5deg); }
  86% { transform: rotate(-3deg); }
}
@media (prefers-reduced-motion: reduce) {
  .zvonek.ma-nove::after, #chatFab.ma-nove::after { animation: none; opacity: .85; transform: none; inset: -2px; }
  .zvonek.ma-nove svg { animation: none; }
}
.zvonek-badge {
  position: absolute; top: -4px; right: -4px; background: var(--chyba); color: var(--text-na-vyplni);
  border-radius: 99px; font-size: .62rem; font-weight: 700; padding: 1px 5px; min-width: 16px;
}
/* ---- notifikační centrum (modal) ---- */
/* sdílený backdrop VŠECH modalů — pravidla: zavírání jen tlačítkem (žádný
   click-outside handler), výrazné rozostření ať modal nesplývá s pozadím,
   scroll lock řeší static/modal.js */
.ozn-pozadi {
  position: fixed; inset: 0; z-index: 90; background: var(--prekryv);
  display: flex; align-items: center; justify-content: center;  /* modaly vždy na střed obrazovky */
  padding: 1rem;
  backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px);
}
.ozn-pozadi[hidden] { display: none; }
.ozn-modal {
  width: min(64rem, 100%); max-height: min(88vh, 62rem); display: flex; flex-direction: column;
  background: var(--karta); border-radius: var(--r-karta); box-shadow: var(--stin-2);
  border: 1px solid var(--okraj);
}
.ozn-hlava {
  display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
  padding: .8rem var(--modal-okraj); border-bottom: 1px solid var(--okraj);
}
.ozn-hlava h2 { margin: 0; font-size: 1.02rem; }
/* PRAVIDLO: zavírací ✕ všech modalů patří do pravého horního rohu */
.ozn-hlava .ozn-zavrit { margin-left: auto; }
/* ---- jednotná hlavička prohlížečů souborů a fotek (23. 9. 2026, přání uživatele; vzor = sférický snímek):
   h2 = {ikona typu} název {štítek typu} · .hlava-akce = akce vpravo, VŠECHNY btn btn-maly btn-vedlejsi s ikonou
   a textem, ve stejném pořadí (specifické akce, Celá obrazovka, přepnutí zobrazení, V novém okně, Stáhnout)
   · .ozn-zavrit = sourozenec úplně vpravo. Galerie, náhled obrázku, kolab, náhled dokumentu i panorama. ---- */
.ozn-hlava .hlava-akce { margin-left: auto; display: inline-flex; align-items: center; gap: .4rem; flex-wrap: wrap; justify-content: flex-end; }
.ozn-hlava .hlava-akce + .ozn-zavrit { margin-left: .4rem; }
.ozn-hlava .hlava-akce .btn { white-space: nowrap; }
.ozn-hlava h2 > .ik { width: 1.05em; height: 1.05em; vertical-align: -.15em; margin-right: .2rem; }
.ozn-hlava h2 .hlava-typ { margin-left: .45rem; vertical-align: middle; font-weight: 600; }
.galerie-modal .hlava-typ, .pano-modal .hlava-typ { background: color-mix(in srgb, var(--tyrkys-tmavy) 30%, transparent); color: inherit; border-color: var(--tyrkys-tmavy); }
.ozn-zalozky { display: flex; gap: .3rem; background: var(--plocha); border-radius: 99px; padding: .18rem; }
.ozn-zalozky button {
  border: 0; background: transparent; border-radius: 99px; padding: .3rem .8rem;
  font: inherit; font-size: .82rem; color: var(--seda); cursor: pointer;
}
.ozn-zalozky button.aktivni { background: var(--karta); color: var(--inkoust); box-shadow: var(--stin-1); font-weight: 600; }
.ozn-zalozky button span { color: var(--tyrkys-tmavy); font-weight: 700; margin-left: .18rem; }
.ozn-vse[hidden] + .ozn-zavrit { margin-left: auto; }
/* jednotný vzor zavíracího ✕ všech modalů (dle #chpZavrit / .pm-hlava button) */
.ozn-zavrit {
  border: 0; background: transparent; font-size: 1.05rem; cursor: pointer;
  color: var(--seda); padding: .2rem .55rem; border-radius: 8px; line-height: 1.3;
}
.ozn-zavrit:hover { background: var(--plocha); color: var(--inkoust); }
.ozn-listy { overflow-y: auto; padding: .6rem .9rem .9rem; display: flex; flex-direction: column; gap: .14rem; }
.ozn-vse { margin-left: auto; margin-right: -.6rem;   /* těsně k zavíracímu ✕ */
  font-size: .76rem; white-space: nowrap; }
/* ===== notifikace: DOKOVANÝ postranní panel — stránka se smrskne =====
   Bez backdropu a bez zámku scrollu (vlastní otevírání v base.html);
   .kostra dostane margin-right, obsah se plynule přeskládá. */
.ozn-pozadi-panel { position: fixed; inset: 0 0 0 auto;
  width: min(30.5rem, 100vw); padding: 0; background: none;
  backdrop-filter: none; -webkit-backdrop-filter: none;
  display: block; align-items: stretch; justify-content: flex-end; }
.ozn-panel { width: 100%; height: 100dvh; max-height: none;
  border-radius: 0; border: 0; border-left: 1px solid var(--okraj);
  box-shadow: -14px 0 34px rgba(0, 0, 0, .22);
  animation: ozn-panel-in .2s ease-out; }
@keyframes ozn-panel-in {
  from { transform: translateX(2.2rem); }
  to { transform: none; } }
.kostra { transition: margin-right .2s ease; }
@media (min-width: 1100px) {
  body.ozn-otevrene .kostra { margin-right: 30.5rem; }
}
.ozn-panel-hlava { flex-wrap: nowrap; gap: .5rem;
  padding: .7rem .7rem .55rem 1.05rem; border-bottom: 0; }
.ozn-panel .ozn-paticka { border-top: 1px solid var(--okraj);
  padding: .55rem .7rem; display: flex; align-items: center; gap: .5rem; }
.ozn-pat-ikona { border: 1px solid var(--okraj); background: var(--karta);
  color: var(--seda); cursor: pointer; border-radius: 9px; flex: none;
  width: 2.15rem; height: 2.15rem; display: inline-flex;
  align-items: center; justify-content: center; padding: 0; }
.ozn-pat-ikona:hover { color: var(--tyrkys-tmavy);
  border-color: var(--tyrkys); }
.ozn-skryt-hore { margin-left: auto; }
.ozn-pat-vypln { flex: 1; display: none; }
.ozn-paticka:has(.ozn-vse-siroke[hidden]) .ozn-pat-vypln { display: block; }
.ozn-vse-siroke { flex: 1; border: 1px solid var(--okraj);
  background: var(--plocha); color: var(--inkoust); cursor: pointer;
  border-radius: 9px; padding: .5rem .8rem; font: inherit;
  font-size: .8rem; font-weight: 600; }
.ozn-vse-siroke:hover { border-color: var(--tyrkys);
  color: var(--tyrkys-tmavy); }
.ozn-panel-taby { margin: 0 1rem .6rem; }
.ozn-panel-taby button { flex: 1; text-align: center; }
.ozn-panel .ozn-listy { border-top: 1px solid var(--okraj);
  padding: .45rem .6rem .9rem; gap: .1rem; flex: 1; }

/* skupiny podle typu — nadpis skupiny je dominantní (8. 9. 2026): plná
   barva textu, větší písmo, levá linka + počet v barvě typu (--ozn-barva z JS) */
.ozn-skupina { display: flex; align-items: center; gap: .5rem;
  margin: .85rem .2rem .35rem; padding: .32rem .5rem .32rem .6rem;
  font-size: .8rem; text-transform: uppercase; letter-spacing: .07em;
  color: var(--text); background: var(--plocha); border-radius: 7px;
  border-left: 3px solid var(--ozn-barva, var(--tyrkys-tmavy)); }
.ozn-skupina:first-child { margin-top: .2rem; }
.ozn-skupina strong { font-weight: 800; }
.ozn-skupina small { font-weight: 800; font-size: .7rem; line-height: 1;
  color: #fff; background: var(--ozn-barva, var(--tyrkys-tmavy));
  border-radius: 999px; padding: .2rem .5rem; min-width: 1.5rem; text-align: center; }
.ozn-skupina-precist { margin-left: auto; border: 0; background: none;
  color: var(--seda); cursor: pointer; font: inherit; font-size: .68rem;
  text-transform: none; letter-spacing: 0; padding: .05rem .3rem;
  border-radius: 6px; opacity: 0; transition: opacity .12s; }
.ozn-skupina:hover .ozn-skupina-precist { opacity: 1; }
.ozn-skupina-precist:hover { color: var(--tyrkys-tmavy);
  background: var(--plocha); }

/* řádek: barevný chip typu | text + čas | tečka / akce na hoveru */
.ozn-radek { display: grid; grid-template-columns: 2rem 1fr auto;
  align-items: center; gap: .65rem; padding: .45rem .5rem;
  border-radius: 10px; cursor: pointer; position: relative; }
.ozn-radek:hover { background: var(--plocha); }
.ozn-radek.ulozena { box-shadow: inset 3px 0 0 var(--tyrkys-tmavy); }
.ozn-chip { width: 2rem; height: 2rem; border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  font-size: .95rem; flex: none; }
.ozn-radek-obsah { min-width: 0; display: flex; flex-direction: column;
  gap: .1rem; }
.ozn-radek-text { font-size: .78rem; line-height: 1.32;
  display: -webkit-box; -webkit-line-clamp: 2;
  -webkit-box-orient: vertical; overflow: hidden; }
.ozn-radek.neprectena .ozn-radek-text { font-weight: 600; }
.ozn-radek-obsah time { color: var(--seda); font-size: .66rem;
  font-variant-numeric: tabular-nums; }
.ozn-tecka { width: 7px; height: 7px; border-radius: 99px;
  background: var(--tyrkys); flex: none; visibility: hidden; }
.ozn-radek.neprectena .ozn-tecka { visibility: visible; }
.ozn-radek:hover .ozn-tecka { visibility: hidden; }
.ozn-radek-akce { position: absolute; right: .45rem; top: 50%;
  transform: translateY(-50%); display: inline-flex; gap: .22rem;
  opacity: 0; transition: opacity .12s; background: var(--plocha);
  padding-left: .3rem; }
.ozn-radek:hover .ozn-radek-akce,
.ozn-radek:focus-within .ozn-radek-akce { opacity: 1; }
.ozn-mini { border: 1px solid var(--okraj); background: var(--karta);
  color: var(--seda); cursor: pointer; border-radius: 7px;
  width: 1.6rem; height: 1.6rem; line-height: 1; font-size: .78rem;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0; }
.ozn-mini:hover { color: var(--tyrkys-tmavy); border-color: var(--tyrkys); }
.ozn-mini.aktivni { color: var(--tyrkys-tmavy); }
.ozn-mini.nebezpecna:hover { color: #ef4444; border-color: #ef4444; }
.ozn-akce-btn {
  border: 1px solid var(--okraj); background: var(--karta); color: var(--inkoust);
  border-radius: 99px; padding: .22rem .68rem; font: inherit; font-size: .76rem;
  cursor: pointer; text-decoration: none; display: inline-flex; align-items: center;
}
.ozn-akce-btn:hover { border-color: var(--tyrkys); background: var(--plocha); }
.ozn-akce-btn.hlavni { background: var(--navy); border-color: var(--navy); color: #fff; }
.ozn-akce-btn.hlavni:hover { background: var(--tyrkys-tmavy); border-color: var(--tyrkys-tmavy); }
.ozn-akce-btn.nebezpecna { color: var(--chyba); }
.ozn-akce-btn.nebezpecna:hover { border-color: var(--chyba); }
.ozn-prazdno { margin: 1.2rem 0; text-align: center; color: var(--seda); font-size: .86rem; }
@media (max-width: 560px) {
  .ozn-pozadi { padding: 0; }
  .ozn-modal { max-height: 100vh; height: 100%; border-radius: 0; }
  .ozn-text time { display: none; }
}


/* ============ Agenda dashboard — kokpit „můj den“ ============ */
.db-staty { display: flex; flex-wrap: wrap; padding: 0; margin-bottom: .7rem; overflow: hidden; }
.db-stat {
  flex: 1 1 11rem; display: flex; align-items: center; gap: .7rem;
  padding: .72rem 1rem; text-decoration: none; color: var(--inkoust);
  border-right: 1px solid var(--okraj); min-width: 0;
  border-radius: var(--r-prvek);
  transition: background-color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.db-stat:last-child { border-right: 0; }
.db-stat:hover { background: var(--plocha); }
.db-stat:focus-visible { outline: 2px solid var(--tyrkys); outline-offset: -2px; }
.db-stat-cislo { font-family: var(--mono); font-size: 1.55rem; font-weight: 660; line-height: 1; }
.db-stat-popis { display: flex; flex-direction: column; font-size: .8rem; font-weight: 560; line-height: 1.25; min-width: 0; }
.db-stat-popis small { color: var(--seda); font-weight: 440; font-size: .72rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.db-stat-pozor .db-stat-cislo { color: var(--chyba); }

.db-mriz { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); align-items: start; }
.db-changelog { margin-top: .7rem; }
.db-sit-radek { flex-wrap: wrap; }
.db-sit-radek .db-meta { white-space: nowrap; }
.db-sloupec { display: grid; gap: 1rem; min-width: 0; }
.db-karta { margin: 0; padding: .6rem .8rem .65rem; }
.db-hlava { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem;
  padding-bottom: .4rem; margin-bottom: .35rem; border-bottom: 1px solid var(--okraj); }
.db-hlava h3 { margin: 0; font-size: .86rem; }
.db-hlava h3 small { color: var(--seda); font-weight: 440; margin-left: .3rem; }
.db-vice { font-size: .76rem; text-decoration: none; color: var(--tyrkys-tmavy); font-weight: 560; white-space: nowrap; }
.db-vice:hover { text-decoration: underline; }
.db-mezititulek { margin: .55rem 0 .15rem; font-size: .72rem; text-transform: uppercase;
  letter-spacing: .07em; color: var(--seda); font-weight: 600; }

/* časová osa dne — od 11. 9. 2026 večer řádky ve sloupcích (rychlý přehled):
   Čas | proužek | Položka | Kalendář / typ | Subjekt / místo | Stav */
.db-udalost, .db-ud-hlavicka { display: grid; align-items: center; gap: .55rem; padding: .24rem .2rem; font-size: .85rem; min-width: 0;
  grid-template-columns: 6.2rem 3px minmax(9rem, 1.5fr) minmax(8rem, 1.1fr) minmax(6rem, .9fr) minmax(5.5rem, .9fr); }
.db-ud-hlavicka { font-size: .66rem; text-transform: uppercase; letter-spacing: .07em; color: var(--seda); font-weight: 600;
  padding-bottom: .1rem; border-bottom: 1px solid var(--okraj); margin-bottom: .1rem; }
.db-ud-hlavicka span:first-child { text-align: right; }
.db-ud-kontext, .db-ud-subjekt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--seda); font-size: .8rem; }
.db-ud-stitek { display: flex; justify-content: flex-end; min-width: 0; }
.db-ud-chip { font-size: .68rem; font-weight: 600; padding: .08rem .5rem; border-radius: 99px; background: var(--plocha); color: var(--seda);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
@media (max-width: 1500px) { .db-udalost, .db-ud-hlavicka { grid-template-columns: 6.2rem 3px minmax(9rem, 1.6fr) minmax(7rem, 1fr) minmax(5.5rem, .9fr); }
  .db-ud-subjekt { display: none; } }
@media (max-width: 1150px) { .db-udalost, .db-ud-hlavicka { grid-template-columns: 6.2rem 3px minmax(0, 1fr) 6rem; }
  .db-ud-kontext { display: none; } }
.db-udalost[data-href] { cursor: pointer; border-radius: var(--r-prvek, 6px); }
.db-udalost[data-href]:hover { background: var(--plocha); }
.db-udalost time { font-family: var(--mono); font-size: .74rem; color: var(--seda);
  text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.db-prouzek { width: 3px; height: 1rem; border-radius: 2px; }
.db-udalost .db-nazev { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.db-udalost.ztlumena { opacity: .62; }

/* řádky seznamů (úkoly, licence, zakázky, události) */
.db-radek { display: flex; align-items: baseline; gap: .5rem; padding: .26rem 0; font-size: .89rem; min-width: 0; }
.db-radek + .db-radek { border-top: 1px dashed var(--okraj); }
.db-radek .db-nazev { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.db-radek a.db-nazev { color: var(--inkoust); text-decoration: none; font-weight: 560; }
.db-radek a.db-nazev:hover { color: var(--tyrkys-tmavy); text-decoration: underline; }
.db-cislo { font-family: var(--mono); font-size: .78rem; text-decoration: none; color: var(--tyrkys-tmavy); font-weight: 620; white-space: nowrap; }
.db-cislo:hover { text-decoration: underline; }
.db-meta { color: var(--seda); font-size: .74rem; margin-left: auto; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 1; }
.db-radek .stitek { flex-shrink: 0; }
.db-termin {
  flex-shrink: 0; font-family: var(--mono); font-size: .72rem; font-variant-numeric: tabular-nums;
  border: 1px solid var(--okraj); border-radius: 999px; padding: .04rem .5rem; color: var(--seda);
}
.db-radek .db-meta + .db-termin, .db-radek .stitek + .db-termin { margin-left: 0; }
.db-radek .db-termin:last-child { margin-left: 0; }
.db-termin.dnes { color: var(--tyrkys-tmavy); border-color: var(--tyrkys); font-weight: 640; }
.db-termin.brzy { color: var(--varovani); background: var(--varovani-pozadi); border-color: var(--varovani-okraj); font-weight: 600; }
.db-termin.po-terminu { color: var(--text-na-vyplni); background: var(--chyba); border-color: var(--chyba); font-weight: 640; }
.db-prazdno { margin: .45rem 0 .3rem; color: var(--seda); font-size: .82rem; }
@media (max-width: 700px) {
  .db-stat { flex: 1 1 46%; border-right: 0; border-bottom: 1px solid var(--okraj); }
  .db-mriz { grid-template-columns: 1fr; }
}

/* ---- agenda v „setech": 4 řádky × 2 sloupce (jediné dítě = plná šířka) ---- */
.db-sety { display: grid; gap: 1rem; }
/* karty v setu jsou blokově zarovnané — oba sloupce řádku mají stejnou
   výšku (řídí ji vyšší karta, typicky měsíční kalendář v Setu 1) */
.db-set { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: stretch; }
.db-set > :only-child { grid-column: 1 / -1; }
/* sloupec se dvěma kartami (Chat + Poslední změny): poslední karta dorůstá,
   ať sloupec lícuje se sousední kartou setu */
.db-set > .db-sloupec { display: flex; flex-direction: column; gap: 1rem; }
.db-set > .db-sloupec > .db-karta:last-child { flex: 1; }
@media (max-width: 900px) { .db-set { grid-template-columns: 1fr; } }

/* ---- Zabbix na technickém dashboardu ---- */
.dh-zabbix { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; margin-top: .7rem; }
.zbx-badge { display: inline-flex; align-items: center; gap: .3rem; padding: .22rem .7rem;
  border-radius: 999px; font-size: .78rem; font-weight: 580; background: var(--plocha);
  border: 1px solid var(--okraj); color: var(--seda); text-decoration: none; }
.zbx-badge.zbx-ok { background: var(--ok-pozadi); color: var(--ok-text); border-color: var(--ok-okraj); }
.zbx-badge.zbx-pozor { background: var(--varovani-pozadi); color: var(--varovani); border-color: var(--varovani-okraj); }
.zbx-badge.zbx-chyba { background: var(--chyba-pozadi); color: var(--chyba); border-color: var(--chyba-okraj); }
a.zbx-badge.zbx-odkaz:hover { color: var(--tyrkys-tmavy); border-color: var(--tyrkys); }

/* severity Zabbix problémů (0–5) — pill vzor .db-termin */
.zbx-sev { flex-shrink: 0; padding: .1rem .55rem; border-radius: 999px; font-size: .72rem;
  font-weight: 620; border: 1px solid var(--okraj); background: var(--plocha); color: var(--seda); }
.zbx-sev-2 { background: var(--varovani-pozadi); color: var(--varovani); border-color: var(--varovani-okraj); }
.zbx-sev-3 { background: var(--varovani-pozadi); color: var(--varovani); border-color: var(--varovani); }
.zbx-sev-4 { background: var(--chyba-pozadi); color: var(--chyba); border-color: var(--chyba-okraj); }
.zbx-sev-5 { background: var(--chyba); color: var(--text-na-vyplni); border-color: var(--chyba); }

/* sparkline trendy 24 h — server-side SVG, barva dle motivu přes currentColor */
.trendy-mriz { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: .9rem 1.1rem; }
.trend { min-width: 0; }
.trend-hlava { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; margin-bottom: .25rem; }
.trend-popisek { font-size: .78rem; font-weight: 580; color: var(--seda); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.trend-hodnota { font-size: .86rem; font-weight: 680; font-variant-numeric: tabular-nums; white-space: nowrap; }
.trend-svg { display: block; width: 100%; height: 56px; color: var(--tyrkys-tmavy);
  background: var(--plocha); border: 1px solid var(--okraj); border-radius: 8px; }
.trend-svg .trend-cara { fill: none; stroke: currentColor; stroke-width: 1.6;
  stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.trend-svg .trend-rada-2 { color: var(--chyba); stroke: var(--chyba); }
.trend-rozsah { display: flex; justify-content: space-between; gap: .5rem; margin-top: .2rem;
  font-size: .68rem; color: var(--seda); font-variant-numeric: tabular-nums; }
.trend-rada-2-text { color: var(--chyba); }

/* taby v hlavičce karty — malý .prepinac pill */
.db-taby { display: inline-flex; background: var(--plocha); border: 1px solid var(--okraj);
  border-radius: 999px; overflow: hidden; }
.db-taby button { border: 0; background: none; padding: .24rem .72rem; font: inherit;
  font-size: .76rem; font-weight: 560; cursor: pointer; color: var(--seda); white-space: nowrap; }
.db-taby button.aktivni { background: var(--navy); color: #fff; font-weight: 620; }
.db-hlava .db-taby { margin-bottom: -.1rem; }

/* mini měsíční kalendář (Set 1) */
.agk-nav { display: inline-flex; align-items: center; gap: .4rem; }
.db-hlava-akce { display: inline-flex; align-items: center; gap: .7rem; }   /* filtry + odkaz vpravo v hlavičce (12. 9. 2026) */
.agk-nav strong { font-size: .8rem; font-weight: 620; min-width: 6.4rem; text-align: center;
  font-variant-numeric: tabular-nums; }
.agk-sipka { border: 1px solid var(--okraj); background: var(--karta); width: 1.5rem; height: 1.5rem;
  line-height: 1; cursor: pointer; color: var(--seda); font-size: .95rem; padding: 0; }
.agk-sipka:hover { color: var(--tyrkys-tmavy); border-color: var(--tyrkys); }
.agk-sipka.agk-dnes { width: auto; padding: 0 .5rem; font-size: .72rem;
  font-weight: 600; white-space: nowrap; }
/* trojměsíční náhled: předchozí / aktuální / následující — aktuální
   uprostřed zvýrazněný, boční ztlumené (dny klikací ve všech třech) */
.agk-tri { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: .25rem;
  flex: 0 0 auto; align-content: start; }       /* 12. 9. 2026: kompaktně nahoře, karta jen tak vysoká, jak mřížka potřebuje */
.db-karta:has(> .agk-tri) { display: flex; flex-direction: column; }
.agk-mesic { min-width: 0; border-radius: 12px; padding: .3rem .45rem .4rem; }
.agk-mesic:not(.aktualni) { opacity: .72; }
.agk-mesic.aktualni { background: var(--plocha); }
.agk-mesic-nazev { text-align: center; font-size: .72rem; font-weight: 620;
  color: var(--seda); margin-bottom: .1rem; }
.agk-mesic.aktualni .agk-mesic-nazev { color: var(--tyrkys-tmavy); }
@media (max-width: 900px) {
  .agk-tri { grid-template-columns: 1fr; }
  .agk-mesic:not(.aktualni) { display: none; }   /* na mobilu jen aktuální */
}
.agk-mriz { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; margin-top: .25rem; }
.agk-zahlavi { text-align: center; font-size: .64rem; text-transform: uppercase;
  letter-spacing: .05em; color: var(--seda); font-weight: 600; padding: .12rem 0; }
.agk-den { position: relative; border: 0; background: none; font: inherit; font-size: .78rem;
  font-variant-numeric: tabular-nums; padding: .3rem 0 .72rem; text-align: center;
  cursor: pointer; color: var(--inkoust); min-height: 1.95rem; }   /* 12. 9.: o něco nižší dny */
.agk-den:hover { background: var(--plocha); }
.agk-den.mimo { cursor: default; }
.agk-den.mimo:hover { background: none; }
.agk-den.dnes { font-weight: 700; color: var(--tyrkys-tmavy);
  background: var(--akcent-jemny);              /* --tyrkys 14 % */
  box-shadow: inset 0 0 0 1px rgba(85, 208, 212, .5);
  border-radius: 8px; }
.agk-den.dnes:hover { background: rgba(85, 208, 212, .24); }
.agk-den.vybrany { background: var(--navy); color: #fff; }
.agk-den.vybrany:hover { background: var(--navy); }
/* dnešek vybraný jiným dnem nepřebít — tyrkysový rámeček zůstává */
.agk-den.vybrany.dnes { background: var(--navy); color: #fff;
  box-shadow: inset 0 0 0 1px var(--tyrkys); }
/* počet událostí dne — malé číslo v pravém horním rohu buňky */
.agk-pocet { position: absolute; top: .08rem; right: .12rem;
  font-size: .6rem; line-height: 1; font-weight: 700;
  color: var(--tyrkys-tmavy); background: none; }
.agk-den.vybrany .agk-pocet { color: #fff; }

/* filtr kalendářů (zaškrtávací multivýběr v hlavičce karty Měsíc) */
.agk-filtr-obal { position: relative; display: inline-flex; }
.agk-filtr { position: absolute; top: calc(100% + .35rem); right: 0; z-index: 40;
  min-width: 15rem; max-width: 24rem; background: var(--karta);
  border: 1px solid var(--okraj);
  border-radius: 12px; box-shadow: var(--stin-2); padding: .4rem;
  display: flex; flex-direction: column; gap: .1rem;
  max-height: min(60vh, 24rem); overflow-y: auto; overscroll-behavior: contain; }
/* 11. 9. 2026 večer: řádky byly nečitelné — globální label/input mají margin a řádek měl overflow:hidden,
   text se ořezával; teď pevná výška řádku, bez ořezu, jen název s ellipsis */
.agk-filtr label { display: flex; align-items: center; gap: .55rem; margin: 0;
  font-size: .82rem; line-height: 1.35; min-height: 1.9rem; cursor: pointer; overflow: visible;
  padding: .2rem .5rem; border-radius: 8px; color: var(--inkoust); }
.agk-filtr label:hover { background: var(--plocha-jemna); }
.agk-nazev { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.agk-filtr input[type="checkbox"] {   /* globální input má width:100% + margin — tady ne */
  flex: none; width: .95rem; height: .95rem; accent-color: var(--tyrkys-tmavy); margin: 0; padding: 0; }
.agk-filtr-tlacitko.aktivni { color: var(--tyrkys-tmavy); }
.agk-tecka { flex: none; width: .62rem; height: .62rem; border-radius: 999px; }
.agk-tecka-portal { background: var(--seda); }

/* ---- Nastavení šablon: náhled e-mailu ---- */
.sablona-nahled {
  width: 100%; max-width: 640px; height: 320px; border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); background: #fff; display: block;
}

/* ---- Debuging: hlášení chyb (🐞) ---- */
.paticka-akce { display: flex; gap: .35rem; align-items: center; }
#bugTlacitko { font-size: .82rem; line-height: 1; }
/* Debuging 11. 9. 2026: číslo hlášení ke zkopírování, mezistavy, konzole */
.dbg-cislo { letter-spacing: .03em; }
.dbg-kopie { border: 0; background: transparent; cursor: pointer; color: var(--seda); padding: .1rem .3rem; border-radius: 6px; line-height: 1; }
.dbg-kopie:hover { background: var(--plocha); color: var(--inkoust); }
.dbg-kopie svg { width: .85rem; height: .85rem; vertical-align: -2px; }
.dbg-stav-forma { display: inline-flex; gap: .3rem; align-items: center; }
.dbg-stav-forma select, .dbg-stav-forma input { height: 28px; font-size: .78rem; padding: 0 .4rem; }
.dbg-stav-forma input { width: 6.5rem; }
.dbg-konzole { font-size: .72rem; white-space: pre-wrap; word-break: break-all; background: var(--plocha); border-radius: var(--r-prvek); padding: .5rem .7rem; max-height: 14rem; overflow: auto; margin: .4rem 0 0; }
/* Debuging widget (static/debuging-widget.js, 2. 10. 2026) má vlastní styly s prefixem
   dbgw-; v portálu mu jen předáváme tokeny motivu (světlý / tmavý / černý). */
.dbgw, .dbgw-toast, .dbgw-spoustec {
  --dbgw-karta: var(--karta); --dbgw-text: var(--inkoust); --dbgw-seda: var(--seda);
  --dbgw-okraj: var(--okraj); --dbgw-jemna: var(--plocha-jemna); --dbgw-pole: var(--pole);
  --dbgw-akcent: var(--tyrkys-tmavy); --dbgw-akcent-text: var(--akcent-text); --dbgw-chyba: var(--chyba);
  --dbgw-prekryv: var(--prekryv); --dbgw-pismo: inherit;
}
.dbgw .bug-tip { margin: 0; }
.bug-tip {
  margin: 0; font-size: .8rem; line-height: 1.5; color: var(--inkoust);
  background: var(--varovani-pozadi); border: 1px solid var(--varovani-okraj);
  border-radius: var(--r-prvek); padding: .55rem .75rem;
}
.bug-tip kbd {
  font-family: inherit; font-size: .74rem; font-weight: 600; line-height: 1.3;
  background: var(--karta); color: var(--inkoust);
  border: 1px solid var(--okraj); border-bottom-width: 2px; border-radius: 5px;
  padding: .05rem .34rem;
}

/* DEV odznak — nezaměnitelnost vývojové instance (settings.PROSTREDI == "dev") */
/* badge s vlastním pozadím — čitelný na navy sidebaru i světlé/tmavé ploše */
.dev-odznak { display: inline-block; margin-left: .45rem; padding: .08rem .5rem;
  vertical-align: middle; background: #C0392B; color: #fff; border-radius: 6px;
  font-size: .68em; font-weight: 700; letter-spacing: .1em; }

/* Podkategorie sekce (Zabezpečení → Přehled | Firewall) — stejný vzor jako
   .prepinac na dashboardu (tokeny fungují ve všech třech motivech) */
.podkategorie { display: inline-flex; margin: -.35rem 0 .8rem; background: var(--karta);
  border: 1px solid var(--okraj); border-radius: 999px; overflow: hidden; box-shadow: var(--stin-1); }
.podkategorie a, .podkategorie .aktivni { padding: .38rem 1rem; font-size: .85rem;
  text-decoration: none; color: var(--seda); }
.podkategorie a:hover { color: var(--tyrkys-tmavy); background: var(--plocha); }
.podkategorie .aktivni { background: var(--navy); color: #fff; font-weight: 620; }

/* ============ Dashboard „Velín“ — hero pás + widgety ============ */
/* Hero je tmavý pás ve VŠECH motivech (jako sidebar) — identita portálu.
   Odstín i síla aurory jdou z tokenů: midnight-black má neutrální variantu
   a ve světlém motivu je aurora ztlumená, ať hero neblikne do očí. */
.db-hero {
  display: flex; align-items: center; gap: 1.4rem; margin: 0 0 .8rem;
  padding: 1.1rem 1.4rem; border-radius: 20px; color: var(--chrom-text-jasny);
  background:
    radial-gradient(820px 380px at 88% -45%, var(--aurora-1), transparent 62%),
    radial-gradient(640px 340px at 8% 135%, var(--aurora-2), transparent 55%),
    linear-gradient(150deg, var(--pas-1), var(--pas-2));
  position: relative; overflow: hidden;
  box-shadow: var(--stin-chrom);
}
.dh-datum { display: flex; flex-direction: column; align-items: flex-start;
  padding-right: 1.3rem; border-right: 1px solid var(--chrom-linka); }
.dh-den { font-family: var(--mono); font-size: 1.7rem; font-weight: 640; line-height: 1;
  color: var(--tyrkys); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dh-mesic { font-size: .74rem; color: var(--chrom-text); margin-bottom: .3rem; text-transform: capitalize; }
.dh-svatek { text-transform: none; }  /* „Adam a Eva", ne „Adam A Eva" */
.dh-text h2 { margin: 0 0 .15rem; font-size: 1.15rem; color: var(--chrom-text-jasny); }
.dh-stav { margin: 0; font-size: .95rem; color: var(--chrom-text); }
.dh-stav code { color: var(--tyrkys); background: var(--chrom-pole);
  padding: .05rem .4rem; border-radius: 5px; }
.dh-ok { color: #8FDCB2; }
.dh-pozor { color: #F0B76A; font-weight: 620; }

/* widget karty: jemný zdvih na hover (jen tam, kde je na co klikat) */
.db-karta { transition: box-shadow .15s ease, transform .15s ease; }
.db-karta:hover { box-shadow: var(--stin-2); transform: translateY(-1px); }
@media (prefers-reduced-motion: reduce) {
  .db-karta, .db-karta:hover,
  .db-stat, .db-stat:hover { transition: none; transform: none; }
}

/* stav služeb (technický pohled) */
.sluzby-mriz { display: flex; flex-wrap: wrap; gap: .35rem; }
.sluzba-pill { display: inline-flex; align-items: center; gap: .35rem;
  padding: .22rem .6rem; border-radius: 99px; font-size: .8rem;
  border: 1px solid var(--okraj); background: var(--plocha-jemna); }
.sluzba-pill::before { content: ""; width: 7px; height: 7px; border-radius: 99px; }
.sluzba-pill.ok::before { background: var(--ok); }
.sluzba-pill.chyba { border-color: var(--chyba-okraj); background: var(--chyba-pozadi); }
.sluzba-pill.chyba::before { background: var(--chyba); }
.ok-stitek { background: var(--ok-pozadi); color: var(--ok-text); }

@media (max-width: 760px) {
  .db-hero { flex-direction: column; align-items: flex-start; gap: .6rem; }
  .dh-datum { flex-direction: row; gap: .5rem; border-right: 0; padding-right: 0; }
}

/* KPI přehled uvnitř hero pásu — čisté hodnoty na auroře (bez dlaždic),
   tyrkysová čísla se září, jemné separátory */
.db-staty-hero { flex: 1; margin-bottom: 0; gap: 0; overflow: visible; }
/* technické metriky v hero: víc dlaždic → mřížka, ne jedna řada */
.db-staty-metriky { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.db-staty-metriky .db-stat { border-right: 1px solid var(--chrom-linka); border-bottom: 0; padding: .4rem 1rem; }
.db-staty-hero .db-stat {
  color: var(--chrom-text-jasny); background: none; box-shadow: none; backdrop-filter: none;
  padding: .45rem 1.25rem; border-radius: var(--r-prvek);
  border-right: 1px solid var(--chrom-linka);
}
.db-staty-hero .db-stat:last-child { border-right: 0; }
.db-staty-hero .db-stat:hover {
  background: var(--chrom-hover); transform: none; box-shadow: none;
}
.db-staty-hero .db-stat-cislo { color: var(--tyrkys); font-weight: 700;
  text-shadow: 0 0 18px rgba(85, 208, 212, .4); }
.db-staty-hero .db-stat-popis { color: var(--chrom-text-jasny); }
.db-staty-hero .db-stat-popis small { color: var(--chrom-text-tlumeny); }
.db-staty-hero .db-stat-pozor .db-stat-cislo { color: #F0B76A;
  text-shadow: 0 0 16px rgba(240, 183, 106, .4); }

/* Osobní přehled agendy (3. 9. 2026) — místo tmavého aurora pásu čisté
   stat KARTY sjednocené se zbytkem dashboardu (světlá plocha, jemný stín,
   tyrkysový hover), stejné rozměry i zarovnání */
.db-prehled { margin: 0 0 .8rem; }
.db-prehled-mrizka { display: grid; gap: .55rem;
  grid-template-columns: repeat(auto-fill, minmax(13.5rem, 1fr)); }
/* na širokém monitoru vyvážený počet sloupců (server: --prehled-cols dle
   počtu dlaždic), ať nezůstane poloprázdný druhý řádek (3. 9. 2026) */
@media (min-width: 1500px) {
  .db-prehled-mrizka { grid-template-columns:
    repeat(var(--prehled-cols, 6), minmax(0, 1fr)); }
}
.db-prehled .db-stat { background: var(--karta); border: 1px solid var(--okraj-karty);
  border-radius: 12px; padding: .7rem .9rem; box-shadow: var(--stin-1);
  border-right: 1px solid var(--okraj-karty); color: var(--inkoust);
  min-height: 3.55rem; }
.db-prehled .db-stat:hover { border-color: var(--tyrkys);
  box-shadow: var(--stin-2); transform: translateY(-1px); background: var(--karta); }
.db-prehled .db-stat-cislo { color: var(--tyrkys-tmavy); font-size: 1.5rem; }
.db-prehled .db-stat-pozor .db-stat-cislo { color: var(--chyba); }

/* ============ Načítání — segmentový progress pruh ============
   Použití: kontejner.innerHTML = nacitani("Načítám …") (helper v base.html).
   Determinovaná varianta: spanům přidat .plny (x z n hotovo), bez animace. */
.nacitani { display: flex; flex-direction: column; gap: .45rem;
  align-items: flex-start; padding: .5rem 0; }
.nacitani-pruh { display: flex; gap: 4px; }
.nacitani-pruh span { width: 11px; height: 15px; border-radius: 4px;
  background: var(--plocha); border: 1px solid var(--okraj);
  animation: nacitani-vlna 1.3s ease-in-out infinite;
  animation-delay: calc(var(--i, 0) * 55ms); }
.nacitani-pruh span.plny { background: var(--tyrkys); border-color: var(--tyrkys);
  animation: none; }
.nacitani-popis { font-size: .8rem; color: var(--seda); }
@keyframes nacitani-vlna {
  0%, 60%, 100% { background: var(--plocha); border-color: var(--okraj); }
  30% { background: var(--tyrkys); border-color: var(--tyrkys); }
}
@media (prefers-reduced-motion: reduce) {
  .nacitani-pruh span { animation: none; background: var(--akcent-pozadi); }
}

/* ============ Počasí (Agenda dashboard) ============ */
.pocasi-karta { margin-bottom: .7rem; }
.pocasi-karta h3 small { font-size: 1em; }   /* město stejně velké jako „POČASÍ“ */
.pocasi-ovladani { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; }
.pocasi-hledani { position: relative; }
.pocasi-hledani input { width: 13rem; padding: .34rem .6rem; font: inherit; font-size: .82rem;
  color: var(--inkoust); background: var(--plocha-jemna);
  border: 1px solid var(--okraj); border-radius: var(--r-prvek); }
.pocasi-hledani input:focus { outline: 2px solid var(--tyrkys); outline-offset: -1px; }
.pocasi-naseptavac { position: absolute; top: calc(100% + 4px); right: 0; z-index: 90;
  min-width: 16rem; display: flex; flex-direction: column; overflow: hidden;
  background: var(--karta); border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); box-shadow: var(--stin-2); }
/* display:flex přebíjí UA pravidlo pro [hidden] → prázdný rámeček
   vypadal jako linka pod vyhledávacím polem */
.pocasi-naseptavac[hidden] { display: none; }
.pocasi-naseptavac button { display: flex; flex-direction: column; align-items: flex-start;
  gap: .1rem; padding: .45rem .7rem; font: inherit; font-size: .84rem; text-align: left;
  color: var(--inkoust); background: none; border: 0; cursor: pointer; }
.pocasi-naseptavac button:hover { background: var(--plocha-jemna); }
.pocasi-naseptavac button small, .pocasi-nenalezeno { color: var(--seda); font-size: .72rem; }
.pocasi-nenalezeno { padding: .45rem .7rem; }
.pocasi-tl { display: inline-flex; align-items: center; gap: .3rem; padding: .34rem .65rem;
  font: inherit; font-size: .8rem; font-weight: 560; color: var(--inkoust); cursor: pointer;
  background: var(--plocha-jemna); border: 1px solid var(--okraj); border-radius: 99px;
  transition: background-color .16s ease, border-color .16s ease; }
.pocasi-tl:hover { border-color: var(--tyrkys); }
.pocasi-tl[aria-expanded="true"] { background: var(--akcent-jemny); border-color: var(--tyrkys); }

.pocasi-ted { display: flex; align-items: center; gap: 1.15rem; flex-wrap: wrap;
  padding: .25rem 0 .55rem; }
.pt-ikona { font-size: 2.4rem; line-height: 1; }
.pt-teplota { font-family: var(--mono); font-size: 2.35rem; font-weight: 700; line-height: 1;
  color: var(--tyrkys-tmavy); font-variant-numeric: tabular-nums; letter-spacing: -.03em; }
.pt-popis { display: flex; flex-direction: column; gap: .12rem; font-weight: 600; }
.pt-popis small, .pt-udaj small { color: var(--seda); font-weight: 440; font-size: .74rem; }
.pt-udaj { display: flex; flex-direction: column; gap: .12rem; font-size: .88rem;
  font-weight: 560; padding-left: 1.1rem; border-left: 1px solid var(--okraj-jemny); }
.pocasi-sipka { display: inline-block; font-weight: 700; color: var(--tyrkys-tmavy); }
/* letové podmínky pro dron — vpravo, semafor barvou verdiktu */
.pt-dron { margin-left: auto; }
.pt-dron b { font-weight: 700; }
.pt-dron-ik { vertical-align: -2px; color: var(--tyrkys-tmavy); }
.pt-dron.ok b { color: var(--ok); }
.pt-dron.pozor b { color: var(--varovani); }
.pt-dron.spatne b { color: var(--chyba); }

/* pás dnů (11. 9. 2026 večer): 8 větších karet místo 16 drobných — čitelné na první pohled */
.pocasi-pas { display: flex; gap: .4rem; overflow-x: auto; padding-bottom: .2rem;
  scrollbar-width: thin; }
.pocasi-den { flex: 1 1 0; min-width: 5rem; display: flex; flex-direction: column;
  align-items: center; gap: .22rem; padding: .6rem .25rem .65rem; font: inherit;
  cursor: pointer; color: var(--inkoust); background: none; border: 0;
  border-radius: var(--r-prvek);
  transition: background-color .16s ease, box-shadow .16s ease; }
.pocasi-den:hover { background: var(--plocha-jemna); }
/* bez zdvihu a vnějšího stínu — pás má overflow-x a ořezával by je */
.pocasi-den.aktivni { background: var(--akcent-pozadi);
  box-shadow: inset 0 0 0 1px var(--tyrkys); }
.pd-den { font-size: .84rem; font-weight: 640; display: flex; flex-direction: column;
  align-items: center; line-height: 1.15; }
.pd-den small { color: var(--seda); font-weight: 440; font-size: .7rem; }
.pd-ikona { font-size: 1.75rem; line-height: 1.15; margin: .05rem 0; }   /* 14 dní (11. 9. 2026 večer) */
/* slovní popis počasí pod ikonou (11. 9. 2026 — samotné emoji „🌫️“ nebylo srozumitelné) */
.pd-popis { font-size: .72rem; line-height: 1.2; color: var(--seda); text-align: center; max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 0 .1rem; }
.pd-teploty { font-family: var(--mono); font-size: .95rem; display: flex; gap: .35rem;
  align-items: baseline; font-variant-numeric: tabular-nums; }
.pd-teploty small { color: var(--seda); }

/* modal detailu dne — pravidla modalů: zavírání jen tlačítkem, blur backdrop
   (ozn-pozadi), scroll jen uvnitř .pm-telo */
.pocasi-modal { width: min(68rem, 100%); max-height: min(88vh, 62rem);  /* 5 souhrnných dlaždic v jedné řadě */
  display: flex; flex-direction: column; overflow: hidden;
  background: var(--karta); border-radius: var(--r-karta);
  box-shadow: var(--stin-vyrazny); }
.pm-hlava { display: flex; align-items: center; justify-content: space-between;
  padding: .55rem .6rem .55rem 1rem;
  background: linear-gradient(150deg, #1A2138, #12172B); color: #fff; }
.pm-hlava h3 { margin: 0; font-size: .95rem; font-weight: 640; color: #fff;
  text-transform: none; letter-spacing: 0; }
.pm-hlava button { border: 0; background: none; color: var(--chrom-text); font-size: 1.05rem;
  cursor: pointer; padding: .2rem .55rem; border-radius: 8px; }
.pm-hlava button:hover { background: rgba(255, 255, 255, .1); color: #fff; }
/* tělo modalu NEscrolluje — souhrn a graf drží, roluje jen .pm-hodiny */
.pm-telo { padding: .9rem 1rem 1rem; display: flex; flex-direction: column;
  flex: 1; min-height: 0; overflow: hidden; }
.pm-hodiny { margin-top: .9rem; overflow-y: auto; overscroll-behavior: contain;
  min-height: 0; border-radius: var(--r-karta);
  scrollbar-width: none; }                      /* scrollbar skrytý, scroll funguje */
.pm-hodiny::-webkit-scrollbar { display: none; }
.pm-hodiny .pm-tabulka { margin: 0; overflow: visible; }  /* overflow hidden by rozbil sticky thead */
.pm-tabulka thead th { position: sticky; top: 0; z-index: 2; }
.pm-souhrn { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: .5rem; margin-bottom: .9rem; }
.pm-fakt { display: flex; gap: .6rem; align-items: center; padding: .55rem .75rem;
  background: var(--plocha-jemna); border-radius: var(--r-prvek); }
.pm-fakt > span:last-child { display: flex; flex-direction: column; line-height: 1.3;
  min-width: 0; }
.pm-fakt b { font-size: .95rem; white-space: nowrap; }
.pm-fakt small { color: var(--seda); font-size: .72rem; }
.pm-ikona { font-size: 1.5rem; line-height: 1; }
.pm-tabulka td small { color: var(--seda); }
/* řádek aktuální hodiny (jen dnešní den) */
.pm-tabulka tr.ted td { background: var(--akcent-pozadi); }
.pm-tabulka tr.ted td:first-child { box-shadow: inset 3px 0 0 var(--tyrkys);
  color: var(--tyrkys-tmavy); font-weight: 700; }
.pm-cislo { font-family: var(--mono); font-variant-numeric: tabular-nums;
  white-space: nowrap; }
.pm-cislo.dest { color: var(--tyrkys-tmavy); font-weight: 640; }
/* přepínač oblíbených měst v titulku detailu dne */
.pm-hlava .pm-mesto { display: inline-block; width: auto; max-width: 16rem; font: inherit; font-weight: 640; color: var(--inkoust); background: transparent; border: 0; border-bottom: 1px dashed var(--okraj-silny); border-radius: 0; padding: 0 .1rem; margin: 0; cursor: pointer; vertical-align: baseline; }
.pm-hlava .pm-mesto:hover { border-bottom-color: var(--tyrkys); color: var(--tyrkys-tmavy, var(--tyrkys)); }
.pm-uas { white-space: nowrap; font-weight: 600; }
.pm-uas.ok { color: var(--ok); }
.pm-uas.pozor { color: var(--varovani); }
.pm-uas.spatne { color: var(--chyba); }

/* ---- oblíbená místa (modal: přidání hledáním, výběr, ✕, DnD řazení) ---- */
/* 11. 9. 2026 večer: modal Oblíbená místa — hledání přes celou šířku (dřív 13 rem), nápověda, vzdušnější řádky */
.oblibena-modal { width: min(46rem, 100%); max-height: min(84vh, 56rem); }
.oblibena-modal .pm-hlava { padding: .8rem .8rem .8rem 1.2rem; }
.oblibena-modal .pm-hlava h3 { font-size: 1.05rem; }
.oblibena-modal .pm-telo { padding: 1rem 1.2rem 1.2rem; }
.oblibena-hledani { width: 100%; display: block; }
.oblibena-modal .pm-telo > * { width: 100%; align-self: stretch; box-sizing: border-box; }   /* pm-telo je flex sloupec — hledání přes celou šířku */
.oblibena-modal .hledani-obal { display: flex; width: 100%; }   /* hledani.js obaluje input do inline-flex obalu → roztáhnout */
.oblibena-modal .pocasi-hledani input { width: 100% !important; max-width: none !important; margin-top: 0;
  font-size: .95rem; padding: .6rem .9rem .6rem 2.4rem; border-radius: 10px;
  background: var(--plocha-jemna) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238a93a6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='7'/><path d='m20 20-3.5-3.5'/></svg>") no-repeat .8rem center; }
.oblibena-hledani .pocasi-naseptavac { left: 0; right: 0; min-width: 0; }
.oblibena-hledani .pocasi-naseptavac button { font-size: .9rem; padding: .5rem .9rem; }
.oblibena-napoveda { margin: .45rem 0 0; font-size: .76rem; color: var(--seda); }
.oblibena-seznam { list-style: none; margin: .7rem 0 0; padding: 0;
  overflow-y: auto; overscroll-behavior: contain; min-height: 0;
  display: flex; flex-direction: column; gap: .35rem; }
.oblibena-seznam li { display: flex; align-items: center; gap: .6rem;
  background: var(--plocha-jemna); border-radius: 10px; border: 1px solid transparent;
  padding: .55rem .8rem; transition: border-color .12s; }
.oblibena-seznam li:hover { border-color: var(--okraj-silny, var(--okraj)); }
.obl-pocasi { display: flex; align-items: center; gap: .4rem; margin-left: auto;
  font-family: var(--mono); font-variant-numeric: tabular-nums; }
.obl-pocasi b { font-size: 1rem; font-weight: 700; color: var(--tyrkys-tmavy); }
.obl-ik { font-size: 1.25rem; line-height: 1; }
.oblibena-seznam li.presouvane { opacity: .45; }
.oblibena-seznam li.obl-nad { box-shadow: inset 0 0 0 1px var(--tyrkys); }
.obl-uchop { cursor: grab; color: var(--seda); user-select: none; font-size: .95rem; }
.obl-vybrat { flex: 1; display: flex; flex-direction: column; align-items: flex-start;
  gap: .02rem; background: none; border: 0; font: inherit; font-weight: 600;
  color: var(--inkoust); cursor: pointer; text-align: left; padding: .15rem .2rem; }
.obl-vybrat:hover { color: var(--tyrkys-tmavy); }
.obl-vybrat small { color: var(--seda); font-weight: 440; font-size: .74rem; }
.obl-smazat { border: 0; background: none; color: var(--seda); cursor: pointer;
  font-size: .9rem; padding: .25rem .45rem; border-radius: 6px; }
.obl-smazat:hover { color: var(--chyba); background: var(--chyba-pozadi); }
li.obl-prazdno { background: none; color: var(--seda); font-size: .85rem; padding: .3rem .1rem; }
.pocasi-graf { display: block; width: 100%; height: 104px; }
.pg-cara { fill: none; stroke: var(--tyrkys-tmavy); stroke-width: 2.5;
  stroke-linejoin: round; stroke-linecap: round; }
.pg-srazka { fill: var(--tyrkys); opacity: .55; }
.pg-hodina, .pg-teplota { fill: var(--seda); font-size: 11px; text-anchor: middle;
  font-family: var(--mono); }

/* radar nahrazuje přehled uvnitř karty; [hidden] musí porazit display třídek */
.pocasi-ted[hidden], .pocasi-pas[hidden], .pocasi-radar[hidden] { display: none; }
/* loading počasí vycentrovaný na střed bloku */
#pocasiTed .nacitani, #pocasiMapa .nacitani { align-items: center; width: 100%; }
.pocasi-radar { margin-top: .35rem; }
#pocasiMapa { height: 340px; border-radius: var(--r-prvek); overflow: hidden;
  border: 1px solid var(--okraj); background: var(--plocha-jemna); z-index: 0; }
.pocasi-radar-liste { display: flex; align-items: center; gap: .6rem; padding-top: .45rem; }
.pocasi-radar-liste input[type="range"] { flex: 1; accent-color: var(--tyrkys-tmavy); }
.pocasi-radar-cas { font-family: var(--mono); font-size: .8rem; color: var(--seda);
  min-width: 6.5rem; text-align: right; font-variant-numeric: tabular-nums; }

@media (max-width: 760px) {
  .pocasi-hledani input { width: 100%; }
  .pt-udaj { padding-left: .7rem; }
  #pocasiMapa { height: 280px; }
}

/* podnadpis pod nadpisem stránky — obecný vzor (Dashboard: stavová věta);
   nová stránka: <div><h1>…</h1><p class="podnadpis">…</p></div> v .hlavicka-sekce */
.podnadpis, .stav-radek { margin: var(--mezera-xs) 0 0; font-size: .93rem; color: var(--seda); }
.stav-radek .dh-ok { color: var(--ok); }
.stav-radek .dh-pozor { color: var(--varovani); font-weight: 620; }
.stav-radek code { color: var(--tyrkys-tmavy); background: var(--plocha-jemna);
  padding: .05rem .4rem; border-radius: 5px; }

/* ==== OSTRÉ HRANY (experiment 19. 8. 2026) =============================
   Celá aplikace přechází na ostré rohy. Zaoblení drží jen:
   1) pill přepínače (vzor .prepinac) — výjimka na přání uživatele,
   2) skutečné kruhy (avatary, kruhová tlačítka, tečky stavu, početní
      odznaky) — kruh je tvar prvku, ne zaoblený roh.
   Zrušení experimentu = smazat tento blok (tokeny --r-karta/--r-prvek
   výše zůstaly, uplatní se znovu). */
*, *::before, *::after { border-radius: 0 !important; }
/* pill přepínače (rodina .prepinac) */
.prepinac, .podkategorie, .kal-pohledy, .db-taby, .db-taby button,
.ozn-zalozky, .ozn-zalozky button { border-radius: 999px !important; }
/* kruhy: avatary, kruhová tlačítka, tečky, početní odznaky */
.profil-avatar, .profil-avatar img, .avatar-nahled, .zk-avatar, .zk-rejm-znak, .zvonek,
.zvonek.ma-nove::after, #chatFab.ma-nove::after, .zvonek-badge,
.chp-avatar, .chp-online, .chp-unread, #chpZpetBadge, .nav-badge, .ozn-tecka,
.ud-avatar, .ud-avatar img, .ud-avatar-vrstva,
.kal-mesic-den.dnes .kal-mesic-cislo, .kal-now::before,
.agk-pocet, .sluzba-pill::before,
.potvrzeni-ikona, .ozn-skupina small { border-radius: 999px !important; }   /* ikona potvrzení, počet ve skupině oznámení (8. 9. 2026) */
/* kartičky událostí (týden/den) — velmi lehké zaoblení (zadání 1. 9.) */
.kal-chip { border-radius: 3px !important; }

/* výběr uživatele hledáním (uzivatele.js) — vzor .subjekt-vyber */
.uziv-vyber { position: relative; display: flex; flex-wrap: wrap;
  align-items: center; gap: .35rem; width: 100%; max-width: 30rem; }
.uziv-vyber-pole { flex: 1; min-width: 9rem; }
.uziv-cipy { display: contents; }
.uziv-cip { display: inline-flex; align-items: center; gap: .3rem;
  padding: .12rem .5rem; font-size: .8rem; border-radius: 999px;
  border: 1px solid var(--okraj); background: var(--plocha);
  white-space: nowrap; }
.uziv-cip-x { border: 0; background: none; cursor: pointer; padding: 0;
  color: var(--seda); font-size: .95rem; line-height: 1; }
.uziv-cip-x:hover { color: var(--chyba); }
.uziv-naseptavac { position: absolute; top: calc(100% + .2rem); left: 0;
  right: 0; z-index: 90; background: var(--karta);
  border: 1px solid var(--okraj); box-shadow: var(--stin-2);
  max-height: 16rem; overflow-y: auto; padding: .25rem; }
.uziv-nasep-radek { display: block; width: 100%; text-align: left;
  border: 0; background: none; padding: .4rem .6rem; cursor: pointer;
  font: inherit; font-size: .85rem; color: var(--inkoust); }
.uziv-nasep-radek:hover { background: var(--akcent-pozadi); }
.uziv-nasep-prazdne { color: var(--seda); }
.uziv-nasep-nic { padding: .5rem .6rem; }

/* pojistná paměť (pojistka.js) — karta nabídky obnovy vpravo dole */
.pojistka-karta {
  position: fixed; right: 1rem; bottom: 1rem; z-index: 96;
  display: flex; align-items: center; gap: .6rem;
  background: var(--karta); border: 1px solid var(--okraj);
  box-shadow: var(--stin-2); border-radius: var(--r-prvek);
  padding: .55rem .8rem; font-size: .85rem; max-width: 34rem; }

/* potvrzovací modal (potvrzeni.js — náhrada browser confirm; podoba 8. 9. 2026):
   ikona druhu v kroužku + otázka jako titulek, vysvětlení pod ní odsazené pod
   titulek, tlačítka vpravo se stejnou minimální šířkou; nebezpečné = červené.
   Sdílené i pro dotaz/výběr/oznámení (.potvrzeni-modal). */
.potvrzeni-modal { width: min(30rem, 100%); }
/* širší varianta (28. 9. 2026): modal s delším vstupem (např. text připomenutí) */
.potvrzeni-modal.potvrzeni-siroky { width: min(44rem, 100%); }
.potvrzeni-text { margin: 0; padding: 1.1rem 1.4rem .4rem; line-height: 1.5; }
.potvrzeni-paticka { display: flex; justify-content: flex-end; gap: .6rem; padding: 1.1rem 1.4rem 1.3rem; }
.potvrzeni-paticka .btn { min-width: 7.5rem; justify-content: center; padding: .55rem 1.1rem; }
.potvrzeni-dialog .potvrzeni-hlava { display: flex; align-items: flex-start; gap: .85rem; padding: 1.3rem 1.1rem 0 1.4rem; }
.potvrzeni-dialog .potvrzeni-ikona { width: 2.5rem; height: 2.5rem; border-radius: 50%; flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--plocha); color: var(--tyrkys-tmavy); }
.potvrzeni-dialog .potvrzeni-ikona svg { width: 1.3rem; height: 1.3rem; }
.potvrzeni-dialog.nebezpecne .potvrzeni-ikona { background: var(--chyba-pozadi); color: var(--chyba); }
.potvrzeni-dialog .potvrzeni-titulek { margin: .45rem 0 0; font-size: 1.08rem; font-weight: 650; line-height: 1.35;
  color: var(--inkoust); flex: 1 1 auto; min-width: 0; }
.potvrzeni-dialog .ozn-zavrit { margin-left: auto; margin-top: .1rem; }
.potvrzeni-dialog .potvrzeni-text { padding: .55rem 1.4rem 0 4.75rem; color: var(--seda); font-size: .93rem;
  white-space: pre-line; }   /* &#10; / \n v data-potvrdit = nový řádek (04/10/2026) */
.potvrzeni-dialog .potvrzeni-text[hidden] { display: none; }
/* volby potvrzení (22. 9. 2026): zaškrtávátka a krátká textová pole pod
   vysvětlením, zarovnaná pod titulek; barvy jen z tokenů (tmavý motiv sedí) */
.potvrzeni-volby { display: grid; gap: .7rem; margin: .9rem 1.4rem .2rem 4.75rem; padding: .85rem 1rem;
  border: 1px solid var(--okraj); background: var(--plocha-jemna, var(--plocha)); }
.potvrzeni-volby[hidden] { display: none; }
.potvrzeni-volba { display: grid; grid-template-columns: 1.15rem 1fr; column-gap: .65rem; row-gap: .15rem; align-items: start;
  cursor: pointer; font-size: .95rem; line-height: 1.4; }
.potvrzeni-volba[hidden] { display: none; }
.potvrzeni-volba input[type="checkbox"] { width: 1.15rem; height: 1.15rem; margin: .12rem 0 0; accent-color: var(--tyrkys-tmavy); }
.potvrzeni-volba .potvrzeni-volba-popis { font-weight: 600; color: var(--inkoust); }
.potvrzeni-volba-napoveda { grid-column: 2; color: var(--seda); font-size: .82rem; line-height: 1.35; }
.potvrzeni-volba.potvrzeni-volba-text { grid-template-columns: 1fr; row-gap: .35rem; cursor: default; }
.potvrzeni-volba.potvrzeni-volba-text .potvrzeni-volba-popis { font-weight: 500; color: var(--seda); font-size: .88rem; }
/* 22. 9. 2026: textová volba bere celou šířku boxu voleb (delší text se dřív ořezával);
   28. 9. 2026: totéž pro víceřádkovou volbu ("typ":"text-vice" → textarea) */
.potvrzeni-volby input[type="text"], .potvrzeni-volby textarea { display: block; width: 100%; max-width: 100%;
  box-sizing: border-box; margin: 0; font-size: .95rem; }
.potvrzeni-volby textarea { font-family: inherit; line-height: 1.45; resize: vertical; min-height: 4.5rem; padding: .45rem .6rem; }
.potvrzeni-volba.potvrzeni-volba-text .potvrzeni-volba-napoveda { grid-column: 1; }
@media (max-width: 46rem) { .potvrzeni-volby { margin-left: 1.2rem; margin-right: 1.2rem; } }

/* řazení tabulek (razeni.js) — klikací hlavičky s indikátorem směru */
.tabulka th { cursor: pointer; user-select: none; }
.tabulka th.razeno-asc::after { content: " ▲"; font-size: .68em; color: var(--tyrkys-tmavy); }
.tabulka th.razeno-desc::after { content: " ▼"; font-size: .68em; color: var(--tyrkys-tmavy); }

/* ==================================================================
   GLOBÁLNÍ VZORY VZHLEDU (22. 8. 2026) — vzor: detail subjektu
   (/zakaznici/<slug>/#info) a modal „Nastavení subjektu“.
   ZÁVAZNÉ pro nový vývoj; zk-* názvy jsou legacy aliasy stejných
   pravidel (zakaznici/sklad šablony), nové šablony používají globální
   názvy. Dokumentace vzorů: CLAUDE.md → „Globální vzhledové vzory“.
   ================================================================== */

/* ---- nadpisy karet a panelů — jeden jazyk celého portálu:
   malé uppercase tyrkysové s linkou; akce v nadpisu nedědí uppercase */
.karta > h2, .zk-sekce .karta > h2, .cast > h2, .zk-cast > h2, .zk-sekce > h2 {
  display: flex; align-items: center; justify-content: space-between; gap: .8rem;
  margin: 0 0 .9rem; padding: 0 0 .55rem; border-bottom: 1px solid var(--okraj);
  min-height: 2.7rem; box-sizing: border-box;   /* stejná výška nadpisu s akcemi i bez nich (14. 9. 2026 večer) */
  font-size: .88rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--tyrkys-tmavy);
}
.karta > h2 .btn, .zk-sekce .karta > h2 .btn, .cast > h2 .btn, .zk-cast > h2 .btn, .zk-sekce > h2 .btn,
.karta > h2 .akce-btn, .zk-sekce .karta > h2 .zk-akce-btn,
.cast > h2 .akce-btn, .zk-cast > h2 .zk-akce-btn, .zk-sekce > h2 .zk-akce-btn {
  text-transform: none; letter-spacing: 0; color: var(--inkoust); font-weight: 540;
}
/* metadata v nadpisu (počty, e-mail) — bez uppercase, drží se u titulku vlevo */
.karta > h2 small, .cast > h2 small, .cast-nadpis small, .zk-form-nadpis small {
  text-transform: none; letter-spacing: 0;
}
/* AKČNÍ SKUPINA V NADPISU KARTY — jednotná napříč portálem (14. 9. 2026 večer, přání uživatele: velikosti, zarovnání
   a odsazení byly rozházené). Vše v .pt-h2-akce (tlačítka, odkazy-tlačítka, selecty, vstupy, štítky, inline formuláře,
   rozbalovací summary) má výšku 1.9rem, písmo .76rem, mezery .4rem, zarovnané vpravo na střed řádku nadpisu. */
.karta > h2 .pt-h2-akce, .cast > h2 .pt-h2-akce, .zk-sekce > h2 .pt-h2-akce, h2 .pt-h2-akce,
h2 .pt-akt-filtr, h2 .pt-klient-hlava-akce, h2 .ud-filtr, h2 .ud-profil-akce, h2 .zk-rej-prepinac {
  display: inline-flex; align-items: center; justify-content: flex-end; gap: .4rem; flex-wrap: wrap; margin-left: auto;
  text-transform: none; letter-spacing: 0; font-weight: 500; font-size: .76rem; color: var(--inkoust); }
.pt-h2-akce > *, .pt-h2-akce form > *, .pt-h2-akce .pt-inline > *,
h2 .pt-akt-filtr > *, h2 .pt-klient-hlava-akce > *, h2 .ud-filtr > *, h2 .ud-profil-akce > *, h2 .zk-rej-prepinac > * { margin: 0; }
.pt-h2-akce form, .pt-h2-akce .pt-inline, .pt-h2-akce details { display: inline-flex; align-items: center; gap: .4rem; margin: 0; }
.pt-h2-akce .btn, .pt-h2-akce a.btn, .pt-h2-akce button.btn, .pt-h2-akce summary.btn, .pt-h2-akce .hero-drop-tlacitko,
.pt-h2-akce select, .pt-h2-akce input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.pt-h2-akce .stitek, .pt-h2-akce label.pt-volba, .pt-h2-akce .pt-vyber-vse,
h2 .pt-akt-filtr select, h2 .pt-akt-filtr .pt-volba, h2 .pt-klient-hlava-akce .btn, h2 .pt-klient-hlava-akce summary,
h2 .ud-filtr select, h2 .ud-filtr .btn, h2 .ud-filtr input, h2 .ud-filtr a, h2 .ud-profil-akce .btn, h2 .zk-rej-prepinac .btn, h2 .zk-rej-prepinac a {
  display: inline-flex; align-items: center; gap: .3rem; height: 1.9rem; box-sizing: border-box; padding: 0 .6rem;
  font-size: .76rem; line-height: 1; font-weight: 540; vertical-align: middle; white-space: nowrap; }
.pt-h2-akce .btn svg, .pt-h2-akce summary svg { width: .85rem; height: .85rem; flex: none; }
.pt-h2-akce select { width: auto; max-width: 14rem; padding-right: 1.6rem; }
.pt-h2-akce input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]) { width: 11rem; max-width: 14rem; font-weight: 400; }
.pt-h2-akce .stitek { padding: 0 .6rem; color: var(--seda); font-weight: 540; }
.pt-h2-akce .stitek.aktivni { color: var(--tyrkys-tmavy); }
.pt-h2-akce .pt-pridelit-kompaktni > summary, .pt-h2-akce .btn-ikona { width: 1.9rem; padding: 0; justify-content: center; }
.pt-h2-akce .info-tip { margin: 0; height: 1.9rem; }
.pt-h2-akce .drobky { font-size: .72rem; font-weight: 400; }
.pt-h2-akce input[type="checkbox"] { width: .95rem; height: .95rem; margin: 0; }
/* TLAČÍTKA V NADPISECH KARET = vždy „vedlejší“ vzhled (16. 9. 2026, přání uživatele: plné navy „Nový úkol“ / „Nová aktivita“
   působily těžce a rozbíjely jednotný vzhled po vzoru Soubory / Klient). Výjimky: nebezpečné akce (červené) a potvrzení
   formuláře v režimu úprav karty Klient (Uložit v .pt-klient-akce). Platí napříč portálem, včetně starších h2 bez .pt-h2-akce. */
.karta > h2 .btn, .cast > h2 .btn, .zk-cast > h2 .btn, .zk-sekce > h2 .btn, .zk-sekce .karta > h2 .btn, h2.pt-dil-nadpis .btn,
h2 .pt-h2-akce .btn, h2 .pt-klient-hlava-akce .btn, h2 .ud-profil-akce .btn, h2 .pt-akt-filtr .btn, h2 .ud-filtr .btn {
  background: var(--karta); color: var(--inkoust); border: 1px solid var(--okraj); box-shadow: none; font-weight: 540; }
.karta > h2 .btn:hover, .cast > h2 .btn:hover, .zk-cast > h2 .btn:hover, .zk-sekce > h2 .btn:hover, .zk-sekce .karta > h2 .btn:hover, h2.pt-dil-nadpis .btn:hover,
h2 .pt-h2-akce .btn:hover, h2 .pt-klient-hlava-akce .btn:hover, h2 .ud-profil-akce .btn:hover, h2 .pt-akt-filtr .btn:hover, h2 .ud-filtr .btn:hover {
  border-color: var(--tyrkys); color: var(--tyrkys-tmavy); background: var(--plocha); }
.karta > h2 .btn svg, .cast > h2 .btn svg, .zk-sekce > h2 .btn svg, h2.pt-dil-nadpis .btn svg, h2 .pt-h2-akce .btn svg { color: var(--tyrkys-tmavy); }
h2 .btn.btn-nebezpecny, .karta > h2 .btn.btn-nebezpecny { color: var(--chyba); border-color: color-mix(in srgb, var(--chyba) 45%, var(--okraj)); }
h2 .btn.btn-nebezpecny:hover, .karta > h2 .btn.btn-nebezpecny:hover { border-color: var(--chyba); background: color-mix(in srgb, var(--chyba) 8%, var(--karta)); color: var(--chyba); }
h2 .pt-klient-akce .btn:not(.btn-vedlejsi) { background: var(--navy); color: #fff; border-color: var(--navy); }   /* jen Uložit v režimu úprav karty */
h2 .pt-klient-akce .btn:not(.btn-vedlejsi):hover { background: var(--navy); color: #fff; border-color: var(--tyrkys); }
h2 .pt-klient-akce .btn:not(.btn-vedlejsi) svg { color: #fff; }

/* ---- mozaika panelů (grid 2 sloupců částí .cast) */
.mozaika, .zk-info-form {
  max-width: none; display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: stretch;
}
/* tablet landscape (1280) se sidebarem: dva sloupce panelů už mačkaly pole (telefon „CZ +420 | 7“) → jeden sloupec od 1300 px */
@media (max-width: 1300px) { .mozaika, .zk-info-form { grid-template-columns: 1fr; } }
.cast, .zk-cast {
  background: var(--karta); border: 1px solid var(--okraj-karty);
  border-radius: 14px; padding: 1rem 1.2rem; min-width: 0; box-shadow: var(--stin-1);
}

/* ---- nadpis pod-sekce formuláře (uvnitř panelu či modalu) */
.cast-nadpis, .zk-form-nadpis {
  margin: 0 0 .8rem; padding: 0 0 .5rem; background: none; border: 0;
  border-bottom: 1px solid var(--okraj); font-size: .88rem; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase; color: var(--tyrkys-tmavy);
}

/* ---- blok = mřížka popisek|pole; popisky lícují vpravo na společné svislici */
.blok, .zk-blok {
  display: grid; grid-template-columns: 8rem minmax(0, 1fr);
  gap: .85rem 1.3rem; align-items: center;
}
/* u vysokých polí (textarea) popisek nesedí na střed, ale k první řádce */
.blok > .popisek:has(+ span textarea), .blok > .popisek:has(+ textarea) {
  align-self: start; padding-top: .3rem; }
.popisek, .zk-popisek {
  font-size: .8rem; color: var(--seda); text-align: right;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0;
}
.siroke { grid-column: 2 / -1; }
/* dvě související pole na jednom řádku hodnotového sloupce
   (např. „3 měsíce“, „první pondělí“) */
.pole-radek { display: flex; gap: .5rem; align-items: center; }
.pole-radek > * { flex: 1 1 auto; min-width: 0; }
/* tlačítko v řádku se nesmí roztahovat ani přetéct za okraj modalu */
.pole-radek > .btn, .pole-radek > button { flex: 0 0 auto; }
@media (max-width: 640px) {
  .blok, .zk-blok { grid-template-columns: minmax(0, 1fr); }   /* minmax(0, …): 1fr = min-content a dlouhý <option> roztáhl mřížku na 563 px */
  .popisek, .zk-popisek { text-align: left; }
}

/* ============ Sdílený strom stylu „plus" (30. 8. 2026, ZÁVAZNÉ pro
   nové stromové seznamy): ⊞/⊟ přepínač (plus-ctverec/minus-ctverec),
   složka zavřená/otevřená, svislé vodicí linky, aktivní zvýraznění.
   Starší stromy (sk-/fs-/pz-/nu-) nesou tentýž vzhled vlastními
   třídami — nové stromy staví VÝHRADNĚ na těchto. ============ */
.plus-strom, .plus-strom-deti { list-style: none; margin: 0; padding: 0; }
.plus-strom-deti { margin-left: .6rem; border-left: 1px solid var(--okraj);
  padding-left: .5rem; }
.plus-strom-radek { display: flex; align-items: center; gap: .4rem;
  border-radius: 6px; padding: .16rem .15rem; }
.plus-strom-radek:hover { background: var(--plocha); }
.plus-strom-radek a { flex: 1; min-width: 0; text-decoration: none;
  color: inherit; font-size: .82rem; line-height: 1.25;
  padding: .1rem 0; white-space: nowrap; overflow: hidden;
  text-overflow: ellipsis; }
/* Počet položek (16. 9. 2026, přání uživatele: dřív se lepil rovnou na text nadpisu). Ve STROMECH a panelech
   zůstává holé číslo, jen s odsazením; u NADPISŮ karet je z něj tlumené políčko, aby se nepletlo s názvem.
   Rohy portál globálně sráží na hranaté (* { border-radius: 0 !important }), proto se tu rádius neřeší. */
.plus-strom-pocet { flex: none; margin-left: .5rem; color: var(--seda); font-size: .7rem;
  font-variant-numeric: tabular-nums; }
h1 > .plus-strom-pocet, h2 > .plus-strom-pocet, h3 > .plus-strom-pocet,
.pt-h2-obsah > .plus-strom-pocet, .cast-nadpis > .plus-strom-pocet {
  vertical-align: middle; padding: .08rem .42rem; background: var(--plocha-jemna);
  border: 1px solid var(--okraj-jemny); line-height: 1.45; font-weight: 600;
  letter-spacing: 0; text-transform: none; }
.plus-strom-sip { flex-shrink: 0; display: inline-flex; background: none;
  border: 0; color: var(--seda); cursor: pointer; padding: 0;
  border-radius: 4px; }
.plus-strom-sip:hover { color: var(--inkoust); }
.plus-strom-sip svg { width: .82rem; height: .82rem; }
.plus-strom-sip .plus-strom-minus { display: none; }
.plus-strom-sip[data-sbaleno="0"] .plus-strom-plus { display: none; }
.plus-strom-sip[data-sbaleno="0"] .plus-strom-minus { display: inline-flex; }
.plus-strom-sip.plus-strom-bez { visibility: hidden; }
.plus-strom-ik { flex-shrink: 0; display: inline-flex; width: 16px;
  justify-content: center; color: var(--seda); }
.plus-strom-ik svg { width: 14px; height: 14px; }
.plus-strom-ik .plus-strom-otevrena { display: none; }
.plus-strom-sip[data-sbaleno="0"] ~ .plus-strom-ik .plus-strom-zavrena,
.plus-strom-radek:has(.plus-strom-sip[data-sbaleno="0"]) .plus-strom-zavrena { display: none; }
.plus-strom-radek:has(.plus-strom-sip[data-sbaleno="0"]) .plus-strom-otevrena { display: inline-flex; }
.plus-strom-uzel:has(> .plus-strom-radek .plus-strom-sip[data-sbaleno="1"]) > .plus-strom-deti { display: none; }
.plus-strom-aktivni { background: var(--akcent-jemny); }
.plus-strom-aktivni:hover { background: rgba(85, 208, 212, .2); }
.plus-strom-aktivni a { font-weight: 600; }
.plus-strom-nadpis { margin: 0 0 .2rem; padding: .1rem .1rem .25rem;
  font-size: .92rem; font-weight: 650; text-transform: none;
  letter-spacing: 0; color: var(--inkoust); }
/* volitelný přepínač zobrazení nad stromem (svislý mini-seznam v panelu) */
.plus-strom-pred { display: flex; flex-direction: column; gap: .12rem;
  margin: 0 0 .8rem; }
.plus-strom-pred a { text-decoration: none; padding: .32rem .5rem;
  border-radius: 8px; color: var(--inkoust); font-size: .84rem; }
.plus-strom-pred a:hover { background: var(--plocha-jemna); }
.plus-strom-pred a.aktivni { background: var(--navy); color: #fff; font-weight: 620; }

/* ---- karta Údaje ve dvou blokových sloupcích (sdílí detail uživatele
   v Nastavení i Můj profil) — nadpisy dalších částí sloupce drží odstup */
.ud-sloupce { display: grid; grid-template-columns: 1fr 1fr;
  gap: .2rem 3rem; align-items: start; }
.ud-sloupce .cast-nadpis { margin-top: 1.3rem; }
.ud-sloupce > div > .cast-nadpis:first-child { margin-top: 0; }
@media (max-width: 1400px) { .ud-sloupce { grid-template-columns: 1fr; }
  .ud-sloupce > div + div .cast-nadpis:first-child { margin-top: 1.3rem; } }
/* v užší kartě Můj profil (mřížka 58/42) se sloupce lámou dřív */
@media (max-width: 1700px) { .profil-udaje .ud-sloupce {
  grid-template-columns: 1fr; }
  .profil-udaje .ud-sloupce > div + div .cast-nadpis:first-child {
    margin-top: 1.3rem; } }

/* ---- pole na lince — kontejner .linkovy-form (mozaika a modal-form ho mají
   implicitně); bez rámečku, jen spodní linka, focus tyrkys */
.linkovy-form input:not([type=checkbox]):not([type=radio]), .linkovy-form select, .linkovy-form textarea,
.mozaika input:not([type=checkbox]), .mozaika select, .mozaika textarea,
.modal-form input:not([type=checkbox]), .modal-form select, .modal-form textarea,
.zk-info-form input:not([type=checkbox]), .zk-info-form select, .zk-info-form textarea,
.zk-kt-form input:not([type=checkbox]), .zk-kt-form select, .zk-kt-form textarea {
  width: 100%; max-width: 100%; box-sizing: border-box; margin-top: 0;
  background: transparent; border: 0; border-bottom: 1px solid var(--okraj);
  border-radius: 0; padding-left: .15rem; transition: border-color .15s ease;
}
.linkovy-form input:hover:not(:focus), .linkovy-form select:hover:not(:focus),
.mozaika input:hover:not(:focus), .mozaika select:hover:not(:focus),
.modal-form input:hover:not(:focus), .modal-form select:hover:not(:focus),
.zk-info-form input:hover:not(:focus), .zk-info-form select:hover:not(:focus),
.zk-kt-form input:hover:not(:focus), .zk-kt-form select:hover:not(:focus) {
  border-bottom-color: var(--okraj-silny);
}
.linkovy-form input:focus, .linkovy-form select:focus, .linkovy-form textarea:focus,
.mozaika input:focus, .mozaika select:focus, .mozaika textarea:focus,
.modal-form input:focus, .modal-form select:focus, .modal-form textarea:focus,
.zk-info-form input:focus, .zk-info-form select:focus, .zk-info-form textarea:focus,
.zk-kt-form input:focus, .zk-kt-form select:focus, .zk-kt-form textarea:focus {
  border-bottom-color: var(--tyrkys); box-shadow: none; outline: none;
}
.linkovy-form textarea, .mozaika textarea, .modal-form textarea,
.zk-info-form textarea, .zk-kt-form textarea { min-height: 4.5rem; }
/* šířky dle obsahu (krátké kódy, střední identifikátory) */
.sirka-s, .zk-sirka-s { max-width: 10rem; }
.sirka-m, .zk-sirka-m { max-width: 15rem; }

/* ---- MODAL — vzor „Nastavení subjektu“: .ozn-pozadi > .ozn-modal.modal-okno >
   .ozn-hlava (h2 + ✕ .ozn-zavrit) + <form .modal-form> .modal-telo (scroll)
   + .modal-paticka (akce vpravo). Pravidla chování drží modal.js. */
.modal-okno, .zk-kt-modal { max-width: 38rem; }
.modal-okno.modal-velky { max-width: 60rem; }  /* velké modaly (rozsáhlejší formuláře) */

/* ==== JEDNOTNÁ VELIKOST ZAKLÁDACÍCH MODALŮ (21. 9. 2026, přání uživatele) ====
   Referencí je modal „Nová událost" kalendáře. Nový zakládací modal stačí
   označit třídou .modal-sjednoceny, další selektory drží ve stejném obrysu
   už zavedené modaly, které se otevírají z rychlých akcí Dashboardu
   (Událost, Úkol, Poznámka, Klient, Kontakt, Poptávka, Amigo!NET).
   Výška je PEVNÁ, takže se modal při přepnutí kroku znovu necentruje.
   22. 9. 2026: .zk-wiz-modal (Nový subjekt) z obrysu VYJMUT — vrácen na
   původní menší velikost (viz zakaznici.css), protože krok 1/3 (jen IČO)
   v pevné výšce 92vh/72rem zůstával téměř prázdný. */
.ozn-modal:is(.modal-sjednoceny, .kal-udalost-modal, .pt-nova-okno, .db-an-okno,
              .uk-vlozeny-okno, .pz-vlozeny),
#zk-novy-kontakt-modal > .ozn-modal {
  width: min(78rem, calc(100vw - 4rem));
  max-width: min(78rem, calc(100vw - 4rem));
  height: min(92vh, 72rem);
  max-height: min(92vh, 72rem);
  display: flex; flex-direction: column;
}
/* formulář mezi hlavičkou a patičkou vyplní volnou výšku (patička dole) */
.ozn-modal:is(.modal-sjednoceny, .kal-udalost-modal, .pt-nova-okno, .db-an-okno,
              .uk-vlozeny-okno, .pz-vlozeny) > form,
#zk-novy-kontakt-modal > .ozn-modal > form {
  flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column;
}
@media (max-width: 900px) {
  .ozn-modal:is(.modal-sjednoceny, .kal-udalost-modal, .pt-nova-okno, .db-an-okno,
                .uk-vlozeny-okno, .pz-vlozeny),
  #zk-novy-kontakt-modal > .ozn-modal {
    width: 100%; max-width: 100%; height: auto; max-height: 92vh; }
}
@media (max-width: 560px) {
  .ozn-modal:is(.modal-sjednoceny, .kal-udalost-modal, .pt-nova-okno, .db-an-okno,
                .uk-vlozeny-okno, .pz-vlozeny),
  #zk-novy-kontakt-modal > .ozn-modal {
    height: 100%; max-height: 100vh; border-radius: 0; }
}
/* poptávka: tělo dorovnává pevnou výšku modalu (strop výšky by patičku
   vytáhl doprostřed okna) a jako svislý flex nechá krok 1 s dlaždicemi
   typů vyplnit volné místo */
#pt-nova .modal-telo { min-height: 22rem; display: flex; flex-direction: column; }
/* 11. 9. 2026 večer (přání uživatele: komfortnější vyplňování) — modal poptávky
   vzdušný: dlaždice typů a pole formuláře s větším rozestupem */
/* krok 1 vyplní pevnou výšku těla: dlaždice se roztáhnou do dvou řádků, text zůstává nahoře */
/* 21. 9. 2026: pravidlo mířilo na .pt-krok, ale šablona má .pt-nova-krok,
   takže dlaždice typů nikdy nevyplnily tělo modalu */
#pt-nova .pt-nova-krok[data-krok="1"] { display: flex; flex-direction: column;
  flex: 1 1 auto; min-height: 0; }
#pt-nova .pt-typy { flex: 1; grid-auto-rows: 1fr; gap: 1.1rem; margin: .4rem 0 1rem; }
#pt-nova .pt-typ-dlazdice { padding: 1.5rem 1.8rem; gap: .6rem; justify-content: center; }   /* vysoké dlaždice: text svisle na střed */
#pt-nova .pt-typ-dlazdice strong { font-size: 1.12rem; }
#pt-nova .pt-typ-dlazdice span { font-size: .92rem; }
#pt-nova .blok-4 { row-gap: .7rem; }
#pt-nova .blok-4 input:not([type=checkbox]):not([type=radio]):not([type=file]), #pt-nova .blok-4 select { min-height: 2.5rem; font-size: .95rem; }
#pt-nova .blok-4 textarea { font-size: .95rem; }
#pt-nova .cast-nadpis { margin-top: 1.1rem; }
/* zarovnání polí typu (11. 9. 2026 večer): širší sloupce popisků (celé „Variabilní symbol Amigo!NET“),
   vícenásobná volba začíná vždy v 1. sloupci s popiskem nahoře, termíny návštěvy jako mřížka den × část dne */
#pt-nova .blok-4 { grid-template-columns: 12.5rem minmax(0, 1fr) 12.5rem minmax(0, 1fr); }
#pt-nova .pt-multi-popisek { grid-column: 1; align-self: start; padding-top: .35rem; white-space: normal; line-height: 1.25; }
#pt-nova .pt-multi { align-self: start; padding: .3rem 0; }
#pt-nova .pt-multi[data-klic="zajmy"] { display: grid; grid-template-columns: repeat(3, minmax(0, max-content)); column-gap: 2.2rem; row-gap: .45rem; }
#pt-nova .pt-multi[data-klic="terminy"] { display: grid; grid-template-columns: repeat(2, minmax(0, max-content)); column-gap: 2.2rem; row-gap: .45rem; }
#pt-nova .pt-multi-skupina { gap: .45rem 1.4rem; margin: .2rem 0 .7rem; }
#pt-nova .pt-volba { font-size: .92rem; gap: .45rem; }
#pt-nova .pt-volba input { width: 1.1rem; height: 1.1rem; }
/* 04/10/2026 — předvyplnění z Adresáře (static/poptavky_nova.js): pole + malá akce/výběr na jednom řádku
   (IČO + ARES, jméno + výběr kontaktní osoby, výběr adresy subjektu / „jiná adresa…“ + psaní) */
#pt-nova .pt-pole-akce, #pt-nova .pt-adresa-obal { display: flex; gap: .5rem; align-items: center; min-width: 0; }
#pt-nova .pt-pole-akce > input, #pt-nova .pt-adresa-obal > input, #pt-nova .pt-adresa-obal > .naseptavac-kotva { flex: 1 1 auto; min-width: 0; }
#pt-nova .pt-adresa-obal > .naseptavac-kotva > input { width: 100%; max-width: none; }
#pt-nova .pt-pole-akce > .btn { flex: 0 0 auto; min-height: 2.5rem; }
#pt-nova .pt-pole-akce > select { flex: 0 1 13rem; min-width: 8rem; }
#pt-nova .pt-adresa-obal > select { flex: 1 1 auto; min-width: 0; }
#pt-nova .pt-adresa-obal > select.pt-adresa-volba-uzka { flex: 0 1 11rem; min-width: 8rem; }
#pt-nova .pt-subjekt-obal { min-width: 0; display: flex; gap: .5rem; align-items: center; }
#pt-nova .pt-subjekt-obal > .subjekt-vyber { flex: 1 1 auto; min-width: 0; }
/* 05/10/2026 — přepínač Firma / Fyzická osoba vedle výběru subjektu; u fyzické osoby (bez IČO) subjekt přes celý řádek */
#pt-nova .pt-typ-subjektu { flex: 0 0 auto; margin: 0; }
#pt-nova .pt-typ-subjektu.neaktivni { opacity: .6; }
#pt-nova .pt-typ-subjektu.neaktivni span { cursor: not-allowed; }
#pt-nova .pt-subjekt-obal.pt-subjekt-siroky { grid-column: 2 / -1; }
#pt-nova .pt-fields.pt-fields-prazdne { display: none; }
#pt-nova .pt-subjekt-obal .subjekt-vyber-pole.subjekt-nevybran { border-color: var(--okraj, currentColor) !important; }  /* volný text = nový subjekt, ne chyba */
#pt-nova .pt-nova-hlaska { font-size: .84rem; color: var(--seda); margin-top: -.25rem; display: flex; flex-wrap: wrap; gap: .3rem .6rem; align-items: center; }
/* témata / vícenásobné volby: popisek v 1. sloupci zarovnaný s popisky polí (vpravo, stejná šířka),
   volby od 2. sloupce = svislice polí; skupiny témat ve sloupcích stejné šířky */
#pt-nova .pt-multi-popisek { text-align: right; padding-top: .55rem; }
#pt-nova .pt-multi.blok-cely { grid-column: 2 / -1; padding: .45rem 0 .2rem; }
#pt-nova .pt-multi[data-klic="tema"] { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .9rem 2rem; }
#pt-nova .pt-multi[data-klic="tema"] .pt-multi-skupina { display: flex; flex-direction: column; flex-wrap: nowrap; gap: .4rem; margin: 0; }
#pt-nova .pt-multi[data-klic="tema"] .pt-multi-nadpis { flex: none; margin-bottom: .1rem; }
#pt-nova .pt-multi[data-klic="tema"] .pt-volba { white-space: normal; align-items: flex-start; line-height: 1.3; }
#pt-nova .pt-multi[data-klic="tema"] .pt-volba input { margin-top: .1rem; flex: 0 0 auto; }
/* úzké obrazovky: mřížka modalu jako ostatní .blok-4 (ID selektor výše jinak přebije media dotazy) */
@media (max-width: 860px) { #pt-nova .blok-4 { grid-template-columns: 9.5rem minmax(0, 1fr); } }
@media (max-width: 640px) {
  #pt-nova .blok-4 { grid-template-columns: minmax(0, 1fr); row-gap: .45rem; }
  #pt-nova .blok-4 > .popisek, #pt-nova .pt-multi-popisek { text-align: left; padding-top: .35rem; white-space: normal; }
  #pt-nova .blok-cely, #pt-nova .pt-multi.blok-cely, #pt-nova .pt-multi-popisek { grid-column: 1 / -1; }
  #pt-nova .pt-multi[data-klic="zajmy"], #pt-nova .pt-multi[data-klic="terminy"] { grid-template-columns: minmax(0, 1fr); }
  #pt-nova .pt-pole-akce:has(select) { flex-wrap: wrap; }
  #pt-nova .pt-pole-akce > select { flex: 1 1 100%; }
  #pt-nova .pt-subjekt-obal { flex-wrap: wrap; }
  #pt-nova .pt-subjekt-obal.pt-subjekt-siroky { grid-column: 1 / -1; }
}
.modal-form, .zk-kt-form { display: flex; flex-direction: column; min-height: 0; }
.modal-telo, .zk-kt-telo {
  overflow-y: auto; overscroll-behavior: contain;
  padding: 1.1rem var(--modal-okraj) .3rem;
  flex: 1 1 auto; min-height: 0;
}
.modal-telo .cast-nadpis, .modal-telo .zk-form-nadpis,
.zk-kt-telo .cast-nadpis, .zk-kt-telo .zk-form-nadpis { margin-top: 1.1rem; }
.modal-telo .cast-nadpis:first-child, .zk-kt-telo .zk-form-nadpis:first-child { margin-top: 0; }
.modal-telo .blok, .modal-telo .zk-blok,
.zk-kt-telo .blok, .zk-kt-telo .zk-blok { grid-template-columns: 6.5rem minmax(0, 1fr); }
/* delší popisky (formuláře nastavení) — širší sloupec popisků */
.blok-siroky, .modal-telo .blok-siroky, .zk-kt-telo .blok-siroky {
  grid-template-columns: 11rem minmax(0, 1fr); }
/* 4sloupcová mřížka rozsáhlejších modalů: popisek|pole|popisek|pole */
.blok-4, .modal-telo .blok-4 { grid-template-columns: 8.5rem minmax(0, 1fr) 8.5rem minmax(0, 1fr); }
@media (max-width: 860px) { .blok-4, .modal-telo .blok-4 { grid-template-columns: 8.5rem minmax(0, 1fr); } }
/* telefon: popisek NAD polem (jeden sloupec) — i ve 4sloupcové mřížce modalů */
@media (max-width: 640px) { .blok-4, .modal-telo .blok-4, .blok-siroky, .modal-telo .blok-siroky, .zk-kt-telo .blok-siroky { grid-template-columns: minmax(0, 1fr); } }
/* checkbox s popiskem na řádku pole */
.check-radek { display: flex; align-items: center; gap: .45rem; }
.check-radek input { width: auto; margin: 0; }
/* rychlé akce Dashboardu (#33) */
.modal-siroke { width: min(52rem, 96vw); }
.db-dvojpole { display: flex; gap: .5rem; align-items: center; }
.db-dvojpole > input { flex: 1 1 auto; min-width: 0; }
.db-dvojpole > select { flex: 0 0 auto; width: auto; }
.db-inline-check { display: inline-flex; align-items: center; gap: .3rem; white-space: nowrap; }
.db-inline-check input { width: auto; margin: 0; }
.db-form-chyba { color: var(--chyba); font-size: .85rem; margin: .4rem 0 0; }
/* pole s jednotkou za ním (Kč, ks…) */
.pole-jednotka { display: flex; align-items: baseline; gap: .45rem; }
.modal-radek, .zk-kt-radek { display: flex; gap: .45rem; min-width: 0; }
.modal-radek input, .zk-kt-radek input { flex: 1; min-width: 0; }
.modal-paticka, .zk-kt-paticka {
  display: flex; justify-content: flex-end; gap: .6rem;
  padding: .85rem var(--modal-okraj); border-top: 1px solid var(--okraj);
}

/* ---- akční pilulky v seznamech a nadpisech (vzor pill akcí detailu) */
.akce-skupina, .zk-akce-skupina { display: inline-flex; gap: .3rem; vertical-align: middle; }
.akce-btn, .zk-akce-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  cursor: pointer; text-decoration: none; font-family: inherit; line-height: 1.4;
  white-space: nowrap; background: var(--plocha); color: var(--inkoust);
  font-weight: 600; border: 1px solid var(--okraj-silny); border-radius: 999px;
  padding: .18rem .7rem; font-size: .82rem; box-shadow: none;
  transition: color .15s ease, border-color .15s ease;
}
.akce-btn:hover, .zk-akce-btn:hover {
  color: var(--tyrkys-tmavy); border-color: var(--tyrkys-tmavy);
  transform: none; filter: none; box-shadow: none;
}
/* ---- seznam: akční sloupec vpravo — opt-in třída na .tabulka */
.tabulka-akce-vpravo td:last-child:not([colspan]) { text-align: right; }

/* ---- hub stránky (souhrnný přehled s rozcestníkem — registr core/navigace.py) */
.hub-mriz { display: grid; grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr));
  gap: 1rem; margin-top: .4rem; }
.hub-dlazdice { display: flex; align-items: flex-start; gap: .8rem;
  background: var(--karta); border: 1px solid var(--okraj-karty);
  border-radius: 14px; padding: 1rem 1.1rem; box-shadow: var(--stin-1);
  text-decoration: none; color: var(--inkoust);
  transition: border-color .15s ease; }
a.hub-dlazdice:hover { border-color: var(--tyrkys); }
.hub-ikona { font-size: 1.5rem; line-height: 1; }
.hub-telo { display: flex; flex-direction: column; gap: .25rem; flex: 1; }
.hub-telo small { color: var(--seda); line-height: 1.4; }
.hub-pripravujeme { opacity: .55; }
.hub-dlazdice .stitek { align-self: flex-start; white-space: nowrap; }

/* ---- Firemní profil: loga a razítko ---- */
.firma-obrazek { padding: .55rem 0; border-bottom: 1px solid var(--okraj); }
.firma-obrazek:last-child { border-bottom: 0; }
.firma-obrazek-nahled { max-height: 90px; max-width: 100%; display: block;
  margin: .35rem 0; background: #fff; border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); padding: .3rem; }
.firma-obrazek-nahled.ctverec { width: 90px; height: 90px; object-fit: contain; }
.firma-obrazek-akce { display: inline-flex; gap: .45rem; align-items: center;
  margin: .15rem .5rem .15rem 0; }
.firma-obrazek-akce input[type="file"] { width: auto; max-width: 17rem; margin: 0; }

/* ---- filtrační lišta seznamů (vzor Subjekty .zk-filtry): filtry vlevo,
   akce pro přidávání/správu (.lista-akce) u pravého okraje; na širokých
   obrazovkách drží vše na jednom řádku, na úzkých se láme ---- */
.filtr-lista { display: flex; gap: .55rem; align-items: center;
  flex-wrap: wrap; margin: .8rem 0; }
.filtr-lista input[name="q"] { flex: 0 1 15rem; min-width: 7rem;
  width: 15rem; margin-top: 0; }
.filtr-lista select { width: auto; flex: 0 1 auto; min-width: 0;
  max-width: 13rem; margin-top: 0; }
/* datum/měsíc ve filtru: nesmí zdědit globální width:100% (rozbíjí řádek) */
.filtr-lista input[type="month"], .filtr-lista input[type="date"] {
  width: auto; flex: 0 1 auto; min-width: 0; max-width: 11rem; margin-top: 0; }
/* obdobový filtr ve filtr-lista drží vpravo; Σ hodin zůstává vlevo */
.filtr-lista .akc-obdobi-filtr { margin-left: auto; }
.filtr-lista .pl-hodiny-vyberu { margin-left: 0; }
.filtr-lista label, .filtr-lista .btn, .filtr-lista .stitek { white-space: nowrap; }
.filtr-lista .lista-akce { margin-left: auto; display: inline-flex;
  gap: .5rem; align-items: center; }
/* PRAVIDLO (23. 8.): tlačítka přidávání záznamů žijí v .lista-akce NAD kartou
   a mají VŽDY jednotnou velikost (vzor „+ Nový subjekt") — btn-maly se tu přebíjí */
.lista-akce .btn { padding: .38rem .85rem; font-size: .84rem; font-weight: 640; }
.lista-akce .btn-vedlejsi { font-weight: 560; }
@media (min-width: 1200px) { .filtr-lista { flex-wrap: nowrap; } }

/* ---- křížek vyhledávacích polí (hledani.js) ---- */
.hledani-obal { position: relative; display: inline-flex; align-items: center;
  min-width: 0; }
.hledani-obal > input { flex: 1 1 auto; width: 100%; min-width: 0;
  max-width: none; padding-right: 1.8rem; }
.hledani-krizek { position: absolute; right: .3rem; top: 50%;
  transform: translateY(-50%); border: 0; background: transparent;
  color: var(--seda); cursor: pointer; font-size: .8rem; line-height: 1;
  padding: .2rem .3rem; border-radius: 6px; }
.hledani-krizek:hover { color: var(--inkoust); background: var(--plocha); }
/* obal přebírá flex/šířkové chování původního inputu v lištách */
.filtr-lista .hledani-obal, .zk-filtry .hledani-obal {
  flex: 0 1 15rem; min-width: 7rem; width: 15rem; }
.sk-filtr .hledani-obal { flex: 0 1 20rem; min-width: 9rem; }
.nahravani .hledani-obal { max-width: 20rem; flex: 0 1 auto; }
/* nativní křížek prohlížeče u type=search by se dubloval */
input[type="search"]::-webkit-search-cancel-button { display: none; }

/* ---- jednotné odsazení obsahu pod přepínačem segmentů: když mezi
   přepínačem a obsahem není filtrační lišta, obsah se ho nesmí dotýkat ---- */
.prepinac + .karta, .prepinac + .tabulka, .prepinac + .profil-mriz,
.prepinac + .mozaika, .prepinac + section, .prepinac + .hub-mriz,
.prepinac + .zprava { margin-top: .95rem; }

/* ---- hub Plánování: dlaždice přes celou šířku + přehledy pod nimi ---- */
.hub-mriz-plna { grid-template-columns: repeat(auto-fit, minmax(19rem, 1fr)); }
.hub-prehledy { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem; margin-top: 1.2rem; }
/* široká tabulka v hubové kartě roluje UVNITŘ karty — nesmí vytéct
   ze stránky (pravidlo: stránka nikdy neroluje vodorovně) */
.hub-prehledy .karta { min-width: 0; overflow-x: auto; }
@media (max-width: 1500px) { .hub-prehledy { grid-template-columns: 1fr; } }
/* osobní agenda hubu — časové karty (Nedořešeno/Dnes/týden/měsíc) */
.agh-mriz { align-items: start; }
.agh-karta h2 { display: flex; align-items: center; justify-content: space-between;
  gap: .5rem; }
.agh-pocet { font-size: .72rem; font-weight: 700; color: var(--navy);
  background: var(--tyrkys); border-radius: 999px; min-width: 1.4rem;
  text-align: center; padding: 0 .4rem; line-height: 1.35rem; }
.agh-pozor .agh-pocet { background: var(--chyba); color: var(--text-na-vyplni); }
.agh-seznam { list-style: none; margin: .35rem 0 0; padding: 0; }
.agh-radek + .agh-radek { border-top: 1px solid
  color-mix(in srgb, var(--okraj) 55%, transparent); }
.agh-radek a { display: grid; grid-template-columns: 5rem 1.1rem 1fr;
  gap: .5rem; align-items: center; padding: .3rem .15rem; text-decoration: none;
  color: var(--inkoust); font-size: .82rem; border-radius: var(--r-prvek); }
.agh-radek a:hover { background: var(--plocha-jemna); }
.agh-datum { font-family: var(--mono); font-size: .73rem; color: var(--seda);
  white-space: nowrap; }
.agh-po-terminu .agh-datum { color: var(--chyba); font-weight: 600; }
.agh-ikona { display: inline-flex; justify-content: center; }
.agh-ikona svg { width: .9rem; height: .9rem; color: var(--tyrkys-tmavy); }
.agh-nazev { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.agh-prazdno { margin: .4rem 0 0; }
/* Agenda v jednom sloupci (11. 9. 2026): karty pod sebou, čitelná šířka i na 3072 px */
.agh-sloupec { display: flex; flex-direction: column; gap: var(--mezera-m); }   /* celá šířka stránky (přání 11. 9.) */
.agh-sloupec .karta { margin: 0; }
/* řádky karet jako tabulka ve sloupcích (11. 9. 2026): Datum | Čas | ikona | Položka | Kontext | Klient | Stav */
.agh-sloupec .agh-radek a, .agh-hlavicka { display: grid; align-items: center; gap: .6rem;
  grid-template-columns: 6.2rem 3.2rem 1.2rem minmax(16rem, 1.6fr) minmax(12rem, 1fr) minmax(12rem, 1fr) 9.5rem; }
.agh-hlavicka { padding: .2rem .45rem .35rem; font-size: .66rem; text-transform: uppercase; letter-spacing: .05em;
  color: var(--seda); border-bottom: 1px solid var(--okraj); margin-top: .35rem; }
.agh-hlavicka span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.agh-sloupec .agh-seznam { margin-top: 0; }
.agh-sloupec .agh-cas { font-family: var(--mono); font-size: .73rem; color: var(--seda); font-variant-numeric: tabular-nums; }
.agh-sloupec .agh-kontext, .agh-sloupec .agh-klient { overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: .8rem; color: var(--seda); }
.agh-sloupec .agh-stav { display: flex; justify-content: flex-end; }
.agh-sloupec .agh-radek a .agh-datum { font-size: .76rem; }
@media (max-width: 1500px) { .agh-hlavicka { display: none; }
  .agh-sloupec .agh-radek a { grid-template-columns: 5.6rem 3rem 1.2rem minmax(0, 1fr) auto; }
  .agh-sloupec .agh-kontext, .agh-sloupec .agh-klient { display: none; } }
.agh-hlava-vpravo { display: inline-flex; align-items: center; gap: .7rem; }
.agh-odkaz { text-decoration: none; font-weight: 500; }
.agh-odkaz:hover { text-decoration: underline; }
.agh-stitek { font-size: .68rem; padding: .05rem .5rem; border: 1px solid var(--okraj); border-radius: 999px;
  color: var(--seda); white-space: nowrap; }
.agh-stitek-pozor { border-color: var(--chyba); color: var(--chyba); }
/* dlaždice metrik roztažené na celou šířku karty (auto-fit, přání 11. 9.) */
.agh-metriky { list-style: none; margin: .5rem 0 0; padding: 0; display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: .5rem; }
.agh-metrika a { display: flex; flex-direction: column; gap: .15rem; padding: .55rem .8rem; border-radius: var(--r-prvek);
  border: 1px solid var(--okraj); text-decoration: none; color: inherit; }
.agh-metrika a:hover { border-color: var(--tyrkys); }
.agh-metrika-hodnota { font-family: var(--mono); font-size: 1.25rem; font-weight: 700; color: var(--navy-text); font-variant-numeric: tabular-nums; }
.agh-metrika-pozor .agh-metrika-hodnota { color: var(--chyba); }
.agh-metrika-nazev { font-size: .74rem; color: var(--seda); }
.agh-vice { margin: .45rem 0 0; text-align: center; }
/* karta Přehled v Agendě (16. 9. 2026, v2 „elegantně, zarovnaně, jednoduše“): tři sloupce ŘÁDKŮ hodnota | název + podtext,
   bez dlaždic — hodnoty zarovnané v mono sloupci, sloupce oddělené linkou, žádné boxy v boxech */
.agh-podtitul { margin: -.4rem 0 .6rem; font-family: inherit; font-size: .78rem; }
.agh-skupiny { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 2.2rem; }
.agh-skupina { min-width: 0; padding-left: 1.6rem; border-left: 1px solid var(--okraj); }
.agh-skupina:first-child { padding-left: 0; border-left: 0; }
.agh-skupina h3 { margin: 0 0 .2rem; padding-bottom: .4rem; border-bottom: 1px solid var(--okraj); font-size: .66rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--seda); }
.agh-pr-radky { list-style: none; margin: 0; padding: 0; }
.agh-pr-radek a { display: grid; grid-template-columns: 5.6rem minmax(0, 1fr); gap: 0 .9rem; align-items: baseline; padding: .5rem .5rem .5rem 0; border-bottom: 1px solid color-mix(in srgb, var(--okraj) 60%, transparent); text-decoration: none; color: inherit; border-radius: 4px; }
.agh-pr-radek:last-child a { border-bottom: 0; }
.agh-pr-radek a:hover { background: var(--plocha-jemna, var(--plocha)); }
.agh-pr-radek-hodnota { font-family: var(--mono); font-size: 1.15rem; font-weight: 700; line-height: 1.15; text-align: right; white-space: nowrap; color: var(--navy-text); font-variant-numeric: tabular-nums; }
.agh-pr-radek-telo { display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
.agh-pr-radek-nazev { font-size: .82rem; font-weight: 600; color: var(--inkoust); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.agh-pr-radek-pod { font-size: .71rem; color: var(--seda); line-height: 1.3; }
.agh-pr-radek-pozor .agh-pr-radek-hodnota, .agh-pr-radek-pozor .agh-pr-radek-pod { color: var(--chyba); }
.agh-pr-radek-nula .agh-pr-radek-hodnota { color: var(--seda); opacity: .7; }
.agh-progres { display: block; height: 3px; margin-top: .35rem; max-width: 16rem; background: var(--plocha); border-radius: 99px; overflow: hidden; }
.agh-progres > i { display: block; height: 100%; background: var(--tyrkys); }
.agh-pr-radek-pozor .agh-progres > i { background: var(--chyba); }
.agh-pr-radek-radky { display: flex; flex-direction: column; gap: .08rem; margin-top: .3rem; font-size: .71rem; color: var(--inkoust); font-variant-numeric: tabular-nums; }
.agh-pr-radek-radky span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 1500px) { .agh-skupiny { grid-template-columns: 1fr; gap: 1rem; } .agh-skupina { padding-left: 0; border-left: 0; } }

/* ---- hromadný výběr seznamů (vyber.js — vzor Subjekty) ---- */
.vyber-bunka { width: 1.7rem; text-align: center; }
.vyber-bunka input { width: auto; margin: 0; accent-color: var(--tyrkys-tmavy); }
.vyber-lista { display: flex; gap: .7rem; align-items: center; flex-wrap: wrap;
  border: 1px solid var(--akcent-okraj); background: var(--plocha);
  border-radius: var(--r-prvek); padding: .5rem .8rem; margin: .7rem 0 0; }
.vyber-akce { display: inline-flex; gap: .5rem; align-items: center; }

/* ---- náhled obrázků (nahled.js) — velký modal ~90 % okna ---- */
.nahled-modal { width: 90vw; max-width: 90vw; height: 90vh; max-height: 90vh; }
.nahled-telo { flex: 1; min-height: 0; display: flex; align-items: center;
  justify-content: center; padding: .6rem 1rem 1rem; }
.nahled-telo img { max-width: 100%; max-height: 100%; object-fit: contain;
  border-radius: var(--r-prvek); }
.nahled-titulek { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---- Debuging: strukturovaná karta hlášení + diskusní vlákno ---- */
.dbg-karta { margin-bottom: .8rem; }
/* titulní řádek (03/10/2026): titul roste (flex 1, výpustka jen když opravdu chybí místo),
   meta + akce vpravo v jedné skupině 1.9rem (jako .pt-h2-akce); při nedostatku místa se
   celá pravá část zalomí pod titul a drží se vpravo */
.dbg-hlava { display: flex; justify-content: space-between; align-items: center;
  gap: .4rem 1rem; flex-wrap: wrap; border-bottom: 1px solid var(--okraj);
  padding-bottom: .45rem; margin-bottom: .55rem; }
.dbg-titul { display: flex; gap: .45rem; align-items: center; flex: 1 1 32rem; min-width: 0; }
/* pevné sloupce štítků se nesmí stlačit pod meta/akce (04/10/2026: sloupec řešitele) — raději se meta zalomí pod titul */
@media (min-width: 1101px) { .dbg-titul { min-width: min-content; } }
.dbg-titul > * { flex: 0 0 auto; }
.dbg-cislo { font-variant-numeric: tabular-nums; white-space: nowrap; min-width: 3.3rem; }
.dbg-cislo.dbg-cislo-siroke { min-width: 4.6rem; }   /* CRL-12 / DD-7 vedle D-3 */
.dbg-stranka { flex: 1 1 auto; min-width: 6rem; font-weight: 600; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }
/* štítky v PEVNÝCH sloupcích (bug D-3, 03/10/2026): typ · priorita · stav · commit leží pod sebou na všech
   kartách; každá karta má všechny buňky (i prázdné), štítek vyplní šířku buňky, delší text = výpustka + title */
.dbg-stitky { --dbg-sl-projekt: 9.5rem; --dbg-sl-typ: 6.6rem; --dbg-sl-priorita: 5.4rem;
  --dbg-sl-stav: 9.6rem; --dbg-sl-resitel: 9.4rem; --dbg-sl-commit: 5.2rem;
  display: grid; grid-template-columns: var(--dbg-sl-typ) var(--dbg-sl-priorita) var(--dbg-sl-stav)
  var(--dbg-sl-resitel) var(--dbg-sl-commit) auto;
  gap: .3rem; align-items: center; }
.dbg-stitky.dbg-stitky-projekt { grid-template-columns: var(--dbg-sl-projekt) var(--dbg-sl-typ) var(--dbg-sl-priorita)
  var(--dbg-sl-stav) var(--dbg-sl-resitel) var(--dbg-sl-commit) auto; }
/* řešitel + DeadLine (04/10/2026): oranžově do 24 h, červeně po termínu, nepřiřazené jen tlumeně */
.stitek.dbg-resitel { color: var(--inkoust-2); }
.stitek.dbg-resitel-brzy { color: var(--varovani); border-color: var(--varovani-okraj); background: var(--varovani-pozadi); }
.stitek.dbg-resitel-po { color: var(--chyba); border-color: var(--chyba-okraj); background: var(--chyba-pozadi); font-weight: 650; }
.stitek.dbg-resitel-nikdo { color: var(--seda); border-style: dashed; background: transparent; }
.dbg-sl { display: flex; gap: .3rem; min-width: 0; }
.dbg-sl > .stitek { display: block; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; text-align: left; }
.dbg-sl-navic > .stitek { flex: 0 0 auto; }
.dbg-stitky .stitek { white-space: nowrap; font-size: .72rem; padding: .02rem .5rem; box-sizing: border-box; }
.dbg-stitky .stitek .ik, .dbg-stitky .stitek svg { width: .8rem; height: .8rem; vertical-align: -2px; }
.dbg-commit { font-family: var(--mono); font-size: .7rem; background: transparent; }
.dbg-meta { display: flex; gap: .4rem 1rem; align-items: center; flex: 0 1 auto;
  flex-wrap: wrap; justify-content: flex-end; margin-left: auto; min-width: 0; }
.dbg-kdo { display: inline-flex; gap: .55rem; align-items: baseline; font-size: .78rem;
  color: var(--seda); white-space: nowrap; min-width: 0; }
.dbg-kdo-jmeno { color: var(--inkoust-2, var(--inkoust)); overflow: hidden; text-overflow: ellipsis; max-width: 22rem; }
.dbg-kdy { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.dbg-akce-skupina { display: inline-flex; gap: .4rem; align-items: center; flex-wrap: wrap;
  justify-content: flex-end; }
.dbg-akce-skupina form { display: inline-flex; gap: .4rem; align-items: center; margin: 0; }
.dbg-akce-skupina .btn, .dbg-akce-skupina select, .dbg-akce-skupina input {
  height: 1.9rem; min-height: 1.9rem; font-size: .76rem; margin: 0; box-sizing: border-box;
  padding-top: 0; padding-bottom: 0; text-transform: none; }
.dbg-akce-skupina .btn { display: inline-flex; align-items: center; gap: .3rem; white-space: nowrap; padding: 0 .65rem; }
.dbg-akce-skupina select { width: 9.5rem; max-width: 9.5rem; padding: 0 .4rem; }
.dbg-akce-skupina input[name="commit"] { width: 7rem; max-width: 7rem; padding: 0 .5rem; font-family: var(--mono); }
.dbg-akce-skupina .dbg-smazat:hover { color: var(--chyba); border-color: var(--chyba-okraj); }
.dbg-akce-skupina form + form { padding-left: .4rem; border-left: 1px solid var(--okraj-jemny, var(--okraj)); }
@media (max-width: 1100px) {
  .dbg-titul { flex-wrap: wrap; flex-basis: 100%; }
  .dbg-stranka { flex: 1 1 12rem; }
}
.dbg-telo { display: flex; gap: 1rem; align-items: flex-start; }
.dbg-obsah { flex: 1; min-width: 0; }
.dbg-poznamka { white-space: pre-wrap; margin: 0 0 .4rem; }
.dbg-kontext { margin: 0 0 .3rem; }
.dbg-technika summary { cursor: pointer; }
.dbg-technika .tabulka { display: block; max-width: 100%; overflow-x: auto; }   /* telefon: tabulka diagnostiky nepřeteče (2. 10. 2026) */
.dbg-technika-tab { max-width: 36rem; margin-top: .4rem; }
.dbg-technika-tab th { text-transform: none; letter-spacing: 0; position: static; }   /* ne sticky — v kartě by th ujel od řádku */
.dbg-atribuce { white-space: nowrap; }
.dbg-vyber, .vyber-lista input[type="checkbox"] { width: auto; margin: 0; align-self: center; }
@media (max-width: 700px) {
  .dbg-meta { justify-content: flex-start; margin-left: 0; width: 100%; }
  .dbg-stranka { white-space: normal; flex-basis: 100%; order: 5; }
  /* telefon: štítky na vlastním řádku pod číslem, sloupce dělí šířku poměrem (zarovnání drží dál) */
  .dbg-stitky, .dbg-stitky.dbg-stitky-projekt { order: 4; flex: 1 1 100%;
    grid-template-columns: var(--dbg-sl-typ) var(--dbg-sl-priorita) minmax(0, 1fr); }
  .dbg-sl-projekt { grid-column: 1 / -1; }
  .dbg-sl-commit { grid-column: 1; }                 /* 2. řádek: commit pod typem, prověřeno/archiv vedle */
  .dbg-sl-navic { grid-column: 2 / -1; }
  .dbg-sl-resitel { grid-column: 1 / -1; }
  .dbg-sl-commit:empty, .dbg-sl-navic:empty, .dbg-sl-projekt:empty, .dbg-sl-resitel:empty { display: none; }
  .dbg-akce-skupina { justify-content: flex-start; width: 100%; }
  .dbg-akce-skupina form + form { padding-left: 0; border-left: 0; }
  .dbg-akce-skupina .dbg-stav-forma { width: 100%; }
  .dbg-akce-skupina .dbg-stav-forma select, .dbg-akce-skupina .dbg-stav-forma input[name="commit"] { flex: 1 1 0; width: auto; max-width: none; min-width: 0; }
  .dbg-telo { flex-direction: column; }
  .dbg-nahled img { max-width: 100%; }
}
/* ---- Debuging → E-maily (04/10/2026): seznam návrhů + editor s náhledem v obálce ---- */
.stitek.dbg-email-stav-koncept { --stav-barva: var(--stav-priprava); }
.stitek.dbg-email-stav-ke_schvaleni { --stav-barva: var(--stav-k-potvrzeni); }
.stitek.dbg-email-stav-naplanovano { --stav-barva: var(--stav-nova); }
.stitek.dbg-email-stav-odeslano { --stav-barva: var(--ok); }
.stitek.dbg-email-stav-chyba { --stav-barva: var(--chyba); }
.stitek.dbg-email-stav-zruseno { --stav-barva: var(--stav-storno); }
.dbg-emaily-tab td { vertical-align: middle; }
.dbg-email-radek { cursor: pointer; }
.dbg-email-radek:hover td { background: var(--plocha-jemna); }
.dbg-email-cislo, .dbg-email-kdy { white-space: nowrap; font-variant-numeric: tabular-nums; }
.dbg-email-predmet { max-width: 34rem; }
.dbg-email-predmet a { color: var(--inkoust); font-weight: 600; text-decoration: none; }
.dbg-email-hlaseni code { font-size: .72rem; }
.dbg-email-prijemci { max-width: 18rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stitek.dbg-email-pokyn { color: var(--tyrkys-tmavy); border-color: var(--akcent-okraj); background: var(--akcent-pozadi);
  font-size: .7rem; }
.stitek.dbg-email-pokyn svg { width: .8rem; height: .8rem; vertical-align: -2px; }
.dbg-email-mriz { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 1rem; align-items: start; }
.dbg-email-bok { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }
.dbg-email-bok > .karta { margin: 0; }
.dbg-email-form .blok { margin-bottom: .8rem; }
.dbg-email-kopie { align-self: center; }
.dbg-email-telo-cteni { border: 1px solid var(--okraj-jemny); background: var(--plocha-jemna); padding: .8rem 1rem; max-height: 36rem; overflow: auto; }
.dbg-email-nahled { display: block; width: 100%; height: 46rem; border: 1px solid var(--okraj-jemny); background: var(--papir); }
.dbg-email-pokyny { display: flex; gap: .6rem; align-items: flex-start; border-left: 3px solid var(--akcent-okraj);
  background: var(--akcent-pozadi); padding: .55rem .8rem; margin: 0 0 .8rem; font-size: .82rem; }
.dbg-email-pokyny svg { width: 1rem; height: 1rem; color: var(--tyrkys-tmavy); flex: 0 0 auto; margin-top: .1rem; }
.dbg-email-pokyny p { margin: .25rem 0 0; }
.dbg-email-doruceni td, .dbg-email-verze td { font-size: .8rem; }
.stitek.dbg-doruceni-odeslano { color: var(--ok-text); border-color: var(--ok-okraj); background: var(--ok-pozadi); }
.stitek.dbg-doruceni-chyba { color: var(--chyba); border-color: var(--chyba-okraj); background: var(--chyba-pozadi); }
.stitek.dbg-doruceni-zahozeno { color: var(--varovani); border-color: var(--varovani-okraj); background: var(--varovani-pozadi); }
@media (max-width: 1100px) { .dbg-email-mriz { grid-template-columns: minmax(0, 1fr); } }
/* ---- Debuging → Nasazení větví (04/10/2026): čekající sloučení do main, potvrzení / vrácení ---- */
.stitek.dbg-nas-stav-ceka_na_merge { --stav-barva: var(--stav-k-potvrzeni); }
.stitek.dbg-nas-stav-potvrzeno { --stav-barva: var(--ok); }
.stitek.dbg-nas-stav-vraceno { --stav-barva: var(--stav-storno); }
.stitek.dbg-nas-po { color: var(--chyba); border-color: var(--chyba-okraj); background: var(--chyba-pozadi); font-size: .7rem; }
.stitek.dbg-nas-po svg { width: .8rem; height: .8rem; vertical-align: -2px; }
.dbg-nas-po-text { color: var(--chyba); }
.dbg-nas-pozn { color: var(--seda); font-size: .8rem; }
p.dbg-nas-pozn { margin: 0 0 .6rem; }
.dbg-nasazeni-vetev a { color: var(--inkoust); text-decoration: none; font-weight: 600; white-space: nowrap; }
.dbg-nas-mozaika { grid-template-columns: minmax(0, 1fr); }
.dbg-nas-repo { font-size: .72rem; word-break: break-all; }
.dbg-nas-poznamka { margin: .6rem 0 0; font-size: .85rem; color: var(--inkoust-2); }
.dbg-nas-commity td { font-size: .8rem; vertical-align: top; }
.dbg-nas-commity code { font-size: .74rem; }
.dbg-nas-zaj { display: flex; gap: .45rem; align-items: baseline; margin: .7rem 0 0; padding: .45rem .7rem; font-size: .82rem;
  border-left: 3px solid var(--akcent-okraj); background: var(--akcent-pozadi); }
.dbg-nas-zaj svg { width: .9rem; height: .9rem; color: var(--tyrkys-tmavy); flex: 0 0 auto; align-self: center; }
.dbg-nas-hlaseni { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .35rem; font-size: .86rem; }
.dbg-nas-hlaseni code { font-size: .76rem; }
.dbg-nas-hlaseni .stitek { font-size: .7rem; margin-left: .3rem; }
.dbg-nas-dusledky { margin: .2rem 0 .8rem; padding-left: 1.1rem; }
.dbg-nas-hero-form { display: inline; margin: 0; }
.dbg-email-nasazeni p { margin: 0; font-size: .85rem; }
.dbg-email-nasazeni svg { width: .95rem; height: .95rem; vertical-align: -2px; color: var(--tyrkys-tmavy); }
.dbg-nasazeni-tab td { vertical-align: middle; }
/* doplnění informací řešitelem (03/10/2026): bloky pod původním popisem, odlišené levou linkou akcentu */
.dbg-doplneni { display: flex; flex-direction: column; gap: .45rem; margin: .2rem 0 .55rem; max-width: 72rem; }
.dbg-doplnek { border-left: 3px solid var(--akcent-okraj); background: var(--plocha-jemna);
  border-radius: 0 var(--r-prvek) var(--r-prvek) 0; padding: .35rem .7rem .45rem; }
.dbg-doplnek-hlava { display: flex; gap: .45rem; align-items: center; flex-wrap: wrap; font-size: .76rem; color: var(--seda); }
.dbg-doplnek-hlava strong { color: var(--tyrkys-tmavy); font-weight: 600; }
.dbg-doplnek-hlava svg { width: .85rem; height: .85rem; color: var(--tyrkys-tmavy); }
.dbg-doplneni-kdo { font-variant-numeric: tabular-nums; }
.dbg-doplnek-akce { display: inline-flex; gap: .25rem; margin-left: auto; }
.dbg-doplnek-akce form { display: inline; margin: 0; }
.dbg-doplnek-text { font-size: .88rem; overflow-wrap: anywhere; }
.dbg-doplnek-text > :first-child { margin-top: .2rem; }
.dbg-doplnek-text > :last-child { margin-bottom: 0; }
.dbg-doplnek-text p, .dbg-doplnek-text ul, .dbg-doplnek-text ol { margin: .25rem 0; }
.dbg-doplnek-text pre { background: var(--plocha); border-radius: var(--r-prvek); padding: .4rem .6rem; overflow-x: auto; font-size: .78rem; }
.modal-okno.dbg-doplneni-okno { width: min(56rem, 96vw); max-width: 96vw; }
.dbg-doplneni-editor { border: 1px solid var(--okraj); border-radius: var(--r-prvek); overflow: visible; }
.dbg-doplneni-editor .toastui-editor-defaultUI { border: 0; }
.dbg-doplneni-editor .toastui-editor-contents { font-family: var(--pismo); font-size: .9rem; }
.dbg-akce { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap;
  margin-top: .55rem; }
.dbg-nahled img { max-width: 300px; max-height: 190px; border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); display: block; }
.dbg-vlakno { display: flex; flex-direction: column; gap: .5rem; max-height: 45vh;
  overflow-y: auto; overscroll-behavior: contain; padding-top: .3rem; }
.dbg-zprava { background: var(--plocha); border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); padding: .4rem .65rem; max-width: 85%;
  align-self: flex-start; }
.dbg-zprava.dbg-moje { align-self: flex-end;
  border-color: var(--akcent-okraj); }
.dbg-forma { gap: .6rem; }
.dbg-forma textarea { flex: 1; margin: 0; max-width: none; }

/* ---- výběr subjektu hledáním (subjekty.js) ---- */
.subjekt-vyber { position: relative; display: block; min-width: 0; }
.subjekt-vyber-pole { width: 100%; max-width: none; }
.subjekt-nevybran { border-color: var(--varovani) !important; }
.subjekt-naseptavac { position: absolute; z-index: 95; left: 0; right: 0;
  top: 100%; background: var(--karta); border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); box-shadow: var(--stin-2);
  max-height: 16rem; overflow-y: auto; }
.subjekt-nasep-radek { padding: .35rem .6rem; cursor: pointer;
  font-size: .85rem; }
.subjekt-nasep-radek:hover, .subjekt-nasep-radek.aktivni { background: var(--plocha); }
.subjekt-nasep-radek.aktivni { box-shadow: inset 2px 0 0 var(--tyrkys-tmavy); }
.subjekt-nasep-radek small { color: var(--seda); float: right; }
.subjekt-nasep-osoba .ik { width: .9em; height: .9em; margin-right: .3em; vertical-align: -.1em; }
.subjekt-nasep-zadny { color: var(--seda); }

/* ---- sjednocená paleta barev (barvy.js) — u každého input[type=color] ---- */
.pb-obal { position: relative; display: inline-flex; align-items: center; }
.pb-obal:has(> input[hidden]) { display: none; }
/* kompaktní vzorek barvy — jednotný tvar napříč portálem (ne dlouhý
   nízký proužek): pevná velikost, ▾ v pravém okraji BEZ překryvu vzorku */
.pb-obal input[type="color"], .linkovy-form .pb-obal input[type="color"],
.modal-form .pb-obal input[type="color"] {
  width: 4.6rem; height: 2rem; padding: 2px; padding-right: 1.35rem;
  border: 1px solid var(--okraj); border-radius: 8px;
  background: var(--plocha); cursor: pointer; }
.pb-obal input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; }
.pb-obal input[type="color"]::-webkit-color-swatch,
.pb-obal input[type="color"]::-moz-color-swatch {
  border: 0; border-radius: 5px; }
.pb-tlacitko { position: absolute; right: 4px; top: 50%;
  transform: translateY(-50%); border: 0; border-radius: 4px;
  background: transparent; color: var(--seda); cursor: pointer;
  width: 1rem; height: 1.3rem; line-height: 1; font-size: .6rem;
  padding: 0; display: flex; align-items: center; justify-content: center; }
.pb-tlacitko:hover { color: var(--tyrkys-tmavy); }
.pb-popover { position: absolute; z-index: 1200; width: 232px;
  background: var(--karta); border: 1px solid var(--okraj); border-radius: 10px;
  box-shadow: 0 10px 30px rgba(0,0,0,.35); padding: .6rem; }
.pb-radek { display: flex; gap: .35rem; margin-bottom: .5rem; }
.pb-hex { flex: 1; font-family: var(--mono, monospace); font-size: .8rem;
  padding: .25rem .4rem; border: 1px solid var(--okraj); border-radius: 6px;
  background: var(--plocha); color: var(--inkoust); }
.pb-hex.pb-chyba { border-color: #ef4444; }
.pb-pridat { border: 1px solid var(--okraj); background: var(--plocha);
  color: var(--inkoust); border-radius: 6px; width: 1.9rem; cursor: pointer;
  font-weight: 700; }
.pb-pridat:hover { color: var(--tyrkys-tmavy); border-color: var(--tyrkys); }
.pb-mrizka { display: grid; grid-template-columns: repeat(6, 1fr);
  gap: .3rem; }
.pb-vzorek-obal { position: relative; }
.pb-vzorek { width: 100%; aspect-ratio: 1; border-radius: 6px;
  border: 1px solid rgba(255,255,255,.25); cursor: pointer; }
.pb-vzorek:hover { transform: scale(1.08); }
.pb-odebrat { position: absolute; top: -6px; right: -6px; width: 15px;
  height: 15px; line-height: 13px; font-size: .55rem; border-radius: 99px;
  border: 1px solid var(--okraj); background: var(--karta);
  color: var(--seda); cursor: pointer; padding: 0; opacity: 0; }
.pb-vzorek-obal:hover .pb-odebrat { opacity: 1; }
.pb-odebrat:hover { color: #ef4444; border-color: #ef4444; }
.pb-prazdno { grid-column: 1 / -1; font-size: .72rem; color: var(--seda); }
.pb-napoveda { margin-top: .45rem; font-size: .66rem; color: var(--seda); }

/* profil uživatele → karta Kalendář: mřížka viditelnosti (admin ON/OFF) */
/* viditelnost v kalendáři (zhuštění 1. 9. večer): skupina přes šířku,
   položky tečou do sloupců; vše/nic v nadpisu skupiny */
.kal-vid-skupina { margin-top: .4rem; }
.kal-vid-skupina .cast-nadpis { display: flex; align-items: center;
  gap: .6rem; }
.kal-vid-vyber { margin-left: auto; display: inline-flex; gap: .35rem;
  text-transform: none; letter-spacing: 0; }
.kal-vid-polozky { columns: 14rem; column-gap: 2.2rem; }
.kal-vid-polozky .check-radek { display: flex; align-items: center;
  gap: .45rem; padding: .18rem 0; break-inside: avoid; margin: 0; }
.kal-vid-bez { opacity: .5; }

/* jednotné čárové SVG ikony (core/ikony.py, {% ikona %}, Ikona.svg) */
.ik { width: 1em; height: 1em; display: inline-block; vertical-align: -.15em; flex: 0 0 auto; }
.btn .ik, .hero-drop-tlacitko .ik, .ozn-zavrit .ik { width: 1.05em; height: 1.05em; }
.ik-velka { width: 1.35em; height: 1.35em; }

/* ---- Aktivity: přehled využití času (agenda/vyuziti_casu.py) ---- */
.ak-karta { margin-bottom: 1rem; padding: .9rem 1.1rem; }
.ak-hlava { display: flex; align-items: baseline; gap: .9rem; flex-wrap: wrap; }
.ak-hlava strong { font-size: 1rem; }
.ak-metriky { font-size: .8rem; color: var(--seda); }
.ak-metriky b { color: var(--inkoust); font-weight: 620; }
.ak-vyuziti { margin-left: auto; font-family: var(--mono); font-size: 1.05rem; font-weight: 700; color: var(--tyrkys-tmavy, var(--tyrkys)); }
.ak-pruh { display: flex; height: 10px; margin: .55rem 0 .35rem; border-radius: 99px; background: var(--plocha); overflow: hidden; }
.ak-pruh span { display: block; height: 100%; min-width: 2px; }
.ak-tab { margin: .3rem 0 0; }
.ak-tab th, .ak-tab td { padding: .28rem .5rem; }
.ak-cislo { text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ak-tecka { display: inline-block; margin-right: .45rem; vertical-align: -1px; }
.ak-pl td { color: var(--seda); border-top: 2px solid var(--okraj); }

.ag-manko { color: var(--chyba); font-weight: 620; }

/* PL evidence (F4): filtr + stavový přehled */
.pl-prehled { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: .4rem 0 .8rem; }
.pl-prehled .stitek { text-decoration: none; cursor: pointer; }
.pl-prehled .stitek.aktivni { outline: 2px solid var(--tyrkys); outline-offset: 1px; }
.pl-hodiny-vyberu { margin-left: auto; font-size: .95rem; font-weight: 600;
  color: var(--inkoust); }
.pl-hodiny-vyberu b { color: var(--tyrkys-tmavy, var(--tyrkys));
  font-family: var(--mono); font-size: 1.15rem; font-weight: 700;
  padding-left: .5rem; }

/* počítadlo v hero tlačítku (Výběr v kalendáři) */
.hero-pocet { min-width: 1.25rem; height: 1.25rem; padding: 0 .3rem; margin-left: .1rem; border-radius: 99px; background: var(--tyrkys); color: var(--navy); font-size: .72rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; line-height: 1; }

/* ---- Šichták (Rozpis směn dle vzoru DataDent + metriky) ----
   Pevný layout: Osoba | 7 stejně širokých dnů | kompaktní metriky
   s levým předělem — bez fixed layoutu se sloupce roztahovaly přes
   celou šířku a čísla metrik plavala daleko od sebe. */
.sch-karta { padding: .9rem 1.1rem; }
.sch-hlava { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-bottom: .6rem; }
.sch-hlava h2 { margin: 0 .4rem 0 0; }
.sch-scroll { overflow-x: auto; }
.sch-tab { min-width: 1080px; table-layout: fixed; }
.sch-tab th, .sch-tab td { padding: .3rem .4rem; vertical-align: middle; }
.sch-osoba { width: 13rem; position: sticky; left: 0; background: var(--karta); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; z-index: 1; }
.sch-den { text-align: center; }
.sch-den small { display: block; font-weight: 500; color: var(--seda); }
.sch-vikend { background: color-mix(in srgb, var(--plocha) 60%, transparent); }
th.sch-dnes, td.sch-dnes { background: color-mix(in srgb, var(--tyrkys) 10%, transparent); }
th.sch-dnes { color: var(--tyrkys-tmavy, var(--tyrkys)); box-shadow: inset 0 2px 0 var(--tyrkys); }
.sch-bunka { height: 2.1rem; }
.sch-editovatelna { cursor: pointer; }
.sch-editovatelna:hover { background: color-mix(in srgb, var(--tyrkys) 6%, transparent); }
.sch-plus { display: block; text-align: center; color: var(--okraj-silny); font-weight: 700; opacity: 0; }
.sch-editovatelna:hover .sch-plus { opacity: 1; }
.sch-chip { --sch-barva: var(--seda); display: flex; align-items: center; gap: .25rem; margin: 1px 0; padding: .1rem .4rem; border-radius: 6px; font-size: .74rem; font-family: var(--mono); font-variant-numeric: tabular-nums; background: color-mix(in srgb, var(--sch-barva) 18%, var(--karta)); border-left: 3px solid var(--sch-barva); white-space: nowrap; }
.sch-chip .sch-x { display: inline-flex; margin-left: auto; }
.sch-chip .sch-x button { border: 0; background: none; color: var(--seda); cursor: pointer; padding: 0 .1rem; font-size: .85rem; line-height: 1; opacity: 0; }
.sch-bunka:hover .sch-x button { opacity: .8; }
.sch-chip .sch-x button:hover { color: var(--chyba); }
.sch-absence { --sch-barva: var(--seda); font-family: inherit; font-style: italic; opacity: .85; }
.sch-metrika { width: 4.6rem; text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
th.sch-metrika { font-family: inherit; }
.sch-metrika-prvni { border-left: 2px solid var(--okraj); }
/* tabulky správy pod boardem — nenafukovat přes celou šířku */
.sch-sprava-tab { max-width: 46rem; }
.sch-sprava-tab-sirsi { max-width: 64rem; }
.sch-plus-h { color: var(--tyrkys-tmavy, var(--tyrkys)); font-weight: 640; }
.sch-legenda { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; margin: .75rem 0 0; padding-top: .6rem; border-top: 1px solid var(--okraj); }
.sch-legenda .sch-chip { display: inline-flex; }

/* ---- rozvrh pracovní doby: přestávky viditelně odlišené od dnů ---- */
tr.ud-prestavka td { background: color-mix(in srgb, var(--plocha) 55%, transparent); border-top: 0; padding-top: .15rem; padding-bottom: .15rem; }
tr.ud-prestavka td:first-child { padding-left: 1.9rem; border-left: 3px solid var(--okraj-silny); }
.ud-prestavka-popis { color: var(--seda); font-size: .78rem; font-style: italic; white-space: nowrap; }
.ud-prestavka-popis .ik { width: 13px; height: 13px; vertical-align: -2px; margin-right: .2rem; }
tr.ud-prestavka input[type="time"] { max-width: 7.5rem; font-size: .82rem; color: var(--seda); border-style: dashed; }
tr.ud-den td { border-top: 2px solid var(--okraj); }

/* ============ Aktivity → pohled „Čas" (sidebar + prohlížeč času) ============ */
/* rozvržení stránky jede na STANDARDU .bp-obal (viz „Standard celého
   rozhraní" níže) — zde jen specifika obsahu Aktivit */
.akc-hlavni .akc-karta { height: 100%; overflow-y: auto;
  box-sizing: border-box; margin: 0;  /* margin karty přeléval bp-hlavni
  o pár px → druhý scrollbar vedle scrollbaru karty */
  /* 14. 9. 2026: horní padding scrollující karty NESMÍ být na kontejneru —
     sticky hlavička dne se lepí až pod něj a v pásu paddingu prosvítaly
     scrollující řádky; odsazení dělá spacer ::before, který scrolluje pryč */
  padding-top: 0; }
.akc-hlavni .akc-karta::before { content: ""; display: block; height: 1rem; }
.akc-nav { display: flex; gap: .35rem; padding: 0 .1rem .35rem; }
/* ikonový přepínač období — vzor .kal-pohledy-ikony z kalendáře */
.akc-pohledy { display: grid;
  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));  /* roztažené
  na plnou šířku při libovolném počtu přehledů */
  gap: 0; margin: 0 .1rem .5rem; border: 1px solid var(--okraj);
  border-radius: 8px; overflow: hidden; background: var(--karta); }
.akc-pohledy button { display: flex; align-items: center;
  justify-content: center; height: 2rem; border: 0; border-right:
  1px solid var(--okraj); background: none; color: var(--seda);
  cursor: pointer; padding: 0; }
.akc-pohledy a { display: flex; align-items: center;
  justify-content: center; height: 2rem; border: 0; border-right:
  1px solid var(--okraj); background: none; color: var(--seda);
  cursor: pointer; padding: 0; }
.akc-pohledy a { text-decoration: none; }
.akc-pohledy button:last-child { border-right: 0; }
.akc-pohledy button:hover { background: var(--plocha);
  color: var(--inkoust); }
.akc-pohledy button.aktivni { background:
  color-mix(in srgb, var(--tyrkys) 18%, var(--karta));
  color: var(--tyrkys-tmavy, var(--tyrkys)); }
.akc-pohledy svg { width: 16px; height: 16px; fill: none;
  stroke: currentColor; stroke-width: 1.9; stroke-linecap: round;
  stroke-linejoin: round; }
.akc-sipka { border: 1px solid var(--okraj); background: var(--plocha-jemna);
  border-radius: 9px; padding: .3rem .65rem; cursor: pointer;
  font-size: .85rem; color: var(--inkoust); }
.akc-sipka:hover { background: var(--plocha); }
.akc-dnes { flex: 1; font-weight: 620; }
.akc-skupina { display: flex; flex-direction: column; }
.akc-tecka { flex: none; width: .6rem; height: .6rem; border-radius: 99px;
  display: inline-block; }
.akc-karta { padding: 1rem 1.2rem; }
.akc-hlava { display: flex; align-items: center; gap: 1rem;
  justify-content: space-between; flex-wrap: wrap; margin-bottom: .7rem; }
.akc-titul { margin: 0; font-size: 1.1rem; text-transform: capitalize; }
/* jediný margin-left:auto v hlavičce má přepínač — druhý (na exportu)
   půlil volné místo a přepínač končil uprostřed obrazovky */
.akc-hlava .akc-titul { margin-left: 0; }
/* akční tlačítka v hlavičce Aktivit (16. 9. 2026): stejný tvar a výška jako „Exportovat ▾“ (.hero-drop-tlacitko) —
   Uzávěrka přesčasů byla malé tlačítko vedle velkého exportu; skupina drží pohromadě u titulku */
.akc-hlava > .btn, .akc-hlava > .btn.btn-maly {
  height: 38px; padding: 0 .95rem; border-radius: var(--r-prvek); border: 1px solid var(--okraj); background: var(--karta);
  color: var(--navy-text); font-size: .84rem; font-weight: 640; box-shadow: none; display: inline-flex; align-items: center; gap: .4rem;
  white-space: nowrap; margin: 0; }
.akc-hlava > .btn:hover { background: var(--plocha); color: var(--navy-text); border-color: var(--okraj-silny); }
.akc-hlava > .btn svg { width: 1rem; height: 1rem; color: var(--tyrkys-tmavy); }
.akc-hlava .akc-titul + .btn, .akc-hlava .akc-titul + .hero-drop { margin-left: .35rem; }
.akc-hlava > .btn + .hero-drop { margin-left: -.55rem; }
/* filtr období ÚPLNĚ vpravo, až ZA Exportovat (zadání 1. 9.): pilulky
   + vlastní rozmezí od/do + × dle roční agendy kalendáře; order řadí na
   konec, auto margin odsazuje první prvek pravého clusteru */
.akc-obdobi-filtr { display: flex; align-items: center; gap: .35rem;
  font-size: .72rem; color: var(--seda); flex: none; }
.akc-obdobi-filtr .akc-prepinac, .akc-obdobi-filtr input { flex: none; }
.akc-obdobi-filtr .akc-prepinac button { white-space: nowrap; }
.akc-obdobi-filtr input { font: inherit; color: var(--inkoust);
  background: var(--plocha); border: 1px solid var(--okraj);
  border-radius: var(--r-prvek, 6px); padding: .1rem .3rem;
  width: 8.4rem; }  /* globální input {width:100%} by roztáhl řádek */
.akc-obdobi-filtr input:hover { border-color: var(--okraj-silny); }
.akc-filtr-zrusit { border: 0; background: none; color: var(--seda);
  font-size: 1rem; line-height: 1; cursor: pointer; padding: 0 .15rem; }
.akc-filtr-zrusit:hover { color: var(--inkoust); }
.akc-hlava .akc-obdobi-filtr, .akc-hlava .akc-prepinac { margin-left: auto;
  order: 10; }
.akc-obdobi-filtr .akc-prepinac { margin-left: 0; order: 0;
  margin-right: .5rem; }
.akc-hlava .akc-vyber-vse, .akc-hlava #akcRozvrhZapis { margin-left: auto; }
.akc-hlava:has(.akc-vyber-vse) .akc-obdobi-filtr,
.akc-hlava:has(.akc-vyber-vse) .akc-prepinac,
.akc-hlava:has(#akcRozvrhZapis) .akc-prepinac { margin-left: 0; }
/* souhrn období: mřížka svislých karet (linky = gap 1px nad barvou
   okraje); čísla nowrap s tabulkovými číslicemi — velké hodnoty se
   nezalamují, detail se zkracuje (plné znění v titulku) */
.akc-souhrn { display: grid; gap: 1px;
  grid-template-columns: repeat(auto-fit, minmax(11.5rem, 1fr));
  border: 1px solid var(--okraj); border-radius: var(--r-prvek);
  margin-bottom: .8rem; overflow: hidden; }
.akc-stat { display: flex; flex-direction: column; gap: .1rem;
  padding: .55rem .9rem .5rem; min-width: 0;
  outline: 1px solid var(--okraj); }
.akc-stat-popis { font-size: .67rem; font-weight: 640;
  text-transform: uppercase; letter-spacing: .07em; color: var(--seda);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.akc-cislo { font-family: var(--mono); font-size: 1.25rem;
  font-weight: 660; font-variant-numeric: tabular-nums;
  white-space: nowrap; }
.akc-sub { color: var(--seda); font-weight: 440; font-size: .72rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.akc-druhy, .akc-vozidla { display: flex; flex-wrap: wrap; gap: .4rem;
  margin-bottom: .9rem; }
.akc-druh-cip { display: inline-flex; align-items: center; gap: .4rem;
  border: 1px solid var(--okraj); background: var(--plocha-jemna);
  border-radius: 99px; padding: .22rem .65rem; font-size: .78rem; }
.akc-den { margin-bottom: .1rem; }
/* výpis dnů dle vzoru agendy kalendáře (30. 8.): hlavička dne i řádky
   sdílejí JEDNU mřížku — ∑ dne sedí nad sloupcem trvání, sloupec časů
   a součtů předchází Kdo; řádky dělí jemné linky */
.akc-den-hlava, .akc-radek { display: grid; gap: 0 .55rem;
  /* sloupec času 8.4rem = shodně s agendou kalendáře (1. 9. 2026),
     ať se do hlavičky vejde datum ve tvaru „Pondělí 31.08.2026" */
  /* pořadí od 1. 9. večer: Stav (7.6rem) PŘED druhem aktivity —
     lepší čitelnost životního cyklu výkazu */
  grid-template-columns: 1.5rem 8.4rem 4.7rem 7rem 7.6rem 7.5rem 1fr
    minmax(0, 12rem) minmax(0, 16rem) 5rem 1.4rem;
  align-items: center; }  /* 1. sloupec = trvalé zaškrtávátko výběru */
/* běžný uživatel (vidí jen sebe) — sloupec „kdo" zmizí (#26); 4. track = 0,
   span zůstává (zachová zarovnání ostatních sloupců) */
.akc-bez-kdo .akc-den-hlava, .akc-bez-kdo .akc-radek {
  grid-template-columns: 1.5rem 8.4rem 4.7rem 0 7.6rem 7.5rem 1fr
    minmax(0, 12rem) minmax(0, 16rem) 5rem 1.4rem; }
.akc-bez-kdo .akc-kdo { width: 0; padding: 0; margin: 0; overflow: hidden;
  visibility: hidden; }
.akc-den-hlava > .akc-vyber-bunka, .akc-radek > .akc-vyber-bunka {
  grid-column: 1; justify-self: center; }
.akc-den-hlava { margin: .35rem 0 .1rem; font-size: .82rem;
  font-weight: 750; text-transform: uppercase; letter-spacing: .05em;
  color: var(--tyrkys-tmavy);
  background: color-mix(in srgb, var(--tyrkys) 10%, var(--plocha));
  border-left: 3px solid var(--tyrkys-tmavy); border-radius: 7px;
  /* levý padding = .45rem jako řádky (minus border) — checkboxy dne
     a aktivit sedí na JEDNÉ svislé ose */
  padding: .18rem .5rem .18rem calc(.5rem - 3px); }
.akc-den-datum { grid-column: 2 / 3; white-space: nowrap;
  font-size: .76rem; letter-spacing: .02em; }
.akc-den-soucet { grid-column: 3; font-family: var(--mono);
  font-size: .78rem; font-weight: 600; letter-spacing: 0;
  text-transform: none; text-align: right; white-space: nowrap; }
.akc-den-hlava .akc-doch { grid-column: 4 / 9; }
/* vykázání dne u pravého okraje (počasí uvolnilo sloupec 8) */
.akc-den-hlava .akc-den-vykaz { grid-column: 11; justify-self: end; }
/* sticky hlavička dne + kompaktní počasí vpravo (parita s agendou
   kalendáře, 1. 9. 2026) — sloupec 8 (5rem) u pravého okraje */
.akc-den-hlava { position: sticky; top: 0; z-index: 2;
  /* mezera pod hlavičkou jako plný pruh v barvě karty (ne průhledný
     margin) — pod přilepenou hlavičkou nic neprosvítá */
  margin-bottom: 0; box-shadow: 0 .1rem 0 0 var(--karta); }
.akc-den-hlava .kal-pocasi-agenda { grid-column: 9 / 10; grid-row: 1;
  justify-self: end; min-height: 0; height: 20px; padding: 0 .3rem;
  gap: .3rem; margin: 0; display: inline-flex; align-items: center;
  border: 0; background: none; cursor: pointer;
  font: inherit; color: inherit; text-transform: none;
  letter-spacing: 0; }
.akc-den-hlava .kal-pocasi-agenda .kal-pocasi-ik { font-size: .85rem; }
.akc-den-hlava .kal-pocasi-agenda .kal-pocasi-t { display: inline-flex;
  align-items: baseline; gap: .15rem; font-size: .7rem;
  font-family: var(--mono); font-weight: 600; }
.akc-radek { padding: .2rem .5rem; border-radius: var(--r-prvek);
  text-decoration: none; color: var(--inkoust); font-size: .78rem;
  line-height: 1.3; }
.akc-radek + .akc-radek { border-top: 1px solid
  color-mix(in srgb, var(--okraj) 55%, transparent); }
.akc-radek:hover { background: var(--plocha); }
.akc-cas { font-family: var(--mono); font-size: .72rem;
  color: var(--seda); white-space: nowrap;
  font-variant-numeric: tabular-nums; display: flex; align-items: center; }
/* značka mimo prac. dobu: blok na pravém okraji sloupce času (jednotně
   s roční agendou kalendáře) */
.akc-cas .akc-mimo-znak { margin-left: auto; }
.akc-kdo { justify-self: start; max-width: 100%; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap;
  border: 1px solid var(--okraj); border-radius: 99px;
  padding: .04rem .55rem; font-size: .68rem; color: var(--seda);
  background: var(--plocha-jemna); }
.akc-badge { display: inline-flex; align-items: center; gap: .35rem;
  font-size: .72rem; color: var(--seda); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }
.akc-badge svg { width: .8rem; height: .8rem; flex: none;
  color: var(--druh, var(--seda)); }
.akc-badge.ma-ikonu::before { display: none; }  /* ikona nahrazuje tečku */
.akc-badge::before { content: ""; width: .55rem; height: .55rem;
  border-radius: 99px; background: var(--druh, var(--seda)); flex: none; }
.akc-nazev { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.akc-subjekt { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }  /* před kontextem — zarovnaný vlevo */
.akc-trvani { font-family: var(--mono); font-size: .72rem;
  color: var(--seda); text-align: right; white-space: nowrap; }
.akc-vykaz { text-align: right; white-space: nowrap; }
/* mobilní zjednodušený grid: trvání zůstává poslední sloupec vpravo */

.akc-soukroma { opacity: .6; font-style: italic; }
.akc-schodek { color: var(--chyba); }
.akc-auto { font-size: .62em; color: var(--tyrkys-tmavy);
  margin-left: .25rem; font-weight: 640; }
.akc-prescas { color: var(--pozor, #F0B76A); }
/* Rok: 12 měsíčních karet se skládaným pruhem druhů */
.akc-rok-mriz { display: grid;
  grid-template-columns: repeat(6, 1fr);   /* rok = 2 × 6 měsíců */
  gap: .7rem; margin-bottom: 1.1rem; }
@media (max-width: 1500px) { .akc-rok-mriz {
  grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 1000px) { .akc-rok-mriz {
  grid-template-columns: repeat(2, 1fr); } }
.akc-rok-mesic { display: flex; flex-direction: column; gap: .4rem;
  padding: .7rem .85rem; border: 1px solid var(--okraj);
  border-radius: 12px; background: var(--plocha-jemna);
  text-decoration: none; color: var(--inkoust);
  transition: box-shadow .15s ease, transform .15s ease; }
.akc-rok-mesic:hover { box-shadow: var(--stin-2);
  transform: translateY(-1px); }
.akc-rok-prazdny { opacity: .55; }
.akc-rok-hlava { display: flex; justify-content: space-between;
  align-items: baseline; text-transform: capitalize; }
.akc-rok-hodiny { font-family: var(--mono); font-size: .85rem;
  font-weight: 660; }
.akc-rok-bar { display: flex; height: .55rem; border-radius: 99px;
  overflow: hidden; background: var(--plocha); }
.akc-rok-seg { display: block; height: 100%; min-width: 2px; }
.akc-rok-meta { font-size: .74rem; }
/* matice druh × měsíc — čitelná tabulka se součty */
.akc-matice { width: 100%; border-collapse: collapse; }
.akc-matice td, .akc-matice th { padding: .42rem .55rem;
  border-bottom: 1px solid var(--okraj); font-size: .85rem; }
.akc-matice thead th { font-size: .74rem; text-transform: uppercase;
  letter-spacing: .04em; color: var(--seda); }
.akc-matice thead a { color: inherit; text-decoration: none; }
.akc-matice thead a:hover { color: var(--tyrkys-tmavy); }
.akc-matice tbody tr:hover { background: var(--plocha); }
.akc-matice tfoot td { border-bottom: 0; border-top: 2px solid
  var(--okraj-silny); font-weight: 660; }
.akc-matice-druh { text-align: left; white-space: nowrap; }
.akc-matice-suma { font-weight: 660; background: var(--plocha-jemna); }
.akc-mes { text-align: right; font-variant-numeric: tabular-nums;
  font-family: var(--mono); font-size: .82rem; }
.akc-mezititulek { display: flex; align-items: center; gap: .45rem;
  margin: 1rem 0 .4rem; font-size: .85rem; color: var(--seda); }
@media (max-width: 1100px) {
  .akc-den-hlava, .akc-radek { grid-template-columns: 1.5rem 6.5rem 4.5rem 1fr; }
  .akc-den-datum { grid-column: 2; }
  .akc-den-soucet { grid-column: 3; }
  .akc-den-hlava .akc-doch { grid-column: 1 / -1; grid-row: 2; justify-self: start; }
  .akc-kdo, .akc-badge, .akc-subjekt, .akc-vykaz, .akc-stav,
  .akc-menu-btn { display: none; }
}

/* řádek rozvrhu připomínek (sdílí kalendář i úkoly) */
.kal-pripominky { display: flex; flex-direction: column; gap: .35rem;
  width: 100%; }
/* řádek roztažený přes celou šířku pole — kanál | kdy | komu | × */
.kal-prip-radek { display: grid;
  grid-template-columns: 1fr 1fr 1.4fr auto; gap: .6rem;
  align-items: center; width: 100%; }
.kal-prip-radek select { width: 100%; min-width: 0; }
.kal-prip-smazat { border: 1px solid var(--okraj); background: none;
  color: var(--seda); border-radius: 7px; width: 1.6rem; height: 1.6rem;
  cursor: pointer; line-height: 1; }
.kal-prip-smazat:hover { color: var(--chyba); border-color: var(--chyba); }
.uk-prip-radky-sloupec { display: flex; flex-direction: column;
  gap: .4rem; align-items: flex-start; }

/* ============ Nápověda (průvodce portálem) ============ */
.nap-hledani input { min-width: min(26rem, 100%); }
.nap-mriz { display: grid; grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr));
  gap: 1rem; margin-top: 1rem; }
.nap-karta { padding: 1rem 1.2rem; text-decoration: none; color: var(--inkoust);
  transition: box-shadow .15s ease, transform .15s ease; }
.nap-karta:hover { box-shadow: var(--stin-2); transform: translateY(-1px); }
.nap-karta h3 { display: flex; align-items: center; gap: .5rem; margin: 0 0 .35rem; }
.nap-vysledky { margin-top: 1rem; padding: 1rem 1.2rem; }
.nap-vysledek { display: flex; flex-direction: column; gap: .15rem;
  padding: .5rem .6rem; border-radius: 10px; text-decoration: none;
  color: var(--inkoust); }
.nap-vysledek:hover { background: var(--plocha); }
.nap-obal { display: grid; grid-template-columns: 17rem minmax(0, 1fr); min-width: 0;
  gap: 1rem; align-items: start; }
.nap-bocni { padding: .9rem 1rem; position: sticky; top: .8rem;
  max-height: calc(100vh - 2rem); overflow-y: auto; }
.nap-bocni h3 { font-size: .92rem; font-weight: 650; text-transform: none;
  letter-spacing: 0; color: var(--inkoust); margin: 1rem 0 .4rem; }
.nap-bocni h3:first-child { margin-top: 0; }
.nap-sekce-nav, .nap-osnova { display: flex; flex-direction: column; gap: .15rem; }
.nap-sekce-nav a, .nap-osnova a { display: flex; align-items: center; gap: .45rem;
  padding: .28rem .5rem; border-radius: 8px; font-size: .84rem;
  color: var(--inkoust); text-decoration: none; }
.nap-sekce-nav a:hover, .nap-osnova a:hover { background: var(--plocha); }
.nap-sekce-nav a.aktivni { background: var(--navy); color: #fff; }
.nap-osnova .nap-o3 { padding-left: 1.3rem; font-size: .8rem; color: var(--seda); }
/* článek nápovědy vyplní celou dostupnou šířku plochy (3. 9. 2026) */
.nap-clanek { padding: 1.4rem 2rem 1.6rem; line-height: 1.62; min-width: 0; }
.nap-clanek pre { overflow-x: auto; max-width: 100%; }   /* ASCII schémata (průvodce) na telefonu scrollují, nerozšiřují stránku */
.nap-clanek h1 { font-size: 1.3rem; margin: 0 0 .8rem; }
.nap-clanek h2 { display: block; font-size: 1.05rem; margin: 1.6rem 0 .5rem;
  padding-bottom: .35rem; border-bottom: 1px solid var(--okraj);
  text-transform: none; letter-spacing: 0; color: var(--inkoust); }
.nap-clanek h3 { font-size: .95rem; margin: 1.1rem 0 .35rem;
  text-transform: none; letter-spacing: 0; color: var(--inkoust); }
.nap-clanek table { border-collapse: collapse; margin: .6rem 0; width: 100%; }
.nap-clanek th, .nap-clanek td { border: 1px solid var(--okraj);
  padding: .4rem .6rem; text-align: left; font-size: .86rem; }
.nap-clanek th { background: var(--plocha-jemna); }
.nap-clanek code { background: var(--plocha-jemna); border: 1px solid var(--okraj);
  border-radius: 6px; padding: .05rem .35rem; font-size: .85em; }
.nap-clanek ul, .nap-clanek ol { padding-left: 1.4rem; }
.nap-clanek li { margin: .18rem 0; }
.nap-clanek blockquote { border-left: 3px solid var(--tyrkys);
  margin: .7rem 0; padding: .35rem .9rem; background: var(--plocha-jemna);
  border-radius: 0 10px 10px 0; }
.nap-paticka { display: flex; justify-content: space-between; margin-top: 1.6rem;
  padding-top: .8rem; border-top: 1px solid var(--okraj); }
@media (max-width: 1000px) { .nap-obal { grid-template-columns: minmax(0, 1fr); }
  .nap-bocni { position: static; max-height: none; } }

/* ============ Standard celého rozhraní „boční panel + hlavní plocha"
   (30. 8. 2026, ZÁVAZNÉ pro každou stránku s tímto rozvržením):
   .bp-obal > aside.karta.bp-bocni + .bp-hlavni. Oba sloupce mají
   JEDNOTNOU výšku okno − 114 px (hlavička stránky 100 px + spodní
   linka 14 px — stejná spodní linka jako Úkoly/Aktivity); stránka
   samotná NEscrolluje, scroll žije jen v obsahu sloupců/karet.
   Nové stránky staví VÝHRADNĚ na těchto třídách — layout se pak
   spravuje a ladí hromadně na jednom místě. ============ */
/* šířka panelu 224px = parita s kalendářem a Aktivitami (zadání
   1. 9. 2026 — sjednotit seznamy podle doladěných částí portálu);
   sbalené hlavní menu panely rozšiřuje o 15 % jako u kalendáře */
/* 21. 9. 2026: šířku panelu si uživatel táhne úchopem (static/panely.js).
   --panel-vychozi = výchozí šířka rozvržení, --panel-sirka = uložená
   předvolba uživatele (server, accounts.predvolby klíč „panely"). */
.bp-obal { display: grid; --panel-vychozi: 269px;   /* 12. 9. 2026: boční panel +20 % (224 → 269 px) napříč portálem */
  grid-template-columns: var(--panel-sirka, var(--panel-vychozi)) 1fr; gap: .9rem;
  position: relative; align-items: stretch; }
html.menu-sbaleno .bp-obal { --panel-vychozi: 310px; }   /* sbalené hlavní menu: 258 → 310 px (+20 %) */
/* STRÁNKA NESCROLLUJE (2. 9. večer): místo křehké konstanty
   „100vh − 114px" je .obsah s bp-obalem flex sloupec pevné výšky okna;
   hlavička nahoře v přirozené výšce, .bp-obal vyplní zbytek (flex:1) a
   scroll žije jen uvnitř sloupců — adaptuje se na jakoukoli výšku
   hlavičky bez magického čísla. */
main.obsah:has(.bp-obal) { height: 100vh; display: flex;
  flex-direction: column; overflow: hidden; padding-bottom: 0; }
.bp-obal { flex: 1 1 auto; min-height: 0; }
.bp-obal > .bp-bocni, .bp-obal > .bp-hlavni { position: static;
  height: auto; max-height: none; min-height: 0; align-self: stretch; }
.bp-hlavni { overflow-y: auto; min-width: 0; }
/* 17. 9. 2026 (uživatel: Poptávky „úplný dojezd stránky bez dolního odsazení"):
   hlavní plocha končila až na spodním okraji okna (1400 px), zatímco boční
   karta o svůj margin výš (1386 px) — poslední karta obsahu tak vypadala
   uříznutá stránkou. Sjednoceno GLOBÁLNĚ: .bp-hlavni má stejný spodní
   margin jako .karta (spodní linka 14 px), scroll kontejner i karty na
   plnou výšku (Aktivity) končí na téže lince jako boční panel. */
.bp-obal > .bp-hlavni { margin-bottom: var(--mezera-m); }
@media (max-width: 1100px) {
  main.obsah:has(.bp-obal) { height: auto; display: block;
    overflow: visible; }
  .bp-obal { grid-template-columns: 1fr; }
  .bp-obal > .bp-bocni, .bp-obal > .bp-hlavni { height: auto; }
}
/* telefon / tablet na výšku: boční panel nad obsahem jen do 42 % výšky okna (scrolluje uvnitř),
   aby obsah stránky začínal na první obrazovce (1. 10. 2026) */
@media (max-width: 900px) {
  .bp-obal > .bp-bocni, .bp-obal > aside, .kal-telo > .kal-bocni { max-height: 42vh; overflow-y: auto; }
}

/* ---- levý panel standardu (vzor Úkoly/Poznámky) — šířka 21 rem, sekční
   popisky, řádky s hoverem a počtem vpravo. Oddělovač režimů sloupce
   (pz-oddel) NENÍ součástí standardu. ---- */
.bp-bocni { padding: .6rem; height: 100%; min-height: 0;
  overflow-y: auto; display: flex; flex-direction: column;
  scrollbar-width: none; }
/* hlavička sekce: popisek + počet vybraných + přepínač „vše" */
.bp-popisek { display: flex; align-items: center; gap: .45rem;
  margin: 0 0 .2rem; padding: .1rem .1rem .25rem; font-size: .92rem;
  font-weight: 650; text-transform: none; letter-spacing: 0;
  color: var(--inkoust); }
.bp-vybrano { font-variant-numeric: tabular-nums; letter-spacing: 0;
  opacity: .8; }
.bp-soucet { margin-left: auto; font-size: var(--pismo-drobne);
  color: var(--seda); font-variant-numeric: tabular-nums; }
.bp-popisek:has(.bp-soucet) .bp-vse { margin-left: .5rem; }
.bp-vse { margin-left: auto; border: 0; background: none; padding: 0 .2rem;
  color: var(--seda); cursor: pointer; border-radius: 6px;
  display: inline-flex; align-items: center; }
.bp-vse svg { width: 14px; height: 14px; }
.bp-vse:hover { color: var(--tyrkys-tmavy); }
.bp-vse.bp-oko-skryto { opacity: .7; }
/* kompaktní řádky: hustota pro rychlé skenování dlouhých seznamů */
.bp-radek { position: relative; display: flex; align-items: center;
  gap: .4rem; padding: .16rem .45rem; border-radius: 6px;
  font-size: .82rem; line-height: 1.25; color: var(--inkoust);
  cursor: pointer; min-width: 0; }
.bp-radek:hover { background: var(--plocha); }
.bp-radek input[type="checkbox"] { width: .8rem; height: .8rem; margin: 0;
  flex: none; accent-color: var(--tyrkys-tmavy); }
.bp-radek:has(input:not(:checked)) { color: var(--seda); }
.bp-radek:has(input:not(:checked)) .bp-tecka { opacity: .35; }
.bp-radek .bp-nazev { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.bp-ikona { flex: none; width: 1rem; display: inline-flex;
  justify-content: center; }
.bp-ikona svg { width: .85rem; height: .85rem; }
.bp-tecka { flex: none; width: .55rem; height: .55rem; border-radius: 99px;
  display: inline-block; }
.bp-pocet { margin-left: auto; font-size: .72rem; color: var(--seda);
  white-space: nowrap; font-variant-numeric: tabular-nums; }
/* „jen" — izolace jedné položky (objeví se na hoveru přes počet) */
.bp-jen { position: absolute; right: .3rem; border: 0; border-radius: 6px;
  padding: .05rem .4rem; font-size: .66rem; text-transform: uppercase;
  letter-spacing: .04em; background: var(--navy); color: #fff;
  cursor: pointer; opacity: 0; transition: opacity .12s ease; }
.bp-radek:hover .bp-jen { opacity: 1; }
/* izolovaný řádek: tlačítko se mění na „obnovit" a je vidět trvale */
.bp-jen.bp-obnovit { opacity: 1; color: var(--tyrkys); font-weight: 640; }
.bp-radek:hover .bp-pocet { opacity: 0; }

/* detail aktivity (modal na stránce Aktivity/Čas) */
.akc-det { display: flex; flex-direction: column; gap: .45rem; }
.akc-det-radek { display: grid; grid-template-columns: 8rem minmax(0, 1fr);
  gap: 1rem; align-items: baseline; font-size: .9rem; }
.akc-det-popisek { font-size: .8rem; color: var(--seda); text-align: right; }
.akc-det-radek .akc-tecka { margin-right: .25rem; }

/* docházka v Aktivitách: štítky v hlavičce dne + akce v sidebaru */
.akc-doch { display: inline-flex; gap: .3rem; margin-left: .6rem;
  text-transform: none; }
.akc-doch-stitek { display: inline-flex; align-items: center;
  padding: .05rem .5rem; border-radius: 99px; font-size: .68rem;
  font-weight: 600; border: 1px solid var(--okraj);
  background: var(--plocha-jemna); color: var(--seda); }
.akc-doch-prace { color: var(--tyrkys-tmavy);
  border-color: rgba(85, 208, 212, .4); }
.akc-doch-dovolena, .akc-doch-svatek { color: var(--ok-text, #2C8A5B); }
.akc-doch-nemoc, .akc-doch-lekar { color: var(--chyba); }

/* Docházka — reporting pro účetní: mřížka dnů */
.ag-doch-mrizka { border-collapse: collapse; }
.ag-doch-mrizka th, .ag-doch-mrizka td { padding: .18rem .25rem;
  text-align: center; font-size: .74rem; border: 1px solid var(--okraj); }
.ag-mriz-jmeno { text-align: left !important; white-space: nowrap;
  padding: .18rem .5rem !important; }
.ag-mriz-den { min-width: 1.9rem; font-variant-numeric: tabular-nums; }
.ag-mriz-vikend { background: var(--plocha-jemna); color: var(--seda); }
.ag-mriz-svatek { background: rgba(214, 69, 69, .08); }
.ag-mriz-dnes { outline: 2px solid var(--tyrkys); outline-offset: -2px; }
.ag-mriz-kod { display: block; font-weight: 700; font-size: .68rem; }
.ag-mriz-h { display: block; font-size: .66rem; color: var(--seda); }

/* patička bočního panelu (vzor kal-bocni-pata) + Profily zobrazení */
/* informační řádky bp (bez checkboxu — přehledy, např. Projekty) */
.bp-radek-info { cursor: default; }
.bp-radek-info .bp-pocet { font-variant-numeric: tabular-nums;
  color: var(--tyrkys); font-weight: 640; }
.bp-prazdno { margin: .1rem 0 .2rem; font-size: .74rem;
  color: var(--seda); }
/* ---- „Zpět“ v bočním panelu (04/10/2026, přání uživatele): VŽDY první prvek aside.bp-bocni, sdílené
   _bp_zpet.html (vzor dřívějšího .nu-zpet z profilu uživatele). Nahrazuje „‹ Zpět“ v podtitulu hlavičky. ---- */
.bp-navrat { flex: none; display: flex; align-items: center; gap: .45rem; min-width: 0;
  margin: 0 0 .55rem; padding: .34rem .5rem; border-radius: var(--r-prvek);
  border: 1px solid var(--okraj); background: var(--plocha-jemna);
  color: var(--tyrkys-tmavy); font-weight: 640; font-size: .86rem; line-height: 1.25;
  text-decoration: none; }
.bp-navrat:hover { background: var(--akcent-pozadi); border-color: var(--tyrkys); }
.bp-navrat:focus-visible { outline: 2px solid var(--tyrkys); outline-offset: 1px; }
.bp-navrat-ik { display: inline-flex; flex: none; }
.bp-navrat-ik svg { width: 15px; height: 15px; }
.bp-navrat-kam { margin-left: auto; min-width: 0; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; color: var(--seda); font-weight: 500; font-size: .76rem; }
.bp-pata { flex: 0 0 auto; margin-top: auto; padding: .85rem 0 8px;
  border-top: 1px solid var(--okraj); display: flex; gap: .4rem;
  align-items: center; }
.bp-pata .hero-drop { flex: 1; }
.bp-pata .bp-zpet.hero-drop-tlacitko { flex: none; width: 34px;
  min-width: 34px; min-height: 28px; height: 28px;
  padding: 0; display: flex; align-items: center; justify-content: center;
  border-radius: 7px; }
.bp-pata .hero-drop-tlacitko { width: 100%; justify-content: center;
  min-height: 28px; height: 28px; padding: 0 .65rem; font-size: .78rem;
  border-radius: 7px; display: flex; align-items: center; gap: .4rem; }
.bp-pata .hero-drop-tlacitko svg { width: 15px; height: 15px; }
.bp-pata .profil-dropdown { top: auto; bottom: calc(100% + .45rem);
  left: 0; right: 0; }
/* ---- levý sloupec sekce Nastavení (17. 9. 2026, registr nastaveni/navigace.py,
   include templates/nastaveni/_bocni.html) — skupiny s nadpisem, řádky-odkazy
   s ikonou; aktivní položka = zvýraznění jako .plus-strom-aktivni ---- */
.nast-bocni .nast-skupina { margin-bottom: var(--mezera-s); }
.nast-bocni .nast-skupina:last-child { margin-bottom: 0; }
.nast-bocni a.bp-radek { text-decoration: none; color: var(--inkoust); gap: .5rem;
  padding: .24rem .5rem; }
.nast-bocni a.bp-radek:hover { background: var(--plocha-jemna); color: var(--inkoust); }
.nast-bocni a.bp-radek.aktivni { background: var(--akcent-jemny); font-weight: 600; }
.nast-bocni a.bp-radek.aktivni:hover { background: rgba(85, 208, 212, .2); }
.nast-bocni .bp-ikona { color: var(--seda); }
.nast-bocni a.bp-radek.aktivni .bp-ikona, .nast-bocni a.bp-radek:hover .bp-ikona { color: var(--tyrkys-tmavy); }
.nast-bocni .bp-ikona svg { width: .95rem; height: .95rem; }
/* odznak s počtem u položky sekce Nastavení (registr `metrika`) — na rozdíl
   od stromů Adresáře se nesmí schovat při najetí myší */
.nast-bocni a.bp-radek .nast-pocet, .nast-bocni a.bp-radek:hover .nast-pocet {
  opacity: 1; font-variant-numeric: tabular-nums; font-weight: 600;
  color: var(--tyrkys-tmavy); background: var(--akcent-jemny);
  border-radius: 999px; padding: 0 .38rem; }
/* hlavní části panelu Nastavení (30. 9. 2026): Firemní / Systémové — nadpis nad skupinami */
.nast-bocni .nast-cast { margin: .2rem 0 .45rem; padding-bottom: .3rem; font-size: .68rem;
  font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
  color: var(--tyrkys-tmavy); border-bottom: 1px solid var(--okraj); }
.nast-bocni .nast-skupina + .nast-cast { margin-top: 1.1rem; }
/* Nastavení → Kalendáře (30. 9. 2026): přehled kalendářů a CalDAV */
.nast-kalendare .nk-tecka { display: inline-block; width: .65rem; height: .65rem; border-radius: 50%;
  margin-right: .45rem; vertical-align: middle; }
.nast-kalendare tr.nk-archiv td { color: var(--seda); }
.nast-kalendare .stitek.nk-chyba { border-color: var(--chyba); color: var(--chyba); }
.nast-kalendare .karta + .karta { margin-top: 1rem; }
/* Nastavení → Kalendáře → Nextcloud (30. 9. 2026): spojení, párování, náhled, protokol, brzda */
.nast-kalendare .nc-karta > h2 .stitek { text-transform: none; letter-spacing: 0; }
.nc-podnadpis { margin: var(--mezera-l) 0 var(--mezera-s); padding-bottom: var(--mezera-xs);
  border-bottom: 1px solid var(--okraj); font-size: .76rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--tyrkys-tmavy); }
.nc-podnadpis small { text-transform: none; letter-spacing: 0; color: var(--seda); font-weight: 600; }
.nc-spojeni .blok-4 { max-width: 72rem; }
.nc-spojeni-akce { display: flex; flex-wrap: wrap; align-items: center; gap: var(--mezera-s);
  margin-top: var(--mezera-m); }
.nc-spojeni-akce .drobky { margin: 0; }
.nc-chyba-spojeni { display: flex; align-items: center; gap: .45rem; }
.nc-chyba-spojeni .ik { flex: none; }
.nc-tabulka-obal { overflow-x: auto; }
/* rozbalovací seznam ostatních kalendářů NC (30. 9. 2026) */
.nc-rozbal { margin-top: var(--mezera-m); }
.nc-rozbal > summary.nc-rozbal-hlava { list-style: none; cursor: pointer; display: flex; align-items: center;
  gap: .5rem; user-select: none; }
.nc-rozbal > summary::-webkit-details-marker { display: none; }
.nc-rozbal-sipka { display: inline-flex; transition: transform .15s; transform: rotate(-90deg); color: var(--seda); }
.nc-rozbal[open] .nc-rozbal-sipka { transform: none; }
.nc-rozbal-sipka svg { width: 1rem; height: 1rem; }
.nc-rozbal-pozn { margin-left: auto; text-transform: none; letter-spacing: 0; font-weight: 400; }
.nc-rozbal > summary:hover { color: var(--tyrkys-tmavy); }
.nc-tabulka td { vertical-align: middle; }
.nc-tabulka .nc-nowrap, .nc-behy td:first-child { white-space: nowrap; }
.nc-tabulka .nc-cislo, .nc-tabulka th.nc-cislo { text-align: right; font-variant-numeric: tabular-nums; }
.nc-tabulka .nc-cas { white-space: nowrap; font-variant-numeric: tabular-nums; }
.nc-vysledek { display: block; max-width: 24rem; color: var(--seda); font-size: var(--pismo-drobne);
  line-height: 1.35; margin-top: .1rem; }
.nc-par-nazev { font-weight: 600; }
/* požadavek čeká na cron nextcloud_sync --splatne (revize I4+I6) */
.nc-ceka-radek { display: inline-flex; align-items: center; gap: .35rem; font-weight: 600;
  color: var(--tyrkys-tmavy); white-space: nowrap; }
.nc-ceka-radek svg, .nc-ceka-ikona svg { animation: nc-toceni 1.6s linear infinite; }
.nk-chyba-text { color: var(--chyba); }
.nc-chyba-pozadavku { margin-bottom: var(--mezera-m); }
@keyframes nc-toceni { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .nc-ceka-radek svg, .nc-ceka-ikona svg { animation: none; } }
.nc-par-vyber { max-width: 17rem; }
/* sloupec „Zkopírovat do…“ — jednorázová kopie kalendáře NC do portálu (1. 10. 2026) */
.nc-kopie-form { display: inline-flex; align-items: center; gap: .35rem; margin: 0; white-space: nowrap; }
.nc-kopie-vyber { max-width: 14rem; }
.nc-kopie-form .akce-btn .ik { width: .95em; height: .95em; }
.nc-kopie-posledni { display: block; margin-top: .15rem; font-size: var(--pismo-drobne); color: var(--seda);
  max-width: 22rem; line-height: 1.35; }
.nc-kopie-posledni svg { width: .9em; height: .9em; vertical-align: -.1em; animation: nc-toceni 1.6s linear infinite; }
.nc-kopie-posledni:hover { color: var(--tyrkys-tmavy); }
.nc-d-kopie:not(.nc-d-nula) .nc-d-cislo { color: var(--tyrkys-tmavy); }
.nc-d-soukroma:not(.nc-d-nula) .nc-d-cislo, .nc-d-nezpracovatelne:not(.nc-d-nula) .nc-d-cislo { color: var(--oranzova); }
.nc-kopie-protokol { margin: 0; padding-left: 1.1rem; font-size: var(--pismo-seznam); font-variant-numeric: tabular-nums; }
.nc-kopie-info { margin: 0 0 var(--mezera-s); font-size: .86rem; }
@media (prefers-reduced-motion: reduce) { .nc-kopie-posledni svg { animation: none; } }
.nc-pocet-fronta, .nc-pocet-konflikty { display: inline-block; min-width: 1.6rem; text-align: center;
  border-radius: 999px; padding: 0 .4rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.nc-pocet-fronta { background: var(--akcent-pozadi); color: var(--tyrkys-tmavy); }
.nc-pocet-konflikty { background: var(--varovani-pozadi); color: var(--varovani);
  border: 1px solid var(--varovani-okraj); text-decoration: none; }
.nc-pocet-konflikty:hover { border-color: var(--varovani); }
.nc-akce { flex-wrap: wrap; justify-content: flex-end; }
.nc-akce form { display: inline-flex; margin: 0; }
.nc-akce .akce-btn .ik { width: .95em; height: .95em; }
.akce-btn.nc-akce-hlavni { color: var(--tyrkys-tmavy); border-color: var(--tyrkys-tmavy); background: var(--akcent-pozadi); }
.akce-btn.nc-akce-nebezpecna { color: var(--chyba); border-color: var(--chyba-okraj); }
.akce-btn.nc-akce-nebezpecna:hover { color: var(--text-na-vyplni); background: var(--chyba); border-color: var(--chyba); }
.stitek.nc-stav-aktivni { border-color: var(--ok-okraj); color: var(--ok-text); background: var(--ok-pozadi); }
.stitek.nc-stav-navrh { border-style: dashed; }
.stitek.nc-stav-pozastaveno { border-color: var(--varovani-okraj); color: var(--varovani); background: var(--varovani-pozadi); }
.stitek.nc-stav-chyba { border-color: var(--chyba-okraj); color: var(--chyba); background: var(--chyba-pozadi); }
.stitek.nc-stitek { margin-left: .3rem; border-color: var(--tyrkys-tmavy); color: var(--tyrkys-tmavy);
  background: var(--akcent-pozadi); font-weight: 650; }
.nc-prazdne { margin: var(--mezera-s) 0 0; }
/* pruh brzdy mazání — výrazný, nad tabulkou (spec §9) */
.nc-brzda { margin: 0 0 var(--mezera-m); padding: var(--mezera-m) 1rem; border-radius: var(--r-prvek);
  background: var(--varovani-pozadi); border: 1px solid var(--varovani-okraj);
  box-shadow: inset 5px 0 0 var(--varovani); color: var(--inkoust); }
.nc-brzda-hlava { display: flex; gap: .75rem; align-items: flex-start; }
.nc-brzda-ikona { flex: none; color: var(--varovani); padding-top: .1rem; }
.nc-brzda-ikona .ik, .nc-brzda-ikona svg { width: 1.35rem; height: 1.35rem; }
.nc-brzda h3 { margin: 0 0 var(--mezera-xxs); font-size: .98rem; font-weight: 750; color: var(--varovani); }
.nc-brzda p { margin: 0; font-size: .84rem; line-height: 1.5; }
.nc-brzda-seznam { list-style: none; margin: var(--mezera-s) 0 0 2.1rem; padding: 0; display: grid;
  grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr)); gap: .2rem 1.4rem;
  font-size: var(--pismo-drobne); }
.nc-brzda-seznam li { overflow-wrap: anywhere; line-height: 1.45; }
.nc-brzda-cas { color: var(--seda); font-variant-numeric: tabular-nums; margin-right: .3rem; }
.nc-brzda-dalsi { color: var(--varovani); font-weight: 650; }
.nc-brzda-akce { display: flex; flex-wrap: wrap; align-items: center; gap: var(--mezera-s);
  margin: var(--mezera-m) 0 0 2.1rem; }
.nc-brzda-akce form { margin: 0; }
.nc-brzda-akce .drobky { margin: 0; }
.nc-brzda .btn-nebezpecny { background: var(--karta); }
.nc-brzda .btn-nebezpecny:hover { background: var(--chyba); }
/* podstránky náhled + protokol */
.nc-stranka .nc-sekce { margin-top: 0; }
.nc-upozorneni { display: flex; gap: .85rem; align-items: flex-start; margin: 0 0 var(--mezera-m);
  padding: var(--mezera-m) 1.1rem; border-radius: var(--r-karta); background: var(--akcent-pozadi);
  border: 1px solid var(--tyrkys-tmavy); color: var(--inkoust); }
.nc-upozorneni-ikona { flex: none; color: var(--tyrkys-tmavy); padding-top: .1rem; }
.nc-upozorneni-ikona .ik, .nc-upozorneni-ikona svg { width: 1.5rem; height: 1.5rem; }
.nc-upozorneni strong { display: block; font-size: 1.08rem; font-weight: 780; color: var(--tyrkys-tmavy); }
.nc-upozorneni p { margin: var(--mezera-xxs) 0 0; font-size: .86rem; line-height: 1.55; max-width: 80rem; }
.nc-dlazdice { display: grid; grid-template-columns: repeat(auto-fit, minmax(10.5rem, 1fr));
  gap: var(--mezera-s); margin: 0 0 var(--mezera-m); }
.nc-dlazdice-polozka { display: flex; flex-direction: column; gap: .1rem; padding: .7rem .9rem;
  border-radius: var(--r-prvek); background: var(--karta); box-shadow: var(--stin-1);
  border: 1px solid var(--okraj-karty); text-decoration: none; color: var(--inkoust);
  transition: border-color .15s ease; }
.nc-dlazdice-polozka:hover { border-color: var(--tyrkys-tmavy); color: var(--inkoust); }
.nc-d-cislo { font-size: 1.65rem; font-weight: 780; line-height: 1.1; color: var(--navy-text);
  font-variant-numeric: tabular-nums; }
.nc-d-nazev { font-size: .86rem; font-weight: 650; }
.nc-d-popis { font-size: var(--pismo-drobne); color: var(--seda); }
.nc-d-nula .nc-d-cislo { color: var(--seda); }
.nc-d-nejiste:not(.nc-d-nula) { border-color: var(--varovani-okraj); background: var(--varovani-pozadi); }
.nc-d-nejiste:not(.nc-d-nula) .nc-d-cislo { color: var(--varovani); }
.nc-d-v_kosi:not(.nc-d-nula) .nc-d-cislo, .nc-d-preskoceno:not(.nc-d-nula) .nc-d-cislo { color: var(--oranzova); }
.nc-sekce-nejiste { border-color: var(--varovani-okraj); box-shadow: inset 5px 0 0 var(--varovani), var(--stin-1); }
.nc-volba { margin: var(--mezera-s) 0 0; padding: .55rem .9rem .65rem; border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); background: var(--pole); }
.nc-volba legend { padding: 0 .35rem; font-size: .88rem; }
.nc-volba-radek { display: flex; justify-content: flex-start; align-items: center; gap: .55rem;
  margin: .3rem 0; font-size: .86rem; text-align: left; cursor: pointer; }
.nc-volba-radek input[type=radio] { flex: 0 0 auto; width: auto; min-width: 0; margin: 0;
  accent-color: var(--tyrkys-tmavy); }
.nc-seznam { max-height: 26rem; overflow: auto; border-radius: var(--r-karta); }
.nc-tabulka-nahled td { font-size: var(--pismo-seznam); }
.nc-tabulka-nahled .nc-cas { white-space: nowrap; width: 11rem; font-variant-numeric: tabular-nums; }
.stitek.nc-rozdil { border-color: var(--varovani-okraj); color: var(--varovani); background: var(--varovani-pozadi); margin: .05rem 0; }
tr.nc-podminene td { color: var(--seda); }
.nc-soubor { font-family: var(--mono); font-size: var(--pismo-drobne); word-break: break-all; }
.nc-dva-sloupce { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--mezera-m); }
.nc-dva-sloupce > .karta { margin: 0 0 var(--mezera-m); }
.nast-kalendare .nc-dva-sloupce > .karta + .karta { margin-top: 0; }
@media (max-width: 1200px) { .nc-dva-sloupce { grid-template-columns: minmax(0, 1fr); gap: 0; } }
.nc-potvrzeni-lista { position: sticky; bottom: 0; z-index: 6; display: flex; flex-wrap: wrap;
  align-items: center; gap: var(--mezera-s); margin-top: var(--mezera-s); padding: .75rem 1.1rem;
  border-radius: var(--r-karta); background: var(--karta); border: 1px solid var(--okraj);
  box-shadow: var(--stin-2); }
.nc-prehled { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: var(--mezera-s) 1.4rem;
  margin: 0 0 var(--mezera-m); padding: .8rem 1.15rem; border-radius: var(--r-karta);
  background: var(--karta); box-shadow: var(--stin-1); font-size: .86rem; }
.nc-prehled > div { min-width: 0; }
.nc-prehled-siroke { grid-column: 1 / -1; }
.nc-prehled-popisek { display: block; font-size: .68rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--seda); margin-bottom: .15rem; }
.nc-hodnota { max-width: 22rem; overflow-wrap: anywhere; }
.nc-vyhrala { font-weight: 650; }
.nc-chyba-text { color: var(--chyba); overflow-wrap: anywhere; max-width: 30rem; }
.nc-zprava { max-width: 44rem; overflow-wrap: anywhere; }
.nc-zprava summary { cursor: pointer; }
.nc-zprava pre { margin: .35rem 0 0; max-height: 16rem; overflow: auto; white-space: pre-wrap;
  font-family: var(--mono); font-size: var(--pismo-drobne); background: var(--plocha-jemna);
  border-radius: var(--r-prvek); padding: .5rem .65rem; }
/* pata panelu Nastavení (30. 9. 2026): přepnutí Nastavení profilu ⇄ Nastavení */
.nast-bocni .nast-pata { margin-top: auto; }
.nast-bocni .nast-prepnout { display: flex; align-items: center; gap: .5rem; flex: 1;
  padding: .3rem .45rem; border-radius: 6px; font-size: .82rem; font-weight: 600;
  text-decoration: none; color: var(--tyrkys-tmavy); }
.nast-bocni .nast-prepnout:hover { background: var(--plocha-jemna); }
.nast-bocni .nast-prepnout .bp-ikona { color: var(--tyrkys-tmavy); }
/* fronta „Změny od klientů" (Nastavení → HUB) */
.hub-navrh .hub-zamitnout { display: flex; gap: .4rem; align-items: center; }
.hub-navrh .hub-zamitnout input { min-width: 16rem; }
/* rozcestník na /nastaveni/ (pravá plocha) */
.nast-rozcestnik .seznam-odkazu li small { color: var(--seda); }

.bp-profil-radek { display: flex; align-items: center;
  justify-content: space-between; gap: .5rem; width: 100%; border: 0;
  background: none; padding: .35rem .6rem; border-radius: 8px;
  font-size: .84rem; color: var(--inkoust); cursor: pointer;
  text-align: left; }
.bp-profil-radek:hover { background: var(--plocha); }
.bp-profil-smazat { color: var(--seda); padding: 0 .2rem; }
.bp-profil-smazat:hover { color: var(--chyba); }
.bp-profil-nic { padding: .3rem .6rem; margin: 0; }
.bp-profil-novy { display: flex; gap: .35rem; padding: .4rem .5rem .2rem;
  border-top: 1px solid var(--okraj); margin-top: .3rem; }
.bp-profil-novy input { flex: 1; min-width: 0; font-size: .8rem;
  padding: .25rem .5rem; }

/* ---- Projekty: jednosloupcový seznam s detailem (prj-*) ---- */
.prj-sync { display: inline; }
/* stránka bez scrollbaru: seznam plní okno a roluje jen uvnitř
   (hlavička stránky 100px + 14px mezera dole — vzor Aktivit) */
main.obsah:has(.prj-seznam) { padding-bottom: 0; }
.prj-seznam { padding: 0 .9rem .5rem; height: calc(100vh - 114px);
  overflow-y: auto; box-sizing: border-box; }
.prj-hlavicka { position: sticky; top: 0; z-index: 2;
  background: var(--karta); border-bottom: 1px solid var(--okraj);
  border-radius: 0; padding-top: .6rem; padding-bottom: .45rem;
  font-family: inherit; font-size: .72rem; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase;
  color: var(--seda); align-items: end; }
.prj-hlavicka:hover { background: var(--karta); }
.prj-hlavicka-cas { text-align: right; }
.prj-radek { display: grid; align-items: center; gap: 1.1rem;
  grid-template-columns: minmax(15rem, 1.15fr) 15.5rem
    minmax(0, 1fr) minmax(0, 15rem) 8rem 7.2rem;
  padding: .55rem .45rem; border-bottom: 1px solid var(--okraj);
  border-radius: 9px; }
.prj-radek:last-child { border-bottom: 0; }
.prj-radek:hover { background: var(--plocha-jemna); }
.prj-nazev { display: flex; flex-direction: column; gap: .1rem;
  min-width: 0; }
.prj-nazev a { text-decoration: none; font-size: .98rem; }
.prj-nazev small { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.prj-stitky { white-space: nowrap; }
.prj-konektory { display: flex; flex-wrap: wrap; gap: .3rem;
  min-width: 0; }
.prj-konektor { display: inline-flex; align-items: center; gap: .35rem;
  border: 1px solid var(--okraj); border-radius: 99px;
  padding: .1rem .55rem; font-size: .74rem;
  background: var(--plocha-jemna); white-space: nowrap; }
.prj-tecka { width: .5rem; height: .5rem; border-radius: 99px; flex: none; }
.prj-ok { background: #3fbf6f; }
.prj-chyba { background: #e05555; }
.prj-nezname { background: var(--seda); }
.prj-meta { display: flex; flex-direction: column; gap: .1rem;
  min-width: 0; }
.prj-meta a, .prj-server { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.prj-cas { white-space: nowrap; color: var(--tyrkys); font-weight: 640;
  font-size: .85rem; display: inline-flex; align-items: center;
  gap: .3rem; justify-content: flex-end;
  font-variant-numeric: tabular-nums; }
/* sloupec Záznam času = přepínací chip */
.prj-cas-prepinac { border: 1px solid
  color-mix(in srgb, var(--tyrkys) 45%, var(--okraj));
  background: color-mix(in srgb, var(--tyrkys) 10%, transparent);
  border-radius: 99px; padding: .22rem .65rem; cursor: pointer;
  font: inherit; }
.prj-cas-prepinac.prj-cas-vyp { border-color: var(--okraj);
  background: none; }
.prj-cas-prepinac:hover { border-color: var(--tyrkys); }
/* akční sada řádku */
.prj-akce { display: inline-flex; align-items: center; gap: .3rem;
  justify-content: flex-end; }
.prj-akce-btn { display: inline-flex; align-items: center;
  justify-content: center; width: 1.9rem; height: 1.9rem;
  border: 1px solid var(--okraj); border-radius: 7px;
  background: var(--plocha-jemna); color: var(--seda);
  cursor: pointer; font: inherit; text-decoration: none; }
.prj-akce-btn:hover { color: var(--inkoust);
  border-color: var(--okraj-silny); }
.prj-akce-mrtva { opacity: .3; pointer-events: none; }
.prj-akce .profil-dropdown { left: auto; right: 0; min-width: 15rem;
  z-index: 40; box-shadow: 0 10px 28px rgba(0, 0, 0, .45); }
.prj-akce .profil-dropdown button { display: flex; width: 100%;
  border: 0; background: none; color: inherit; font: inherit;
  text-align: left; cursor: pointer; }
.prj-hlavicka-akce { text-align: right; }
.prj-cas small { color: var(--seda); font-weight: 400; }
.prj-cas-vyp { color: var(--seda); }
@media (max-width: 1300px) { .prj-radek { grid-template-columns: 1fr;
  gap: .3rem; } .prj-cas { justify-content: flex-start; } }

/* ---- Aktivity: Plánovač (akp-*) — časová osa; přehlednost 1. 9.:
   sticky osa, sudá mřížka, linka „teď", vyšší dráhy, správa klikem ---- */
.akp { margin-top: .4rem; }
.akp-radek { display: grid; grid-template-columns: 11rem 1fr;
  gap: .7rem; align-items: center; padding: .18rem 0; }
.akp-radek:hover .akp-drah { background:
  color-mix(in srgb, var(--tyrkys) 6%, var(--plocha-jemna)); }
.akp-jmeno { font-size: .84rem; font-weight: 620; display: flex;
  justify-content: space-between; align-items: baseline; gap: .5rem; }
.akp-drah { position: relative; height: 34px; cursor: pointer;
  background: var(--plocha-jemna); border-radius: 7px; overflow: hidden; }
.akp-osa-hlava { position: sticky; top: 0; z-index: 5;
  background: var(--karta); padding-bottom: .1rem; }
.akp-osa-hlava .akp-drah { height: 18px; background: none;
  overflow: visible; cursor: default; }
.akp-znacka { position: absolute; top: 0; transform: translateX(-50%);
  font-size: .68rem; color: var(--seda);
  font-variant-numeric: tabular-nums; }
.akp-mriz { position: absolute; top: 0; bottom: 0; width: 1px;
  background: var(--okraj); opacity: .35; }
.akp-mriz-suda { opacity: .8; }
.akp-ted { position: absolute; top: 0; bottom: 0; width: 2px;
  background: var(--chyba); z-index: 3; }
.akp-dnes .akp-den-hlava::after { content: " · dnes"; color: var(--chyba);
  text-transform: none; }
.akp-vikend .akp-den-hlava { color: var(--seda); }
.akp-vikend .akp-drah { background:
  color-mix(in srgb, var(--seda) 7%, var(--plocha-jemna)); }
.akp-den-soucet { font-family: var(--mono); font-size: .76rem;
  color: var(--inkoust); margin-left: .5rem;
  font-variant-numeric: tabular-nums; }
.akp-prazdno { margin: 0 0 .1rem; padding-left: .1rem; opacity: .6; }
.akp-smena { position: absolute; top: 0; bottom: 0;
  background: color-mix(in srgb, var(--tyrkys) 16%, transparent);
  border-left: 2px solid color-mix(in srgb, var(--tyrkys) 45%, transparent);
  border-right: 2px solid color-mix(in srgb, var(--tyrkys) 45%, transparent); }
.akp-aktivita { position: absolute; top: 4px; bottom: 4px;
  background: color-mix(in srgb, var(--druh) 30%, var(--karta));
  border: 1px solid var(--druh); border-left-width: 4px;
  border-radius: 5px; display: flex; align-items: center;
  padding: 0 .35rem; overflow: hidden; text-decoration: none;
  color: var(--inkoust); min-width: 4px; }
.akp-aktivita:hover { filter: brightness(1.12);
  border-left-width: 6px; }
.akp-aktivita span { font-size: .7rem; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }
.akp-aktivita span small { color: var(--seda); font-size: .92em; }
.akp-den { margin-top: .5rem; }
.akp-den-hlava { margin: .5rem 0 .15rem; font-size: .82rem;
  color: var(--tyrkys); text-transform: capitalize; }
.akp-prazdno { margin: .1rem 0 .3rem; }

/* ---- Aktivity: Kniha jízd (akj-*) ---- */
.akj-tabulka { font-size: .84rem; }
.akj-km { text-align: right; font-variant-numeric: tabular-nums;
  white-space: nowrap; }

/* ---- Aktivity: Úkoly + Papíry (aku-*) ---- */
.aku-sekce { margin-bottom: .6rem; }
.aku-pocet { font-size: .72rem; color: var(--tyrkys); font-weight: 640;
  margin-left: .3rem; font-variant-numeric: tabular-nums; }
.aku-radek { display: grid; grid-template-columns: 1fr minmax(0, 18rem) 6.5rem;
  gap: .8rem; align-items: baseline; padding: .3rem .45rem;
  border-radius: 8px; text-decoration: none; color: var(--inkoust);
  border-bottom: 1px solid var(--okraj); }
.aku-radek:hover { background: var(--plocha-jemna); }
.aku-text { font-size: .88rem; }
.aku-meta { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.aku-termin { text-align: right; font-size: .8rem; color: var(--seda);
  font-variant-numeric: tabular-nums; white-space: nowrap; }
.aku-pozde { color: #e05555; font-weight: 640; }
.aku-prubeh { display: inline-block; margin-left: .5rem;
  padding: .05rem .5rem; border-radius: 99px; font-size: .72rem;
  font-weight: 640; color: var(--tyrkys);
  background: color-mix(in srgb, var(--tyrkys) 14%, transparent);
  font-variant-numeric: tabular-nums; white-space: nowrap; }
/* Plánovač → dopředná agenda „Co mě čeká" */
.akp-agenda { margin-top: 1.2rem; }
.akp-servisy { margin-bottom: 1.2rem; }
.akp-den { margin-bottom: 1rem; }
.akp-den-hlava { margin: 0 0 .35rem; font-size: .9rem; text-transform: capitalize;
  color: var(--tyrkys); border-bottom: 1px solid var(--okraj); padding-bottom: .25rem; }
.akp-udalost { display: grid;
  grid-template-columns: 6.5rem 8rem 1fr minmax(0, 14rem) 8rem;
  gap: .7rem; align-items: baseline; padding: .3rem .45rem;
  border-radius: 8px; text-decoration: none; color: var(--inkoust);
  border-bottom: 1px solid var(--okraj); font-size: .86rem; }
.akp-udalost:hover { background: var(--plocha-jemna); }
.akp-cas { font-variant-numeric: tabular-nums; color: var(--seda);
  white-space: nowrap; }
.akp-subjekt, .akp-kdo { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
@media (max-width: 1100px) {
  .akp-udalost { grid-template-columns: 5.5rem 1fr; }
  .akp-udalost .akc-badge, .akp-subjekt, .akp-kdo { display: none; }
}
/* Výkazy → Moje doklady (PL/DL vedle sebe) */
.akc-doklady-mrizka { display: grid; grid-template-columns: 1fr 1fr;
  gap: 1.4rem; margin-bottom: 1.6rem; }
.akc-doklady-nadpis { display: flex; align-items: center; gap: .4rem;
  margin: 0 0 .5rem; font-size: .92rem; }
.akc-doklady-nadpis svg { width: 1rem; height: 1rem; }
.akc-doklady-tab { font-size: .84rem; }
.akc-doklady-tab td, .akc-doklady-tab th { padding: .3rem .5rem; }
@media (max-width: 1100px) {
  .akc-doklady-mrizka { grid-template-columns: 1fr; }
}
/* sjednocené povinnosti (Aktivity>Úkoly, podle data) — 4. sloupec = zdroj */
.aku-radek-pov { grid-template-columns: 11rem 1fr minmax(0, 15rem) 6.5rem; }
.aku-zdroj { display: inline-flex; align-items: center; gap: .3rem;
  font-size: .72rem; color: var(--seda); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }
.aku-zdroj svg { width: .85rem; height: .85rem; flex: none; }
@media (max-width: 1100px) {
  .aku-radek-pov { grid-template-columns: 1fr 6.5rem; }
  .aku-radek-pov .aku-zdroj, .aku-radek-pov .aku-meta { display: none; }
}

/* veřejné stažení přílohy události (tokenový odkaz z e-mailu) */
.priloha-box { max-width: 34rem; }
.priloha-nahled { margin: .6rem 0; }
.priloha-nahled img { max-width: 100%; border-radius: 10px;
  display: block; margin: 0 auto; }
.priloha-nahled iframe { width: 100%; height: 55vh; border: 1px solid
  var(--okraj); border-radius: 10px; background: #fff; }
.priloha-kod-pole { font-size: 1.4rem; letter-spacing: .45em;
  text-align: center; width: 11rem; font-variant-numeric: tabular-nums; }

/* ---- Projekty: karta projektu (prjd-*) ---- */
.prjd-mriz { display: grid; grid-template-columns: 1fr 1fr;
  gap: .9rem; align-items: start; }
@media (max-width: 1200px) { .prjd-mriz { grid-template-columns: 1fr; } }
.prjd-karta h2 { margin: 0 0 .7rem; font-size: 1rem; display: flex;
  align-items: center; gap: .45rem; }
.prjd-pole { display: grid; grid-template-columns: 8.5rem 1fr;
  gap: .55rem .8rem; align-items: start; }
.prjd-pole label { padding-top: .35rem; font-size: .82rem;
  color: var(--seda); }
.prjd-pole input, .prjd-pole select, .prjd-pole textarea { width: 100%;
  box-sizing: border-box; }
.prjd-check { display: flex; gap: .55rem; align-items: flex-start;
  font-size: .88rem; margin-bottom: .5rem; cursor: pointer; }
.prjd-check input { margin-top: .2rem; }
.prjd-prepinac { border: 1px solid var(--okraj); border-radius: 10px;
  padding: .6rem .7rem; background: var(--plocha-jemna); }
.prjd-prepinac small { display: block; margin-top: .15rem; }
.prjd-cas-chipy { display: flex; flex-wrap: wrap; gap: .4rem;
  margin: .55rem 0 .3rem; }
.prjd-cas-chip { border: 1px solid var(--okraj); border-radius: 99px;
  padding: .15rem .6rem; font-size: .78rem; color: var(--seda); }
.prjd-cas-chip strong { color: var(--tyrkys);
  font-variant-numeric: tabular-nums; }
.prjd-podnadpis { margin: .6rem 0 .3rem; font-size: .82rem;
  font-weight: 640; }
/* checkbox seznamy (uživatelé, konektory) — Django 5 renderuje
   <div widget><div volba><label><input>text; widget = mřížka,
   volba = buňka, label = řádek checkbox+text */
.prjd-vyber > div { display: grid; grid-template-columns:
    repeat(auto-fill, minmax(17rem, 1fr)); gap: .15rem .7rem; }
.prjd-vyber > div > div { min-width: 0; }
.prjd-vyber label { display: flex; gap: .5rem;
  align-items: flex-start; justify-content: flex-start;
  text-align: left; font-size: .85rem; font-family: inherit;
  padding: .2rem .35rem; border-radius: 7px; cursor: pointer; }
.prjd-vyber label:hover { background: var(--plocha-jemna); }
.prjd-vyber input[type=checkbox] { flex: none; width: auto;
  margin: .2rem 0 0; }
.prjd-check input[type=checkbox] { width: auto; flex: none; }
.prjd-karta textarea { width: 100%; max-width: 100%;
  box-sizing: border-box; min-height: 14rem; }
.prjd-nahled { margin-top: .6rem; }
.prjd-nahled summary { cursor: pointer; color: var(--seda);
  font-size: .82rem; }
.prjd-akce { display: flex; justify-content: flex-end; gap: .6rem;
  margin: .9rem 0; }
.prjd-aktivity { margin-top: .9rem; }
.prjd-aktivita { display: grid; grid-template-columns: 10rem 1fr 9rem;
  gap: .8rem; padding: .3rem .45rem; border-radius: 8px;
  text-decoration: none; color: var(--inkoust); font-size: .85rem;
  align-items: baseline; }
.prjd-aktivita:hover { background: var(--plocha-jemna); }
.prjd-akt-datum { color: var(--seda); font-variant-numeric: tabular-nums;
  white-space: nowrap; }

.prjd-kod { background: var(--plocha-jemna); border: 1px solid
  var(--okraj); border-radius: 8px; padding: .55rem .7rem;
  font-size: .76rem; overflow-x: auto; margin: .5rem 0; }

.prjd-nap-form { display: flex; align-items: flex-end; gap: .7rem;
  flex-wrap: wrap; margin: .5rem 0 .3rem; }
.prjd-nap-form label { display: flex; flex-direction: column;
  gap: .25rem; font-size: .8rem; color: var(--seda); min-width: 15rem; }
.prjd-nap-form select { width: auto; }

/* karta Sběr dat projektu: řádky zdrojů + skládací formulář nového */
.prjd-sber { margin-top: .9rem; }
.prjd-sber-radek { display: flex; align-items: center; gap: .8rem;
  padding: .45rem .55rem; border: 1px solid var(--okraj);
  border-radius: 10px; margin: .4rem 0; }
.prjd-sber-radek.pozastaveny { opacity: .55; }
.prjd-sber-info { flex: 1; display: flex; flex-direction: column;
  gap: .1rem; min-width: 0; }
.prjd-sber-info small { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.prjd-sber-akce { display: inline-flex; gap: .35rem; }
.prjd-sber-novy summary { cursor: pointer; color: var(--seda);
  font-size: .85rem; margin: .4rem 0 .2rem; }
.prjd-sber-novy .sber-jen-caldav, .prjd-sber-novy .sber-jen-konektor,
.prjd-sber-novy .sber-jen-git, .prjd-sber-novy .sber-jen-konlog {
  display: flex; gap: .7rem; flex-wrap: wrap; align-items: flex-end; }
.prjd-sber-novy .sber-jen-caldav[hidden],
.prjd-sber-novy .sber-jen-konektor[hidden],
.prjd-sber-novy .sber-jen-git[hidden],
.prjd-sber-novy .sber-jen-konlog[hidden] { display: none; }

/* popover Dostupnost v kalendáři (akce řádku projektu) */
.prj-dost { min-width: 16rem; max-width: 19rem; padding: .45rem .55rem;
  display: flex; flex-direction: column; gap: .05rem; z-index: 40; }
.prj-dost-nadpis { padding: .3rem .25rem .1rem; font-size: .68rem;
  font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--seda); }
.prj-dost-radek small { white-space: nowrap; flex: none; }
.prj-dost-radek { display: flex; align-items: center; gap: .4rem;
  font-size: .78rem; line-height: 1.2; cursor: pointer;
  padding: .12rem .25rem; border-radius: 6px; min-width: 0; }
.prj-dost-radek:hover { background: var(--plocha-jemna); }
.prj-dost-radek input { width: auto; margin: 0; flex: none; }
.prj-dost-cas { padding-bottom: .3rem; border-bottom: 1px solid
  var(--okraj); margin-bottom: .25rem; }
.prj-dost-vse { opacity: .6; cursor: default; }
.prj-dost-jmeno { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.prj-dost-stav { margin: .25rem .25rem 0; color: var(--ok); }

/* detail projektu — přehlednější karty (30. 8. 2026) */
.prjd-hlavni-prepinac { background:
  color-mix(in srgb, var(--tyrkys) 8%, var(--plocha-jemna));
  border-color: color-mix(in srgb, var(--tyrkys) 40%, var(--okraj)); }
.prjd-hlavni-prepinac input[type=checkbox] { transform: scale(1.25);
  margin-top: .25rem; }
.prjd-bloky > div { grid-template-columns:
    repeat(auto-fill, minmax(12.5rem, 1fr)); gap: .3rem .5rem; }
.prjd-bloky label { border: 1px solid var(--okraj); border-radius: 9px;
  padding: .32rem .5rem; background: var(--plocha-jemna);
  align-items: center; }
.prjd-bloky label:has(input:checked) {
  border-color: color-mix(in srgb, var(--tyrkys) 55%, var(--okraj));
  background: color-mix(in srgb, var(--tyrkys) 9%, var(--plocha-jemna)); }
.prjd-nap-akce { display: flex; flex-wrap: wrap; gap: .4rem;
  margin: .55rem 0 .35rem; }

/* ⏱ Automatizace — harmonogram cronů s 24h osou */
.harm-tab td { vertical-align: middle; }
.harm-nazev small { display: block; max-width: 26rem; }
.harm-plan { white-space: nowrap; font-variant-numeric: tabular-nums; }
.harm-osa-hl { min-width: 22rem; }
.harm-osa { position: relative; height: 14px; border-radius: 7px;
  background: var(--plocha-jemna); border: 1px solid var(--okraj);
  overflow: hidden; }
.harm-znacka { position: absolute; top: 2px; bottom: 2px; width: 3px;
  margin-left: -1px; border-radius: 2px; background: var(--tyrkys); }
.harm-pas { position: absolute; inset: 2px;
  background: repeating-linear-gradient(90deg, var(--tyrkys) 0 3px,
    transparent 3px 7px); opacity: .55; border-radius: 5px; }
.harm-hodina { position: absolute; top: 0; bottom: 0; width: 1px;
  background: var(--okraj); }
.harm-externi .harm-znacka { background: var(--seda); }
.harm-log { max-width: 14rem; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }

/* výběr aktivit k potvrzení do docházky */
.akc-vyber-bunka { display: flex; align-items: center; }
.akc-vyber-box { width: .85rem; height: .85rem; margin: 0;
  accent-color: var(--tyrkys-tmavy); cursor: pointer; }
.akc-vyber-vse { display: inline-flex; align-items: center; gap: .35rem;
  font-size: .78rem; color: var(--seda); cursor: pointer;
  margin-right: .2rem; }
.akc-vyber-vse input { width: auto; margin: 0;
  accent-color: var(--tyrkys-tmavy); }

/* Papíry — balík podkladů pro účetní */
.akc-balik { margin-bottom: 1rem; }
.akc-balik-soubory { display: flex; flex-wrap: wrap; gap: .4rem;
  margin: .5rem 0 .6rem; }
.akc-balik-soubory .stitek { text-decoration: none; }

/* ---- Aktivity: kvartálové přehledy (4 karty Q1–Q4) ---- */
.akv-mriz { display: grid; grid-template-columns: repeat(4, 1fr);
  gap: .9rem; align-items: stretch; }  /* karty Q1–Q4 stejně vysoké */
@media (max-width: 1300px) { .akv-mriz { grid-template-columns: 1fr 1fr; } }
.akv-karta { border-radius: 10px;  /* bez rámečku (zadání 1. 9.) */
  background: var(--plocha-jemna); padding: .8rem .9rem; }
/* .akv-nej zvýraznění odstraněno (zadání 1. 9. 2026 —
   karty bez funkce se nezvýrazňují) */

.akv-hlava { display: flex; align-items: baseline; gap: .6rem; }
.akv-hlava strong { font-size: 1.05rem; }
.akv-hodiny { margin: .35rem 0 .15rem; font-size: 1.45rem;
  font-weight: 700; font-variant-numeric: tabular-nums; }
.akv-pas { height: 5px; border-radius: 99px; background: var(--plocha);
  overflow: hidden; margin: 0 0 .3rem; }
.akv-pas i { display: block; height: 100%; background: var(--tyrkys); }
.akv-popisek { margin: .7rem 0 .2rem; font-size: .68rem;
  text-transform: uppercase; letter-spacing: .08em; color: var(--seda); }
.akv-radek { display: flex; align-items: center; gap: .45rem;
  font-size: var(--pismo-seznam); padding: .12rem 0; }
.akv-tecka { flex: none; width: .55rem; height: .55rem;
  border-radius: 99px; }
.akv-ik { flex: none; display: inline-flex; color: var(--seda); }
.akv-ik svg { width: .8rem; height: .8rem; }
.akv-nazev { flex: 1; min-width: 0; overflow: hidden;
  white-space: nowrap; text-overflow: ellipsis; }
.akv-hodnota { font-variant-numeric: tabular-nums; color: var(--seda); }

/* ---- Aktivity: uzávěrka měsíce ---- */
.akz-sekce { margin-bottom: 1.1rem; }

/* ---- Plánovač: rozbalovací Docházka pod osou ---- */
.akd-sbal { margin-top: .9rem; border: 1px solid var(--okraj);
  border-radius: 10px; background: var(--plocha-jemna); }
.akd-hlava { list-style: none; cursor: pointer; display: flex;
  align-items: center; gap: .6rem; padding: .55rem .8rem; }
.akd-hlava::-webkit-details-marker { display: none; }
.akd-sipka { flex: none; display: inline-flex; color: var(--seda); }
.akd-sipka svg { width: .85rem; height: .85rem; }
.akd-sbal[open] .akd-sipka { color: var(--tyrkys-tmavy); }
.akd-akce { margin-left: auto; display: inline-flex; gap: .4rem; }
.akd-telo { padding: .2rem .8rem .8rem; }

/* zápisový řádek Docházky v Plánovači */
.akd-zapis { display: flex; gap: .5rem; align-items: center;
  flex-wrap: wrap; margin-top: .7rem; padding-top: .7rem;
  border-top: 1px solid var(--okraj); }
.akd-zapis select, .akd-zapis input { width: auto; }
.akd-zapis input[name=poznamka] { flex: 1; min-width: 10rem; }

/* přesčas ⚡ a stav záznamu ve výpisu Aktivit (31. 8.) */
.akc-den-mimo { grid-column: 4 / 5; justify-self: start;
  display: inline-flex; align-items: center; gap: .25rem; white-space: nowrap;
  font-family: var(--mono); font-size: .74rem; font-weight: 600;
  letter-spacing: 0; text-transform: none; color: var(--pozor); }
.akc-den-mimo svg { width: .74rem; height: .74rem; }
.akc-den-hlava:has(.akc-den-mimo) .akc-doch { grid-column: 5 / 9; }
.akc-mimo-znak { display: inline-flex; margin-left: .3rem;
  vertical-align: -.1em; color: #C7A13F; opacity: .85; }
.akc-mimo-znak svg { width: .7rem; height: .7rem; }
/* překryv s jinou aktivitou téhož člověka — započteno jednou (2. 10. 2026) */
.akc-prekryv-znak { display: inline-flex; margin-left: .3rem;
  vertical-align: -.1em; color: var(--tyrkys-tmavy); }
.akc-prekryv-znak svg { width: .7rem; height: .7rem; }
.akc-stav { display: inline-flex; gap: .3rem; align-items: center;
  justify-self: start; white-space: nowrap; }
.akc-stav .stitek { font-size: .66rem; padding: .1rem .45rem; }
.akc-stav-zruseno { opacity: .55; text-decoration: line-through; }
/* cyklus výkazu (1. 9.): Plánováno tlumené; Vykázáno = jantarový zámek;
   Vyřízeno = plný (účetně uzavřeno) */
.akc-stav-planovano { color: var(--seda); }
.akc-stav-vykazano { color: #C7A13F; border-color: #C7A13F; }
.akc-stav-vyrizeno { background: var(--tyrkys-tmavy); color: var(--akcent-text);
  border-color: var(--tyrkys-tmavy); }
.akc-pomer-dpp { color: #9C6ADE; border-color: #9C6ADE; }
.akc-stav-zadost { color: #C7A13F; border-color: #C7A13F; }
/* potvrzení splnění (fáze 2): odznak stavu požadavku — barva z palety stavů, klik = stránka potvrzení */
.akc-potv { display: inline-flex; align-items: center; cursor: pointer; padding-inline: .25rem; }
.akc-potv svg { width: .8rem; height: .8rem; }
/* přehled požadavků na potvrzení (detail zakázky, fáze 2) — jeden řádek na požadavek */
.potv-prehled { display: flex; flex-direction: column; gap: .2rem; margin: .1rem 0 .6rem;
  padding: .45rem .6rem; border: 1px solid var(--okraj-jemny); background: var(--plocha-jemna); min-width: 0; }
.potv-prehled-nadpis { display: inline-flex; align-items: center; gap: .35rem; font-size: .74rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .03em; color: var(--tyrkys-tmavy); }
.potv-prehled-nadpis svg, .potv-prehled-nazev svg { width: .85rem; height: .85rem; flex: none; }
.potv-prehled-radek { display: grid; grid-template-columns: 5.6rem minmax(0, 1fr) minmax(0, 9rem) auto;
  align-items: center; gap: .6rem; padding: .15rem 0; color: inherit; text-decoration: none; font-size: .84rem; }
.potv-prehled-radek:hover .potv-prehled-nazev { text-decoration: underline; }
.potv-prehled-datum { font-variant-numeric: tabular-nums; color: var(--seda); }
.potv-prehled-nazev { display: inline-flex; align-items: center; gap: .35rem; min-width: 0; overflow: hidden;
  white-space: nowrap; text-overflow: ellipsis; }
.potv-prehled-kdo { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.potv-prehled > .btn { align-self: flex-start; margin-top: .25rem; }
@media (max-width: 640px) {
  .potv-prehled-radek { grid-template-columns: minmax(0, 1fr) auto; }
  .potv-prehled-datum, .potv-prehled-kdo { display: none; }
}
/* potvrzení splnění u úkolu (fáze 2): sekce v detailu úkolu (/ukoly/ i modal zakázky) + odznak v řádku */
.uk-potvrzeni { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem .7rem;
  margin: .6rem 0 .2rem; padding: .5rem .65rem; border: 1px solid var(--okraj-jemny);
  background: var(--plocha-jemna); min-width: 0; white-space: normal; }
.uk-potv-nadpis { display: inline-flex; align-items: center; gap: .35rem; font-size: .78rem;
  font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--tyrkys-tmavy); }
.uk-potv-nadpis svg { width: .9rem; height: .9rem; }
.uk-potv-stav { display: inline-flex; align-items: center; gap: .5rem; flex-wrap: wrap; min-width: 0; }
.uk-potv-form { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem .7rem; flex: 1 1 22rem; min-width: 0; }
.uk-potv-druhy { display: inline-flex; flex-wrap: wrap; gap: .2rem .7rem; font-size: .84rem; }
.uk-potv-druhy label { display: inline-flex; align-items: center; gap: .25rem; white-space: nowrap; }
.uk-potv-pokyn-pole { flex: 1 1 12rem; min-width: 0; max-width: 100%; }
.uk-potv-pokyn { flex-basis: 100%; margin: 0; }
/* audit 3. 10. 2026: důvod, proč teď vyžádat nejde (pověřený sekci vidí vždy) */
.uk-potv-duvod, .potv-prehled-prazdno { flex-basis: 100%; margin: 0; font-size: .82rem; line-height: 1.45; color: var(--seda); white-space: normal; }
.uk-potv-duvod svg { width: .85rem; height: .85rem; vertical-align: -.12em; }
.uk-potv-odznak { margin-left: .4rem; font-size: .7rem; text-decoration: none; vertical-align: 1px; white-space: nowrap; }
.uk-potv-ikona { display: inline-flex; align-items: center; padding-inline: .25rem; flex: none; }
.uk-potv-ikona svg { width: .8rem; height: .8rem; }
.akc-menu-btn { justify-self: end; opacity: .55; }
.akc-radek:hover .akc-menu-btn { opacity: 1; }
.akc-menu { z-index: 95; min-width: 14rem; right: auto;
  width: max-content; max-width: 20rem; }
.akc-menu a { display: block; padding: .35rem .8rem;
  text-decoration: none; color: inherit; font-size: .84rem; }
.akc-menu a:hover { background: var(--plocha); }
.akz-zadost { border: 1px solid var(--okraj); border-radius: 8px;
  padding: .6rem .8rem; margin-bottom: .7rem; }
.akz-zadost p { margin: 0 0 .35rem; }
.akz-zadost input { width: 100%; margin: .3rem 0 .45rem; }
.akz-akce { display: flex; gap: .5rem; }


/* ---- Pošta a šablony (nastavení, standard .bp-obal) ---- */
.pt-tab td { vertical-align: top; }
.pt-id { border: 1px solid var(--okraj); background: var(--pozadi-2, transparent);
  border-radius: var(--r-prvek); padding: .12rem .4rem; cursor: copy;
  font-size: var(--pismo-drobne); }
.pt-id code { font-family: var(--mono); white-space: nowrap; }
.pt-id:hover { border-color: var(--akcent); }
.pt-id-hlava { margin-left: auto; margin-right: .6rem; flex: none; }
.pt-modal { width: min(54rem, 100%); max-width: 54rem; }  /* e-maily 720 px + odsazení */
.pt-telo { display: flex; flex-direction: column; gap: .55rem;
  padding-bottom: .9rem; }
.pt-telo .pt-predmet { margin: 0; }
.pt-nahled { height: 420px; width: 100%; max-width: 100%; }
.pt-text { background: var(--plocha-jemna); border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); padding: .6rem .8rem; white-space: pre-wrap;
  font-size: var(--pismo-drobne); max-height: 14rem; overflow-y: auto; }
.pt-detaily summary { cursor: pointer; }
.pt-form { margin-top: .5rem; }
.pt-form textarea { max-width: 100%; font-family: var(--mono); font-size: .8rem; }
.pt-form-akce { display: flex; gap: .5rem; }
/* velký modal náhledu tiskového výstupu (PDF v iframe) */
.pt-pdf-modal { width: min(72rem, 96vw); max-width: 72rem;
  height: min(90vh, 66rem); max-height: 90vh; }
.pt-pdf-telo { flex: 1; min-height: 0; display: flex; padding-bottom: .6rem; }
.pt-pdf-ram { flex: 1; width: 100%; border: 1px solid var(--okraj);
  background: #fff; }
/* ---- přepínač obchodního subjektu (multi-firma, u profilovky) ---- */
.subjekt-chip { display: inline-flex; align-items: center; gap: .35rem;
  max-width: 16rem; }
.subjekt-chip-text { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.subjekt-drop form { margin: 0; }
.subjekt-drop button { display: flex; align-items: center; gap: .45rem;
  width: 100%; text-align: left; background: none; border: 0;
  padding: .45rem .8rem; cursor: pointer; color: inherit;
  font-size: var(--pismo-seznam); }
.subjekt-drop button:hover { background: var(--pozadi-2, rgba(127,127,127,.12)); }
.subjekt-mezera { display: inline-block; width: 1em; }
/* ---- Aktivity: levý panel — nav a přehledy nescrolují, scroluje jen
   formulář filtrů; patka Profily drží u dna ---- */
.akc-obal > .bp-bocni { overflow: hidden; }
.akc-obal #akcFiltr { flex: 1 1 auto; min-height: 0; overflow-y: auto;
  scrollbar-width: none; }
/* hromadný výběr nad zaškrtávátky výpisu + vykázání dne z hlavičky */
.akc-vyber-radka { padding: .15rem .5rem .3rem .45rem; }  /* osa boxů */
.akc-vyber-radka .akc-vyber-vse { display: inline-flex; gap: .4rem;
  align-items: center; font-size: var(--pismo-drobne); color: var(--seda);
  cursor: pointer; }
.akc-vyber-radka .akc-vyber-vse input { width: auto; }
.akc-den-vykaz { grid-column: -2; justify-self: end; color: var(--seda); }
.akc-den-vykaz:hover { color: var(--inkoust); }
.akc-den-vykaz svg { width: .85rem; height: .85rem; }
/* vybrat vše + souhrn druhů v jednom řádku nad seznamem */
.akc-vyber-radka { display: flex; align-items: center; gap: .9rem;
  flex-wrap: wrap; }
.akc-vyber-radka .akc-druhy-inline { margin: 0; }
/* ---- Výkazy (přehled Aktivit): volba vypořádání přesčasů ---- */
.akc-vykaz-pref { margin: .4rem 0 1rem; }
.akc-pref-form { display: flex; flex-wrap: wrap; gap: .5rem 1.2rem;
  align-items: center; }
.akc-pref-volba { display: inline-flex; gap: .4rem; align-items: center;
  margin: 0; font-size: var(--pismo-seznam); cursor: pointer; }
.akc-pref-volba input { width: auto; }
.akc-pref-pozn { display: inline-flex; gap: .5rem; align-items: center;
  margin: 0; font-size: var(--pismo-drobne); color: var(--seda); flex: 1; }
.akc-pref-pozn input { max-width: 22rem; }

/* kontext aktivity (zakázka + projekt) — zarovnaný sloupec vedle názvu */
.akc-kontext { display: flex; gap: .55rem; min-width: 0; overflow: hidden; }
.akc-kontext-chip { display: inline-flex; align-items: center; gap: .3rem;
  min-width: 0; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.akc-kontext-chip svg { width: .74rem; height: .74rem; flex: none;
  color: var(--tyrkys); }
.akc-vykaz-detail { margin: .3rem 0 .7rem; }
.akc-vykaz-detail summary { cursor: pointer; display: inline-flex;
  gap: .4rem; align-items: center; }
.akc-vykaz-detail summary svg { width: .8rem; height: .8rem; }
.akc-den-modal { width: min(64rem, 96vw); max-width: 64rem; }
.akc-den-telo { display: flex; flex-direction: column; gap: .7rem;
  padding-bottom: .6rem; }
.akc-den-telo .tabulka td { vertical-align: top; }
/* blokový souhrn dne (vzor akc-souhrn) + zarovnaná tabulka aktivit */
.akc-den-bloky { margin: 0; }
.akc-den-tab { table-layout: fixed; }
.akc-den-tab th:nth-child(1) { width: 13.5rem; }  /* datum + čas od–do */
.akc-den-tab th:nth-child(2) { width: 9rem; }
.akc-den-tab th:nth-child(4), .akc-den-th-trvani { width: 6rem;
  text-align: right; }
.akc-den-cas { font-family: var(--mono); font-size: .78rem;
  font-variant-numeric: tabular-nums; white-space: nowrap; }
.akc-den-trvani { font-family: var(--mono); font-size: .78rem;
  text-align: right; font-variant-numeric: tabular-nums;
  white-space: nowrap; }
.akc-den-tab td:nth-child(3) { overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; }
.akc-den-tab tbody { max-height: none; }

/* jednotná osa všech selektorů výběru (vybrat vše / den / aktivita);
   řádkové boxy jsou MENŠÍ než denní — bunka pevné šířky je centruje,
   takže střed drží tutéž svislou linii */
.akc-vyber-bunka { display: flex; align-items: center;
  justify-content: center; width: 14px; flex: none; }
.akc-den-box, #akcVyberVse { width: 14px; height: 14px; margin: 0;
  flex: none; }
.akc-vyber-box { width: 11px; height: 11px; margin: 0; flex: none; }
.akd-pozn { display: flex; gap: .4rem; align-items: center; margin: .4rem 0; }
.akd-pozn svg { width: .85rem; height: .85rem; flex: none; color: var(--tyrkys); }
.akd-zapis-popis { display: inline-flex; gap: .4rem; align-items: center;
  font-size: var(--pismo-seznam); margin-right: .4rem; }
.akd-zapis-popis svg { width: .85rem; height: .85rem; }

/* ---- Aktivity: levý panel ve stylu a rozměru sidebaru KALENDÁŘE
   (1. 9. 2026) — šířka 205 px obsahu, sekční nadpisy jako kal-bocni h3
   (tučné, bez verzálek), řádky drží hustotu .82rem ---- */
.akc-obal { --panel-vychozi: 224px; }
.akc-obal > .bp-bocni { padding: .6rem .6rem; }
.akc-obal .bp-popisek { font-size: .92rem; font-weight: 650;
  text-transform: none; letter-spacing: 0; color: var(--inkoust);
  padding: .6rem .1rem .25rem; }
.akc-obal .bp-popisek .bp-vybrano { font-size: .72rem; font-weight: 400;
  color: var(--seda); }
.akc-obal .bp-radek { padding: .16rem .15rem; }
.akc-obal .bp-pocet { font-size: .7rem; }
.akc-obal .akc-nav { padding: 0; }
@media (max-width: 1100px) { .akc-obal { grid-template-columns: 1fr; } }
/* detailní parita s kalendářem (1. 9. večer): řádky = grid 15/16/1fr/auto
   jako .kal-filtr-radek, oko hromadného přepnutí VLEVO před nadpisem */
.akc-obal .bp-radek { display: grid;
  grid-template-columns: 15px 16px minmax(0, 1fr) auto; gap: .4rem; }
.akc-obal .bp-radek input[type="checkbox"] { width: auto; height: auto;
  justify-self: start; }
.akc-obal .bp-ikona { width: 16px; }
.akc-obal .bp-popisek { gap: .4rem; }
.akc-obal .bp-popisek .bp-vse { order: -1; margin-left: 0; }
/* zhuštění seznamů filtru na krok kalendáře (label margin .4rem dělal
   6,8px mezery mezi řádky — kalDruhyFiltr má řádky na doraz) */
.akc-obal .bp-radek { margin: 0; }
.akc-obal .bp-soucet { white-space: nowrap; }
/* ---- nav ‹ Dnes › + přehledy identické s .kal-bocni-nav (1. 9.) ---- */
.akc-obal .akc-nav { gap: .3rem; align-items: stretch;
  margin: .1rem 0 .4rem; padding: 0; }
.akc-obal .akc-sipka { min-width: 2.1rem; height: 2.1rem; padding: 0 .5rem;
  border-radius: 8px; background: var(--karta); font-size: .9rem;
  line-height: 1; display: inline-flex; align-items: center;
  justify-content: center; }
.akc-obal .akc-sipka:hover { background: var(--plocha);
  border-color: var(--tyrkys); }
.akc-obal .akc-dnes { font-size: .84rem; font-weight: 600; }
.akc-obal .akc-pohledy { margin: 0; position: relative; }
.akc-obal .akc-pohledy::after { content: ""; position: absolute;
  left: 0; right: 0; bottom: -.6rem;
  border-bottom: 1px solid var(--okraj); }
.akc-obal #akcFiltr { padding-top: .6rem; }
/* Profily ▾ v zúženém panelu (224 px): dropdown nesmí přetéct šířku
   panelu — overflow karty by ho ořízl */
.akc-obal .bp-pata .profil-dropdown { min-width: 0; width: 100%;
  left: 0; right: 0; box-sizing: border-box; }

/* ---- režim Výběr v Aktivitách (vzor kal-bulk-bar, 1. 9. večer) ---- */
.akc-radek.vybrana { outline: 2px solid var(--tyrkys);
  outline-offset: -2px; box-shadow: 0 0 0 4px rgba(45, 212, 191, .18); }
.akc-vyber-rezim .akc-radek[data-vykaz] { cursor: cell; }
.akc-vyber-rezim .akc-radek:not([data-vykaz]) { opacity: .45; }
.akc-vyber-rezim .akc-den-hlava { cursor: cell; }
#akcVyber.aktivni { background: var(--navy); color: #fff; }
.akc-bulk-bar { position: fixed; bottom: 22px; left: 50%;
  transform: translateX(-50%); z-index: 90; isolation: isolate;
  display: flex; align-items: center; gap: 1.1rem;
  background: linear-gradient(150deg, #1A2138, #12172B); color: #fff;
  padding: .5rem .55rem .5rem 1.2rem; border-radius: 999px;
  border: 1px solid var(--chrom-linka); font-size: .88rem;
  box-shadow: 0 6px 16px rgba(18, 23, 43, .35),
    0 22px 44px -18px rgba(18, 23, 43, .6); }
.akc-bulk-info { display: inline-flex; align-items: center; gap: .55rem;
  white-space: nowrap; }
.akc-bulk-akce { display: inline-flex; gap: .45rem; }
.akc-bulk-btn { display: inline-flex; align-items: center; gap: .45rem;
  min-height: 2.35rem; padding: 0 1.05rem; border-radius: 999px;
  border: 1px solid var(--chrom-okraj);
  background: var(--chrom-pole); color: var(--chrom-text-jasny); font: inherit;
  font-weight: 600; cursor: pointer; position: relative; z-index: 1;
  white-space: nowrap;
  transition: background-color .15s ease, color .15s ease; }
.akc-bulk-btn:hover { background: var(--chrom-hover); color: #fff; }
.akc-bulk-btn svg { width: 1rem; height: 1rem; }
.akc-bulk-hlavni { background: var(--tyrkys); border-color: var(--tyrkys);
  color: #12172B; }
.akc-bulk-hlavni:hover { background: #7BDCE0; color: #12172B; }
/* chooser PL (víc otevřených listů subjektu) */
.pl-volba-uvod { margin: 0 0 1rem; color: var(--sedy-text, #64748b); }
.pl-volba-subjekt { margin-bottom: 1.1rem; }
.pl-volba-subjekt h3 { margin: 0 0 .45rem; font-size: 1rem; }
.pl-volba-radek { display: flex; align-items: center; gap: .5rem;
  padding: .35rem .2rem; cursor: pointer; }
/* sbalené hlavní menu → panel Aktivit +15 % šířky (224 → 258 px) */
.menu-sbaleno .akc-obal { --panel-vychozi: 258px; }

/* fondy zaměstnanců tabulkou (jména vlevo, fondy horizontálně,
   plná šířka — zadání 1. 9. večer) */
.akc-fondy-tab { width: 100%; margin-bottom: .9rem; }
.akc-fondy-tab .akc-fond-cislo { font-family: var(--mono);
  font-size: .82rem; font-variant-numeric: tabular-nums;
  white-space: nowrap; }
.akc-fondy-tab td.akc-prescas strong { color: var(--pozor); }
.akc-fondy-tab td.akc-schodek strong { color: var(--chyba); }
.akc-fondy-tab tfoot td { border-top: 2px solid var(--okraj-silny);
  background: var(--plocha-jemna); }

/* ── stránka modulu ve vývoji (ve_vyvoji.html, 1. 9. 2026) ── */
.vv-karta { max-width: 34rem; margin: 3.5rem auto 0; text-align: center;
  padding: 2.2rem 2rem; }
.vv-znak { margin: 0 0 .6rem; color: var(--tyrkys); }
.vv-znak svg { width: 2.4rem; height: 2.4rem; }
.vv-nadpis { border: 0 !important; padding: 0 !important;
  justify-content: center !important; font-size: 1.05rem !important; }
.vv-popis { color: var(--seda); line-height: 1.5; }
.rozprac-pruh { display: flex; align-items: center; gap: .45rem;
  margin: 0 0 .55rem; padding: .3rem .7rem; font-size: .78rem;
  border-radius: 8px; line-height: 1.25; flex: none;   /* nepruží ve flex sloupci */
  color: var(--pozor); border: 1px solid color-mix(in srgb, var(--pozor) 45%, transparent);
  background: color-mix(in srgb, var(--pozor) 8%, transparent); }
.rozprac-pruh svg { width: .8rem; height: .8rem; flex: none; }
/* v pevném rozvržení .bp-obal je pruh součást nescrolující hlavičky —
   nesmí konkurovat výšce sloupců (3. 9.) */
main.obsah:has(.bp-obal) > .rozprac-pruh { flex: none; }
/* 12. 9. 2026: hlavička sekce a flash zprávy se ve flex sloupci NESMÍ smrskávat — jinak dlouhý podtitul
   (Poptávky) přetekl přes spodní linku hlavičky (měřeno −6 px na 1920, −1 px na 2560; ostatní stránky 9 px) */
main.obsah:has(.bp-obal) > .hlavicka-sekce, main.obsah:has(.bp-obal) > .zprava { flex: none; }

/* ── rychlé akce na dashboardu (1. 9. 2026) ── */
.db-akce { display: flex; align-items: center; gap: .45rem;
  flex-wrap: wrap; margin: var(--mezera-l) 0; }
.db-akce-popisek { font-size: .72rem; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase; color: var(--seda);
  margin-right: .3rem; }
.db-akce-btn { display: inline-flex; align-items: center; gap: .4rem;
  padding: .34rem .8rem; font-size: .82rem; font-weight: 560;
  color: var(--inkoust); text-decoration: none;
  border: 1px solid var(--okraj); background: var(--plocha);
  transition: border-color .15s, background .15s; }
.db-akce-btn:hover { border-color: var(--tyrkys);
  background: var(--plocha-jemna); }
.db-akce-btn svg { width: .85rem; height: .85rem; color: var(--tyrkys-tmavy); }
.db-akce-sep { width: 1px; align-self: stretch; min-height: 1.4rem;
  background: var(--okraj); margin: 0 .3rem; }
.db-akce-znacka { background: var(--tyrkys); color: var(--navy); border-radius: 999px;
  font-size: .7rem; font-weight: 700; padding: 0 .35rem; min-width: 1.1rem;
  text-align: center; line-height: 1.25rem; }
.db-vykaz-tab td input[type="number"] { width: 4.5rem; }
.db-vykaz-tab td { vertical-align: middle; }

/* Rychlé akce (2. 9. 2026; 3. 9. přepracováno na malá tlačítka „+ Událost")
   — kompaktní chipy ve skupinách, řádkové zalamování */
.db-rychle { margin: 0 0 .9rem; display: flex; align-items: center; gap: 1rem;
  padding: .85rem 1rem .85rem 1.1rem; border-radius: 12px;   /* 12. 9. 2026: vyšší akční řádek (kompenzováno nižší Agendou dne) */
  background: color-mix(in srgb, var(--tyrkys) 7%, var(--karta)); border: 1px dashed color-mix(in srgb, var(--tyrkys) 45%, var(--okraj)); }
/* 11. 9. 2026 večer: rychlé akce jsou AKČNÍ řádek, ne další dlaždice metrik — vlastní popisek sekce,
   pilulkovitá tlačítka s tyrkysovým „+“ a tečkovaný rám, aby se odlišily od karet přehledu pod nimi */
.db-rychle::before { content: "Rychlé akce"; flex: none; font-size: .68rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--tyrkys-tmavy); }
.db-rychle-nadpis { font-size: .72rem; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: var(--seda); margin: .8rem 0 .4rem; }
.db-rychle-nadpis:first-child { margin-top: 0; }
.db-rychle-radek { display: flex; flex-wrap: wrap; gap: .55rem; flex: 1 1 auto; min-width: 0; }
.db-rychle-btn { flex: 1 1 0; min-width: 8.5rem;
  display: inline-flex; align-items: center; justify-content: center;
  gap: .4rem; white-space: nowrap;
  padding: .62rem 1rem; border-radius: 999px; font-size: .9rem; font-weight: 580;
  background: var(--karta); border: 1px solid var(--okraj-silny, var(--okraj));
  box-shadow: none; color: var(--inkoust); text-decoration: none;
  cursor: pointer; font-family: inherit; line-height: 1.2;
  transition: border-color .12s, background-color .12s, transform .12s; }
.db-rychle-btn:hover { border-color: var(--tyrkys); background: var(--plocha-jemna); transform: translateY(-1px); }
.db-rychle-btn svg { width: 1rem; height: 1rem; color: var(--tyrkys-tmavy); }
@media (max-width: 1100px) { .db-rychle { flex-direction: column; align-items: stretch; } }
.db-rychle-znacka { background: var(--tyrkys); color: var(--navy); border-radius: 999px;
  font-size: .68rem; font-weight: 700; padding: 0 .35rem; min-width: 1.05rem;
  text-align: center; line-height: 1.15rem; margin-left: .1rem; }

/* Portálová oznámení / novinky (3. 9. 2026) */
.novinka-druh { display: inline-block; font-size: .66rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .03em; padding: .1rem .45rem;
  border-radius: 999px; vertical-align: middle; margin-right: .4rem;
  background: var(--plocha-jemna); color: var(--seda); }
.nd-novinka { background: var(--akcent-jemny); color: var(--tyrkys-tmavy); }
.nd-funkce { background: rgba(91, 108, 240, .16); color: #5b6cf0; }
.nd-aktualizace { background: var(--ok-pozadi); color: var(--ok-text); }
.nd-dulezite { background: var(--chyba-pozadi); color: var(--chyba); }
.nd-servis { background: rgba(212, 165, 62, .18); color: #B4863A; }
.novinka-modal { max-width: 640px; }
.novinka-telo { line-height: 1.5; }
.novinka-telo h1, .novinka-telo h2, .novinka-telo h3 { margin: .6rem 0 .3rem; font-size: 1.05rem; }
.novinka-telo p { margin: .5rem 0; }
.novinka-telo ul, .novinka-telo ol { margin: .4rem 0 .4rem 1.2rem; }
.novinka-paticka { display: flex; align-items: center;
  justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.novinka-odber { font-size: .8rem; color: var(--seda); display: flex;
  align-items: center; gap: .4rem; margin: 0; flex: 1 1 auto; }
.novinka-odber input { flex: 0 0 auto; }
.novinka-paticka .btn { flex: 0 0 auto; }

/* ── pruh náhledu úrovně přístupu (core/nahled.py, 1. 9. 2026) ── */
.nahled-pruh { position: sticky; top: 0; z-index: 60; display: flex;
  align-items: center; gap: .6rem; flex-wrap: wrap;
  padding: .38rem .9rem; font-size: .82rem;
  color: #14202E; background: #C7A13F; }
.nahled-pruh strong { font-weight: 750; }
.nahled-znak svg { width: .9rem; height: .9rem; display: block; }
.nahled-prepinac { margin-left: auto; display: flex; gap: .3rem;
  flex-wrap: wrap; }
.nahled-btn { padding: .12rem .6rem; font-size: .78rem; font-weight: 600;
  color: #14202E; text-decoration: none;
  border: 1px solid rgba(20, 32, 46, .35); }
.nahled-btn:hover { background: rgba(255, 255, 255, .35); }
.nahled-btn.aktivni { background: #14202E; color: #F3E6C4;
  border-color: #14202E; }
.nahled-btn.nahled-konec { background: rgba(255, 255, 255, .55); }

/* ── segment Seznamy: blokové sloupce (počet | datum | akce) ── */
.zk-sez-stitky { display: inline-flex; gap: .3rem; margin-left: .55rem;
  vertical-align: .1em; }
.zk-sez-pocet { width: 8rem; }
.zk-sez-pocet .stitek { min-width: 2.6rem; justify-content: center;
  display: inline-flex; }
.zk-sez-datum { width: 9rem; white-space: nowrap; }
.zk-sez-akce { width: 14.5rem; }
.zk-sez-akce { text-align: right; }
.zk-sez-akce form { display: inline; }
.zk-sez-akce .btn + form { margin-left: .4rem; }

/* rychlé akce hubu Agendy (1. 9. večer) */
.hub-akce { margin-top: 1rem; }
.hub-akce-rada { display: flex; gap: .6rem; flex-wrap: wrap; }
.hub-akce-rada .btn { display: inline-flex; align-items: center;
  gap: .4rem; }

/* detail projektu: přehled úkolů a bloků vývoje (1. 9. večer) */
.prjd-vyvoj-blok { margin: .35rem 0; }
.prjd-vyvoj-blok > summary { cursor: pointer; display: flex;
  gap: .7rem; align-items: baseline; }
.prjd-vyvoj-commity { margin: .35rem 0 .6rem 1.4rem; padding: 0;
  font-size: .78rem; color: var(--seda); }
.prjd-vyvoj-commity li { margin: .15rem 0; }

/* Můj profil (přestavba 1. 9. večer): fotografie navrchu přes celou
   šířku, zvoneček přes celou šířku záložky Upozornění */
.profil-foto-vrch { grid-column: 1 / -1; }
.profil-foto-vrch .avatar-karta { display: flex; gap: 1.2rem;
  align-items: center; }
.profil-foto-vrch .avatar-nahled { width: 5.4rem; height: 5.4rem; }
.profil-zvonek { grid-column: 1 / -1; }
.profil-upozorneni .karta .check-radek { margin: .3rem 0; }

/* Profil → záložka Kalendář (2. 9. 2026) */
.profil-kalendar .karta .check-radek { margin: .4rem 0; display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .2rem .9rem; }
.pk-druh-ikona { display: inline-block; width: 1.3rem; text-align: center; }
/* pracovní fond — read-only chipy firemní politiky */
.pk-fond-cipy { display: flex; flex-wrap: wrap; gap: .35rem; margin: .3rem 0 .2rem; }
.pk-fond-cip { display: inline-flex; align-items: center; gap: .25rem;
  padding: .2rem .55rem; border-radius: 999px; background: var(--plocha-jemna);
  font-size: .82rem; }
.pk-fond-upravit { margin-top: .7rem; align-self: flex-start; }
/* editor politiky fondu (agenda/fond_politika) */
.fond-druhy-mrizka { display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
  gap: .35rem .9rem; margin: .5rem 0 1rem; }
.fond-druhy-mrizka label { display: flex; align-items: center; gap: .4rem; }
/* iCal odkazy (styl převzatý z kalendar.css, tam se sem nenačítá) */
.profil-kalendar .kal-tokeny { display: flex; flex-wrap: wrap; gap: .35rem;
  margin-top: .5rem; }
.profil-kalendar .kal-token { display: inline-flex; align-items: center;
  gap: .3rem; padding: .2rem .55rem; border-radius: 999px;
  background: var(--plocha-jemna); font-size: .82rem; }
.profil-kalendar .kal-token-revoke { border: 0; background: none;
  color: var(--chyba); cursor: pointer; font-size: 1rem; line-height: 1; }

/* skupiny typů notifikací (karta Notifikace účtu + Můj profil →
   Notifikace) — přesun z uzivatele.css, profil ho nenačítá.
   28. 9. 2026: PŘESTAVBA na rozbalovací skupiny se zarovnanou tabulkou
   (sdílený include templates/_notifikace_typy.html). Šířky sloupců
   přepínač | název | popis jsou SDÍLENÉ (pevné tracky), takže řádky
   všech skupin lícují pod sebou — dřívější auto-fit mřížka sloupců
   různé výšky rozjížděla druhou řadu jinam. */
.nt-skupiny { display: flex; flex-direction: column; gap: .3rem;
  margin: var(--mezera-s) 0 var(--mezera-m); }
.nt-skupina { border: 1px solid var(--okraj-jemny); border-radius: var(--r-prvek);
  background: var(--plocha-jemna); overflow: hidden; }
.nt-skupina > summary { display: flex; align-items: center; gap: .5rem;
  padding: .35rem .7rem; cursor: pointer; list-style: none;
  font-size: .68rem; text-transform: uppercase; letter-spacing: .08em;
  font-weight: 700; color: var(--seda); }
.nt-skupina > summary::-webkit-details-marker { display: none; }
.nt-skupina > summary::before { content: "›"; font-size: 1rem; line-height: 1;
  color: var(--seda); transition: transform .15s; }
.nt-skupina[open] > summary::before { transform: rotate(90deg); }
.nt-skupina > summary:hover { color: var(--inkoust); }
.nt-pocet { margin-left: auto; font-variant-numeric: tabular-nums;
  letter-spacing: 0; font-size: .74rem; }
.nt-tabulka { background: var(--karta); border-top: 1px solid var(--okraj-jemny);
  padding: .2rem 0; }
/* jeden typ = řádek tabulky; stejné tracky ve VŠECH skupinách */
.nt-radek { display: grid; align-items: baseline; cursor: pointer;
  grid-template-columns: 1.1rem clamp(8rem, 24%, 15rem) 1fr;
  gap: .15rem .7rem; padding: .22rem .7rem; }
.nt-radek:hover { background: var(--plocha-jemna); }
.nt-radek input { margin: 0; width: auto; flex: none;
  transform: translateY(.1rem); }
.nt-nazev { font-weight: 600; }
.nt-popis { line-height: 1.35; min-width: 0; }
.nt-zakazano { cursor: default; }
.nt-zakazano .nt-nazev { color: var(--seda); }
@media (max-width: 760px) {
  .nt-radek { grid-template-columns: 1.1rem 1fr; }
  .nt-popis { grid-column: 2; }
}

/* prohlížecí detail projektu: popisky lícují s hodnotami (mřížka
   prjd-pole je stavěná na inputy) */
.prjd-pole-ro { align-items: baseline; row-gap: .55rem; }
.prjd-pole-ro label { padding: 0; }
.prjd-pole-ro span { padding: 0; }

/* Pracovní doba na profilu — týdenní vizuál s časovým pruhem (2. 9.) */
.pd-tyden { list-style: none; margin: var(--mezera-s) 0 0; padding: 0; }
/* rozvrh vyplní dostupnou výšku karty (dorovnané k Sociálním sítím) —
   dny rovnoměrně rozprostřené (2. 9. večer) */
.profil-doba-karta .pd-tyden { flex: 1 1 auto; display: flex;
  flex-direction: column; justify-content: space-between;
  margin: var(--mezera-m) 0; }
.profil-doba-karta .pd-den { flex: 1 1 0; }
.pd-den { display: grid; grid-template-columns: 1.7rem 1fr auto;
  align-items: center; gap: .7rem; padding: .2rem .35rem; border-radius: 7px; }
.pd-dnes { background: var(--akcent-pozadi); }
.pd-zkr { font-size: .78rem; color: var(--inkoust); font-weight: 560; }
.pd-dnes .pd-zkr { color: var(--tyrkys-tmavy); }
.pd-track { position: relative; height: .62rem; border-radius: 99px;
  background: var(--okraj-jemny); box-shadow: inset 0 0 0 1px var(--okraj); }
.pd-blok { position: absolute; top: 0; height: 100%; border-radius: 99px;
  background: var(--tyrkys-tmavy); }
.pd-dnes .pd-blok { background: linear-gradient(90deg, var(--tyrkys-tmavy), var(--tyrkys)); }
.pd-cas { font-variant-numeric: tabular-nums; font-size: .78rem;
  font-weight: 560; color: var(--inkoust); white-space: nowrap; }
.pd-volno .pd-zkr, .pd-volno .pd-cas { color: var(--seda); font-weight: 420; }
.pd-volno .pd-track { background: transparent; box-shadow: none; }
.pd-osa { display: flex; justify-content: space-between;
  margin: .25rem 0 0 2.4rem; padding-right: 3.6rem;
  font-size: .62rem; color: var(--seda); font-variant-numeric: tabular-nums; }

/* Nouzové kontakty na profilu — kompaktní seznam v pravém sloupci (2. 9.) */
.profil-nouzove { margin-top: var(--mezera-m); }
.nk-list { list-style: none; margin: var(--mezera-xs) 0 var(--mezera-s); padding: 0; }
.nk-radek { display: flex; align-items: center; gap: .6rem;
  justify-content: space-between; padding: .28rem .1rem; line-height: 1.35;
  border-bottom: 1px solid var(--okraj-jemny); }
.nk-radek:last-child { border-bottom: 0; }
.nk-info { display: flex; flex-direction: column; min-width: 0; }
.nk-jmeno { font-size: .84rem; }
.nk-kontakt { word-break: break-word; font-size: .74rem; }
.nk-akce { flex: none; display: inline-flex; gap: .15rem; }

/* malé informační tlačítko s tooltipem u nadpisů (2. 9. večer) —
   znovupoužitelné: <button class="info-tip" title="…">{ikona info}</button> */
.info-tip { border: 0; background: none; padding: 0; margin-left: .35rem;
  cursor: help; color: var(--seda); display: inline-flex;
  vertical-align: middle; line-height: 0; }
.info-tip:hover { color: var(--tyrkys-tmavy); }
.info-tip svg { width: .95rem; height: .95rem; }

/* klikací hlavička „Létání s dronem" → žádost o let UAS (4. 9.) */
.pm-uas-hlava a { color: inherit; text-decoration: none; }
.pm-uas-hlava a:hover { color: var(--tyrkys); text-decoration: underline; }

/* skrytý scrollbar u výpisu dne na dashboardu (#28/4.9.) */
.db-scroll-skryty { scrollbar-width: none; -ms-overflow-style: none; }
.db-scroll-skryty::-webkit-scrollbar { width: 0; height: 0; display: none; }

/* běžný uživatel v Aktivitách vidí jen sebe — úhledný blok jméno + čas (#18/4.9.) */
.bp-ja { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: .15rem .5rem; padding: .45rem .6rem; margin-bottom: .6rem; border-radius: 10px;
  background: var(--akcent-pozadi, var(--plocha-jemna)); border: 1px solid var(--okraj); }
/* 23. 9. 2026: panel má 224 px, jméno + hodiny se lámaly na 4 řádky → menší písmo,
   jméno vždy celé (výpustka až u velmi dlouhého jména), hodiny se nezalamují a když se vedle
   jména nevejdou, sklouznou pod něj vpravo (flex-wrap) */
.bp-ja-jmeno { display: flex; align-items: center; gap: .4rem; min-width: 0; flex: 1 1 auto;
  font-weight: 650; font-size: .92rem; line-height: 1.3; color: var(--inkoust); }
.bp-ja-jmeno svg { flex: 0 0 auto; width: 1rem; height: 1rem; color: var(--tyrkys-tmavy, var(--tyrkys)); }
.bp-ja-text { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bp-ja-hodiny { flex: 0 0 auto; margin-left: auto; white-space: nowrap; font-family: var(--mono);
  font-weight: 700; font-size: .84rem; color: var(--tyrkys-tmavy, var(--tyrkys)); font-variant-numeric: tabular-nums; }

/* klikací čas v modalu počasí → UAS let v daném čase (#7/4.9.) */
.pm-uas-cas { color: inherit; text-decoration: none; border-bottom: 1px dashed transparent; }
.pm-uas-cas:hover { color: var(--tyrkys); border-bottom-color: currentColor; }

/* poměrové vypořádání přesčasů (#25) + obecné pilulky žádostí/stavů */
.akc-navrh-obal { margin-top: .8rem; padding-top: .6rem; border-top: 1px solid var(--okraj); }
.akc-navrh-form { display: flex; flex-wrap: wrap; gap: .8rem; align-items: end; margin-top: .4rem; }
.akc-navrh-form label { display: flex; flex-direction: column; gap: .2rem; font-size: .85rem; }
.akc-navrh-form input[type=number] { width: 6rem; }
.akc-navrh-stav { margin: .3rem 0; }
.akc-vykaz-navrhy .pl-zadost { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
  padding: .5rem .65rem; border: 1px solid var(--okraj); border-radius: var(--r-prvek);
  background: var(--plocha-jemna); margin-bottom: .5rem; }
.akc-vykaz-navrhy .pl-zadost-kdo { font-weight: 560; }
.akc-vykaz-navrhy .pl-zadost-akce { display: inline-flex; gap: .4rem; margin-left: auto; }
.stitek.pl-zadost-stav-schvalena { background: #e6f5ec; color: var(--ok); border-color: var(--ok); }
.stitek.pl-zadost-stav-zamitnuta { background: #fdecec; color: var(--chyba); border-color: var(--chyba); }

/* onboarding (#3) — akce na kartě profilu uživatele + uvítací průvodce */
.ud-profil-akce { display: inline-flex; flex-wrap: wrap; gap: .4rem; margin-left: auto; }
.karta > h2:has(.ud-profil-akce) { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.ud-profil-akce form { display: inline; }
/* akce uživatele jako ikony (30. 9. 2026): jednotná čtvercová tlačítka těsně vedle sebe,
   tečka vpravo nahoře = stav (tyrkys hotovo / oranžová čeká) */
h2 .ud-profil-akce.ud-akce-ikony { gap: .35rem; align-items: center; flex-wrap: nowrap; flex-shrink: 0; }
.ud-akce-ikony form { display: inline-flex; margin: 0; }
h2 .ud-akce-ikony .btn.ud-akce-ikona { position: relative; width: 2.1rem; height: 2.1rem; padding: 0;
  justify-content: center; }
.ud-akce-ikona svg { width: 1.05rem; height: 1.05rem; }
.ud-akce-tecka { position: absolute; top: .22rem; right: .22rem; width: .45rem; height: .45rem;
  border-radius: 50%; background: var(--tyrkys); box-shadow: 0 0 0 2px var(--karta); }
.ud-akce-ceka .ud-akce-tecka { background: var(--varovani, #e0a100); }
/* ---- Uvítací průvodce (redesign 30. 9. 2026, směr „Průvodce“): scéna s animovanou
   ilustrací v barvách značky (stejná ve světlém i tmavém motivu) + kroky s pruhem postupu. ---- */
.ozn-modal.uvod-okno { width: min(50rem, 100%); overflow: hidden; border: 0; border-radius: 1.3rem;
  box-shadow: 0 30px 90px -20px color-mix(in srgb, var(--navy-tmava) 60%, transparent), 0 0 0 1px color-mix(in srgb, var(--okraj) 60%, transparent);
  animation: uvod-vstup .5s cubic-bezier(.2, .8, .2, 1) both; }
@keyframes uvod-vstup { from { opacity: 0; transform: translateY(16px) scale(.98); } }
.uvod-scena { position: relative; flex: 0 0 auto; height: 15rem; overflow: hidden; isolation: isolate; color: white;
  background: radial-gradient(60% 90% at 50% 100%, color-mix(in srgb, var(--tyrkys) 35%, transparent), transparent 70%), linear-gradient(170deg, var(--navy-svetla), var(--navy-tmava) 75%); }
.uvod-scena::before { content: ""; position: absolute; inset: 0; z-index: -1;
  background-image: radial-gradient(color-mix(in srgb, white 18%, transparent) 1px, transparent 1.4px); background-size: 22px 22px;
  mask-image: radial-gradient(70% 70% at 50% 60%, black, transparent 80%); }
.uvod-sc { position: absolute; inset: 0; display: grid; place-items: center; transition: opacity .4s, transform .4s; }
.uvod-sc[hidden] { display: grid; opacity: 0; transform: scale(.94); pointer-events: none; }
.uvod-sc > * { grid-area: 1 / 1; }
.uvod-orbita { position: relative; width: 12rem; height: 12rem; border-radius: 50%; border: 1px dashed color-mix(in srgb, white 22%, transparent);
  animation: uvod-tocka 40s linear infinite; }
.uvod-orbita-vnejsi { position: absolute; left: 50%; top: 50%; margin: -11rem; width: 22rem; height: 22rem; border-color: color-mix(in srgb, var(--tyrkys) 18%, transparent); animation-duration: 70s; animation-direction: reverse; }
@keyframes uvod-tocka { to { transform: rotate(360deg); } }
.uvod-satelit { --u: calc(var(--i, 0) / var(--n, 1) * 1turn); position: absolute; left: 50%; top: 50%; width: 2.8rem; height: 2.8rem; margin: -1.4rem;
  transform: rotate(var(--u, 0turn)) translateY(-6rem) rotate(calc(-1 * var(--u, 0turn))); }
.uvod-satelit > span { display: grid; place-items: center; width: 100%; height: 100%; border-radius: .85rem;
  background: color-mix(in srgb, white 10%, transparent); border: 1px solid color-mix(in srgb, white 22%, transparent); backdrop-filter: blur(4px); animation: uvod-tocka 40s linear infinite reverse; }
.uvod-satelit .ik { width: 1.25rem; height: 1.25rem; }
.uvod-jadro { width: 7rem; height: 7rem; border-radius: 1.9rem; display: grid; place-items: center;
  background: linear-gradient(160deg, var(--tyrkys), color-mix(in srgb, var(--tyrkys) 40%, var(--navy-tmava))); box-shadow: 0 0 0 10px color-mix(in srgb, var(--tyrkys) 12%, transparent), 0 20px 50px -10px color-mix(in srgb, var(--tyrkys) 60%, transparent); }
.uvod-jadro b { font: 800 1.1rem "Montserrat", var(--pismo); letter-spacing: .28em; margin-left: .28em; }
.uvod-vejir { position: relative; width: 22rem; height: 11rem; }
.uvod-vejir div { position: absolute; left: 50%; bottom: 0; width: 8rem; height: 10rem; margin-left: -4rem; padding: 1rem; border-radius: 1rem;
  display: flex; flex-direction: column; gap: .5rem; font-weight: 700; font-size: .78rem; transform-origin: 50% 230%;
  transform: rotate(calc((var(--i, 0) - (var(--n, 1) - 1) / 2) * 9deg));
  background: linear-gradient(170deg, color-mix(in srgb, white 20%, transparent), color-mix(in srgb, white 6%, transparent)); border: 1px solid color-mix(in srgb, white 25%, transparent); backdrop-filter: blur(6px); }
.uvod-vejir .ik { width: 1.6rem; height: 1.6rem; color: var(--tyrkys); }
.uvod-hlavicka { display: flex; gap: .9rem; padding: .9rem 1.1rem; border-radius: 1.1rem; background: color-mix(in srgb, white 8%, transparent); border: 1px solid color-mix(in srgb, white 15%, transparent); }
.uvod-hlavicka span { position: relative; width: 3rem; height: 3rem; border-radius: 50%; display: grid; place-items: center; background: color-mix(in srgb, white 8%, transparent); }
.uvod-hlavicka span::after { content: ""; position: absolute; inset: -5px; border-radius: 50%; border: 2px solid var(--tyrkys); opacity: 0; animation: uvod-puls 2.4s infinite; }
.uvod-hlavicka span:nth-child(2)::after { animation-delay: .6s; }
.uvod-hlavicka span:nth-child(3)::after { animation-delay: 1.2s; }
.uvod-hlavicka span:nth-child(4)::after { animation-delay: 1.8s; }
@keyframes uvod-puls { 0% { opacity: .9; transform: scale(.85); } 70%, 100% { opacity: 0; transform: scale(1.35); } }
.uvod-hlavicka .ik { width: 1.3rem; height: 1.3rem; }
.uvod-jiskra { width: 6rem; height: 6rem; border-radius: 50%; display: grid; place-items: center; color: var(--tyrkys);
  background: color-mix(in srgb, var(--tyrkys) 12%, transparent); box-shadow: 0 0 0 14px color-mix(in srgb, var(--tyrkys) 6%, transparent), 0 0 60px color-mix(in srgb, var(--tyrkys) 35%, transparent); animation: uvod-dech 3s ease-in-out infinite; }
.uvod-jiskra .ik { width: 2.6rem; height: 2.6rem; }
@keyframes uvod-dech { 50% { transform: scale(1.08); } }
.uvod-telo { flex: 1 1 auto; min-height: 15rem; overflow-y: auto; padding: 1.6rem var(--modal-okraj, 2rem) .6rem; }
.uvod-postup { display: flex; gap: .4rem; margin-bottom: 1.1rem; }
.uvod-postup i { flex: 1; height: .3rem; border-radius: 99px; background: var(--okraj); overflow: hidden; }
.uvod-postup i.hotovo::before, .uvod-postup i.ted::before { content: ""; display: block; height: 100%; background: var(--akcent); }
.uvod-postup i.ted::before { animation: uvod-plni .5s ease-out both; }
@keyframes uvod-plni { from { width: 0; } }
.uvod-krok { animation: uvod-text .35s ease-out both; }
.uvod-krok[hidden] { display: none; }
@keyframes uvod-text { from { opacity: 0; transform: translateX(10px); } }
.uvod-stitek { font-size: .62rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--seda); }
.uvod-podnadpis { margin: 0; color: var(--seda); line-height: 1.5; }
/* osnova kapitol na úvodu — svislá časová osa s čísly */
.uvod-osnova { list-style: none; counter-reset: kap; margin: 1.3rem 0 .4rem; padding: 0; display: flex; flex-direction: column; }
.uvod-osnova li { counter-increment: kap; position: relative; display: grid; grid-template-columns: 2rem 1fr; column-gap: .9rem; padding-bottom: .9rem; }
.uvod-osnova li::before { content: counter(kap, decimal-leading-zero); grid-row: 1 / 3; width: 2rem; height: 2rem; display: grid; place-items: center;
  font: 700 .72rem "Montserrat", var(--pismo); color: var(--akcent); background: var(--akcent-pozadi); border: 1px solid color-mix(in srgb, var(--akcent) 35%, transparent); }
.uvod-osnova li:not(:last-child)::after { content: ""; position: absolute; left: calc(1rem - .5px); top: 2rem; bottom: 0; width: 1px; background: var(--okraj); }
.uvod-osnova b { font-size: .95rem; color: var(--text); align-self: end; }
.uvod-osnova small { color: var(--seda); font-size: .8rem; }
.uvod-krok h2 { margin: .15rem 0 .45rem; font: 700 1.85rem/1.15 "Montserrat", var(--pismo); letter-spacing: -.01em; color: var(--text); }
.uvod-krok h2 small { font: 600 .8rem var(--pismo); color: var(--seda); margin-left: .4rem; letter-spacing: 0; }
.uvod-hlava { display: flex; align-items: center; gap: 1rem; }
.uvod-hlava h2 { margin-bottom: 0; }
.uvod-avatar { flex: 0 0 auto; width: 3.6rem; height: 3.6rem; border-radius: 50%; overflow: hidden; display: grid; place-items: center;
  font: 700 1.15rem "Montserrat", var(--pismo); color: var(--navy-tmava); background: linear-gradient(150deg, color-mix(in srgb, var(--tyrkys) 70%, white), color-mix(in srgb, var(--tyrkys) 40%, var(--navy-tmava)));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--akcent) 25%, transparent), 0 8px 22px -8px color-mix(in srgb, var(--tyrkys) 70%, transparent); }
.uvod-avatar img { width: 100%; height: 100%; object-fit: cover; }
.uvod-uvod { margin: .9rem 0 0; color: var(--seda); line-height: 1.6; }
.uvod-seznam, .uvod-novinky { list-style: none; margin: .9rem 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: .2rem 1.2rem; }
.uvod-seznam li { display: flex; gap: .7rem; align-items: flex-start; padding: .5rem 0; }
.uvod-seznam > li > .ik, .uvod-novinky .ik { flex: 0 0 auto; color: var(--akcent); margin-top: .15rem; }
.uvod-seznam b { font-size: .95rem; color: var(--text); }
.uvod-seznam b a { color: inherit; text-decoration: none; border-bottom: 1px solid color-mix(in srgb, var(--akcent) 45%, transparent); }
.uvod-seznam b a:hover, .uvod-seznam b a:focus-visible { color: var(--akcent); outline: none; }
.uvod-pol { flex: 1; min-width: 0; }
.uvod-napoveda { display: inline-flex; align-items: center; gap: .25rem; margin-top: .3rem; font-size: .74rem; font-weight: 600; color: var(--akcent); text-decoration: none; }
.uvod-napoveda:hover { text-decoration: underline; }
.uvod-napoveda .ik { width: .8rem; height: .8rem; }
.uvod-seznam kbd { font: 700 .7rem var(--pismo); min-width: 1.45rem; text-align: center; padding: .1rem .35rem;
  border: 1px solid var(--okraj); border-bottom-width: 2px; color: var(--seda); background: var(--karta); margin-top: .1rem; }
/* scéna Obchod: tok poptávka → zakázka → klient */
.uvod-tok { display: flex; align-items: center; gap: .8rem; }
.uvod-tok > span { display: flex; flex-direction: column; align-items: center; gap: .5rem; width: 6.4rem; padding: 1rem .5rem; text-align: center;
  background: linear-gradient(170deg, color-mix(in srgb, white 20%, transparent), color-mix(in srgb, white 6%, transparent));
  border: 1px solid color-mix(in srgb, white 25%, transparent); animation: uvod-zjev .5s calc(var(--i, 0) * .25s) both; }
.uvod-tok > span .ik { width: 1.7rem; height: 1.7rem; color: var(--tyrkys); }
.uvod-tok small { font-size: .74rem; font-weight: 700; }
.uvod-tok-sipka { display: grid; color: var(--tyrkys); animation: uvod-sipka 1.6s ease-in-out infinite; }
@keyframes uvod-zjev { from { opacity: 0; transform: translateY(10px); } }
@keyframes uvod-sipka { 50% { transform: translateX(4px); opacity: .6; } }
.uvod-seznam em { font-style: normal; font-size: .64rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--seda); margin-left: .45rem; }
.uvod-seznam small { display: block; color: var(--seda); font-size: .8rem; line-height: 1.4; margin-top: .1rem; }
.uvod-novinky { grid-template-columns: 1fr; font-size: .88rem; }
.uvod-novinky li { display: flex; gap: .6rem; align-items: flex-start; padding: .3rem 0; color: var(--text); }
.uvod-tip { margin: .9rem 0 0; font-size: .8rem; color: var(--seda); }
.uvod-paticka { display: flex; align-items: center; gap: .6rem; padding: 1rem var(--modal-okraj, 2rem) 1.4rem; }
.uvod-paticka #uvodDal, .uvod-paticka #uvodZacit { margin-left: auto; }
.uvod-paticka .btn { padding-inline: 1.2rem; }
@media (max-width: 560px) {
  .uvod-scena { height: 11rem; }
  .uvod-orbita { width: 10rem; height: 10rem; } .uvod-orbita-vnejsi { width: 16rem; height: 16rem; margin: -8rem; }
  .uvod-satelit { transform: rotate(var(--u, 0turn)) translateY(-5rem) rotate(calc(-1 * var(--u, 0turn))); }
  .uvod-jadro { width: 5.2rem; height: 5.2rem; border-radius: 1.4rem; } .uvod-jadro b { font-size: .85rem; }
  .uvod-vejir { transform: scale(.7); } .uvod-hlavicka { transform: scale(.85); }
  .uvod-telo { padding: 1.2rem 1.1rem .4rem; min-height: 0; }
  .uvod-krok h2 { font-size: 1.4rem; } .uvod-avatar { width: 2.9rem; height: 2.9rem; font-size: .95rem; }
  .uvod-seznam { grid-template-columns: 1fr; } .uvod-seznam kbd { display: none; }
  .uvod-tok { transform: scale(.8); }
  .uvod-paticka { padding: .8rem 1.1rem 1.1rem; }
}
/* ultrawide: okno úměrně větší (celé, včetně ilustrace) */
@media (min-width: 2200px) { .ozn-modal.uvod-okno { zoom: 1.3; } }
/* ostré hrany portálu platí i tady; kruh drží jen skutečné kruhy (orbity, avatar, kruhová tlačítka, odznaky) */
.uvod-orbita, .uvod-avatar, .uvod-hlavicka span, .uvod-hlavicka span::after, .uvod-jiskra { border-radius: 50% !important; }
@media (prefers-reduced-motion: reduce) {
  .uvod-okno, .uvod-okno *, .uvod-okno *::before, .uvod-okno *::after { animation: none !important; transition: none !important; }
}

/* ===== VLOŽENÝ REŽIM (?vlozeno=1, 4. 9. 2026): stránka načtená do overlaye
   Dashboardu (rychlé akce). DOM je kompletní (moduly JS sahají na hero i
   sidebar), chrom jen skrýváme; otevřený modal si modal.js přesune pod
   <body>, takže zůstane viditelný. Backdrop dává overlay rodiče. ===== */
html:has(body.vlozeno), body.vlozeno { background: transparent !important; }
body.vlozeno .kostra, body.vlozeno .menu-plovouci, body.vlozeno #profilMenu,
body.vlozeno .paticka-toast, body.vlozeno .nahled-pruh { visibility: hidden !important; }
body.vlozeno #profilMenu { display: none !important; }
body.vlozeno .ozn-pozadi { background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none; }
body.vlozeno .vlozeno-nacitam { position: fixed; inset: 0; display: flex; align-items: center;
  justify-content: center; color: var(--seda); font-size: .9rem; pointer-events: none; }
/* overlay rodiče (Dashboard): iframe přes celou plochu, modal se centruje uvnitř */
.db-vlozeny { padding: 0; }
.db-vlozeny iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0;
  background: transparent; opacity: 0; transition: opacity .18s; }
.db-vlozeny iframe.nacteno { opacity: 1; }
.db-vlozeny .db-vlozeny-nacitam { color: #fff; font-size: .95rem; letter-spacing: .02em; }
.db-vlozeny iframe.nacteno + .db-vlozeny-nacitam { display: none; }

/* Amigo!NET modal (rychlé akce): chipy zájmů + mřížka termínů */
/* Amigo!NET modal (přepracování 11. 9. 2026): krok volby + zarovnaná mřížka formuláře */
/* velikost drží sdílené pravidlo .modal-sjednoceny (21. 9. 2026) */
.db-an-volby-krok { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem; margin: .4rem 0 .6rem; }
.db-an-volba { display: flex; flex-direction: column; align-items: flex-start; gap: .4rem; text-align: left; padding: 1rem 1.1rem;
  border: 1px solid var(--okraj); border-radius: var(--r-karta); background: var(--plocha); color: inherit; cursor: pointer; font: inherit; }
.db-an-volba:hover, .db-an-volba:focus-visible { border-color: var(--tyrkys); background: var(--plocha-jemna); outline: none; }
.db-an-volba strong { font-size: 1rem; }
.db-an-volba small { color: var(--seda); line-height: 1.4; }
.db-an-volba-ik svg { width: 1.4rem; height: 1.4rem; color: var(--tyrkys-tmavy); }
.db-an-form .db-an-mriz { grid-template-columns: 10.5rem minmax(0, 1fr) 10.5rem minmax(0, 1fr); }
.db-an-mriz { align-items: start; gap: .55rem 1rem; margin: .1rem 0 .3rem; }
.db-an-mriz > .popisek.db-an-novy-radek { grid-column: 1; }   /* široké pole začíná vždy novým řádkem */
.db-an-mriz > .popisek { padding-top: .55rem; }
.db-an-mriz > span { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.db-an-mriz input:not([type=checkbox]), .db-an-mriz select, .db-an-mriz textarea { width: 100%; max-width: 100%; box-sizing: border-box; min-width: 0; }
.db-an-cely { grid-column: 2 / -1; }
.db-an-krok[data-krok="odkaz"] .db-an-mriz { grid-template-columns: 9rem minmax(0, 1fr); display: grid; }
.db-an-okno .modal-paticka { display: flex; justify-content: space-between; align-items: center; gap: .6rem; }
.db-an-okno .modal-paticka .btn-skupina { display: flex; align-items: center; gap: .5rem; margin-left: auto; }
.db-an-pozn { white-space: nowrap; }
.db-an-volby { display: flex; flex-wrap: wrap; gap: .4rem; margin: .2rem 0 .5rem; }
.db-an-chip { display: inline-flex; align-items: center; gap: .45rem; margin: 0; padding: .32rem .7rem;
  border: 1px solid var(--okraj); font-size: .84rem; cursor: pointer; font-weight: 500; }
.db-an-chip input { width: auto; margin: 0; accent-color: var(--tyrkys-tmavy); }
.db-an-chip:hover { background: var(--plocha-jemna); }
.db-an-chip:has(input:checked) { border-color: var(--tyrkys-tmavy); background: var(--plocha-jemna); }
/* 16. 9. 2026 (přání uživatele): matice termínů využije celou šířku modalu — dny mají stejně široké sloupce
   a zaškrtávací pole je pohodlně velké; celá buňka reaguje na najetí, ať je jasné, kam se klikne. */
.db-an-termin { width: 100%; table-layout: fixed; margin: .2rem 0 .7rem; }
.db-an-termin th, .db-an-termin td { text-align: center; padding: .5rem .6rem; }
.db-an-termin tbody td:hover { background: var(--plocha-jemna); }
.db-an-termin tbody th { width: 9rem; }
.db-an-termin input { width: 1.05rem; height: 1.05rem; cursor: pointer; }
.db-an-termin tbody th { text-align: left; font-weight: 500; }
.db-an-termin input { width: auto; margin: 0; accent-color: var(--tyrkys-tmavy); }
/* vložené šablony Úkol / Poznámka (rychlé akce Dashboardu) */
.uk-vlozeny-telo .karta { box-shadow: none; border: 0; padding: 0; margin: 0; background: transparent; }
.uk-vlozeny-telo .karta > h2 { display: none; }
.uk-vlozeny-telo .uk-vlozeny-karta { padding: .2rem 0 0; border: 0; box-shadow: none; background: transparent;
  height: auto !important; max-height: none !important; overflow: visible; }
/* vložený modal Nová poznámka (oprava 11. 9. 2026): editor Toast UI potřebuje URČITOU
   výšku hostitele — v flex řetězci s min-height se procentní výška rozpadla na 0 (zbyla
   jen lišta). Modal je velký (editor na většině plochy), .pz-wysiwyg má pevnou výšku z vh. */
/* velikost drží sdílené pravidlo .modal-sjednoceny (21. 9. 2026) */
.pz-vlozeny .pz-vlozeny-telo { display: flex; flex-direction: column; padding: 0; flex: 1 1 auto; min-height: 0; overflow: hidden; }
.pz-vlozeny .pz-editor #pz-form { flex: 1 1 auto; min-height: 0; }
.pz-vlozeny .pz-editor { flex: 1; min-height: 0; height: auto !important; max-height: none !important;
  padding: .6rem var(--modal-okraj) 0; border: 0; box-shadow: none; background: transparent; }
/* !important: Toast UI dává hostiteli inline height:100 %, což se bez určité výšky rodiče rozpadne na auto */
.pz-vlozeny .pz-wysiwyg { flex: 1 1 0; height: auto !important; min-height: 0; }
.pz-vlozeny .pz-wysiwyg .toastui-editor-defaultUI { display: flex; flex-direction: column; }
.pz-vlozeny .pz-wysiwyg .toastui-editor-main { flex: 1; min-height: 0; }
.pz-vlozeny .pz-paticka { padding: .4rem var(--modal-okraj) .6rem; }
/* řádek název + kategorie (dropdown) v hlavě editoru vloženého modalu */
.pz-vl-hlava { display: flex; align-items: center; gap: 1rem; }
.pz-vl-hlava #pz-nazev { flex: 1; min-width: 0; }
.pz-vl-kat { display: inline-flex; align-items: center; gap: .5rem; flex: none; margin: 0; }
.pz-vl-kat select { width: 18rem; max-width: 40vw; font-size: .88rem; }

/* ===== Mailing — Nová kampaň (dvojpanel, 4. 9. 2026) ===== */
.kmp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--mezera-l); align-items: stretch; }
/* karta Náhled e-mailu vyplní výšku pravého sloupce a zarovná se spodkem s poslední kartou vlevo (6. 9. 2026) */
.kmp-nahled-karta { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
.kmp-nahled-karta .kmp-nahled-ramec { flex: 1 1 auto; min-height: 38rem; height: auto; }
@media (max-width: 1100px) { .kmp-grid { grid-template-columns: 1fr; } }
/* stránka Nové kampaně (6. 9. 2026): nahoře dvousloupcová mřížka, pod ní
   karty Příjemci a Odeslání přes CELOU šířku — jeden svislý rytmus mezer
   (--mezera-l) pro sloupce i pro široké karty, aby stránka držela pohromadě */
.kmp-stranka { display: flex; flex-direction: column; gap: var(--mezera-l); }
.kmp-sloupec { display: flex; flex-direction: column; gap: var(--mezera-l); min-width: 0; }
.kmp-karta > h2 { margin-top: 0; }
/* karta Sdělení (5. 9. 2026): pole rámu ve DVOU sloupcích popisek|pole|popisek|pole
   nad editorem, editor přes celou šířku; popisky 9 rem kvůli „Podtitul v hlavičce" */
.kmp-form .kmp-pole { gap: .8rem 1.4rem; margin: .2rem 0 1.3rem; }
.kmp-sdeleni .kmp-pole { grid-template-columns: 9rem minmax(0, 1fr) 9rem minmax(0, 1fr); }
.kmp-form .kmp-pole > span { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.kmp-form .kmp-pole input:not([type=checkbox]), .kmp-form .kmp-pole select { width: 100%; box-sizing: border-box; }
.kmp-form .kmp-odeslani-pole > .popisek { padding-top: .6rem; }
/* popisek s tooltipem, kde se pole v e-mailu objeví */
.popisek.napoveda-pole { cursor: help; text-decoration: underline dotted var(--seda); text-underline-offset: .2em; }
.kmp-form .kmp-pole > span > .kmp-zaskrtnuti { display: inline-flex; align-items: center; justify-content: flex-start;
  gap: .6rem; width: auto; align-self: flex-start; min-height: 2.1rem; cursor: pointer; white-space: nowrap; }
.kmp-form .kmp-pole .kmp-zaskrtnuti input[type=checkbox] { width: 1.05rem; height: 1.05rem; flex: 0 0 auto; margin: 0; }
.kmp-editor-nadpis { margin: 0 0 .5rem; }
.kmp-sdeleni .kmp-uryvky { margin-top: 1rem; }
@media (max-width: 1500px) { .kmp-sdeleni .kmp-pole { grid-template-columns: 9rem minmax(0, 1fr); } }
.kmp-form .blok-siroky { grid-template-columns: 9rem minmax(0, 1fr); }
.kmp-form .blok-siroky > span { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.kmp-form .blok-siroky > span > small { line-height: 1.4; }
/* vstupní pole Mailingu jako ohraničené boxy (zadání 4. 9.: pole na lince
   byla méně přehledná) — sdílí Nová kampaň i editor šablon */
.kmp-form.linkovy-form input:not([type=checkbox]):not([type=radio]), .kmp-form.linkovy-form select,
.kmp-form.linkovy-form textarea, .kmp-form input:not([type=checkbox]), .kmp-form select, .kmp-form textarea {
  max-width: none; width: 100%; box-sizing: border-box;
  background: var(--plocha-jemna); border: 1px solid var(--okraj); padding: .5rem .7rem;
  transition: border-color .15s ease, background .15s ease; }
.kmp-form.linkovy-form input:hover:not(:focus), .kmp-form.linkovy-form select:hover:not(:focus),
.kmp-form.linkovy-form textarea:hover:not(:focus) { border-color: var(--okraj-silny); }
.kmp-form.linkovy-form input:focus, .kmp-form.linkovy-form select:focus, .kmp-form.linkovy-form textarea:focus {
  border-color: var(--tyrkys); background: var(--karta); box-shadow: var(--fokus-kruh); }
.kmp-form .blok-siroky > .popisek { padding-top: .6rem; }
.kmp-form .blok-siroky.kmp-blok-bez-popisku { grid-template-columns: minmax(0, 1fr); }
.kmp-form .cast-nadpis { margin-top: var(--mezera-m); }
.kmp-predmet { padding-top: .45rem; font-weight: 500; }
.kmp-nahled { margin-top: var(--mezera-m); }
.kmp-nahled-ramec { width: 100%; height: 26rem; border: 1px solid var(--okraj); background: #fff; }
/* detail kampaně (5. 9. 2026) — hustý technický přehled: obsah / průběh /
   výsledek. Menší písmo a úzké řádky, ať se vejde celá rozesílka na jednu
   obrazovku bez scrollování. */
.kmp-detail { font-size: .8rem; }
.kmp-detail h2 { font-size: .95rem; }
.kmp-detail .kmp-nahled-ramec { height: 20rem; }
.kmp-udaje { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr);
  gap: .1rem .7rem; margin: .3rem 0 .6rem; }
.kmp-udaje dt { color: var(--seda); }
.kmp-udaje dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.kmp-pruh { height: 6px; border-radius: 99px; overflow: hidden;
  background: color-mix(in srgb, var(--okraj) 80%, transparent); }
.kmp-pruh i { display: block; height: 100%; background: var(--tyrkys);
  border-radius: 99px; transition: width .25s ease; }
.kmp-chyby { margin: .2rem 0 .6rem; padding-left: 1.1rem; color: var(--seda); }
.kmp-chyby li { margin: .1rem 0; overflow-wrap: anywhere; }
.kmp-akce { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center;
  margin-top: .6rem; }
/* plán rozesílek nad seznamem kampaní */
/* ---- Mailing: přehled kampaní (přepracováno 6. 9. 2026) ---- */
.kmp-souhrn { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .6rem; margin: 0 0 .9rem; }
.kmp-kpi { display: flex; flex-direction: column; gap: .12rem; padding: .7rem .95rem .65rem; background: var(--karta);
  border: 1px solid var(--okraj); border-radius: var(--r-prvek); border-left: 4px solid var(--okraj); min-width: 0; }
.kmp-kpi-cislo { font-size: 1.55rem; font-weight: 700; line-height: 1.15; color: var(--inkoust); font-variant-numeric: tabular-nums; }
.kmp-kpi-popis { font-size: .84rem; font-weight: 600; color: var(--inkoust); }
.kmp-kpi-pozn { font-size: .76rem; color: var(--seda); }
.kmp-kpi-zive { border-left-color: var(--tyrkys); }
.kmp-kpi-zive .kmp-kpi-cislo { color: var(--tyrkys-tmavy); }
.kmp-kpi-chyba { border-left-color: var(--chyba); }
.kmp-kpi-chyba .kmp-kpi-cislo { color: var(--chyba); }
.kmp-plan-karta h2 small { font-weight: 400; letter-spacing: 0; text-transform: none; }
.kmp-plan td, .kmp-plan th { padding-top: .35rem; padding-bottom: .35rem; vertical-align: middle; }
.kmp-plan .kmp-kdy, .kmp-kampane .kmp-kdy { white-space: nowrap; }
.kmp-kampane .cislo, .kmp-plan .cislo { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.kmp-kampane td { vertical-align: middle; }
.kmp-nazev { font-weight: 600; }
.kmp-radek2 { display: block; font-size: .78rem; color: var(--seda); margin-top: .1rem; }
.kmp-typ { display: inline-flex; align-items: center; gap: .35rem; }
.kmp-typ-tecka { display: inline-block; width: .55rem; height: .55rem; border-radius: 999px; background: var(--sab-barva, var(--seda)); }
.kmp-predmet { color: var(--seda); }
.kmp-kdy-popis { display: block; font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: var(--seda); line-height: 1.2; }
.kmp-stav { display: inline-block; padding: .16rem .55rem; border-radius: 999px; font-size: .74rem; font-weight: 620;
  letter-spacing: .02em; white-space: nowrap; border: 1px solid var(--okraj); color: var(--seda); background: transparent; }
.kmp-stav-navrh { color: var(--seda); }
.kmp-stav-naplanovana { color: #2F6FD6; border-color: rgba(47, 111, 214, .45); background: rgba(47, 111, 214, .1); }
.kmp-stav-ve_fronte { color: var(--varovani); border-color: var(--varovani-okraj); background: var(--varovani-pozadi); }
.kmp-stav-bezi { color: var(--tyrkys-tmavy); border-color: var(--akcent-okraj); background: var(--akcent-pozadi); animation: prio-puls 2.2s ease-in-out infinite; }
.kmp-stav-pozastavena { color: var(--varovani); border-color: var(--varovani-okraj); background: var(--varovani-pozadi); }
.kmp-stav-hotova { color: var(--ok-text); border-color: var(--ok-okraj); background: var(--ok-pozadi); }
.kmp-lista { display: inline-block; vertical-align: middle; width: 7rem; height: .42rem; border-radius: 999px; background: var(--okraj); overflow: hidden; }
.kmp-lista-vypln { display: block; height: 100%; background: var(--tyrkys); border-radius: 999px; }
.kmp-lista-mini { display: block; width: 100%; max-width: 6rem; height: .28rem; margin: .25rem 0 0 auto; }
.kmp-problemy { color: var(--chyba); font-weight: 700; }
.kmp-ok { color: var(--ok-text); font-size: .78rem; }
.kmp-autor { white-space: nowrap; }
.kmp-plan-akce { text-align: right; white-space: nowrap; }
.kmp-plan td.kmp-plan-akce .btn.btn-maly { padding: .2rem .7rem; font-size: .78rem; min-height: 0; line-height: 1.4; }
.kmp-filtr { display: flex; flex-wrap: wrap; gap: .35rem; margin: .2rem 0 .6rem; }
.kmp-filtr-tl { display: inline-flex; align-items: center; gap: .4rem; padding: .32rem .8rem; border-radius: 999px;
  border: 1px solid var(--okraj); background: var(--karta); color: var(--seda); font-size: .84rem; text-decoration: none; }
.kmp-filtr-tl:hover { color: var(--inkoust); border-color: var(--seda); }
.kmp-filtr-tl.aktivni { background: var(--navy); border-color: var(--navy); color: #fff; font-weight: 620; }
.kmp-filtr-pocet { font-size: .74rem; padding: 0 .4rem; border-radius: 999px; background: rgba(127, 127, 127, .18); }
.kmp-filtr-tl.aktivni .kmp-filtr-pocet { background: var(--chrom-okraj); }
.kmp-seznamy { display: flex; flex-direction: column; gap: .15rem; margin: .2rem 0 var(--mezera-m); }
/* sloupce: zaškrtávátko | název | štítek | počty — štítek i počty mají PEVNOU
   šířku, aby štítky „automatický" seděly pod sebou napříč všemi skupinami
   (8. 9. 2026; s `auto` posouval sloupec štítků text počtů) */
.kmp-seznam { display: grid; grid-template-columns: auto minmax(0, 1fr) 6.2rem 12.5rem; gap: .6rem; align-items: center;
  margin: 0; padding: .38rem .55rem; border: 1px solid transparent; cursor: pointer; font-weight: 400; }
.kmp-seznam:hover { background: var(--plocha-jemna); }
.kmp-seznam:has(input:checked) { background: var(--plocha-jemna); border-color: var(--tyrkys-tmavy); }
.kmp-seznam input { width: auto; margin: 0; accent-color: var(--tyrkys-tmavy); }
.kmp-seznam-nazev { font-weight: 500; }
.kmp-seznam-stitek { white-space: nowrap; }
.kmp-seznam-stitek .stitek { margin: 0; }
.kmp-seznam-pocty { font-size: .8rem; color: var(--seda); white-space: nowrap; text-align: right; }
.kmp-seznam-test .kmp-seznam-nazev { color: var(--tyrkys-tmavy); }
.kmp-extra-pocet { margin: .3rem 0 var(--mezera-m); }
.kmp-souhrn { border-top: 1px solid var(--okraj); padding-top: var(--mezera-m); margin-top: var(--mezera-m); }
.kmp-souhrn > div { display: flex; align-items: baseline; gap: .6rem; flex-wrap: wrap; }
.kmp-souhrn-cislo { font-size: 1.9rem; font-weight: 700; letter-spacing: -.02em; color: var(--tyrkys-tmavy); }
.kmp-souhrn-cislo.kmp-souhrn-tlumene { color: var(--seda); margin-left: 1.4rem; }
.kmp-souhrn-popis { color: var(--seda); }
.kmp-souhrn > .drobky { margin: .2rem 0 0; }
.kmp-zamek { margin: 0 0 var(--mezera-m); }
/* karta Příjemci (6. 9. 2026): vlevo komu e-mail půjde, vpravo kdo ho
   nedostane — potlačení je jediný způsob, jak klienta vyjmout z JEDNÉ
   kampaně, aniž by se sahalo na jeho členství v seznamech adresáře */
.kmp-prijemci-mriz { display: grid; grid-template-columns: 1fr 1fr; gap: var(--mezera-l); align-items: start; }
@media (max-width: 1100px) { .kmp-prijemci-mriz { grid-template-columns: 1fr; } }
.kmp-prijemci-sloupec { min-width: 0; }
.kmp-prijemci-sloupec > .cast-nadpis:first-child { margin-top: 0; }
.kmp-sloupec-nadpis { display: flex; align-items: center; gap: .4rem; font-size: .95rem;
  color: var(--inkoust); padding-bottom: .35rem; border-bottom: 1px solid var(--okraj); }
.kmp-sloupec-nadpis svg { width: 1.05rem; height: 1.05rem; }
.kmp-potlacene .kmp-sloupec-nadpis { color: var(--varovani); }
.kmp-potlacene .kmp-seznam:has(input:checked) { border-color: var(--varovani-okraj); background: var(--varovani-pozadi); }
.kmp-potlacene .kmp-seznam input { accent-color: var(--varovani); }
/* tentýž seznam v druhém sloupci — zamčený, ať se průnik nedá naklikat */
.kmp-seznam-ztlumeny { opacity: .4; cursor: not-allowed; }
.kmp-seznam-ztlumeny input { cursor: not-allowed; }
/* karta Odeslání přes celou šířku: tři krátká pole v JEDNÉ řadě
   (popisek|pole ×3), tlačítka pod nimi — žádný poloprázdný řádek mřížky */
/* (11. 9. 2026, přání uživatele — přehlednost na 3072 px): pole se NEroztahují přes
   celou kartu — dva páry popisek|pole na řádek, pole max. 26 rem, zbytek šířky volný;
   podpis v jednom řádku, nápovědy jednořádkové */
/* sekce Odeslání bez karty (přání uživatele 11. 9. 2026): jen obsah zarovnaný vlevo
   na 50 % dostupné šířky, oddělený horní linkou; pod ~2200 px jeden pár popisek|pole */
.kmp-odeslani { width: 50%; min-width: min(100%, 52rem); max-width: 100%; margin: 0; padding: var(--mezera-m) 0 0;
  border-top: 1px solid var(--okraj); background: none; box-shadow: none; }
.kmp-odeslani-pole { grid-template-columns: 9rem minmax(14rem, 26rem) 9rem minmax(14rem, 26rem);
  justify-content: start; align-items: start; margin-bottom: .2rem; column-gap: 1.6rem; }
@media (max-width: 2200px) { .kmp-odeslani-pole { grid-template-columns: 9rem minmax(0, 26rem); } }
/* řada akcí smí přesáhnout 50 % (bez karty nic neořezává) — pět dlaždic v jednom řádku i na 1920 px */
.kmp-odeslani .kmp-akce-mrizka { flex-wrap: nowrap; width: max-content; max-width: 200%; }
@media (max-width: 1400px) { .kmp-odeslani .kmp-akce-mrizka { flex-wrap: wrap; width: auto; max-width: 100%; } }
.kmp-odeslani-pole > span > small.drobky { line-height: 1.35; }
.kmp-odeslani-pole #kmp-smtp-info { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 1500px) { .kmp-odeslani-pole { grid-template-columns: 9rem minmax(0, 1fr); } }
/* karta Odeslání — akce jako JEDNA ŘADA DLAŽDIC (8. 9. 2026 večer, volba uživatele
   z variant): stejně široká tlačítka vedle sebe, pod každým krátký popis; ostré akce
   (Naplánovat, Odeslat teď) vpravo za svislou linkou. */
.kmp-akce-mrizka { display: flex; flex-wrap: wrap; gap: var(--mezera-m) var(--mezera-l);
  align-items: flex-start; border-top: 1px solid var(--okraj); margin-top: var(--mezera-m); padding-top: var(--mezera-m); }
.kmp-akce-skupina { display: flex; flex-wrap: wrap; gap: var(--mezera-m); align-items: flex-start; }
.kmp-akce-ostre { border-left: 1px solid var(--okraj); padding-left: var(--mezera-l); }
.kmp-akce-radek { display: flex; flex-direction: column; gap: .3rem; width: 12.5rem; }
.kmp-akce-radek .btn { width: 100%; justify-content: center; padding: .6rem 1rem; font-size: .9rem;
  display: inline-flex; align-items: center; gap: .45rem; white-space: nowrap; }
.kmp-akce-radek .btn[disabled] { opacity: .45; cursor: not-allowed; transform: none; filter: none; box-shadow: none; }
.kmp-akce-popis { font-size: .72rem; color: var(--seda); line-height: 1.3; padding: 0 .15rem; opacity: .85; }
/* volba podpisu — dva přepínače pod sebou */
.kmp-form .kmp-pole > span.kmp-podpis { display: flex; flex-direction: row; flex-wrap: wrap; gap: .2rem 1.4rem; padding-top: .45rem; }
.kmp-form .kmp-pole .kmp-podpis .kmp-zaskrtnuti { display: inline-flex; align-items: center; gap: .5rem;
  min-height: 1.7rem; width: auto; align-self: flex-start; cursor: pointer; white-space: nowrap; }
.kmp-form .kmp-pole .kmp-podpis .kmp-zaskrtnuti > span { display: inline; }
.kmp-form .kmp-pole .kmp-podpis input[type=radio] { width: 1rem; height: 1rem; margin: 0; flex: 0 0 auto; }
.kmp-akce-hlavni { background: var(--tyrkys-tmavy); color: var(--akcent-text); }
.kmp-akce-hlavni:hover { color: var(--akcent-text); }
.kmp-akce .btn[disabled] { opacity: .45; cursor: not-allowed; transform: none; filter: none; box-shadow: none; }
/* doplňkové proměnné kampaně (merge-tagy šablony) */

/* sdělení kampaně (WYSIWYG) + náhled e-mailu, editor šablon */
.kmp-editor-obal { margin: var(--mezera-s) 0 var(--mezera-s); }
.kmp-editor-hlava { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
.kmp-editor-hlava .kmp-editor-nadpis { margin: 0; }
.kmp-rezim { display: inline-flex; border: 1px solid var(--okraj); border-radius: .5rem; overflow: hidden; }
.kmp-rezim .kmp-rezim-tl { border: 0; border-radius: 0; background: transparent; color: var(--seda); }
.kmp-rezim .kmp-rezim-tl.aktivni { background: var(--tyrkys); color: #0b1b1c; font-weight: 600; }
/* editor sdělení (8. 9. 2026): vizuální editor i textarea HTML kódu mají
   TUTÉŽ výšku (--kmp-editor-vyska ≈ 26 řádků kódu) — přepnutí režimu nesmí
   měnit výšku karty; JS předává proměnnou Toast UI jako height */
.kmp-editor-obal { --kmp-editor-vyska: 34rem; }
.kmp-html-kod { display: block; width: 100%; height: var(--kmp-editor-vyska); min-height: var(--kmp-editor-vyska); resize: vertical; font-family: var(--mono); font-size: .82rem;
  line-height: 1.5; padding: .7rem .8rem; border: 1px solid var(--okraj); border-radius: .5rem;
  background: var(--pole); color: var(--inkoust); box-sizing: border-box; }
.kmp-rezim-info { margin: .4rem 0 0; }
.kmp-uryvek-radek { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.kmp-uryvek-radek .kmp-uryvek-vlozit { margin-left: auto; }
.kmp-editor .toastui-editor-defaultUI { border-color: var(--okraj); }
.kmp-sablona-volba { grid-template-columns: 6rem minmax(0, 1fr); gap: .7rem 1rem; align-items: start; margin: .2rem 0 .9rem; padding-bottom: .9rem; border-bottom: 1px solid var(--okraj); }
.kmp-sablona-volba > .popisek { padding-top: .45rem; }
.kmp-sablona-volba > span { position: relative; }
.kmp-sab-select { position: absolute; opacity: 0; width: 1px; height: 1px; left: 0; top: 0; pointer-events: none; }
/* rozbalovací seznam šablon (6. 9. 2026): tlačítko jako pole + listbox se skupinami druhu */
.kmp-sab-vyber { position: relative; }
.kmp-sab-tlacitko { display: flex; align-items: center; gap: .6rem; width: 100%; max-width: none; text-align: left;
  padding: .38rem .6rem; margin-top: .18rem; border: 1px solid var(--okraj); border-radius: var(--r-prvek);
  background: var(--pole); color: var(--inkoust); font: inherit; font-size: .85rem; cursor: pointer; }
.kmp-sab-tlacitko:hover { border-color: var(--okraj-silny); }
.kmp-sab-tlacitko:focus-visible, .kmp-sab-tlacitko[aria-expanded="true"] { outline: none; border-color: var(--tyrkys);
  box-shadow: var(--fokus-kruh); }
.kmp-sab-tlacitko.prazdne .kmp-sab-nazev { color: var(--seda); font-weight: 480; }
.kmp-sab-tlacitko .kmp-sab-text { flex-direction: row; align-items: baseline; gap: .55rem; }
.kmp-sab-tlacitko .kmp-sab-druh:empty { display: none; }
.kmp-sab-sipka { margin-left: auto; width: .55rem; height: .55rem; border-right: 2px solid var(--seda); border-bottom: 2px solid var(--seda);
  transform: translateY(-.15rem) rotate(45deg); flex: 0 0 auto; }
.kmp-sab-tlacitko[aria-expanded="true"] .kmp-sab-sipka { transform: translateY(.15rem) rotate(225deg); }
.kmp-sab-tecka { flex: 0 0 auto; width: .7rem; height: .7rem; border-radius: 99px; background: var(--sab-barva);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--sab-barva) 45%, transparent); }
.kmp-sab-text { display: flex; flex-direction: column; gap: .1rem; min-width: 0; line-height: 1.25; }
.kmp-sab-druh { font-size: var(--pismo-drobne); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--sab-barva); }
.kmp-sab-nazev { font-size: .88rem; font-weight: 600; }
.kmp-sab-meta { font-size: var(--pismo-drobne); color: var(--seda); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kmp-sab-seznam { position: absolute; left: 0; right: 0; top: calc(100% + .35rem); z-index: 120; max-height: min(44rem, 75vh); overflow: auto;
  background: var(--karta); border: 1px solid var(--okraj); border-radius: var(--r-karta); box-shadow: var(--stin-vyrazny); padding: .4rem; }
.kmp-sab-seznam[hidden] { display: none; }
.kmp-sab-skupina { padding: .55rem .7rem .25rem; font-size: var(--pismo-drobne); font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--sab-barva); border-top: 1px solid var(--okraj-jemny); }
.kmp-sab-skupina:first-child { border-top: 0; padding-top: .3rem; }
.kmp-sab-polozka { display: flex; align-items: center; gap: .65rem; width: 100%; text-align: left; padding: .42rem .7rem .42rem .8rem;
  border: 0; border-left: 3px solid var(--sab-barva); border-radius: var(--r-prvek); background: none; color: var(--inkoust);
  font: inherit; cursor: pointer; margin: .1rem 0; }
.kmp-sab-polozka:hover, .kmp-sab-polozka:focus-visible { background: var(--plocha); outline: none; }
.kmp-sab-polozka[aria-selected="true"] { background: color-mix(in srgb, var(--sab-barva) 14%, var(--karta)); }
.kmp-sab-polozka[aria-selected="true"] .kmp-sab-nazev { color: var(--sab-barva); }
.kmp-sab-vyber.chyba .kmp-sab-tlacitko { border-color: var(--chyba); }
/* kategorie šablon (7. 9. 2026): druhý dropdown nad šablonou, stejný vzhled bez barevné tečky */
.kmp-kategorie-volba { border-bottom: 0; padding-bottom: 0; margin-bottom: .4rem; }
.kmp-kat .kmp-sab-druh { color: var(--seda); }
.kmp-kat-polozka { display: flex; align-items: center; gap: .65rem; width: 100%; text-align: left; padding: .5rem .8rem;
  background: none; border: 0; border-top: 1px solid var(--okraj); cursor: pointer; font: inherit; color: var(--inkoust); }
.kmp-kat-polozka:first-child { border-top: 0; }
.kmp-kat-polozka:hover, .kmp-kat-polozka:focus-visible { background: var(--plocha); outline: none; }
.kmp-kat-polozka[aria-selected="true"] { background: color-mix(in srgb, var(--tyrkys) 14%, var(--karta)); }
.kmp-kat-polozka[aria-selected="true"] .kmp-sab-nazev { color: var(--tyrkys-tmavy); }
.kmp-sab-skupina[hidden], .kmp-sab-polozka[hidden] { display: none; }
.kmp-sab-prazdne { padding: .8rem .9rem; color: var(--seda); font-size: .88rem; }
/* přehled šablon: filtr kategorií + karta správy kategorií */
.sab-kat-filtr { margin-bottom: var(--mezera-s); }
.sab-kat-karta { margin-top: var(--mezera-l); }
.sab-kat-tabulka input, .sab-kat-tabulka select { width: auto; min-width: 14rem; }
.sab-kat-form { display: inline; }
.sab-kat-nova { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-top: var(--mezera-m); }
.sab-kat-nova input, .sab-kat-nova select { width: auto; min-width: 14rem; }
.kmp-nahled-ramec { height: 38rem; }
.sab-kod { font-family: "JetBrains Mono", ui-monospace, monospace; font-size: .8rem; line-height: 1.45;
  white-space: pre; overflow: auto; min-height: 30rem; }
.sab-tagy { display: flex; flex-wrap: wrap; gap: .3rem; margin: .2rem 0 var(--mezera-s); }
.sab-nahled-ramec { height: calc(100vh - 16rem); min-height: 34rem; }

/* přílohy kampaně */
/* přílohy = spodní část karty Sdělení (6. 9. 2026) */
.kmp-prilohy { margin-top: var(--mezera-m); padding-top: var(--mezera-m); border-top: 1px solid var(--okraj); }
.kmp-prilohy-tab { margin: .2rem 0 var(--mezera-m); }
.kmp-priloha-form { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap; margin: 0; }
.kmp-form .kmp-priloha-form select, .kmp-form .kmp-priloha-form input { width: auto; max-width: 12rem; padding: .3rem .5rem; }
.kmp-form input[type="file"] { padding: .5rem .7rem; background: var(--plocha-jemna); border: 1px dashed var(--okraj-silny); cursor: pointer; }

/* strom Adresáře — sekce Kontakty uživatelů (osobní seznamy, 6. 9. 2026) */
.zk-osobni-muj { font-weight: 700; }
.zk-osobni-vztah { margin-left: .3rem; font-size: .6rem; padding: 0 .3rem; letter-spacing: .04em; flex: 0 0 auto; }
.zk-osobni-zamek { display: inline-flex; margin-left: .3rem; color: var(--seda); }
.zk-osobni-zamek svg { width: .85rem; height: .85rem; }
.zk-osobni-archiv > a { color: var(--seda); }
.zk-osobni-zalozit { margin: 0; }
.zk-osobni-zalozit-btn { width: 100%; background: none; border: 0; font: inherit; color: var(--tyrkys-tmavy); cursor: pointer; text-align: left; }
.zk-osobni-zalozit-btn:hover { background: var(--plocha); }
.zk-osobni-zalozit-admin { display: flex; align-items: center; gap: .6rem; margin: 0 0 var(--mezera-m); }
.zk-osobni-zalozit-admin select { width: auto; max-width: 22rem; margin: 0; }

/* tabulka Klientů — rychlý dropdown seznamů (6. 9. 2026) */
.zk-sez-drop-th, .zk-sez-drop-td, .tabulka th.zk-sez-drop-th, .tabulka td.zk-sez-drop-td { min-width: 6rem; text-align: right; padding-right: .9rem; }
.zk-sez-drop { display: inline-block; text-align: left; }
.zk-sez-drop-btn { display: inline-flex; align-items: center; gap: .45rem; padding: .22rem .5rem .22rem .3rem;
  border: 1px solid var(--okraj); border-radius: var(--r-prvek); background: var(--pole); color: var(--inkoust); font: inherit;
  font-size: .8rem; cursor: pointer; text-align: left; }
.zk-sez-drop-btn:hover, .zk-sez-drop-btn[aria-expanded="true"] { border-color: var(--tyrkys); }
.zk-sez-drop-btn.aktivni .zk-sez-drop-pocet { background: var(--tyrkys-tmavy); color: var(--akcent-text); }
.zk-sez-drop-pocet { flex: 0 0 auto; min-width: 1.4rem; padding: 0 .35rem; border-radius: 99px; background: var(--plocha); color: var(--seda);
  font-weight: 700; font-size: .72rem; text-align: center; line-height: 1.5; }
.zk-sez-drop-text { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--inkoust); }
.zk-sez-drop-btn:not(.aktivni) .zk-sez-drop-text { color: var(--seda); }
.zk-sez-drop-sipka { flex: 0 0 auto; width: .45rem; height: .45rem; border-right: 2px solid var(--seda); border-bottom: 2px solid var(--seda);
  transform: translateY(-.1rem) rotate(45deg); }
.zk-sez-drop-menu { position: fixed; z-index: 1300; min-width: 16rem; max-width: 22rem; max-height: min(44rem, 88vh); overflow: auto;
  background: var(--karta); border: 1px solid var(--okraj); border-radius: var(--r-karta); box-shadow: var(--stin-vyrazny); padding: .4rem; }
.zk-sez-drop-menu[hidden] { display: none; }
.zk-sez-drop-polozka { display: flex; align-items: center; gap: .5rem; padding: .32rem .55rem; border-radius: var(--r-prvek); cursor: pointer; font-size: .84rem; }
.zk-sez-drop-polozka:hover { background: var(--plocha); }
.zk-sez-drop-polozka input { width: auto; margin: 0; flex: 0 0 auto; }
.zk-sez-drop-polozka span { flex: 1 1 auto; min-width: 0; }
.zk-sez-drop-ro { color: var(--seda); cursor: default; }
.zk-sez-drop.uklada .zk-sez-drop-btn { opacity: .6; }

/* Adresář — tlačítko Nastavení seznamů v patě bočního panelu (6. 9. 2026) */
.bp-pata .zk-nastaveni-seznamu { width: 100%; justify-content: center; gap: .4rem; text-decoration: none; }
.bp-pata .zk-nastaveni-seznamu.aktivni { border-color: var(--tyrkys); color: var(--tyrkys-tmavy); }
.bp-pata .zk-nastaveni-seznamu .plus-strom-pocet { margin-left: .2rem; }

/* správa seznamů — sloupec Typ (štítky automatický / systémový / ruční / testovací) 6. 9. 2026 */
.tabulka th.zk-sez-typ, .tabulka td.zk-sez-typ { width: 11rem; white-space: nowrap; }
.zk-sez-typ-rucni { opacity: .7; }

/* správa seznamů — drag & drop pořadí (6. 9. 2026) */
.zk-dnd-uchop { display: inline-block; width: .55rem; height: .95rem; margin: 0 .55rem -.15rem 0; cursor: grab; opacity: .55;
  background-image: radial-gradient(circle, var(--seda) 1.2px, transparent 1.4px); background-size: .3rem .3rem; }
.zk-sez-dnd-radek:hover .zk-dnd-uchop { opacity: 1; }
.zk-sez-dnd-radek { cursor: grab; }
.zk-sez-dnd-tazeny { opacity: .45; }
.zk-sez-dnd-pred > td { box-shadow: inset 0 2px 0 var(--tyrkys); }
.zk-sez-dnd-po > td { box-shadow: inset 0 -2px 0 var(--tyrkys); }

/* modal Nový / Upravit seznam (6. 9. 2026) */
.ozn-modal.zk-sez-modal { width: min(44rem, 100%); }
.zk-sez-modal-blok { margin-bottom: .4rem; align-items: start; }
.zk-sez-modal-blok > .popisek { padding-top: .5rem; }
.zk-sez-modal-blok > span { display: flex; flex-direction: column; gap: .3rem; }
.zk-sez-modal-blok input { max-width: none; }
.zk-sez-druh { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; margin: .2rem 0 .4rem; }
.zk-sez-druh-karta { display: flex; flex-direction: column; gap: .35rem; padding: .7rem .85rem; border: 1px solid var(--okraj);
  border-radius: var(--r-prvek); background: var(--pole); cursor: pointer; }
.zk-sez-druh-karta:hover { border-color: var(--okraj-silny); }
.zk-sez-druh-karta:has(input:checked) { border-color: var(--tyrkys); box-shadow: var(--fokus-kruh); }
.zk-sez-druh-nazev { display: flex; align-items: center; gap: .45rem; font-weight: 640; }
.zk-sez-druh-nazev input { width: auto; margin: 0; }
.zk-sez-druh-nazev svg { width: 1rem; height: 1rem; color: var(--tyrkys-tmavy); }
.zk-sez-test { align-items: flex-start; margin: .2rem 0 .6rem; }
.zk-sez-test input { margin-top: .2rem; }
.zk-sez-modal-info { display: flex; gap: .4rem; align-items: flex-start; margin: .4rem 0 .2rem; }
.zk-sez-modal-info svg { width: .95rem; height: .95rem; flex: 0 0 auto; margin-top: .1rem; }
@media (max-width: 720px) { .zk-sez-druh { grid-template-columns: 1fr; } }
.zk-sez-drop-pata { position: sticky; bottom: -.4rem; margin: .3rem -.4rem -.4rem; padding: .45rem .55rem; display: flex; justify-content: flex-end;
  background: var(--karta); border-top: 1px solid var(--okraj); border-radius: 0 0 var(--r-karta) var(--r-karta); }
.zk-sez-drop-zavrit { display: inline-flex; align-items: center; justify-content: center; gap: .3rem; width: 100%; }
.zk-sez-drop-zavrit svg { width: .8rem; height: .8rem; }
.zk-sez-drop-hlava { top: -.4rem; bottom: auto; margin: -.4rem -.4rem .3rem; border-top: 0; border-bottom: 1px solid var(--okraj);
  border-radius: var(--r-karta) var(--r-karta) 0 0; }

/* globální stránkování (6. 9. 2026): uprostřed, číselné přechody */
/* ---- stránkování v3 (14. 9. 2026 večer, vzor The Gridcn pagination — Tron/HUD): monospace, kompaktní, hranaté,
   aktivní strana s rohovými značkami, počítadlo STRANA 05 / 14 ---- */
.strankovani { display: flex; flex-direction: column; align-items: center; gap: .45rem; margin: var(--mezera-l) 0 var(--mezera-m);
  font-family: var(--mono, ui-monospace, "JetBrains Mono", Menlo, monospace); font-variant-numeric: tabular-nums; }
.strankovani-radek { display: flex; align-items: stretch; gap: .6rem; flex-wrap: wrap; justify-content: center; }
.strankovani-skupina, .strankovani-cisla { display: inline-flex; align-items: stretch; gap: 0; }
.strankovani-cislo, .strankovani-krok { position: relative; display: inline-flex; align-items: center; justify-content: center; min-width: 2.2rem; height: 2.2rem;
  padding: 0 .55rem; border: 1px solid var(--okraj); background: var(--karta); color: var(--inkoust); font-size: .8rem; font-weight: 600; text-decoration: none;
  letter-spacing: .04em; margin-left: -1px; transition: border-color .12s, color .12s, background .12s; }
.strankovani-skupina > :first-child, .strankovani-cisla > :first-child { margin-left: 0; }
.strankovani-cislo:hover, .strankovani-krok:hover { border-color: var(--tyrkys); color: var(--tyrkys-tmavy, var(--tyrkys)); z-index: 1;
  background: color-mix(in srgb, var(--tyrkys) 8%, var(--karta)); }
.strankovani-cislo.aktivni { background: var(--tyrkys-tmavy, var(--tyrkys)); border-color: var(--tyrkys-tmavy, var(--tyrkys)); color: var(--akcent-text, #fff); z-index: 2;
  box-shadow: 0 0 0 1px var(--karta), 0 0 0 2px var(--tyrkys), 0 0 10px color-mix(in srgb, var(--tyrkys) 45%, transparent); }
/* rohové značky HUD u aktivní strany */
.strankovani-cislo.aktivni i { position: absolute; inset: -5px; pointer-events: none; }
.strankovani-cislo.aktivni i::before, .strankovani-cislo.aktivni i::after { content: ""; position: absolute; width: 6px; height: 6px; border: 2px solid var(--tyrkys); }
.strankovani-cislo.aktivni i::before { left: 0; top: 0; border-right: 0; border-bottom: 0; }
.strankovani-cislo.aktivni i::after { right: 0; bottom: 0; border-left: 0; border-top: 0; }
.strankovani-krok { font-size: .95rem; color: var(--seda); }
.strankovani-krok-text { gap: .35rem; padding: 0 .7rem; }
.strankovani-popisek { font-size: .66rem; text-transform: uppercase; letter-spacing: .12em; }
.strankovani-krok.neaktivni { opacity: .35; cursor: default; }
.strankovani-mezera { display: inline-flex; align-items: center; padding: 0 .35rem; color: var(--seda); letter-spacing: .1em; font-size: .7rem; border-top: 1px solid var(--okraj); border-bottom: 1px solid var(--okraj); }
.strankovani-info { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; justify-content: center; font-size: .74rem; color: var(--seda); letter-spacing: .05em; }
.strankovani-info b { color: var(--inkoust); font-weight: 700; }
.strankovani-info-popisek { text-transform: uppercase; font-size: .62rem; letter-spacing: .14em; }
.strankovani-lomitko { padding: 0 .25rem; opacity: .6; }
.strankovani-oddel { width: 1px; height: .9rem; background: var(--okraj); }
.strankovani-skok { display: inline-flex; align-items: center; gap: .4rem; margin: 0; }
.strankovani-skok input { width: 3.6rem; height: 1.7rem; margin: 0; padding: 0 .35rem; font: inherit; font-size: .78rem; text-align: center; border: 1px solid var(--okraj); background: var(--karta); color: var(--inkoust); }
.strankovani-skok input:focus { border-color: var(--tyrkys); outline: none; box-shadow: 0 0 0 2px color-mix(in srgb, var(--tyrkys) 30%, transparent); }
@media (max-width: 700px) { .strankovani-popisek { display: none; } .strankovani-krok-text { padding: 0 .55rem; } }
.strankovani-skok input { width: 4.2rem; padding: .1rem .3rem; font-size: .8rem; text-align: center; }

/* SMTP profil — dva sloupce: účet | limity (6. 9. 2026) */
.smtp-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: var(--mezera-l); align-items: stretch; }
.smtp-grid > .karta { margin-bottom: 0; }
@media (max-width: 1100px) { .smtp-grid { grid-template-columns: 1fr; } }
.smtp-karta > h2 { margin-top: 0; }
.smtp-predvolby { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: .35rem 1.3rem; align-items: center;
  padding-bottom: .9rem; margin-bottom: .9rem; border-bottom: 1px solid var(--okraj); }
.smtp-predvolby > .popisek { padding-top: .2rem; }
.smtp-predvolby-radek { display: flex; gap: .5rem; align-items: center; }
.smtp-predvolby-radek select { flex: 1 1 auto; max-width: none; margin: 0; }
.smtp-predvolby > small { grid-column: 2; }
.smtp-blok { grid-template-columns: 9rem minmax(0, 1fr); }
.smtp-blok > span { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.smtp-blok input, .smtp-blok select { max-width: none; margin: 0; }
.smtp-server { flex-direction: row !important; flex-wrap: wrap; align-items: center !important; gap: .6rem !important; }
.smtp-server > input { flex: 1 1 14rem; }
.smtp-port { display: inline-flex; align-items: center; gap: .4rem; }
.smtp-port input { width: 6rem; }
.smtp-server > .chyba { flex-basis: 100%; }
.smtp-prepinace { display: flex; flex-direction: column; gap: .5rem; margin-top: 1rem; padding-top: .9rem; border-top: 1px solid var(--okraj); }
.smtp-prepinace .check-radek { align-items: flex-start; }
.smtp-prepinace .check-radek input { margin-top: .2rem; }
.smtp-strop { margin: 0 0 .9rem; }
.smtp-akce { display: flex; gap: .5rem; margin-top: var(--mezera-m); }
.smtp-doplneno { border-color: var(--tyrkys) !important; box-shadow: var(--fokus-kruh); }

/* ---- Mailing: detail kampaně (přepracováno 6. 9. 2026) ---- */
.kmp-det-podtitul { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .6rem; }
.kmp-det-podtitul .kmp-typ { color: var(--inkoust); }
.kmp-souhrn .kmp-kpi .kmp-lista { display: block; width: 100%; max-width: none; height: .32rem; margin: .35rem 0 .1rem; }
.kmp-kpi-radek { display: flex; align-items: baseline; gap: .45rem; }
.kmp-kpi-cislo small { margin-left: .5rem; padding-left: .5rem; border-left: 1px solid var(--okraj); font-size: .92rem; font-weight: 600; color: var(--seda); }
.kmp-hero-form { display: inline-flex; gap: .4rem; }
.kmp-hero-form .hero-drop-tlacitko { font: inherit; cursor: pointer; }
.hero-drop-tlacitko.kmp-hero-hlavni { background: var(--tyrkys); border-color: var(--tyrkys); color: #0b1b1c; font-weight: 640; }
.hero-drop-tlacitko.kmp-hero-hlavni:hover { background: var(--tyrkys-tmavy); border-color: var(--tyrkys-tmavy); color: var(--akcent-text); }
.hero-drop-tlacitko.kmp-hero-nebezpecny { color: var(--chyba); }
.kmp-osa { list-style: none; margin: .2rem 0 .8rem; padding: 0; }
.kmp-osa li { position: relative; padding: 0 0 .75rem 1.45rem; }
.kmp-osa > li::before { content: ""; position: absolute; left: .32rem; top: .42rem; width: .62rem; height: .62rem; border-radius: 50% !important;
  background: var(--okraj); box-shadow: 0 0 0 2px var(--karta); }
.kmp-osa li::after { content: ""; position: absolute; left: .61rem; top: 1.05rem; bottom: -.1rem; width: 2px; background: var(--okraj); }
.kmp-osa li:last-child::after { display: none; }
.kmp-osa li.hotovo::before { background: var(--tyrkys); }
.kmp-osa li.aktivni::before { background: var(--tyrkys); animation: prio-puls 2.2s ease-in-out infinite; }
.kmp-osa li.cekani::before { background: var(--varovani); }
.kmp-osa li.chyba::before { background: var(--chyba); }
.kmp-osa-nazev { font-weight: 600; color: var(--inkoust); }
.kmp-osa-pozn { display: block; font-size: .78rem; color: var(--seda); }
.kmp-osa li.budouci .kmp-osa-nazev { color: var(--seda); font-weight: 500; }
.kmp-test-form { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin-top: .6rem; }
.kmp-test-form input { max-width: 16rem; }
.kmp-det-tabulky { display: grid; grid-template-columns: 1fr 1fr; gap: var(--mezera-l); align-items: start; }
@media (max-width: 1100px) { .kmp-det-tabulky { grid-template-columns: 1fr; } }
.kmp-det-tabulky .karta { margin: 0; }
/* výsledek doručení je poslední položkou mřížky detailu — pod oběma sloupci (9. 9. 2026) */
.kmp-det-grid > .kmp-det-vysledek { grid-column: 1 / -1; min-width: 0; }
.kmp-det-grid > .kmp-det-vysledek > h2 { margin-top: 0; }
.kmp-nahled-ramec-vysoky { height: 34rem; }
/* detail kampaně na velkých monitorech: normální velikost písma, větší souhrn, náhled e-mailu využije výšku okna */
.kmp-det-grid { font-size: .92rem; }
.kmp-det-grid .kmp-karta > h2 { font-size: 1rem; }
.kmp-det-grid .kmp-udaje { gap: .5rem 1.2rem; grid-template-columns: 10.5rem minmax(0, 1fr); }
.kmp-det-grid .kmp-osa > li { padding-bottom: 1rem; }
.kmp-det-grid .kmp-osa-pozn { font-size: .84rem; }
.kmp-det-grid .kmp-chyby, .kmp-det-grid .drobky { font-size: .82rem; }
.kmp-det-souhrn .kmp-kpi { padding: 1rem 1.2rem .9rem; gap: .2rem; }
.kmp-det-souhrn .kmp-kpi-cislo { font-size: 2.1rem; }
.kmp-det-souhrn .kmp-kpi-popis { font-size: .95rem; }
.kmp-det-souhrn .kmp-kpi-pozn { font-size: .82rem; }
.kmp-det-grid .kmp-nahled-ramec-vysoky { height: max(36rem, calc(100vh - 33rem)); }
/* náhled vpravo (jako v Nové kampani) přes celou výšku řádku; levý sloupec dorovná poslední karta */
/* levý sloupec (9. 9. 2026): Průběh přirozená výška, karta Příjemci dorovná výšku náhledu a zbytek
   vyplní rolovací tabulka adresátů — dřív se obě karty roztahovaly a na 3072 px v každé zbývalo ~480 px prázdna */
.kmp-det-grid .kmp-sloupec > .karta { flex: 0 0 auto; }
.kmp-det-grid .kmp-sloupec > .karta.kmp-karta-nahled { flex: 1 1 auto; }   /* náhled dorovná levý sloupec, je-li vyšší (1920 px) */
.kmp-det-grid .kmp-sloupec > .karta.kmp-karta-prijemci { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
.kmp-adresati { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; margin-top: .9rem; }
.kmp-adresati-nadpis { margin: 0 0 .35rem; }
.kmp-adresati-rol { flex: 1 1 0; height: 0; min-height: 12rem; overflow: auto; border: 1px solid var(--okraj-jemny); border-radius: var(--r-karta); }
.kmp-adresati-rol .tabulka { margin: 0; border: 0; border-radius: 0; box-shadow: none; overflow: visible; }
.kmp-adresati-rol .tabulka th { top: 0; }
.kmp-adresati-tab td { padding: .3rem .6rem; }
.kmp-adr-email { font-variant-numeric: tabular-nums; }
.kmp-adr { display: inline-block; padding: .04rem .45rem; border-radius: 999px; font-size: .7rem; font-weight: 620;
  border: 1px solid var(--okraj); color: var(--seda); white-space: nowrap; }
.kmp-adr-dostane { color: var(--inkoust); }
.kmp-adr-odeslano { color: var(--ok-text); border-color: var(--ok-okraj); background: var(--ok-pozadi); }
.kmp-adr-otevreno, .kmp-adr-klik { color: var(--tyrkys-tmavy); border-color: var(--akcent-okraj); background: var(--akcent-pozadi); }
.kmp-adr-fronta { color: var(--varovani); border-color: var(--varovani-okraj); background: var(--varovani-pozadi); }
.kmp-adr-selhalo, .kmp-adr-bounce { color: var(--chyba); border-color: var(--chyba); }
.kmp-det-grid .kmp-karta-nahled { display: flex; flex-direction: column; }
.kmp-det-grid .kmp-karta-nahled .kmp-nahled-ramec-vysoky { flex: 1 1 auto; height: auto; min-height: max(36rem, calc(100vh - 33rem)); }
}
.kmp-smazat-form { display: inline-block; margin-left: .3rem; }
.kmp-smazat { color: var(--chyba); padding: .2rem .5rem; min-height: 0; line-height: 1.4; }
.kmp-smazat:hover { border-color: var(--chyba); }
.kmp-smazat svg { width: .95rem; height: .95rem; vertical-align: -.15rem; }
.kmp-kampane .kmp-plan-akce { width: 3rem; }

/* nastavení hesla (vynucené i bootstrap) — velká karta na středu jako ověřovací kód (6. 9. 2026) */
.heslo-box { width: min(94vw, 40rem); padding: 2.8rem 3.2rem 2.4rem; text-align: center; }
.heslo-box h1.kod-nadpis { letter-spacing: normal; text-indent: 0; color: var(--inkoust); }
.heslo-box .logo { margin: 0 auto .8rem; }
.heslo-box .kod-nadpis { font-size: 1.6rem; }
.heslo-box .kod-info { font-size: 1.02rem; margin-bottom: 1.5rem; }
.heslo-form { text-align: left; }
.heslo-form label { font-size: .92rem; font-weight: 600; margin: .9rem 0 .2rem; }
.heslo-form input { width: 100%; font-size: 1.05rem; padding: .7rem .85rem; margin-top: .3rem; }
.heslo-form .heslo-obal { max-width: 100%; }  /* obal oka jinak drží globální strop 24 rem → pole užší než karta */
.heslo-chyba { margin: .3rem 0 0; font-size: .86rem; }
.heslo-pravidla { margin: 1rem 0 0; padding-left: 1.2rem; color: var(--seda); font-size: .88rem; line-height: 1.6; }
.heslo-pravidla strong { color: var(--inkoust); }
.heslo-box .btn { margin-top: 1.3rem; padding: .75rem 1rem; font-size: 1rem; }
.heslo-odhlasit { margin-top: .4rem; }
.heslo-odhlasit .kod-zpet { background: none; border: 0; cursor: pointer; font: inherit; font-size: .86rem; }

/* Připravené e-maily (8. 9. 2026): tabulka vzorů v přehledu kampaní — akce
   Rozeslat / Upravit / Smazat v jednom řádku */
.kmp-kampane.kmp-pripravene .kmp-plan-akce { width: auto; }
.kmp-rozeslat-form { display: inline-block; }
.kmp-pripravene td.kmp-plan-akce .btn.btn-maly { padding: .2rem .7rem; font-size: .78rem; min-height: 0; line-height: 1.4; }
.kmp-filtr-oddelovac { width: 1px; align-self: stretch; background: var(--okraj); margin: .15rem .5rem; }
/* karta Rozeslání u připraveného e-mailu: tlačítka v jedné řadě vlevo, popisky pod nimi */
/* (8. 9. 2026) vzor používá stejnou mřížku akcí .kmp-akce-mrizka jako kampaň */
/* rozsah adresátů u členících seznamů (10. 9. 2026) — dvě volby pod skupinou klientů;
   selektory přebíjejí obecná pravidla .linkovy-form pro label/input */
.kmp-form .kmp-rozsah { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1.6rem;
  margin: .5rem 0 1.1rem; padding: .55rem .8rem; border: 1px solid var(--okraj); border-radius: 8px;
  background: var(--plocha-jemna, rgba(255,255,255,.03)); }
.kmp-form .kmp-rozsah .kmp-rozsah-popis { font-size: .8rem; color: var(--inkoust); opacity: .7; margin-right: .2rem; white-space: nowrap; }
.kmp-form .kmp-rozsah .kmp-rozsah-volba { display: inline-flex; align-items: center; gap: .5rem; width: auto;
  min-height: 0; margin: 0; padding: 0; font-size: .86rem; line-height: 1.3; cursor: pointer; white-space: nowrap;
  color: var(--inkoust); opacity: .9; text-transform: none; letter-spacing: 0; }
.kmp-form .kmp-rozsah .kmp-rozsah-volba:hover { opacity: 1; }
.kmp-form .kmp-rozsah .kmp-rozsah-volba input[type=radio] { width: 1rem; height: 1rem; margin: 0; flex: 0 0 auto; }
.kmp-form .kmp-rozsah .kmp-rozsah-volba > span { display: inline; }

/* zaškrtávátko ve filtrační liště (10. 9. 2026) — bez inline stylů, jednotně se selecty */
.filtr-lista .filtr-zaskrt { display: inline-flex; align-items: center; gap: .35rem; margin: 0;
  font-size: .86rem; color: var(--inkoust); cursor: pointer; }
.filtr-lista .filtr-zaskrt input[type="checkbox"] { width: 1rem; height: 1rem; margin: 0; flex: 0 0 auto; }
/* uvítací průvodce: novinky z changelogu nasazení (10. 9. 2026) */

/* synchronizace kalendáře z externího zdroje (11. 9. 2026) */
.kal-sync-telo { display: flex; flex-direction: column; gap: 1rem; }
.kal-sync-tabulka td, .kal-sync-tabulka th { font-size: .82rem; vertical-align: top; }
.kal-sync-tabulka tr.neaktivni td { opacity: .6; }
/* od 21. 9. 2026 jsou v řádku čtyři akce (i „Převzít do portálu") a URL
   zdroje je jeden dlouhý nelámatelný řetězec — bez pevného rozvržení
   tabulka přetékala mimo modal a tlačítka byla useknutá */
.kal-sync-tabulka { table-layout: fixed; }
.kal-sync-tabulka th, .kal-sync-tabulka td { overflow-wrap: anywhere; }
.kal-sync-tabulka th:nth-child(3) { width: 11%; }
.kal-sync-tabulka th:nth-child(4) { width: 13%; }
.kal-sync-tabulka th:nth-child(6) { width: 22%; }
.kal-sync-tabulka td:nth-child(4) { overflow-wrap: normal; }
.kal-sync-tabulka .tabulka-akce-vpravo { white-space: normal; }
.kal-sync-tabulka .tabulka-akce-vpravo .btn { white-space: nowrap;
  margin: 0 0 .25rem .25rem; }
.kal-sync-tabulka td:first-child { min-width: 11rem; }
.kal-sync-form { border-top: 1px solid var(--okraj); padding-top: .6rem; }

/* ===== Scrollbary portálu (13. 9. 2026, přání uživatele): tenké, hranaté, v barvách motivu — systémové
   (široké světlé) rušily vzhled tmavého motivu vedle karet (.bp-hlavni, textarea, editor, seznamy) ===== */
* { scrollbar-width: thin; scrollbar-color: var(--okraj-silny, #3a405a) transparent; }
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: var(--okraj-silny, #3a405a); border-radius: 0; border: 2px solid transparent; background-clip: padding-box; }
*::-webkit-scrollbar-thumb:hover { background: var(--seda); background-clip: padding-box; }
*::-webkit-scrollbar-corner { background: transparent; }

/* ===== Bohaté tooltipy (13. 9. 2026, vzor OriginUI „Tooltip with title and icon“; static/tooltip.js) =====
   tmavý panel s rámečkem, ikona vlevo (60 %), titulek 13 px medium, popis 12 px tlumený, max. 17,5 rem, bez šipky */
.tip-panel { position: absolute; z-index: 1200; max-width: 17.5rem; display: flex; gap: .75rem; align-items: flex-start;
  padding: .75rem .75rem; background: #1b1f2e; color: #e8ebf3; border: 1px solid #343a52; border-radius: 0;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .35); font-size: .75rem; line-height: 1.45; pointer-events: none;
  opacity: 0; transform: scale(.95) translateY(2px); transition: opacity .12s ease, transform .12s ease; }
.tip-panel[data-strana="dole"] { transform: scale(.95) translateY(-2px); }
.tip-panel.tip-videt { opacity: 1; transform: scale(1) translateY(0); }
.tip-ikona { flex: 0 0 auto; margin-top: .1rem; opacity: .6; display: inline-flex; }
.tip-ikona svg { width: 1rem; height: 1rem; }
.tip-telo { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.tip-titulek { font-size: .8125rem; font-weight: 500; color: #f4f6fb; }
.tip-popis { font-size: .75rem; color: #a9b0c4; }
.tip-panel.tip-jen-popis .tip-popis { color: #e8ebf3; }
html[data-theme="svetly"] .tip-panel { background: #1f2433; border-color: #2f3650; }

/* ===== Toast UI editor — sdílené doplňky (13. 9. 2026; static/toastui_doplnky.js): hledání v obsahu, Zpět/Vpřed ===== */
/* výška editoru Toast UI (22. 9. 2026, přání uživatele): základní textové pole je
   o 3 řádky (4.5rem, při kořenovém písmu portálu 17 px tedy 76,5 px) vyšší.
   JEDINÉ místo, kde se ta přidaná výška drží —
   používá ji poptavky.css (konverzace poptávek i zakázek) a firma.js (OP a RŘ).
   Editory na plnou výšku panelu (Poznámky, kolaborace) ji nepotřebují. */
:root { --editor-radky-navic: 4.5rem; }
.toastui-editor-defaultUI-toolbar { display: flex; align-items: center; flex-wrap: wrap; padding: 0 10px; }
/* menší ikony lišty (sprite škáluje transform, ne rozměr — background-position by se rozjel) + těsnější rozestupy; shodně v obou editorech */
.toastui-editor-defaultUI-toolbar button { transform: scale(.76); transform-origin: center; margin: 5px -1px; }
.toastui-editor-toolbar-divider { margin: 12px 2px; }
.pz-hledej { margin-left: auto; order: 100; display: inline-flex; align-items: center; gap: .4rem; padding-right: 0; flex-direction: row-reverse; }   /* pole u pravého kraje (order = vždy poslední, Toast UI skupiny dokresluje později), počet vlevo */
.pz-hledej input { width: 11rem; height: 26px; font-size: .78rem; padding: 0 .6rem; margin: 0; max-width: none; border: 1px solid var(--okraj);
  background: var(--karta); color: var(--inkoust); border-radius: 0 !important; }
.pz-hledej input:focus { outline: none; border-color: var(--tyrkys-tmavy); box-shadow: none; }
.pz-hledej-pocet { font-size: .72rem; min-width: 1.6rem; }
::highlight(pz-hledani) { background-color: rgba(85, 208, 212, .45); }   /* v ::highlight() platí jen background-color, ne zkratka */
.toastui-editor-defaultUI-toolbar button.pz-krok { background-image: none; font-size: 15px; font-weight: 700; color: var(--inkoust); line-height: 30px; }
.toastui-editor-defaultUI-toolbar button.pz-krok:hover { color: var(--tyrkys-tmavy); }
/* vlastní tlačítka podtržení (U) a zvýraznění (ab) — sdílená lišta obou editorů */
.toastui-editor-toolbar-icons.pt-tb { background-image: none !important; font: 700 .8rem/1 var(--pismo); color: var(--inkoust); display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin: 0; }
.toastui-editor-toolbar-icons.pt-tb-u { text-decoration: underline; text-underline-offset: 2px; }
.toastui-editor-toolbar-icons.pt-tb-mark { background: #ffe66d !important; color: #1b1f2e; font-weight: 600; padding: 0 3px; width: auto; min-width: 26px; height: 20px; align-self: center; }
.toastui-editor-contents mark { background: #ffe66d; color: #1b1f2e; padding: 0 .15em; }
/* plovoucí tlačítko „Zkopírovat kód“ u bloků kódu (editor, prohlížeč, zprávy) — toastui_doplnky.js */
.pz-kopirovat { position: fixed; z-index: 95; display: inline-flex; align-items: center; gap: .3rem; padding: .15rem .5rem; font-size: .72rem;
  background: var(--karta); color: var(--inkoust); border: 1px solid var(--okraj); box-shadow: var(--stin-1); cursor: pointer; }
.pz-kopirovat svg { width: .85rem; height: .85rem; }
.pz-kopirovat:hover { border-color: var(--tyrkys); color: var(--tyrkys-tmavy); }
.pz-kopirovat.pz-kopirovat-ok { color: var(--ok); border-color: var(--ok); }

/* ===== profil účtu → karta AI asistent (14. 9. 2026) ===== */
.ua-stav { display: flex; flex-wrap: wrap; gap: .45rem; margin: 0 0 .9rem; }
.ua-stav a.stitek { text-decoration: none; }
.ua-zdroje-tab td { vertical-align: middle; }
.ua-zdroje-tab select { min-width: 11rem; }
.ua-citlivost-interni { border-color: color-mix(in srgb, var(--stav-k-potvrzeni, #d98c1f) 55%, transparent); color: var(--stav-k-potvrzeni, #b8751a); }
.ua-citlivost-duverne { border-color: color-mix(in srgb, var(--chyba) 55%, transparent); color: var(--chyba); }
.ua-vazba-chybi { color: var(--chyba); display: inline-flex; align-items: center; gap: .3rem; }
.ua-vazba-chybi svg { width: .85rem; height: .85rem; }
.ua-form textarea { width: 100%; max-width: 100%; box-sizing: border-box; font: inherit; font-size: .84rem; line-height: 1.45; resize: vertical; }
.ua-statistika { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ua-statistika .cislo-text { font-family: inherit; font-size: .95rem; font-weight: 600; letter-spacing: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 1400px) { .ua-statistika { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---- Projekty v3 (14. 9. 2026 večer): přehled = time management, pracovní plocha (prjw-*) ---- */
.prj-tabulka .prj-col-ukoly { width: 12rem; } .prj-tabulka .prj-col-cas { width: 11rem; } .prj-tabulka .prj-col-dok { width: 5rem; }
.prj-muj { font-size: .68rem; margin-left: .3rem; }
.prj-po-terminu { font-size: .68rem; color: var(--chyba); border-color: var(--chyba); margin-left: .3rem; }
.prjw-panel .plus-strom-pocet { min-width: 1.4rem; text-align: right; }
.prjw-kotvy a, .prjw-projekty a { text-decoration: none; }
.prjw-pozn { margin: .4rem 0 0; }
.prjw-mriz { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .8rem; align-items: start; margin-top: .8rem; }
@media (max-width: 1400px) { .prjw-mriz { grid-template-columns: 1fr; } }
.prjw-sloupec { display: flex; flex-direction: column; gap: .8rem; min-width: 0; }
.prjw-karta h2 { display: flex; justify-content: space-between; align-items: center; gap: .6rem; }
.prjw-karta h2 small { font-weight: 400; color: var(--seda); font-size: .78rem; margin-left: .4rem; }
.prjw-prazdno { margin: .3rem 0 0; }
.prjw-ukol-form { display: grid; grid-template-columns: minmax(0, 1fr) 9.5rem 11rem 7.5rem auto; gap: .4rem; align-items: center; margin-bottom: .6rem; }
.prjw-ukol-form input, .prjw-ukol-form select { max-width: none; width: 100%; margin: 0; }
@media (max-width: 1100px) { .prjw-ukol-form { grid-template-columns: 1fr 1fr; } }
.prjw-ukoly { list-style: none; margin: 0; padding: 0; }
.prjw-ukol { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; gap: .5rem; align-items: center; padding: .3rem .2rem; border-bottom: 1px solid var(--okraj); }
.prjw-ukol:last-child { border-bottom: 0; }
.prjw-ukol:hover { background: var(--plocha-jemna); }
.prjw-ukol-nazev { text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.prjw-muj .prjw-ukol-nazev { font-weight: 620; }
.prjw-hotovy .prjw-ukol-nazev { text-decoration: line-through; color: var(--seda); }
.prjw-ukol-meta { white-space: nowrap; }
.prjw-odskrt { width: 1.6rem; height: 1.6rem; border: 1px solid var(--okraj-silny, var(--okraj)); background: var(--karta); color: var(--seda); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; padding: 0; }
.prjw-odskrt svg { width: .95rem; height: .95rem; opacity: .35; }
.prjw-odskrt:hover { border-color: var(--tyrkys); color: var(--tyrkys); } .prjw-odskrt:hover svg { opacity: 1; }
.prjw-priorita-urgentni { color: var(--chyba); border-color: var(--chyba); font-size: .68rem; }
.prjw-priorita-vysoka { color: var(--oranzova, #d98c1f); border-color: var(--oranzova, #d98c1f); font-size: .68rem; }
.prjw-hotove { margin-top: .5rem; } .prjw-hotove summary { cursor: pointer; }
.prjw-denik-form { display: flex; flex-direction: column; gap: .4rem; margin-bottom: .7rem; }
.prjw-denik-radek { display: flex; gap: .4rem; align-items: center; }
.prjw-denik-radek select { width: auto; margin: 0; }
.prjw-denik-form textarea { max-width: none; width: 100%; }
.prjw-zaznamy { display: flex; flex-direction: column; gap: .5rem; }
.prjw-zaznam { border-left: 3px solid var(--okraj-silny, var(--okraj)); padding: .35rem .7rem; background: var(--plocha-jemna); }
.prjw-zaznam header { display: flex; align-items: center; gap: .5rem; font-size: .84rem; }
.prjw-zaznam header .prjw-zaznam-smazat { margin-left: auto; }
.prjw-zaznam-telo { margin-top: .25rem; font-size: .92rem; } .prjw-zaznam-telo p:last-child { margin-bottom: 0; }
.prjw-druh { font-size: .68rem; }
.prjw-zaznam-rozhodnuti { border-left-color: var(--tyrkys); }
.prjw-zaznam-milnik { border-left-color: #3fbf6f; }
.prjw-zaznam-problem { border-left-color: var(--chyba); }
.prjw-stranky { margin: 0; padding-left: 1.1rem; } .prjw-stranky li { padding: .12rem 0; }
.prjw-poznamky { margin-top: .3rem; }
.prjw-wiki-form textarea { max-width: none; width: 100%; font-family: var(--mono); font-size: .86rem; }

/* kalendář: štítek filtru „jen moje události“ z dlaždice dashboardu (14. 9. 2026 večer) */
.kal-jen-moje { display: inline-block; margin-left: .6rem; padding: .15rem .55rem; font-size: .74rem; font-weight: 600; text-decoration: none;
  color: var(--tyrkys-tmavy, var(--tyrkys)); border: 1px solid var(--tyrkys); background: color-mix(in srgb, var(--tyrkys) 10%, transparent); vertical-align: middle; }
.kal-jen-moje:hover { background: color-mix(in srgb, var(--tyrkys) 22%, transparent); }

/* číselné sloupce tabulek (14. 9. 2026 večer, přání uživatele): částky, množství a procenta vpravo, tabulkové číslice */
.tabulka th.num, .tabulka td.num, .tabulka th.pt-num, .tabulka td.pt-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ---- fotogalerie — velký modal s ovládáním galerie (galerie.js, 14. 9. 2026 večer) ---- */
.galerie-modal { width: min(120rem, 96vw); max-width: 96vw; height: 94vh; max-height: 94vh; background: #10141f; color: #e6e9f2; }
.galerie-modal .ozn-hlava { flex-wrap: nowrap; border-bottom-color: rgba(255,255,255,.12); }
.galerie-titulek { display: inline-flex; align-items: center; gap: .5rem; min-width: 0; }
.galerie-pocitadlo { font-family: var(--mono, ui-monospace, monospace); font-size: .8rem; color: var(--tyrkys); font-variant-numeric: tabular-nums; }
.galerie-nazev { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.galerie-akce { display: inline-flex; gap: .4rem; }   /* zarovnání vpravo řeší .hlava-akce */
.galerie-telo { position: relative; flex: 1; min-height: 0; display: flex; align-items: center; justify-content: center; padding: .6rem; }
.galerie-telo img { max-width: 100%; max-height: 100%; object-fit: contain; cursor: pointer; user-select: none; box-shadow: 0 10px 40px rgba(0,0,0,.6); }
.galerie-sip { position: absolute; top: 50%; transform: translateY(-50%); width: 3rem; height: 3rem; border: 1px solid rgba(255,255,255,.25); background: rgba(16,20,31,.75); color: #fff; font-size: 2rem; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.galerie-sip:hover { background: var(--tyrkys); border-color: var(--tyrkys); color: #10141f; }
.galerie-pred { left: 1rem; } .galerie-dal { right: 1rem; }
.galerie-pas { display: flex; gap: .35rem; overflow-x: auto; padding: .45rem .8rem .7rem; border-top: 1px solid rgba(255,255,255,.12); scrollbar-width: thin; }
.galerie-pas button { flex: none; width: 5.4rem; height: 4rem; padding: 0; border: 2px solid transparent; background: #000; cursor: pointer; opacity: .55; }
.galerie-pas button img { width: 100%; height: 100%; object-fit: cover; display: block; }
.galerie-pas button:hover, .galerie-pas button.aktivni { opacity: 1; border-color: var(--tyrkys); }

/* ---- šifrované údaje v textech (17. 9. 2026, vault/tajemstvi.py + static/tajemstvi.js) ---- */
.tj-chip { display: inline-flex; align-items: center; gap: .25rem; padding: .05rem .5rem .05rem .4rem; border: 1px solid var(--okraj-silny, var(--okraj)); background: var(--plocha); color: var(--inkoust); font: inherit; font-size: .84em; line-height: 1.5; cursor: pointer; vertical-align: baseline; white-space: nowrap; max-width: 100%; }
.tj-chip:hover { border-color: var(--tyrkys); color: var(--tyrkys); } .tj-chip-nacitam { opacity: .6; cursor: progress; }
.tj-chip-popisek { overflow: hidden; text-overflow: ellipsis; }
.tj-bublina { position: absolute; z-index: 120; min-width: 18rem; max-width: 32rem; padding: .6rem .8rem; background: var(--vrstva); border: 1px solid var(--okraj-silny, var(--okraj)); box-shadow: 0 12px 30px rgba(0,0,0,.35); font-size: .84rem; }
.tj-bublina-hlava { display: flex; align-items: center; gap: .6rem; margin-bottom: .4rem; } .tj-bublina-hlava strong { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.tj-bublina-zavrit { border: 0; background: transparent; color: var(--seda); font-size: 1.1rem; cursor: pointer; padding: 0 .2rem; }
.tj-hodnota { display: block; padding: .45rem .6rem; background: var(--plocha); border: 1px dashed var(--okraj); font-family: var(--mono); font-size: .9rem; white-space: pre-wrap; word-break: break-all; user-select: all; }
.tj-bublina-pata { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin-top: .45rem; }
.kolab-tajemstvi { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; padding: .3rem .6rem; border-bottom: 1px solid var(--okraj); background: var(--plocha-jemna, var(--plocha)); font-size: .82rem; }
/* tlačítko zámku v liště editoru: ikona jako pozadí (tlačítka Toast UI nelze přepisovat innerHTML) */
.toastui-editor-toolbar-icons.pt-tb-tajemstvi { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23cbd5e1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") center / 17px 17px no-repeat !important; }
[data-theme="svetly"] .toastui-editor-toolbar-icons.pt-tb-tajemstvi { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23374151' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") !important; }
.tj-chip svg { width: .95em; height: .95em; flex: none; color: var(--tyrkys-tmavy, var(--tyrkys)); }

/* 17. 9. 2026 (Firemní profil → SLA): obal `overflow-x:auto` kolem tabulky je scroll kontejner, takže
   lepivá hlavička (.tabulka th, top: --hlavicka-vyska) se v něm lepila o výšku hlavičky sekce POD horní
   okraj tabulky a překrývala řádky. V takovém obalu je odsazení 0 (hlavička sedí na svém místě). */
[style*="overflow-x:auto"], [style*="overflow-x: auto"], .tabulka-posuv { --hlavicka-vyska: 0px; }
.tabulka-posuv { overflow-x: auto; }

/* Denní souhrn (19. 9. 2026) — sdílená karta souhrn/_nastaveni.html:
   chipy dnů v týdnu, mřížka skupin sekcí, tabulka logu odeslání a modal náhledu. */
.souhrn-karta > h2 { flex-wrap: wrap; row-gap: .35rem; }
.souhrn-karta > h2 .pt-h2-obsah { display: inline-flex; flex-direction: row; align-items: center; gap: .4rem; min-width: 0; }
.souhrn-hlavni { margin: .1rem 0 .3rem; }
.souhrn-plne { margin-top: .9rem; }
.souhrn-cas { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.souhrn-karta .souhrn-cas input[type="time"] { width: 7rem; flex: none; }
.souhrn-dny { display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; }
.souhrn-den { position: relative; display: inline-flex; align-items: center; justify-content: center;
  min-width: 2.6rem; height: 1.9rem; padding: 0 .6rem; border: 1px solid var(--okraj); border-radius: var(--r-prvek);
  background: var(--plocha); color: var(--seda); font-size: .8rem; font-weight: 600; cursor: pointer; user-select: none; }
.souhrn-den:hover { border-color: var(--tyrkys); color: var(--tyrkys-tmavy); }
.souhrn-den input { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; }
.souhrn-den:has(input:checked) { background: var(--tyrkys-tmavy); border-color: var(--tyrkys-tmavy); color: var(--akcent-text); }
.souhrn-den:has(input:focus-visible) { outline: 2px solid var(--tyrkys); outline-offset: 2px; }
.souhrn-skupiny { display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
  gap: .75rem 1.2rem; align-items: start; }
.souhrn-skupina { border: 1px solid var(--okraj); border-radius: var(--r-prvek); padding: .5rem .75rem .6rem; margin: 0; min-width: 0; }
.souhrn-skupina legend { font-weight: 600; padding: 0 .3rem; color: var(--seda); font-size: .78rem;
  text-transform: uppercase; letter-spacing: .04em; }
/* volba sekce: zaškrtávátko vlevo, název i vysvětlivka v jednom textovém sloupci
   (bez obalového <span> by flex rozdělil název a popis do dvou úzkých sloupců) */
.souhrn-volba { align-items: flex-start; padding: .14rem 0; }
.souhrn-volba > input { flex: none; margin-top: .22rem; }
.souhrn-volba > span { min-width: 0; line-height: 1.35; }
/* skupina Systém je nejdelší (typy oznámení) — přes celou šířku a typy do sloupců,
   jinak by její výška roztáhla řádek mřížky a pod krátkými skupinami zela díra */
.souhrn-skupina-system { grid-column: 1 / -1; }
.souhrn-typy { margin: .3rem 0 0 1.4rem; columns: 15rem; column-gap: 1.5rem; }
.souhrn-typ-skupina { break-inside: avoid; margin-bottom: .45rem; }
.souhrn-typy-nadpis { margin: 0 0 .1rem; font-weight: 600; }
.souhrn-log { margin-top: .3rem; }
.souhrn-log td, .souhrn-log th { padding: .2rem .5rem; font-size: .82rem; }
.souhrn-seznam { margin: 0 0 .6rem; padding-left: 1.1rem; }
/* náhled souhrnu v4/v5b (20. 9. 2026) = stejná struktura jako e-mail: nadpis bez pozadí
   s linkou pod celou šířkou a skloňovaným počtem vpravo, skupiny verzálkami ve firemní barvě */
.souhrn-nahled .souhrn-nadpis { display: flex; align-items: baseline; justify-content: space-between;
  gap: .6rem; margin: 1rem 0 .45rem; padding-bottom: .22rem; border-bottom: 2px solid var(--navy);
  font-size: 1.02rem; font-weight: 700; letter-spacing: .02em; color: var(--inkoust); }
.souhrn-nahled .souhrn-nadpis:first-child { margin-top: 0; }
.souhrn-nahled .souhrn-nadpis > span { font-size: var(--pismo-drobne); font-weight: 400;
  color: var(--seda); white-space: nowrap; }
.souhrn-nahled .souhrn-nadpis-pozor { color: var(--stav-storno, #C75B5B); border-bottom-color: var(--stav-storno, #C75B5B); }
/* v5b (20. 9. 2026): skupiny výrazněji — verzálky ve firemní barvě s linkou v téže
   barvě místo drobné šedé (bez pozadí, barevný pruh uživatel odmítl); první skupina
   v kartě má větší horní mezeru, aby se nelepila na linku nadpisu */
.souhrn-nahled .souhrn-skupina-nadpis { margin: .75rem 0 .25rem; padding-bottom: .15rem;
  border-bottom: 1px solid var(--navy); font-size: var(--pismo-seznam); font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--navy); }
.souhrn-nahled .souhrn-nadpis + .souhrn-skupina-nadpis { margin-top: 1rem; }
.souhrn-kdy { display: inline-block; min-width: 4.4rem; font-family: var(--mono); font-variant-numeric: tabular-nums; }
.souhrn-nahled-modal { width: min(46rem, 96vw); }
.souhrn-nahled-modal .modal-telo { max-height: 60vh; overflow-y: auto; }
@media (max-width: 860px) { .souhrn-skupiny { grid-template-columns: 1fr; } }
/* mobil: popisky Čas/Dny nad pole (jinak zbude na chipy dnů ~250 px a lámou se do tří řad) */
@media (max-width: 640px) {
  .souhrn-karta .blok-4 { grid-template-columns: minmax(0, 1fr); gap: .3rem; }
  .souhrn-karta .blok-4 > .popisek { text-align: left; }
  .souhrn-den { min-width: 2.3rem; padding: 0 .4rem; }
}

/* ============ POSUVNÉ PANELY (21. 9. 2026, přání uživatele) ============
   Obecná obdoba úchopu z e-mailového klienta pro VŠECHNA vícepanelová
   rozvržení portálu. Obal nese data-panely="<klíč>", modul static/panely.js
   do něj vloží svislý úchop a tažením mění --panel-sirka; po puštění se
   šířka uloží na server (accounts.predvolby, klíč „panely") a při dalším
   renderu ji šablona vrátí přes {% panel_sirka "<klíč>" %}.
   Meze 200 až 700 px, dvojklik = návrat k výchozí šířce rozvržení. */
.panel-uchop-sirka {
  position: absolute; top: 0; bottom: 0;
  left: calc(var(--panel-sirka, var(--panel-vychozi, 269px)) + .1rem);
  width: .7rem; cursor: col-resize; z-index: 4;
}
/* úchop je vidět i v klidu (jemná svislá linka v mezeře mezi panely),
   při najetí zvýrazní, při tažení tyrkysově */
.panel-uchop-sirka::after {
  content: ""; position: absolute; top: 0; bottom: 0; left: 50%;
  width: 3px; margin-left: -1.5px; border-radius: 2px;
  background: var(--okraj-silny); opacity: .38; transition: opacity .15s ease;
}
.panel-uchop-sirka:hover::after { opacity: .9; }
.panel-uchop-sirka:active::after { background: var(--tyrkys-tmavy); opacity: 1; }
/* během tažení bez animací šířky panelu */
[data-panely][data-tahnu] > .bp-bocni { transition: none; }
/* e-mailový klient si šířku řídí sám (--em-sirka v email.css), ale při
   sbaleném hlavním menu se má rozšířit jako dřív, kdy ho přebíjelo
   pravidlo html.menu-sbaleno .bp-obal s pevnými pixely */
html.menu-sbaleno .em-obal { grid-template-columns: 310px 1fr; }
/* mobil: panely jsou pod sebou, úchop nedává smysl */
@media (max-width: 900px) { .panel-uchop-sirka { display: none; } }

/* ---- 390 px: zbytkové vodorovné přetečení stránky (21. 9. 2026) ----
   1) přepínač záložek (Můj profil) je inline-flex s nezmenšitelnými tlačítky →
      na mobilu ho scrollujeme vodorovně místo přetečení celé stránky;
   2) blok v .hlavicka-sekce je flex položka s výchozím min-width:auto → dlouhý
      podtitul (Poznámky) ho roztáhl o 15 px přes viewport. */
@media (max-width: 700px) {
  .prepinac { max-width: 100%; overflow-x: auto; overflow-y: hidden;
    scrollbar-width: none; -ms-overflow-style: none; }
  .prepinac::-webkit-scrollbar { display: none; }
  .prepinac button { flex: 0 0 auto; white-space: nowrap; }
  .hlavicka-sekce > div { min-width: 0; max-width: 100%; }
  .hlavicka-sekce > div > h1, .hlavicka-sekce > div > .stav-radek { overflow-wrap: anywhere; }
  /* podtitul sekce má na širokém monitoru nowrap (planovani.css); na mobilu se
     MUSÍ zalomit, jinak roztáhne hlavičku přes viewport (specificita 0,3,0) */
  .obsah .hlavicka-sekce .stav-radek { white-space: normal; overflow: visible; }
  /* input[type=file] má vlastní vnitřní šířku (~320 px) a nezmenší se sám */
  input[type="file"] { max-width: 100%; min-width: 0; }
}

/* ---- fakta v hlavičce sekce (23. 9. 2026): krátké čipy místo jedné dlouhé věty ----
   Číslo je výrazné, popisek tlumený, co hoří má varovnou barvu. Použitelné v každé
   hlavičce sekce: <p class="hlavicka-fakta"><span class="hf-udaj">{ikona}<b>3</b> popis</span>…</p> */
.hlavicka-fakta { display: flex; flex-wrap: wrap; gap: .35rem .45rem; margin: var(--mezera-xs) 0 0; }
.hf-udaj {
  display: inline-flex; align-items: center; gap: .35rem;
  padding: .12rem .5rem; border: 1px solid var(--okraj); border-radius: 99px;
  background: var(--karta); font-size: .82rem; color: var(--seda); white-space: nowrap;
}
.hf-udaj svg { width: .85rem; height: .85rem; flex: 0 0 auto; color: var(--tyrkys-tmavy); }
.hf-udaj b { color: var(--inkoust); font-variant-numeric: tabular-nums; }
.hf-udaj small { color: var(--seda); opacity: .8; }
.hf-udaj.hf-pozor { border-color: var(--chyba); background: color-mix(in srgb, var(--chyba) 10%, transparent); }
.hf-udaj.hf-pozor svg, .hf-udaj.hf-pozor b { color: var(--chyba); }

/* hodnota kopírovatelná klikem (23. 9. 2026): čísla dokladů, static/kopirovat.js */
.pt-kopirovatelne { cursor: copy; }
.pt-kopirovatelne:hover { text-decoration: underline dotted; text-underline-offset: .2em; }
.kopie-ok { display: inline-block; color: var(--tyrkys-tmavy); font-weight: 600; font-size: .85em; letter-spacing: .02em; }

/* Aktivity — sloupce dle Agendy kalendáře (1. 10. 2026): … název · Klient ·
   Zakázka · Adresa · Poznámka · vykázáno · menu. Jednořádkové s elipsou
   (+ tooltip); na užší kartě ubývají zprava (poznámka → adresa → zakázka).
   Hlavička dne používá záporné indexy, takže sedí i při ubraných stopách. */
.akc-dny { container-type: inline-size; --akc-kdo: 7rem; }
.akc-bez-kdo .akc-dny { --akc-kdo: 0; }
.akc-zakazka, .akc-adresa, .akc-poznamka { overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.akc-zakazka { display: flex; font-variant-numeric: tabular-nums; }
/* textové sloupce písmem portálu (jako Agenda kalendáře), ne mono z .drobky */
.akc-dny .akc-radek > .akc-subjekt, .akc-dny .akc-radek > .akc-zakazka,
.akc-dny .akc-radek > .akc-adresa, .akc-dny .akc-radek > .akc-poznamka {
  font-family: inherit; font-size: .76rem; }
.akc-adresa svg { width: .74rem; height: .74rem; margin-right: .25rem;
  vertical-align: -.1em; color: var(--tyrkys); }
.akc-popisky { font-size: .64rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--seda); padding: .1rem .5rem .2rem;
  border-bottom: 1px solid var(--okraj); }
.akc-popisky > span { overflow: hidden; white-space: nowrap;
  text-overflow: ellipsis; min-width: 0; }
.akc-popisky .akc-popisek-trvani { text-align: right; }
.akc-bez-kdo .akc-popisky .akc-kdo-popisek { visibility: hidden; }
@media (min-width: 1101px) {
  .akc-dny .akc-den-hlava, .akc-dny .akc-radek, .akc-dny .akc-popisky {
    display: grid; gap: 0 .55rem; align-items: center;
    grid-template-columns: 1.5rem 8.4rem 4.7rem var(--akc-kdo) 7.6rem 7.5rem
      minmax(0, 1.3fr) minmax(0, 11rem) minmax(0, 1fr) minmax(0, .9fr)
      minmax(0, 1fr) 5rem 1.4rem; }
  .akc-dny .akc-den-hlava .akc-doch { grid-column: 4 / -4; }
  .akc-dny .akc-den-hlava:has(.akc-den-mimo) .akc-doch { grid-column: 5 / -4; }
  /* počasí končí před sloupcem Vykázáno — tlačítko vykázání dne (širší než
     stopa menu) přetéká doleva do prázdné stopy Vykázáno, ne přes počasí */
  .akc-dny .akc-den-hlava .kal-pocasi-agenda { grid-column: -5 / -3; }
  .akc-dny .akc-den-hlava .akc-den-vykaz { grid-column: -2 / -1; }
  @container (max-width: 1700px) {
    .akc-dny .akc-den-hlava, .akc-dny .akc-radek, .akc-dny .akc-popisky {
      grid-template-columns: 1.5rem 8.4rem 4.7rem var(--akc-kdo) 7.6rem
        7.5rem minmax(0, 1.3fr) minmax(0, 10rem) minmax(0, 1fr)
        minmax(0, .9fr) 5rem 1.4rem; }
    .akc-dny .akc-poznamka { display: none; }
  }
  @container (max-width: 1450px) {
    .akc-dny .akc-den-hlava, .akc-dny .akc-radek, .akc-dny .akc-popisky {
      grid-template-columns: 1.5rem 8.4rem 4.7rem var(--akc-kdo) 7.6rem
        7.5rem minmax(0, 1.3fr) minmax(0, 9rem) minmax(0, 1fr) 5rem 1.4rem; }
    .akc-dny .akc-adresa { display: none; }
  }
  @container (max-width: 1150px) {
    .akc-dny .akc-den-hlava, .akc-dny .akc-radek, .akc-dny .akc-popisky {
      grid-template-columns: 1.5rem 8.4rem 4.7rem var(--akc-kdo) 7.6rem
        7.5rem minmax(0, 1fr) minmax(0, 9rem) 5rem 1.4rem; }
    .akc-dny .akc-zakazka { display: none; }
  }
  /* úzká karta (tablet 1280 s panelem filtrů): čas · trvání · kdo · stav ·
     název · menu — druh, klient a vykázáno ustoupí názvu */
  @container (max-width: 900px) {
    .akc-dny .akc-den-hlava, .akc-dny .akc-radek, .akc-dny .akc-popisky {
      grid-template-columns: 1.5rem 8.4rem 4.7rem var(--akc-kdo) 7.6rem
        minmax(0, 1fr) 1.4rem; }
    .akc-dny .akc-badge, .akc-dny .akc-subjekt, .akc-dny .akc-vykaz,
    .akc-dny .akc-druh-popisek { display: none; }
    .akc-dny .akc-den-hlava .akc-doch,
    .akc-dny .akc-den-hlava:has(.akc-den-mimo) .akc-doch { grid-column: 4 / 6; }
    .akc-dny .akc-den-hlava .kal-pocasi-agenda { grid-column: 6 / 7;
      margin-right: 1.4rem; }
  }
}
@media (max-width: 1100px) {
  .akc-zakazka, .akc-adresa, .akc-poznamka, .akc-popisky { display: none; }
  /* .akc-stav (inline-flex níž v souboru) přebíjel mobilní skrytí —
     ve 4sloupcové mřížce pak název padal na nový řádek do 1,5rem */
  .akc-dny .akc-radek > .akc-stav { display: none; }
}

/* ---- telefon: pozdní přepisy (musí stát až za modulovými pravidly výše) — 1. 10. 2026 ---- */
@media (max-width: 560px) {
  .kmp-form .kmp-pole > span > .kmp-zaskrtnuti, .kmp-form .kmp-pole .kmp-podpis .kmp-zaskrtnuti,
  .kmp-form .kmp-pole .kmp-podpis .kmp-zaskrtnuti > span, .kmp-form .kmp-pole .kmp-zaskrtnuti small { white-space: normal; }   /* zaškrtávátka Nové kampaně se nelámala → stránka 704 px */
  .karta > h2, .karta > h2 form, .karta > h2 .pt-h2-akce { flex-wrap: wrap; row-gap: .4rem; }   /* akce v nadpisu karty (filtry Mzdových podkladů) se lámou pod titulek */
  .karta > h2 > * { max-width: 100%; min-width: 0; }
  .hub-dlazdice { flex-wrap: wrap; }                                /* odznak metriky pod popis, ne vedle něj v úzkém sloupci */
  .hub-telo { flex: 1 1 0; min-width: 65%; }                        /* basis 0: text drží u ikony i při dlouhém popisu; dlouhý odznak spadne pod ně, krátký zůstane vedle */
  .hub-dlazdice .stitek { order: 3; width: auto; margin-left: calc(1.5rem + .8rem); }
}

/* Konektory UI (1. 10. 2026) — dlaždice frontendů konektorů */
.kui-mrizka { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 24rem), 1fr)); gap: 1rem; }
.kui-dlazdice { border: 1px solid var(--okraj-karty); border-radius: var(--r-prvek); background: var(--plocha-jemna); padding: .9rem 1rem; display: flex; flex-direction: column; gap: .55rem; min-width: 0; }
.kui-hlava { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.kui-popis { margin: 0; font-size: .82rem; color: var(--seda); }
.kui-odkazy { display: flex; flex-direction: column; gap: .4rem; }
.kui-odkaz { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .7rem; padding: .5rem .7rem; border: 1px solid var(--okraj-jemny); border-radius: var(--r-prvek); background: var(--karta); color: var(--inkoust); text-decoration: none; }
.kui-odkaz:hover { border-color: var(--akcent-okraj); background: var(--akcent-jemny); color: var(--inkoust); }
.kui-text { display: flex; flex-direction: column; min-width: 0; }
.kui-text small { color: var(--seda); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kui-stitek { font-size: .7rem; font-weight: 700; letter-spacing: .04em; padding: .15rem .45rem; border-radius: 4px; border: 1px solid var(--okraj); }
.kui-dev .kui-stitek { color: var(--tyrkys-tmavy); border-color: var(--akcent-okraj); background: var(--akcent-pozadi); }
.kui-prod .kui-stitek { color: var(--inkoust); }
.kui-pozn { font-size: .82rem; color: var(--seda); margin: .2rem 0 .8rem; }

/* Barvy událostí = barva kalendáře (2. 10. 2026, kalendar/barvy.py): tmavé
   kalendářové barvy (navy #3a405a…) by v tmavém/černém motivu splynuly
   s plochou — značky aktivit dostanou jemné světlé lemování (barva zůstává
   přesně barvou kalendáře). */
html[data-theme="tmavy"] .akc-badge svg, html[data-theme="cerny"] .akc-badge svg,
html[data-theme="tmavy"] .akc-badge::before, html[data-theme="cerny"] .akc-badge::before,
html[data-theme="tmavy"] .akc-tecka, html[data-theme="cerny"] .akc-tecka,
html[data-theme="tmavy"] .db-prouzek, html[data-theme="cerny"] .db-prouzek {
  filter: drop-shadow(0 0 1px rgba(255, 255, 255, .55)); }

/* Pořadí projektů (2. 10. 2026, static/poradi_projektu.js): úchyt ⠿ v panelu
   Projekty Kalendáře i Aktivit — myš (hover), dotyk (vždy vidět, větší
   plocha), klávesnice (focus + Alt/↑↓). Pořadí sdílí oba panely. */
.pp-uchop { order: -1; flex: none; width: .75rem; height: 1.1rem; padding: 0;
  margin: 0 -.1rem 0 -.3rem; border: 0; border-radius: 4px; cursor: grab;
  background: radial-gradient(circle, var(--seda) 1.2px, transparent 1.4px) center / .3rem .3rem;
  color: transparent; font-size: 0; opacity: 0; touch-action: none;
  transition: opacity .12s ease; }
.pp-radek:hover .pp-uchop, .kal-projekt-radek:hover .pp-uchop,
.pp-uchop:focus-visible, .pp-tazeny .pp-uchop { opacity: .8; }
.pp-uchop:focus-visible { outline: 2px solid var(--tyrkys); outline-offset: 1px; }
.pp-uchop:active { cursor: grabbing; }
@media (hover: none), (pointer: coarse) {
  .pp-uchop { opacity: .6; width: 1.25rem; height: 1.6rem; }
}
.pp-tazeny { opacity: .55; background: var(--plocha); }
.pp-probiha, .pp-probiha * { user-select: none; cursor: grabbing; }
.pp-hlasatel { position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; }
/* Aktivity: řádek projektu má úchyt pořadí jako 1. sloupec (parita
   s .kal-projekt-radek v kalendáři) */
.akc-obal .bp-radek.pp-radek { grid-template-columns: auto 15px 16px minmax(0, 1fr) auto; }
.akc-obal .pp-radek .pp-uchop { margin: 0; }

/* Nahlásit chybu v hlavičce jen při sbaleném navigačním panelu (3. 10. 2026) */
.bug-hlavicka { display: none; }
html.menu-sbaleno .bug-hlavicka { display: inline-flex; }
@media (max-width: 900px) { html.menu-sbaleno .bug-hlavicka { display: none; } }

/* ===== Identifikace klienta na dokladech (4. 10. 2026, spec 2026-10-04-identifikace-klienta-design.md) =====
   Sdílené poptávkou, nabídkou, zakázkou a dodacím listem: štítek stavu vůči Adresáři, řádek identifikace dokladu
   (zakaznici/_identifikace_dokladu.html) a modaly rozdílu. */
.ik-stav { display: inline-flex; align-items: center; height: 1.15rem; padding: 0 .4rem; font: inherit; font-size: .68rem; line-height: 1;
  border: 1px solid var(--okraj); color: var(--seda); background: transparent; white-space: nowrap; }
.ik-stav-napojeno { color: var(--tyrkys-tmavy); border-color: var(--akcent-okraj); background: var(--akcent-jemny); }
.ik-stav-lisi_se { color: var(--varovani); border-color: var(--varovani-okraj); background: var(--varovani-pozadi); cursor: pointer; }
.ik-stav-lisi_se:hover, .ik-stav-lisi_se:focus-visible { border-color: var(--varovani); }
.ik-stav-kos { color: var(--chyba); border-color: var(--chyba-okraj); background: var(--chyba-pozadi); }
.ozn-modal.modal-okno.ik-modal { width: min(44rem, 96vw); max-width: 96vw; }
.ozn-modal.modal-okno.ik-rozdil-okno { width: min(52rem, 96vw); }
.ik-modal .modal-telo { display: flex; flex-direction: column; gap: .6rem; }
.ik-uvod, .ik-pozn { margin: 0; font-size: .82rem; color: var(--inkoust-2, var(--inkoust)); }
.ik-pozn { color: var(--seda); font-size: .76rem; }
.ik-varovani, .ik-info { display: flex; align-items: flex-start; gap: .4rem; margin: .2rem 0; font-size: .78rem; }
.ik-varovani { color: var(--varovani); }
.ik-info { color: var(--inkoust-2, var(--inkoust)); }
.ik-varovani svg, .ik-info svg { width: .9rem; height: .9rem; flex: none; margin-top: .1rem; }
.ik-tab-obal { max-height: 52vh; overflow: auto; overscroll-behavior: contain; }
.ik-rozdil-tab { width: 100%; font-size: .8rem; }
.ik-rozdil-tab .ik-col-vyber { width: 2rem; text-align: center; }
.ik-rozdil-tab .ik-hodnota { overflow-wrap: anywhere; }
.ik-rozdil-skupina td { padding-top: .55rem; font-size: .72rem; font-weight: 650; color: var(--seda); background: transparent; }
.ik-prazdne { color: var(--varovani); font-size: .7rem; }
.vizualne-skryte { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ik-stav-zamek { gap: .25rem; color: var(--inkoust-2, var(--inkoust)); }
.ik-stav-zamek svg { width: .75rem; height: .75rem; }
button.ik-stav:disabled { cursor: not-allowed; opacity: .75; }
.idk-radek { display: flex; align-items: center; flex-wrap: wrap; gap: .45rem; margin: .3rem 0 .5rem; font-size: .8rem; }
.idk-popisek { color: var(--seda); font-size: .76rem; }
.idk-radek form { margin: 0; }
.blok .idk-popisek { display: none; }
.blok .idk-radek { margin: 0; }

/* ---- Přepínač (switch) — globální vzor (04/10/2026, „Informovat klienta“ v Nové poptávce / zakázce):
   <label class="spinac"><input type="checkbox" role="switch" …><span class="spinac-kolej"></span>
   <span class="spinac-text">…</span></label>. Checkbox zůstává skutečným polem formuláře (přístupnost,
   no-JS); vypnutý (disabled) přepínač je zešedlý a nápovědu nese .spinac-napoveda pod ním. ---- */
.spinac { position: relative; display: inline-flex; align-items: center; gap: .55rem; cursor: pointer;
  font-size: .86rem; line-height: 1.3; color: var(--inkoust); user-select: none; }
.spinac > input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.spinac-kolej { position: relative; flex: none; width: 2.2rem; height: 1.25rem; border-radius: 999px;
  background: var(--okraj-silny); transition: background .15s; }
.spinac-kolej::after { content: ""; position: absolute; top: .15rem; left: .15rem; width: .95rem; height: .95rem;
  border-radius: 50%; background: var(--karta); box-shadow: var(--stin-1); transition: transform .15s; }
.spinac > input:checked + .spinac-kolej { background: var(--tyrkys-tmavy); }
.spinac > input:checked + .spinac-kolej::after { transform: translateX(.95rem); }
.spinac > input:focus-visible + .spinac-kolej { outline: 2px solid var(--tyrkys); outline-offset: 2px; }
.spinac:has(> input:disabled) { cursor: not-allowed; color: var(--seda); }
.spinac > input:disabled + .spinac-kolej { opacity: .5; }
.spinac-napoveda { display: block; margin-top: .25rem; font-family: inherit; color: var(--seda); }
.spinac-text .zk-informovat-kam { color: var(--seda); }
/* přepínač je pill/kruh (výjimka z OSTRÝCH HRAN jako .prepinac — tvar prvku, ne zaoblený roh) */
.spinac-kolej, .spinac-kolej::after { border-radius: 999px !important; }

/* 05/10/2026: editor e-mailu a náhled v obálce stejně vysoké (řádek mřížky se roztáhne, obsah vyplní kartu) */
.dbg-email-mriz { align-items: stretch; }
.dbg-email-editor { display: flex; flex-direction: column; margin: 0; }
.dbg-email-editor .dbg-email-form { flex: 1; display: flex; flex-direction: column; }
.dbg-email-editor .dbg-email-telo-editor, .dbg-email-editor .dbg-email-telo-cteni { flex: 1; min-height: 24rem; }
.dbg-email-bok > .dbg-email-nahled-karta { flex: 1; display: flex; flex-direction: column; }
.dbg-email-nahled-karta .dbg-email-nahled { flex: 1; min-height: 24rem; height: auto; }
@media (max-width: 1100px) { .dbg-email-mriz { align-items: start; } }
.dbg-email-pod { display: flex; flex-direction: column; gap: 1rem; margin-top: 1rem; }
.dbg-email-pod > .karta { margin: 0; }
