
/* ─── PÍSMA A BARVY ŽIJÍ VE VZHLED.CSS ─────────────────────────────────
   src/klient/vzhled.css se načítá PŘED tímhle stylopisem na každé stránce
   — administrativa i prezentační zóna (19. 9. 2026, ZADANI-UI-ALBUM.md G).
   Je v něm @font-face (Fraunces, Inter), společné tokeny (--polomer,
   --pismo, --pismo-nadpis) a PALETA: --text, --slabe, --linka, --pozadi,
   --panel, --hlavni, --ok, --chyba… Stav se nekóduje akcentem: kaštan je
   akce, list hotovo, jantar „čeká", červená chyba.

   BARVA NATVRDO TADY NEPATŘÍ. Nová paleta (blok v vzhled.css) by ji
   nepřebarvila; odstíny se skládají přes color-mix() z tokenů. Hlídá to
   stráž v testy/vzhled.mjs. */
*{box-sizing:border-box}
body{margin:0;background:var(--pozadi);color:var(--text);
font:400 16px/1.55 var(--pismo);-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--pismo-nadpis);font-weight:400;letter-spacing:-.01em;text-wrap:balance}
a{color:var(--hlavni)}
:focus-visible{outline:2px solid var(--hlavni);outline-offset:2px}
svg.ikona{flex:none}

/* ─── HLAVIČKA ─────────────────────────────────────────────────────────
   Název instance písmem nadpisů, navigace ikonou A SLOVEM (na úzké
   obrazovce jen ikona s popiskem pro čtečku), účet jako rozbalovací
   menu. Menu je <details>: otevírá ho prohlížeč, bez skriptu. */
.hlavicka{background:var(--panel);border-bottom:1px solid var(--linka)}
.pruh{max-width:64rem;margin:0 auto;padding:.55rem 1rem;display:flex;
gap:1rem;align-items:center;justify-content:space-between}
.znacka{font-family:var(--pismo-nadpis);font-size:1.3rem;text-decoration:none;
color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.navigace{display:flex;gap:.15rem;align-items:center}
.nav-polozka{display:flex;align-items:center;gap:.45rem;min-height:44px;padding:0 .7rem;
border-radius:var(--polomer);color:var(--slabe);text-decoration:none;font-size:.9rem;
cursor:pointer;list-style:none;transition:background .15s,color .15s}
.nav-polozka::-webkit-details-marker{display:none}
.nav-polozka:hover{background:var(--hlavni-svetle);color:var(--text)}
.nav-polozka.aktivni{color:var(--text);background:var(--hlavni-svetle)}
.ucet{position:relative}
.ucet[open]>.nav-polozka{background:var(--hlavni-svetle);color:var(--text)}
.ucet-menu{position:absolute;right:0;top:calc(100% + .4rem);z-index:30;width:16rem;
background:var(--panel);border:1px solid var(--linka);border-radius:var(--polomer);
padding:.4rem;box-shadow:0 14px 34px -16px color-mix(in srgb,var(--stin) 30%,transparent)}
.ucet-kdo{padding:.45rem .7rem .6rem;font-size:.84rem;color:var(--slabe);
border-bottom:1px solid var(--linka);margin-bottom:.35rem;overflow-wrap:anywhere}
.ucet-kdo strong{display:block;color:var(--text);font-weight:500;font-size:.95rem}
.ucet-menu a,.ucet-menu button{display:flex;align-items:center;gap:.6rem;width:100%;
min-height:44px;padding:0 .7rem;border-radius:8px;color:var(--text);text-decoration:none;
font:inherit;font-size:.92rem;font-weight:400;background:none;border:0;cursor:pointer;text-align:left}
.ucet-menu a:hover,.ucet-menu button:hover{background:var(--hlavni-svetle)}
.ucet-menu .ikona{color:var(--hlavni)}
.ucet-menu form{margin:.35rem 0 0;padding-top:.35rem;border-top:1px solid var(--linka)}
@media (max-width:48rem){.nav-popisek{position:absolute;width:1px;height:1px;
overflow:hidden;clip-path:inset(50%);white-space:nowrap}}

/* ─── STRÁNKA ─── */
main{max-width:64rem;margin:0 auto;padding:1.75rem 1rem 4rem}
h1{font-size:2rem;line-height:1.15;margin:0 0 .35rem}
h2{font-size:1.3rem;line-height:1.25;margin:2rem 0 .75rem}
h3{font-size:1.1rem;margin:1.25rem 0 .5rem}
.podnadpis{color:var(--slabe);margin:0 0 1.5rem}
/* KARTA: bílá, tenká linka, zaoblení 12 px, ŽÁDNÝ STÍN. Stín mají jen
   věci, které visí nad stránkou (menu, knihovna frází). */
.panel{background:var(--panel);border:1px solid var(--linka);border-radius:var(--polomer);
padding:1.25rem 1.35rem;margin-bottom:1.25rem}
.panel h2{margin-top:0;font-size:1.25rem}
table{width:100%;border-collapse:collapse;font-size:.94rem}
th,td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--linka);
vertical-align:top}
th{font-weight:500;color:var(--slabe);font-size:.78rem;text-transform:uppercase;
letter-spacing:.05em}
tr:last-child td{border-bottom:none}
td.cislo,th.cislo{text-align:right;font-variant-numeric:tabular-nums}
/* NA ÚZKÉ OBRAZOVCE JE ŘÁDEK KARTA (UI4, 18. 9. 2026). Tabulka o pěti
   sloupcích byla na telefonu širší než stránka a celá stránka jezdila do
   stran. Popisek sloupce nese každá buňka v data-p (skládá ho tabulka()),
   takže karta říká, co které číslo znamená. Na počítači beze změny. */
@media (max-width:40rem){
table.karty,.karty thead,.karty tbody,.karty tr,.karty td{display:block;width:auto}
.karty thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.karty tr{border:1px solid var(--linka);border-radius:var(--polomer);background:var(--panel);
padding:.45rem .8rem;margin-bottom:.6rem}
.karty td{border:0;padding:.3rem 0;display:flex;flex-wrap:wrap;gap:.2rem .7rem;align-items:baseline;
min-width:0;overflow-wrap:anywhere}
.karty td.cislo{text-align:left}
.karty td[data-p]::before{content:attr(data-p);flex:0 0 6.5rem;color:var(--slabe);font-size:.74rem;
text-transform:uppercase;letter-spacing:.04em}
}
.prazdno{color:var(--slabe);padding:1.25rem 0;text-align:center}
.stitek{display:inline-block;font-size:.76rem;font-weight:500;padding:.12rem .55rem;
border-radius:99px;border:1px solid var(--linka);color:var(--slabe);background:var(--panel);
white-space:nowrap}
.stitek.aktivni{color:var(--ok);border-color:var(--ok-linka);background:var(--ok-pozadi)}
.stitek.pozor{color:var(--varovani);border-color:var(--varovani-linka);background:var(--varovani-pozadi)}
/* Koncepty (T2.16): podkategorie lekcí, vizuálně rozpracované — čárkovaný
   jantarový rám, jako papír, na kterém se ještě píše. */
.panel.panel-koncepty{border:1.5px dashed var(--varovani-linka);
background:color-mix(in srgb,var(--varovani-pozadi) 45%,var(--panel))}

/* Osnova lekce se scénami. Odbočka se ukazuje ODSAZENÍM, ne šipkami
   mezi uzly — lektorka nikdy nevidí graf (INTERAKTIVITA.md 3.1).
   Třídou, ne atributem style: CSP inline styly nepovoluje. */
.odbocka td:first-child{padding-left:1.8rem}
.odbocka{background:var(--panel-jemny)}
.vetev{color:var(--slabe);font-size:.9rem}
.mimo-dosah{color:var(--varovani)}

/* Odkaz, který má vypadat jako hlavní akce — „Promítat", „Nová šablona". */
.tlacitko{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
min-height:44px;padding:.6rem 1.2rem;border-radius:var(--polomer);font-weight:500;
background:var(--hlavni);color:var(--na-akcentu);text-decoration:none;
border:1px solid var(--hlavni);transition:background .15s,border-color .15s}
.tlacitko:hover{background:var(--hlavni-tmave);border-color:var(--hlavni-tmave)}
.hlaska{border-radius:var(--polomer);padding:.9rem 1.1rem;margin-bottom:1.25rem;
border:1px solid var(--linka);background:var(--panel)}
/* NADPIS hlášky je samostatný řádek, zvýraznění uvnitř věty ne. Do 17. 9.
   2026 stálo .hlaska strong a rozsypalo úvod generátoru šablony: každé
   „<strong>" v odstavci utrhlo zbytek věty na nový řádek (Ú-PZ9). */
.hlaska>strong{display:block;margin-bottom:.2rem;font-weight:600}
.hlaska p{margin:0;color:var(--slabe);font-size:.94rem}
.hlaska.chyba{background:var(--chyba-pozadi);border-color:var(--chyba-linka);color:var(--chyba)}
.hlaska.ok{background:var(--ok-pozadi);border-color:var(--ok-linka);color:var(--ok)}
.hlaska.pozor{background:var(--varovani-pozadi);border-color:var(--varovani-linka);color:var(--varovani)}
.hlaska ul{margin:.4rem 0 0;padding-left:1.1rem;color:var(--slabe);font-size:.94rem}
label{display:block;margin-bottom:1rem}
label span{display:block;font-weight:500;margin-bottom:.35rem;font-size:.92rem}
label small{display:block;color:var(--slabe);font-weight:400;margin-top:.3rem;
font-size:.85rem}
[data-strop-hlaska]{display:block;color:var(--chyba);font-weight:600;margin-top:.3rem}
input,select,textarea{width:100%;min-height:44px;padding:.6rem .8rem;font:inherit;
border-radius:var(--polomer);border:1px solid var(--linka);background:var(--panel);color:var(--text)}
input::placeholder,textarea::placeholder{color:var(--zastupce)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--hlavni);outline-offset:1px;
border-color:var(--hlavni)}
input[type=checkbox],input[type=radio]{accent-color:var(--hlavni);min-height:0}
/* Zaškrtávátko stojí VEDLE věty, ne nad ní. Bez toho ho pravidlo
   input{width:100%} roztáhne přes celý panel a popisek spadne pod něj.
   Třídu vydávají tři místa v trasy.mjs a stylopis o ní nevěděl. */
.potvrzeni label{display:flex;align-items:flex-start;gap:.55rem;font-weight:400;margin-bottom:0}
.potvrzeni input[type=checkbox]{width:auto;flex:none;margin:.25rem 0 0;padding:0}

/* ═══ ÚKLID PROSTŘEDÍ (UI7, 24. 9. 2026) ══════════════════════════════════
   Řazení a filtry v jednom řádku (na telefonu pod sebou), zaškrtávátko
   v řádku tabulky velké na prst, důvod „vybrat nejde" pod štítkem. */
.uklid-filtr{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem 1.1rem;margin-bottom:1rem}
.uklid-filtr label{margin-bottom:0}
.uklid-filtr select{width:auto;min-width:12rem}
.uklid-volba{display:flex;align-items:center;gap:.45rem;min-height:44px;font-weight:400}
.uklid-volba input[type=checkbox],#k-uklid td input[type=checkbox]{width:22px;height:22px;flex:none;margin:0;padding:0}
.uklid-nejde{color:var(--zastupce)}
.uklid-proc{display:block;margin-top:.3rem;color:var(--slabe);font-size:.85rem;line-height:1.35}
.uklid-seznam{margin:.3rem 0 .8rem;padding-left:1.2rem}
.uklid-seznam li{margin:.2rem 0}
.uklid-seznam small{color:var(--slabe)}

/* ═══ STÁLÝ PROJEKT / GEM NA OBRAZOVCE INFO (X1, 24. 9. 2026) ════════════
   Přepínač je rozbalení se jménem a popiskem; uvnitř postup a tlačítko. */
.gem-prepinac{margin:.4rem 0 0}
.gem-prepinac>summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;font-weight:600;color:var(--hlavni)}
.gem-postup{margin:.5rem 0 .9rem;padding-left:1.3rem}
.gem-postup li{margin:.25rem 0}

