/* ---------------------------------------------------------------------------
   Karta klienta — podoba 1:1 s návrhem Pavla Müllera (ALF-21).
   Zdroj: podklady/claude-design/mockup-backoffice-2026-09-02, obrazovka
   „Karta klienta", náhled `nahledy/20-karta-prehled.png`.

   PROČ GLOBÁLNÍ LIST, a ne scoped CSS stránky: karta skládá CIZÍ komponenty
   (rozpad majetku, graf vývoje, pásma IPS, upravitelná hodnota) a scoped CSS
   na ně nedosáhne — týž důvod jako `dialog.css`, `upravitelna-hodnota.css`
   a `karta-sekce.css`.

   Prefix `kk-`. V komentářích je u každého bloku jméno třídy z návrhu, aby
   šlo dohledat, odkud které číslo je — návrh se bude vracet u dalších záložek.
   --------------------------------------------------------------------------- */

/* Vodorovný posuv celé karty (návrh `.dtlwrap` + `.c`): karta má pevné
   minimum 1121 px, protože levý sloupec 284 px a hero se pod tím rozsypou.
   Posouvá se OBAL, ne tělo — jinak by drobeček i záložky odjely z dohledu. */
.kk-obal { overflow-x: auto; padding-bottom: 7px; }

.kk-karta {
    background: var(--white);
    border: 1px solid var(--border-hairline);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
    /* Minimum je NIŽŠÍ než v návrhu (1121): návrh počítá s úzkou lištou 98 px, naše rozbalená
       má 214 — na notebooku 1366 px zbývalo na kartu 1082 a celá se posouvala do strany
       (vytkl uživatel 5. 9. 2026). Při 1060 se hero, pás čísel ani mřížka nerozsypou
       (změřeno: žádný prvek nepřetéká), jen odkaz „Časová osa" v hlavičce se nesmí zalomit. */
    min-width: 1060px;
}

/* Drobeček (návrh `.dnav`) — zelený čtvereček, „Klienti / <rodina> · <segment>". */
.kk-dnav {
    display: flex; align-items: center; gap: 9.5px;
    font-size: 14px; color: var(--brown-400);
    padding: 15px 21px 0;
    white-space: nowrap; overflow: hidden;
}
.kk-dnav .sq { width: 14px; height: 14px; border-radius: 3.5px; flex: 0 0 auto; background: var(--green-700); }
.kk-dnav a { color: var(--green-700); font-weight: 600; text-decoration: none; }
.kk-dnav a:hover { text-decoration: underline; }
.kk-dnav .cur { color: var(--brown-700); font-weight: 600; }
.kk-dnav .sep { color: var(--brown-300); }

/* Hlavička se jménem a odznaky (návrh `.dtop`/`.dtoph`/`.dt`, bez spodní linky —
   tu kreslí až řádek záložek). */
.kk-top { padding: 9.5px 21px 12px; }
.kk-toph { display: flex; align-items: flex-start; justify-content: space-between; gap: 21px; }
.kk-toph > .kk-toph-jmeno { flex: 1 1 auto; min-width: 0; }
/* AKČNÍ ROH ZÁHLAVÍ: tlačítko onboardingu a vedle něj kolečko „···" se životním cyklem
   klienta (18. 9. 2026). Řádek se říká JMENOVITĚ — obě značky jsou blokové, takže bez
   toho stálo kolečko POD tlačítkem a vypadalo jako zapomenutý prvek (vidět jen ze snímku). */
.kk-toph > .kk-toph-akce {
    flex: 0 0 auto; padding-top: 6px;
    display: flex; align-items: center; gap: 10px;
}
.kk-nazev {
    font-family: var(--font-body);
    font-size: 26px; font-weight: 700; color: var(--brown-700);
    line-height: 1.28; margin: 4px 0 0; letter-spacing: -.015em;
    text-wrap: pretty;
}
.kk-odznaky { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; margin-top: 11px; }
/* Pilulka z návrhu (`.bal`). V buňce tabulky jí velikost ŘÍKÁ TABULKA přes `--pilulka-*`
   (tabulka.css, „PILULKA V BUŇCE"); náhradní hodnoty jsou její velikost mimo tabulku. Řádkování
   náhradu nemá schválně: mimo tabulku je deklarace neplatná a dědí se jako dřív. */
