/* ============================================================================================
   UPRAVITELNÁ HODNOTA (`uh-*`) — podoba „v klidu text, po kliknutí pole".

   PROČ GLOBÁLNÍ LIST A NE SCOPED CSS: komponenta se vykresluje UVNITŘ CIZÍCH komponent
   (karta položky, souhrnný pruh, buňka tabulky) a scoped pravidla na ně nedosáhnou — Blazor
   jim přilepí značku scope a dá ji jen prvkům z toho jednoho souboru. Přesně takhle vylezl
   anglický souborový vstup na kartě majetku (14. 8. 2026) a přesně proto má vlastní globální
   list i dialog (ADR-0092). Kdo pravidla opíše jinam, má dvě kopie, které se do měsíce
   rozejdou. Hlídá `PodobaUpravitelneHodnotyTests`.

   Slovník tříd:
     .uh            obal (drží stav: .je-uprava, .je-dotaz, .je-jen-cteni)
     .uh-spust      klidový stav s právem zápisu — vypadá jako text, pod kurzorem jako pole
     .uh-ctenim     klidový stav BEZ práva — čistý text, žádná pobídka
     .uh-odznak     barevná značka údaje (pilulka stavu, čtvereček epiky, fotka) vlevo od textu
     .uh-tuzka      značka „tohle jde upravit"; ukáže se pod kurzorem a při zaměření
     .uh-editor     obal otevřeného pole
     .uh-vstup      vlastní pole (třída se předává i do CisloPole / DatumPole)
     .uh-zrus       křížek „nechat beze změny" u nedokončeného doptání a u Neuloženo
     .uh-vytka      věta „Neuloženo. …" pod polem (OB-16)
     .uh-mrizka     nepovinný obal seznamu údajů — najetím na NĚJ se odkryjí tečkované linky
     .je-napoveda   prázdné pole s právem zápisu: nápověda v čárkovaném rámečku (ADR-0161 §34)
     .je-ulozeno    uložené pole: zelený rámeček a fajfka místo tužky 2 s (ADR-0161 §8)
     .je-neulozeno  zápis neprošel, úprava zůstala otevřená s větou pod polem (ADR-0161 §7)
     .pruh-ulozeni  pruh „Uloženo: {popisek}" s Vrátit dole uprostřed (ADR-0161 §9)
   ============================================================================================ */

.uh {
    position: relative;
    display: inline-flex;
    align-items: flex-start;
    max-width: 100%;
    min-width: 0;
}

/* --- klidový stav ------------------------------------------------------------------------ */

/* Vypadá jako hodnota, ne jako pole. Záporný okraj vyrovná vnitřní odsazení, takže se text
   v klidu NEPOSUNE oproti okolním řádkům — jinak by se sloupec údajů viditelně roztřásl. */
/* POZOR NA `max-width: 100%` TADY. Šířku tlačítka určuje jeho obsah (`inline-flex` uvnitř
   obalu, jehož šířku určuje zase obsah), takže se procento vyhodnotí proti ještě neznámému
   základu — a Chrome pak uřízne text PŘESNĚ o šířku tužky: „178 400 000 Kč" se vykreslilo jako
   „178 400 0…" a pomlčka u prázdné hodnoty zmizela docela (1 px místo 24). Změřeno na běžící
   stránce 17. 8. 2026; z CSS to vidět nebylo, ellipsis vypadaly jako dlouhá hodnota.
   Strop drží OBAL `.uh` (ten má definovanou šířku od rodiče) a tlačítko se v něm smrskne samo,
   protože je jeho flex-item. */