/* ═══ PŘEHLED PROSTŘEDÍ (UI2, 18. 9. 2026) ══════════════════════════════
   Rozcestí dlaždic jako v předloze. Hlavní vstup nahoře s podpisovým
   motivem alba (linka se značkami), jantarový pruh „Čeká na dokončení",
   mřížka sbalitelných dlaždic, na mobilu spodní lišta. */
.vstup{display:grid;grid-template-columns:1fr auto;gap:1.1rem 2rem;align-items:center;
padding:1.5rem 1.6rem}
.vstup h2{margin:0 0 .35rem;font-size:1.45rem}
.vstup p{margin:0;color:var(--slabe);max-width:36rem}
.cesta{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);
list-style:none;padding:0;margin:.3rem 0 0;position:relative}
.cesta::before{content:"";position:absolute;left:16.66%;right:16.66%;top:.9rem;
border-top:1.5px solid var(--linka-tmava)}
.cesta li{position:relative;text-align:center;font-size:.84rem;color:var(--slabe);padding:0 .5rem}
.cesta strong{display:block;color:var(--text);font-weight:500;font-size:.9rem}
.cesta-znak{position:relative;display:grid;place-items:center;width:1.8rem;height:1.8rem;
margin:0 auto .45rem;border-radius:50%;background:var(--panel);border:1.5px solid var(--linka-tmava);
font-family:var(--pismo-nadpis);color:var(--text)}
.cesta li:first-child .cesta-znak{border-color:var(--hlavni);color:var(--hlavni)}
@media (max-width:40rem){.vstup{grid-template-columns:1fr}.vstup .tlacitko{justify-self:start}}

/* Dnes a zítra (UI5): táž stavba jako pruh „Čeká", barva „hotovo/list". */
.pruh-dnes{border:1px solid var(--ok-linka);background:var(--ok-pozadi);
border-radius:var(--polomer);padding:1rem 1.2rem;margin:0 0 1rem}
.pruh-dnes h2{margin:0 0 .5rem;font-size:1.1rem}
.pruh-dnes ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.45rem 1.6rem}
.pruh-dnes li{display:flex;align-items:center;gap:.45rem;font-size:.92rem}
.pruh-dnes li .ikona{color:var(--ok)}
.pruh-dnes a{color:var(--text);text-decoration:none;font-weight:500}
.pruh-dnes a:hover{text-decoration:underline;text-decoration-color:var(--ok)}
.pruh-dnes span{color:var(--slabe)}
.pruh-ceka{border:1px solid var(--varovani-linka);background:var(--varovani-pozadi);
border-radius:var(--polomer);padding:1rem 1.2rem;margin:0 0 1.25rem}
.pruh-ceka h2{margin:0;font-size:1.1rem;flex:1}
/* Z4 (etapa 16): pruh jde sbalit; sbalený ukáže jen číslovku. */
.pruh-ceka-hlava{display:flex;align-items:center;gap:.6rem;cursor:pointer;list-style:none}
.pruh-ceka-hlava::-webkit-details-marker{display:none}
.pruh-ceka[open] .pruh-ceka-hlava{margin-bottom:.5rem}
/* .pruh-ceka před třídou: .pruh-ceka span (šedý popis položky) by jinak
   číslovce vzal barvu — napoprvé šedá na hnědé (23. 9. 2026). */
.pruh-ceka .pruh-ceka-pocet{display:grid;place-items:center;min-width:1.8rem;height:1.8rem;padding:0 .45rem;
border-radius:99px;background:var(--varovani);color:var(--na-akcentu);font-weight:600;font-size:.85rem}
.pruh-ceka:not([open]){display:inline-block;padding:.4rem .5rem .4rem .6rem}
.pruh-ceka:not([open]) h2{position:absolute;width:1px;height:1px;overflow:hidden;
clip-path:inset(50%);white-space:nowrap}
.pruh-ceka ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.45rem 1.6rem}
.pruh-ceka li{display:flex;align-items:center;gap:.45rem;font-size:.92rem}
.pruh-ceka li .ikona{color:var(--jantar)}
.pruh-ceka a{color:var(--text);text-decoration:none}
.pruh-ceka a:hover{text-decoration:underline;text-decoration-color:var(--jantar)}
.pruh-ceka span,.pruh-ceka-dalsi{color:var(--slabe)}

.moduly{display:grid;gap:1rem;grid-template-columns:1fr;align-items:start}
@media (min-width:40rem){.moduly{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:62rem){.moduly{grid-template-columns:repeat(3,minmax(0,1fr))}}
.modul{position:relative;background:var(--panel);border:1px solid var(--linka);
border-radius:var(--polomer);overflow:hidden;transition:border-color .15s}
.modul:hover{border-color:var(--linka-tmava)}
.modul-hlava{display:flex;align-items:center;gap:.55rem;padding:1rem 1.2rem .35rem;
cursor:pointer;list-style:none;min-height:52px}
.modul-hlava::-webkit-details-marker{display:none}
.modul-hlava>.ikona{color:var(--hlavni)}
.modul-hlava h2{margin:0;font-size:1.15rem;flex:1;min-width:0;white-space:nowrap;
overflow:hidden;text-overflow:ellipsis}
.modul-sipka{display:grid;place-items:center;width:30px;height:30px;
color:var(--slabe);transition:transform .2s}
/* Z2 (etapa 16): při najetí se JEN ztuční šipka — bez podkladového
   čtverce (na barevném proužku sbalené dlaždice svítil bíle). */
.modul-sipka .ikona{transition:stroke-width .15s}
.modul-hlava:hover .modul-sipka .ikona,.pruh-ceka-hlava:hover .modul-sipka .ikona{stroke-width:2.75}
.modul[open] .modul-sipka,.pruh-ceka[open] .modul-sipka{transform:rotate(180deg)}
/* Název dlaždice vede do její obrazovky (Z2); vypadá jako nadpis. */
.modul-nazev{color:inherit;text-decoration:none}
.modul-nazev:focus-visible{outline:2px solid var(--hlavni);outline-offset:2px;border-radius:4px}
/* „+" leží MIMO summary — odkaz uvnitř summary by dlaždici sbaloval. */
.modul-pridat{position:absolute;top:.9rem;right:3.2rem;display:grid;place-items:center;
width:32px;height:32px;border-radius:9px;color:var(--slabe);text-decoration:none}
.modul-pridat:hover{background:var(--hlavni-svetle);color:var(--text)}
.modul-souhrn{display:none;font-size:.82rem}
.modul-telo{padding:.3rem 1.2rem 1.1rem;display:flex;flex-direction:column;gap:.7rem}
/* SBALENÁ dlaždice: barevný proužek s názvem a jednou větou — jako
   sbalená dlaždice předlohy. Přechod je z palety alba. */
.modul:not([open]){border-color:transparent}
.modul:not([open]) .modul-hlava{flex-wrap:wrap;padding:.85rem 1.1rem;color:var(--na-akcentu);
background:linear-gradient(135deg,var(--hlavni),var(--jantar))}
.modul:not([open]) .modul-hlava>.ikona,.modul:not([open]) .modul-sipka{color:var(--na-akcentu)}
.modul:not([open]) .modul-souhrn{display:block;order:3;flex-basis:100%;color:color-mix(in srgb,var(--na-akcentu) 92%,transparent);
padding-left:1.7rem}
.modul[data-modul=sablony]:not([open]) .modul-hlava,
.modul[data-modul=pristup]:not([open]) .modul-hlava{background:linear-gradient(135deg,var(--list),var(--hlavni))}
.modul[data-modul=materialy]:not([open]) .modul-hlava,
.modul[data-modul=predplatne]:not([open]) .modul-hlava{background:linear-gradient(135deg,var(--jantar),var(--list))}
.modul[data-modul=zaci]:not([open]) .modul-hlava,
.modul[data-modul=sprava]:not([open]) .modul-hlava{background:linear-gradient(135deg,var(--hlavni-tmave),var(--jantar))}
.modul[data-modul=ai]:not([open]) .modul-hlava,
.modul[data-modul=podpora]:not([open]) .modul-hlava{background:linear-gradient(135deg,var(--list),var(--inkoust))}
.modul-seznam{list-style:none;margin:0;padding:0;display:grid;gap:.1rem}
.modul-seznam a,.modul-lide li{display:flex;align-items:center;justify-content:space-between;
gap:.6rem;padding:.45rem .5rem;margin:0 -.5rem;border-radius:8px;color:var(--text);
text-decoration:none;font-size:.92rem}
.modul-seznam a:hover{background:var(--pozadi)}
.modul-seznam .jmeno{min-width:0;overflow:hidden;text-overflow:ellipsis}
.modul-seznam small{display:block;color:var(--slabe);font-size:.78rem;white-space:nowrap;
overflow:hidden;text-overflow:ellipsis}
.modul-pata{margin:0;font-size:.86rem}
.modul-pata a{color:var(--hlavni);text-decoration:none;font-weight:500}
.modul-pata a:hover{text-decoration:underline}
.modul-veta{margin:0;color:var(--slabe);font-size:.9rem}
.modul-cislo{margin:0;font-family:var(--pismo-nadpis);font-size:2.1rem;line-height:1}
.modul-cislo-slovo{font-family:var(--pismo);font-size:.95rem;color:var(--slabe)}
.modul-fotky{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem}
.modul-fotky img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;display:block;
background:var(--panel-2)}
.modul-odkazy{list-style:none;margin:0;padding:0;display:grid;gap:.15rem}
.modul-odkazy a{display:block;padding:.4rem .5rem;margin:0 -.5rem;border-radius:8px;
color:var(--text);text-decoration:none;font-size:.9rem}
.modul-odkazy a:hover{background:var(--pozadi);color:var(--hlavni)}
.modul-udaje{margin:0;display:grid;gap:.1rem}
.modul-udaje div{display:flex;justify-content:space-between;gap:1rem;padding:.35rem 0;
border-bottom:1px solid var(--linka);font-size:.9rem}
.modul-udaje div:last-child{border-bottom:0}
.modul-udaje dt{color:var(--slabe)}
.modul-udaje dd{margin:0;text-align:right}
.modul .akce{gap:.4rem}
@media (prefers-reduced-motion:reduce){.modul-sipka{transition:none}}

.lista-mobil{display:none}
@media (max-width:48rem){
main{padding-bottom:6rem}
.lista-mobil{display:flex;position:fixed;inset:auto 0 0 0;z-index:40;justify-content:space-around;
align-items:stretch;background:var(--panel);border-top:1px solid var(--linka);
padding-bottom:env(safe-area-inset-bottom)}
.lista-mobil>a,.lista-menu>summary{flex:1;display:flex;flex-direction:column;align-items:center;
justify-content:center;gap:.1rem;min-height:56px;color:var(--slabe);text-decoration:none;
font-size:.7rem;list-style:none;cursor:pointer}
.lista-menu{flex:1;display:flex}
.lista-menu>summary::-webkit-details-marker{display:none}
.lista-plus{color:var(--hlavni)}
.lista-kruh{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;
background:var(--hlavni);color:var(--na-akcentu)}
.lista-list{position:fixed;inset:auto 0 57px 0;background:var(--panel);border-top:1px solid var(--linka);
border-radius:16px 16px 0 0;padding:.8rem;box-shadow:0 -14px 30px -20px color-mix(in srgb,var(--stin) 40%,transparent)}
.lista-list a{display:flex;align-items:center;gap:.7rem;min-height:48px;padding:0 .7rem;
border-radius:10px;color:var(--text);text-decoration:none;font-size:.95rem}
.lista-list a .ikona{color:var(--hlavni)}
.lista-list a:hover{background:var(--hlavni-svetle)}
}

/* ═══ DETAIL LEKCE VE DVOU SLOUPCÍCH (UI4, 18. 9. 2026) ════════════════
   Vlevo lekce sama (stav, akce, ověření, osnova, verze), vpravo nástroje
   (hodina, druhé čtení, návaznost, vyhrazení, Tržiště, šablona). Stránka
   s detailem je širší než ostatní — osnova a tabulky potřebují místo
   a boční sloupec ho bere. Bez :has() zůstane šířka běžná, nic se nerozbije.
   Na úzké obrazovce jsou nástroje pod lekcí. */