.kk-bal {
    display: inline-flex; align-items: center; gap: var(--pilulka-mezera, 7px);
    padding: var(--pilulka-odsazeni, 4.5px 13px); border-radius: var(--radius-pill);
    font-size: var(--pilulka-pismo, 13px); line-height: var(--pilulka-radek);
    font-weight: 600; white-space: nowrap;
    background: var(--cream-200); color: var(--brown-600);
}
.kk-bal.je-vytka { background: #f6e2dc; color: #c0472e; }

/* DEMO RODINA — věta pod odznaky (ADR-0144). Tlumený řádek, ne barevný pruh: je to sdělení
   o povaze dat, ne výstraha, a v hlavičce karty už jeden pruh (odznaky) je. */
.kk-demo-veta { margin-top: 6px; font-size: 12.5px; color: var(--brown-400, #8a8067); }
.kk-bal.je-dobra { background: var(--green-100); color: #5f6d05; }
.kk-bal.je-vlazna { background: #f8edd8; color: #a8741a; }
/* ODZNAK ONBOARDINGU (návrh `KCOL.neu`: #ebe3d5 / #6b5442) — neutrální, ne výtka; od pilulky
   mandátu se liší jen písmem (mandát má #594334), 24. 9. 2026, ADR-0151. */
.kk-bal.je-neutralni { background: #ebe3d5; color: #6b5442; }

/* Řádek záložek (návrh `.ktabsrow`/`.ktabs`/`.kacts`). Zúžené záložky se
   posouvají vodorovně samy, aby akce vpravo zůstaly na místě. */
.kk-zalozky-radek {
    display: flex; align-items: center; gap: 14px;
    padding-right: 19px;
    border-bottom: 1px solid var(--border-hairline);
}
.kk-zalozky { display: flex; gap: 2px; padding: 0 21px; flex: 1; min-width: 0; overflow-x: auto; }
.kk-zalozky a {
    border: 0; background: transparent;
    font-family: var(--font-body); font-size: 14.5px; font-weight: 600;
    color: var(--brown-400);
    padding: 12px 14px 13px;
    /* ŘÁDKOVÁNÍ PŘESNĚ Z NÁVRHU — `normal` na tlačítku i na počtu (níž). Říká se JMENOVITĚ: back
       office dědí 1,45 z `.mck`. Dřívějších 1,2 dnešní sady bylo přiblížení a řádek vycházel o 0,4 px
       vyšší (změřeno 29. 9. 2026); od E27 platí jen tohle (třída `je-nova-sada` odešla). */
    line-height: normal;
    white-space: nowrap; text-decoration: none;
    border-bottom: 2.5px solid transparent;
}
.kk-zalozky a:hover { color: var(--brown-700); }
.kk-zalozky .je-aktivni { color: var(--brown-700); border-bottom-color: var(--green-500); }
.kk-zalozky .n { font-family: var(--font-cisla); font-size: 12px; font-weight: 700; color: var(--brown-300); margin-left: 7px; line-height: normal; }

.kk-akce { display: flex; align-items: center; gap: 9px; flex: 0 0 auto; position: relative; padding-bottom: 1px; }

/* Oddělovač skupin v nabídce „···" (návrh `.kmenu .sep`). */
.mck .kk-menu-cara { height: 1px; background: var(--cream-200); margin: 5px 2px; }

/* KOLEČKO „···" VPRAVO V ŘÁDKU ZÁLOŽEK (SPEC E5, od E27 jediná podoba)
   a jeho nabídka — čísla 1:1 z návrhu z 24. 9. 2026 (`.rndb`, `.kmenu`, `.kmenu button`,
   `.kmenu button.dis`, ADR-0157 §8). Vlastní třídy, ne `bo-kruh`/`bo-dalsi-polozka`: ty mají
   podobu z ticketingu (37 px, písmo 13 px) a návrh má na kartě jinou (36 px, 14 px, ikony).
   Tři tečky jsou SVG (jen znaky z klávesnice, rozhodnutí 22). */
.mck .kk-dalsi { flex: 0 0 auto; }
.mck .kk-rndb {
    width: 36px; height: 36px; border-radius: 50%;
    border: 1px solid var(--border-hairline);
    background: var(--white); color: var(--brown-500);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; list-style: none;
}
.mck .kk-rndb::-webkit-details-marker { display: none; }
.mck .kk-rndb::marker { content: ""; }
.mck .kk-rndb:hover { background: var(--cream-50); color: var(--brown-700); }
/* Otevřená nabídka = návrh `.rndb.on`. */
.mck .kk-dalsi[open] > .kk-rndb { background: var(--cream-100); color: var(--brown-700); }
.mck .kk-rndb svg { width: 17px; height: 17px; fill: currentColor; stroke: none; }
.mck .kk-dalsi-menu {
    position: absolute; top: 44px; right: 0; z-index: 20;
    min-width: 236px; padding: 6px;
    background: var(--white);
    border: 1px solid var(--border-hairline); border-radius: var(--radius-md);
    box-shadow: var(--shadow-md);
    display: flex; flex-direction: column;
}
/* Položka je odkaz, tlačítko i neklikatelný `span` — podobu jim dává tahle jedna třída. Nabídka
   visí na kolečku 36 px, takže šířku bere z obsahu; „+ Přidat" na ose a v Majetku drží `nowrap`. */
.mck .kk-dalsi-polozka {
    display: grid; grid-template-columns: 20px 1fr; align-items: center; gap: 11px;
    border: 0; background: transparent;
    padding: 9px 10px; border-radius: 8px;
    font: 500 14px var(--font-body); line-height: normal; color: var(--brown-700);
    text-align: left; text-decoration: none; white-space: nowrap;
    cursor: pointer;
}
.mck .kk-dalsi-polozka:hover { background: var(--cream-50); }
.mck .kk-dalsi-polozka svg {
    width: 17px; height: 17px;
    fill: none; stroke: var(--brown-400); stroke-width: 1.7;
    stroke-linecap: round; stroke-linejoin: round;
}
.mck .kk-dalsi-polozka.je-nebezpecna { color: #c0472e; }
.mck .kk-dalsi-polozka.je-nebezpecna svg { stroke: #c0472e; }
/* ZAŠEDLÁ POLOŽKA (OB-15: funkci zatím nemá; mazání nearchivovaného klienta) — návrh
   `.kmenu button.dis` (průhlednost .42). Kurzor ani podbarvení nic neslibují. */
.mck .kk-dalsi-polozka.je-zasedla { opacity: .42; cursor: default; }
.mck .kk-dalsi-polozka.je-zasedla:hover { background: transparent; }
/* Štítek „brzy" — týž jako u nepostavených sekcí v levé liště (`.nav-stitek`), jen v barvě
   světlé nabídky. Třetí sloupec jen tam, kde štítek je: prázdný sloupec by nesl mezeru navíc. */
.mck .kk-dalsi-polozka:has(.kk-brzy) { grid-template-columns: 20px 1fr auto; }
.mck .kk-brzy {
    font-size: 9px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
    color: var(--brown-400);
}
/* NABÍDKA „···" 1:1 S NÁVRHEM `.kmenu` (OB-119, E27 V7): popisky se ZALAMUJÍ a nabídka má šířku
   z `min-width` 236 px (`.kmenu button` `nowrap` nemá). Do E27 nesla `nowrap` a vycházela
   285 × 281 px; štítek „brzy" zůstává vpravo ve vlastním sloupci. */
.mck .kk-dalsi .kk-dalsi-polozka { white-space: normal; }

/* Tělo: levý informační sloupec 284 px + hlavní plocha (návrh `.kbody`). */
.kk-telo { display: grid; grid-template-columns: 284px minmax(0, 1fr); align-items: start; }
.kk-levy {
    padding: 18px 19px 26px;
    background: var(--cream-50);
    border-right: 1px solid var(--border-hairline);
    align-self: stretch;
    display: flex; flex-direction: column; gap: 19px;
}
.kk-hlavni { padding: 19px 21px 28px; min-width: 0; }

/* Nadpis skupiny v levém sloupci (návrh `.kirg`). */
.kk-skupina {
    font-size: 11.5px; font-weight: 700; letter-spacing: .13em;
    text-transform: uppercase; color: var(--brown-300);
    margin-bottom: 10px;
}

/* Fotka hlavy rodiny (návrh `.kph`/`.kphc`). Výřez je posunutý nahoru
   (`center 22%`), aby portrét nebyl uříznutý v obličeji. */
.kk-foto {
    border-radius: var(--radius-md); overflow: hidden;
    background: var(--cream-200); aspect-ratio: 1 / 1;
    background-size: cover; background-position: center 22%;
}
/* PRÁZDNÝ RÁMEČEK, když člen fotku nemá. Přerušovaná linka říká „sem něco patří" —
   plná by vypadala jako obrázek, který se nenačetl. */
.kk-foto.je-prazdna {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 8px;
    position: relative;
    background: var(--cream-50);
    border: 1px dashed var(--border-hairline);
    color: var(--brown-400);
    font-size: 13px;
    text-align: center;
    cursor: pointer;
}
.kk-foto.je-prazdna:hover { border-color: var(--green-500); color: var(--green-700); }
.kk-foto.je-prazdna svg {
    width: 26px; height: 26px;
    fill: none; stroke: currentColor; stroke-width: 1.6;
    stroke-linecap: round; stroke-linejoin: round;
}
/* Bez práva zápisu je to jen rámeček — kurzor se nemění a hover nesvítí, aby nesliboval akci. */
.kk-foto.je-bez-akce { cursor: default; }
.kk-foto.je-bez-akce:hover { border-color: var(--border-hairline); color: var(--brown-400); }
.kk-foto.je-zaneprazdnena { opacity: .6; cursor: progress; }

/* Souborový vstup si prohlížeč kreslí sám a text bere ze SVÉHO jazyka („Choose File"),
   přeložit ho nejde — proto je průhledný přes celou plochu a vidět je náš popisek
   (týž obrat jako u nahrávání papíru, `spis-soubor-*`). */
.kk-foto-vstup {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    opacity: 0; cursor: pointer;
}
/* VÝMĚNA NAHRANÉ FOTKY: celá fotka je klikací plocha, překryv se ukáže při najetí
   a při zaostření z klávesnice (`:focus-within` — souborový vstup je průhledný, takže
   bez toho by kurzor klávesnice na fotce nebyl vidět vůbec). */
.kk-foto.je-vymenitelna { position: relative; cursor: pointer; display: block; }
.kk-foto-prekryv {
    position: absolute; inset: 0;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 8px;
    background: color-mix(in srgb, var(--brown-900) 62%, transparent);
    color: var(--cream-100);
    font-size: 13px; font-weight: 600; text-align: center;
    border-radius: var(--radius-md);
    opacity: 0;
    transition: opacity .14s cubic-bezier(.4, 0, .2, 1);
}
.kk-foto.je-vymenitelna:hover .kk-foto-prekryv,
.kk-foto.je-vymenitelna:focus-within .kk-foto-prekryv { opacity: 1; }
.kk-foto-prekryv svg {
    width: 24px; height: 24px;
    fill: none; stroke: currentColor; stroke-width: 1.6;
    stroke-linecap: round; stroke-linejoin: round;
}
/* Zaneprázdněná fotka drží překryv vidět — jinak by při nahrávání nebylo poznat, že se
   něco děje, a člověk by klikal podruhé. */
.kk-foto.je-vymenitelna.je-zaneprazdnena .kk-foto-prekryv { opacity: 1; }
.kk-foto.je-vymenitelna.je-zaneprazdnena { cursor: progress; }

/* Odebrání je jediná destruktivní akce na kartě — tichý odkaz, ne tlačítko: nemá si říkat
   o pozornost víc než výměna, která je ta obvyklá. */
.kk-foto-blok { display: block; }
.kk-foto-odebrat {
    margin: 6px 0 0;
    opacity: 0;
    transition: opacity .14s cubic-bezier(.4, 0, .2, 1);
    border: 0; background: transparent; padding: 0;
    font: 500 13px var(--font-body);
    color: var(--brown-400);
    cursor: pointer;
}
.kk-foto-blok:hover .kk-foto-odebrat,
.kk-foto-odebrat:focus-visible { opacity: 1; }
.kk-foto-odebrat:hover { color: #c0472e; text-decoration: underline; }
.kk-foto-odebrat:disabled { opacity: .5; cursor: default; text-decoration: none; }

.kk-foto-chyba { margin: 8px 0 0; font-size: 13px; color: #c0472e; line-height: 1.45; }

.kk-foto-popis { font-size: 13px; color: var(--brown-500); margin-top: 9px; line-height: 1.45; }
.kk-foto-popis b { display: block; font-size: 14.5px; font-weight: 600; color: var(--brown-700); margin-bottom: 2px; }

/* Řádek kontaktu s ikonou (návrh `.kcr`). */
.kk-kontakt {
    display: grid; grid-template-columns: 17px 1fr; gap: 10px; align-items: start;
    color: var(--brown-600); line-height: 1.5; font-size: 14px; padding: 4px 0;
}
.kk-kontakt svg {
    width: 16px; height: 16px; margin-top: 3px;
    stroke: var(--brown-300); fill: none;
    stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round;
}
.kk-kontakt b { color: var(--brown-700); font-weight: 600; }
.kk-kontakt a { color: var(--green-700); font-weight: 600; text-decoration: none; }
.kk-kontakt a:hover { text-decoration: underline; }

/* Vlastník vztahu — avatar + dvě řádky. */
.kk-vlastnik { display: flex; align-items: center; gap: 10px; }
.kk-vlastnik .kk-jm { display: block; font-size: 14px; font-weight: 600; color: var(--brown-700); }
.kk-vlastnik .kk-role { display: block; font-size: 12.5px; color: var(--brown-400); margin-top: 2px; }
.kk-ava {
    width: 34px; height: 34px; border-radius: 50%;
    background: var(--cream-200); color: var(--brown-600);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; flex: 0 0 auto;
    background-size: cover; background-position: center;
}

/* „Za koho spravujeme" — řádek entity (návrh `.entr`). */
.kk-entita {
    display: block; width: 100%; text-align: left;
    border: 0; border-bottom: 1px solid var(--cream-200);
    background: transparent; padding: 9px 0 10px;
    font-family: var(--font-body); text-decoration: none;
    /* Návrh je `<button>`: řádkování NORMAL, ne zděděné z těla (jinak řádek o 3,7 px vyšší). */
    line-height: normal;
}
.kk-entita:last-of-type { border-bottom: 0; }
.kk-entita .ty { display: block; font-size: 10px; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; color: var(--brown-300); }
.kk-entita .nm { display: block; font-size: 13.5px; font-weight: 600; color: var(--brown-700); line-height: 1.35; margin-top: 3px; }
.kk-entita:hover .nm { color: var(--green-700); }
.kk-entita .rw { display: flex; align-items: baseline; gap: 10px; margin-top: 3px; }
.kk-entita .sb { flex: 1; font-size: 12.5px; color: var(--brown-400); line-height: 1.35; min-width: 0; }
.kk-entita .am { font-family: var(--font-cisla); font-size: 12.5px; font-weight: 700; color: var(--brown-500); white-space: nowrap; }

/* ŠTÍTKY KLIENTA (E9, 1:1 s návrhem 25. 9. 2026: `.fchw`, `.ctag`, `.fadd`, `.ivin.chi`, `.fsug`).
   Chip nese křížek „Odebrat"; bez práva vést vztah se kreslí bez křížku a s odsazením z obou stran. */
.kk-stitky { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.kk-stitek {
    display: inline-flex; align-items: center; gap: 5px; height: 27px; padding: 0 4px 0 11px;
    border-radius: var(--radius-pill); background: var(--cream-50);
    border: 1px solid var(--border-hairline);
    font: 500 12.5px var(--font-body); color: var(--brown-600); white-space: nowrap;
}
.kk-stitek:not(:has(button)) { padding-right: 11px; }
.kk-stitek button {
    width: 19px; height: 19px; padding: 0; border: 0; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: transparent; color: var(--brown-300); font-size: 14px; line-height: 1; cursor: pointer;
}
.kk-stitek button:hover { background: var(--cream-200); color: var(--danger); }
.kk-stitek button:focus-visible { outline: 0; box-shadow: var(--shadow-focus); }
.kk-fadd {
    display: inline-flex; align-items: center; height: 27px; padding: 0 12px;
    border-radius: var(--radius-pill); border: 1px dashed var(--border-hairline); background: transparent;
    font: 600 12.5px var(--font-body); color: var(--brown-300); cursor: pointer;
}
.kk-fadd:hover { border-color: var(--green-300); color: var(--green-700); }
.kk-fadd:focus-visible { outline: 0; box-shadow: var(--shadow-focus); }
/* Pole nového štítku: v úzkém sloupci přes celou šířku (návrh má inline `width:100%`). */
.kk-ivin.chi {
    width: 100%; min-width: 0; height: 29px; box-sizing: border-box; padding: 0 8px;
    border-radius: 7px; border: 1px solid var(--green-500); background: var(--white);
    font: inherit; font-family: var(--font-body); color: var(--brown-700); outline: 0;
}
.kk-ivin.chi::placeholder { color: var(--brown-300); }
.kk-fsug { display: flex; flex-wrap: wrap; gap: 6px; width: 100%; margin-top: 3px; }
.kk-fsug button {
    height: 26px; padding: 0 11px; border-radius: var(--radius-pill);
    border: 1px dashed var(--border-hairline); background: transparent;
    font: 500 12.5px var(--font-body); color: var(--brown-400); cursor: pointer;
}
.kk-fsug button:hover { border-color: var(--green-300); color: var(--green-700); }
/* Věta pod štítky: Neuloženo (meze řekne služba) nebo nenačtená nabídka. Tvar výtky pole. */
.kk-stitky-veta {
    width: 100%; margin: 0; font-size: 11.5px; line-height: 1.4; color: var(--brown-400);
    overflow-wrap: anywhere;
}
.kk-stitky-blok > .kk-stitky-veta { margin-top: 7px; }
.kk-stitky-veta.je-neulozeno { color: var(--c-cihlova, #A6462E); }

/* Prázdný stav v levém sloupci i v kartách — věta, ne rámeček. */
.kk-nic { font-size: 13.5px; color: var(--brown-400); line-height: 1.5; }

/* ---- karty v hlavní ploše (návrh `.kc2`/`.kc2h`/`.kc2b`) ---- */
.kk-c {
    background: var(--white);
    border: 1px solid var(--border-hairline);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}
.kk-ch {
    display: flex; align-items: center; gap: 12px;
    padding: 13px 18px 12px;
    border-bottom: 1px solid var(--cream-200);
}
.kk-ch .l { font-size: 11.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--brown-400); white-space: nowrap; }
.kk-ch .n { font-family: var(--font-cisla); font-size: 12px; font-weight: 700; color: var(--brown-300); white-space: nowrap; margin-left: auto; }
.kk-ch .kk-mezera { flex: 1; }
.kk-cb { padding: 6px 18px 8px; }

/* Dvousloupcová mříž pod hero (návrh `.kgrid`; poměr 1,45 : 1 platí jen tam,
   kde je vlevo obsah s tabulkou — u dvou stejně vážných karet se v návrhu
   předepisuje `repeat(2, …)` inline). */
.kk-mriz { display: grid; grid-template-columns: 1.45fr 1fr; gap: 19px; align-items: start; }
.kk-mriz.je-napul { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: stretch; }
.kk-mriz.je-napul > .kk-c { display: flex; flex-direction: column; height: 100%; }
.kk-mriz.je-napul > .kk-c > .kk-cb { flex: 1; }

/* ---- hero: čisté jmění + donut + sparkline (návrh `.hero`) ---- */
.kk-hero {
    display: grid;
    grid-template-columns: minmax(190px, .8fr) auto minmax(220px, 1.1fr);
    gap: 24px; padding: 18px 18px 20px; align-items: center;
}
.kk-hero .cap { font-size: 11.5px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; color: var(--brown-400); }
.kk-hero .big {
    font-family: var(--font-cisla); font-size: 40px; font-weight: 700;
    color: var(--brown-700); letter-spacing: -.025em; line-height: 1; margin-top: 8px;
}
.kk-hero .sub { font-size: 13.5px; color: var(--brown-400); margin-top: 9px; }
.kk-hero-donut { display: flex; flex-direction: column; align-items: center; gap: 11px; min-width: 0; }

/* Donut v záhlaví (návrh `.dnt`) — 136 px, bez legendy a bez textu ve středu. Legendu
   nahrazuje pás čísel pod ním a `<title>` u každé výseče; kdo chce rozpad podrobně, jde
   na záložku Majetek. Barvu dává třída kategorie z `kategorie.css`, ne pořadí v grafu. */
.kk-donut { position: relative; width: 136px; height: 136px; flex: 0 0 auto; }
.kk-donut svg { width: 136px; height: 136px; display: block; }
/* PRSTENEC SE KRESLÍ TAHEM, ne výplní: `DonutGraf` vrací OBLOUK STŘEDNICE (poloměr 42,8
   ve viewBoxu 0–100) a tloušťka se přičítá na obě strany. Bez `fill: none` je z každé
   výseče plný koláčový klín — přesně tak vypadal donut při prvním průchodu.
   Tloušťka 14,4 je táž jako v klientské tváři: jeden donut na dvou místech aplikace. */
.kk-donut svg path {
    fill: none;
    stroke-width: 14.4;
    stroke-linecap: butt;
}
/* POZOR: `stroke` tady BÝT NESMÍ. Barvu výseče nese prezentační atribut `stroke` v markupu
   (jedna barva na kategorii, `MajetekPaleta.Barva`) a jakékoli pravidlo v listu ho přebije —
   prstenec pak vyjde celý v jedné barvě. Stalo se to hned při druhém průchodu. */

/* Malý graf (návrh `.spk`): plocha pod křivkou a čára nad ní, popisky jen na krajích osy. */
.kk-spark { position: relative; min-width: 0; height: 136px; }
.kk-spark > svg { width: 100%; height: 112px; display: block; overflow: visible; }
.kk-spark-plocha { fill: var(--green-100); }
.kk-spark-linka { fill: none; stroke: var(--green-700); stroke-width: 2; stroke-linejoin: round; }
.kk-spark-osa {
    display: flex; justify-content: space-between;
    font-size: 11px; color: var(--brown-400); margin-top: 2px;
}
/* Věta místo grafu (málo ocenění) i věta pod grafem (křivka není čisté jmění). */
.kk-spark-poznamka { font-size: 13px; color: var(--brown-400); line-height: 1.45; margin-top: 4px; }

/* Tři čísla pod hero (návrh `.kmini`). */
.kk-mini { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--cream-200); }
.kk-mini > div { padding: 13px 18px; }
.kk-mini > div + div { border-left: 1px solid var(--cream-200); }
.kk-mini .l { font-size: 12px; color: var(--brown-400); }
.kk-mini .v { font-family: var(--font-cisla); font-size: 18px; font-weight: 700; color: var(--brown-700); margin-top: 5px; line-height: 1; }
/* VÝNOS YTD „nevíme" (E32): tlumeně, důvody v titulku. */
.kk-mini .v.je-tlumene { color: var(--brown-400); }
/* Rodina bez mandátní smlouvy (E20, OB-61b): pod „bez smlouvy" odkaz k poli smlouvy. */
.kk-mini .kk-odkaz-smlouva {
    display: inline-block; margin-top: 6px; font-size: 13px; font-weight: 600;
    color: var(--green-700); text-decoration: none;
}
.kk-mini .kk-odkaz-smlouva:hover { text-decoration: underline; }

/* ---- pásma IPS (návrh `.ipsr` + `.trk` + `.drf`) ---- */
.kk-pasmo {
    display: grid; grid-template-columns: minmax(80px, 96px) minmax(0, 1fr) 74px;
    gap: 12px; align-items: center;
    padding: 9px 0; border-bottom: 1px solid var(--cream-200);
}
.kk-pasmo:last-of-type { border-bottom: 0; }
.kk-pasmo .nm { font-size: 13.5px; font-weight: 600; color: var(--brown-700); line-height: 1.3; }
.kk-trat { position: relative; height: 22px; border-radius: var(--radius-sm); background: var(--cream-200); overflow: hidden; }
.kk-trat .zn { position: absolute; top: 0; bottom: 0; background: var(--green-200); }
.kk-trat .tg { position: absolute; top: 0; bottom: 0; width: 0; border-left: 2px dashed var(--green-700); }
.kk-trat .cr { position: absolute; top: -2px; bottom: -2px; width: 3px; border-radius: 2px; background: var(--brown-700); }
.kk-trat .cr.je-mimo { background: #c0472e; }
.kk-odchylka { text-align: right; line-height: 1.2; }
.kk-odchylka b { font-family: var(--font-cisla); font-size: 13px; font-weight: 700; }
.kk-odchylka .st { display: block; font-size: 11px; color: var(--brown-400); margin-top: 3px; }
.kk-odchylka b { color: var(--brown-700); }
.kk-odchylka b.je-mimo { color: #c0472e; }

/* ---- dvojice „nejbližší / poslední" (návrh `.pair`) ---- */
.kk-par {
    display: grid; grid-template-columns: 20px 1fr; gap: 11px;
    padding: 12px 0; border-bottom: 1px solid var(--cream-200); align-items: start;
}
/* Řádky bloku aktivity (návrh `.pair`): rovnoměrně na výšku karty, čára dole u každého kromě
   „Dalšího termínu" (návrh ho kreslí s `border-bottom: 0`). */
.kk-aktivita-telo { display: flex; flex-direction: column; }
.kk-aktivita-telo .kk-par { flex: 1; align-content: center; }
.kk-par.je-posledni { border-bottom: 0; }
.kk-par svg { width: 17px; height: 17px; margin-top: 2px; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.kk-par .hl { display: block; font-size: 13.5px; font-weight: 700; color: var(--brown-600); }
.kk-par .ln { display: block; font-size: 14px; color: var(--brown-700); margin-top: 4px; line-height: 1.4; }
.kk-par .wh { display: block; font-size: 12.5px; color: var(--brown-400); margin-top: 3px; }

/* ---- Alfrédova karta (návrh `.aic`/`.aich`/`.aist`/`.aii`) ---- */
.kk-ai { border: 1px solid #dfe4bd; border-radius: var(--radius-md); background: #fbfcf2; }
.kk-aih { display: flex; align-items: center; gap: 11px; padding: 12px 16px; border-bottom: 1px solid #e8ebd4; }
.kk-aih .sp { width: 18px; height: 18px; stroke: var(--green-700); fill: none; stroke-width: 1.7; flex: 0 0 auto; }
.kk-aih .t { font-size: 14px; font-weight: 700; color: var(--brown-700); }
.kk-aih .eb { font-size: 11.5px; color: var(--brown-400); font-family: var(--font-cisla); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kk-aih .kk-mezera { flex: 1; }
.kk-ai-krok { padding: 13px 16px; background: #f6f8e6; }
.kk-ai-krok .k { font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--green-700); }
.kk-ai-krok .t { font-size: 14.5px; font-weight: 700; color: var(--brown-700); margin-top: 6px; line-height: 1.4; }
.kk-ai-radek { padding: 13px 16px; border-bottom: 1px solid #e8ebd4; }
.kk-ai-radek:last-child { border-bottom: 0; }
.kk-ai-radek .t { font-size: 14px; font-weight: 500; color: var(--brown-600); line-height: 1.5; text-wrap: pretty; }
.kk-ai-radek .kk-odkaz {
    white-space: nowrap; margin-top: 8px; padding: 0; display: inline-block; }

/* ---- manažerské shrnutí (návrh `.msum`/`.mtxt`/`.mfacts`/`.mf`) ---- */
.kk-shrnuti { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr); gap: 0; align-items: stretch; }
.kk-shrnuti-text { padding: 15px 18px 17px; }
.kk-shrnuti-text p { margin: 0 0 11px; font-size: 14.5px; line-height: 1.6; color: var(--brown-600); text-wrap: pretty; }
.kk-shrnuti-text p:last-child { margin-bottom: 0; }
/* E35: věty stavu pod textem (zastarání, čekající návrhy, průběh a výsledek sestavení). Prázdná
   živá oblast (`role="status"`) místo nezabírá; poslední odstavec nad ní okraj nemá. */
.kk-shrnuti-text > p:last-of-type { margin-bottom: 0; }
.kk-shrnuti-text p.kk-shrnuti-prazdne { color: var(--brown-400); }
.kk-shrnuti-stav { margin-top: 11px; font-size: 13.5px; line-height: 1.5; color: var(--brown-500); text-wrap: pretty; }
.kk-shrnuti-stav:first-child { margin-top: 0; }
.kk-shrnuti-stav:empty { display: none; }
.kk-shrnuti-stav.je-varovani { color: color-mix(in srgb, var(--warning) 80%, var(--brown-900)); }
.kk-shrnuti-stav .kk-odkaz { font-size: 13.5px; margin-left: 6px; }
.kk-aih .kk-odkaz:disabled { color: var(--brown-400); cursor: default; text-decoration: none; }
.kk-fakta { display: flex; flex-direction: column; background: #f6f8e6; border-left: 1px solid #e8ebd4; padding: 9px 18px 11px; }
.kk-fakt {
    display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 12px;
    padding: 7px 0; border-bottom: 1px solid #e8ebd4;
    font-size: 13.5px; align-items: baseline;
}
.kk-fakt:last-child { border-bottom: 0; }
.kk-fakt .k { font-size: 11px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--green-700); line-height: 1.35; }
.kk-fakt .v { color: var(--brown-700); line-height: 1.45; text-wrap: pretty; }

/* ---- propojení na jiné klienty (návrh `.pgrp`/`.plnk`) ---- */
.kk-vazby-skupina { padding: 11px 0 3px; border-bottom: 1px solid var(--cream-200); }
.kk-vazby-skupina:last-child { border-bottom: 0; }
.kk-vazby-skupina .gh { font-size: 12.5px; font-weight: 600; color: var(--brown-400); }
.kk-vazby-skupina .gh b { color: var(--brown-500); font-family: var(--font-cisla); }
.kk-vazba { display: block; padding: 7px 0 8px; text-align: left; text-decoration: none; width: 100%; }
.kk-vazba .nm { display: block; font-size: 14.5px; font-weight: 600; color: var(--green-700); line-height: 1.35; }
.kk-vazba .rl { display: block; font-size: 12.5px; color: var(--brown-400); margin-top: 2px; line-height: 1.4; }
.kk-vazba:hover .nm { color: var(--brown-700); }

/* Odkaz v hlavičce karty (návrh `.lnk`). */
.kk-odkaz {
    font-size: 14px; font-weight: 600; color: var(--green-700);
    background: transparent; border: 0; padding: 0;
    font-family: var(--font-body); text-decoration: none; cursor: pointer;
}
.kk-odkaz:hover { text-decoration: underline; }
/* Odkaz na část, která ještě není v provozu — týž stav jako zesedlá záložka: je vidět,
   že tam patří, ale nikam nevede a kurzor to neslibuje. */
.kk-odkaz.je-zasedly {
    color: color-mix(in srgb, var(--brown-400) 55%, transparent);
    cursor: default;
}
.kk-odkaz.je-zasedly:hover { text-decoration: none; }

/* Prázdná plocha záložky, která ještě nemá obsah (návrh `.kempty`). */
.kk-prazdno {
    padding: 26px 22px;
    border: 1px dashed var(--border-hairline);
    border-radius: var(--radius-md);
    background: var(--cream-50);
    font-size: 14px; color: var(--brown-400); line-height: 1.6;
    text-wrap: pretty; max-width: 620px;
}


/* ---- časová osa (E13, návrh `akVM`/`row`, CSS ř. 789 až 813: `.ctl .tlh .tlr .dt .d2.late .tlnode
   .tlk .tst .tlc .tlw`) ---------------------------------------------------------------------
   Čísla 1:1 z návrhu, třídy s předponou `kk-`. Odstupy dává kontejner: hlavička `.kk-ksech` má
   mezeru dolů jako návrh (`margin-bottom: 14px` v šabloně), řádky nesou jen vnitřní odsazení. */
.kk-ksech { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
/* „+ Přidat" vpravo jako v návrhu (`.fsep{flex:1}`, nález revize E13 N5): mezera jmenovitě, obecné
   `.kk-mezera` list nemá (viz harmonika níž). Bez ní stál „+ Přidat" 24 px za pilulkou segmentů. */
.kk-ksech .kk-mezera { flex: 1 1 auto; }
.kk-seg {
    display: inline-flex; flex-wrap: nowrap; background: var(--surface-sunken);
    border: 1px solid var(--border-hairline); border-radius: var(--radius-pill); padding: 3.5px;
}
.kk-seg a {
    border: 0; background: transparent; font: 600 14px var(--font-body); color: var(--brown-400);
    padding: 6px 14px; border-radius: var(--radius-pill); white-space: nowrap; text-decoration: none;
}
.kk-seg a.je-zvoleny { background: var(--white); color: var(--brown-700); box-shadow: var(--shadow-xs); }
.kk-seg .n { font-family: var(--font-cisla); font-size: 12px; opacity: .55; margin-left: 6px; }
.kk-seg.kk-seg-sm { padding: 2.5px; }
.kk-seg.kk-seg-sm a { font-size: 13px; padding: 4px 11px; }
/* Prázdné `.n` drží odstup jako návrh (`n:''`, `.seg.sm .n` 5 px), jinak by byl pruh o 26 px užší. */
.kk-seg.kk-seg-sm .n { font-size: 11px; margin-left: 5px; }

/* „+ Přidat" s nabídkou (návrh `.mjadd` + `.kmenu`): nativní `<details>`, podoba položek je
   `.kk-dalsi-polozka` z nabídky „···" (táž čísla jako `.kmenu button`). */
.mck .kk-mjadd { position: relative; flex: 0 0 auto; }
.mck .kk-mjadd > summary { list-style: none; }
.mck .kk-mjadd > summary::-webkit-details-marker { display: none; }
.mck .kk-mjadd > summary::marker { content: ""; }
.mck .kk-mjadd .kk-dalsi-menu { top: 44px; left: auto; right: 0; }

.kk-c.kk-c-pad { padding: 15px 17px; overflow: visible; }
.kk-ctl { position: relative; }
.kk-ctl::before {
    content: ""; position: absolute; left: 127px; top: 8px; bottom: 8px; width: 1px; background: var(--cream-200);
}
.kk-tlh { display: flex; align-items: center; gap: 14px; padding: 6px 0 14px; }
.kk-tlh.je-druha { padding-top: 16px; }
.kk-tlh .t {
    font-size: 11.5px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase;
    color: var(--brown-400); white-space: nowrap;
}
.kk-tlh .ln { flex: 1; height: 1px; background: var(--cream-200); }
.kk-tl-prazdno { padding: 2px 0 6px 148px; font-size: 14px; color: var(--brown-400); position: relative; }
.kk-tl-prazdno.je-plan { padding-bottom: 18px; }

/* ŘÁDEK: ruční je TLAČÍTKO přes celou šířku (klik i Enter otevře dialog), systémový `div`.
   Tlačítku se vrací vzhled řádku (písmo, okraje, zarovnání), jinak by převzalo podobu z prohlížeče. */
.kk-tlr {
    display: grid; grid-template-columns: 92px 42px 132px minmax(0, 1fr) 168px; gap: 0 14px;
    align-items: start; padding: 9px 0 13px; width: 100%;
}
button.kk-tlr {
    border: 0; background: transparent; margin: 0; text-align: left; font: inherit; color: inherit;
    cursor: pointer;
}
button.kk-tlr:hover .kk-tlc { border-color: var(--brown-300); }
button.kk-tlr:focus-visible { outline: 2px solid var(--focus-ring, var(--green-600)); outline-offset: 2px; border-radius: var(--radius-md); }
.kk-dt { text-align: right; padding-top: 9px; }
.kk-dt .d1 { display: block; font: 600 13.5px var(--font-cisla); color: var(--brown-600); }
.kk-dt .d2 { display: block; font-size: 12.5px; color: var(--brown-400); margin-top: 3px; }
.kk-dt .d2.late { color: #c0472e; font-weight: 600; }
.kk-tlnode {
    width: 40px; height: 40px; border-radius: 50%; background: var(--white);
    border: 1.5px solid var(--cream-200); display: flex; align-items: center; justify-content: center;
    position: relative; z-index: 1;
}
.kk-tlnode svg {
    width: 18px; height: 18px; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round;
    stroke: var(--brown-400);
}
.kk-tlnode.plan { border-color: #e6dcc9; }
.kk-tlnode.done { border-color: var(--green-300); background: var(--green-100); }
.kk-tlnode.done svg { stroke: var(--green-700); }
.kk-tlk { padding-top: 8px; }
.kk-tlk .kn { display: block; font-size: 14px; font-weight: 600; color: var(--brown-700); }
.kk-tst {
    display: inline-flex; align-items: center; gap: 6px; margin-top: 6px; padding: 3px 9px; border-radius: 6px;
    font: 600 12px var(--font-body); background: var(--cream-100); color: var(--brown-500);
}
.kk-tst.done { background: var(--green-100); color: var(--green-700); }
.kk-tlc {
    background: var(--cream-50); border: 1px solid var(--border-hairline); border-radius: var(--radius-md);
    padding: 11px 14px 12px; min-width: 0;
}
.kk-tlc .tt {
    display: flex; min-width: 0; font-size: 14.5px; font-weight: 600; color: var(--brown-700);
    line-height: 1.35; align-items: baseline; gap: 8px; flex-wrap: wrap;
}
.kk-tlc .tt em { font-style: normal; font-size: 12.5px; font-weight: 600; color: var(--green-700); }
.kk-tlc .bd {
    display: block; font-size: 13.5px; color: var(--brown-500); line-height: 1.5; margin-top: 5px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.kk-tlw { display: flex; align-items: center; gap: 9px; padding-top: 11px; min-width: 0; }
.kk-tlw .nm { font-size: 13.5px; color: var(--brown-600); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Kolečko na místě (třída místa, ADR-0164 §7): 28 px jako návrh (`.mini` s `width:28px`). */
.kk-tlw .ava.kk-tl-ava { width: 28px; height: 28px; flex: 0 0 28px; font-size: 12px; }

/* Štítky použité v rodině pod polem Štítek (Z3) a účastníci ze seedu bez klíče. */
.kk-osa-stitky { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.kk-osa-dalsi { margin: 7px 0 0; font-size: 13px; color: var(--brown-400); }

/* ── ZÁLOŽKA MAJETEK: HARMONIKA A JEDNA TABULKA (SPEC E22, ADR-0159 §7) ─────────────────────
   1:1 s návrhem 25. 9. 2026: harmonika `.fsec`/`.fsh` (sdílí `kk-harmonika` s Dokumenty), uvnitř
   knihovní tabulka v podobě Střední bez obalu (`table.tb`) a krémová patička `.kxft`. Deset
   segmentů a Peněžní tok odešly; blok se vybírá ve sloupci Kategorie řádku pod záhlavím. Třída
   `kk-mj-{blok}` na obalu tabulky nese JEN šířky sloupců a `min-width` z návrhu (`MJB[].minw`,
   `VSECOLS` 1160 px) — vzhled dává knihovna (ADR-0131). */
/* Okraj řádků 17 px jako hlavička harmoniky (návrh `.kxtb`): přes `.tabulka`, jinak by pravidlo
   prohrálo s odsazením Střední podoby (`.tabulka.je-stredni tbody td` má vyšší specifičnost).
   Poslední záhlaví si pravý okraj nechává z knihovny: stojí v něm lupa (`th.tbql`). */
.kk-mj-tabulka .tabulka th:first-child, .kk-mj-tabulka .tabulka td:first-child { padding-left: 17px; }
.kk-mj-tabulka .tabulka td:last-child { padding-right: 17px; }
.kk-mj-vse .tabulka { min-width: 1160px; }
.kk-mj-portfolia .tabulka { min-width: 1060px; }
.kk-mj-drzby .tabulka, .kk-mj-pe .tabulka, .kk-mj-alternativy .tabulka, .kk-mj-likvidita .tabulka { min-width: 1020px; }
.kk-mj-nemovitosti .tabulka { min-width: 1080px; }
.kk-mj-zavazky .tabulka { min-width: 1040px; }

/* Šířky sloupců z návrhu (`VSECOLS`, `MJB[].cols[].w`); max-width drží ořez trojtečkou. */
.kk-mj-tabulka .sl-kategorie { width: 160px; }
.kk-mj-tabulka .sl-rozsah { width: 130px; }
.kk-mj-tabulka .sl-entita { width: 210px; max-width: 210px; }
.kk-mj-tabulka .sl-kc { width: 150px; }
.kk-mj-tabulka .sl-mena { width: 86px; }
.kk-mj-tabulka .sl-oceneni { width: 146px; }
.kk-mj-tabulka .sl-penize { width: 118px; }
.kk-mj-pe .sl-penize { width: 104px; }
.kk-mj-tabulka .sl-entita-pf { width: 194px; max-width: 194px; }
.kk-mj-tabulka .sl-ter { width: 80px; }
/* YTD (E32, návrh `MJCOLS` w 86px, vpravo, `num`): neřadí se, „nevíme" tlumeně s titulkem. */
.kk-mj-tabulka .sl-ytd { width: 86px; }
/* „nevíme" přes `.kn-tabulka … td.num` z knihovny (číslo brown-700, 600): tlumeně jako `muted` návrhu. */
.kn-tabulka.kk-mj-tabulka .tabulka td.sl-ytd.je-nevime { color: var(--brown-400); font-weight: 400; }
.kk-mj-tabulka .sl-custody { width: 184px; max-width: 184px; }
.kk-mj-tabulka .sl-oceneni-pf { width: 132px; }
.kk-mj-tabulka .sl-druh { width: 160px; }
.kk-mj-tabulka .sl-entita-dh { width: 190px; max-width: 190px; }
.kk-mj-tabulka .sl-likvidita { width: 150px; }
.kk-mj-tabulka .sl-splatnost { width: 112px; }
.kk-mj-tabulka .sl-spravce { width: 170px; max-width: 170px; }
.kk-mj-tabulka .sl-oceneni-pe { width: 126px; }
.kk-mj-tabulka .sl-strategie { width: 186px; max-width: 186px; }
.kk-mj-tabulka .sl-prislib { width: 104px; }
.kk-mj-tabulka .sl-lokalita { width: 160px; max-width: 160px; }
.kk-mj-tabulka .sl-hypoteka, .kk-mj-tabulka .sl-obsazenost { width: 112px; }
.kk-mj-tabulka .sl-oceneni-re { width: 124px; }
.kk-mj-tabulka .sl-druh-alt { width: 126px; }
.kk-mj-tabulka .sl-ulozeni { width: 200px; max-width: 200px; }
.kk-mj-tabulka .sl-entita-alt { width: 180px; max-width: 180px; }
.kk-mj-tabulka .sl-ocenovatel { width: 170px; max-width: 170px; }
.kk-mj-tabulka .sl-stari { width: 124px; }
.kk-mj-tabulka .sl-ucet { width: 140px; }
.kk-mj-tabulka .sl-entita-cash { width: 186px; max-width: 186px; }
.kk-mj-tabulka .sl-splatnost-cash { width: 126px; }
.kk-mj-tabulka .sl-typ-uctu { width: 200px; max-width: 200px; }
.kk-mj-tabulka .sl-typ { width: 130px; }
.kk-mj-tabulka .sl-sazba { width: 92px; }
.kk-mj-tabulka .sl-ltv { width: 86px; }
.kk-mj-tabulka .sl-fixace { width: 124px; }
.kk-mj-tabulka .sl-splatnost-zav { width: 170px; }

/* ZÁVAZEK VE VŠE: hodnota bez znaménka v brown-400 (návrh `.tb td.neg span`, V3); v bloku Závazky
   je zůstatek obyčejné číslo jako v návrhu. */
.kn-tabulka.kk-mj-vse .tabulka td.num.je-zavazek { color: var(--brown-400); }
.kk-majetek-odkaz { color: inherit; text-decoration: none; }
.kk-majetek-odkaz:hover { color: var(--green-700); }
.kk-mj-tabulka td.kk-majetek-prazdno { color: var(--brown-400); }

/* PATIČKA `.kxft`: počet vlevo, součty vpravo — štítek brown-400, číslo Inter Tight jako `.num`
   návrhu; Závazky tlumeně (návrh `foot` s `brown-400`). */
.kk-harmonika-pata.kk-majetek-pata { flex-wrap: wrap; gap: 16px; line-height: 1.55; }
.kk-mj-soucet { display: inline-flex; align-items: baseline; gap: 8px; }
.kk-mj-stitek { color: var(--brown-400); }
.kk-mj-cislo {
    font-family: var(--font-cisla); font-weight: 700; letter-spacing: -.01em; color: var(--brown-700);
    white-space: nowrap;
}
.kk-mj-cislo.je-tlumeny { color: var(--brown-400); }

/* ── ZÁLOŽKA CÍLE A PLÁN ─────────────────────────────────────────────────────────────────
   Podoba je tady, v GLOBÁLNÍM listu karty, ne ve scoped CSS komponenty: záložka skládá
   tabulky (`.tabulka`) a pilulky, na které scoped pravidlo komponenty nedosáhne — týž důvod
   jako u `dialog.css` a `upravitelna-hodnota.css`. */

/* Rámec plánu: hustá mřížka popisek/hodnota, ne karta na každý údaj — je to pět čísel,
   která se čtou najednou. */
.kk-plan-ramec {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 28px;
    padding: 2px 0 6px;
}
.kk-plan-ramec > div { min-width: 96px; }
.kk-plan-ramec dt {
    margin: 0;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--brown-400);
}
.kk-plan-ramec dd {
    margin: 2px 0 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--brown-800);
}

.kk-plan-poznamka {
    margin: 6px 0 0;
    font-size: 13px;
    line-height: 1.5;
    color: var(--brown-600);
}

/* Čtyři čísla cíle vedle sebe; pod 720 px se zalomí na dvě řady. */
.kk-plan-kpi {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px 20px;
    padding: 2px 0 8px;
}
@media (max-width: 720px) {
    .kk-plan-kpi { grid-template-columns: repeat(2, 1fr); }
}
.kk-plan-kpi dt {
    margin: 0;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--brown-400);
}
.kk-plan-kpi dd {
    margin: 3px 0 0;
    font-size: 19px;
    font-weight: 600;
    line-height: 1.2;
    color: var(--brown-800);
    font-variant-numeric: tabular-nums;
}
.kk-plan-kpi .pod {
    display: block;
    margin-top: 2px;
    font-size: 12px;
    color: var(--brown-400);
}

.kk-plan-veta {
    margin: 4px 0 0;
    font-size: 13px;
    line-height: 1.55;
    color: var(--brown-700);
}

/* Výtka NENÍ chyba aplikace — je to věta o podkladech, kterou musí poradce vidět dřív,
   než číslo někam napíše. Proto vlevo výrazná linka, ne červené pole. */
.kk-plan-vytka {
    margin: 8px 0 0;
    padding: 7px 10px;
    border-left: 3px solid #c8871f;
    background: color-mix(in srgb, #c8871f 7%, transparent);
    font-size: 13px;
    line-height: 1.5;
    color: var(--brown-700);
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}

/* Křivka plánu. Plátno má `preserveAspectRatio="none"`, takže se čára musí kreslit
   s `vector-effect="non-scaling-stroke"` — jinak je vlevo tenčí než vpravo. */
.kk-plan-graf { padding: 4px 0 0; }
.kk-plan-graf-radek { display: flex; align-items: stretch; gap: 8px; }

/* Svislá osa je SOUROZENEC plátna (viz komentář v komponentě). Popisky visí na hodnotě
   mřížky, takže se posouvají s ní. */
.kk-plan-osa-y {
    position: relative;
    flex: none;
    width: 52px;
    height: 220px;
    font-size: 11px;
    color: var(--brown-400);
}
.kk-plan-osa-y span {
    position: absolute;
    right: 0;
    transform: translateY(-50%);
    white-space: nowrap;
}
.kk-plan-platno { position: relative; flex: 1; min-width: 0; }
.kk-plan-graf svg {
    display: block;
    width: 100%;
    height: 220px;
}

/* Značka začátku čerpání: svislá čára přes plátno a štítek u horního okraje. */
.kk-plan-renta {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 0;
    border-left: 1px dashed color-mix(in srgb, var(--brown-800) 34%, transparent);
    pointer-events: none;
}
.kk-plan-renta .stitek {
    position: absolute;
    top: 2px;
    left: 5px;
    padding: 1px 6px;
    border-radius: var(--radius-sm);
    background: var(--cream-100, #fbf8f2);
    border: 1px solid var(--cream-200);
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: .02em;
    color: var(--brown-600);
    white-space: nowrap;
}
.kk-plan-graf .mrizka {
    stroke: color-mix(in srgb, var(--brown-800) 10%, transparent);
    stroke-width: 1;
}
.kk-plan-graf .plocha { fill: color-mix(in srgb, var(--green-600) 12%, transparent); }
.kk-plan-graf .krivka {
    fill: none;
    stroke: var(--green-600);
    stroke-width: 2;
    stroke-linejoin: round;
}
.kk-plan-osa {
    display: flex;
    justify-content: space-between;
    margin-top: 2px;
    font-size: 11px;
    color: var(--brown-400);
}

/* Odkaz na celý dokument plánu v hlavičce karty — tichý, vedle pilulky stavu. */
.kk-plan-odkaz {
    margin-right: 10px;
    font-size: 12px;
    font-weight: 600;
    color: var(--barva-akcent-text, var(--brown-600));
    text-decoration: none;
}
.kk-plan-odkaz:hover { text-decoration: underline; }

/* ---- záložka Struktura (E28, návrh 25. 9. 2026 `kxSpecs` struktura): harmonika Firmy, holdingy a fondy
   se Střední tabulkou knihovny bez obalu (krajní buňky 17 px, šířky z `ent.cols`, minw 1060 px)
   a harmonika Vlastnické vazby se stromem (`.tree`/`.tnode`). Tabulka entit, sekce s nadpisem nad
   kartou a výběr hlavy v levém sloupci odešly. ---- */
.kk-firmy-tabulka .tabulka th:first-child, .kk-firmy-tabulka .tabulka td:first-child { padding-left: 17px; }
/* Název firmy je titulek řádku (návrh `KXT_(r.name, 'tt2')`): váhu nese buňka, ne až tlačítko v ní. */
.kk-firmy-tabulka .tabulka td:first-child { font-weight: 600; }
.kk-firmy-tabulka .tabulka th:last-child, .kk-firmy-tabulka .tabulka td:last-child { padding-right: 17px; }
.kk-firmy-tabulka tbody tr:last-child td { border-bottom: 0; }
.kk-firmy-tabulka .tabulka { min-width: 1060px; }
.kk-firmy-tabulka th.sl-firmy-firma { width: 220px; }
.kk-firmy-tabulka th.sl-firmy-forma { width: 120px; }
.kk-firmy-tabulka th.sl-firmy-kdo { width: 150px; }
.kk-firmy-tabulka th.sl-firmy-podil { width: 70px; }
.kk-firmy-tabulka th.sl-firmy-hodnota { width: 140px; }
.kk-firmy-tabulka th.sl-firmy-ico { width: 96px; }
.kk-firmy-tabulka th.sl-firmy-sidlo { width: 110px; }
/* Strom v těle harmoniky (návrh `.tree.kxtb` s odsazením 12/17/16 px). */
.kk-vazby-telo { padding: 12px 17px 16px; }

/* Strom vazeb: mřížka jméno · podíl · štítek, odsazení úrovně dává markup (24 px/úroveň,
   `KartaStruktura.OdsazeniUrovne`) — číslo je jedno a bydlí u toho, kdo úrovně počítá. */
.kk-strom { font-size: 14px; }
.kk-uzel {
    display: grid; grid-template-columns: 1fr auto auto; gap: 14px; align-items: center;
    padding: 9px 0; border-bottom: 1px solid var(--cream-200);
}
.kk-uzel:last-child { border-bottom: none; }
.kk-uzel .nm { display: block; font-weight: 600; color: var(--brown-700); }
.kk-uzel .sb { display: block; font-size: 12.5px; color: var(--brown-400); margin-top: 3px; line-height: 1.4; }
.kk-uzel .pc { font-family: var(--font-cisla); font-weight: 700; font-size: 13px; color: var(--brown-500); white-space: nowrap; }

.kk-ava.je-foto { background-size: cover; background-position: center; color: transparent; }

/* Legenda a věta pod rodokmenem (`.kk-rodokmen-telo`, E11): v `majetek.css` jsou zavřené pod `.mjt`
   (klientská tvář), takže by se na kartě kreslily jako holé odrážky. Tady TÁŽ pravidla se sépiovými
   tokeny back office; tečky nesou TÉŽ barvy generací jako kolečka na stromě — kdyby se rozešly,
   legenda by lhala (viz komentář v majetek.css). Mřížka generací, ústava a překryv pro nahrání fotky
   do kroužku staré Rodiny odešly v E27. */
.kk-rodokmen-telo .mjt-rk-jak { margin: 0 0 6px; text-align: center; font-size: 11px; color: var(--brown-400); }
.kk-rodokmen-telo .mjt-rk-legenda {
    list-style: none; margin: 0; padding: 0;
    display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px;
    font-size: 10.5px; color: var(--brown-400);
}
.kk-rodokmen-telo .mjt-rk-legenda li { display: inline-flex; align-items: center; gap: 6px; }
.kk-rodokmen-telo .mjt-rk-tecka { width: 9px; height: 9px; border-radius: 50%; display: inline-block; background: var(--gc, var(--brown-300)); }
.kk-rodokmen-telo .mjt-rk-tecka.gen-0 { --gc: #8A5A2B; }
.kk-rodokmen-telo .mjt-rk-tecka.gen-1 { --gc: #A6462E; }
.kk-rodokmen-telo .mjt-rk-tecka.gen-2 { --gc: #AF7A1C; }
.kk-rodokmen-telo .mjt-rk-tecka.gen-3 { --gc: #6E8B2A; }
.kk-rodokmen-telo .mjt-rk-tecka.gen-4 { --gc: #2F7E7A; }
.kk-rodokmen-telo .mjt-rk-tecka.gen-5 { --gc: #7A5EA6; }
.kk-rodokmen-telo .mjt-rk-cara { width: 18px; height: 0; border-top: 2px solid var(--brown-500); display: inline-block; }
.kk-rodokmen-telo .mjt-rk-cara.partner { border-top-style: dashed; }

/* RODINA BEZ HLAVY (8. 9. 2026): rámeček z návrhu s větou místo prázdna. Rámeček není klikací
   (fotka se nahrává až hlavě), proto `je-bez-akce`; výběr hlavy je v Osobních údajích (OB-22). */
.kk-foto-bez-hlavy span { font-size: 12.5px; }


/* ═══ ODSTUPY MEZI BLOKY ZÁLOŽKY — DÁVÁ JE KONTEJNER, NE BLOK (23. 9. 2026) ══════════════════════
   Dřív si odstup nesl každý blok sám: karta `margin-bottom: 16px`, sekce 23 px, mřížka a panel
   Alfréda na Přehledu inline `style="margin-bottom:16px"`, hlavička Profilu 14 px. Blok, který ho
   neměl, se přilepil k dalšímu — naposledy prázdný stav Přehledu nad Manažerským shrnutím (od opravy
   19. 9., kdy prázdný stav přestal nahrazovat celou záložku). Rozestup proto teď dává KONTEJNER přes
   `gap` a jeho přímí potomci vnější svislé okraje nenesou: nový ani zapomenutý blok už nic neslepí
   ani nezdvojí.
   · `.kk-hlavni` je sloupec, do kterého se kreslí KAŽDÁ záložka karty: bloky 16 px (`--space-4`).
   · Záložka složená ze sekcí s nadpisy (Struktura): 24 px (`--space-6`, dřív 23 px mimo škálu).
   · `.kk-stoh` je tentýž sloupec pro skupinu uvnitř záložky (těsná varianta `.je-tesny` pro hlavičku
     Profilu odešla se záložkou v E27).
   Hlídá to tests/Alfred.ArchitectureTests/KartaKlientaOdstupyTests. Pravidla stojí na konci souboru
   schválně: nulování okrajů tak vyhraje nad stejně silnými pravidly výš. */
.kk-hlavni,
.kk-stoh { display: flex; flex-direction: column; gap: var(--space-4); }
.kk-hlavni:has(> .kk-sekce) { gap: var(--space-6); }
.kk-hlavni > *,
.kk-stoh > * { margin-top: 0; margin-bottom: 0; }


/* ═══ DIALOG „VYPLNIT / DOPLNIT ZA KLIENTA" (ADR-0157 §7, E16; návrh `fl`, ř. 3254–3320) ══════════
   Hlavu a patičku kreslí prvek `Dialog` (knihovna, ADR-0161 §11) — tady je jen TĚLO: dvě volby
   vedle sebe (`.flopts`, `.upsm.flo`) a tabulka kapitol. Čísla jsou z návrhu (odsazení těla
   18/24/8, mezera voleb 10, volba 15/16, ikona 34 px). Globální list, ne scoped: obsah dialogu
   posílá komponenta jako `RenderFragment` do cizího prvku (týž důvod jako `dialog.css`). */
.mck .kk-vyp-telo { padding: 18px 24px 8px; overflow-y: auto; }
.mck .kk-vyp-volby { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.mck .kk-vyp-volba {
    display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
    padding: 15px 16px; text-align: left;
    border: 1px solid var(--border-hairline); border-radius: var(--radius-md);
    background: var(--white); font-family: var(--font-body);
}
/* Zvolená volba (návrh `.upsm.on`) — zelený rámeček i s vnitřním obtahem. */
.mck .kk-vyp-volba.je-zvolena {
    border-color: var(--green-500); background: #fbfcf2; box-shadow: 0 0 0 1px var(--green-500);
}
/* ZAŠEDLÁ VOLBA (rozhodnutí 40, OB-46) — stejná průhlednost jako zašedlá položka nabídky „···"
   (`.kk-dalsi-polozka.je-zasedla`, návrh `.dis`). Kurzor ani podbarvení nic neslibují. */
.mck .kk-vyp-volba.je-zasedla { opacity: .42; cursor: default; }
.mck .kk-vyp-ikona {
    width: 34px; height: 34px; border-radius: 10px; margin-bottom: 4px;
    display: flex; align-items: center; justify-content: center;
    background: var(--cream-100);
}
.mck .kk-vyp-ikona svg {
    width: 18px; height: 18px; fill: none; stroke: var(--brown-500); stroke-width: 1.7;
    stroke-linecap: round; stroke-linejoin: round;
}
.mck .kk-vyp-ikona.je-ai { background: #f1f5d4; }
.mck .kk-vyp-ikona.je-ai svg { stroke: var(--green-700); }
.mck .kk-vyp-nazev {
    display: flex; align-items: center; gap: 8px;
    font-size: 14px; font-weight: 600; color: var(--brown-700);
}
.mck .kk-vyp-popis {
    font-size: 12.5px; line-height: 1.5; color: var(--brown-400); margin-top: 2px; text-wrap: pretty;
}
/* Tabulka kapitol: šířky Stav 130 a Vyplněno 110 px z návrhu, název kapitoly tučně (`.tt2`).
   Rámeček dává knihovna; návrh ho má bez stínu (`.c` s `box-shadow: none`). */
.mck .kk-vyp .kn-tabulka { box-shadow: none; overflow: hidden; }
.mck .kk-vyp-tabulka table { table-layout: fixed; }
.mck .kk-vyp-tabulka th:nth-child(2) { width: 130px; }
.mck .kk-vyp-tabulka th:nth-child(3) { width: 110px; }
.mck .kk-vyp-kapitola { font-weight: 600; color: var(--brown-700); }
@media (max-width: 640px) {
    .mck .kk-vyp-volby { grid-template-columns: minmax(0, 1fr); }
}

/* ── ZÁLOŽKA DOKUMENTY: HARMONIKA A TABULKA (SPEC E14, ADR-0157 §4) ─────────────────────────
   1:1 s návrhem 24. 9. 2026 (`.fsec`, `.fsh`, `.kxtb`, `.kxft`, `.kchip2`, `.tt2`): bílá karta
   s vlasovým rámem, hlavička 50 px s tučným názvem, vpravo akce a šipka, pod ní tabulka bez
   vlastního rámu (knihovna `BezObalu`) a krémová patička s počtem. Harmoniku budou mít i další
   záložky nové karty — třídy proto nenesou jméno Dokumentů. */
.kk-harmonika {
    background: var(--white);
    border: 1px solid var(--border-hairline);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}
.kk-harmonika-hlava {
    display: flex; align-items: center; gap: 11px;
    min-height: 50px; padding: 0 17px;
    cursor: pointer;
}
.kk-harmonika-hlava:hover { background: var(--cream-50); }
/* Mezera jmenovitě: obecné `.kk-mezera` pravidlo list nemá (do E22 stálo za osiřelou závorkou
   a prohlížeč ho zahazoval; s ním odešlo), a zavést ho by pohnulo Přehledem. */
.kk-harmonika-hlava .kk-mezera, .kk-harmonika-pata .kk-mezera { flex: 1 1 auto; }
.kk-harmonika-nadpis {
    padding: 0; border: 0; background: none; cursor: pointer;
    font: 700 14.5px var(--font-body); letter-spacing: -.005em; color: var(--brown-700);
    white-space: nowrap;
}
.kk-harmonika-nadpis:focus-visible { outline: 0; box-shadow: var(--shadow-focus); border-radius: 4px; }
.kk-harmonika-sipka {
    width: 16px; height: 16px; flex: 0 0 auto; color: var(--brown-300);
    transition: transform var(--dur-fast) var(--ease-standard);
}
.kk-harmonika.je-otevrena .kk-harmonika-sipka { transform: rotate(180deg); }
.kk-harmonika-telo { border-top: 1px solid var(--cream-200); }
.kk-harmonika-telo .kk-nic { padding: 14px 17px; margin: 0; }
/* Prázdný výsledek filtru (prvek knihovny) má vlastní rámeček; v harmonice stojí na okraji 17 px. */
.kk-harmonika-telo .kn-prazdny-vysledek { margin: 14px 17px; }
.kk-harmonika-pata {
    display: flex; align-items: baseline; gap: 10px;
    padding: 10px 17px;
    border-top: 1px solid var(--border-hairline);
    background: var(--cream-50);
    font-size: 14px;
}

/* Tabulka dokumentů: okraje řádků 17 px jako hlavička harmoniky (návrh `.kxtb` první a poslední
   buňka), poslední řádek bez linky (patička má vlastní). Šířky sloupců z návrhu (`dkWrap`). */
.kk-dok-tabulka th:first-child, .kk-dok-tabulka td:first-child { padding-left: 17px; }
.kk-dok-tabulka th:last-child, .kk-dok-tabulka td:last-child { padding-right: 17px; }
.kk-dok-tabulka tbody tr:last-child td { border-bottom: 0; }
.kk-dok-tabulka .tabulka { min-width: 760px; }
.kk-dok-tabulka .sl-slozka { width: 170px; }
.kk-dok-tabulka .sl-velikost { width: 110px; }
.kk-dok-tabulka .sl-datum { width: 130px; }
.kk-dok-tabulka .sl-dodal { width: 180px; max-width: 180px; }
.kk-dok-tabulka td.sl-slozka, .kk-dok-tabulka td.sl-velikost,
.kk-dok-tabulka td.sl-datum, .kk-dok-tabulka td.sl-dodal { color: var(--brown-400); }
.kk-dok-nazev { display: inline-flex; align-items: center; gap: 9px; min-width: 0; max-width: 100%; }
.kk-dok-pripona {
    display: inline-flex; align-items: center; flex: 0 0 auto;
    height: 19px; padding: 0 7px;
    border: 1px solid var(--border-hairline); border-radius: 5px; background: var(--cream-100);
    font: 700 10.5px var(--font-cisla); letter-spacing: .07em; text-transform: uppercase;
    color: var(--brown-400);
}
.kk-dok-odkaz, .kk-dok-titul {
    min-width: 0; overflow: hidden; text-overflow: ellipsis;
    font-weight: 600; color: var(--brown-700); text-decoration: none;
}
.kk-dok-odkaz:hover { color: var(--green-700); }
.kk-dok-stav { flex: 0 0 auto; font-size: 12.5px; color: #a8741a; white-space: nowrap; }
.kk-dok-tabulka td.kk-dok-prazdno { color: var(--brown-400); }

/* Dialog Nahrát podklad (návrh `up`: tělo 18/24/6, plocha, pod ní nic). Výběr složky stojí nad
   plochou, protože soubor se ukládá hned po výběru (OB-41). */
.mck .kk-podklad .kk-podklad-telo { display: flex; flex-direction: column; gap: 16px; padding: 18px 24px 20px; }
.mck .kk-podklad .kk-podklad-slozka { max-width: 340px; }

/* ČTENÍ PODKLADU ALFRÉDEM (ADR-0161 §22, SPEC E33).
   Zaškrtnutí pod plochou je návrhové `label.lp` s `input.cbx` (14 px, brown-500, mezera 9 px,
   zaškrtávátko 16 px v zelené značky). Tělo dialogu není `.dlg-telo`, takže sem pravidlo
   „popisek nad polem" z `dialog.css` nedopadá a zaškrtávátko stojí vedle věty, ne nad ní. */
.mck .kk-podklad .kk-podklad-cist {
    display: inline-flex; align-items: center; gap: 9px; align-self: flex-start;
    font-size: 14px; color: var(--brown-500); cursor: pointer;
}
.mck .kk-podklad .kk-podklad-cist input { width: 16px; height: 16px; margin: 0; accent-color: var(--green-700); cursor: pointer; }

/* Tři kroky čtení (návrh `isRead`: tělo 24/24/26, hlava s jiskrou, `.upsteps`/`.upst`). */
.mck .kk-podklad .kk-podklad-cteni { padding: 24px 24px 26px; }
.mck .kk-podklad .kk-podklad-cteni-hlava { display: flex; align-items: center; gap: 11px; margin-bottom: 16px; }
.mck .kk-podklad .kk-podklad-jiskra { width: 20px; height: 20px; flex: 0 0 auto; color: var(--green-700); }
.mck .kk-podklad .kk-podklad-jiskra.je-v-behu { animation: kk-podklad-toc 2.4s linear infinite; }
.mck .kk-podklad .kk-podklad-cteni-nadpis { font-size: 16px; font-weight: 700; color: var(--brown-700); }
.mck .kk-podklad .kk-podklad-cteni-soubor {
    min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: 13.5px; color: var(--brown-400);
}
.mck .kk-podklad .kk-podklad-kroky { display: flex; flex-direction: column; gap: 9px; }
.mck .kk-podklad .kk-podklad-krok { display: flex; align-items: center; gap: 11px; font-size: 14.5px; color: var(--brown-300); }
.mck .kk-podklad .kk-podklad-tecka { width: 9px; height: 9px; border-radius: 50%; background: var(--cream-200); flex: 0 0 auto; }
.mck .kk-podklad .kk-podklad-krok.je-v-behu { color: var(--brown-700); font-weight: 600; }
.mck .kk-podklad .kk-podklad-krok.je-v-behu .kk-podklad-tecka { background: var(--green-500); animation: kk-podklad-pulz 1s infinite; }
.mck .kk-podklad .kk-podklad-krok.je-hotovy { color: var(--brown-500); }
.mck .kk-podklad .kk-podklad-krok.je-hotovy .kk-podklad-tecka { background: var(--green-600); }
.mck .kk-podklad .kk-podklad-veta { margin: 0; font-size: 14px; line-height: 1.55; color: var(--brown-500); }
@keyframes kk-podklad-toc { to { transform: rotate(360deg); } }
@keyframes kk-podklad-pulz { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) {
    .mck .kk-podklad .kk-podklad-jiskra.je-v-behu,
    .mck .kk-podklad .kk-podklad-krok.je-v-behu .kk-podklad-tecka { animation: none; }
}

/* Akce „Nechat Alfréda přečíst" v řádku Dokumentů (OB-93; návrh ji nemá). Tichý odkaz za
   názvem, zvýrazní se až při najetí na řádek nebo fokusem — hustá tabulka nesmí křičet. */
.mck .kk-dok-cist {
    flex: 0 0 auto; padding: 0; border: 0; background: none;
    font: inherit; font-size: 12.5px; color: var(--brown-400); white-space: nowrap; cursor: pointer;
}
.mck tr:hover .kk-dok-cist, .mck .kk-dok-cist:focus-visible { color: var(--green-700); text-decoration: underline; }

/* ═══ NÁVRHY ALFRÉDA (ADR-0161 §22–§27, SPEC E33; návrh `rvpill`, `rvm`, podoba Seznam) ═══
   Pilulka v hlavičce Dokumentů a dialog nad kartou. Globálně a pod `.kk-nv`: tělo dialogu
   posílá komponenta jako RenderFragment knihovního prvku `Dialog`, takže scoped CSS na něj
   nedosáhne (týž důvod jako `dialog.css`). Čísla jsou z návrhu. */
.mck .kk-nv-pilulka {
    display: inline-flex; align-items: center; gap: 8px; height: 39px; padding: 0 15px; margin-right: 9px;
    white-space: nowrap; border-radius: var(--radius-md); border: 1px solid #c9d97a; background: #fbfcf2;
    color: var(--brown-700); font: 600 14px var(--font-body); cursor: pointer;
}
.mck .kk-nv-pilulka:hover { background: #f6f8e6; border-color: var(--green-600); }
.mck .kk-nv-pilulka .kk-nv-ikona { width: 16px; height: 16px; color: var(--green-700); }
.mck .kk-nv-pilulka-pocet {
    font: 700 12px var(--font-cisla); background: var(--green-500); color: var(--brown-700);
    border-radius: 999px; padding: 2px 8px;
}
.kk-nv-ikona { width: 14px; height: 14px; flex: 0 0 auto; vertical-align: -2px; }

/* Hlava: průběh „n z m rozhodnuto" (návrh `.prog` 110 px a `.epn`) a věta pod titulkem. */
.mck .kk-nv .kk-nv-prubeh { display: inline-flex; align-items: center; gap: 9px; margin-right: 12px; }
.mck .kk-nv .kk-nv-pruh {
    display: inline-block; width: 110px; height: 4.5px; border-radius: 2.5px; background: var(--cream-200); overflow: hidden;
}
.mck .kk-nv .kk-nv-pruh i { display: block; height: 100%; background: var(--green-500); }
.mck .kk-nv .kk-nv-prubeh-text { font: 700 13px var(--font-cisla); color: var(--brown-500); white-space: nowrap; }
.mck .kk-nv .kk-nv-podtitulek { margin: 6px 0 0; font-size: 14px; line-height: 1.5; color: var(--brown-500); text-wrap: pretty; }

/* Tělo (návrh `.rvl2`/`.rd`: krémová plocha na výšku okna, roluje uvnitř). */
.mck .kk-nv .kk-nv-telo {
    max-height: calc(100vh - 258px); min-height: 400px; overflow-y: auto; overscroll-behavior: contain;
    background: var(--cream-50); padding: 16px 30px 22px;
}
.mck .kk-nv .kk-nv-nacitam { margin: 0; color: var(--brown-400); }

/* Seznam: tabulka `tb2` se skupinami podle cíle a akcemi na najetí. */
.mck .kk-nv-tabulka .sl-vyber { width: 35px; }
.mck .kk-nv-tabulka .sl-cislo { width: 40px; }
.mck .kk-nv-tabulka .sl-druh { width: 120px; }
.mck .kk-nv-tabulka .sl-jistota { width: 100px; }
.mck .kk-nv-tabulka .sl-stav { width: 220px; }
.mck .kk-nv-tabulka td { vertical-align: middle; }
.mck .kk-nv-cbx { width: 16px; height: 16px; accent-color: #7f930a; cursor: pointer; vertical-align: middle; margin: 0; }
.mck .kk-nv-tabulka tr.kk-nv-skupina td {
    padding: 6px 10px; background: var(--cream-50); border-bottom: 1px solid var(--border-hairline);
}
.mck .kk-nv-sk-nazev { font: 700 11.5px var(--font-body); letter-spacing: .11em; text-transform: uppercase; color: var(--brown-500); }
.mck .kk-nv-sk-pocet { font: 700 11.5px var(--font-cisla); color: var(--brown-300); margin-left: 9px; }
.mck .kk-nv-tabulka tr.kk-nv-radek { cursor: pointer; }
.mck .kk-nv-tabulka tr.kk-nv-radek.je-fokus td { background: var(--cream-50); }
.mck .kk-nv-tabulka tr.kk-nv-radek.je-vybrany td { background: var(--green-100); }
.mck .kk-nv-tabulka tr.kk-nv-radek.je-rozhodnuty .kk-nv-titulek { color: var(--brown-400); }
.mck .kk-nv-titulek { display: block; font-weight: 600; color: var(--brown-700); line-height: 1.35; }
.mck .kk-nv-souhrn { display: block; margin-top: 2px; font-size: 12.5px; line-height: 1.4; color: var(--brown-400); }
.mck .kk-nv-znacka {
    width: 24px; height: 24px; border-radius: 50%; background: var(--cream-100); color: var(--brown-400);
    font: 700 11.5px var(--font-cisla); display: inline-flex; align-items: center; justify-content: center;
}
.mck .kk-nv-znacka.je-ok { background: var(--green-500); color: var(--brown-700); }
.mck .kk-nv-znacka.je-ne { background: var(--cream-200); color: var(--brown-300); }
.mck .kk-nv-znacka .kk-nv-ikona { width: 13px; height: 13px; vertical-align: 0; }
.mck .kk-nv-jistota {
    display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: var(--brown-400); white-space: nowrap;
}
.mck .kk-nv-jistota i { width: 7px; height: 7px; border-radius: 50%; background: var(--green-500); flex: 0 0 auto; }
.mck .kk-nv-jistota.je-overit { color: #a8741a; }
.mck .kk-nv-jistota.je-overit i { background: #d9a531; }
.mck .kk-nv-akce { display: flex; gap: 7px; opacity: 0; transition: opacity .14s; }
.mck tr.kk-nv-radek:hover .kk-nv-akce, .mck tr.kk-nv-radek.je-fokus .kk-nv-akce,
.mck .kk-nv-akce:focus-within { opacity: 1; }
.mck .kk-nv-stav { display: flex; align-items: center; gap: 10px; }
.mck .kk-nv-stav-text { font-size: 12.5px; color: var(--brown-400); white-space: nowrap; }
.mck .kk-nv-rlb {
    height: 29px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--border-hairline); background: var(--white);
    font: 600 12.5px var(--font-body); color: var(--brown-500); cursor: pointer; white-space: nowrap;
}
.mck .kk-nv-rlb:hover { border-color: var(--brown-300); color: var(--brown-700); }
.mck .kk-nv-rlb.je-ok:hover { background: var(--green-500); border-color: var(--green-500); color: var(--brown-700); }
.mck .kk-nv-rlb:disabled { opacity: .5; cursor: default; }
.mck .kk-nv-odkaz {
    border: 0; background: transparent; padding: 0; font: 600 14px var(--font-body); color: var(--green-700); cursor: pointer;
}

/* Lišta výběru (návrh `.bulk`): tmavá, přilepená ke spodku seznamu. */
.mck .kk-nv-hromadne {
    position: sticky; bottom: 0; margin-top: 14px; display: flex; align-items: center; gap: 12px; padding: 13px 19px;
    border-radius: var(--radius-lg); background: var(--brown-700); color: var(--cream-100); box-shadow: 0 7px 23px rgba(46, 35, 26, .22);
}
.mck .kk-nv-hr-pocet { font-size: 14px; font-weight: 700; }
/* „Zrušit výběr" u pravého okraje lišty jako návrh (`.fsep{flex:1}`); mezera jmenovitě, obecné
   `.kk-mezera` list nemá (výtka oponenta dotažení po E22). */
.mck .kk-nv-hromadne .kk-mezera { flex: 1 1 auto; }
.mck .kk-nv-hromadne .kk-nv-rlb { background: transparent; border-color: rgba(244, 239, 228, .26); color: var(--cream-100); }
.mck .kk-nv-hromadne .kk-nv-rlb:hover { border-color: var(--cream-100); color: var(--white); }
.mck .kk-nv-hromadne .kk-nv-rlb.je-ok { background: var(--green-500); border-color: var(--green-500); color: var(--brown-700); }
.mck .kk-nv-hromadne .kk-nv-odkaz { color: var(--green-400); }
.mck .kk-nv-stranky { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 14px; }
.mck .kk-nv-str-text { font: 600 13px var(--font-cisla); color: var(--brown-400); }

/* Co jsem v podkladu nenašel (návrh `.rvmiss`) a prázdný stav (`.rvempty`). */
.mck .kk-nv-nenasel {
    margin-top: 16px; max-width: 760px; padding: 12px 14px; border: 1px dashed var(--border-hairline); border-radius: var(--radius-md);
}
.mck .kk-nv-sekce {
    font-size: 11.5px; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; color: var(--brown-300); margin: 0 0 11px;
}
.mck .kk-nv-nenasel .kk-nv-sekce { letter-spacing: .1em; margin-bottom: 6px; }
.mck .kk-nv-nenasel-veta { font-size: 13.5px; line-height: 1.55; color: var(--brown-500); }
.mck .kk-nv-prazdno { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 8px 6px 10px; max-width: 560px; }
.mck .kk-nv-prazdno .kk-nv-jistota {
    height: 22px; padding: 0 10px; border-radius: 999px; background: var(--green-100); color: #5f6d05; font-size: 12px;
}
.mck .kk-nv-prazdno-nadpis { font-size: 17px; font-weight: 600; color: var(--brown-700); }
.mck .kk-nv-prazdno-veta { font-size: 14.5px; line-height: 1.6; color: var(--brown-500); text-wrap: pretty; }

/* Detail návrhu (návrh `.rd`): lišta nahoře, titulek, dvě karty vedle sebe. */
.mck .kk-nv .kk-nv-telo:has(.kk-nv-detail) { padding: 0; }
.mck .kk-nv-dh {
    position: sticky; top: 0; z-index: 2; display: flex; align-items: center; gap: 14px; padding: 12px 30px;
    background: var(--white); border-bottom: 1px solid var(--border-hairline);
}
.mck .kk-nv-zpet {
    border: 0; background: transparent; padding: 0; display: inline-flex; align-items: center; gap: 8px;
    font: 600 13.5px var(--font-body); color: var(--brown-500); cursor: pointer; white-space: nowrap;
}
.mck .kk-nv-zpet:hover { color: var(--brown-700); }
.mck .kk-nv-pozice { font: 600 12.5px var(--font-cisla); color: var(--brown-300); margin-left: auto; }
.mck .kk-nv-krok {
    width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--border-hairline); background: var(--white);
    color: var(--brown-500); cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
}
.mck .kk-nv-krok:hover { border-color: var(--brown-300); color: var(--brown-700); }
.mck .kk-nv-dtop { padding: 26px 30px 0; }
.mck .kk-nv-dmeta { display: flex; align-items: center; gap: 11px; flex-wrap: wrap; }
.mck .kk-nv-druh {
    display: inline-flex; align-items: center; height: 21px; padding: 0 9px; border-radius: 999px;
    font: 700 10.5px var(--font-cisla); letter-spacing: .09em; text-transform: uppercase; white-space: nowrap;
    background: var(--cream-200); color: var(--brown-600);
}
.mck .kk-nv-druh.je-novy { background: var(--green-100); color: #5f6d05; }
.mck .kk-nv-cesta { font-size: 12.5px; font-weight: 600; line-height: 1.5; letter-spacing: .06em; text-transform: uppercase; color: var(--brown-300); }
.mck .kk-nv-dtitulek {
    font: 600 27px/1.25 var(--font-display); color: var(--brown-700); letter-spacing: -.02em; margin: 11px 0 0; max-width: 820px; text-wrap: pretty;
}
.mck .kk-nv-proc {
    margin: 14px 0 0; padding: 13px 16px; border-radius: var(--radius-md); background: #faf3e2; color: #8d6316;
    font-size: 13.5px; line-height: 1.6; max-width: 820px;
}
.mck .kk-nv-dtelo {
    display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); gap: 26px; padding: 22px 30px 32px; align-items: start;
}
.mck .kk-nv-karta, .mck .kk-nv-zdroj {
    background: var(--white); border: 1px solid var(--border-hairline); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
}
.mck .kk-nv-karta { padding: 8px 24px; }
.mck .kk-nv-pole { padding: 16px 0; border-bottom: 1px solid var(--cream-200); }
.mck .kk-nv-pole:last-child { border-bottom: 0; }
.mck .kk-nv-klic { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--brown-300); }
.mck .kk-nv-hodnoty { display: flex; align-items: center; gap: 13px; flex-wrap: wrap; margin-top: 9px; }
.mck .kk-nv-stare { font-size: 14px; color: var(--brown-400); text-decoration: line-through; text-decoration-color: var(--brown-200); }
.mck .kk-nv-sipka { color: var(--brown-300); display: inline-flex; }
.mck .kk-nv-nove {
    font-size: 15.5px; font-weight: 600; color: var(--brown-700); background: var(--green-100); border-radius: 9px; padding: 5px 11px; line-height: 1.45;
}
.mck .kk-nv-nove.je-cislo { font-family: var(--font-cisla); letter-spacing: -.01em; }
.mck .kk-nv-karta .kk-nv-vstup, .mck .kk-nv-karta .zpole input {
    flex: 1; min-width: 160px; border: 1px solid var(--green-500); border-radius: 8px; background: var(--white);
    font: 500 14px var(--font-body); color: var(--brown-700); padding: 5px 9px;
}
.mck .kk-nv-karta .kk-nv-vstup:focus, .mck .kk-nv-karta .zpole input:focus {
    outline: none; border-color: var(--green-600); box-shadow: 0 0 0 3px var(--green-100);
}
/* Odstavec shrnutí v úpravě (E35): víceřádkové pole přes šířku hodnot, výška roste rukou. */
.mck .kk-nv-karta .kk-nv-vstup.je-dlouhy { width: 100%; line-height: 1.5; resize: vertical; }
/* Odstavec shrnutí beze změny (E35): text ke čtení, bez zvýraznění nového. */
.mck .kk-nv-nove.je-beze-zmeny { font-size: 14px; font-weight: 400; color: var(--brown-500); background: none; padding: 0; }
.mck .kk-nv-bez { margin: 12px 0; font-size: 14px; color: var(--brown-500); }
.mck .kk-nv-dakce { display: flex; gap: 9px; margin-top: 20px; }
.mck .kk-nv-dakce .ikon-tl { height: 38px; padding: 0 17px; font-size: 14px; }
.mck .kk-nv-rozhodnuto {
    display: flex; align-items: center; gap: 12px; margin-top: 20px; padding: 13px 16px; border-radius: var(--radius-md);
    background: var(--white); border: 1px solid var(--border-hairline); font-size: 14px; color: var(--brown-500);
}
.mck .kk-nv-zdroj { padding: 22px 24px 20px; }
.mck .kk-nv-odstavec { font-size: 14px; line-height: 1.8; color: var(--brown-400); margin: 0 0 12px; text-wrap: pretty; }
.mck .kk-nv-zvyrazneni {
    background: var(--green-100); color: var(--brown-700); border-radius: 4px; padding: 2px 4px; box-shadow: 0 1px 0 var(--green-500);
}
.mck .kk-nv-odkaz-zdroje {
    display: block; margin-top: 16px; padding-top: 13px; border-top: 1px solid var(--cream-200);
    font: 600 12.5px var(--font-cisla); color: var(--green-700);
}

/* Patička: věta stavu vpravo od tlačítek (návrh `.mft`), výsledek zápisu nad ní, klávesy v kapsli.
   Tlačítka se nezalamují; ustupuje věta stavu (zalomí se) a nápověda kláves (tři tečky). Podoba
   patičky samotné je v `dialog.css` a sem nepatří (PodobaDialoguTests). */
.mck .kk-nv .tlacitko { white-space: nowrap; flex: 0 0 auto; }
.mck .kk-nv .kk-nv-pata-veta { flex: 1 1 180px; min-width: 0; font-size: 13px; line-height: 1.4; color: var(--brown-400); }
.mck .kk-nv .kk-nv-hotovo { margin: 0; padding: 10px 24px; font-size: 14px; color: var(--brown-600); background: var(--green-100); }
/* Něco vybraného se nezapsalo: věta je výtka, ne potvrzení (týž odstín jako věta Ověřit v detailu). */
.mck .kk-nv .kk-nv-hotovo.je-varovani { color: #8d6316; background: #faf3e2; }
.mck .kk-nv .kk-nv-klavesy {
    display: block; max-width: 470px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mck .kk-nv .kk-nv-klavesy .kk-nv-ikona { margin: 0 1px; }
.mck .kk-nv .kk-nv-klavesy .kk-nv-ikona { width: 13px; height: 13px; }


/* ═══ OSOBNÍ ÚDAJE NA ZÁLOŽCE KLIENT A RODINA (nová sada, SPEC E9, ADR-0157 §15) ═══════════════
   1:1 s návrhem 25. 9. 2026: harmonika `.fsec`/`.fsh` (sdílí `kk-harmonika` z E14), počet „n / 8"
   (`.fsh .cnt`, jantarově `.cnt.warn`, barva z tokenu `--warning` ztmavená k #a8741a návrhu),
   tělo `.fsb` (3/17/15 px), mřížka dvou sloupců `.fgrid` (mezera 28 px) a pole `.ff` (11 px nad
   i pod, linka pod polem, popisek velkými písmeny 11,5 px nad hodnotou 14 px). Hodnota je `dd`,
   takže platí pravidla nápovědy z upravitelna-hodnota.css (`dd > .uh`). */
.kk-osobni-pocet {
    font: 700 12px var(--font-cisla); color: var(--brown-400); white-space: nowrap;
}
.kk-osobni-pocet.je-varovani { color: color-mix(in srgb, var(--warning) 80%, var(--brown-900)); }
.kk-harmonika-telo.kk-osobni-telo { padding: 3px 17px 15px; }
.kk-osobni-mrizka {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 28px;
    margin: 0;
}
.kk-osobni-pole { padding: 11px 0; border-bottom: 1px solid var(--cream-200); min-width: 0; }
.kk-osobni-pole.je-siroke { grid-column: 1 / -1; }
.kk-osobni-pole dt {
    margin: 0 0 7px;
    font-size: 11.5px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase;
    color: var(--brown-400);
}
.kk-osobni-pole dd {
    margin: 0; min-width: 0;
    font-size: 14px; font-weight: 500; line-height: 1.55; color: var(--brown-700);
}
/* Věta u rodiny bez hlavy (OB-22) stojí v těle nad poli, ne v hlavičce (ADR-0161 §35). */
.kk-osobni-veta { margin: 12px 0 1px; font-size: 13.5px; line-height: 1.5; color: var(--brown-400); text-wrap: pretty; }
@media (max-width: 720px) {
    .kk-osobni-mrizka { grid-template-columns: minmax(0, 1fr); }
}

/* SLOT FOTKY BEZ HLAVY V NOVÉ SADĚ (OB-23): věta je delší než dřívější „Bez hlavy rodiny", takže
   se v rámečku zalomí s odsazením od hran. */
.kk-foto-bez-hlavy span { padding: 0 16px; line-height: 1.45; }


/* ═══ MANDÁT A PORTÁL (nová sada, SPEC E17, ADR-0160 §16 až §22) ═══════════════════════════════
   Sekce Mandát má harmoniku, počet a mřížku Osobních údajů z E9 (`kk-osobni-*`, návrh `.fsec`,
   `.fgrid`, `.ff`). Úvodní stránka portálu je harmonika s tabulkou `tb2` (prvek knihovny
   v podobě Dvouřádková) BEZ vlastního rámu: okraje řádků 17 px jako hlavička harmoniky (návrh
   `.kxtb` první a poslední buňka) a šířky sloupců z návrhu (`att.cols`, `minw` 900 px). */
/* `.tabulka` v selektoru: odsazení buňky dvouřádkové podoby (`.tabulka.je-dvouradkova tbody td`)
   je specifičtější než holé `td:first-child` a krajní okraj by spadl na 10 px. */
.kk-upo-tabulka .tabulka th:first-child, .kk-upo-tabulka .tabulka td:first-child { padding-left: 17px; }
.kk-upo-tabulka .tabulka th:last-child, .kk-upo-tabulka .tabulka td:last-child { padding-right: 17px; }
.kk-upo-tabulka tbody tr:last-child td { border-bottom: 0; }
.kk-upo-tabulka .tabulka { min-width: 900px; }
.kk-upo-tabulka th.sl-upo-zavaznost { width: 140px; }
.kk-upo-tabulka th.sl-upo-tlacitko { width: 130px; }
.kk-upo-tabulka th.sl-upo-otevre { width: 180px; }
/* Titulek je tlačítko, aby se dialog otevřel i klávesou; vypadá jako text řádku (`.rt`). Přes celou
   šířku buňky jako `.rt` návrhu: tlačítko se jinak smrskne na text i s `display: block`. */
.kk-upo-titulek {
    width: 100%; padding: 0; border: 0; background: none; cursor: pointer;
    font: inherit; font-weight: 600; color: var(--brown-700); text-align: left;
}
.kk-upo-titulek:focus-visible { outline: 0; box-shadow: var(--shadow-focus); border-radius: 4px; }
.kk-harmonika-hlava .kk-harmonika-akce:disabled { opacity: .5; cursor: not-allowed; }
.kk-upo-strop { margin: 12px 17px 0; }

/* ═══ PORADENSKÝ TÝM A EXTERNÍ SPECIALISTÉ (nová sada, SPEC E18, ADR-0160 §18) ════════════════
   Tytéž harmoniky a tabulky `tb2` jako Úvodní stránka portálu: krajní buňky 17 px, poslední řádek
   bez čáry a šířky sloupců 1:1 z návrhu (`team.cols` minw 900 px, `ext.cols` minw 760 px).
   Titulek řádku je tlačítko `.kk-upo-titulek` (týž vzhled jako u upozornění). */
.kk-tym-tabulka .tabulka th:first-child, .kk-tym-tabulka .tabulka td:first-child,
.kk-spec-tabulka .tabulka th:first-child, .kk-spec-tabulka .tabulka td:first-child { padding-left: 17px; }
.kk-tym-tabulka .tabulka th:last-child, .kk-tym-tabulka .tabulka td:last-child,
.kk-spec-tabulka .tabulka th:last-child, .kk-spec-tabulka .tabulka td:last-child { padding-right: 17px; }
.kk-tym-tabulka tbody tr:last-child td, .kk-spec-tabulka tbody tr:last-child td { border-bottom: 0; }
.kk-tym-tabulka .tabulka { min-width: 900px; }
.kk-tym-tabulka th.sl-tym-telefon { width: 150px; }
.kk-tym-tabulka th.sl-tym-email { width: 230px; }
.kk-tym-tabulka th.sl-tym-dostupnost { width: 170px; }
.kk-tym-tabulka th.sl-tym-hlavni { width: 140px; }
.kk-spec-tabulka .tabulka { min-width: 760px; }
.kk-spec-tabulka th.sl-spec-telefon { width: 180px; }
/* KOLEČKO ČLENA TÝMU (návrh `.mini` 30 px): třída místa pro prvek `Avatar`, žádná nová velikost
   v knihovně (ADR-0164 §7). Fotka konta, jinak iniciály. */
.kk-tym-ava {
    width: 30px; height: 30px; border-radius: 50%;
    background: var(--cream-200); color: var(--brown-600);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; flex: 0 0 auto;
    background-size: cover; background-position: center;
}
/* Nápověda z průvodce nad tabulkou specialistů (OB-51), odsazená jako věta stropu. */
.kk-spec-napoveda { margin: 12px 17px 0; }


/* ═══ ZÁLOŽKA IPS (nová sada, SPEC E21, ADR-0160 dodatek E21) ═════════════════════════════════
   Harmoniky z E9/E17 (`kk-harmonika`, `kk-osobni-*`), tabulky jako úvodní stránka portálu
   (`.kxtb` návrhu: krajní buňky 17 px, poslední řádek bez čáry). Šířky sloupců 1:1 z návrhu
   (`bands.cols` minw 860 px, `hist.cols` minw 760 px). */
.kk-ips-prazdno {
    max-width: none;
    display: flex; flex-wrap: wrap; align-items: center; gap: 16px;
}
.kk-ips-prazdno > span { flex: 1 1 260px; }
.kk-ips-tabulka .tabulka th:first-child, .kk-ips-tabulka .tabulka td:first-child,
.kk-ips-historie-tabulka .tabulka th:first-child, .kk-ips-historie-tabulka .tabulka td:first-child { padding-left: 17px; }
.kk-ips-tabulka .tabulka th:last-child, .kk-ips-tabulka .tabulka td:last-child,
.kk-ips-historie-tabulka .tabulka th:last-child, .kk-ips-historie-tabulka .tabulka td:last-child { padding-right: 17px; }
.kk-ips-tabulka tbody tr:last-child td, .kk-ips-historie-tabulka tbody tr:last-child td { border-bottom: 0; }
.kk-ips-tabulka .tabulka { min-width: 860px; }
.kk-ips-tabulka th.sl-ips-aktualne { width: 92px; }
.kk-ips-tabulka th.sl-ips-pruh { width: 210px; }
.kk-ips-tabulka th.sl-ips-cil { width: 76px; }
.kk-ips-tabulka th.sl-ips-rozsah { width: 110px; }
.kk-ips-tabulka th.sl-ips-stav { width: 130px; }
.kk-ips-historie-tabulka .tabulka { min-width: 760px; }
.kk-ips-historie-tabulka th.sl-ips-verze { width: 90px; }
.kk-ips-historie-tabulka th.sl-ips-schvaleno { width: 120px; }
.kk-ips-historie-tabulka th.sl-ips-podepsali { width: 260px; }

/* Třída aktiv a číslo verze jsou tlačítka (dialog i klávesou), vypadají jako text řádku (`.tt2`,
   `.num` návrhu). Přes celou šířku buňky jako `.kk-upo-titulek`. */
.kk-ips-trida {
    display: block; width: 100%; padding: 0; border: 0; background: none;
    font: inherit; font-weight: 600; color: var(--brown-700); text-align: left;
}
button.kk-ips-trida { cursor: pointer; }
.kk-ips-trida.je-cislo { font-family: 'Inter Tight', 'Inter', sans-serif; }
.kk-ips-trida:focus-visible { outline: 0; box-shadow: var(--shadow-focus); border-radius: 4px; }

/* POJMENOVANÁ PODOBA TRATI „pásmo v tabulce" (návrh `.band`): zóna pásma, cíl plnou čarou
   a „kde jsme" jako krátký blok uvnitř dráhy. Dnešní trať (`.kk-trat`) zůstává pro starou sadu. */
.kk-trat.je-pasmo-tabulky {
    display: block; width: 100%; min-width: 132px; height: 22px;
    border-radius: 6px; background: var(--cream-100);
}
.kk-trat.je-pasmo-tabulky .tg { width: 2px; border-left: 0; background: var(--green-700); }
.kk-trat.je-pasmo-tabulky .cr { top: 3px; bottom: 3px; width: 8px; border-radius: 3px; background: var(--brown-600); }
.kk-trat.je-pasmo-tabulky .cr.je-mimo { background: #c0472e; }

/* FINANČNÍ PLÁN JAKO HARMONIKA (OB-70/1): bloky dnešní záložky Cíle a plán jako podsekce
   s nadpisem `.sgh` návrhu, ne jako samostatné karty. */
.kk-ips-plan-telo { padding: 16px 17px 17px; }
.kk-plan-podsekce + .kk-plan-podsekce { margin-top: 4px; }
.kk-sgh {
    display: flex; align-items: center; gap: 12px;
    margin: 16px 0 9px; padding-bottom: 6px; border-bottom: 1px solid var(--border-hairline);
    font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--brown-300);
}
.kk-plan-podsekce:first-child .kk-sgh { margin-top: 0; }
.kk-plan-podsekce-telo { min-width: 0; }
.kk-sgh .n {
    display: inline-flex; align-items: center; gap: 10px; margin-left: auto; white-space: nowrap;
    font-size: 12px; font-weight: 600; letter-spacing: normal; text-transform: none; color: var(--brown-400);
}


/* ═══ KLIENT A RODINA II: ČLENOVÉ RODINY A RODOKMEN (nová sada, SPEC E11, dodatek E11 k ADR-0157) ═══
   1:1 s návrhem 25. 9. 2026 (`kxSpecs` rodina, `.fsec`/`.fsh`, `.kxtb`, `table.tb`, `.ftree`):
   harmonika z E9 (`kk-harmonika`), střední tabulka knihovny BEZ obalu s krajními buňkami 17 px
   a šířkami z `fam.cols` (minw 980 px), pilulka vztahu je pilulka aplikace (`pilulka-ok`, `pilulka-neutral`)
   a rodokmen jako strom z portálu (od 9. 10. 2026, ne ilustrace z návrhu). */
.kk-clen-tabulka .tabulka th:first-child, .kk-clen-tabulka .tabulka td:first-child { padding-left: 17px; }
.kk-clen-tabulka .tabulka th:last-child, .kk-clen-tabulka .tabulka td:last-child { padding-right: 17px; }
.kk-clen-tabulka tbody tr:last-child td { border-bottom: 0; }
.kk-clen-tabulka .tabulka { min-width: 980px; }
.kk-clen-tabulka th.sl-clen-jmeno { width: 200px; }
.kk-clen-tabulka th.sl-clen-vztah { width: 150px; }
.kk-clen-tabulka th.sl-clen-narozen { width: 84px; }
.kk-clen-tabulka th.sl-clen-generace { width: 108px; }
.kk-clen-tabulka th.sl-clen-role { width: 190px; }
/* Jméno je tlačítko (dialog i klávesou), vypadá jako text řádku (`.tt2` návrhu). */
.kk-clenove-jmeno {
    padding: 0; border: 0; background: none; cursor: pointer;
    font: inherit; font-weight: 600; color: var(--brown-700); text-align: left;
}
span.kk-clenove-jmeno { cursor: default; }
.kk-clenove-jmeno:focus-visible { outline: 0; box-shadow: var(--shadow-focus); border-radius: 4px; }
/* „+ Přidat" s nabídkou v hlavičce harmoniky (návrh `.fsh .mjadd .kmenu{top:36px}` a otevřená
   nabídka smí přesahovat kartu, `.fsec:has(.kmenu)`). */
.mck .kk-harmonika-hlava .kk-mjadd .kk-dalsi-menu { top: 36px; }
.kk-harmonika:has(.kk-mjadd[open]) { overflow: visible; position: relative; z-index: 5; }
.kk-harmonika:has(.kk-mjadd[open]) > .kk-harmonika-hlava { border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
/* RODOKMEN = STROM Z PORTÁLU (9. 10. 2026, docs/SPEC-pary-a-deti-ve-stromu.md): komponenta `Rodokmen`
   si nese vlastní podobu (`rodokmen-*`), tělo harmoniky jí dává odsazení a nesmí ji přerůst. Legenda
   a věta pod stromem čtou pravidla `.kk-rodokmen-telo .mjt-rk-*` výš. */
.kk-rodokmen-telo { padding: 18px 17px 18px; overflow: hidden; }
.kk-rodokmen-prazdno { margin: 0; font-size: 13.5px; color: var(--brown-400); }


/* ═══ PODKLAD PRO IPS (záložka IPS nové sady, SPEC E26, ADR-0160 §12 až §14) ═══════════════════
   1:1 s návrhem 25. 9. 2026 (`kxSpecs.podklad`, `.kxpt.hh`, `.sgh.kxph`, `.fsb`, `.fgrid`, `.ff`,
   `.ctag`, `.fsug`, `.kxtb`, `table.tb`, `.kxft`, `.kxrk`, ř. 483, 606 až 615, 697 až 704, 1106 až
   1176): harmonika `kk-harmonika` (kapitola nebo „Podklad pro IPS"), uvnitř části jako podsekce
   s nadpisem velkými písmeny, oddělené vlasovou linkou. Formulář je mřížka Osobních údajů z E9
   (`kk-osobni-*`) s odsazením `.fsb`; tabulka a pořadí jsou knihovní Střední tabulka v rámečku
   (okraj 17 px, krajní buňky 13 px, záhlaví krémové) s šířkami a minimální šířkou z návrhu.
   Harmonika nese třídu `kk-pip`, ne `kk-podklad`: tu má dialog Nahrát podklad (Dokumenty) a jeho
   pravidla `.mck .kk-podklad .kk-podklad-*` by se jinak propsala sem. */
.kk-podklad-cast + .kk-podklad-cast { border-top: 1px solid var(--border-hairline); }
.kk-podklad-hlava {
    display: flex; align-items: center; gap: 9px;
    margin: 18px 17px 0; padding-bottom: 8px; min-height: 32px;
    font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--brown-300);
}
.kk-podklad-hlava .kk-mezera { flex: 1 1 auto; }
.kk-podklad-pocet {
    font: 700 11.5px var(--font-cisla); letter-spacing: 0; color: var(--brown-300); white-space: nowrap;
}
.kk-podklad-hlava .ikon-tl { letter-spacing: normal; text-transform: none; }
.kk-podklad-napoveda { margin: 0 17px 10px; }
.kk-podklad-pole { padding: 3px 17px 15px; border-top: 1px solid var(--cream-200); }
.kk-podklad-pole .kk-osobni-veta { display: block; }

/* RÁMEČEK TABULKY A POŘADÍ (`.kxpt.hh .kxtb`): okraj 17 px pod nadpisem, vlasová linka, zaoblení. */
.kk-podklad-ramec {
    margin: 0 17px 17px;
    border: 1px solid var(--border-hairline); border-radius: var(--radius-md);
    overflow: hidden; background: var(--white);
}
.kk-podklad-tabulka .tabulka th { background: var(--cream-50); }
.kk-podklad-tabulka .tabulka th:first-child, .kk-podklad-tabulka .tabulka td:first-child { padding-left: 13px; }
.kk-podklad-tabulka .tabulka th:last-child, .kk-podklad-tabulka .tabulka td:last-child { padding-right: 13px; }
.kk-podklad-tabulka tbody tr:last-child td { border-bottom: 0; }
.kk-podklad-ramec .kn-prazdny-vysledek { margin: 12px 13px; }
.kk-podklad-titulek { font-weight: 600; color: var(--brown-700); }
.kk-podklad-cislo { font-family: var(--font-cisla); }
.kk-podklad-paticka {
    display: flex; align-items: baseline; gap: 10px;
    padding: 9px 13px;
    border-top: 1px solid var(--border-hairline);
    background: var(--cream-50);
    font-size: 14px;
}
.kk-podklad-paticka .kk-mezera { flex: 1 1 auto; }

/* Šířky sloupců a minimální šířky 1:1 z návrhu (`plan` 760, `bigexp` 600, `inc` 640, pořadí 640). */
.kk-podklad-plan .tabulka { min-width: 760px; }
.kk-podklad-plan th.sl-podklad-plan-0 { width: 220px; }
.kk-podklad-plan th.sl-podklad-plan-1 { width: 200px; }
.kk-podklad-plan th.sl-podklad-plan-2 { width: 140px; }
.kk-podklad-bigexp .tabulka { min-width: 600px; }
.kk-podklad-bigexp th.sl-podklad-bigexp-1 { width: 100px; }
.kk-podklad-bigexp th.sl-podklad-bigexp-2 { width: 160px; }
.kk-podklad-inc .tabulka { min-width: 640px; }
.kk-podklad-inc th.sl-podklad-inc-0 { width: 260px; }
.kk-podklad-inc th.sl-podklad-inc-2 { width: 170px; }
.kk-podklad-prio .tabulka { min-width: 640px; }
.kk-podklad-prio th.sl-podklad-poradi { width: 84px; }
.kk-podklad-prio th.sl-podklad-priorita { width: 220px; }
.kk-podklad-prio th.sl-podklad-posun { width: 90px; }

/* VÝŠ A NÍŽ (`.kxrk`): dvě čtvercová tlačítka 28 px vpravo v řádku pořadí. */
.kk-podklad-posun { display: inline-flex; gap: 4px; justify-content: flex-end; }
.kk-podklad-posun button {
    width: 28px; height: 28px; padding: 0; border-radius: 7px;
    border: 1px solid var(--border-hairline); background: var(--white); color: var(--brown-400);
    cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.kk-podklad-posun button:hover { border-color: var(--green-300); color: var(--green-700); }
.kk-podklad-posun button:disabled { opacity: .5; cursor: progress; }
.kk-podklad-posun svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* ŠTÍTKY S NABÍDKOU (`.fchw`, `.ctag`, `.fsug`): pilulky s křížkem a pod nimi „+ volba" čárkovaně. */
.kk-podklad-stitky { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.kk-podklad-stitek {
    display: inline-flex; align-items: center; gap: 5px; height: 27px; padding: 0 4px 0 11px;
    border-radius: var(--radius-pill); border: 1px solid var(--border-hairline); background: var(--cream-50);
    font: 500 12.5px var(--font-body); color: var(--brown-600); white-space: nowrap;
}
.kk-podklad-stitek button {
    width: 19px; height: 19px; padding: 0; border: 0; border-radius: 50%; background: transparent;
    color: var(--brown-300); font-size: 14px; line-height: 1; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
}
.kk-podklad-stitek button:hover { background: var(--cream-200); color: #c0472e; }
.kk-podklad-navrhy { display: flex; flex-wrap: wrap; gap: 6px; width: 100%; margin-top: 3px; }
.kk-podklad-navrhy button {
    height: 26px; padding: 0 11px; border: 1px dashed var(--border-hairline); border-radius: var(--radius-pill);
    background: transparent; font: 500 12.5px var(--font-body); color: var(--brown-400); cursor: pointer; white-space: nowrap;
}
.kk-podklad-navrhy button:hover { border-color: var(--green-300); color: var(--green-700); }