.uh-spust {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    min-width: 0;
    margin: -2px -6px;
    padding: 2px 6px;
    border: 1px solid transparent;
    border-radius: 4px;
    background: none;
    color: inherit;
    font: inherit;
    font-variant-numeric: inherit;
    text-align: left;
    /* PROSTRKÁNÍ SE DĚDÍ ZE MÍSTA, KAM JE PRVEK VLOŽENÝ (20. 8. 2026). `font: inherit` ho
       nepokrývá a UA stylopis prohlížeče nastavuje tlačítkům i polím `letter-spacing: normal`
       — takže nadpis s vlastním prostrkáním (název tiketu má −0,015em) ho po převedení na
       upravitelnou hodnotu ZTRATIL: kliknutím se text nepatrně roztáhl. Naměřeno v prohlížeči
       (h2 −0,36 px × `.uh-text` normal); ze zdroje to vidět není. */
    letter-spacing: inherit;
    word-spacing: inherit;
    /* Kurzor říká „tady se píše", ne „tady se kliká" — a musí přebít `.mck button { cursor: pointer }`. */
    cursor: text;
    transition: background-color 120ms ease, border-color 120ms ease;
}

.uh-text {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

/* MUSÍ BÝT POZNAT, ŽE SE DO TOHO DÁ PSÁT — skrytá funkce je totéž co žádná (nález z tabulky
   majetku, 11. 8. 2026). Značka je ale jemná: karta nemá vypadat jako mřížka polí. */
.uh-spust:hover {
    background: var(--barva-povrch);
    border-color: var(--barva-linka);
}

.uh-spust:focus-visible {
    outline: 2px solid var(--barva-text);
    outline-offset: -1px;
}

/* ODZNAK VLEVO OD HODNOTY. Leží uvnitř klikací plochy, aby najetí na odznak otevřelo úpravu
   stejně jako najetí na hodnotu — v návrhu je pilulka stavu součástí téhož tlačítka (`.fv2`).

   Kde odznak je, se řádek zarovnává NA STŘED, ne na účaří: pilulka a fotka mají vlastní výšku
   a na účaří by text vedle nich visel. Zbytek prvků (a všechna dosavadní místa) zůstává na
   `baseline`, aby se sloupec údajů nezačal třást. */
.uh-odznak { flex: none; display: inline-flex; align-items: center; }

.uh-spust:has(.uh-odznak),
.uh:has(.uh-odznak) { align-items: center; }

/* Tužku kreslí sdílená `IkonaTuzka` (28. 8. 2026) — do té doby tu byl znak `✎`, který
   na detailu tiketu stál vedle vektorové tužky u popisu a byl to jiný obrázek.
   `font-size` velikost ikony ŘÍDÍ (ikona je 1em): z 11 px na 13, protože kreslená tužka
   je při 11 px o poznání drobnější než byl znak — ten měl v písmu vlastní vnitřní odsazení. */
.uh-tuzka {
    flex: none;
    display: inline-flex;
    align-items: center;
    font-size: 13px;
    line-height: 1;
    color: var(--barva-text-tlumeny);
    opacity: 0;
    transition: opacity 120ms ease;
}

.uh-spust:hover .uh-tuzka,
.uh-spust:focus-visible .uh-tuzka { opacity: 1; }

/* DLOUHÁ HODNOTA SE ZALAMUJE A DRŽÍ ŘÁDKY (ALF-16, 24. 8. 2026). `white-space: pre-wrap`,
   protože text se ukládá jako prostý text s konci řádků — bez toho by z odstavců byla jedna
   věta. Klikací plocha jde přes celou šířku, aby se dalo kliknout i vedle poslední řádky. */
.uh:has(.uh-text-dlouhy) .uh-spust,
.uh:has(.uh-text-dlouhy) { display: flex; width: 100%; }

.uh-spust:has(.uh-text-dlouhy) { align-items: flex-start; }

.uh-text-dlouhy {
    white-space: pre-wrap;
    overflow: visible;
    text-overflow: clip;
    text-wrap: pretty;
}

.uh-spust:has(.uh-text-dlouhy) .uh-tuzka { margin-left: auto; margin-top: .3em; }

/* Prázdno bez práva nese „-" (kreslí ho komponenta) a je tlumené — ať se nečte jako hodnota.
   S právem nese nápovědu; její podoba je níž (`je-napoveda`), tady jen barva textu. */
.uh-spust.je-prazdna .uh-text,
.uh-ctenim.je-prazdna { color: var(--barva-text-tlumeny); }

/* BEZ PRÁVA ZÁPISU: čistý text. Žádná tužka, žádný rámeček, žádný jiný kurzor — nabízet
   akci, která skončí odmítnutím, je horší než ji nenabídnout. */
/* Bez `max-width: 100%` z téhož důvodu jako u `.uh-spust` — strop drží obal `.uh`. */
.uh-ctenim {
    display: inline-block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Najetím na CELÝ SEZNAM ÚDAJŮ se odkryje, co je živé — bez toho by se muselo hledat myší
   políčko po políčku. Tečkovaná linka je zavedená značka „tenhle údaj se dá přepsat"
   (týž vzor jako `.bunka-spust` v tabulce). */
.uh-mrizka:hover .uh-spust { border-bottom-color: var(--barva-linka); border-bottom-style: dotted; }
.uh-mrizka:hover .uh-spust:hover { border-bottom-style: solid; }

/* --- otevřená úprava ---------------------------------------------------------------------- */

.uh-editor {
    display: inline-flex;
    align-items: flex-start;
    gap: 4px;
    min-width: 0;
    max-width: 100%;
}

.uh-vstup {
    min-width: 0;
    width: 100%;
    padding: 1px 6px;
    border: 1px solid var(--c-zelena-tmava);
    border-radius: 4px;
    background: var(--barva-pozadi);
    color: var(--barva-text);
    font: inherit;
    font-variant-numeric: inherit;
    /* Týž důvod jako u `.uh-spust`: UA stylopis polím prostrkání ruší, takže by se text při
       otevření úpravy proti klidovému stavu posunul. */
    letter-spacing: inherit;
    word-spacing: inherit;
}

.uh-vstup:focus { outline: none; }

.uh-vstup-dlouhy {
    min-width: 240px;
    line-height: 1.45;
    resize: vertical;
}

.uh-vstup-cislo,
.uh-vstup-datum { min-width: 120px; }

.uh-vstup-vyber { padding: 1px 4px; }
/* POLE FORMULÁŘE NA KARTĚ (návrh `.ff .iv`, 14. 10. 2026): hodnota v mřížce údajů je plocha přes
   CELÝ ŘÁDEK se zaoblením jako výběr (`--radius-md`), ne rámeček kolem textu. Odsazení 5 × 9 px
   a záporný okraj drží text na místě, tužka je vpravo. */
.kk-osobni-pole .uh,
.kk-podklad-pole .uh { display: flex; width: 100%; }
.kk-osobni-pole .uh-spust,
.kk-podklad-pole .uh-spust {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    width: calc(100% + 18px);
    padding: 5px 9px;
    margin: -5px -9px;
    border-radius: var(--radius-md);
}
/* Prázdné pole s nápovědou stojí v řádku bez záporného okraje (návrh `.ff .iv.ivph`). */
.kk-osobni-pole .uh-spust.je-napoveda,
.kk-podklad-pole .uh-spust.je-napoveda { width: 100%; margin: 0; }

/* VÝBĚR JAKO POLE (`PoleVKlidu`, prvek `VyberPole`, 14. 10. 2026): pole zabere celou šířku
   buňky formuláře i během zápisu, kdy skořápka kreslí editor ve větvi úpravy. */
.uh:has(.kn-pick) { display: block; }
.uh:has(.kn-pick) > .uh-editor { display: flex; width: 100%; }
.uh:has(.kn-pick) > .uh-editor > .kn-pick { flex: 1 1 auto; }
/* Výběr v poli formuláře nebo karty (návrh `.ff .mpick .mv`): 34 px a písmo 500. */
.uh:has(.kn-pick) .kn-pick .mv { height: 34px; font-weight: 500; }
.uh:has(.kn-pick) .kn-pick::after { top: 13px; }

.uh-zaskrtnuti {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font: inherit;
    cursor: pointer;
}

.uh-zaskrtnuti input { accent-color: var(--c-zelena-tmava); margin: 0; }

/* --- nedokončený rozhovor (doptání / výtka) ------------------------------------------------ */

/* `.zpole` (obal CisloPole a DatumPole) je SVISLÝ flex, takže otázka i výtka rostou POD pole
   a místo si vezmou samy. Dvě podmínky, aby se to povedlo:
     1) `flex: 1` uvnitř svislého rodiče by pole natáhlo do VÝŠKY (ADR-0063 §8) — srážíme ho,
     2) hostitel musí přetečení dovolit; buňka tabulky ořezává (`.tabulka td`), takže se u ní
        váže výjimka na `.je-editovana` — viz tabulka.css. */
.uh .zpole { flex: none; min-width: 0; }

.uh.je-uprava { overflow: visible; }

/* Buňka husté tabulky obsah OŘEZÁVÁ (`.tabulka td`, jinak by se sloupce slévaly), takže by
   se otázka „uřízla do škvíry". Ořez ustoupí jen na dobu otevřené úpravy a váže se na STAV
   ÚPRAVY, ne na rozbalený řádek — to je jiný stav (viz tabulka.css, `.je-editovana`). */
.tabulka td:has(.uh.je-uprava) { overflow: visible; }

/* Otázka potřebuje víc místa než jeden řádek. Nezvedáme řádek natrvalo — jen po dobu, kdy
   otázka opravdu visí, aby se seznam údajů nerozskákal při každém kliknutí. */
.uh.je-dotaz .uh-editor { min-width: 260px; }

.uh-zrus {
    flex: none;
    border: 0;
    background: none;
    color: var(--barva-text-tlumeny);
    font: inherit;
    font-size: 15px;
    line-height: 1;
    padding: 2px 5px;
    border-radius: 4px;
    cursor: pointer;
}

.uh-zrus:hover { background: var(--barva-povrch); color: var(--barva-text); }
.uh-zrus:focus-visible { outline: 2px solid var(--barva-text); outline-offset: -1px; }

/* ── V NADPISU (ALF-14: název tiketu) ─────────────────────────────────────────────────────
   Prvek dědí řez místa, kam ho někdo vloží — jinak by se z nadpisu po kliknutí stalo drobné
   pole velikosti řádku tabulky. Pravidlo patří SEM, ne do scoped listu té obrazovky: podoba
   upravitelné hodnoty žije na jednom místě (jinak dvě kopie, které se do měsíce rozejdou). */
.uh-v-nadpisu :is(.uh-spust, .uh-text, .uh-vstup) {
    font-size: inherit;
    font-weight: inherit;
    font-family: inherit;
    line-height: inherit;
}

/* PŘES CELOU ŠÍŘKU, TUŽKA U PRAVÉ HRANY (24. 8. 2026, vytkl Pavel na ALF-4: „editace názvu
   neodpovídá designu").

   Do té doby se klikací plocha KRČILA K TEXTU — změřeno 285 px z 1147 možných. Návrh (`.tedit`)
   má šířku 100 %, tužku odtlačenou `margin-left: auto` a rámeček se ukáže po celé šířce sloupce.
   Rozdíl není jen vzhledový: u nadpisu je plocha to, co se hledá myší, a 285px terč vedle
   metrového prázdna vypadá jako že název upravit nejde.

   A NÁZEV SE ZALAMUJE, neořezává. Zbytek prvku má `nowrap` + „…", což je správné v řádku
   tabulky, ale u nadpisu by to schovalo přesně to, co si člověk přišel přečíst (návrh `.dt`
   má `text-wrap: pretty`). */
.uh-v-nadpisu .uh,
.uh-v-nadpisu .uh-editor { display: flex; width: 100%; }

.uh-v-nadpisu .uh-spust {
    width: 100%;
    margin: 5px 0 0;
    padding: 2px 8px 3px;
    border-radius: var(--radius-sm, 8px);
    align-items: flex-start;
}

/* Návrh mění pod kurzorem JEN rámeček (`.tedit:hover{border-color}`) — pozadí přes celou šířku
   nadpisu by z něj udělalo pruh. */
.uh-v-nadpisu .uh-spust:hover { background: transparent; }

.uh-v-nadpisu .uh-text { white-space: normal; text-overflow: clip; text-wrap: pretty; }
.uh-v-nadpisu .uh-tuzka { margin-left: auto; margin-top: .4em; }

/* Pole v úpravě (návrh `.tin`): celá šířka, BÍLÉ pozadí a zelený rámeček ze značky. Krémové
   pozadí zbytku appky se u nadpisu ztrácí v ploše karty. */
.uh-v-nadpisu .uh-vstup {
    width: 100%;
    margin: 5px 0 0;
    padding: 2px 8px 3px;
    border-radius: var(--radius-sm, 8px);
    border-color: var(--green-500);
    background: var(--white);
}

/* ── V PANELU ÚDAJŮ (Podrobnosti u tiketu; návrh `.fv2` + `.mpick`) ───────────────────────
   Druhá polovina téže vytky Pavla: „editace v Podrobnosti neodpovídá designu". Dvě věci:

   1) KLIDOVÝ STAV nesahal na celou šířku sloupce hodnot (změřeno 105 px z 236), takže se
      rámeček pod kurzorem objevoval jen kolem textu a řádky panelu „poskakovaly".
   2) VOLIČ BYL NATIVNÍ PRVEK VE VÝCHOZÍ PODOBĚ — 23 px vysoký `<select>` se šipkou, jakou
      kreslí prohlížeč. To zakazuje naše vlastní pravidlo ze 14. 8. 2026
      (`NativniPrvkyProhlizeceTests`) a návrh na tom místě má KAPSLI: 37 px, bílá, vlasový
      rámeček, vlastní šipka.

   Šipku kreslíme jako pozadí voliče, ne `::after` na obalu (jak to má návrh): vedle pole stojí
   ještě viditelný křížek „nechat beze změny" (ADR-0094), takže by šipka na obalu skončila na
   něm. Pozadí drží u pole vždycky. */
.uh-v-panelu .uh,
.uh-v-panelu .uh-editor { width: 100%; }

.uh-v-panelu .uh-spust {
    width: 100%;
    min-height: 30px;
    margin: 0;
    padding: 3.5px 8px;
    border-radius: var(--radius-sm, 8px);
}

.uh-v-panelu .uh-spust:hover {
    background: var(--white);
    border-color: var(--border-hairline);
}

.uh-v-panelu .uh-tuzka { margin-left: auto; }

.uh-v-panelu select.uh-vstup {
    appearance: none;
    width: 100%;
    height: 37px;
    padding: 0 32px 0 14px;
    border: 1px solid var(--border-hairline);
    border-radius: var(--radius-md, 12px);
    background-color: var(--white);
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5 6 8l3.5-3.5' fill='none' stroke='%23b3a291' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
}

.uh-v-panelu select.uh-vstup:hover { border-color: var(--brown-300); }

/* Varianta v profilu klienta (`.uh-v-profilu`), štítky v klidu (`.uh-stitky`, `.uh-stitek`) a malá
   tabulka (`.ut-*`) odešly v E27 se starou záložkou Profil a s prvky `UpravitelneStitky`
   a `UpravitelnaTabulka`, které kreslila jen ona (ADR-0157 dodatek E27 V16). */

/* ── KONTAKT V LEVÉM SLOUPCI KARTY (19. 9. 2026) ─────────────────────────────────────────
   Sloupec je úzký (kontakt s ikonami), takže hodnota musí umět zabrat celý zbytek řádku
   a zalomit se. Úprava jména a role hlavy v místě (`.uh-v-levem`, `.kk-jmeno-uprava`,
   `.kk-role-uprava`) odešla s úklidem po E28 (dodatek E27 V3): levý sloupec je jen ke čtení;
   pravidla kontaktu drží hlídka podoby úpravy v místě (`PodobaUpravitelneHodnotyTests`). */
.kk-kontakt .uh { min-width: 0; flex: 1; }
.kk-kontakt .uh-text { white-space: normal; overflow: visible; text-overflow: clip; }

/* --- datum: kalendář bez psaní (ADR-0161 §1–§3) -------------------------------------------
   `UpravitelneDatum` nemá editor: tlačítko hodnoty (`.uh-spust.kn-dpi-hodnota`) otevře kalendář
   z knihovny a volba je potvrzení. Místo tužky ikona kalendáře, vidět pořád (návrh
   `.iv.ivdt .pen { opacity: .8 }`), a kurzor ruka — do pole se nepíše. */
.uh > .kn-kalendar { display: inline-flex; max-width: 100%; min-width: 0; }
.uh-spust.kn-dpi-hodnota { cursor: pointer; }
.kn-dpi-hodnota .uh-tuzka { opacity: .8; }
.kn-dpi-hodnota .uh-tuzka .kn-dpi-ikona { width: 1em; height: 1em; color: inherit; }

/* ============================================================================================
   VÝSLEDEK ZÁPISU A PRÁZDNÉ POLE (ADR-0161 §7–§9 a §34, etapa E6, 3. 10. 2026) — 1:1 s návrhem
   back office (`.iv.ivok`, `.iv.ivph`, `.ivin:placeholder-shown`, `.kxtoast`).

   POŘADÍ NA KONCI LISTU JE ZÁMĚRNÉ. Varianty míst (nadpis, panel, profil) mají selektory
   o dvou třídách a pod kurzorem měnily pozadí; fajfka i nápověda je musí přebít, jinak by
   uložená citace v profilu zůstala krémová a nápověda v panelu tiketu bez rámečku.
   ============================================================================================ */

/* --- NÁPOVĚDA V PRÁZDNÉM POLI (návrh `.iv.ivph`, ADR-0161 §34) -------------------------------
   Čárkovaný rámeček, krémové pozadí, text nápovědy kurzívou. Pod kurzorem jen bílé pozadí,
   čárkovaný rámeček ZŮSTÁVÁ (návrh `.iv:hover` mění pozadí a barvu rámečku, ne jeho styl);
   plný rámeček má až otevřené pole po zaměření (níž, `:placeholder-shown`). */
.uh-spust.je-prazdna.je-napoveda {
    border: 1px dashed var(--border-hairline);
    background: var(--cream-50);
}

.uh-spust.je-prazdna.je-napoveda .uh-text {
    font-style: italic;
    font-weight: 400;
    color: var(--brown-300);
}

.uh-spust.je-prazdna.je-napoveda:hover,
.uh-spust.je-prazdna.je-napoveda:focus-visible {
    background: var(--white);
}

/* V MŘÍŽCE ÚDAJŮ přes celou šířku hodnoty a bez záporného okraje (návrh `.ff .iv.ivph`):
   čárkovaný rámeček by jinak přečuhoval přes svislici popisků. Mřížka údajů je hodnota `dd`
   seznamu (husté `ks-kv` karty položky a detailu člena, panel tiketu, zkušebna) a kontakt
   v levém sloupci karty klienta. Třídy mřížky se tu nejmenují: podoba sekce karty bydlí
   v karta-sekce.css a její třídy jinde být nesmí (PodobaKartySekceTests). */
dd > .uh:has(.je-napoveda),
.kk-kontakt .uh:has(.je-napoveda) { display: flex; width: 100%; }

dd > .uh:has(.je-napoveda) > .kn-kalendar { display: flex; width: 100%; }

dd > .uh .uh-spust.je-napoveda,
.kk-kontakt .uh-spust.je-napoveda {
    margin: 0;
    width: 100%;
    box-sizing: border-box;
}

/* OTEVŘENÉ PRÁZDNÉ POLE (návrh `.ivin:placeholder-shown`, ř. 457–459): krémové a čárkované,
   po zaměření bílé a plné. Nápověda pole je kurzívou jako v klidu. */
.uh-vstup::placeholder {
    color: var(--brown-300);
    font-style: italic;
    opacity: 1;
}

.uh-vstup:placeholder-shown {
    background: var(--cream-50);
    border-style: dashed;
}

.uh-vstup:placeholder-shown:focus {
    background: var(--white);
    border-style: solid;
}

/* --- FAJFKA: uloženo, 2 s (návrh `.iv.ivok`) ------------------------------------------------
   Zelený rámeček a světle zelené pozadí; ikona místo tužky je fajfka (`IkonaUlozeno`), vidět
   bez najetí myší. Průhlednost 0 má OBAL ikony (`.uh-tuzka`), ne obrázek — pravidlo proto
   míří na obal. Totéž u data, kde fajfka nahradí ikonu kalendáře (`.kn-dpi-hodnota`).

   STOJÍ ZA NÁPOVĚDOU: uložené prázdné pole (člověk hodnotu smazal) nese obě třídy a návrh
   (`.iv.ivph.ivok`) ho kreslí zeleně — čárkovaný styl rámečku zůstane, barva a pozadí jsou
   fajfky. Po uložení Enterem se fokus vrací
   na hodnotu, takže fajfka musí vyhrát i nad zaměřenou nápovědou (bílé pozadí). */
.uh-spust.je-ulozeno,
.uh-spust.je-ulozeno:hover,
.uh .uh-spust.je-ulozeno,
.uh .uh-spust.je-ulozeno:focus-visible,
.uh .uh-spust.je-ulozeno:hover {
    border-color: var(--green-500);
    background: var(--green-50);
}

.uh-spust.je-ulozeno .uh-tuzka,
.kn-dpi-hodnota.je-ulozeno .uh-tuzka {
    opacity: 1;
    color: var(--green-700);
}

/* --- NEULOŽENO POD POLEM (OB-16, rozhodnutí uživatele 3. 10. 2026) ---------------------------
   Týž vzhled jako výtka pole (`.zpole-chyba`, cimpel.css) — žádný cihlový rámeček, návrh ho
   nemá. Věta se ZALAMUJE na celou šířku pod pole; buňka husté tabulky po dobu úpravy
   neořezává (`.tabulka td:has(.uh.je-uprava)` výš), takže přeteče pod řádek. Řez se nedědí
   z místa: v nadpisu (název epiky) by věta převzala písmo a prostrkání nadpisu a v dialogu
   kapitálky popisku (změřeno snímkem 3. 10. 2026). */
.uh-vytka {
    flex-basis: 100%;
    min-width: 0;
    font-family: var(--font-body);
    font-size: 11.5px;
    font-style: normal;
    font-weight: 400;
    line-height: 1.4;
    letter-spacing: normal;
    text-transform: none;
    color: var(--c-cihlova, #A6462E);
    white-space: normal;
    overflow-wrap: anywhere;
}

.uh.uh-datum.je-neulozeno,
.uh.je-neulozeno .uh-editor { flex-wrap: wrap; }

/* Pole se smrskne, aby křížek „nechat beze změny" zůstal na řádku s ním a pod oběma stála jen
   věta. Bez toho má vstup `width: 100%` celého editoru a křížek spadl na samostatný řádek
   (změřeno v detailu člena na 1280 px). */
.uh.je-neulozeno .uh-editor > :is(.uh-vstup, .zpole) { flex: 1 1 0%; min-width: 0; }

/* V ÚZKÉM KONTAKTU LEVÉHO SLOUPCE by `min-width: 260px` editoru (`.je-dotaz`) vytlačil pole ze
   sloupce; tam se věta zalomí do šířky sloupce. */
.kk-kontakt .uh.je-neulozeno .uh-editor { min-width: 0; }

/* V HUSTÉ MŘÍŽCE ÚDAJŮ (detail člena a údaje položky v `ks-kv je-dvojita`; R9): úprava zabere
   šířku hodnoty, věta stojí pod polem přes celé `dd` a nepřeteče do sousední dvojice. Míří se
   na hodnotu seznamu `dd`, ne na třídu mřížky (ta patří karta-sekce.css). */
dd > .uh.je-neulozeno { display: flex; width: 100%; min-width: 0; }
dd > .uh.je-neulozeno .uh-editor { width: 100%; min-width: 0; }

/* --- PRUH „ULOŽENO: {POPISEK}" S VRÁTIT (návrh `.kxtoast`, ADR-0161 §9) ----------------------
   Tmavý, dole uprostřed, 5 s. Kreslí ho `PruhUlozeniVrstva` v MainLayout (jen karta klienta
   dodává Vrátit, rozhodnutí uživatele 3. 10. 2026).

   ZÓNA ROHOVÉHO ALFRÉDA (ADR-0079): pruh do ní nesmí. Šířka se proto odečte z obou stran
   o zónu (`--alfred-zona-*`, alfred-roh.css) — vystředěný pruh tak končí před rohem a dlouhý
   text dostane tři tečky. Pod 720 px na odečet není místo: pruh stojí NAD Alfrédem. */
.pruh-ulozeni {
    position: fixed;
    left: 50%;
    bottom: 28px;
    transform: translateX(-50%);
    z-index: 90;
    display: flex;
    align-items: center;
    gap: 16px;
    max-width: calc(100vw - 2 * (var(--alfred-zona-w) + var(--alfred-zona-x)));
    box-sizing: border-box;
    padding: 10px 12px 10px 18px;
    border-radius: var(--radius-md);
    background: var(--brown-900);
    color: var(--cream-100);
    font: 500 14px var(--font-body);
    box-shadow: 0 10px 30px rgba(46, 35, 26, .28);
    white-space: nowrap;
}

.pruh-ulozeni > span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* DOVĚTEK (E21, V10, Z5): druhý řádek pod „Uloženo: …", který se smí zalomit (bez tří teček).
   První řádek si nechá jeden řádek s třemi tečkami jako dnes. */
.pruh-ulozeni.je-s-dovetkem { align-items: center; }
.pruh-ulozeni .pruh-texty { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.pruh-ulozeni .pruh-texty > span:first-child { overflow: hidden; text-overflow: ellipsis; }
.pruh-ulozeni .pruh-dovetek {
    white-space: normal;
    font-size: 13px;
    line-height: 1.4;
    color: var(--cream-300);
}

.pruh-ulozeni button {
    flex: none;
    border: 0;
    background: transparent;
    padding: 4px 6px;
    font: 600 14px var(--font-body);
    color: var(--green-500);
    border-radius: 6px;
    cursor: pointer;
}

.pruh-ulozeni button:hover { color: var(--green-350); }

.pruh-ulozeni button:focus-visible {
    outline: 2px solid var(--green-500);
    outline-offset: 1px;
}

.pruh-ulozeni button:disabled { opacity: .6; cursor: default; }

@media (max-width: 720px) {
    .pruh-ulozeni {
        bottom: calc(var(--alfred-zona-y) + var(--alfred-zona-h) + 12px);
        max-width: calc(100vw - 32px);
        white-space: normal;
    }
}