main:has(.detail-lekce),body:has(.detail-lekce) .pruh,
body:has(.detail-lekce)>footer{max-width:78rem}
.detail-lekce{display:grid;gap:0 1.25rem;grid-template-columns:minmax(0,1fr)}
@media (min-width:60rem){.detail-lekce{grid-template-columns:minmax(0,1fr) 21rem}}
.detail-hlavni,.detail-boky{min-width:0}
.detail-boky .panel{padding:1rem 1.1rem}
.detail-boky .panel h2{font-size:1.12rem}
.detail-boky form.radkova{display:block}
.detail-boky form.radkova label{margin-bottom:.6rem}
.lekce-akce{margin:0 0 1.25rem}
.lekce-akce>a:not(.tlacitko){font-weight:500}
.skok-nastroje{display:none}
@media (max-width:59.99rem){.lekce-akce .skok-nastroje{display:inline}}

/* ═══ PLÁNOVACÍ KALENDÁŘ (UI5, 19. 9. 2026) ═══════════════════════════
   Týden je seznam dnů: na telefonu pod sebou, od 60rem sedm sloupců.
   Měsíc je tabulka; na telefonu jen číslo dne a počet hodin. Žádná
   hodinová mřížka — poloha hodiny by potřebovala atribut style, a ten
   CSP zahodí. Stav hodiny (zrušená, přesunutá) nese třída a slovo,
   nikdy jen barva. */
main:has(.kalendar),body:has(.kalendar) .pruh,body:has(.kalendar)>footer{max-width:78rem}
.kal-lista{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;margin:0 0 .6rem}
.kal-titulek{margin:0;font-size:1.35rem;flex:1 1 100%}
.kal-posun,.kal-pohled{display:flex;flex-wrap:wrap;gap:.3rem}
.kal-posun a,.kal-pohled a,.kal-pohled span{display:inline-flex;align-items:center;gap:.3rem;min-height:2.4rem;
padding:.2rem .8rem;border:1px solid var(--linka);border-radius:99px;background:var(--panel);
color:var(--text);text-decoration:none;font-size:.88rem}
.kal-posun a:hover,.kal-pohled a:hover{border-color:var(--linka-tmava);background:var(--panel-2)}
.kal-pohled span[aria-current]{background:var(--hlavni);border-color:var(--hlavni);color:var(--na-akcentu)}
.kal-lista .tlacitko{margin-left:auto}
.kal-souhrn{margin:0 0 1rem}
.kal-tyden{list-style:none;margin:0;padding:0;display:grid;gap:.6rem;grid-template-columns:minmax(0,1fr)}
@media (min-width:60rem){.kal-tyden{grid-template-columns:repeat(7,minmax(0,1fr))}}
.kal-den{position:relative;background:var(--panel);border:1px solid var(--linka);
border-radius:var(--polomer);padding:.6rem 3rem .6rem .6rem;scroll-margin-top:5rem}
@media (min-width:60rem){.kal-den{padding:.6rem .6rem 2.8rem;min-height:9rem}}
.kal-den.dnes{border-color:var(--hlavni);box-shadow:inset 0 3px 0 var(--hlavni)}
.kal-den.minuly{background:var(--panel-2)}
.kal-den:target{outline:2px solid var(--jantar);outline-offset:2px}
.kal-den-hlava{margin:0 0 .45rem;font-size:.85rem;color:var(--slabe)}
.kal-den-nazev{font-weight:600;color:var(--text)}
.kal-dnes{display:inline-block;margin-left:.25rem;padding:0 .45rem;border-radius:99px;
background:var(--hlavni);color:var(--na-akcentu);font-size:.72rem}
.kal-volno{margin:0;color:var(--slabe);font-size:.82rem}
.kal-hodiny{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}
.kal-hodina{display:flex;flex-wrap:wrap;gap:0 .4rem;align-items:baseline;padding:.35rem .5rem;
border-radius:8px;background:var(--hlavni-svetle);color:var(--text);text-decoration:none;
font-size:.85rem;line-height:1.35;min-width:0;overflow-wrap:anywhere}
.kal-hodina:hover{background:var(--panel-2);outline:1px solid var(--linka-tmava)}
.kal-cas{font-variant-numeric:tabular-nums;color:var(--hlavni-tmave);font-weight:600}
.kal-nazev{font-weight:500}
.kal-lekce{flex-basis:100%;color:var(--slabe);font-size:.78rem}
.kal-znacka{font-size:.72rem;padding:0 .4rem;border-radius:99px;background:var(--varovani-pozadi);
color:var(--varovani);border:1px solid var(--varovani-linka)}
.kal-opakuje{color:var(--slabe);font-size:.8rem}
.kal-hodina.zrusena{background:var(--panel-2);color:var(--slabe)}
.kal-hodina.zrusena .kal-nazev,.kal-hodina.zrusena .kal-cas{text-decoration:line-through;color:var(--slabe)}
.kal-pridat{position:absolute;right:.5rem;top:.45rem;display:inline-flex;align-items:center;
justify-content:center;width:2rem;height:2rem;border-radius:99px;border:1px dashed var(--linka-tmava);
color:var(--slabe);text-decoration:none}
.kal-pridat:hover{border-style:solid;border-color:var(--hlavni);color:var(--hlavni)}
@media (min-width:60rem){.kal-pridat{right:auto;top:auto;left:.6rem;bottom:.5rem}}
table.kal-mesic{table-layout:fixed;width:100%;border-collapse:separate;border-spacing:.3rem;
background:transparent;border:0;margin:0 -.3rem}
.kal-mesic th{text-align:center;padding:.2rem 0;border:0}
.kal-mesic th abbr{text-decoration:none}
.kal-bunka{vertical-align:top;background:var(--panel);border:1px solid var(--linka);
border-radius:10px;padding:.35rem;height:6.5rem}
.kal-bunka.mimo{background:var(--panel-2);opacity:.75}
.kal-bunka.dnes{border-color:var(--hlavni);box-shadow:inset 0 3px 0 var(--hlavni)}
.kal-cislo{display:inline-block;font-weight:600;color:var(--text);text-decoration:none;font-size:.9rem}
.kal-pocet{display:none}
.kal-bunka .kal-hodiny{gap:.2rem;margin-top:.25rem}
.kal-bunka .kal-hodina{padding:.15rem .35rem;font-size:.76rem;gap:0 .3rem}
.kal-dalsi{font-size:.76rem}
@media (max-width:40rem){
table.kal-mesic{border-spacing:.15rem;margin:0 -.15rem}
.kal-bunka{height:3.4rem;padding:.25rem;text-align:center}
.kal-bunka .kal-hodiny{display:none}
.kal-pocet{display:block;margin:.15rem auto 0;width:1.4rem;height:1.4rem;line-height:1.4rem;
border-radius:99px;background:var(--hlavni);color:var(--na-akcentu);font-size:.72rem}
.kal-lista .tlacitko{margin-left:0;width:100%}
}
/* Zvonek v hlavičce a obrazovka upozornění (UI5). */
.zvonek{position:relative}
.odznak{position:absolute;top:.35rem;left:1.35rem;min-width:1.1rem;height:1.1rem;padding:0 .25rem;
border-radius:99px;background:var(--hlavni);color:var(--na-akcentu);font-size:.68rem;line-height:1.1rem;
text-align:center;font-weight:600}
.upozorneni-seznam{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.upozorneni-seznam a{display:flex;flex-wrap:wrap;gap:.2rem .8rem;align-items:baseline;padding:.7rem .9rem;
border:1px solid var(--linka);border-radius:var(--polomer);background:var(--panel);color:var(--text);
text-decoration:none}
.upozorneni-seznam a:hover{border-color:var(--linka-tmava);background:var(--panel-2)}
.upozorneni-seznam .neprectene a{border-color:var(--hlavni);box-shadow:inset 3px 0 0 var(--hlavni)}
.upozorneni-seznam .kdy{font-weight:600}
.upozorneni-seznam small{flex-basis:100%;color:var(--slabe)}
.kal-vratit{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center}
.kal-vratit p{margin:0}
table.kal-udaje{border:0;background:transparent}
.kal-udaje th{width:9rem;text-transform:none;letter-spacing:0;font-size:.85rem;vertical-align:top}
.kal-udaje td{overflow-wrap:anywhere}
@media (max-width:40rem){.kal-udaje th{width:5.5rem;padding-right:.4rem}}
.kal-poznamka{white-space:pre-line}
.kal-akce-mrizka{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr))}
form.kal-akce{display:flex;flex-direction:column;gap:.5rem;padding:.8rem .9rem;border:1px solid var(--linka);
border-radius:var(--polomer);background:var(--panel-2);min-width:0}
.kal-akce h3{margin:0;font-size:1.05rem}
.kal-akce p{margin:0;color:var(--slabe);font-size:.85rem}
.kal-akce label{margin:0}
.kal-akce button{align-self:flex-start;margin-top:auto}
.kal-akce select,.kal-akce input{max-width:100%;min-width:0}
.kal-serie form.radkova{display:inline-flex}
.kal-serie form.radkova button{min-height:44px;padding:.5rem 1rem;font-size:.95rem}
.kal-formular{display:grid;gap:0 1.25rem;grid-template-columns:minmax(0,1fr)}
@media (min-width:48rem){.kal-formular{grid-template-columns:repeat(2,minmax(0,1fr))}
.kal-formular>label{grid-column:1/-1}}
.kal-formular fieldset{border:0;padding:0;margin:0 0 .8rem;min-width:0}
.kal-formular legend{font-family:var(--pismo-nadpis);font-size:1.1rem;margin-bottom:.5rem;padding:0}
.kal-volby{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.7rem}
.kal-volba{display:inline-flex;align-items:center;gap:.45rem;margin:0;padding:.45rem .8rem;
border:1px solid var(--linka);border-radius:99px;background:var(--panel);font-weight:400;cursor:pointer}
.kal-volba input[type=radio],.kal-volba input[type=checkbox]{width:auto;margin:0;padding:0;flex:none}
.kal-pozvanky{display:grid;gap:.35rem;justify-items:start;margin-top:.3rem}
.kal-pozvanky-stav{margin:.4rem 0 .8rem;padding-left:1.4rem;display:grid;gap:.35rem}
.kal-pozvanka span{color:var(--slabe)}
.kal-pozvanka.odeslano strong::after{content:" ✓";color:var(--ok)}
.kal-pozvanka.nepujde strong{color:var(--slabe)}
.kal-volba:has(input:checked){border-color:var(--hlavni);background:var(--hlavni-svetle)}
@supports selector(:has(a)){.kal-opakovani:has(input[value=zadne]:checked) .kal-do{display:none}}

/* ═══ GENERÁTOR ŠABLONY LEKCE — BALÍČEK KARET (UI3, 18. 9. 2026) ═══════
   Zadavatel: tutorial tvorby nové šablony jako animované karty, které se
   jakoby listují — pryč s formulářem shora dolů (ZADANI-UI-ALBUM.md C).

   BEZ SKRIPTU, jako celá administrativa. Kdo :has() neumí, uvidí karty
   pod sebou — starší chování, ne rozbitá obrazovka. Kdo ho umí, dostane
   balíček a vepředu je právě jedna karta (pravidlaBalicku níž):
     1. ta, na kterou ukazuje kotva (#k-pole-…, #k-souhrn) — jezdci nahoře,
        Zpět a Další, knihovna frází, odkaz „Přejít k poli";
     2. jinak ta, kterou server označil .ted — po odmítnutí karta pole,
        které chybí, nebo souhrn s potvrzením;
     3. jinak PRVNÍ karta s nevybranou volbou. Prázdné radio data-prazdna
        je zaškrtnuté, dokud lektorka nevolí — táž zásada jako prázdná
        první položka výběru dřív: bez ní nejde poznat, že nevolila.
        Výběr kartu sám odlistuje;
     4. když jsou volby hotové, karta Téma. Psaní se samo neodlistuje —
        karta by uhnula pod rukama při prvním písmenu.

   ANIMUJE SE POHYB, NIKDY VIDITELNOST: karta, která přichází dopředu,
   má průhlednost 1 hned a pohybuje se jen transform; mizí jen karty,
   které odcházejí (poučení z bubliny vyhodnocení 30. 8. 2026). Která
   karta je vepředu, říká podminkyPredni() — z TÉŽE podmínky se svítí
   její jezdec (UI6c).

   Hodnoty v souhrnu a ✓ jezdců skládá pravidlaGeneratoru() z výčtů
   voleb — ruční seznam by byl druhý zdroj pravdy (bod 7).

   ─── KARTOTÉKA (UI6c, Z1, 24. 9. 2026) ─────────────────────────────
   Místo řady čipů a vykukujících hran: jezdci závěsných složek ve dvou
   řadách (předloha audio_video/pic_slozky.jpg). Zadní řada = volby
   „potřeba vždycky" (kaštan), přední = psaná pole a souhrn (list).
   Jezdec je plastový: přechod barvy, lesk nahoře, stín, bílý štítek
   v rámečku. Zvolený zůstane na místě, zvětší se a zvýrazní
   (pravidlaBalicku); ostatní jsou tlumené a při najetí se nadzvednou.
   ═════════════════════════════════════════════════════════════════ */
.navod-generatoru{color:var(--slabe);margin:-.4rem 0 1.1rem;max-width:46em}
.kartoteka{--sk-potreba:var(--hlavni);--sk-psani:var(--list)}
.jezdci{position:relative;z-index:3;display:flex;flex-direction:column;margin:0 0 -3px;
padding-top:.6rem}
.jezdci-rada{display:grid;gap:.45rem;align-items:end}
.jezdci-zadni{grid-template-columns:repeat(5,minmax(0,1fr));padding:0 3rem 0 4.5rem;
margin-bottom:-1rem}
.jezdci-predni{grid-template-columns:repeat(7,minmax(0,1fr))}
.jezdec{--c:var(--sk-psani);position:relative;z-index:1;display:block;min-width:0;
padding:.5rem .45rem 1.15rem;border-radius:14px 14px 0 0;text-decoration:none;color:var(--text);
background:linear-gradient(180deg,color-mix(in srgb,var(--c) 70%,var(--panel)) 0%,
var(--c) 42%,color-mix(in srgb,var(--c) 86%,var(--stin)) 100%);
box-shadow:inset 0 1px 0 color-mix(in srgb,var(--panel) 55%,transparent),
inset 1px 0 0 color-mix(in srgb,var(--panel) 18%,transparent),
inset -1px 0 0 color-mix(in srgb,var(--stin) 14%,transparent),
0 3px 6px -3px color-mix(in srgb,var(--stin) 40%,transparent);
transform-origin:50% 100%;filter:saturate(.72) brightness(1.13);
transition:transform .38s cubic-bezier(.34,1.5,.55,1),filter .25s ease,box-shadow .25s ease}
.jezdci-predni .jezdec{z-index:2}
.jezdec.skupina-potreba{--c:var(--sk-potreba)}
.jezdec:hover{transform:translateY(-3px);filter:saturate(.9) brightness(1.06)}
.jezdec:focus-visible{outline:3px solid var(--hlavni);outline-offset:3px}
.jezdec-stitek{display:flex;align-items:center;gap:.4rem;min-height:2.55rem;padding:.3rem .5rem;
border-radius:6px;background:linear-gradient(180deg,var(--panel),var(--panel-jemny));
box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c) 40%,var(--panel)),
inset 0 2px 3px -1px color-mix(in srgb,var(--stin) 20%,transparent);
font-size:.8rem;line-height:1.15;font-weight:500;overflow-wrap:break-word;hyphens:manual}
.jezdec-cislo{flex:none;display:grid;place-items:center;width:1.4rem;height:1.4rem;border-radius:50%;
background:color-mix(in srgb,var(--c) 16%,var(--panel));color:var(--text);font-size:.72rem;
font-weight:600;transition:background .25s,color .25s}
/* ✓ uvnitř šířky jezdce: zvětšený soused přesahuje o pár bodů do mezery
   a odznak na hraně by schoval. */
.jezdec-hotovo{position:absolute;z-index:1;top:-.55rem;right:.35rem;display:grid;place-items:center;
width:1.35rem;height:1.35rem;border-radius:50%;background:var(--ok);color:var(--na-akcentu);
font-size:.74rem;font-weight:700;box-shadow:0 0 0 2px var(--pozadi),0 2px 4px -1px color-mix(in srgb,var(--stin) 35%,transparent)}
.jezdec-souhrn .jezdec-stitek{justify-content:center}

/* TĚLO SLOŽKY: pás v barvě skupiny, uvnitř bílá karta. */
/* Přechod v proměnné: karta s kotvou dostala dřív od obecného
   [id^="k-"]:target šedé pozadí a pás složky zmizel (24. 9. 2026). */
.karta-krok{--c:var(--sk-psani);border:0;border-radius:18px;padding:.6rem;margin-bottom:1rem;
--slozka:linear-gradient(180deg,color-mix(in srgb,var(--c) 88%,var(--panel)),var(--c) 30%,
color-mix(in srgb,var(--c) 84%,var(--stin)));background:var(--slozka);
box-shadow:inset 0 1px 0 color-mix(in srgb,var(--panel) 40%,transparent),
0 22px 44px -30px color-mix(in srgb,var(--stin) 55%,transparent)}
.karta-krok.skupina-potreba{--c:var(--sk-potreba)}
.karta-krok[id]:target{background:var(--slozka)}
.karta-krok .kk-obsah{background:var(--panel);border-radius:12px}
/* Kotva karty nesmí schovat jezdce nad balíčkem — proto víc místa nad ní
   než u ostatních kotev. */
.karta-krok[id]{scroll-margin-top:11rem}
@media (max-width:40rem){
/* Překryv řad jen malý: dvouřádkový štítek zadní řady („Ročník / věk")
   by se jinak schoval pod přední řadu (ukázal snímek v 375 bodech). */
.jezdci-zadni{padding:0 .6rem 0 1.4rem;gap:.25rem;margin-bottom:-.3rem}
.jezdci-predni{grid-template-columns:repeat(4,minmax(0,1fr));gap:.25rem;row-gap:0}
.jezdec{padding:.3rem .18rem .95rem;border-radius:10px 10px 0 0}
.jezdec-cislo{display:none}
.jezdec-stitek{font-size:.66rem;min-height:2.5rem;padding:.2rem .18rem;justify-content:center;
text-align:center;letter-spacing:-.01em}
.jezdec-hotovo{width:1.05rem;height:1.05rem;font-size:.62rem;top:-.45rem;right:.2rem}
.karta-krok{padding:.4rem}
}
@media (prefers-reduced-motion:reduce){.jezdec{transition:none}}
.kk-obsah{display:flex;flex-direction:column;gap:.75rem;padding:1.4rem 1.5rem 1.2rem;
height:100%;min-height:24rem}
.kk-hlava{display:flex;align-items:center;justify-content:space-between;gap:.6rem;
min-height:1.9rem}
.kk-faze{font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;
color:var(--slabe);font-weight:500}
.karta-krok h2{font-size:1.7rem;line-height:1.2;margin:0}
.kk-telo{position:relative;display:flex;flex-direction:column;gap:.7rem}
.kk-telo label{margin-bottom:0}
.kk-pata{margin-top:auto;display:flex;justify-content:space-between;align-items:center;
gap:.6rem;padding-top:.6rem;flex-wrap:wrap}
.tlacitko.tise{background:var(--panel);color:var(--text);border-color:var(--linka)}
.tlacitko.tise:hover{background:var(--hlavni-svetle);border-color:var(--linka-tmava)}

/* Volby jako kartičky: radio je schované, vybírá se klepnutím na kartičku.
   Prázdné radio se neukazuje nikdy — nese jen stav „nevybráno". */
input[data-prazdna]{display:none}
.volby{border:0;margin:0;padding:0;min-width:0;display:grid;gap:.5rem;
grid-template-columns:repeat(auto-fill,minmax(min(8.5rem,100%),1fr))}
.volby.siroke{grid-template-columns:repeat(auto-fill,minmax(min(14rem,100%),1fr))}
.kk-nazev{display:block;float:none;width:100%;padding:0;margin:0 0 .45rem;
font-weight:500;font-size:.92rem}
.volba{position:relative;display:flex;flex-direction:column;gap:.15rem;margin:0;
padding:.8rem .95rem;border:1px solid var(--linka);border-radius:12px;
background:var(--panel);cursor:pointer;font-weight:400;
transition:border-color .15s,background .15s}
.volba:hover{border-color:var(--linka-tmava);background:var(--panel-jemny)}
.volba input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;
min-height:0;margin:0;padding:0}
.volba span{margin:0;font-size:inherit}
.volba .volba-nazev{font-weight:500}
.volba .volba-popis{font-size:.82rem;color:var(--slabe);font-weight:400}
.volba:has(input:checked){border-color:var(--hlavni);background:var(--hlavni-svetle)}
.volba:has(input:checked) .volba-nazev::after{content:" ✓";color:var(--hlavni)}
.volba:has(input:focus-visible){outline:2px solid var(--hlavni);outline-offset:2px}
.kk-napoveda{margin:0;color:var(--slabe);font-size:.88rem;max-width:46em}

/* Název jiného předmětu jen u volby „Jiný předmět" (Ú-PZ10). */
.predmet-vlastni{display:none;margin-top:.3rem}
.karta-krok:has(input[name=predmetKlic][value=jiny]:checked) .predmet-vlastni{display:block}
/* +1: předchozí lekce patří kartě druhu a ukáže se jen u „navazující". */
.kk-navaznost{display:none;border-top:1px dashed var(--linka);padding-top:.8rem}
.karta-druh:has(input[name=druh][value=navazujici]:checked) .kk-navaznost{display:block}

/* Souhrn: vybrané hodnoty ukazují pravidla z pravidlaGeneratoru(). */
.souhrn{margin:0;display:grid;gap:.15rem .9rem;
grid-template-columns:repeat(auto-fit,minmax(min(22rem,100%),1fr))}
.sh-radek{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:.2rem .8rem;
padding:.4rem .6rem;border-radius:8px;border-bottom:1px solid var(--linka)}
.sh-radek dt{color:var(--slabe);font-size:.88rem}
.sh-radek dd{margin:0;display:flex;gap:.8rem;align-items:baseline;
justify-content:space-between;min-width:0}
.sh-radek dd a{font-size:.82rem;text-decoration:none;font-weight:500;flex:none}
.sh-hodnota,.sh-chybi,.sh-vlastni{display:none}
.sh-chybi{color:var(--slabe)}

/* Odesílací řádek čeká na hotové zadání (30. 8. 2026): tlačítko, které
   může jen odmítnout, na obrazovku nepatří. Místo něj stojí, co chybí. */
.zaver-ceka{display:none;margin:0;padding:.6rem .9rem;border-radius:10px;
background:var(--varovani-pozadi);color:var(--varovani);font-size:.92rem}
.generator:has(input[data-prazdna]:checked) .zaver,
.generator:has(input[name=tema]:placeholder-shown) .zaver,
.generator:has(input[name=druh][value=navazujici]:checked):has(.predchudce):not(:has(.predchudce input:checked)) .zaver{display:none}
.generator:has(input[data-prazdna]:checked) .zaver-ceka,
.generator:has(input[name=tema]:placeholder-shown) .zaver-ceka,
.generator:has(input[name=druh][value=navazujici]:checked):has(.predchudce):not(:has(.predchudce input:checked)) .zaver-ceka{display:block}

@media (prefers-reduced-motion:reduce){.karta-krok{transition:none!important}}
@media (max-width:40rem){
.karta-krok h2{font-size:1.35rem}
.kk-obsah{padding:1.1rem 1rem;min-height:0}
.sh-radek{grid-template-columns:minmax(0,7rem) minmax(0,1fr)}
.sh-radek dd{flex-wrap:wrap;gap:.2rem .6rem}
}

/* Pole v kartě: rámem je karta, pole kolem sebe žádný nepotřebuje.
   container-type kvůli knihovně frází (F6): její panel visí u ikony
   vpravo a smí být nejvýš tak široký jako pole (100cqw). */
.dlazdice{position:relative;container-type:inline-size}
.dlazdice label{margin-bottom:0}
.kk-telo .aisum,.kk-telo .aisum-poradi,.kk-telo .knihovna>summary{opacity:1}
/* POMOCNÍCI NAD POLEM, NE NA NĚM (Z5, etapa 16). Odsazení .55rem je pro
   dlaždici s rámem; v kartě rám není, takže ikony sjely do horní hrany
   pole — u jednořádkového tématu přes celou jeho výšku. Pomocníci jdou
   k hornímu okraji a řádek popisku je vysoký jako ikony, s místem vpravo:
   pole začíná až pod nimi (stráž v testy/rozhrani.mjs počítá rem). */
.kk-telo .pomocnici{top:0;right:0}
.kk-telo .dlazdice>label>span:first-child{display:flex;align-items:center;min-height:1.9rem;
padding-right:5.5rem}


/* ─── KOTVY ────────────────────────────────────────────
   Cíl kotvy nesmí skončit přilepený k hornímu okraji — nad ním
   je potřeba vidět aspoň nadpis řádku, jinak člověk nepozná, kde
   je. To dělá scroll-margin, ne odsazení: posává jen místo,
   na které se prohlížeč při skákání na kotvu zastaví. */
[id^="k-"]{scroll-margin-top:5rem}

/* Cíl kotvy se na chvíli označí. Bez toho lektorka po akci hledá,
   se kterým řádkem to vlastně bylo — stránka se překreslila celá
   a čtrnáct dalších řádků vypadá stejně. Je to CSS, ne skript. */
tr[id^="k-"]:target>td,[id^="k-"]:target{background:var(--panel-2)}
tr[id^="k-"]:target>td:first-child{box-shadow:inset 3px 0 0 var(--hlavni)}
.hlaska .k-polim{margin:.45rem 0 0;font-weight:600}

/* ─── AISUM ──────────────────────────────────────────────────
   Ikona v rohu dlaždice. Kliduje se, dokud na ni lektorka nesáhne —
   je to nabídka pomoci, ne výzva. */
/* DVA POMOCNÍCI V ROHU. Do 30. 8. 2026 tam byl jen AISUM a měl
   absolutní polohu sám; s knihovnou by se překrývaly. Pozici drží
   obal, ikony už se řadí vedle sebe. */
.pomocnici{position:absolute;top:.55rem;right:.55rem;z-index:1;
  display:flex;gap:.15rem;align-items:flex-start}
.aisum{position:static;min-height:0;
  width:1.9rem;height:1.9rem;padding:0;display:grid;place-items:center;
  border:1px solid transparent;border-radius:50%;
  background:transparent;color:var(--slabe);cursor:pointer;
  opacity:.55;transition:opacity .15s,color .15s,background .15s,border-color .15s}
.dlazdice:hover .aisum,.dlazdice:focus-within .aisum{opacity:1}
.aisum:hover,.aisum:focus-visible{color:var(--hlavni);opacity:1;
  background:var(--panel-2);border-color:var(--linka)}
.aisum:focus-visible{outline:2px solid var(--hlavni);outline-offset:1px}
/* Krátká zpráva po zkopírování. Kopírování do schránky je jinak
   úplně neviditelná událost — lektorka by nevěděla, jestli se něco
   stalo, a zkusila by to znovu. */
.aisum-hlaska{display:block;margin-top:.4rem;font-size:.82rem;
  color:var(--hlavni);min-height:1.2em}
/* Doporučené pořadí polí (Ú30) — číslo vedle ikony, tlumené, ať nevolá
   po pozornosti víc než ikona sama. */
.aisum-poradi{align-self:center;font-size:.72rem;color:var(--slabe);
  opacity:.55;padding-right:.1rem;user-select:none}
.dlazdice:hover .aisum-poradi,.dlazdice:focus-within .aisum-poradi{opacity:1}
/* Přepínač „pokračuji v témže rozhovoru" pod tématem. Zaškrtávátko
   stojí VEDLE věty — táž past jako u .potvrzeni: input{width:100%}
   ho do 17. 9. 2026 roztahoval přes celý formulář a věta padala pod něj. */
.aisum-rozhovor{grid-column:1/-1;margin:.2rem 0 .6rem;font-size:.88rem;
  color:var(--slabe)}
.aisum-rozhovor label{display:flex;align-items:flex-start;gap:.45rem;margin-bottom:0}
.aisum-rozhovor input[type=checkbox]{width:auto;flex:none;margin:.2rem 0 0;padding:0}
/* Stav téhož přepínače na dalších kartách (Z6): popisek s atributem for
   ukazuje jen větu, která platí, a klepnutím přepínač přepne. */
.aisum-rozhovor-stav label{cursor:pointer}
.aisum-rozhovor-stav label span{display:inline;font-weight:400;margin:0;font-size:inherit}
.aisum-rozhovor-stav .kdyz-ano{color:var(--ok)}
.generator:has(#aisum-rozhovor:checked) .aisum-rozhovor-stav .kdyz-ne,
.generator:not(:has(#aisum-rozhovor:checked)) .aisum-rozhovor-stav .kdyz-ano{display:none}
/* ─── KNIHOVNA OBLÍBENÝCH FORMULACÍ ──────────────────────
   Rozbaluje prvek details, tedy prohlížeč sám — administrativa nemá
   skript. Ikona knihy se chová jako AISUM vedle ní; list-style: none
   je kvůli tomu, že summary má jinak trojúhelník navíc. */
.knihovna{position:relative}
.knihovna>summary{list-style:none;
  width:1.9rem;height:1.9rem;display:grid;place-items:center;
  border:1px solid transparent;border-radius:50%;
  color:var(--slabe);cursor:pointer;opacity:.55;
  transition:opacity .15s,color .15s,background .15s,border-color .15s}
.knihovna>summary::-webkit-details-marker{display:none}
.dlazdice:hover .knihovna>summary,
.dlazdice:focus-within .knihovna>summary{opacity:1}
.knihovna>summary:hover,.knihovna[open]>summary{color:var(--hlavni);
  opacity:1;background:var(--panel-2);border-color:var(--linka)}
.knihovna>summary:focus-visible{outline:2px solid var(--hlavni);
  outline-offset:1px}

/* Panel visí NAD obsahem, ne v toku. V mřížce dlaždic by jinak
   otevřená knihovna roztáhla řádek a ostatní pole by odskočila. */
.knihovna-obsah{position:absolute;top:2.2rem;right:0;z-index:5;
  width:min(26rem,78vw);width:min(26rem,calc(100cqw - 1.1rem));padding:.7rem;
  background:var(--panel);border:1px solid var(--linka);
  border-radius:10px;box-shadow:0 8px 24px color-mix(in srgb,var(--stin) 22%,transparent)}
.knihovna-obsah .prazdno{margin:0 0 .6rem;font-size:.85rem}
.fraze{list-style:none;margin:0 0 .6rem;padding:0;
  display:grid;gap:.25rem;max-height:14rem;overflow-y:auto}
.fraze li{display:flex;gap:.3rem;align-items:stretch}
/* Text je TLAČÍTKO, ne odkaz: vkládá se odesláním formuláře,
   aby se nic z rozepsaného neztratilo. Zarovnává se proto vlevo
   a čte se jako řádek seznamu, ne jako tlačítko. */
.fraze-vlozit{flex:1;min-height:0;text-align:left;font:inherit;font-size:.86rem;
  padding:.35rem .5rem;border:1px solid var(--linka);border-radius:6px;
  background:var(--panel-2);color:var(--text);cursor:pointer}
.fraze-vlozit:hover{border-color:var(--hlavni);color:var(--hlavni)}
.fraze-smazat{flex:none;min-height:0;width:1.9rem;font-size:1.05rem;line-height:1;
  padding:0;border:1px solid transparent;border-radius:6px;
  background:transparent;color:var(--slabe);cursor:pointer}
.fraze-smazat:hover{color:var(--chyba);background:var(--panel-2);
  border-color:var(--linka)}
.fraze-nova{display:flex;gap:.35rem}
.fraze-nova input{flex:1;min-width:0;margin:0}
.fraze-nova button{flex:none}

/* Popisek pro čtečku. Bez téhle třídy by se vytiskl jako text
   a rozhodil roh dlaždice — totéž poučení jako u .skryte na tabuli. */
.skryte{position:absolute;width:1px;height:1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap}

/* ─── NÁVAZNOST ─────────────────────────────────────────────
   Ukazuje se na kartě druhu (.kk-navaznost). Tady už jen vzhled seznamu. */
.navaznost{position:relative}
.dlazdice-popisek{display:block;font-weight:600;margin-bottom:.5rem;
  font-size:.94rem}
.predchudci{display:grid;gap:.4rem;
  grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));margin-bottom:.6rem}
.predchudce{display:flex;align-items:center;gap:.6rem;margin:0;
  padding:.55rem .7rem;border:1px solid var(--linka);border-radius:8px;
  background:var(--panel);font-weight:400;cursor:pointer;
  transition:border-color .15s,background .15s}
.predchudce:hover{border-color:var(--hlavni)}
.predchudce:has(input:checked){border-color:var(--hlavni);
  background:var(--panel-2)}
.predchudce input{width:auto;flex:none;margin:0;padding:0}
.predchudce-nazev{flex:1}
.predchudce-predmet{color:var(--slabe);font-size:.82rem;white-space:nowrap}

/* Filtr podle předmětu se skládá níž z výčtu PREDMETY — viz
   pravidlaPredmetu(). Ruční seznam by byl druhý zdroj pravdy. */

.prazdna-navaznost{border:1px dashed var(--linka);border-radius:10px;
  padding:1rem 1.1rem;color:var(--slabe)}
.prazdna-navaznost strong{color:var(--text);display:block;margin-bottom:.3rem}
.prazdna-navaznost p{margin:0;font-size:.92rem}
/* Psací pole mají písmo stránky (F5, suchý průchod 18. 9. 2026): cíl,
   typické chyby i metodika se psaly strojovým písmem, vedle tématu
   v běžném. Strojové písmo jen tam, kde se kopíruje prompt nebo kód. */
textarea{font:inherit;line-height:1.5;resize:vertical}
textarea.kopirovaci{font:13px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}
textarea.kopirovaci{background:var(--pozadi)}
.nahled-mini{max-width:120px;max-height:80px;border-radius:4px;display:block}
/* Údaje nabídky na Tržišti (T2.7d): kategorie, ročník, klíčová slova, licence. */
.udaje-nabidky{display:grid;grid-template-columns:max-content 1fr;gap:.35rem 1rem;margin:0}
.udaje-nabidky dt{color:var(--slabe)}
.udaje-nabidky dd{margin:0}
code{font:13px ui-monospace,SFMono-Regular,Consolas,monospace;background:var(--pozadi);
     padding:.1rem .3rem;border-radius:4px}
.nahled-obrazek img{max-width:100%;max-height:60vh;border-radius:8px;display:block;margin:0 auto}
.nahled-video{text-align:center;padding:2rem 1rem}
.kroky{counter-reset:krok;list-style:none;padding:0;margin:0}
.kroky li{counter-increment:krok;position:relative;padding-left:2.2rem;
margin-bottom:1rem}
.kroky li::before{content:counter(krok);position:absolute;left:0;top:0;
width:1.6rem;height:1.6rem;border-radius:50%;background:var(--hlavni);color:var(--na-akcentu);
display:grid;place-items:center;font-size:.85rem;font-weight:600}
.chaty{display:flex;gap:.75rem;flex-wrap:wrap;margin:.5rem 0}
.chaty a{display:inline-block;padding:.5rem .9rem;border:1px solid var(--linka);
border-radius:6px;text-decoration:none;background:var(--panel)}
.chaty a:hover{background:var(--hlavni-svetle)}

/* ─── náhled lekce ─── */
.nahled-slide{background:var(--panel);border:1px solid var(--linka);
border-radius:10px;margin-bottom:1rem;overflow:hidden}
.nahled-plocha{padding:2rem 2.25rem;min-height:16rem}
.nahled-plocha h3{font-size:1.5rem;margin:0 0 1.25rem;line-height:1.3}
.nahled-plocha h4{font-size:1rem;margin:0 0 .5rem;color:var(--slabe)}
.nahled-polozky{list-style:none;padding:0;margin:0;font-size:1.1rem}
.nahled-polozky li{padding:.55rem 0;border-bottom:1px solid var(--pozadi);
display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap}
.nahled-polozky li:last-child{border-bottom:none}
.nahled-polozky li.je-spravne{color:var(--ok);font-weight:600}
.nahled-znacka{display:inline-block;width:1.2rem;flex:none;color:var(--ok)}
.nahled-diagnostika{width:100%;padding-left:1.8rem;color:var(--slabe);
font-weight:400;font-size:.85rem;font-style:italic}
.nahled-veta{font-size:1.25rem;line-height:1.8}
.nahled-mezera{background:var(--ok-pozadi);border-bottom:2px solid var(--ok);
padding:.1rem .5rem;border-radius:4px;font-weight:600;color:var(--ok)}
.nahled-chyba{background:var(--chyba-pozadi);border-bottom:2px solid var(--chyba);
padding:0 .2rem;border-radius:4px;color:var(--chyba)}
.nahled-napoveda{color:var(--slabe);font-size:.95rem}
.nahled-poznamka{color:var(--slabe);font-size:.85rem;font-style:italic;margin:.75rem 0 0}
.nahled-dvojice{list-style:none;padding:0;margin:0;font-size:1.05rem}
.nahled-dvojice li{display:grid;grid-template-columns:1fr auto 1fr;gap:.75rem;
align-items:center;padding:.5rem 0;border-bottom:1px solid var(--pozadi)}
.nahled-vlevo{text-align:right;font-weight:600}
.nahled-sipka{color:var(--slabe)}
.nahled-poradi{list-style:none;padding:0;margin:0;font-size:1.05rem;
counter-reset:krok}
.nahled-poradi li{display:flex;gap:.75rem;align-items:center;padding:.5rem 0}
.nahled-cislo{width:1.7rem;height:1.7rem;border-radius:50%;flex:none;
background:var(--hlavni);color:var(--na-akcentu);display:grid;place-items:center;
font-size:.85rem;font-weight:600}
.nahled-skupiny{display:flex;gap:1.25rem;flex-wrap:wrap}
.nahled-skupina{flex:1 1 12rem;background:var(--pozadi);border-radius:8px;
padding:.9rem 1.1rem}
.nahled-prazdno{color:var(--slabe);font-style:italic}
.nahled-zastup{font-size:2rem;text-align:center;color:var(--slabe);margin:2rem 0}
.nahled-patka{display:flex;gap:1rem;align-items:center;padding:.6rem 1.25rem;
border-top:1px solid var(--linka);background:var(--pozadi);
color:var(--slabe);font-size:.85rem}
.nahled-patka span:nth-child(2){margin-right:auto}
.nahled-revize{padding:.9rem 1.25rem;border-top:1px dashed var(--linka);
font-size:.92rem;background:var(--panel-jemny)}
.nahled-revize p{margin:.25rem 0;color:var(--slabe)}
.nahled-ovladani{display:flex;gap:1rem;align-items:center;justify-content:center;
margin:1rem 0}
.nahled-ovladani span{color:var(--slabe);font-variant-numeric:tabular-nums;
min-width:4rem;text-align:center}
/* Tlačítko: kaštan, 44 bodů na výšku (prst na tabletu), zaoblení karty.
   Tiché tlačítko je bílé s linkou — vedlejší akce vedle hlavní. */
button{font:inherit;min-height:44px;padding:.55rem 1.15rem;border-radius:var(--polomer);cursor:pointer;
border:1px solid var(--hlavni);background:var(--hlavni);color:var(--na-akcentu);font-weight:500;
transition:background .15s,border-color .15s}
button:hover{background:var(--hlavni-tmave);border-color:var(--hlavni-tmave)}
button.tise{background:var(--panel);color:var(--text);border-color:var(--linka)}
button.tise:hover{background:var(--hlavni-svetle);border-color:var(--linka-tmava)}
form.radkova{display:inline}
form.radkova button{min-height:34px;padding:.3rem .75rem;font-size:.85rem;font-weight:400;
border-radius:9px}
/* Šipky pořadí. Krajní slide šipku nemá a místo po ní se drží tečkou —
   jinak by sloupec poskakoval a šipky by nebyly pod sebou. */
.posun{display:inline-flex;gap:.2rem;align-items:center}
.posun form.radkova button{padding:.25rem .5rem;line-height:1;min-width:2.1rem}
.posun-prazdno{display:inline-block;min-width:1.9rem;text-align:center;
color:var(--linka);user-select:none}
.uzka{max-width:28rem;margin:3.5rem auto}
.uzka h1{text-align:center}
.uzka .podnadpis{text-align:center}
.akce{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.odkaz-kopie{word-break:break-all;font-family:ui-monospace,monospace;
font-size:.85rem;background:var(--pozadi);border:1px solid var(--linka);
border-radius:10px;padding:.7rem;margin:.5rem 0}
body>footer{max-width:64rem;margin:0 auto;padding:0 1rem 2.5rem;color:var(--slabe);
font-size:.82rem}
/* Odznak zkušební instance (Ú-D3) — vkládá ho http.mjs jen při
   EDUSHOW_REZIM_INSTANCE=zkouska; výroba tenhle prvek nemá. */
footer .odznak-instance{display:inline-block;margin:.4rem 0 0;padding:.1rem .5rem;
border:1px solid var(--varovani-linka);border-radius:6px;background:var(--varovani-pozadi);
color:var(--varovani);font-weight:600;letter-spacing:.02em}
/* ─── UKAZATEL POSTUPU ─── */
.postup{display:flex;list-style:none;padding:0;margin:0 0 1.75rem;
gap:.4rem;flex-wrap:wrap;counter-reset:none}
.postup-krok{display:flex;align-items:center;gap:.5rem;flex:1 1 8rem;
padding:.6rem .85rem;border-radius:10px;background:var(--panel);
border:1px solid var(--linka);color:var(--slabe);font-size:.92rem;
min-width:0}
.postup-cislo{display:grid;place-items:center;width:1.65rem;height:1.65rem;
flex:0 0 auto;border-radius:50%;background:var(--pozadi);
border:1px solid var(--linka);font-size:.82rem;font-weight:600}
.postup-popis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.postup-krok.hotovo{border-color:var(--ok-linka);background:var(--ok-pozadi);
color:var(--ok)}
.postup-krok.hotovo .postup-cislo{background:var(--ok);border-color:var(--ok);
color:var(--na-akcentu)}
.postup-krok.ted{border-color:var(--hlavni);color:var(--text);font-weight:600;
box-shadow:0 0 0 3px var(--hlavni-svetle)}
.postup-krok.ted .postup-cislo{background:var(--hlavni);
border-color:var(--hlavni);color:var(--na-akcentu)}

/* ─── CO JSTE ZADALI: souhrn nad osnovou ───
   Třída, kterou obrazovka vydá a stylopis nezná, se neprojeví jako
   chyba — jen to vypadá jako holý výpis (21. 8. 2026 trida moznost,
   29. 8. selektor .skryte). Proto se přidávají SPOLU s kódem, který
   je píše. */
.zadani-souhrn{margin-bottom:1.25rem}
.zadani-souhrn summary{cursor:pointer;list-style:none}
.zadani-souhrn summary::-webkit-details-marker{display:none}
.zadani-souhrn summary h2{display:inline;margin:0}
.zadani-souhrn summary::after{content:"▾";margin-left:.5rem;
color:var(--hlavni);font-size:1.05rem;line-height:1}
.zadani-souhrn:not([open]) summary::after{content:"▸"}
.zadani-vaha{margin:1rem 0 .4rem;font-size:.82rem;letter-spacing:.04em;
text-transform:uppercase;color:var(--slabe);font-weight:600}
.zadani-pole{display:grid;grid-template-columns:minmax(9rem,14rem) 1fr;
gap:.35rem .9rem;margin:0}
.zadani-pole dt{font-size:.82rem;letter-spacing:.02em;color:var(--slabe);
font-weight:600}
.zadani-pole dd{margin:0;min-width:0}
.zadani-pole dd p{margin:0}
.zadani-polozky{margin:0;padding-left:1.1rem}

/* ─── DRUHY ÚČTU V REGISTRACI (Ú31) ─── */
/* Nabídka je výběr, popis druhu se do položky nevejde — stojí
   tedy pod ní. Bez toho by si člověk vybíral mezi třemi názvy a nevěděl,
   co se mu podle nich založí (bod 12). */
.druhy-registrace{margin:.2rem 0 1rem;padding:.7rem .9rem;
border:1px solid var(--linka);border-radius:8px;background:var(--panel-2)}
.druhy-registrace dt{font-weight:600;font-size:.9rem}
.druhy-registrace dd{margin:.1rem 0 .6rem;color:var(--slabe);font-size:.85rem}
.druhy-registrace dd:last-child{margin-bottom:0}

/* ─── PŮVOD METODIKY a její úprava (Ú-KV5) ─── */
.puvod-metodiky{display:inline-block;margin-left:.4rem;padding:.05rem .45rem;
border-radius:99px;border:1px solid var(--linka);color:var(--slabe);
font-size:.72rem;font-weight:500;vertical-align:middle;white-space:nowrap}
.pole-metodiky{display:block;margin-top:.9rem;font-weight:600;font-size:.92rem}
.pole-metodiky textarea{display:block;width:100%;margin-top:.3rem;font-weight:400}
.pole-metodiky-napoveda{display:block;margin-top:.2rem;font-weight:400;
font-size:.82rem;color:var(--slabe)}
/* Typická chyba: text, který tu je, a návrh chatu vedle sebe (P12). */
.volba-chyby{display:block;margin:.6rem 0}
.volba-chyby-vedle{display:flex;flex-wrap:wrap;gap:.8rem}
.volba-chyby-navrh{display:block;flex:1 1 15rem;min-width:0;padding:.6rem .8rem;
border:1px solid var(--linka);border-radius:8px}
.volba-chyby-text{display:block;margin:.3rem 0 .6rem}
.volba-chyby-stitek{display:block;font-size:.82rem;color:var(--slabe)}

/* ─── DOPLNIT NÁPADY: schránka i API v jednom panelu (Ú-KV4) ─── */
.napady{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--linka)}
.napady h2{margin-top:0}
.akce-napady{flex-wrap:wrap;gap:.6rem;align-items:center}
.stav-schranky{min-height:1.3em;margin:.4rem 0;color:var(--slabe);font-size:.9rem}
/* POLE K RUČNÍMU ZKOPÍROVÁNÍ (O9): pod hláškou po „Do schránky" — metodika
   i AISUM (src/klient/schranka.mjs). Zavřené je to jen řádek popisku,
   rozbalené pole přes celou šířku s textem, který šel do schránky. */
.rucni-kopie{margin:.3rem 0 .8rem;font-size:.88rem}
.rucni-kopie>summary{cursor:pointer;color:var(--slabe);text-decoration:underline;
text-underline-offset:2px}
.rucni-kopie>summary:focus-visible{outline:2px solid var(--hlavni);outline-offset:1px}
.rucni-kopie-text{display:block;width:100%;min-height:9em;margin-top:.35rem;
font:13px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;background:var(--pozadi)}
.stav-osnovy{margin:.4rem 0;color:var(--ok);font-size:.95rem}
.prompt-metodiky,.odpoved-z-chatu,.do-chatu{display:block;margin-top:1rem;
font-weight:600;font-size:.92rem}
.prompt-metodiky textarea,.odpoved-z-chatu textarea,.do-chatu textarea{
display:block;width:100%;margin-top:.35rem;font-weight:400}
.prompt-metodiky-text,.do-chatu-text{font-family:ui-monospace,Consolas,monospace;
font-size:.8rem}

/* ─── OSNOVA: kroky k potvrzení ─── */
.osnova{list-style:none;padding:0;margin:0 0 1.25rem}
.osnova-krok{display:flex;align-items:center;gap:.85rem;padding:.7rem .85rem;
border:1px solid var(--linka);border-radius:10px;background:var(--panel);
margin-bottom:.5rem}
.osnova-krok:hover{border-color:var(--linka-tmava)}
.osnova-cislo{display:grid;place-items:center;width:1.9rem;height:1.9rem;
flex:0 0 auto;border-radius:8px;background:var(--pozadi);
border:1px solid var(--linka);font-weight:600;font-size:.88rem;
color:var(--slabe)}
.osnova-telo{flex:1 1 auto;min-width:0;display:flex;align-items:center;
gap:.85rem;flex-wrap:wrap}
.osnova-telo select{margin:0;flex:0 0 auto;width:auto;min-width:11rem;
padding:.35rem .5rem;font-size:.92rem}
.osnova-cil{margin:0;color:var(--slabe);font-size:.94rem;flex:1 1 12rem;
min-width:0}
/* Pole „Cíl kroku" u kroku bez cíle (O8): zabere řádek vedle typu. */
.osnova-cil-pole{margin:0;flex:1 1 16rem;min-width:0}
.osnova-cil-pole textarea{margin:0;font-size:.94rem}
.osnova-pozor{margin:0;color:var(--slabe);font-size:.86rem;flex:1 1 100%;
min-width:0;padding-left:.1rem}
.osnova-nastroje{display:flex;align-items:center;gap:.35rem;flex:0 0 auto}
.osnova-smazat{display:flex;align-items:center;gap:.3rem;margin:0;
font-size:.85rem;color:var(--slabe);white-space:nowrap}
.osnova-smazat input{margin:0}
button.ikona{min-height:32px;padding:.25rem .5rem;font-size:.75rem;line-height:1.2;
background:var(--pozadi);color:var(--slabe);border:1px solid var(--linka)}
button.ikona:hover:not(:disabled){background:var(--hlavni-svetle);color:var(--text)}
button.ikona:disabled{opacity:.35;cursor:default}
.akce-osnova{flex-wrap:wrap;gap:.6rem;align-items:center}
button.hlavni{font-weight:600}
.napad-radek{display:block;margin-top:.2rem;font-size:.88rem}

@media (max-width:40rem){
  .zadani-pole{grid-template-columns:1fr;gap:.15rem}
  .zadani-pole dd{margin-bottom:.5rem}
  .osnova-krok{flex-wrap:wrap}
  .osnova-telo select{width:100%;min-width:0}
  .osnova-nastroje{margin-left:auto}
  .postup-krok{flex:1 1 6rem;font-size:.85rem}
}
/* ─── ZLOMEK NAD SEBOU ──────────────────────────────────────
   Třídy urcuje formatovani.mjs, ne paměť — kdo si vymyslí jiné,
   vysází zlomek jako dvě čísla pod sebou bez čáry.
   Česká škola píše čitatele nad jmenovatele, ne ¾. */
.zlomek{display:inline-flex;flex-direction:column;align-items:center;
vertical-align:-.45em;line-height:1.08;margin:0 .12em;
font-variant-numeric:tabular-nums}
.zlomek .citatel{padding:0 .28em}
/* Čára roste s písmem: v rozhraní je text 16px, v promítání třikrát
   větší. Pevných 1,5px by na projektoru zmizelo. max drží spodní
   hranici, aby čára nezmizela ani u drobného textu. */
.zlomek .jmenovatel{padding:0 .28em;
border-top:max(1px, .07em) solid currentColor}

form:has(input[name=predmetKlic][value=anglictina]:checked) .predchudce:not([data-predmet=anglictina]):not([data-predmet=""]){display:none}
form:has(input[name=predmetKlic][value=cestina]:checked) .predchudce:not([data-predmet=cestina]):not([data-predmet=""]){display:none}
form:has(input[name=predmetKlic][value=matematika]:checked) .predchudce:not([data-predmet=matematika]):not([data-predmet=""]){display:none}
form:has(input[name=predmetKlic][value=chemie]:checked) .predchudce:not([data-predmet=chemie]):not([data-predmet=""]){display:none}
form:has(input[name=predmetKlic][value=cizi-jazyk]:checked) .predchudce:not([data-predmet=cizi-jazyk]):not([data-predmet=""]){display:none}
form:has(input[name=predmetKlic][value=fyzika]:checked) .predchudce:not([data-predmet=fyzika]):not([data-predmet=""]){display:none}
form:has(input[name=predmetKlic][value=dejepis]:checked) .predchudce:not([data-predmet=dejepis]):not([data-predmet=""]){display:none}
form:has(input[name=predmetKlic][value=prirodopis]:checked) .predchudce:not([data-predmet=prirodopis]):not([data-predmet=""]){display:none}
form:has(input[name=predmetKlic][value=zemepis]:checked) .predchudce:not([data-predmet=zemepis]):not([data-predmet=""]){display:none}
.generator:has(input[name=predmetKlic][data-prazdna]:checked) [data-h="predmetKlic-"]{display:inline}
.generator:has(input[name=predmetKlic][data-prazdna]:checked) .jezdec[data-karta=predmetKlic] .jezdec-hotovo{display:none}
.generator:has(input[name=predmetKlic][value="anglictina"]:checked) [data-h="predmetKlic-0"]{display:inline}
.generator:has(input[name=predmetKlic][value="cestina"]:checked) [data-h="predmetKlic-1"]{display:inline}
.generator:has(input[name=predmetKlic][value="matematika"]:checked) [data-h="predmetKlic-2"]{display:inline}
.generator:has(input[name=predmetKlic][value="chemie"]:checked) [data-h="predmetKlic-3"]{display:inline}
.generator:has(input[name=predmetKlic][value="cizi-jazyk"]:checked) [data-h="predmetKlic-4"]{display:inline}
.generator:has(input[name=predmetKlic][value="fyzika"]:checked) [data-h="predmetKlic-5"]{display:inline}
.generator:has(input[name=predmetKlic][value="dejepis"]:checked) [data-h="predmetKlic-6"]{display:inline}
.generator:has(input[name=predmetKlic][value="prirodopis"]:checked) [data-h="predmetKlic-7"]{display:inline}
.generator:has(input[name=predmetKlic][value="zemepis"]:checked) [data-h="predmetKlic-8"]{display:inline}
.generator:has(input[name=predmetKlic][value="jiny"]:checked) [data-h="predmetKlic-9"]{display:inline}
.generator:has(input[name=druh][data-prazdna]:checked) [data-h="druh-"]{display:inline}
.generator:has(input[name=druh][data-prazdna]:checked) .jezdec[data-karta=druh] .jezdec-hotovo{display:none}
.generator:has(input[name=druh][value="smisena"]:checked) [data-h="druh-0"]{display:inline}
.generator:has(input[name=druh][value="vyklad"]:checked) [data-h="druh-1"]{display:inline}
.generator:has(input[name=druh][value="procviceni"]:checked) [data-h="druh-2"]{display:inline}
.generator:has(input[name=druh][value="navazujici"]:checked) [data-h="druh-3"]{display:inline}
.generator:has(input[name=druh][value="overeni"]:checked) [data-h="druh-4"]{display:inline}
.generator:has(input[name=vek][data-prazdna]:checked) [data-h="vek-"]{display:inline}
.generator:has(input[name=vek][data-prazdna]:checked) .jezdec[data-karta=vek] .jezdec-hotovo{display:none}
.generator:has(input[name=vek][value="1.–3. třída (6–9 let)"]:checked) [data-h="vek-0"]{display:inline}
.generator:has(input[name=vek][value="4.–5. třída (9–11 let)"]:checked) [data-h="vek-1"]{display:inline}
.generator:has(input[name=vek][value="6.–7. třída (11–13 let)"]:checked) [data-h="vek-2"]{display:inline}
.generator:has(input[name=vek][value="8.–9. třída (13–15 let)"]:checked) [data-h="vek-3"]{display:inline}
.generator:has(input[name=vek][value="střední škola"]:checked) [data-h="vek-4"]{display:inline}
.generator:has(input[name=vek][value="dospělí"]:checked) [data-h="vek-5"]{display:inline}
.generator:has(input[name=delka][data-prazdna]:checked) [data-h="delka-"]{display:inline}
.generator:has(input[name=delka][data-prazdna]:checked) .jezdec[data-karta=delka] .jezdec-hotovo{display:none}
.generator:has(input[name=delka][value="15 minut, ≈ 6 kroků"]:checked) [data-h="delka-0"]{display:inline}
.generator:has(input[name=delka][value="20 minut, ≈ 8 kroků"]:checked) [data-h="delka-1"]{display:inline}
.generator:has(input[name=delka][value="30 minut, ≈ 11 kroků"]:checked) [data-h="delka-2"]{display:inline}
.generator:has(input[name=delka][value="45 minut, ≈ 14 kroků"]:checked) [data-h="delka-3"]{display:inline}
.generator:has(input[name=delka][value="60 minut, ≈ 18 kroků"]:checked) [data-h="delka-4"]{display:inline}
.generator:has(input[name=ton][data-prazdna]:checked) [data-h="ton-"]{display:inline}
.generator:has(input[name=ton][data-prazdna]:checked) .jezdec[data-karta=ton] .jezdec-hotovo{display:none}
.generator:has(input[name=ton][value="hravý a odlehčený"]:checked) [data-h="ton-0"]{display:inline}
.generator:has(input[name=ton][value="věcný a klidný"]:checked) [data-h="ton-1"]{display:inline}
.generator:has(input[name=ton][value="motivační — hodně malých úspěchů za sebou"]:checked) [data-h="ton-2"]{display:inline}
.generator:has(input[name=ton][value="vyprávěcí, s důrazem na příběhy a souvislosti"]:checked) [data-h="ton-3"]{display:inline}
.generator:has(input[name=predmetKlic][value="jiny"]:checked) [data-sh=predmetKlic]:has(.sh-vlastni:not(:empty)) .sh-vlastni{display:inline}
.generator:has(input[name=predmetKlic][value="jiny"]:checked) [data-sh=predmetKlic]:has(.sh-vlastni:not(:empty)) [data-h="predmetKlic-9"]{display:none}
.generator:has(input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked)) .jezdec[data-karta=druh] .jezdec-hotovo{display:none}
.generator:has([name=tema]:placeholder-shown) .jezdec[data-karta=tema] .jezdec-hotovo{display:none}
.generator:has([name=tema]:placeholder-shown) [data-sh=tema] .sh-napsano{display:none}
.generator:has([name=tema]:placeholder-shown) [data-sh=tema] .sh-chybi{display:inline}
.generator:has([name=cil]:placeholder-shown) .jezdec[data-karta=cil] .jezdec-hotovo{display:none}
.generator:has([name=cil]:placeholder-shown) [data-sh=cil] .sh-napsano{display:none}
.generator:has([name=cil]:placeholder-shown) [data-sh=cil] .sh-chybi{display:inline}
.generator:has([name=umi]:placeholder-shown) .jezdec[data-karta=umi] .jezdec-hotovo{display:none}
.generator:has([name=umi]:placeholder-shown) [data-sh=umi] .sh-napsano{display:none}
.generator:has([name=umi]:placeholder-shown) [data-sh=umi] .sh-chybi{display:inline}
.generator:has([name=chyby]:placeholder-shown) .jezdec[data-karta=chyby] .jezdec-hotovo{display:none}
.generator:has([name=chyby]:placeholder-shown) [data-sh=chyby] .sh-napsano{display:none}
.generator:has([name=chyby]:placeholder-shown) [data-sh=chyby] .sh-chybi{display:inline}
.generator:has([name=vyhnout]:placeholder-shown) .jezdec[data-karta=vyhnout] .jezdec-hotovo{display:none}
.generator:has([name=vyhnout]:placeholder-shown) [data-sh=vyhnout] .sh-napsano{display:none}
.generator:has([name=vyhnout]:placeholder-shown) [data-sh=vyhnout] .sh-chybi{display:inline}
.generator:has([name=poznamka]:placeholder-shown) .jezdec[data-karta=poznamka] .jezdec-hotovo{display:none}
.generator:has([name=poznamka]:placeholder-shown) [data-sh=poznamka] .sh-napsano{display:none}
.generator:has([name=poznamka]:placeholder-shown) [data-sh=poznamka] .sh-chybi{display:inline}
.generator:has([name=cil]:placeholder-shown) [data-sh=cil]{background:var(--varovani-pozadi);color:var(--varovani)}
@supports selector(:has(a)){
.balicek{display:grid;grid-template-columns:minmax(0,1fr)}
.karta-krok{grid-area:1/1;margin:0;opacity:0;visibility:hidden;z-index:1;transform:translateY(12px);transition:opacity .22s ease,transform .22s ease,visibility 0s linear .22s}
.generator:has(#k-pole-predmetklic:target) #k-pole-predmetklic,
.generator:not(:has(.karta-krok:target)):has(#k-pole-predmetklic.ted) #k-pole-predmetklic,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-predmetklic input[data-prazdna]:checked) #k-pole-predmetklic,
.generator:has(#k-pole-druh:target) #k-pole-druh,
.generator:not(:has(.karta-krok:target)):has(#k-pole-druh.ted) #k-pole-druh,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-druh input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)) #k-pole-druh,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked)):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)) #k-pole-druh,
.generator:has(#k-pole-vek:target) #k-pole-vek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-vek.ted) #k-pole-vek,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-vek input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))) #k-pole-vek,
.generator:has(#k-pole-delka:target) #k-pole-delka,
.generator:not(:has(.karta-krok:target)):has(#k-pole-delka.ted) #k-pole-delka,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-delka input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)) #k-pole-delka,
.generator:has(#k-pole-ton:target) #k-pole-ton,
.generator:not(:has(.karta-krok:target)):has(#k-pole-ton.ted) #k-pole-ton,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-ton input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)):not(:has(#k-pole-delka input[data-prazdna]:checked)) #k-pole-ton,
.generator:has(#k-pole-tema:target) #k-pole-tema,
.generator:not(:has(.karta-krok:target)):has(#k-pole-tema.ted) #k-pole-tema,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)):not(:has(#k-pole-delka input[data-prazdna]:checked)):not(:has(#k-pole-ton input[data-prazdna]:checked)) #k-pole-tema,
.generator:has(#k-pole-cil:target) #k-pole-cil,
.generator:not(:has(.karta-krok:target)):has(#k-pole-cil.ted) #k-pole-cil,
.generator:has(#k-pole-umi:target) #k-pole-umi,
.generator:not(:has(.karta-krok:target)):has(#k-pole-umi.ted) #k-pole-umi,
.generator:has(#k-pole-chyby:target) #k-pole-chyby,
.generator:not(:has(.karta-krok:target)):has(#k-pole-chyby.ted) #k-pole-chyby,
.generator:has(#k-pole-vyhnout:target) #k-pole-vyhnout,
.generator:not(:has(.karta-krok:target)):has(#k-pole-vyhnout.ted) #k-pole-vyhnout,
.generator:has(#k-pole-poznamka:target) #k-pole-poznamka,
.generator:not(:has(.karta-krok:target)):has(#k-pole-poznamka.ted) #k-pole-poznamka,
.generator:has(#k-souhrn:target) #k-souhrn,
.generator:not(:has(.karta-krok:target)):has(#k-souhrn.ted) #k-souhrn{opacity:1;visibility:visible;z-index:2;transform:none;transition:transform .45s cubic-bezier(.2,.75,.2,1),visibility 0s}
.generator:has(#k-pole-predmetklic:target) .jezdec[data-karta=predmetKlic],
.generator:not(:has(.karta-krok:target)):has(#k-pole-predmetklic.ted) .jezdec[data-karta=predmetKlic],
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-predmetklic input[data-prazdna]:checked) .jezdec[data-karta=predmetKlic],
.generator:has(#k-pole-druh:target) .jezdec[data-karta=druh],
.generator:not(:has(.karta-krok:target)):has(#k-pole-druh.ted) .jezdec[data-karta=druh],
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-druh input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)) .jezdec[data-karta=druh],
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked)):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)) .jezdec[data-karta=druh],
.generator:has(#k-pole-vek:target) .jezdec[data-karta=vek],
.generator:not(:has(.karta-krok:target)):has(#k-pole-vek.ted) .jezdec[data-karta=vek],
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-vek input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))) .jezdec[data-karta=vek],
.generator:has(#k-pole-delka:target) .jezdec[data-karta=delka],
.generator:not(:has(.karta-krok:target)):has(#k-pole-delka.ted) .jezdec[data-karta=delka],
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-delka input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)) .jezdec[data-karta=delka],
.generator:has(#k-pole-ton:target) .jezdec[data-karta=ton],
.generator:not(:has(.karta-krok:target)):has(#k-pole-ton.ted) .jezdec[data-karta=ton],
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-ton input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)):not(:has(#k-pole-delka input[data-prazdna]:checked)) .jezdec[data-karta=ton],
.generator:has(#k-pole-tema:target) .jezdec[data-karta=tema],
.generator:not(:has(.karta-krok:target)):has(#k-pole-tema.ted) .jezdec[data-karta=tema],
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)):not(:has(#k-pole-delka input[data-prazdna]:checked)):not(:has(#k-pole-ton input[data-prazdna]:checked)) .jezdec[data-karta=tema],
.generator:has(#k-pole-cil:target) .jezdec[data-karta=cil],
.generator:not(:has(.karta-krok:target)):has(#k-pole-cil.ted) .jezdec[data-karta=cil],
.generator:has(#k-pole-umi:target) .jezdec[data-karta=umi],
.generator:not(:has(.karta-krok:target)):has(#k-pole-umi.ted) .jezdec[data-karta=umi],
.generator:has(#k-pole-chyby:target) .jezdec[data-karta=chyby],
.generator:not(:has(.karta-krok:target)):has(#k-pole-chyby.ted) .jezdec[data-karta=chyby],
.generator:has(#k-pole-vyhnout:target) .jezdec[data-karta=vyhnout],
.generator:not(:has(.karta-krok:target)):has(#k-pole-vyhnout.ted) .jezdec[data-karta=vyhnout],
.generator:has(#k-pole-poznamka:target) .jezdec[data-karta=poznamka],
.generator:not(:has(.karta-krok:target)):has(#k-pole-poznamka.ted) .jezdec[data-karta=poznamka],
.generator:has(#k-souhrn:target) .jezdec[data-karta=souhrn],
.generator:not(:has(.karta-krok:target)):has(#k-souhrn.ted) .jezdec[data-karta=souhrn]{transform:translateY(-6px) scale(1.12);filter:none;z-index:6;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--panel) 65%,transparent),0 14px 22px -12px color-mix(in srgb,var(--stin) 60%,transparent),0 0 0 2px color-mix(in srgb,var(--c) 45%,var(--panel))}
.generator:has(#k-pole-predmetklic:target) .jezdec[data-karta=predmetKlic] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-predmetklic.ted) .jezdec[data-karta=predmetKlic] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-predmetklic input[data-prazdna]:checked) .jezdec[data-karta=predmetKlic] .jezdec-stitek,
.generator:has(#k-pole-druh:target) .jezdec[data-karta=druh] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-druh.ted) .jezdec[data-karta=druh] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-druh input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)) .jezdec[data-karta=druh] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked)):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)) .jezdec[data-karta=druh] .jezdec-stitek,
.generator:has(#k-pole-vek:target) .jezdec[data-karta=vek] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-vek.ted) .jezdec[data-karta=vek] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-vek input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))) .jezdec[data-karta=vek] .jezdec-stitek,
.generator:has(#k-pole-delka:target) .jezdec[data-karta=delka] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-delka.ted) .jezdec[data-karta=delka] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-delka input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)) .jezdec[data-karta=delka] .jezdec-stitek,
.generator:has(#k-pole-ton:target) .jezdec[data-karta=ton] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-ton.ted) .jezdec[data-karta=ton] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-ton input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)):not(:has(#k-pole-delka input[data-prazdna]:checked)) .jezdec[data-karta=ton] .jezdec-stitek,
.generator:has(#k-pole-tema:target) .jezdec[data-karta=tema] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-tema.ted) .jezdec[data-karta=tema] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)):not(:has(#k-pole-delka input[data-prazdna]:checked)):not(:has(#k-pole-ton input[data-prazdna]:checked)) .jezdec[data-karta=tema] .jezdec-stitek,
.generator:has(#k-pole-cil:target) .jezdec[data-karta=cil] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-cil.ted) .jezdec[data-karta=cil] .jezdec-stitek,
.generator:has(#k-pole-umi:target) .jezdec[data-karta=umi] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-umi.ted) .jezdec[data-karta=umi] .jezdec-stitek,
.generator:has(#k-pole-chyby:target) .jezdec[data-karta=chyby] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-chyby.ted) .jezdec[data-karta=chyby] .jezdec-stitek,
.generator:has(#k-pole-vyhnout:target) .jezdec[data-karta=vyhnout] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-vyhnout.ted) .jezdec[data-karta=vyhnout] .jezdec-stitek,
.generator:has(#k-pole-poznamka:target) .jezdec[data-karta=poznamka] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-pole-poznamka.ted) .jezdec[data-karta=poznamka] .jezdec-stitek,
.generator:has(#k-souhrn:target) .jezdec[data-karta=souhrn] .jezdec-stitek,
.generator:not(:has(.karta-krok:target)):has(#k-souhrn.ted) .jezdec[data-karta=souhrn] .jezdec-stitek{font-weight:700;box-shadow:inset 0 0 0 2px var(--c),0 1px 0 color-mix(in srgb,var(--panel) 70%,transparent)}
.generator:has(#k-pole-predmetklic:target) .jezdec[data-karta=predmetKlic] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-predmetklic.ted) .jezdec[data-karta=predmetKlic] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-predmetklic input[data-prazdna]:checked) .jezdec[data-karta=predmetKlic] .jezdec-cislo,
.generator:has(#k-pole-druh:target) .jezdec[data-karta=druh] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-druh.ted) .jezdec[data-karta=druh] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-druh input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)) .jezdec[data-karta=druh] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked)):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)) .jezdec[data-karta=druh] .jezdec-cislo,
.generator:has(#k-pole-vek:target) .jezdec[data-karta=vek] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-vek.ted) .jezdec[data-karta=vek] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-vek input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))) .jezdec[data-karta=vek] .jezdec-cislo,
.generator:has(#k-pole-delka:target) .jezdec[data-karta=delka] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-delka.ted) .jezdec[data-karta=delka] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-delka input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)) .jezdec[data-karta=delka] .jezdec-cislo,
.generator:has(#k-pole-ton:target) .jezdec[data-karta=ton] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-ton.ted) .jezdec[data-karta=ton] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):has(#k-pole-ton input[data-prazdna]:checked):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)):not(:has(#k-pole-delka input[data-prazdna]:checked)) .jezdec[data-karta=ton] .jezdec-cislo,
.generator:has(#k-pole-tema:target) .jezdec[data-karta=tema] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-tema.ted) .jezdec[data-karta=tema] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):not(:has(.karta-krok.ted)):not(:has(#k-pole-predmetklic input[data-prazdna]:checked)):not(:has(#k-pole-druh input[data-prazdna]:checked)):not(:has(.karta-druh input[name=druh][value=navazujici]:checked):has(.karta-druh .predchudce):not(:has(.karta-druh .predchudce input:checked))):not(:has(#k-pole-vek input[data-prazdna]:checked)):not(:has(#k-pole-delka input[data-prazdna]:checked)):not(:has(#k-pole-ton input[data-prazdna]:checked)) .jezdec[data-karta=tema] .jezdec-cislo,
.generator:has(#k-pole-cil:target) .jezdec[data-karta=cil] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-cil.ted) .jezdec[data-karta=cil] .jezdec-cislo,
.generator:has(#k-pole-umi:target) .jezdec[data-karta=umi] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-umi.ted) .jezdec[data-karta=umi] .jezdec-cislo,
.generator:has(#k-pole-chyby:target) .jezdec[data-karta=chyby] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-chyby.ted) .jezdec[data-karta=chyby] .jezdec-cislo,
.generator:has(#k-pole-vyhnout:target) .jezdec[data-karta=vyhnout] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-vyhnout.ted) .jezdec[data-karta=vyhnout] .jezdec-cislo,
.generator:has(#k-pole-poznamka:target) .jezdec[data-karta=poznamka] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-pole-poznamka.ted) .jezdec[data-karta=poznamka] .jezdec-cislo,
.generator:has(#k-souhrn:target) .jezdec[data-karta=souhrn] .jezdec-cislo,
.generator:not(:has(.karta-krok:target)):has(#k-souhrn.ted) .jezdec[data-karta=souhrn] .jezdec-cislo{background:var(--c);color:var(--na-akcentu)}
@media (max-width:40rem){
.balicek>.karta-krok{align-self:start}
}
}