/* ============================================================================
   novy-2026-objednavka.css
   Vrstva vzhledu nad dnesnim objednavkovym formularem fox2 na /objednavka.

   CO TO JE
   Cista CSS vrstva. Nepresouva uzly, nemeni pole, nic neodstranuje. Kresli
   ctyri obrazovky, krok 0 s PSC, krokovnik, souhrn vpravo a mobilni listu
   podle Figmy 15 az 18 (desktop) a M8, M8b, M9, M10 (mobil 390 px).

   JAK SE NACITA
   V hlavicce sablony, az ZA "novy-2026.css" z balicku 25 (odtud jdou tokeny
   --zs-...) a za "content2024.css" a "template2024.css" enginu. Jen na strance
   objednavky. V nahledu (nahled/objednavka.html) se misto novy-2026.css linkuje
   primo podklady/zs26-tokeny.css.

   ZAPINAC
   Vsechny selektory zacinaji "body.zs26-obj". Tridu "zs26-obj" a atribut
   "data-zs26-krok" pridava JS (js/zs26-objednavka.js) na <body id="idbody">.
   Kdyz JS nebezi nebo spadne, z tohoto souboru se neuplatni nic a stranka
   vypada jako dnes. To je zamer, ne opomenuti.

   CO OD JS OCEKAVAM (kontrakt, podklady/KONTRAKT-vrstvy.md)
   - body.zs26-obj                          zapinac
   - body[data-zs26-krok="0..4"]            aktualni obrazovka, ATRIBUT NA BODY
   - body.zs26-obj--fox2                    vrstva ridi zalozku fox2
   - body.zs26-obj--lead                    uzivatel si vyzadal lead formular fox1
                                            (alias body.zs26-obj--fox1 je take osetren)
   - body.zs26-obj--uklid4                  uklid kroku 4 (blok U20)
   - body.zs26-obj--poznamka                rozbalena poznamka k objednavce
   - #fox2 > [data-zs26-obrazovka="0..4"]   znacka na primych potomcich #fox2,
                                            "0" znamena "vzdy viditelne" (skryte inputy)
   - [data-zs26-poznamka="1"]               obal textarea poznamky
   - section.zs26-obj-psc                   krok 0, doporucuji ho vlozit jako PRVNI
                                            primy potomek #fox2 (varianta z KONTRAKTu).
                                            Varianta "tesne pred #fox2" je taky osetrena,
                                            viz sekce 4.
   - .zs26-obj-rozvrzeni                    trida na spolecnem rodici #fox2 a souhrnu,
                                            tedy na div.formular_objednavka (obal fox2).
                                            Krokovnik patri dovnitr nej, jako prvni dite.
   - .zs26-obj-akce__cena a .zs26-obj-akce__cena-popis
                                            dva prvky navic proti KONTRAKTu, potrebuje je
                                            mobilni lista z M9 a M10. Kdyz je JS nevytvori,
                                            lista jen ukaze tlacitka a nic se nerozbije.

   KTERE SELEKTORY ENGINU PREBIJIM A PROC
   1. .obsahy_prepinaci > *            (template2024.css:1114, 1115)
      Viditelnost zalozek. Prebijim, aby fox2 byl videt hned a fox1 nebliknul.
      Specificita body.zs26-obj--fox2 ... > :nth-child(N) = (0,3,0) proti (0,2,0),
      tedy bez !important.
   2. .zal > .zalozkyprepinac_klik     (template2024.css:1118, 1139)
      Pruh zalozek. Krokovnik ho nahrazuje, tak ho schovavam.
      POZOR: treti zalozka jsou darkove poukazy. Kdyz vrstva bezi, nejsou
      prokliknutelne. JS proto nesmi pridat zs26-obj--fox2, kdyz je na body
      trida ZalCustom2. Zapsano i v css/POZNAMKY.md.
   3. .cenik_nabidka .jidelnicek       (template2024.css:648, 652, 685, 688)
      Karty programu, kalorickych rad a delek. Menim jen barvy, ramecek a radius.
      PREPSANO 25. 8.: karusel se v kroku 2 meni na mrizku, viz blok U4. Rozmery
     karet se timto meni, ale position: relative na karte zustava, jinak se
     rozpadne jeji obsah
      (FceRolujParent). U #nabidkaprogram a #nabidkaDnyDelka rozmery menim,
      tam karusel neni.
   4. #nabidka_kodu .klikblok          (template2024.css:1215, 1218)
      Karty kombinace chodu. Prebijim id selektorem uvnitr body.zs26-obj,
      tedy (1,2,1) proti (1,1,0).
   5. .formular_objednavka h2 a h2 .c  (content2024.css:1150, 1149)
      Nadpisy bloku. Cislo v .c je po sbaleni do ctyr obrazovek spatne,
      cislo nese krokovnik, .c tedy skryvam.
   6. #respofix                        (template2024.css:1591, 1592, 2030)
      Dnesni mobilni lista. Nahrazuje ji .zs26-obj-akce.
      Selektor body.zs26-obj[data-zs26-krok] #respofix = (1,3,1), aby prebil
      i .body_v2.StrObjednavka.zal2 #respofix = (1,3,0).
   7. #objednavkaPrehled               (objednavka-2026-08-21.html:1736)
      Dnesni sidebar se souhrnem. Nahrazuje ho aside.zs26-obj-souhrn.
      Skryvam jen tenhle div, ne cely #sidebar, aby zustal modul m147.
   8. input, textarea, button          (content2024.css:1004, 1015, 1023)
      Tyhle zakladni styly maji !important (padding, line-height, box-shadow,
      border u tlacitek). Vlastni pole a tlacitka vrstvy je jinak neprepisou.
      !important pouzivam jen na vlastnich prvcich s prefixem .zs26-obj-,
      a jen na trech mistech: sekce 0 (pole a tlacitka vrstvy),
      tlacitko .zs26-obj-poznamka-spust v bloku U20 a jeden
      margin-bottom v sekci 11b.
      Do poli a tlacitek enginu nesaham, S JEDNOU VYJIMKOU: blok U13
      (31. 8. 2026) zmensuje na mobilu CSS box poli kontaktniho kroku,
      protoze padding 28/31 z enginu delal pole vysoke 108 px. Je to vedome
      rozhodnuti Marka, ne chyba, NEMAZAT jako "porusene pravidlo".
      Name, value, id a handlery poli zustavaji netknute i tam.

   CO JE NEJISTE
   - Cislovani kroku UZ NENI nejiste. Od 26. 8. 2026 jsou kroky tri:
     1 Jidlo (#vyber1, #vyber2, #vyber3), 2 Od kdy (#vyber4, #vyber5),
     3 Adresa a kontakt (#vyber7). Krok 0 je jen kratky mezistav behem
     inicializace. Pas s PSC lezi mimo #fox2 a je videt vzdycky.
     POZOR: kdo bude cisla menit, musi projit i blok U4, ktery je vazany
     na [data-zs26-krok="1"], tedy na krok s vyberem programu.
   - Sirka sloupce 360 px a mezera 40 px jsou z Figmy 15 az 18 (obsah 1180 px,
     levy sloupec 780 px). Pokud je obsahovy kontejner sablony uzsi, souhrn se
     pod 1024 px stejne sklopi pod formular.
   - Aktivni ramecek karty ma ve Figme barvu odkazu, na to token neni. Beru
     --zs-barva-ramecek-doporucena, coz je nejblizsi semanticky token
     a odpovida zadani "aktivni ramecek tmave zeleny".
   - Sticky souhrn: aside dostava grid-row 2 / span 20, aby mel kam lepit.
     Kdyby JS krokovnik do .zs26-obj-rozvrzeni nedal, posune se souhrn o radek.
   - Inline kalendar z Figmy 17 a preskladani karet z Figmy 16 (aktivni karta
     nahore na mobilu) v CSS nejdou, viz css/POZNAMKY.md.
   ============================================================================ */


/* ---------------------------------------------------------------------------
   0. Zaklad vrstvy a vlastni formularove prvky
   Hlavni misto s !important. Duvod je u kazdeho pravidla.
   --------------------------------------------------------------------------- */

body.zs26-obj .zs26-obj-rozvrzeni,
body.zs26-obj .zs26-obj-psc,
body.zs26-obj .zs26-obj-souhrn,
body.zs26-obj .zs26-obj-akce,
body.zs26-obj .zs26-obj-krokovnik,
body.zs26-obj .zs26-obj-hlaska {
  font-family: var(--zs-pismo);
  color: var(--zs-barva-text-zakladni);
  box-sizing: border-box;
}

/* Dedeni box-sizing uz resi sablona (template2024.css:4 a 8 az 10,
   html je border-box a * dedi), tady se nic dalsiho nastavovat nemusi. */

/* Vlastni pole vrstvy. content2024.css:1004 dava kazdemu input padding
   28px 31px !important, line-height 16px !important a margin 0 !important.
   Bez !important by pole vrstvy melo 108 px na vysku. */
body.zs26-obj .zs26-obj-pole,
body.zs26-obj .zs26-obj-psc__pole {
  width: 100%;
  max-width: 100%;
  height: var(--zs-vyska-pole);
  padding: 0 var(--zs-odstup-base) !important;
  line-height: var(--zs-vyska-pole) !important;
  font-size: 16px !important;
  font-family: var(--zs-pismo) !important;
  color: var(--zs-barva-text-zakladni);
  background: var(--zs-barva-pozadi-karta);
  border: 1px solid var(--zs-barva-ramecek-pole);
  border-radius: var(--zs-radius-male);
  box-shadow: none !important;
}

/* content2024.css:1023 dava kazdemu :focus box-shadow !important.
   Tokeny stiny nemaji, misto stinu je fokusovy outline. */
body.zs26-obj .zs26-obj-pole:focus,
body.zs26-obj .zs26-obj-psc__pole:focus {
  box-shadow: none !important;
  border-color: var(--zs-barva-ramecek-doporucena) !important;
  outline: 2px solid var(--zs-barva-stav-fokus);
  outline-offset: 2px;
}

/* Vlastni tlacitka vrstvy. content2024.css:1015 dava kazdemu <button>
   padding 21px 25px !important a border 0 !important, takze bez !important
   nejde udelat ani vyska 48 px, ani sekundarni tlacitko s rameckem. */
body.zs26-obj .zs26-obj-tlacitko {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--zs-odstup-sm);
  min-height: var(--zs-vyska-tlacitko);
  padding: 0 var(--zs-odstup-xl) !important;
  font-family: var(--zs-pismo) !important;
  font-size: 16px !important;
  font-weight: 600;
  line-height: 1;
  text-align: center;
  text-decoration: none;
  border: 2px solid transparent !important;
  border-radius: var(--zs-radius-pill);
  cursor: pointer;
  background: var(--zs-barva-akce-primarni);
  color: var(--zs-barva-akce-primarni-text);
  box-shadow: none !important;
}

body.zs26-obj .zs26-obj-tlacitko:hover {
  background: var(--zs-barva-akce-primarni-hover);
  color: var(--zs-barva-akce-primarni-text);
}

body.zs26-obj .zs26-obj-tlacitko--sekundarni {
  background: var(--zs-barva-pozadi-karta);
  color: var(--zs-barva-text-nadpis);
  border-color: var(--zs-barva-akce-sekundarni-ramecek) !important;
}

body.zs26-obj .zs26-obj-tlacitko--sekundarni:hover {
  background: var(--zs-barva-akce-sekundarni-hover);
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-tlacitko--textove {
  min-height: auto;
  padding: var(--zs-odstup-sm) var(--zs-odstup-xs) !important;
  background: transparent;
  color: var(--zs-barva-text-odkaz);
  border-color: transparent !important;
  text-decoration: none;
}

body.zs26-obj .zs26-obj-tlacitko--textove:hover {
  background: transparent;
  color: var(--zs-barva-text-odkaz);
  text-decoration: underline;
}

body.zs26-obj .zs26-obj-tlacitko:focus-visible,
body.zs26-obj .zs26-obj-krokovnik__polozka:focus-visible {
  outline: 2px solid var(--zs-barva-stav-fokus);
  outline-offset: 2px;
}

body.zs26-obj .zs26-obj-tlacitko[disabled],
body.zs26-obj .zs26-obj-tlacitko[aria-disabled="true"] {
  opacity: .45;
  pointer-events: none;
}

/* Typografie vrstvy. Tridy .zs-h2 az .zs-popisek ze zs26-tokeny.css visi pod
   .zs26 a ta na <body> objednavky neni, tak si tvary opisuju z tokenu. */
body.zs26-obj .zs26-obj-nadpis {
  margin: 0 0 var(--zs-odstup-md) 0;
  padding: 0;
  font-size: 26px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.015em;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-perex {
  margin: 0 0 var(--zs-odstup-lg) 0;
  font-size: 17px;
  line-height: 1.5;
  color: var(--zs-barva-text-tlumeny);
}

body.zs26-obj .zs26-obj-popisek {
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--zs-barva-text-popisek);
}


/* ---------------------------------------------------------------------------
   1. Zalozky enginu a lead formular fox1
   Plati jen v rezimu body.zs26-obj--fox2. Fox1 zustava v DOMu, jen display none,
   takze se jeho pole dal serializuji a treti zalozka (darkove poukazy) o data
   neprijde.
   --------------------------------------------------------------------------- */

/* Pruh zalozek nahrazuje krokovnik. */
body.zs26-obj--fox2 .objform > .zal {
  display: none;
}

/* Obsah 0 je fox1, obsah 1 je fox2. Prebiji .obsahy_prepinaci > *.vybrany. */
body.zs26-obj--fox2 .obsahy_prepinaci > :nth-child(1) {
  display: none;
}

body.zs26-obj--fox2 .obsahy_prepinaci > :nth-child(2) {
  display: block;
}

/* Odkaz .zs26-obj-lead vrati lead formular. JS pridava tridu na body,
   osetrene jsou obe varianty nazvu. */
body.zs26-obj--fox2.zs26-obj--lead .obsahy_prepinaci > :nth-child(1),
body.zs26-obj--fox2.zs26-obj--fox1 .obsahy_prepinaci > :nth-child(1),
body.zs26-obj--fox2.ZalCustom2 .obsahy_prepinaci > :nth-child(1) {
  display: block;
}

body.zs26-obj--fox2.zs26-obj--lead .obsahy_prepinaci > :nth-child(2),
body.zs26-obj--fox2.zs26-obj--fox1 .obsahy_prepinaci > :nth-child(2),
body.zs26-obj--fox2.ZalCustom2 .obsahy_prepinaci > :nth-child(2) {
  display: none;
}

/* V rezimu lead nema smysl kreslit krokovnik ani vlastni akce. */
body.zs26-obj--lead .zs26-obj-krokovnik,
body.zs26-obj--lead .zs26-obj-akce,
body.zs26-obj--fox1 .zs26-obj-krokovnik,
body.zs26-obj--fox1 .zs26-obj-akce {
  display: none;
}

/* Dnesni sidebar se souhrnem. Nahrazuje ho aside.zs26-obj-souhrn. */
body.zs26-obj[data-zs26-krok] #objednavkaPrehled {
  display: none;
}


/* ---------------------------------------------------------------------------
   2. Rozvrzeni, dva sloupce
   Grid na div.formular_objednavka (obal fox2), kteremu JS da .zs26-obj-rozvrzeni.
   Levy sloupec je formular, pravy souhrn 360 px. Mezera 40 px = 24 + 16,
   protoze token na 40 px neni.
   row-gap je nula zamerne, odstupy resi margin na detech. Diky tomu muze
   souhrn dostat grid-row 2 / span 20 a mit kam se lepit, aniz by vznikaly
   viditelne mezery mezi prazdnymi implicitnimi radky.
   --------------------------------------------------------------------------- */

/* OPRAVA QA 2026-08-21b: navazano na zs26-obj--fox2. Pri prepnuti na lead
   formular (odkaz "Zavolame vam") JS tridu zs26-obj--fox2 sunda, a kdyz na ni
   grid nevisi, prebije engine (.obsahy_prepinaci > * {display:none}) a na
   zivem webu byly videt oba formulare naraz. Bez zs26-obj--fox2 se vrstva
   uklidi a o viditelnost panelu se stara engine sam.
   OPRAVA QA 2026-08-21: trida je zdvojena zamerne, kvuli specificite.
   div.formular_objednavka je zaroven .obsahy_prepinaci > :nth-child(2),
   na ktere sedi vlastni pravidlo v sekci 1 (display: block, specificita 0,3,0).
   Puvodni body.zs26-obj .zs26-obj-rozvrzeni melo jen 0,2,0 a prohravalo,
   takze grid nikdy nevznikl a souhrn se lepil pod formular. */
body.zs26-obj--fox2 .zs26-obj-rozvrzeni.zs26-obj-rozvrzeni {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  column-gap: calc(var(--zs-odstup-xl) + var(--zs-odstup-base));
  row-gap: 0;
  align-items: start;
}

body.zs26-obj .zs26-obj-rozvrzeni > * {
  grid-column: 1;
  min-width: 0;
}

body.zs26-obj .zs26-obj-rozvrzeni > .zs26-obj-krokovnik {
  grid-column: 1 / -1;
  grid-row: 1;
}

body.zs26-obj .zs26-obj-rozvrzeni > .zs26-obj-souhrn {
  grid-column: 2;
  grid-row: 2 / span 20;
  align-self: start;
  position: sticky;
  top: var(--zs-odstup-xl);
}

/* Formular jako karta z Figmy 15 az 18. */
body.zs26-obj .zs26-obj-rozvrzeni > #fox2 {
  background: var(--zs-barva-pozadi-karta);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-karta);
  padding: var(--zs-odstup-xl);
}

/* ZRUSENO 26. 8. 2026. Do te doby tu bylo pravidlo, ktere pri kroku s PSC
   schovavalo cely #fox2, protoze PSC byl samostatna obrazovka. Pas s PSC
   uz obrazovka neni a formular pod nim musi byt videt od prvni vteriny. */

/* ZRUSENO 26. 8. 2026: tohle delalo z PSC bilou kartu s odsazenim 24 px,
   protoze to byla cela obrazovka. Vzhled pasu ted kresli sekce 5. Pravidlo
   melo vyssi specificitu (0,3,0 proti 0,2,0), takze by pas prebilo. */


/* ---------------------------------------------------------------------------
   3. Krokovnik
   Od 26. 8. 2026 TRI pilulky: "1 Jidlo", "2 Od kdy", "3 Adresa a kontakt".
   Do te doby jich byly ctyri, prvni byla "Kam vozit". Mezi nimi sipka. Aktivni je tmave zelena,
   hotovy krok ma fajfku. Mobil (M8, M9, M10): aktivni pilulka s nazvem,
   ostatni jen cislo.
   Stav --aktivni a --hotovo nastavuje JS, CSS je jen kresli.
   --------------------------------------------------------------------------- */

body.zs26-obj .zs26-obj-krokovnik {
  margin: 0 0 var(--zs-odstup-xl) 0;
  padding: 0;
}

body.zs26-obj .zs26-obj-krokovnik > ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--zs-odstup-sm);
  margin: 0;
  padding: 0;
  list-style: none;
}

body.zs26-obj .zs26-obj-krokovnik__polozka {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--zs-odstup-xs);
  margin: 0 0 0 var(--zs-odstup-base);
  padding: var(--zs-odstup-sm) var(--zs-odstup-base);
  background: var(--zs-barva-pozadi-karta);
  color: var(--zs-barva-text-nadpis);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-pill);
  font-size: 14.5px;
  font-weight: 600;
  line-height: 1.2;
  list-style: none;
  white-space: nowrap;
}

body.zs26-obj .zs26-obj-krokovnik__polozka:first-child {
  margin-left: 0;
}

/* Sipka mezi pilulkami. Pilulka je inline-flex, takze ::before uvnitr ni by
   sedelo na tmavem pozadi. Proto absolutne, do mezery vlevo (8 px gap
   plus 16 px margin = 24 px). */
body.zs26-obj .zs26-obj-krokovnik__polozka + .zs26-obj-krokovnik__polozka::before {
  content: "\2192";
  position: absolute;
  top: 50%;
  left: calc(var(--zs-odstup-lg) * -1);
  transform: translateY(-50%);
  color: var(--zs-barva-text-popisek);
  font-weight: 400;
}

body.zs26-obj .zs26-obj-krokovnik__polozka--aktivni {
  background: var(--zs-barva-pozadi-tmave);
  border-color: var(--zs-barva-pozadi-tmave);
  color: var(--zs-barva-text-na-tmavem);
}

body.zs26-obj .zs26-obj-krokovnik__polozka--hotovo {
  border-color: var(--zs-barva-ramecek-doporucena);
  color: var(--zs-barva-text-nadpis);
}

/* Fajfka u hotoveho kroku. Kdyby ji JS psal do textu sam, tohle pravidlo
   se zrusi odebranim tridy --hotovo, ne prepsanim obsahu. */
body.zs26-obj .zs26-obj-krokovnik__polozka--hotovo .zs26-obj-krokovnik__nazev::after {
  content: "\00a0\2713";
  color: var(--zs-barva-ikona-check);
}

body.zs26-obj .zs26-obj-krokovnik__polozka--aktivni.zs26-obj-krokovnik__polozka--hotovo .zs26-obj-krokovnik__nazev::after {
  color: var(--zs-barva-text-na-tmavem);
}

/* Zpetny proklik. Kroky, ktere jeste nejsou hotove, JS nechava bez tridy
   --lze, takze na ne kurzor neukazuje. */
body.zs26-obj .zs26-obj-krokovnik__polozka--hotovo,
body.zs26-obj .zs26-obj-krokovnik__polozka--lze {
  cursor: pointer;
}


/* ---------------------------------------------------------------------------
   4. Obrazovky
   #fox2 > [data-zs26-obrazovka="N"] jsou prime deti formulare, oznacene JSkem.
   "0" znamena vzdy viditelne (skryte inputy jazyk a hodnotaObjednavky).

   Pozor na zpusob skryvani. Nejde napsat "vsechno skryj, aktualni ukaz
   pres display block", protoze mezi primymi detmi #fox2 je i div#fakturacni
   s tridou .skryte, kterou ridi engine. Vynuceny display block by ho odkryl.
   Skryva se proto vzdycky jen to, co k aktualnimu kroku nepatri, a viditelne
   prvky zustavaji na svem vlastnim display.
   --------------------------------------------------------------------------- */

body.zs26-obj[data-zs26-krok="0"] #fox2 > [data-zs26-obrazovka]:not([data-zs26-obrazovka="0"]),
body.zs26-obj[data-zs26-krok="1"] #fox2 > [data-zs26-obrazovka]:not([data-zs26-obrazovka="1"]):not([data-zs26-obrazovka="0"]),
body.zs26-obj[data-zs26-krok="2"] #fox2 > [data-zs26-obrazovka]:not([data-zs26-obrazovka="2"]):not([data-zs26-obrazovka="0"]),
body.zs26-obj[data-zs26-krok="3"] #fox2 > [data-zs26-obrazovka]:not([data-zs26-obrazovka="3"]):not([data-zs26-obrazovka="0"]),
body.zs26-obj[data-zs26-krok="4"] #fox2 > [data-zs26-obrazovka]:not([data-zs26-obrazovka="4"]):not([data-zs26-obrazovka="0"]) {
  display: none;
}

/* PREPSANO 26. 8. 2026: pas s PSC je videt ve vsech krocich. Do te doby to
   byla obrazovka viditelna jen pri kroku 0 a 1. Odpoved "Do NNNNN jezdime"
   ma zustat na strance i pozdeji, protoze uz neni krok, ze ktereho se odchazi,
   a v poslednim kroku potvrzuje, ze se PSC v adrese shoduje.
   Sekce PSC lezi MIMO #fox2, takze na ni pravidlo viditelnosti obrazovek
   nesaha a stacilo stara pravidla smazat. */

/* Zamek behem AJAX volani. JS dava #fox2 tridu zs26-ceka, dokud bezi POST.
   Karty se nedeaktivuji (zadny pointer-events none na kartach, klik enginu
   musi zustat funkcni), jen se zesvetli a kurzor rekne, ze se ceka. */
body.zs26-obj #fox2.zs26-ceka {
  opacity: .6;
  cursor: progress;
}

/* OPRAVA QA 2026-08-21: pointer-events na karty po dobu cekani.
   Bez toho projdou dva rychle kliky na dve ruzne karty jako dva soubezne
   POSTy (overeno na zivem webu, 2 volani, DOM pak urcuje ten, ktery dobehne
   pozdeji). Engine zadnou ochranu proti soubehu nema.
   Zamek je docasny, tridu zs26-ceka sunda ajaxComplete zhruba po 200 ms,
   takze onclick enginu nic trvale neztraci. Zamerne jen na kartach voleb,
   NE na celem #fox2: v kroku 4 posila preform request kazda zmena pole
   a zamek pres cely formular by blokoval psani. */
body.zs26-obj #fox2.zs26-ceka .cenik_nabidka .jidelnicek,
body.zs26-obj #fox2.zs26-ceka #nabidkaprogram .jidelnicek,
body.zs26-obj #fox2.zs26-ceka #nabidka_kodu .klikblok {
  pointer-events: none;
}


/* ---------------------------------------------------------------------------
   5. Pas s overenim PSC
   PREPSANO 26. 8. 2026. Do te doby to byla cela obrazovka, krok 0 podle
   Figmy 15 a M8. Marek: "preskocil bych bod Kam vam budeme vozit?, protoze
   pak to bude fungovat jak pro nove tak stavajici zakazniky". Stavajici
   zakaznik uz vi, ze k nemu vozime, a povinny krok navic ho jen zdrzoval.
   Overeni PSC nezmizelo, je na webu na vic mistech (/rozvoz ma pole
   "Vepiste zde sve PSC", mapu rozvozu i abecedni seznam mist) a tady zustava
   jako pas, ktery NIC neblokuje.
   Vzor: Popapej ma "Dovazime k vam? Overte si to!" jako pas pod
   konfiguratorem, ne jako krok
   (03 Web, audit a navrh oprav/Dukazy/screenshoty/cz/popapej/
    05b-konfigurace-programu.jpg).
   Poradi deti .zs26-obj-psc__form: <label>, <input>, <button>, <a>.
   Vstupni pole styluje sekce 0 (.zs26-obj-psc__pole), tady je jen sirka.
   --------------------------------------------------------------------------- */

/* SBALENO 27. 8. 2026, Marek: "tohle nejak schovej, tohle je moc velke".
   V klidu je to jeden textovy radek bez pozadi a bez ramecku, tedy 24 px misto
   62. Kremova plocha se objevi az po rozbaleni, kdyz uz je co ramovat.
   Overeni PSC tim nezmizelo, jen prestalo brat misto tomu, kvuli cemu clovek
   prisel, tedy vyberu jidla.
   26. 8. tu byla mezikrok: pas zmensovany z 72 na 62 px. Nestacilo to. */
body.zs26-obj .zs26-obj-psc--pas {
  margin: 0 0 var(--zs-odstup-md) 0;
  padding: 0;
  background: none;
  border: 0;
}

/* Prepinac je textovy odkaz, ne tlacitko. Sablona ale mala kazdy <button>
   pres !important (content2024.css:1015), takze zpatky na text ho musi vratit
   taky !important, jinak z nej je limetkovy obdelnik s odsazenim 21/25 px. */
body.zs26-obj .zs26-obj-psc__prepinac {
  display: inline-flex;
  align-items: center;
  gap: var(--zs-odstup-xs);
  min-height: 0 !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  color: var(--zs-barva-text-odkaz) !important;
  font-family: var(--zs-pismo) !important;
  font-size: 15.5px !important;
  font-weight: 600 !important;
  line-height: 1.5 !important;
  text-align: left;
  text-decoration: underline;
  cursor: pointer;
  box-shadow: none !important;
}

body.zs26-obj .zs26-obj-psc__prepinac::after {
  content: "";
  width: 7px;
  height: 7px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
}

body.zs26-obj .zs26-obj-psc__prepinac[aria-expanded="true"]::after {
  transform: translateY(2px) rotate(-135deg);
}

body.zs26-obj .zs26-obj-psc__prepinac:focus-visible {
  outline: 2px solid var(--zs-barva-stav-fokus);
  outline-offset: 2px;
}

body.zs26-obj .zs26-obj-psc__telo {
  margin: var(--zs-odstup-sm) 0 0 0;
  padding: var(--zs-odstup-md);
  background: var(--zs-barva-pozadi-sekce-2);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-male);
}

body.zs26-obj .zs26-obj-psc__telo[hidden] {
  display: none;
}

/* Sablona kresli pred kazde <li> v obsahu zelenou odrazku. Balik 25 to resi
   pravidlem na .zs26, ktera na strance enginu neni, takze totez musi byt tady
   (25 .../novy-2026.css:2538). */
body.zs26-obj .zs26-obj-pomoc__odkazy li::before,
body.zs26-obj .zs26-obj-pomoc__odkazy li::marker {
  content: none !important;
  display: none !important;
}

body.zs26-obj .zs26-obj-psc__form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--zs-odstup-md);
  margin: 0;
  padding: 0;
}

/* Popisek je v pasu veta, ne stitek nad polem, proto nezabira cely radek.
   position: static prebiji pripadne pozicovani ze sablony. */
body.zs26-obj .zs26-obj-psc__form > label {
  flex: 1 1 auto;
  position: static;
  margin: 0;
  padding: 0;
  background: none;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--zs-barva-text-nadpis);
}

/* Pole ma v sekci 0 pevnou vysku 48 px s !important (jinak by mu
   content2024.css:1004 dalo 108), takze zmenseni musi mit taky !important. */
body.zs26-obj .zs26-obj-psc__pole {
  flex: 0 0 6.5rem;
  width: 6.5rem;
  height: var(--zs-vyska-tlacitko-male) !important;
  line-height: var(--zs-vyska-tlacitko-male) !important;
}

body.zs26-obj .zs26-obj-psc__tlacitko {
  flex: 0 0 auto;
  min-height: var(--zs-vyska-tlacitko-male);
}

body.zs26-obj .zs26-obj-psc__mapa {
  flex: 0 0 auto;
  color: var(--zs-barva-text-odkaz);
  font-weight: 600;
  font-size: 15.5px;
  text-decoration: none;
}

body.zs26-obj .zs26-obj-psc__mapa:hover {
  text-decoration: underline;
}

/* Stavovy blok. Bez varianty je schovany, JS mu prida --vozime, --nevozime
   nebo --chyba. Odpoved zustava videt po celou objednavku, protoze pas uz
   neni krok, ze ktereho se odchazi. */
body.zs26-obj .zs26-obj-psc__stav {
  display: none;
  margin: var(--zs-odstup-md) 0 0 0;
  padding: var(--zs-odstup-md) var(--zs-odstup-base);
  border-radius: var(--zs-radius-male);
  font-size: 16px;
  line-height: 1.5;
}

body.zs26-obj .zs26-obj-psc__stav--vozime,
body.zs26-obj .zs26-obj-psc__stav--nevozime,
body.zs26-obj .zs26-obj-psc__stav--chyba {
  display: block;
}

body.zs26-obj .zs26-obj-psc__stav--vozime {
  background: var(--zs-barva-stav-ok-plo);
  color: var(--zs-barva-text-nadpis);
  font-weight: 600;
}

body.zs26-obj .zs26-obj-psc__stav--nevozime {
  background: var(--zs-barva-stav-pozor-plo);
  color: var(--zs-barva-text-zakladni);
}

body.zs26-obj .zs26-obj-psc__stav--chyba {
  background: var(--zs-barva-stav-chyba-plo);
  color: var(--zs-barva-stav-chyba);
}

/* Nabidka "zavolame vam" pod stavem nevozime. */
body.zs26-obj .zs26-obj-psc__lead {
  margin: var(--zs-odstup-sm) 0 0 0;
}

body.zs26-obj .zs26-obj-psc__lead-odkaz {
  text-align: left;
}


/* ---------------------------------------------------------------------------
   6. Restyling karet enginu uvnitr obrazovek
   Lehce a bezpecne. Zadne pointer-events none, zadne zasahy do rozmeru tam,
   kde na nich stoji karusel.
   --------------------------------------------------------------------------- */

/* 6a. Nadpisy bloku.
   Dnes <h2><span class="c">N.</span>Text</h2> v .blok.
   Cislo v .c po sbaleni do ctyr obrazovek neodpovida, cislo nese krokovnik. */
body.zs26-obj #fox2 .blok > h2 {
  margin: 0 0 var(--zs-odstup-md) 0;
  padding: 0;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.015em;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj #fox2 .blok > h2 > .c {
  display: none;
}

/* Prvni blok kazde obrazovky nese hlavni nadpis z Figmy, ostatni bloky uvnitr
   teze obrazovky jsou podnadpisy ("Jak prave zijete?", "Velikost porce").
   Id jsou stabilni: obrazovka 2 zacina #vyber1, obrazovka 3 #vyber4,
   obrazovka 4 #vyber7 (DOM-objednavka.md, kapitola 3). */
body.zs26-obj #fox2 > #vyber1 > h2,
body.zs26-obj #fox2 > #vyber4 > h2,
body.zs26-obj #fox2 > #vyber7 > h2 {
  font-size: 26px;
  line-height: 1.2;
}

body.zs26-obj #fox2 > #vyber2 > h2,
body.zs26-obj #fox2 > #vyber3 > h2,
body.zs26-obj #fox2 > #vyber5 > h2 {
  font-size: 17.5px;
  line-height: 1.35;
}

/* Cary mezi bloky uvnitr jedne obrazovky jsou v novem rozvrzeni sum. */
body.zs26-obj #fox2 > hr[data-zs26-obrazovka] {
  border: 0;
  height: var(--zs-odstup-xl);
  margin: 0;
  background: none;
}

/* 6b. Karty programu, #vyber1.
   PREPSANO 25. 8., viz blok U4: karusel se v kroku 2 meni na mrizku, sipky
   se skryvaji a rozmery karet se meni. Puvodne (FceRolujParent
   a .kolsipka v template2024.css:701). Menim jen barvy a ramecek. */
body.zs26-obj #fox2 .cenik_nabidka .jidelnicek {
  background: var(--zs-barva-pozadi-karta);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-karta);
  transition: none;
}

body.zs26-obj #fox2 .cenik_nabidka .jidelnicek:hover {
  background: var(--zs-barva-pozadi-jemne);
  border-color: var(--zs-barva-ramecek-doporucena);
}

body.zs26-obj #fox2 .cenik_nabidka .jidelnicek.act {
  background: var(--zs-barva-akcent-limetka-plo);
  border: 2px solid var(--zs-barva-ramecek-doporucena);
}

body.zs26-obj #fox2 .cenik_nabidka .jidelnicek h6 {
  color: var(--zs-barva-text-nadpis);
  font-weight: 700;
  font-size: 14px;
}

/* 6c. Velikost porce, #nabidkaprogram (varianta kJ).
   Kontejner ma trida "cenik_nabidka nabidkaKalorickeRady", tedy grid
   repeat(auto-fill, 120px) s kartami vysokymi 110 px (template2024.css:1242
   a 1273). Figma 16 z toho dela cipy "Menu", "Menu XL". Karusel tu neni
   (#of_volba2 ma tridu cenikpasNE), takze rozmery menit muzu. */
body.zs26-obj #fox2 #nabidkaprogram {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--zs-odstup-sm);
  min-height: var(--zs-vyska-tlacitko-male);
  white-space: normal;
}

/* OPRAVA 26. 8. 2026, Marek: "taky je tam divne zarovnani k ohraniceni".
   Prazdny stav pred vyberem programu posila engine takhle
   (objednavka-2026-08-21.html:1149):
     <p style="position: relative;">
       <div style="position: absolute; left: 0px;">Pro zobrazeni moznosti
       vyberte program.</div>&nbsp;<br />
     </p>
   <div> uvnitr <p> neni platne HTML, parser <p> uzavre PRED nim. Absolutne
   pozicovany text tim ztrati zamysleny containing block, left: 0 se pocita
   k nejblizsimu pozicovanemu predkovi vys a hlaska vyjede mimo odsazeni
   sloupce. Druha hlaska o dvacet radku niz ("a kalorickou radu.", :1169) je
   obycejny textovy uzel a zarovnana je, coz tu pricinu potvrzuje.
   Tady se pozicovani jen zrusi. Spravna oprava patri do zdroje,
   viz PRO MOJMIRA bod 10 v js/zs26-objednavka.js. */
body.zs26-obj #fox2 #nabidkaprogram > div[style*="absolute"] {
  position: static !important;
  left: auto !important;
  top: auto !important;
  font-size: 16px;
  line-height: 1.5;
  color: var(--zs-barva-text-popisek);
}

/* Po rozdeleni parserem zbyde prazdny <p> a za nim &nbsp;<br>, tedy dva
   sourozenci, kteri jen delaji misto. */
body.zs26-obj #fox2 #nabidkaprogram > p:empty,
body.zs26-obj #fox2 #nabidkaprogram > br {
  display: none;
}

body.zs26-obj #fox2 #nabidkaprogram .jidelnicek {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-width: 88px;
  height: auto;
  min-height: var(--zs-vyska-tlacitko-male);
  margin: 0;
  padding: var(--zs-odstup-sm) var(--zs-odstup-base);
  background: var(--zs-barva-pozadi-karta);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-male);
}

body.zs26-obj #fox2 #nabidkaprogram .jidelnicek.act {
  background: var(--zs-barva-akcent-limetka-plo);
  border: 2px solid var(--zs-barva-ramecek-doporucena);
}

/* Vnitrni obal karty ma v enginu vysku 100 % a vlastni flex
   (template2024.css:1282), pri automaticke vysce cipu to musi jit dolu. */
body.zs26-obj #fox2 #nabidkaprogram .jidelnicek > div {
  width: auto;
  height: auto;
  margin: 0;
  padding: 0;
}

body.zs26-obj #fox2 #nabidkaprogram .jidelnicek h6 {
  position: static;
  top: auto;
  bottom: auto;
  width: auto;
  margin: 0;
  padding: 0;
  font-size: 17.5px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--zs-barva-text-nadpis);
  white-space: nowrap;
}

/* 6d. Kombinace chodu, #nabidka_kodu .klikblok.
   Figma 16, karta s nazvem a cenou za den. Cena uz je v DOMu, sedi
   jako textovy uzel vedle <h6> (objednavka-zal2-typ5-kod-CD-program1.html:1173). */
body.zs26-obj #fox2 #nabidka_kodu .klikblok {
  flex-direction: column;
  gap: var(--zs-odstup-xs);
  padding: var(--zs-odstup-md) var(--zs-odstup-base);
  background: var(--zs-barva-pozadi-karta);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-male);
  color: var(--zs-barva-text-zakladni);
  transition: none;
}

body.zs26-obj #fox2 #nabidka_kodu .klikblok:hover {
  background: var(--zs-barva-pozadi-jemne);
  border-color: var(--zs-barva-ramecek-doporucena);
}

body.zs26-obj #fox2 #nabidka_kodu .klikblok.act {
  background: var(--zs-barva-akcent-limetka-plo);
  border: 2px solid var(--zs-barva-ramecek-doporucena);
}

/* V karte je jeden vnitrni obal a v nem <h6>Celodenni</h6> plus holy textovy
   uzel "558 Kc" (markup enginu ma navic zavirajici </span>, takze se cena
   neda zamerit vlastnim selektorem). Cena je druhy radek diky blokovemu h6. */
body.zs26-obj #fox2 #nabidka_kodu .klikblok > div {
  width: 100%;
  font-size: 14.5px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--zs-barva-text-tlumeny);
}

body.zs26-obj #fox2 #nabidka_kodu .klikblok h6 {
  margin: 0;
  padding: 0;
  font-size: 15.5px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj #fox2 #nabidka_kodu .klikblok.act h6 {
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj #fox2 .rozbalKody {
  color: var(--zs-barva-text-odkaz);
  font-weight: 600;
}

/* 6e. Delky, #nabidkaDnyDelka.
   Figma 17: cip se dvema radky, nazev a "5 dnu, 1 240 Kc". Druhy radek v DOMu
   dnes neni, doplnit ho muze jen JS, viz css/POZNAMKY.md. CSS pripravuje misto. */
/* UPRAVENO 31. 8. 2026, Marek: "tady mam jinak ruzne velikost buttonu".
   Pet moznosti delky se pri stope 140 px lamalo na 4 + 1 a osamocena dlazdice
   v druhem radku mela jinou vysku nez ty nad ni (90 proti 56 px, mereno 31. 8.,
   sloupec ma zhruba 634 px). Uzsi stopa je vsech pet vedle sebe. */
body.zs26-obj #fox2 #nabidkaDnyDelka.cenik_nabidka.nabidkaDnyDelka {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
  grid-auto-rows: auto;
  grid-gap: var(--zs-odstup-sm);
  white-space: normal;
}

body.zs26-obj #fox2 #nabidkaDnyDelka .jidelnicek {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--zs-odstup-xs);
  width: auto;
  height: 100%;
  /* Stejna vyska jako volby v doporucovaci kalkulacce, aby to na webu
     vypadalo jako jedna komponenta, ne dve. height 100 % srovna i radek,
     ktery zustane neuplny. */
  min-height: 64px;
  margin: 0;
  padding: var(--zs-odstup-md) var(--zs-odstup-sm);
  background: var(--zs-barva-pozadi-karta);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-male);
  text-align: center;
}

body.zs26-obj #fox2 #nabidkaDnyDelka .jidelnicek.act {
  background: var(--zs-barva-akcent-limetka-plo);
  border: 2px solid var(--zs-barva-ramecek-doporucena);
}

/* Kontejner delek nese i tridu "nabidkaprogram", takze na nej sedi
   template2024.css:702 az 705 (karta 130x90, vnitrni obal s paddingem 25 px).
   Oboje musi dolu, jinak je cip dvakrat vyssi, nez ma byt. */
body.zs26-obj #fox2 #nabidkaDnyDelka .jidelnicek > div {
  width: auto;
  height: auto;
  margin: 0;
  padding: 0;
}

body.zs26-obj #fox2 #nabidkaDnyDelka .jidelnicek h6 {
  position: static;
  top: auto;
  bottom: auto;
  width: auto;
  margin: 0;
  padding: 0;
  font-size: 15.5px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--zs-barva-text-nadpis);
  white-space: normal;
}

/* Radek s cenou, ktery do karty doplni JS. */
body.zs26-obj #fox2 #nabidkaDnyDelka .zs26-obj-cip-cena {
  font-size: 13.5px;
  line-height: 1.3;
  color: var(--zs-barva-text-popisek);
  font-weight: 400;
}

/* 6f. Doplnky, #vyber5. Karta si nechava foto, meni se jen ramecek. */
body.zs26-obj #fox2 .nabidka_doplnky .doplnek {
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-karta);
  background: var(--zs-barva-pozadi-karta);
}

body.zs26-obj #fox2 .nabidka_doplnky .doplnek.act {
  background: var(--zs-barva-akcent-limetka-plo);
  border: 2px solid var(--zs-barva-ramecek-doporucena);
}


/* ---------------------------------------------------------------------------
   7. Souhrn objednavky
   Figma 16 a 17, pravy panel. Kremove pozadi, dl radky, cena za den velka,
   celkem, stav.
   --------------------------------------------------------------------------- */

body.zs26-obj .zs26-obj-souhrn {
  background: var(--zs-barva-pozadi-sekce-2);
  border-radius: var(--zs-radius-karta);
  padding: var(--zs-odstup-xl);
}

body.zs26-obj .zs26-obj-souhrn__nadpis {
  margin: 0 0 var(--zs-odstup-base) 0;
  padding: 0;
  font-size: 17.5px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-souhrn__radky {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: var(--zs-odstup-md);
  row-gap: var(--zs-odstup-sm);
  margin: 0 0 var(--zs-odstup-base) 0;
  padding: 0 0 var(--zs-odstup-base) 0;
  border-bottom: 1px solid var(--zs-barva-ramecek-karta);
}

body.zs26-obj .zs26-obj-souhrn__radky dt {
  margin: 0;
  font-size: 15.5px;
  color: var(--zs-barva-text-popisek);
}

body.zs26-obj .zs26-obj-souhrn__radky dd {
  margin: 0;
  font-size: 15.5px;
  font-weight: 700;
  color: var(--zs-barva-text-nadpis);
  text-align: right;
}

body.zs26-obj .zs26-obj-souhrn__cena-den {
  display: flex;
  align-items: baseline;
  /* OPRAVA 27. 8. 2026, Marek: "tady je cena a mena moc daleko od sebe".
     Do te doby to bylo space-between, takze cislo sedelo vlevo a jednotka
     u praveho okraje panelu, mezi nimi 200 px niceho. */
  justify-content: flex-start;
  gap: var(--zs-odstup-xs);
  margin: 0 0 var(--zs-odstup-sm) 0;
  font-size: 17.5px;
  font-weight: 700;
  color: var(--zs-barva-text-nadpis);
}

/* Castka. JS ji podle KONTRAKTu sype dovnitr, obalena at je <strong>
   nebo <span class="zs26-obj-souhrn__castka">. */
body.zs26-obj .zs26-obj-souhrn__cena-den strong,
body.zs26-obj .zs26-obj-souhrn__cena-den .zs26-obj-souhrn__castka {
  font-size: 28px;
  font-weight: 700;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-souhrn__rozpad {
  margin: 0 0 var(--zs-odstup-md) 0;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--zs-barva-text-popisek);
}

body.zs26-obj .zs26-obj-souhrn__celkem {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--zs-odstup-md);
  margin: 0 0 var(--zs-odstup-sm) 0;
  font-size: 17.5px;
  font-weight: 700;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-souhrn__celkem strong,
body.zs26-obj .zs26-obj-souhrn__celkem .zs26-obj-souhrn__castka {
  font-size: 20px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

body.zs26-obj .zs26-obj-souhrn__stav {
  margin: 0;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--zs-barva-text-popisek);
}

body.zs26-obj .zs26-obj-souhrn a {
  color: var(--zs-barva-text-odkaz);
  font-weight: 600;
  text-decoration: none;
}

body.zs26-obj .zs26-obj-souhrn a:hover {
  text-decoration: underline;
}

/* Blok pomoci na konci panelu.
   PRESTAVENO 27. 8. 2026, Marek: "at tento blok je logicky a jednoduchy".
   PRESTAVENO ZNOVU 31. 8. 2026, Marek: tlacitko "Zavolame vam" z panelu pryc,
   odvadelo z objednavky a dublovalo telefon o dva radky niz. Zbyva nadpis,
   dva blbuvzdorne popsane odkazy na samoobsluznou pomoc a telefon. */
body.zs26-obj .zs26-obj-pomoc {
  display: flex;
  flex-direction: column;
  gap: var(--zs-odstup-md);
  margin: var(--zs-odstup-base) 0 0 0;
  padding: var(--zs-odstup-base) 0 0 0;
  border-top: 1px solid var(--zs-barva-ramecek-karta);
}

body.zs26-obj .zs26-obj-pomoc__nadpis {
  margin: 0;
  font-size: 15.5px;
  font-weight: 700;
  line-height: 1.3;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-pomoc__popis {
  margin: 2px 0 0 0;
  font-size: 13.5px;
  line-height: 1.45;
  color: var(--zs-barva-text-popisek);
}

body.zs26-obj .zs26-obj-pomoc__odkazy {
  display: flex;
  flex-direction: column;
  gap: var(--zs-odstup-sm);
  margin: 0;
  padding: 0;
  list-style: none;
}

body.zs26-obj .zs26-obj-pomoc__odkazy a {
  color: var(--zs-barva-text-odkaz);
  font-size: 15.5px;
  font-weight: 600;
  line-height: 1.4;
  text-decoration: none;
}

body.zs26-obj .zs26-obj-pomoc__odkazy a:hover {
  text-decoration: underline;
}


/* ---------------------------------------------------------------------------
   8. Akce a mobilni lista
   Desktop: primarni "Pokracovat: <nazev dalsiho kroku>", vedle textove "Zpet".
   Mobil: lepi se dolu, vlevo cena, vpravo tlacitko (M9, M10).
   Dnesni lista enginu #respofix se schova.
   --------------------------------------------------------------------------- */

body.zs26-obj .zs26-obj-akce {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--zs-odstup-base);
  margin: var(--zs-odstup-xl) 0 0 0;
}

/* Poradi v DOMu je dalsi, zpet. Na obrazovce ma byt zpet vlevo a pokracovat
   vpravo, jako u NutritionPro (03 .../screenshoty/cz/nutritionpro/
   05-konfigurator.jpg). Resi to order, ne prehazeni uzlu, aby se nemenila
   logika v JS ani poradi pro ctecku (zpet je v DOMu az za pokracovat
   zamerne, prvni v poradi ma byt hlavni akce). */
body.zs26-obj .zs26-obj-akce__zpet { order: 1; }
body.zs26-obj .zs26-obj-akce__dalsi { order: 3; margin-left: auto; }
body.zs26-obj .zs26-obj-hlaska { order: 4; flex: 0 0 100%; }

/* Text tlacitka jsou dva spany ("Pokracovat" + ": od kdy") a zdedeny gap
   ze zs26-obj-tlacitko delal mezeru PRED dvojteckou: "Pokracovat : od kdy"
   (Markuv screenshot 31. 8.). Dvojtecka ma sedet hned za slovem, mezeru
   za ni nese text detailu. */
body.zs26-obj .zs26-obj-akce__dalsi,
body.zs26-obj .zs26-obj-akce__zpet {
  gap: 0;
}

body.zs26-obj .zs26-obj-akce__cena {
  display: none;
  font-size: 20px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-akce__cena-popis {
  display: none;
  font-size: 13.5px;
  line-height: 1.3;
  color: var(--zs-barva-text-popisek);
}

body.zs26-obj .zs26-obj-akce__napoveda {
  font-size: 15.5px;
  color: var(--zs-barva-text-popisek);
}

/* Dnesni mobilni lista. Selektor s atributem, aby prebil
   .body_v2.StrObjednavka.zal2 #respofix (template2024.css:2030), ktery ma
   tri tridy. Bez toho by to chtelo !important. */
body.zs26-obj[data-zs26-krok] #respofix {
  display: none;
}


/* ---------------------------------------------------------------------------
   9. Uvolneno 1. 9. 2026
   Byla tu "dieta kroku 4": pravidlo
     body.zs26-obj:not(.zs26-obj--vice) [data-zs26-volitelne="1"] { display: none }
   a peti-blokovy styl textoveho tlacitka .zs26-obj-vice ("Dalsi moznosti").
   Oboji nahradil blok U20 na konci souboru. Cislo sekce zustava obsazene,
   aby se neposunula cisla odkazovana z JS a z POZNAMKY.md.
   --------------------------------------------------------------------------- */


/* ---------------------------------------------------------------------------
   10. Hlasky vrstvy
   Figma 16: informacni pas na kremovem pozadi s tmave zlutym textem.
   --------------------------------------------------------------------------- */

body.zs26-obj .zs26-obj-hlaska {
  margin: var(--zs-odstup-base) 0;
  padding: var(--zs-odstup-md) var(--zs-odstup-base);
  border-radius: var(--zs-radius-male);
  font-size: 15.5px;
  font-weight: 600;
  line-height: 1.5;
}

/* OPRAVA QA 2026-08-21: prazdna hlaska nesmi zabirat misto. JS ji znacky
   data-zs26-prazdne="1" dava uz od zacatku, CSS to nevyuzivalo, takze v
   mobilni lepici liste zabirala cely radek navic (lista mela 157 px misto
   zhruba 72 px a prekryvala obsah). */
body.zs26-obj .zs26-obj-hlaska[data-zs26-prazdne="1"],
body.zs26-obj .zs26-obj-souhrn__cena-den[data-zs26-prazdne="1"],
body.zs26-obj .zs26-obj-souhrn__celkem[data-zs26-prazdne="1"] {
  display: none;
}

body.zs26-obj .zs26-obj-hlaska--info {
  background: var(--zs-barva-pozadi-sekce-2);
  color: var(--zs-barva-stav-pozor);
}

body.zs26-obj .zs26-obj-hlaska--chyba {
  background: var(--zs-barva-stav-chyba-plo);
  color: var(--zs-barva-stav-chyba);
}

body.zs26-obj .zs26-obj-hlaska a {
  color: inherit;
  text-decoration: underline;
}


/* ---------------------------------------------------------------------------
   11a. Do 1024 px, jeden sloupec
   Souhrn se sklopi pod formular a prestane byt sticky.
   --------------------------------------------------------------------------- */

@media (max-width: 1024px) {

  /* OPRAVA QA 2026-08-21: stejne zdvojeni jako u desktopove varianty,
     jinak by desktopovy grid (0,3,0) prebil tenhle mobilni prepis (0,2,0). */
  body.zs26-obj--fox2 .zs26-obj-rozvrzeni.zs26-obj-rozvrzeni {
    display: block;
  }

  body.zs26-obj .zs26-obj-rozvrzeni > .zs26-obj-souhrn {
    position: static;
    top: auto;
    width: auto;
    margin-top: var(--zs-odstup-xl);
  }

  body.zs26-obj .zs26-obj-krokovnik {
    margin-bottom: var(--zs-odstup-base);
  }

}


/* ---------------------------------------------------------------------------
   11b. Do 700 px, mobil podle M8, M8b, M9, M10 (navrh kreslen na 390 px)
   - karta bez ramecku, obsah az k okrajum
   - krokovnik: aktivni pilulka s nazvem, ostatni jen cislo
   - PSC: pole a tlacitko pod sebou, oboji na celou sirku
   - akce: lepici lista dole, vlevo cena, vpravo tlacitko
   --------------------------------------------------------------------------- */

@media (max-width: 700px) {

  /* Karta se na mobilu rozpusti, jinak by byl obsah dvakrat odsazeny. */
  body.zs26-obj .zs26-obj-rozvrzeni > #fox2,
  body.zs26-obj .zs26-obj-rozvrzeni > .zs26-obj-psc {
    padding: 0;
    border: 0;
    border-radius: 0;
    background: none;
  }

  body.zs26-obj .zs26-obj-souhrn {
    padding: var(--zs-odstup-base);
  }

  /* Krokovnik: 1 ✓  2 Jidlo  3  4 */
  body.zs26-obj .zs26-obj-krokovnik > ol {
    flex-wrap: wrap;
    gap: var(--zs-odstup-xs);
  }

  body.zs26-obj .zs26-obj-krokovnik__polozka {
    margin-left: 0;
    padding: var(--zs-odstup-xs) var(--zs-odstup-md);
    font-size: 13.5px;
  }

  body.zs26-obj .zs26-obj-krokovnik__polozka + .zs26-obj-krokovnik__polozka::before {
    content: none;
  }

  body.zs26-obj .zs26-obj-krokovnik__polozka:not(.zs26-obj-krokovnik__polozka--aktivni) .zs26-obj-krokovnik__nazev {
    display: none;
  }

  /* U hotoveho kroku bez nazvu musi fajfka viset na cisle. */
  body.zs26-obj .zs26-obj-krokovnik__polozka--hotovo:not(.zs26-obj-krokovnik__polozka--aktivni) .zs26-obj-krokovnik__cislo::after {
    content: "\00a0\2713";
    color: var(--zs-barva-ikona-check);
  }

  body.zs26-obj .zs26-obj-nadpis,
  body.zs26-obj #fox2 > #vyber1 > h2,
  body.zs26-obj #fox2 > #vyber4 > h2,
  body.zs26-obj #fox2 > #vyber7 > h2 {
    font-size: 22px;
  }

  body.zs26-obj .zs26-obj-perex {
    font-size: 16px;
  }

  /* ZRUSENO 26. 8. 2026 vecer. Do te doby tady byla mobilni podoba obrazovky
     M8: display: block na formu, pole i tlacitko na celou sirku, kazde na
     vlastnim radku. Z PSC uz je pas, takze to delalo ctyri radky misto dvou
     a Marek napsal, ze je blok moc velky. Kompaktni podobu resi blok U11. */

  body.zs26-obj .zs26-obj-psc__stav {
    padding: var(--zs-odstup-md) var(--zs-odstup-base);
  }

  /* M9: cipy delek uzsi, at se vejdou dva az tri v radku. */
  body.zs26-obj #fox2 #nabidkaDnyDelka.cenik_nabidka.nabidkaDnyDelka {
    grid-template-columns: repeat(auto-fit, minmax(104px, 1fr));
  }

  /* M9 a M10: lepici lista dole. Prostor pod obsahem, at lista nic nezakryva.
     ZVETSENO 26. 8. 2026: lista ma od navratu tlacitka Zpet tri radky misto
     dvou, zmereno 113 px. Rezerva 96 px uz nestacila a lista prekryvala
     spodek obsahu. */
  body.zs26-obj .zs26-obj-rozvrzeni {
    padding-bottom: calc(var(--zs-odstup-sekce) + var(--zs-odstup-sekce));
  }

  body.zs26-obj .zs26-obj-akce {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 11;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: var(--zs-odstup-sm) var(--zs-odstup-md);
    margin: 0;
    padding: var(--zs-odstup-md) var(--zs-odstup-base);
    padding-bottom: calc(var(--zs-odstup-md) + env(safe-area-inset-bottom, 0px));
    background: var(--zs-barva-pozadi-stranka);
    border-top: 1px solid var(--zs-barva-ramecek-karta);
  }

  body.zs26-obj .zs26-obj-akce__cena {
    display: block;
    grid-column: 1 / -1;
    grid-row: 1;
  }

  body.zs26-obj .zs26-obj-akce__cena-popis {
    display: block;
    grid-column: 1 / -1;
    grid-row: 2;
  }

  /* OPRAVA 26. 8. 2026: Zpet bylo na mobilu display: none a komentar sliboval,
     ze "patri nad listu, do obsahu". Zadne takove pravidlo ale neexistovalo,
     takze na mobilu nebylo Zpet vidout vubec a jedina cesta zpatky byl
     krokovnik. Presunout uzel nesmim, kontrakt to zakazuje, takze Zpet
     zustava v liste a lista ma o radek vic.
     Vzor: Factor ma na mobilu presne tohle, Back obrysove vlevo a Next plne
     a sirsi vpravo (03 .../screenshoty/svet/factor/09-onboarding-mobil.jpg). */
  body.zs26-obj .zs26-obj-akce__zpet {
    display: inline-flex;
    grid-column: 1;
    grid-row: 3;
    padding: 0 var(--zs-odstup-base) !important;
  }

  body.zs26-obj .zs26-obj-akce__dalsi {
    grid-column: 2;
    grid-row: 3;
    margin-left: 0;
    justify-self: stretch;
  }

  /* Kdyz Zpet neni (prvni krok), sloupec 1 se smrskne na nulu a Pokracovat
     zabere celou sirku. [hidden] musi prebit display: inline-flex vys. */
  body.zs26-obj .zs26-obj-akce__zpet[hidden] {
    display: none;
  }

  /* Hlaska je v gridu, musi dostat vlastni radek, jinak ji auto-placement
     posadi do volne bunky vedle tlacitka. */
  body.zs26-obj .zs26-obj-hlaska {
    grid-column: 1 / -1;
    grid-row: 4;
    margin: 0;
  }

  body.zs26-obj .zs26-obj-akce__napoveda {
    display: none;
  }

}

/* ==========================================================================
   Uklid funnelu, 25. 8. 2026
   Sest zasahu ze zadani. Vse je aditivni a visi na body.zs26-obj, takze
   vypnuti vrstvy vrati stranku do dnesniho stavu.
   ========================================================================== */

/* --------------------------------------------------------------------------
   U1. Treti sloupec pryc, formular dostane misto

   Zmereno 25. 8. 2026 v prohlizeci na webvyvoj2:
     .main_limit.obsah  1330 px
     #clanek             945 px
     #sidebar            325 px
   Vlastni formular mel 445 px, tedy 33 % obalu, zatimco dva bocni panely
   dohromady 617 px. Sloupec "Neni vam neco jasne" je stary Joomla modul m147
   v #sidebar_float.sidebar2, ne cast teto vrstvy.

   Duvod, proc mizi: ve vzorku deseti webu (5 svet, 5 CZ) ma bocni sloupec
   s napovedou jediny web, a to Zdrave stravovani. Svet resi totez mikrotextem
   pod tlacitkem (4 z 5) nebo odkazem "Need help?" v hlavicce funnelu
   (CookUnity). Obsah se nezahazuje: telefon jde do souhrnu, oba odkazy ke
   kroku 2 primo k vyberu programu, tedy do mista pochybnosti.

   Schovava se AZ #sidebar_float, ne #sidebar, aby zustala mrizka sablony
   nedotcena a slo to vratit jedinym pravidlem. Deje se to jen na objednavce
   (body.zs26-obj) a jen kdyz vrstva bezi.
   -------------------------------------------------------------------------- */
/* Zmereno 25. 8., retez nad formularem:
     .main_limit.obsah  1330 px, display: grid, DVA sloupce
       #dcomponent      1005 px, padding-right 60 px
         #clanek         945 px
       #sidebar          325 px
   Schovat sidebar nestaci: grid mu drzi sloupec dal, takze #clanek zustane
   na 945. Musi se proto zuzit i mrizka na jeden sloupec. Jsou to tri pravidla,
   ne jedno, a smazanim kterehokoliv z nich se stav vrati. */
body.zs26-obj[data-zs26-krok] #sidebar { display: none; }
body.zs26-obj[data-zs26-krok] .main_limit.obsah { grid-template-columns: minmax(0, 1fr); }
body.zs26-obj[data-zs26-krok] #dcomponent { padding-right: 0; width: auto; }

/* --------------------------------------------------------------------------
   U2. Doplnky pryc, cely krok 5

   Attach rate na 28 443 objednavkach fox2 (leden 2025 az srpen 2026, dopocet
   nad primarnim exportem): polevka 0, fresh 0, dezert 0, smoothie zelene 0,
   smoothie barevne 0. Ve formulari jdou koupit jen dve svaciny (doplnek=29
   a 30, 89 Kc), a u casti programu blok hlasi, ze nejde pridat nic.

   Blok se skryva, NEMAZE. Skryta pole enginu zustavaji ve formulari se svymi
   vychozimi hodnotami, takze se odesle totez, co kdyz na doplnky nikdo neklikne.
   Vraceni je smazani tohoto pravidla.
   -------------------------------------------------------------------------- */
body.zs26-obj[data-zs26-krok] #fox2 > #vyber5 { display: none; }

/* --------------------------------------------------------------------------
   U3. Kombinace chodu se nesmi orezavat

   Zmereno 25. 8.: rada ikon chodu u kombinace koncila za pravym okrajem,
   posledni polozka Vecere byla useknuta. Ve 445 px se to nevejde, v 770 px uz
   ano, ale zalamovat se to musi tak jako tak.
   -------------------------------------------------------------------------- */
body.zs26-obj #fox2 #nabidka_kodu .klikblok {
  min-width: 0;
  overflow: visible;
}
body.zs26-obj #fox2 #nabidka_kodu .klikblok .chody,
body.zs26-obj #fox2 #nabidka_kodu .klikblok > div:last-child {
  display: flex;
  flex-wrap: wrap;
  gap: var(--zs-odstup-sm);
  min-width: 0;
}

/* --------------------------------------------------------------------------
   U4. Vyber programu bez karuselu

   Zmereno 25. 8.: z deseti programu byly ve 445 px videt 3,5 karty a obe
   sipky lezely na kartach. V sirsim sloupci se mrizka vejde cela, takze
   karusel neni k cemu. Sipky se skryvaji, posuvny pas se meni na mrizku.
   Kdyby engine sipky potreboval k necemu jinemu, staci smazat prvni pravidlo.
   -------------------------------------------------------------------------- */
body.zs26-obj[data-zs26-krok="1"] #vyber1 .karusel_sipka,
body.zs26-obj[data-zs26-krok="1"] #vyber1 [class*="sipka"],
body.zs26-obj[data-zs26-krok="1"] #vyber1 [class*="arrow"] { display: none; }
/* CHYBA A OPRAVA 25. 8.: karusel ma obal .okoloslider s PEVNOU vyskou na jednu
   radu (zmereno 170 px). Kdyz se .cenik_nabidka uvnitr zmeni na mrizku, naroste
   na 346 px, ale obal zustane 170 a druha a treti rada se pretiskne pres text
   pod nim. Muj prvni QA test to nechytil, protoze meril jen VODOROVNE preteceni.
   Obal proto musi pustit vysku taky. */
body.zs26-obj[data-zs26-krok="1"] #vyber1 .okoloslider {
  height: auto;
  min-height: 0;
  max-height: none;
  overflow: visible;
}
/* Mezi obalem a mrizkou je jeste DRAHA slideru, bezejmenny div s position:
   absolute a pevnou vyskou. Dokud je absolutni, je mimo tok, obal se sesype
   na nulu a text pod nim se pretiskne pres karty. Vratit ji do toku je proto
   podminka toho, aby mrizka vubec mohla fungovat. */
body.zs26-obj[data-zs26-krok="1"] #vyber1 .okoloslider > div {
  position: static;
  height: auto;
  min-height: 0;
  width: auto;
  left: auto;
  top: auto;
  transform: none;
}
body.zs26-obj[data-zs26-krok="1"] #vyber1 .cenik_nabidka {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: var(--zs-odstup-sm);
  overflow: visible;
  width: auto;
  white-space: normal;
  transform: none;
}
/* POZOR, tohle je misto, kde jsem 25. 8. rozbil stranku, at to nikdo neopakuje.
   Karta MUSI zustat position: relative, protoze jeji obsah .jidelnicek_ic
   (ikona i nazev v h6) je v enginu position: absolute a karta je jeho
   containing block (template2024.css:677 a :685). Kdyz karte dam static,
   obsah se odpouta k nejblizsimu pozicovanemu predkovi a natahne se na jeho
   rozmer: zmereno 880x346 px v karte 170x110. Ikony a nazvy pak plavou mimo boxy.
   Merenim: pred 22 prvku mimo svou kartu, po navratu na relative 0. */
body.zs26-obj[data-zs26-krok="1"] #vyber1 .cenik_nabidka > .jidelnicek {
  width: auto;
  margin: 0;
  float: none;
  display: block;
}

/* --------------------------------------------------------------------------
   U5. Popisky, ktere se orezavaly

   Zmereno 25. 8. na kroku 3 u programu KETO: checkbox mel popisek
   "...etne vikendu.", tedy useknute "vcetne". Vinik je pevna sirka a
   zaporny odsazeny text, ne delka slova.
   -------------------------------------------------------------------------- */
body.zs26-obj #fox2 #vyber4 label,
body.zs26-obj #fox2 #nabidkaDnyVikend,
body.zs26-obj #fox2 #nabidkaDnyVikend label {
  display: flex;
  align-items: center;
  gap: var(--zs-odstup-sm);
  width: auto;
  min-width: 0;
  overflow: visible;
  text-indent: 0;
  white-space: normal;
  line-height: 1.4;
}
body.zs26-obj #fox2 #nabidkaDnyVikend input[type="checkbox"] {
  flex: 0 0 auto;
  margin: 0;
  position: static;
  width: 20px;
  height: 20px;
}

/* --------------------------------------------------------------------------
   U6. Napoveda ze zruseneho sloupce, ted u mista pochybnosti
   -------------------------------------------------------------------------- */
body.zs26-obj .zs26-obj-napoveda {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--zs-odstup-sm);
  margin: var(--zs-odstup-sm) 0 0;
  padding: 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--zs-barva-text-tlumeny);
}
body.zs26-obj .zs26-obj-napoveda a {
  color: var(--zs-barva-text-odkaz);
  font-weight: 600;
}
/* Telefon a doba, dva radky misto ctyr. Nedelni okno a e-mail zmizely,
   jsou v paticce a na /kontakt. */
/* Od 31. 8. vecer je kontakt treti <li> seznamu pomoci: "at to ma stejnou
   odrazku jako Doporucovaci kalkulacka a Nutricni poradce" (Marek).
   Odrazka je background sablony na ul li (content2024.css:44, tecka3.png)
   a sedi na paddingu 0.4em/2em, takze zadny vlastni padding: 0. */
body.zs26-obj .zs26-obj-souhrn__kontakt {
  margin: 0;
  border: 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--zs-barva-text-tlumeny);
}

/* Popisek nad cislem, stejna vaha jako nadpis "Nevite si s vyberem rady?".
   Marek 31. 8. vecer: "dej to telefonni cislo jako zavolejte nam a telefon
   a kdy". */
body.zs26-obj .zs26-obj-souhrn__kontakt-nadpis {
  display: block;
  margin: 0 0 2px 0;
  font-size: 15.5px;
  font-weight: 700;
  line-height: 1.3;
  color: var(--zs-barva-text-nadpis);
}
body.zs26-obj .zs26-obj-souhrn__telefon {
  display: block;
  color: var(--zs-barva-text-odkaz);
  font-size: 17px;
  font-weight: 700;
  text-decoration: none;
}
body.zs26-obj .zs26-obj-souhrn__telefon:hover { text-decoration: underline; }
body.zs26-obj .zs26-obj-souhrn__hodiny { display: block; }

/* poznamka pod krokem, kde se dnes nerika neco podstatneho */
body.zs26-obj .zs26-obj-poznamka {
  margin: var(--zs-odstup-sm) 0 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--zs-barva-text-tlumeny);
}
body.zs26-obj .zs26-obj-poznamka strong { color: var(--zs-barva-text-nadpis); }

@media (max-width: 1024px) {
  body.zs26-obj[data-zs26-krok] #sidebar { display: none; }
}

/* --------------------------------------------------------------------------
   U7. Muj vyber jako karta v mrizce programu
   PREPSANO 26. 8. 2026 vecer. Do te doby to byl samostatny pas pod mrizkou.
   Marek: "muj vyber je standardni program".

   Zustava jediny rozdil, ktery odstranit nejde: Muj vyber neni v enginu
   program, nema typ a klik odvede na vlastni URL. Proto je to <a>, ne dlazdice
   enginu, a pod mrizkou je jedna veta, ktera to rekne predem
   (.zs26-obj-vyber-pozn).

   Karta musi vypadat presne jako .jidelnicek, jinak by v mrizce vycnivala.
   Ctyri prvky maximalne, viz Studio/Inspirace/Volba cesty je jedna velikost
   dlazdice a ctyri prvky na karte.md: stitek a nazev, nic vic.
   -------------------------------------------------------------------------- */
body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-vyber {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--zs-odstup-xs);
  /* stejna minimalni vyska jako dlazdice enginu (template2024.css:677),
     aby mrizka nemela jednu kartu nizsi */
  min-height: 110px;
  padding: var(--zs-odstup-xl) var(--zs-odstup-sm) var(--zs-odstup-sm);
  background: var(--zs-barva-pozadi-karta);
  /* Plny ramecek, ne carkovany. Carkovany se cetl jako "nedostupne" nebo
     "zastupne misto", a karta ma vypadat jako ostatni dlazdice. Odlisuje ji
     stitek Novinka, ne jiny tvar. */
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-karta);
  color: var(--zs-barva-text-nadpis);
  text-align: center;
  text-decoration: none;
}

body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-vyber:hover {
  background: var(--zs-barva-pozadi-jemne);
  border-color: var(--zs-barva-ramecek-doporucena);
}

body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-vyber:focus-visible {
  outline: 2px solid var(--zs-barva-stav-fokus);
  outline-offset: 2px;
}

/* Stitek je absolutne UVNITR karty, u horniho okraje.
   OPRAVA 26. 8. vecer, dvakrat: nejdriv visel na top: -9px MIMO kartu a na
   mobilu prekryval dlazdici nad sebou (mezi radami je 8 px). Pak byl v toku
   a natahoval kartu nad vysku dlazdic enginu, ktere maji 110 px na desktopu
   a 80 px pod 600 px (template2024.css:648 a 652). Uvnitr a mimo tok splnuje
   oboji: stejna vyska, zadny presah. */
body.zs26-obj .zs26-obj-karta-vyber__stitek {
  position: absolute;
  top: 4px;
  left: 50%;
  transform: translateX(-50%);
  padding: 0 var(--zs-odstup-sm);
  background: var(--zs-barva-akcent-zluta);
  border-radius: var(--zs-radius-male);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  line-height: 16px;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--zs-barva-text-nadpis);
}

/* 55 x 55 je rozmer, na ktery engine kresli ikony dlazdic uvnitr objednavky
   (template2024.css:654). */
body.zs26-obj .zs26-obj-karta-vyber__ikona {
  display: block;
  width: 44px;
  height: 44px;
  object-fit: contain;
}

body.zs26-obj .zs26-obj-karta-vyber__nazev {
  font-size: 14px;
  font-weight: 700;
  line-height: 1.2;
}

/* Poradi v mrizce: Muj vyber az za deseti programy, Doplnky uplne posledni.
   Doplnky nejsou program, je to cross-sell (Studio/Assety/Mind mapa programu
   ve 4 kategoriich.md), takze nemaji stat mezi programy. */
body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-vyber { order: 1; }
body.zs26-obj #fox2 .cenik_nabidka .jidelnicek:has(.jidelnicek77) { order: 2; }

/* Veta pod mrizkou. Neni to karta ani pas, jen jeden radek drobnym textem. */
body.zs26-obj .zs26-obj-vyber-pozn {
  margin: var(--zs-odstup-sm) 0 0;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--zs-barva-text-popisek);
}


/* --------------------------------------------------------------------------
   U7b. Prazdne bloky varianty a kombinace
   Dokud neni vybrany program, jsou #vyber2 a #vyber3 prazdne a nesou jen
   hlasku "Pro zobrazeni moznosti vyberte program.". Zmereno 26. 8. 2026:
   delalo to 250 px prazdneho mista mezi mrizkou a tlacitkem Pokracovat.
   Bloky se SCHOVAVAJI, nemazou, takze skryta pole program, rada a kod
   zustavaji ve formulari a serializuji se.
   -------------------------------------------------------------------------- */
body.zs26-obj[data-zs26-ma-program="0"] #fox2 > #vyber2,
body.zs26-obj[data-zs26-ma-program="0"] #fox2 > #vyber3,
body.zs26-obj[data-zs26-ma-radu="0"] #fox2 > #vyber3 {
  display: none;
}

/* Se skrytym blokem musi zmizet i oddelovac pred nim a za nim, jinak zustane
   dole prazdne misto. Zmereno 26. 8.: dva oddelovace po 24 px a k tomu
   odsazeni formulare, dohromady 72 px niceho pod kalorickymi radami. */
body.zs26-obj[data-zs26-ma-program="0"] #fox2 > hr:has(+ #vyber2),
body.zs26-obj[data-zs26-ma-program="0"] #fox2 > #vyber2 ~ hr[data-zs26-obrazovka="1"],
body.zs26-obj[data-zs26-ma-radu="0"] #fox2 > hr:has(+ #vyber3),
body.zs26-obj[data-zs26-ma-radu="0"] #fox2 > #vyber3 ~ hr[data-zs26-obrazovka="1"] {
  display: none;
}


/* --------------------------------------------------------------------------
   U7c. Volby vypadaji jako volby, plus jednotky u kalorickych rad

   Marek 26. 8.: "podivej se, jak jsme dobre vyresili tlacitka u doporucovaci
   kalkulacky, kde je jasne, ze se to da zaskrtnout" a "tady zase nerozumim,
   co ty cisla znamenaji, maji tam byt i jednotky a prepocet na kcal".

   Prebira se znak z kalkulacky, 25 .../kalkulacka-vrstva/
   novy-2026-kalkulacka.css:207 (.zs26-kv__znak): kolecko 22 px, 2px ramecek
   barvy pole, po zaskrtnuti limetka a 6px ramecek jako tecka uprostred.
   Tady je to ::before, ne vlastni uzel, protoze karty prekresluje engine.
   -------------------------------------------------------------------------- */

/* Kaloricke rady: dva radky, kolecko vlevo.
   ZVETSENO 27. 8. 2026, Marek: "ty tlacitka jsou moc male". Z flexu na mrizku
   po trech, dlazdice pres celou sirku sloupce a vyssi. Vejde se tim i treti
   radek s informaci, kolik to je jidla. */
body.zs26-obj #fox2 #nabidkaprogram {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  align-items: stretch;
}

body.zs26-obj #fox2 #nabidkaprogram .jidelnicek {
  position: relative;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 2px;
  width: auto;
  min-width: 0;
  min-height: 68px;
  padding: var(--zs-odstup-md) var(--zs-odstup-base) var(--zs-odstup-md) 46px;
  text-align: left;
}

body.zs26-obj #fox2 #nabidkaprogram .jidelnicek::before,
body.zs26-obj #fox2 #nabidka_kodu .klikblok::before {
  content: "";
  position: absolute;
  top: 50%;
  left: var(--zs-odstup-md);
  width: 22px;
  height: 22px;
  margin-top: -11px;
  box-sizing: border-box;
  background: var(--zs-barva-pozadi-karta);
  border: 2px solid var(--zs-barva-ramecek-pole);
  border-radius: var(--zs-radius-pill);
}

body.zs26-obj #fox2 #nabidkaprogram .jidelnicek.act::before,
body.zs26-obj #fox2 #nabidka_kodu .klikblok.act::before {
  border-width: 6px;
  border-color: var(--zs-barva-akce-primarni);
  background: var(--zs-barva-akce-primarni);
}

/* Jednotku dopisuje CSS, obsah <h6> zustava enginu. Atribut nastavuje
   obohatRady() jen u ciste ciselnych rad, takze MENU a MENU XL u Menicka
   ani gramy sacharidu u Diabetika jednotku nedostanou. */
body.zs26-obj #fox2 #nabidkaprogram .jidelnicek[data-zs26-rada="kj"] h6::after {
  content: " kJ";
}

/* Napoveda nad mrizkou kalorickych rad. */
body.zs26-obj .zs26-obj-napoveda-rada {
  margin: 0 0 var(--zs-odstup-md) 0;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--zs-barva-text-popisek);
}

body.zs26-obj .zs26-obj-rada__kcal {
  font-size: 14.5px;
  font-weight: 400;
  line-height: 1.2;
  white-space: nowrap;
  color: var(--zs-barva-text-popisek);
}

/* Kombinace chodu jako JEDNA karta na radek.
   PREPSANO 27. 8. 2026, Marek: "tohle neni graficky hezke". Engine posila
   kazdou moznost jako DVA sourozence, .klikblok s nazvem a cenou a hned za nim
   .detaily s ikonami chodu (zmereno v DOMu 27. 8.). Slouceni uzlu je zakazane,
   takze se z nich dela jedna karta opticky: mrizka o dvou sloupcich, vnitrni
   hrana bez ramecku a spolecne zaobleni. Vybrana moznost obarvi obe pulky pres
   sourozenecky selektor .klikblok.act + .detaily. */
body.zs26-obj #fox2 #nabidka_kodu .nabidka_kodu {
  display: grid;
  grid-template-columns: minmax(11rem, 16rem) minmax(0, 1fr);
  gap: var(--zs-odstup-sm) 0;
  align-items: stretch;
}

body.zs26-obj #fox2 #nabidka_kodu .klikblok {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: var(--zs-odstup-sm);
  margin: 0;
  padding: var(--zs-odstup-md) var(--zs-odstup-base) var(--zs-odstup-md) 46px;
  border-right: 0;
  border-radius: var(--zs-radius-male) 0 0 var(--zs-radius-male);
  text-align: left;
}

body.zs26-obj #fox2 #nabidka_kodu .klikblok > div {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--zs-odstup-xs) var(--zs-odstup-sm);
}

body.zs26-obj #fox2 #nabidka_kodu .detaily {
  display: flex;
  align-items: center;
  margin: 0;
  padding: var(--zs-odstup-sm) var(--zs-odstup-base);
  background: var(--zs-barva-pozadi-karta);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-left: 0;
  border-radius: 0 var(--zs-radius-male) var(--zs-radius-male) 0;
}

/* Vybrana moznost: obe pulky spolu. Ramecek 2 px ma jen ta polovina, ktera
   ho ma i v klidovem stavu, jinak by se karta o pixel posunula. */
body.zs26-obj #fox2 #nabidka_kodu .klikblok.act + .detaily {
  background: var(--zs-barva-akcent-limetka-plo);
  border-color: var(--zs-barva-ramecek-doporucena);
  border-width: 2px;
  border-left: 0;
}

body.zs26-obj #fox2 #nabidka_kodu .chody {
  display: flex;
  flex-wrap: wrap;
  gap: var(--zs-odstup-sm) var(--zs-odstup-lg);
  width: 100%;
}

/* Pod 700 px se karta sklopi: nazev a cena nahore, chody pod nimi na celou
   sirku. Zmereno 27. 8.: ve dvou sloupcich zbylo na chody 80 px, kazdy chod
   ma 62 px, takze se lamaly jeden pod druhy a jedna moznost merila 350 px.
   Vnitrni hrana se otaci z leve na horni. */
@media (max-width: 700px) {
  /* Jeden sloupec znamena, ze row-gap by odsadil i obe pulky tehoz kodu od
     sebe. Mezera mezi moznostmi proto jde na spodni pulku, ne na mrizku. */
  body.zs26-obj #fox2 #nabidka_kodu .nabidka_kodu {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }

  body.zs26-obj #fox2 #nabidka_kodu .detaily {
    margin-bottom: var(--zs-odstup-md);
  }

  body.zs26-obj #fox2 #nabidka_kodu .klikblok {
    border-right-width: 1px;
    border-bottom: 0;
    border-radius: var(--zs-radius-male) var(--zs-radius-male) 0 0;
  }

  body.zs26-obj #fox2 #nabidka_kodu .klikblok.act {
    border-right-width: 2px;
    border-bottom: 0;
  }

  body.zs26-obj #fox2 #nabidka_kodu .detaily {
    border-left-width: 1px;
    border-top: 0;
    border-radius: 0 0 var(--zs-radius-male) var(--zs-radius-male);
  }

  body.zs26-obj #fox2 #nabidka_kodu .klikblok.act + .detaily {
    border-left-width: 2px;
    border-top: 0;
  }

  /* Menicko nema spodni pulku, takze karta zustava cela i na mobilu. */
  body.zs26-obj--menicko #fox2 #nabidka_kodu .klikblok {
    border-bottom-width: 1px;
    border-radius: var(--zs-radius-male);
  }

  body.zs26-obj--menicko #fox2 #nabidka_kodu .klikblok.act {
    border-bottom-width: 2px;
  }

  /* Pet chodu na jeden radek, kazdy stejny dil sirky. */
  body.zs26-obj #fox2 #nabidka_kodu .chody {
    flex-wrap: nowrap;
    gap: var(--zs-odstup-xs);
  }

  body.zs26-obj #fox2 #nabidka_kodu .chod {
    flex: 1 1 0;
    min-width: 0;
    padding: 36px 0 4px !important;
    font-size: 11.5px !important;
    background-size: 26px 26px !important;
  }
}

/* Dlazdice programu: stejne kolecko v rohu, aby bylo predem videt, ze se
   vybira jedna z nich. Do toku ho dat nejde, obsah dlazdice je v enginu
   absolutne pozicovany (template2024.css:677). */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek::before {
  content: "";
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 3;
  width: 20px;
  height: 20px;
  box-sizing: border-box;
  background: var(--zs-barva-pozadi-karta);
  border: 2px solid var(--zs-barva-ramecek-pole);
  border-radius: var(--zs-radius-pill);
}

body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek.act::before {
  border-width: 6px;
  border-color: var(--zs-barva-akce-tmave);
  background: var(--zs-barva-akce-tmave);
}


/* --------------------------------------------------------------------------
   U8. Filtr programu podle situace
   Marek 26. 8.: "kdyz si vybiram program v objednavce, tak tam chci mit nad
   tim jednoduchy filtr sportuji, hubnu atp."

   Vzor: FitKitchen ma nad mrizkou planu radek prepinacu S MASEM / BEZ MASA /
   FLEXITARIANSKE MENU (03 .../screenshoty/cz/fitkitchen/05-konfigurator.jpg),
   Factor se pta na cil jeste pred nabidkou (svet/factor/
   04b-onboarding-krok2-cile.jpg), Prep Kitchen ma segmentaci podle cile
   i v hlavni navigaci (svet/prepkitchen/11-menu-filtry.jpg).

   Pravidla jsou opsana 1:1 z uz nasazene komponenty na /programy-a-priprava,
   25 Kod homepage a rozcestniku, prvni verze/css-partials/50-programy.css:54.
   Sdilet je nejde, protoze tam visi pod .zs26.zs26-programy a ta na strance
   enginu neni. Vyska 44 px, pilulka, 16 px, 600, aktivni tmave zeleny.

   Filtr je OPT-IN. Vychozi stav je "Vsechny programy" a nic se neschovava,
   ani kdyz clovek prijde s ?typ=NN z ceniku nebo z reklamy. Duvod je Markova
   vlastni zpetna vazba z 26. 8. rano k druhe vrstve: "filtr ma byt filtr,
   ktery muzu a nemusim zapnout" (QA.md). Predvybrany filtr by schoval osm
   programu z jedenacti, aniz by o to kdo pozadal.
   -------------------------------------------------------------------------- */
body.zs26-obj .zs26-obj-filtr {
  margin: 0 0 var(--zs-odstup-base) 0;
}

body.zs26-obj .zs26-obj-filtr__pas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--zs-odstup-md);
}

body.zs26-obj .zs26-obj-filtr__chip {
  display: inline-flex;
  align-items: center;
  min-height: var(--zs-vyska-tlacitko-male);
  padding: 0 var(--zs-odstup-lg) !important;
  border: 1px solid var(--zs-barva-ramecek-karta) !important;
  border-radius: var(--zs-radius-pill);
  background: var(--zs-barva-pozadi-karta);
  color: var(--zs-barva-text-nadpis);
  font-family: var(--zs-pismo) !important;
  font-size: 16px !important;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  box-shadow: none !important;
}

body.zs26-obj .zs26-obj-filtr__chip:hover {
  border-color: var(--zs-barva-ramecek-pole) !important;
  background: var(--zs-barva-akce-sekundarni-hover);
}

body.zs26-obj .zs26-obj-filtr__chip:focus-visible {
  outline: 2px solid var(--zs-barva-stav-fokus);
  outline-offset: 2px;
}

body.zs26-obj .zs26-obj-filtr__chip--aktivni,
body.zs26-obj .zs26-obj-filtr__chip--aktivni:hover {
  border-color: var(--zs-barva-akce-tmave) !important;
  background: var(--zs-barva-akce-tmave);
  color: var(--zs-barva-text-inverzni);
}

/* Skryta dlazdice. Atribut, ne inline style, aby to prekresleni enginem
   nesmazlo spolu s obsahem karty. */
body.zs26-obj #fox2 .cenik_nabidka [data-zs26-skryta="1"] {
  display: none !important;
}


/* --------------------------------------------------------------------------
   U9. Radek pro stavajiciho zakaznika
   Stavajici zakaznici nesou 94,5 % trzeb a 74 % jejich opakovanych objednavek
   jde pres call centrum, protoze portal neumi objednat znovu
   (Atlas/Knowledge/Opakovane nakupy z webu prechazeji do rucniho kanalu.md).
   Prihlaseni ve fox2 existuje, ale az v poslednim kroku.
   Vzor: Popapej ma "Zname se? Prihlaste se" primo u konfiguratoru
   (03 .../screenshoty/cz/popapej/05b-konfigurace-programu.jpg).
   -------------------------------------------------------------------------- */
body.zs26-obj .zs26-obj-prihlaseni {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--zs-odstup-sm);
  margin: 0 0 var(--zs-odstup-base) 0;
  font-size: 15.5px;
  line-height: 1.5;
  color: var(--zs-barva-text-tlumeny);
}

body.zs26-obj .zs26-obj-prihlaseni__text {
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-prihlaseni__odkaz {
  color: var(--zs-barva-text-odkaz);
  font-weight: 600;
  text-decoration: none;
}

body.zs26-obj .zs26-obj-prihlaseni__odkaz:hover {
  text-decoration: underline;
}

@media (max-width: 700px) {
  body.zs26-obj .zs26-obj-prihlaseni__proc {
    display: none;
  }
}


/* --------------------------------------------------------------------------
   U10. Popup "Zavolame vam"
   Marek 26. 8.: tlacitko "by melo pustit popup, nebo nejak otevrit jednoduchou
   stranku kde clovek vyplni ... jako na starem webu, ale zjednodusene".

   V designovem systemu zs26 zadny modal neexistuje, tohle je prvni. Chovani je
   opsane z panelu mobilniho menu (25 .../moduly/00-hlavicka.html:152), tedy
   Escape zavre, klik mimo zavre, aria-expanded, bez knihovny.

   Dialogem je OBAL formulare fox1 tam, kde ho vykreslil server. Nic se
   nepresouva a odesila ho jeho vlastni tlacitko KONTAKTUJTE ME, takze kontrakt
   ("nikdy submit()") plati dal.

   Zjednoduseni je jen na NEPOVINNYCH polich. Adresa zustava, protoze ji fox1
   vyzaduje a operatorka ji potrebuje. Zkraceni na tri pole je PRO MOJMIRA 11.
   -------------------------------------------------------------------------- */

/* Odkryt fox1, ale NEschovavat fox2. Ctyri tridy na body prebijeji
   body.zs26-obj--fox2 .obsahy_prepinaci > :nth-child(1) ze sekce 1. */
body.zs26-obj--fox2.zs26-obj--zavolame .obsahy_prepinaci > :nth-child(1) {
  display: block;
}

/* ZMERENO 26. 8. 2026: div.obsah_okolo v sablone ma contain: layout, a tim
   se stava containing blockem pro position: fixed. Dialog uvnitr nej se proto
   choval jako absolutne pozicovany vuci cele strance, top: 50% vyslo 1225 px
   a okno spadlo mimo obrazovku. Je to tentyz uzel, ktery uz jednou rozbil
   sticky (viz 25 .../novy-2026.css:1503, tam kvuli overflow).
   contain se vypina JEN po dobu otevreneho dialogu. */
body.zs26-obj--zavolame .obsah_okolo {
  contain: none;
}

body.zs26-obj .zs26-obj-clona {
  position: fixed;
  inset: 0;
  z-index: 80;
  background: rgba(31, 63, 42, .55);
}

body.zs26-obj .zs26-obj-clona[hidden] {
  display: none;
}

/* Dialog. Bez tridy na body je to porad jen skryty obal fox1, takze pri
   vypnutem JS se nic nemeni. */
body.zs26-obj--zavolame .zs26-obj-dialog {
  position: fixed;
  z-index: 81;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  /* ROZSIRENO 1. 9. 2026 z 37,5rem. Duvod je v sekci U21: pole enginu ted
     stoji v radcich po trech, ne pod sebou, a na 600 px by mela 150 px. */
  width: min(56rem, calc(100vw - 2 * var(--zs-odstup-xl)));
  max-height: calc(100vh - 2 * var(--zs-odstup-xl));
  overflow-y: auto;
  padding: var(--zs-odstup-xl);
  background: var(--zs-barva-pozadi-karta);
  border-radius: var(--zs-radius-karta);
}

body.zs26-obj .zs26-obj-dialog__hlava {
  position: relative;
  margin: 0 0 var(--zs-odstup-base) 0;
  padding-right: 5rem;
}

body.zs26-obj .zs26-obj-dialog__nadpis {
  margin: 0 0 var(--zs-odstup-sm) 0;
  padding: 0;
  font-size: 26px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.015em;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-dialog__perex {
  margin: 0;
  font-size: 15.5px;
  line-height: 1.55;
  color: var(--zs-barva-text-tlumeny);
}

body.zs26-obj .zs26-obj-dialog__zavrit {
  position: absolute;
  top: 0;
  right: 0;
  min-height: var(--zs-vyska-tlacitko-male);
  padding: 0 var(--zs-odstup-base) !important;
  background: var(--zs-barva-pozadi-karta);
  border: 2px solid var(--zs-barva-akce-sekundarni-ramecek) !important;
  border-radius: var(--zs-radius-pill);
  color: var(--zs-barva-text-nadpis);
  font-family: var(--zs-pismo) !important;
  font-size: 16px !important;
  font-weight: 600;
  cursor: pointer;
  box-shadow: none !important;
}

body.zs26-obj .zs26-obj-dialog__zavrit:focus-visible {
  outline: 2px solid var(--zs-barva-stav-fokus);
  outline-offset: 2px;
}

/* Zjednoduseni: pryc jde jen to, co fox1 nevyzaduje. Skryva se, nemaze,
   takze pole dal existuji a serializuji se prazdna. */
/* ZMERENO 26. 8. 2026: a_poznamka, a_jak_zjistil a a_jak_zjistil_jinak maji
   ve fox1 jen atribut name, id je prazdne. Selektory pres # proto nesedely
   na nic. Vybira se podle name. */
body.zs26-obj--zavolame .zs26-obj-dialog .skryte_special2,
body.zs26-obj--zavolame .zs26-obj-dialog #map1_okolo {
  display: none;
}

/* Radek s polem se schovava az na urovni obalu .fpol, jinak by zustal
   viset popisek nad schovanym polem. */
/* ZMENA 1. 9. 2026: a_poznamka uz v seznamu NENI. Marek: "hlavne tam musi
   byt velke pole pro poznamku". Schovavani te polozky navic delalo osirely
   nadpis: H3 "Chcete nam cokoli rict predem?" zustaval videt nad nicim,
   protoze pravidlo schovavalo jen .fpol, ne nadpis pred nim. */
body.zs26-obj--zavolame .zs26-obj-dialog .fpol:has([name="a_bonus_kod"]),
body.zs26-obj--zavolame .zs26-obj-dialog .fpol:has([name="a_jak_zjistil"]),
body.zs26-obj--zavolame .zs26-obj-dialog .fpol:has([name="a_jak_zjistil_jinak"]),
body.zs26-obj--zavolame .zs26-obj-dialog .fpol:has([name="a_lat"]),
body.zs26-obj--zavolame .zs26-obj-dialog .fpol:has([name="a_lon"]) {
  display: none;
}

/* Nadpisy uvnitr fox1 ("Komu se mame ozvat?", "Kam mame krabicky dovazet?")
   jsou v dialogu podnadpisy, ne nadpisy stranky. */
body.zs26-obj--zavolame .zs26-obj-dialog h2,
body.zs26-obj--zavolame .zs26-obj-dialog h3 {
  padding: var(--zs-odstup-base) 0 var(--zs-odstup-sm) 0;
  font-size: 17.5px;
  line-height: 1.35;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj--zavolame .zs26-obj-dialog .zs26-obj-dialog__nadpis {
  padding: 0 0 var(--zs-odstup-sm) 0;
  font-size: 26px;
}

/* Pod dialogem se nesmi rolovat. */
body.zs26-obj--zavolame {
  overflow: hidden;
}


/* --------------------------------------------------------------------------
   U11. Mobil pro U7 az U10
   -------------------------------------------------------------------------- */
@media (max-width: 700px) {

  /* Pet chipu, z toho "Jim podle svych potreb" je dlouhe. Zalomeni do dvou
     rad by nad mrizkou snedlo 96 px, vodorovny posuv jen 44. Stejna technika
     jako .zs-jv-chipy--posuv v 25 .../pruvodce-vrstva/novy-2026-jidelnicek.css:125. */
  body.zs26-obj .zs26-obj-filtr__pas {
    flex-wrap: nowrap;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    /* aby prvni a posledni chip nelepily na okraj sloupce */
    margin: 0 calc(-1 * var(--zs-odstup-base));
    padding: 0 var(--zs-odstup-base);
  }

  body.zs26-obj .zs26-obj-filtr__pas::-webkit-scrollbar {
    display: none;
  }

  body.zs26-obj .zs26-obj-filtr__chip {
    flex: 0 0 auto;
    scroll-snap-align: start;
  }

  /* Dialog neni vystredene okno, ale platno pres celou vysku s vlastnim
     scrollem. Z-index nad 70, protoze tolik ma mobilni menu
     (25 .../novy-2026.css:2446). */
  body.zs26-obj--zavolame .zs26-obj-dialog {
    top: 0;
    left: 0;
    transform: none;
    width: 100%;
    max-width: 100%;
    height: 100%;
    max-height: 100%;
    border-radius: 0;
    padding: var(--zs-odstup-base);
    padding-bottom: calc(var(--zs-odstup-xl) + env(safe-area-inset-bottom, 0px));
  }

  body.zs26-obj .zs26-obj-psc--pas {
    padding: var(--zs-odstup-base);
  }

  /* Pole a tlacitko na jeden radek, popisek nad ne. */
  body.zs26-obj .zs26-obj-psc__form > label {
    flex: 0 0 100%;
  }

  /* Pole a tlacitko musi sdilet radek, jinak ma pas na mobilu ctyri radky
     misto dvou. Zmereno 26. 8. vecer. */
  body.zs26-obj .zs26-obj-psc__pole {
    flex: 1 1 6rem;
    width: auto;
    min-width: 0;
  }

  body.zs26-obj .zs26-obj-psc__tlacitko {
    flex: 0 0 auto;
  }

  /* Mapa rozvozu na konec prvniho radku k popisku, ne na vlastni radek. */
  body.zs26-obj .zs26-obj-psc__form > label {
    flex: 1 1 100%;
  }

  body.zs26-obj .zs26-obj-psc__mapa {
    flex: 0 0 auto;
    margin-left: auto;
  }
}

/* Engine zmensuje dlazdice programu pod 600 px na 80 px vysky
   (template2024.css:651 az 652). Karta Muj vyber musi jit s nimi, jinak je
   v mrizce jedna rada vyssi. */
@media (max-width: 600px) {
  body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-vyber {
    min-height: 80px;
    padding: var(--zs-odstup-lg) var(--zs-odstup-xs) var(--zs-odstup-xs);
    gap: 2px;
  }

  body.zs26-obj .zs26-obj-karta-vyber__ikona {
    width: 30px;
    height: 30px;
  }

  body.zs26-obj .zs26-obj-karta-vyber__stitek {
    top: 2px;
    font-size: 10px;
    line-height: 14px;
  }
}

/* ===========================================================================
   U4. Menicko, typ=78
   Pridano 30. 8. 2026.

   Engine kresli u kazde kombinace radu peti ikon Snidane, Svacina, Obed,
   Svacina, Vecere. Ikona, ktera je v kombinaci obsazena, ma navic tridu ok:

     Pro zdravi, Celodenni            chod ok, chod ok, chod ok, chod ok, chod ok
     Pro zdravi, Celodenni bez obeda  chod ok, chod ok, chod,    chod ok, chod ok
     MENICKO, chod1 az chod5          chod,    chod,    chod,    chod,    chod

   U Menicka nema tridu ok ANI JEDNA z peti, takze se vykresli pet krizku
   a rozhrani tvrdi, ze si zakaznik kupuje prazdnou krabicku. Menicko pritom
   zadny chod neobsahuje a zadny ani nevynechava, ten radek u nej nema co rict.
   Zmereno na webvyvoj2 30. 8. 2026 ve dvou cerstvych profilech.

   Pravidlo je vedome obecne, ne na typ=78: schova blok ikon u kazde kombinace,
   ve ktere neni ani jedna ikona oznacena jako obsazena. Kdyby takovy program
   pribyl, chova se stejne, a kdyby engine u Menicka jednou zacal ok posilat,
   ikony se samy vrati.
   =========================================================================== */

body.zs26-obj #fox2 .nabidka_kodu .detaily:not(:has(.chod.ok)) {
  display: none !important;
}

/* Kdyz radek ikon zmizi, musi se prestavet i mrizka. Kombinace je jinak
   mrizka o DVOU sloupcich, kde .klikblok je leva pulka karty (zaobleni vlevo,
   bez praveho ramecku) a .detaily prava. Se schovanou pravou pulkou se karty
   preleji do obou sloupcu a vypadaji uriznute. Zmereno 30. 8. 2026 na testu.
   U Menicka je proto sloupec jeden a karta je cela. */
body.zs26-obj--menicko #fox2 #nabidka_kodu .nabidka_kodu {
  grid-template-columns: minmax(0, 1fr);
}

body.zs26-obj--menicko #fox2 #nabidka_kodu .klikblok {
  border-right-width: 1px;
  border-radius: var(--zs-radius-male);
}

body.zs26-obj--menicko #fox2 #nabidka_kodu .klikblok.act {
  border-right-width: 2px;
}

/* Co znamena cislo jidla a doprava. Stoji nad mrizkou kombinaci, aby se to
   precetlo driv nez ceny. Limetka jen na plochu, nikdy na text. */
body.zs26-obj #fox2 .zs26-obj-menicko-kod {
  margin: 0 0 14px;
  padding: 12px 16px;
  border-radius: 10px;
  background: var(--zs-barva-pozadi-jemne);
  border: 1px solid var(--zs-barva-ramecek-karta);
  color: var(--zs-barva-text-nadpis);
  font-size: .92rem;
  line-height: 1.45;
}

body.zs26-obj #fox2 .zs26-obj-menicko-kod strong {
  display: inline-block;
  margin-top: 6px;
}

/* ===========================================================================
   U5. Hlavicka objednavky, tmave zeleny a uzsi pas
   Pridano 30. 8. 2026, Marek: "tohle bych predelal do tmave zelene a udelal
   to uzsi at clovek jde hned k objednavce."

   Dnesni pas m149 je vysoky 338 px a nadpis je limetkovy na svetle zelenem
   podkladu, tedy nejvetsi prvek stranky je zaroven nejhur citelny. Na mobilu
   je to cela prvni obrazovka, nez clovek uvidi prvni krok.

   Obsah modulu 149 zkracuje nasazeni/hlavicka-objednavky-zuzit.py: jednoradkovy
   H1, pryc dva prazdne odstavce a ilustrace, misto nich jeden radek s tim,
   co uklidnuje. Tady se resi jen barva a odsazeni.
   =========================================================================== */

body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) {
  background: var(--zs-barva-pozadi-tmave);
}

body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .header-objednavka {
  padding-top: var(--zs-odstup-md);
  padding-bottom: var(--zs-odstup-md);
}

body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h1,
body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h1 strong,
body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h3 {
  color: var(--zs-barva-text-na-tmavem);
}

body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h1 {
  margin: 0;
  padding: 0;
  font-size: 30px;
  line-height: 1.15;
}

body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h3 {
  margin: 6px 0 0;
  font-size: 15px;
  font-weight: 500;
}

/* Radek s duverou. Tlumeny, aby nesoutezil s nadpisem, ale porad citelny:
   na tmave zeleni je to svetly text se sníženou pruhlednosti, ne seda. */
body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .zs26-obj-duvera {
  margin: 10px 0 0;
  color: var(--zs-barva-text-na-tmavem);
  opacity: .78;
  font-size: 13px;
  line-height: 1.5;
}

/* Drobeckova navigace uvnitr pasu se musi obarvit taky, jinak zustane tmava
   na tmavem. Trida je breadcrumbC, ne breadcrumb, a aktualni polozka je holy
   <span> s barvou #1F3F2A, tedy presne tou, kterou ma nove pozadi: bez tohohle
   pravidla slovo "Objednavka" z pasu zmizi. Zmereno 30. 8. 2026.
   Selektor je proto na cely podstrom pasu, ne na jednu tridu. */
body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) a,
body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .breadcrumbC,
body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .breadcrumbC * {
  color: var(--zs-barva-text-na-tmavem);
}

/* Oddelovac a odkaz na titulni stranku jsou vedlejsi, at nesoutezi s nadpisem. */
body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .breadcrumbC {
  opacity: .72;
  font-size: 13px;
}


/* ===========================================================================
   U6. Ikony chodu, srovnani karet a odsazeni mrizky
   Pridano 30. 8. 2026 z Markovych pripominek.

   a) IKONY. Engine kresli ikonu jako background-image z faj1.png a uncheck.png.
      Jsou to rastry, na retine mekke a barvu z tokenu nevezmou. Nahrazuji je
      SVG maskou na ::before: tvar nese maska, barvu background-color, takze
      obe barvy jdou z tokenu a funguji i pri zmene palety. PNG se vypina.
      Maska schvalne nema vlastni barvu, jen bilou v masce, ktera znamena
      "sem malovat".

   b) SROVNANI. Nazev a cena sedely v jednom radku, kdyz se vesly, a lamaly se,
      kdyz ne. "Celodenni 536 Kc" tak bylo na jednom radku a "Celodenni bez
      snidane 458 Kc" na dvou, cimz se levy sloupec rozhodil. Nazev a cena jsou
      proto vzdycky pod sebou. U Menicka jsou nazvy kratke a jednoradkove,
      tam se to nechava vedle sebe.

   c) SEV NA VYBRANE KARTE. .klikblok ma border-right: 0, aby leva a prava
      pulka drzely jako jedna karta, jenze .klikblok.act nastavuje border
      zkratkou a pravy ramecek si tim vratilo. Na vybrane karte tak byla videt
      svisla cara uprostred.

   d) MRIZKA PROGRAMU se dotykala okraju sveho zeleneho podkladu.
   =========================================================================== */

/* a) ikony chodu */
body.zs26-obj #fox2 #nabidka_kodu .chod {
  background-image: none !important;
  position: relative;
}

body.zs26-obj #fox2 #nabidka_kodu .chod::before {
  content: "";
  position: absolute;
  top: 13px;
  left: 50%;
  width: 26px;
  height: 26px;
  transform: translateX(-50%);
  background-color: var(--zs-barva-text-popisek);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.91' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10.09'/%3E%3Cline x1='8.9' y1='8.9' x2='15.1' y2='15.1'/%3E%3Cline x1='15.1' y1='8.9' x2='8.9' y2='15.1'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.91' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10.09'/%3E%3Cline x1='8.9' y1='8.9' x2='15.1' y2='15.1'/%3E%3Cline x1='15.1' y1='8.9' x2='8.9' y2='15.1'/%3E%3C/svg%3E") center / contain no-repeat;
}

body.zs26-obj #fox2 #nabidka_kodu .chod.ok::before {
  background-color: var(--zs-barva-akce-primarni);
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.91' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10.09'/%3E%3Cpolyline points='7.7 12.4 10.6 15.3 16.3 8.9'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.91' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10.09'/%3E%3Cpolyline points='7.7 12.4 10.6 15.3 16.3 8.9'/%3E%3C/svg%3E");
}

/* Popisek pod ikonou: chod, ktery v kombinaci neni, se jen ztlumi.
   Zadne preskrtnuti, to je tvrzeni o tom, co chybi. */
body.zs26-obj #fox2 #nabidka_kodu .chod:not(.ok) {
  color: var(--zs-barva-text-popisek);
  opacity: .7;
}

/* b) nazev a cena vzdycky pod sebou, at je levy sloupec srovnany */
body.zs26-obj:not(.zs26-obj--menicko) #fox2 #nabidka_kodu .klikblok > div {
  flex-direction: column;
  justify-content: center;
}

/* c) vybrana karta nesmi mit pravy ramecek, jinak je uprostred svisla cara */
body.zs26-obj #fox2 #nabidka_kodu .klikblok.act {
  border-right: 0;
}

body.zs26-obj--menicko #fox2 #nabidka_kodu .klikblok.act {
  border-right-width: 2px;
}

/* d) mrizka programu se nesmi dotykat okraju sveho podkladu */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka {
  padding: var(--zs-odstup-sm);
}

/* ===========================================================================
   U7. Souhrn ukazuje jen to, co uz je vybrane
   Pridano 30. 8. 2026, Marek: "tady uz ty polozky asi nedavaji smysl..
   at je to jednoduche."

   Souhrn vypisoval sest radku a u nepribraneho stavu bylo peskrat pod sebou
   "zatim nevybrano". Je to sum, ne informace: clovek na zacatku vi, ze jeste
   nic nevybral. Radky se proto objevuji az ve chvili, kdy maji co rict.
   Poradi zustava, doruceni je prvni.

   Znacku data-zs26-prazdne="1" dava JS uz od zacatku, tady se jen zacina
   pouzivat i na dvojice dt a dd. Nazev se schova pres :has, protoze CSS neumi
   vybrat predchoziho sourozence.
   =========================================================================== */

body.zs26-obj .zs26-obj-souhrn__hodnota[data-zs26-prazdne="1"],
body.zs26-obj .zs26-obj-souhrn__nazev:has(+ .zs26-obj-souhrn__hodnota[data-zs26-prazdne="1"]) {
  display: none;
}

/* Kdyz jeste neni vybrane vubec nic, seznam by byl prazdny a karta by koncila
   nadpisem. Misto sesti "zatim nevybrano" je tam jedna veta. */
body.zs26-obj .zs26-obj-souhrn__radky::after {
  content: "Co vyberete, uvidíte tady.";
  display: none;
  color: var(--zs-barva-text-popisek);
  font-size: 14px;
  line-height: 1.5;
}

body.zs26-obj .zs26-obj-souhrn__radky:not(:has(.zs26-obj-souhrn__hodnota[data-zs26-prazdne="0"]))::after {
  display: block;
}

/* Tataz veta v mutacich (balik 35, R6). Jazyk nese trida na body ze sablony,
   :lang() by nepomohl, html ma lang podle mutace jen nekdy. Tri tridy
   prebiji dve tridy vyse. */
body.zs26-obj.sk-SK .zs26-obj-souhrn__radky::after { content: "Čo vyberiete, uvidíte tu."; }
body.zs26-obj.en-GB .zs26-obj-souhrn__radky::after { content: "What you choose shows up here."; }

/* ===========================================================================
   U8. Menicko: pryc mezikrok s variantou
   Pridano 30. 8. 2026, Marek: "v menu xl u menicka je jen 1 chod, tzn jedno
   jidlo.. neda se rict, ze kazdy chod je xl, takze ten mezikrok bych ubral
   a jen tam mel co je v nabidce."

   Zmereno na testu 30. 8.: MENU nabizi sedm polozek, MENU XL jedinou
   (Jidlo 1, 129 Kc). "Zvolte variantu programu" je tedy u Menicka krok, ktery
   se pta na neco, co neni volba mezi porovnatelnymi moznostmi. JS misto toho
   MENU doklika a vetsi porci nabidne jednim radkem pod seznamem.
   =========================================================================== */

body.zs26-obj--menicko #fox2 #vyber2 {
  display: none;
}

body.zs26-obj #fox2 .zs26-obj-menicko-xl {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--zs-odstup-sm);
  margin: var(--zs-odstup-base) 0 0;
  color: var(--zs-barva-text-tlumeny);
  font-size: 14.5px;
  line-height: 1.5;
}

/* ===========================================================================
   U9. Prazdny validacni box pod seznamem kombinaci
   Pridano 30. 8. 2026.

   Engine drzi pod mrizkou kombinaci div.fpol s hlaskou "Vyberte kombinaci
   chodu.", ktera se rozsviti az pri chybe. Prazdny zabira 57 px, takze mezi
   seznamem a tim, co je pod nim, byla diera bez obsahu. Zmereno 30. 8.

   Schovava se JEN kdyz v nem neni aktivni vystraha. Jakmile ji engine
   rozsviti (trida vystraha), box se vrati i s hlaskou.
   =========================================================================== */

body.zs26-obj #fox2 #vyber3 .fpol:not(:has(.vystraha)) {
  display: none;
}

/* ===========================================================================
   U10. Druhe kolo pripominek, 31. 8. 2026
   =========================================================================== */

/* a) NAJETI MYSI ohranicovalo jen levou pulku karty.
   Kombinace je mrizka o dvou sourozencich, .klikblok a .detaily, a hover byl
   jen na prvnim z nich. Ted se zvyrazni obe pulky, at najedu kamkoli.
   Marek: "kdyz najizdim na ruzne programy, tak se ohranicuje jen cast." */
body.zs26-obj #fox2 #nabidka_kodu .klikblok:not(.act):hover,
body.zs26-obj #fox2 #nabidka_kodu .klikblok:not(.act):hover + .detaily,
body.zs26-obj #fox2 #nabidka_kodu .detaily:hover,
body.zs26-obj #fox2 #nabidka_kodu .klikblok:not(.act):has(+ .detaily:hover) {
  border-color: var(--zs-barva-ramecek-pole);
  background: var(--zs-barva-pozadi-jemne);
}

/* b) DELKA ODBERU: reseno primo v sekci 6e vyse, at se pravidla neprebiji.
   Puvodni pokus pridat konkurencni pravidlo se stejnym ucinkem prohral
   se specificitou (6e ma v selektoru id), takze je pryc. */

/* c) POLE S DATEM. Ikonu kalendare nekresli pozadi inputu (to je none), ale
   sourozenecky <img class="ui-datepicker-trigger">, ktery pridava jQuery UI.
   Bez zasahu se zalomi pod popisek a pole ma padding 28/31/28/70 px, takze je
   vysoke 74 px a pusobi jako prazdna plocha. Ikona jde dovnitr pole a pole
   dostane stejnou vysku jako dlazdice delky. Zmereno 31. 8. 2026. */
body.zs26-obj #fox2 #vyber4 .fpol:has(#datum) {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

body.zs26-obj #fox2 #vyber4 .fpol:has(#datum) > label {
  position: static;
  margin: 0;
  padding: 0;
  background: none;
  font-size: 14px;
  font-weight: 600;
  color: var(--zs-barva-text-tlumeny);
}

body.zs26-obj #fox2 #vyber4 #datum.datepicker.kalendar {
  height: 64px;
  min-height: 64px;
  margin: 0;
  /* engine sem dava padding 28/31/28/70, coz s vyskou 64 px nejde dohromady */
  padding: 0 var(--zs-odstup-base) 0 46px;
  cursor: pointer;
}

/* jQuery UI vklada za input vlastni <img class="ui-datepicker-trigger">
   a pozicuje si ho po svem, takze skoncil nad polem misto v nem. Nema smysl
   s tim zapasit: obrazek se schova a ikona se kresli na obalu jako maska,
   aby jeji barva sla z tokenu. Klik na pole datepicker stejne otevira,
   input je readonly. */
body.zs26-obj #fox2 #vyber4 .fpol .ui-datepicker-trigger {
  display: none;
}

body.zs26-obj #fox2 #vyber4 .fpol:has(#datum)::before {
  content: "";
  position: absolute;
  left: 15px;
  /* .fpol ma dole padding 20 px a pole je 64 px vysoke, takze stred pole je
     52 px nad spodni hranou obalu. Ikona ma 24 px, tedy bottom 40 px.
     Zmereno 31. 8. 2026. */
  bottom: 40px;
  width: 24px;
  height: 24px;
  background-color: var(--zs-barva-text-tlumeny);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.91' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.9' y='4.3' width='18.2' height='16.8' rx='2'/%3E%3Cline x1='2.9' y1='9.1' x2='21.1' y2='9.1'/%3E%3Cline x1='7.7' y1='1.9' x2='7.7' y2='6.2'/%3E%3Cline x1='16.3' y1='1.9' x2='16.3' y2='6.2'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.91' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.9' y='4.3' width='18.2' height='16.8' rx='2'/%3E%3Cline x1='2.9' y1='9.1' x2='21.1' y2='9.1'/%3E%3Cline x1='7.7' y1='1.9' x2='7.7' y2='6.2'/%3E%3Cline x1='16.3' y1='1.9' x2='16.3' y2='6.2'/%3E%3C/svg%3E") center / contain no-repeat;
  pointer-events: none;
}

/* d) KROK 3 dychal spatne: ctyri prazdne <hr> po 24 px, prazdny validacni box
   a tlacitko vycentrovane uprostred bileho mista, takze nebylo tam, kde ho
   clovek ceka. Marek: "spatne se tam hraje s prostorem.. to tlacitko neni kde
   by ho clovek ocekaval." Prazdne oddelovace mizi, akce se sjednoti do jednoho
   pasu zarovnaneho s formularem a vysvetlujici veta jde pod tlacitko. */
body.zs26-obj #fox2 hr + hr,
body.zs26-obj #fox2 hr:first-child,
body.zs26-obj #fox2 hr:last-child {
  display: none;
}

body.zs26-obj #fox2 .fpol:not(:has(.vystraha)):not(:has(input)):not(:has(select)):not(:has(textarea)):empty {
  display: none;
}

body.zs26-obj #fox2 .odesilani {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--zs-odstup-sm);
  margin-top: var(--zs-odstup-base);
}

body.zs26-obj #fox2 .odesilani .button_hlavni {
  min-height: var(--zs-vyska-tlacitko);
  margin: 0;
  padding: 0 var(--zs-odstup-xl);
}

body.zs26-obj #fox2 .odesilani p {
  max-width: 68ch;
  margin: 0;
  padding: 0;
  text-align: left;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--zs-barva-text-tlumeny);
}

/* Na mobilu je hlavni akce na celou sirku, jak je u pokladen zvykem. */
@media (max-width: 700px) {
  body.zs26-obj #fox2 .odesilani .button_hlavni {
    width: 100%;
  }
}

/* Celkova castka v souhrnu: popisek nad cislem, at je jasne, co to je. */
body.zs26-obj .zs26-obj-souhrn__celkem {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

body.zs26-obj .zs26-obj-souhrn__celkem-popis {
  font-size: 14px;
  font-weight: 600;
  color: var(--zs-barva-text-tlumeny);
}

body.zs26-obj .zs26-obj-souhrn__celkem-castka {
  font-size: 20px;
  font-weight: 700;
  color: var(--zs-barva-text-nadpis);
}

/* ===========================================================================
   U12. Mobilni optimalizace, 31. 8. 2026
   Markovy nalezy ze screenshotu na 390 px plus kriticke UX review proti
   konkurenci (Factor, PrepKitchen, NutritionPro, vystup 31 kap. 4, 5, 8).
   Cely blok je aditivni a vyjmutelny vcelku, parove zmeny v JS viz VRACENI.md
   (scroll na zahlavi kroku, radek dopravy, data-zs26-ma-datum, pomoc-radek).
   =========================================================================== */

/* a) Delky a datum jako jedna rodina tlacitek. Marek: "tlacitka jsou ruzne
   vysoka.. nejde poznat ze to je tlacitko". Hover je stejny jako u kombinaci
   chodu (blok U10a), vyska 64 px uz sedi z 6e a z bloku c) vyse. */
body.zs26-obj #fox2 #nabidkaDnyDelka .jidelnicek {
  cursor: pointer;
}

body.zs26-obj #fox2 #nabidkaDnyDelka .jidelnicek:not(.act):hover {
  border-color: var(--zs-barva-ramecek-pole);
  background: var(--zs-barva-pozadi-jemne);
}

body.zs26-obj #fox2 #vyber4 #datum.datepicker.kalendar {
  background: var(--zs-barva-pozadi-karta);
  border: 1px solid var(--zs-barva-ramecek-karta);
  border-radius: var(--zs-radius-male);
  font-size: 15.5px;
  font-weight: 700;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj #fox2 #vyber4 #datum.datepicker.kalendar:hover {
  border-color: var(--zs-barva-ramecek-pole);
  background: var(--zs-barva-pozadi-jemne);
}

/* Vyplnene datum vypada jako vybrana karta. Atribut dava souhrn() v JS,
   input je readonly bez placeholderu, takze :placeholder-shown nejde. */
body.zs26-obj[data-zs26-ma-datum="1"] #fox2 #vyber4 #datum.datepicker.kalendar {
  background: var(--zs-barva-akcent-limetka-plo);
  border: 2px solid var(--zs-barva-ramecek-doporucena);
}

/* b) Radek ikon chodu bez jedine fajfky se schova. U Menicka se vykreslovalo
   pet kryzku a rozhrani tvrdilo, ze si clovek kupuje prazdnou krabicku
   (31 Objednavka menicka, kap. 5). Rada nema co rict, tak nerika nic. */
body.zs26-obj #fox2 #nabidka_kodu .chody:not(:has(.chod.ok)) {
  display: none;
}

/* c) Karta Muj vyber je odkaz jinam, ne volba v mrizce. Bez kolecka vypadala
   jako rozbita radio karta (Markuv screenshot). Misto prazdneho rohu sipka,
   ktera rika "tudy se odchazi". */
body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-vyber {
  position: relative;
}

body.zs26-obj #fox2 #vyber1 .cenik_nabidka .zs26-obj-karta-vyber::before {
  content: "";
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 3;
  width: 20px;
  height: 20px;
  background-color: var(--zs-barva-text-tlumeny);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.91' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 5 16 12 9 19'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.91' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 5 16 12 9 19'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* d) Scroll pri prepnuti kroku miri na zahlavi, tohle je jeho odstup od
   horni hrany viewportu. */
body.zs26-obj .zs26-obj-zahlavi {
  scroll-margin-top: var(--zs-odstup-base);
}

/* e) Kontaktni radek pod formularem zije jen na mobilu, na desktopu nese
   pomoc postranni souhrn. Stavi ho postavAkce(). */
body.zs26-obj .zs26-obj-pomoc-radek {
  display: none;
}

/* PRIDANO 1. 9. 2026. Odkaz "napiste nam" v mobilnim radku pomoci.
   Je to <button>, ne <a>, protoze nikam nevede, otevira popup. Vypada ale
   jako odkaz, aby radek zustal radkem a neroztahl se na dalsi tlacitko.
   Sablona ma globalni pravidlo na button (pozadi, ramecek, stin), proto
   !important, stejna past jako u chipu filtru. */
body.zs26-obj .zs26-obj-pomoc-radek__napiste {
  padding: 0 !important;
  min-height: 0;
  background: none !important;
  border: 0 !important;
  box-shadow: none !important;
  font-family: var(--zs-pismo) !important;
  font-size: inherit !important;
  font-weight: 700;
  line-height: inherit;
  color: var(--zs-barva-text-odkaz);
  text-decoration: underline;
  cursor: pointer;
}

body.zs26-obj .zs26-obj-pomoc-radek__napiste:focus-visible {
  outline: 2px solid var(--zs-barva-stav-fokus);
  outline-offset: 2px;
}

/* Tlacitko "Napiste nam" ve treti odrazce panelu pomoci (desktop).
   Sirka podle obsahu, ne pres cely sloupec: odrazka je polozka seznamu,
   ne karta, a plna sirka by z ni delala hlavni akci sloupce. */
body.zs26-obj .zs26-obj-pomoc__akce {
  display: inline-flex;
  align-self: flex-start;
  margin: var(--zs-odstup-sm) 0;
  min-height: var(--zs-vyska-tlacitko-male);
  padding: 0 var(--zs-odstup-base) !important;
  font-size: 15px !important;
  background: var(--zs-barva-pozadi-karta) !important;
  /* ZTLUMENO 1. 9. 2026, Marek: "tlacitko je btw moc vyrazne, udelal bych ho
     mene agresivni". Rameček ze 2 px tmave zelene na 1 px barvy ramecku karty
     a text z 600 na 500. Porad je to tlacitko (pravidlo "akce musi vypadat
     jako tlacitko"), jen uz nekriči vedle Pokracovat. */
  border-width: 1px !important;
  border-color: var(--zs-barva-ramecek-karta) !important;
  font-weight: 500;
  color: var(--zs-barva-text-nadpis);
}

body.zs26-obj .zs26-obj-pomoc__akce:hover {
  border-color: var(--zs-barva-akce-sekundarni-ramecek) !important;
  background: var(--zs-barva-akce-sekundarni-hover) !important;
}

/* Veta pod nadpisem treti odrazky ma stejny odstup jako u prvnich dvou. */
body.zs26-obj .zs26-obj-souhrn__kontakt .zs26-obj-pomoc__popis {
  margin: 2px 0 0 0;
}

@media (max-width: 700px) {

  /* Chipy filtru lepily na hranu displeje: puvodni zaporny margin pocital
     s tim, ze sloupec ma padding presne --zs-odstup-base, jenze na mobilu
     se karta rozpousti a skutecny okraj je jiny. Chip se proto zarovnava
     s obsahem a posuvny pas zustava posuvny. */
  body.zs26-obj .zs26-obj-filtr__pas {
    margin: 0;
    padding: 0;
  }

  /* Hierarchie kroku 1: zahlavi kroku (22 px) je jedno, otazky bloku enginu
     jsou o patro niz. Do ted mely stejnou velikost jako zahlavi a nahore
     stalo nekolik nadpisu stejne vahy (Marek: "nevim co cist prvni"). */
  body.zs26-obj #fox2 > #vyber1 > h2,
  body.zs26-obj #fox2 > #vyber2 > h2,
  body.zs26-obj #fox2 > #vyber3 > h2,
  body.zs26-obj #fox2 > #vyber4 > h2,
  body.zs26-obj #fox2 > #vyber7 > h2 {
    font-size: 18px;
  }

  /* PSC a prihlaseni: dve odbocky pred hlavni volbou se ztlumi na drobny
     text, at nesoutezi s vyberem programu (UX review bod 7). */
  body.zs26-obj .zs26-obj-psc__prepinac {
    font-size: 13.5px;
  }

  body.zs26-obj .zs26-obj-prihlaseni {
    font-size: 13.5px;
    margin-top: var(--zs-odstup-xs);
  }

  /* Souhrn se na mobilu neukazuje v toku, otevre ho detail ze sticky listy
     (rozhodnuti Marek 31. 8.). Na prazdnem kroku 1 zabiral celou obrazovku. */
  body.zs26-obj .zs26-obj-rozvrzeni > .zs26-obj-souhrn {
    display: none;
  }

  body.zs26-obj .zs26-obj-pomoc-radek {
    display: block;
    margin: var(--zs-odstup-base) 0 0;
    font-size: 14px;
    color: var(--zs-barva-text-popisek);
  }

  body.zs26-obj .zs26-obj-pomoc-radek__telefon {
    color: var(--zs-barva-text-odkaz);
    font-weight: 600;
    text-decoration: none;
  }

  /* Kombinace chodu: radek peti chodu pretekal pres ramecek karty
     (Markuv screenshot). Spodni pulka dostava zamek na sirku a chody
     se zkracuji, ikona jde z 26 na 22 px. */
  body.zs26-obj #fox2 #nabidka_kodu .detaily {
    min-width: 0;
    overflow: hidden;
    padding-left: var(--zs-odstup-sm);
    padding-right: var(--zs-odstup-sm);
  }

  body.zs26-obj #fox2 #nabidka_kodu .chody {
    min-width: 0;
  }

  body.zs26-obj #fox2 #nabidka_kodu .chod {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    padding: 30px 0 4px !important;
    font-size: 11px !important;
  }

  body.zs26-obj #fox2 #nabidka_kodu .chod::before {
    top: 7px;
    width: 22px;
    height: 22px;
  }

}

/* ===========================================================================
   U13. Pole kontaktniho kroku, 31. 8. 2026
   VEDOMA VYJIMKA ze zasady "do poli a tlacitek enginu nesaham vubec"
   (hlavicka souboru, bod 8). Duvod: content2024.css:1001 dava kazdemu inputu
   padding 28/31 s !important, takze pole vychazi kolem 108 px a kontaktni
   krok mel na 390 px pres tri obrazovky (Markuv screenshot 31. 8.).
   Sahame JEN na CSS box (padding, vyska, popisek), nikdy na name, value,
   id ani handlery enginu. Mezi !important pravidly rozhoduje specificita
   a tahle (2 id + tridy) je vyssi nez elementovy selektor enginu.
   Vyjimky v selektoru: checkbox a radio kresli .ch_box, .skrytyinput a
   #checkZak jsou neviditelne pasti na roboty a nesmi dostat rozmer,
   .latlon plni mapa. Pole bez id (poznamka, jak_zjistil) pokryva elementovy
   selektor uvnitr .fpol.
   Popisek: content2024.css:1023 ho pozicuje absolutne (top -1, left 23),
   left 23 odpovidalo paddingu 31, k paddingu 16 patri left 12.
   PUVODNE jen pod 700 px; 31. 8. odpoledne Marek poslal tentyz nalez
   z desktopu ("moc velke ty policka"), takze pravidla plati na vsech
   sirkach a media query kolem nich zmizel.
   =========================================================================== */

body.zs26-obj #fox2 #vyber7 .fpol input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not(.skrytyinput):not(.latlon):not(#checkZak),
body.zs26-obj #fox2 #fakturacni .fpol input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not(.skrytyinput),
body.zs26-obj #fox2 #vyber7 .fpol textarea {
  padding: 14px 16px !important;
  line-height: 20px !important;
  min-height: 48px;
}

body.zs26-obj #fox2 #vyber7 .fpol select,
body.zs26-obj #fox2 #fakturacni .fpol select {
  height: 48px;
}

body.zs26-obj #fox2 #vyber7 .fpol > label,
body.zs26-obj #fox2 #fakturacni .fpol > label {
  left: 12px;
  font-size: 13px;
}

/* ===========================================================================
   U14. Sticky lista s mini krokovnikem a detail objednavky, 31. 8. 2026
   Rozhodnuti Marek (varianta A): lista na mobilu nese fazi (mini krokovnik,
   klikaci zpet na hotove kroky), tlacitko Objednavka (detail = vysouvaci
   panel souhrnu) a jedno Pokracovat. Samostatne Zpet a cena z listy mizi:
   cenu nema v liste ani jeden z deviti merenych webu (mereni 29. 8.,
   Calendar/Denni/2026-08-29.md), zpetny pohyb nese krokovnik.
   Parove JS: postavAkce(), srovnejKrokovnik(), prepniSouhrn().
   =========================================================================== */

/* Mini krokovnik a detail jsou jen mobilni, desktop ma horni krokovnik
   a souhrn v pravem sloupci. */
body.zs26-obj .zs26-obj-akce__kroky,
body.zs26-obj .zs26-obj-akce__detail,
body.zs26-obj .zs26-obj-souhrn__zavrit {
  display: none;
}

/* Cena v liste neni (rozhodnuti 31. 8.). Spany zustavaji v DOMu plnene
   souhrnem, kdyby se rozhodnuti otocilo, smaze se tenhle blok. */
body.zs26-obj .zs26-obj-akce__cena,
body.zs26-obj .zs26-obj-akce__cena-popis {
  display: none;
}

/* Neaktivni CTA: Factor i PrepKitchen maji Continue ztlumene, dokud krok
   neni vyplneny. Klik zustava funkcni, dalsi() ukaze tichou vetu
   a doscrolluje na nevyplneny blok. */
body.zs26-obj .zs26-obj-akce__dalsi[aria-disabled="true"] {
  opacity: .55;
}

@media (max-width: 700px) {

  /* Horni krokovnik na mobilu mizi, fazi nese lista. Nesmi byt dvakrat. */
  body.zs26-obj .zs26-obj-krokovnik {
    display: none;
  }

  /* Pripona ": od kdy" u Pokracovat se na mobilu skryva, aby tlacitko
     nebylo dvouradkove a lista drzela jednu vysku tlacitek. */
  body.zs26-obj .zs26-obj-akce__krok-detail {
    display: none;
  }

  /* Lista: radek 1 = mini krokovnik vlevo + Objednavka vpravo,
     radek 2 = Pokracovat na celou sirku, radek 3 = hlaska.
     Uzsi svisle odstupy: cil vysky listy je do 100 px (pred prestavbou
     mela 113 px na tri radky obsahu). */
  body.zs26-obj .zs26-obj-akce {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--zs-odstup-xs) var(--zs-odstup-md);
    padding-top: var(--zs-odstup-sm);
    padding-bottom: calc(var(--zs-odstup-sm) + env(safe-area-inset-bottom, 0px));
  }

  body.zs26-obj .zs26-obj-akce__kroky {
    display: flex;
    align-items: center;
    gap: var(--zs-odstup-xs);
    grid-column: 1;
    grid-row: 1;
    margin: 0;
    padding: 0;
    list-style: none;
    min-width: 0;
    overflow: hidden;
  }

  body.zs26-obj .zs26-obj-akce__detail {
    display: inline-flex;
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
  }

  body.zs26-obj .zs26-obj-akce__dalsi {
    grid-column: 1 / -1;
    grid-row: 2;
    margin-left: 0;
    justify-self: stretch;
  }

  /* Zpet z mobilni listy mizi, vraci se pres krokovnik (vzor NutritionPro,
     Zpet jako nenapadny prvek, ne tlacitko stejne vahy). Desktop ho ma dal. */
  body.zs26-obj .zs26-obj-akce__zpet {
    display: none;
  }

  body.zs26-obj .zs26-obj-hlaska {
    grid-row: 3;
  }

  /* Vysouvaci panel souhrnu (detail objednavky). Souhrn se neprenasi,
     jen prestylovava. */
  body.zs26-obj--souhrn .zs26-obj-rozvrzeni > .zs26-obj-souhrn {
    display: block;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 82;
    max-height: 80vh;
    overflow-y: auto;
    margin: 0;
    padding: var(--zs-odstup-base);
    padding-bottom: calc(var(--zs-odstup-xl) + env(safe-area-inset-bottom, 0px));
    border-radius: var(--zs-radius-karta) var(--zs-radius-karta) 0 0;
  }

  /* V panelu je zaviraci tlacitko, blok pomoci tam nema co delat,
     na mobilu ho nese radek pod formularem. */
  body.zs26-obj--souhrn .zs26-obj-rozvrzeni > .zs26-obj-souhrn .zs26-obj-pomoc {
    display: none;
  }

  body.zs26-obj--souhrn .zs26-obj-souhrn__zavrit {
    display: inline-flex;
    position: absolute;
    top: var(--zs-odstup-md);
    right: var(--zs-odstup-base);
    padding: var(--zs-odstup-xs) var(--zs-odstup-md);
    background: none;
    border: 0;
    color: var(--zs-barva-text-odkaz);
    font-size: 14.5px;
    font-weight: 600;
    cursor: pointer;
  }

}

/* Vypnuti contain po dobu otevreneho panelu. contain: layout na .obsah_okolo
   dela z uzlu containing block pro fixed, panel by bez toho spadl mimo
   obrazovku (stejna past jako u dialogu Zavolame vam). Zaviraci tlacitko
   se kotvi primo na fixed panel, zadna dalsi kotva neni potreba. */
body.zs26-obj--souhrn .obsah_okolo {
  contain: none;
}

/* ===========================================================================
   U15. Doladeni po rozdeleni kroku, 31. 8. 2026
   =========================================================================== */

/* Nadpis enginu "1.Vyberte si program" rika totez co zahlavi kroku 1
   ("Vyberte si program" z KROKY). Dvakrat tatez veta pod sebou, nadpis
   enginu jde pryc. Kdyby se nazev kroku nekdy zmenil, vratit. */
body.zs26-obj #fox2 > #vyber1 > h2 {
  display: none;
}

/* Hlavicka objednavky na mobilu jeste tesneji: H1 je po zkraceni modulu 149
   jedno slovo, pas se vejde pod 200 px (vystup 31, kap. 5). */
@media (max-width: 700px) {
  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h1 {
    font-size: 26px;
  }

  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .header-objednavka {
    padding-top: var(--zs-odstup-sm);
    padding-bottom: var(--zs-odstup-sm);
  }
}

/* Menicko: odkaz na denni nabidku (viz UKLID.menicko a zs26-online vrstva). */
body.zs26-obj #fox2 .zs26-obj-menicko-online {
  margin: var(--zs-odstup-base) 0 0;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--zs-barva-text-tlumeny);
}

body.zs26-obj #fox2 .zs26-obj-menicko-online__odkaz {
  color: var(--zs-barva-text-odkaz);
  font-weight: 600;
}

/* ===========================================================================
   U16. Menicko jde rovnou do denni nabidky, 31. 8. 2026 (Marek: "at si to
   muzu rovnou naklikat"). Enginova dlazdice typ=78 se schova a JS na jeji
   misto vklada odkazovou kartu (postavKartuMenicko). Vraceni: smazat blok
   a funkci, dlazdice enginu se zase ukaze.
   =========================================================================== */
/* 2. 9. 2026 (balik 35): jen pod tridou, kterou JS nastavi, kdyz denni
   nabidka v jazyku existuje (cs, sk). V EN /objednat-online neni, dlazdice
   enginu zustava a vede do fox2 jako dnes. */
body.zs26-obj.zs26-obj--menicko-online #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek_ic.jidelnicek78) {
  display: none;
}

/* Tlacitko na denni nabidku v kroku Jidlo (deep linky ?typ=78). */
body.zs26-obj #fox2 .zs26-obj-menicko-online {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--zs-odstup-sm);
}

body.zs26-obj #fox2 .zs26-obj-menicko-online__text {
  margin: 0;
}

body.zs26-obj #fox2 .zs26-obj-menicko-online__akce {
  text-decoration: none;
}

@media (max-width: 700px) {
  body.zs26-obj #fox2 .zs26-obj-menicko-online__akce {
    width: 100%;
    justify-content: center;
    text-align: center;
  }
}

/* Karta Menicka sdili vzhled karty Muj vyber, ale NE jeji order: 1
   (ten posila Muj vyber na konec mrizky). Menicko zustava na svem miste
   v poradi enginu, tedy v DOM poradi. */
body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-menicko {
  order: 0;
}

/* ===========================================================================
   U17. Krok 4: pole ve dvou sloupcich, rozvozova veta u Odeslat, 31. 8. 2026
   Markova zpetna vazba z desktopu: "moc velke ty policka, takze to posledni
   je hodne dlouhe a zaroven nevyuzivame celou sirku" a veta o mistech
   a casech rozvozu "muze byt klidne jinde".
   Zmensena pole resi U13 (nove plati na vsech sirkach). Tady:
   1. #vyber7 > .sloupce2 se sklada pod sebe: engine mel sloupce 47 % + zbytek,
      jenze druhy sloupec je u kontaktu prazdny div a u adresy jen mapa,
      takze polovina sirky lezela ladem. Pole uvnitr prvniho divu jdou do dvou
      sloupcu, krok je o polovinu kratsi a sirka se vyuzije cela.
   2. Enginovy odstavec o rozvozu ve sloupci mapy se schovava, JS vklada
      zkracenou vetu k tlacitku Odeslat (UKLID.rozvozPozn), kde uz engine
      pribuznou vetu o potvrzeni objednavky ma.
   3. Mapa (kruh .mapkontakt, max 310 px, template2024.css:1804) zustava,
      po slozeni sloupcu se centruje pod adresou.
   Scope: JEN primi potomci #vyber7. Bloky fakturacni, narozeni a souhlas
   maji vlastni .sloupce2 a jedou po staru.
   =========================================================================== */

body.zs26-obj #fox2 #vyber7 > .sloupce2 {
  grid-template-columns: 100%;
  grid-gap: 0;
}

body.zs26-obj #fox2 #vyber7 > .sloupce2 > div:first-child {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 var(--zs-odstup-base);
  align-items: start;
}

body.zs26-obj #fox2 #vyber7 > .sloupce2 > div:first-child > h3 {
  grid-column: 1 / -1;
}

/* odstup mapy od poli, kdyz uz sloupce nejsou vedle sebe */
body.zs26-obj #fox2 #vyber7 > .sloupce2 > div:has(.objednavka_mapa) {
  margin-top: var(--zs-odstup-md);
}

/* enginovy odstavec o rozvozu: jediny .fpol v mape, ktery nese <p> a zadne
   pole. Schovany tady, obsah zije dal u tlacitka Odeslat. */
body.zs26-obj #fox2 #vyber7 .objednavka_mapa .fpol:has(> p):not(:has(input)) {
  display: none;
}

/* vlastni nahrada u tlacitka Odeslat, drobny text pod enginovou vetou
   o potvrzeni objednavky. Vlevo, ne na stred (Marek 31. 8. vecer, viz U18). */
body.zs26-obj #fox2 .odesilani .zs26-obj-rozvoz-pozn {
  margin: var(--zs-odstup-xs) 0 0;
  max-width: 640px;
  font-size: 14px;
  line-height: 1.5;
  text-align: left;
  color: var(--zs-barva-text-popisek);
}

body.zs26-obj #fox2 .odesilani .zs26-obj-rozvoz-pozn a {
  color: var(--zs-barva-text-odkaz);
  white-space: nowrap;
}

/* pod 700 px se pole vraci do jednoho sloupce, dva by byly moc uzke */
@media (max-width: 700px) {
  body.zs26-obj #fox2 #vyber7 > .sloupce2 > div:first-child {
    grid-template-columns: 100%;
  }
}

/* ===========================================================================
   U18. Krok 4: mene vzduchu, texty u Odeslat vlevo, 31. 8. 2026 vecer
   Marek (ruzove plochy na screenshotech 16:00 az 16:01): "jsou tam strasne
   velke mezery, odsazeni znacne sniz" a "texty pod tim jsou strasne
   zarovnane, dej je vsechny na jednu stranu doleva".
   Zmereno pres cdp 31. 8.: mezery delala mapa .objednavka_mapa (90 az 310 px
   mrtveho mista, Google mapa se nenacita a addressValidationHandler na vetvi
   fox2 stejne rozsvecuje spatny uzel, PRO MOJMIRA bod 4 v JS), hr mezi bloky
   24 px a dva hned po sobe, .odesilani s margin 16 + padding-top 58 px,
   enginovy odstavec s inline padding-top 2em a text-align center
   a .fpol s padding-bottom 20 px.
   =========================================================================== */

/* Mapa: na fox2 nefunkcni dekorace, jen dira mezi PSC a souhlasem.
   Skryte inputy lat/lon zustavaji v DOM i v serializaci formulare. */
body.zs26-obj #fox2 #vyber7 .objednavka_mapa {
  display: none;
}

body.zs26-obj #fox2 #vyber7 > .sloupce2 > div:has(.objednavka_mapa) {
  margin-top: 0;
}

/* Pole: spodni padding .fpol z 20 na 8 px. Horni 15 px zustava, na nem sedi
   absolutne pozicovany popisek v zarezu ramecku. */
body.zs26-obj #fox2 #vyber7 .fpol,
body.zs26-obj #fox2 > .fpol[data-zs26-obrazovka="4"] {
  padding-bottom: 8px;
}

/* Nadpis Dodaci adresa tesneji k polim nad i pod sebou. Enginovy h3 ma box
   90 px (zmereno cdp 31. 8. vecer), vetsinu dela padding, pryc s nim. */
body.zs26-obj #fox2 #vyber7 .sloupce2 h3 {
  margin: 6px 0 4px;
  padding: 0;
  min-height: 0;
  line-height: 1.3;
}

/* Radek s honeypot inputem (past na roboty, .skrytyinput): input je 2 px,
   ale obal .fpol mel 15 + 20 px paddingu, tedy 45 px prazdna. Padding pryc,
   radek zustava v DOM i v serializaci, jen nezabira misto. */
body.zs26-obj #fox2 > .fpol:has(.skrytyinput) {
  padding: 0;
}

/* hr na obrazovce 4: z 24 na 8 px, dva po sobe se nescitaji */
body.zs26-obj #fox2 > hr[data-zs26-obrazovka="4"] {
  height: var(--zs-odstup-sm);
}

body.zs26-obj #fox2 > hr[data-zs26-obrazovka="4"] + hr[data-zs26-obrazovka="4"] {
  height: 0;
}

/* Odesilani: 16 + 58 px shora -> 16, enginovy odstavec vlevo. !important
   prebiji inline style="text-align: center; padding-top: 2em" primo v HTML
   enginu (objednavka-2026-08-21.html:1513). */
body.zs26-obj #fox2 .odesilani {
  margin-top: 0;
  padding-top: var(--zs-odstup-md);
}

body.zs26-obj #fox2 .odesilani p {
  text-align: left !important;
  padding-top: var(--zs-odstup-sm) !important;
  margin: 0;
  max-width: 640px;
}

/* ===========================================================================
   U19. Barvy kontaktu, poradi dlazdic podle prodeju, vetsi ikony, 31. 8. vecer
   Tri Markovy pripomínky z 16:18 az 16:19.
   =========================================================================== */

/* 1. Barvy kontaktu v panelu: "at je to barvou stejne ten text zavolejte nam
   a cislo udelej jinou barvou". Nadpis "Zavolejte nam" ma tedy stejnou
   zelenou jako nazvy odkazu nad nim a cislo jde do tmave. Pozdejsi pozice
   v souboru prebiji puvodni barvy u definic vyse. */
body.zs26-obj .zs26-obj-souhrn__kontakt-nadpis {
  color: var(--zs-barva-text-odkaz);
}

body.zs26-obj .zs26-obj-souhrn__telefon {
  color: var(--zs-barva-text-nadpis);
}

/* 2. Poradi dlazdic podle toho, co se nejvic nakupuje.
   Zdroj: Atlas/Knowledge/Rozlozeni programu a delka odberu.md, programy CR
   2025, n = 51 085 (dopocet z analyzy Proficia, overeno): PRO ZDRAVI 19 231,
   PROTEIN+ 8 450, FIT+ 7 505, MENICKO 4 063, BEZ MASA (dnes Vegetarian)
   3 238, KETO 2 089, PRO MAMY 2 003, KOMBI WEEK 74. Webovy kanal 2026 poradi
   spicky drzi (PRO ZDRAVI 32 %, PROTEIN+ 20,1 % a roste).
   JIME 3x DENNE a RESTART jsou nove bez historie: pred KOMBI WEEK (74
   objednavek za rok je dolozeny propadak), za programy s dolozenym objemem.
   MUJ VYBER je novinka bez historie, zustava predposledni; DOPLNKY nejsou
   program, ale cross-sell, zustavaji uplne posledni (puvodni rozhodnuti
   v sekci s kartou Muj vyber vyse, tady jen dostava vyssi order).
   Vychozi order 55: program, ktery vrstva nezna, se zaradi doprostred,
   ne na zacatek ani konec (stejna filozofie jako KATEGORIE_NEZNAMY).
   Scope na #vyber1: v #nabidkaprogram maji karty taky tridy jidelnicekNN
   (kaloricke rady) a jejich cisla se s typy programu mohou krizit. */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek {
  order: 55;
}

body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek5)   { order: 10; } /* Pro zdraví */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek27)  { order: 15; } /* Protein+ */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek26)  { order: 20; } /* Fit+ */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .zs26-obj-karta-menicko         { order: 25; } /* Meníčko */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek78)  { order: 25; } /* Meníčko, kdyby jelo enginovou dlazdici */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek9)   { order: 30; } /* Vegetarián */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek76)  { order: 35; } /* Keto */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek23)  { order: 40; } /* Pro mámy */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek82)  { order: 45; } /* Jíme 3x denně */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek102) { order: 50; } /* Restart */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek74)  { order: 60; } /* Kombi week */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .zs26-obj-karta-vyber:not(.zs26-obj-karta-menicko) { order: 70; } /* Můj výběr */
body.zs26-obj #fox2 #vyber1 .cenik_nabidka .jidelnicek:has(.jidelnicek77)  { order: 90; } /* Doplňky */

/* 3. Ikony vlastnich karet (Muj vyber, Menicko) na velikost enginu.
   Engine kresli ikony dlazdic jako background 85x85 na desktopu a 55x55
   pod 600 px (template2024.css:676 a 652), nase karty mely 44 a 30 px
   a Marek na to ukazal: "muj vyber a menicko je moc male". 64 px je strop,
   pri kterem se karta se stitkem a nazvem vejde do 110 px vysky dlazdice. */
body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-vyber {
  padding: 20px 8px 6px;
  gap: 2px;
}

body.zs26-obj .zs26-obj-karta-vyber__ikona {
  width: 76px;
  height: 60px;
}

@media (max-width: 600px) {
  body.zs26-obj #fox2 .cenik_nabidka .zs26-obj-karta-vyber {
    min-height: 80px;
    padding: 12px 4px 4px;
    gap: 2px;
  }

  body.zs26-obj .zs26-obj-karta-vyber__ikona {
    width: 52px;
    height: 42px;
  }
}


/* ===========================================================================
   U20. Uklid kroku 4, 1. 9. 2026
   Marek ke snimku zaverecneho kroku: "zajem o baleni do lepsich tasek muzeme
   zrusit, jak jste se o nas dozvedeli take... vzdy by mela byt viditelna
   zadat slevovy kod a vzdy musi byt viditelny souhlas s obchodnimi
   podminkami. A to rict cokoliv predem bych dal na rozklik ve smyslu vlozit
   poznamku." Tim pada cele tlacitko "Dalsi moznosti" (byvala sekce 9).

   ZMERENO 1. 9. 2026 na webvyvoj2 pres cdp v cerstvem profilu, NE z ulozeneho
   objednavka-2026-08-21.html. Rozdil je podstatny: vsechny tyhle bloky jsou
   PRIMI POTOMCI form#fox2, ne potomci #vyber7. #vyber7 drzi jen kontakt
   a dodaci adresu, tedy tri uzly. Proto je scope "#fox2 > " a proto se sem
   nepletou pravidla U17, ktera miri na "#vyber7 > .sloupce2".

   Namerena struktura .sloupce2 se souhlasem (primy potomek #fox2):
     > div:nth-child(1)   p (tasky) + div (souhlas)
     > div:nth-child(2)   div.fpol (jak_zjistil + jak_zjistil_jinak)
                          + div (p se spoustecem + div#bonuskod.skryte)

   Skryva se pres display:none na obalu, uzly zustavaji v DOMu a serializuji
   se dal, takze odeslani objednavky se nemeni ani o bit. Vypinac je
   window.ZS26_OBJ.dieta, ktery nasadi tridu zs26-obj--uklid4.

   ODCHYLKA OD FIGMY 18, vedoma a odsouhlasena Markem 1. 9. 2026: Figma ma
   u tohoto mista "Jen kdyz potrebujete: + Firemni udaje a fakturace,
   + Bonusovy kod, + Vzkaz pro kuchyni nebo ridice". Bonusovy kod je tady
   natrvalo odkryty. Druha odchylka: datum narozeni Figma nechava, tady mizi.
   NEOPRAVOVAT zpatky podle Figmy.

   .skryte je v template2024.css:1861 a :2036 jako { display: none } s jednou
   tridou a BEZ !important, takze selektor se dvema id vyhrava bez triku.
   =========================================================================== */

/* 1. Papirove tasky pryc. Vyjimka data-zs26-tasky-drzet nastavuje JS, kdyz
      uz je policko v session zaskrtnute: skryty zaskrtnuty upsell za
      +5 Kc/den by byl presne ten druh nepoctivosti, ktery vrstva odstranuje. */
body.zs26-obj--uklid4 #fox2 > .sloupce2 p:has(#papirove_tasky):not([data-zs26-tasky-drzet]) {
  display: none;
}

/* 2. "Jak jste se o nas dozvedeli" pryc i s polem jak_zjistil_jinak, ktere
      lezi ve stejnem .fpol. Otazka se presouva na dekovnou stranku, aby se
      neztratila atribuce offline kanalu (radio, tisk, letak, billboard,
      televize, doporuceni), kterou GA4 nevidi. */
body.zs26-obj--uklid4 #fox2 > .sloupce2 .fpol:has(> select[name="jak_zjistil"]) {
  display: none;
}

/* 3. Datum narozeni pryc i s odkazem "Proc chceme znat toto datum?".
      Podle napovedy enginu je povinne jen pri platbe fakturou se splatnosti,
      takze v checkoutu stoji za viditelnou prekazku pro vsechny ostatni.
      U platby fakturou se na nej dopta operatorka. */
body.zs26-obj--uklid4 #fox2 > .sloupce2:has(#datumNarozeni) {
  display: none;
}

/* 4. Bonusovy kod vzdy videt: spoustec pryc, panel odkryt.
      Vazbu na ajax drzi engine pres class="muj_ajax_json_request" a atribut
      event="change", ktere engine cte pri nacteni. Odkryti pres CSS na ni
      nesaha, pole dal hlasi kod na server jako dnes. */
body.zs26-obj--uklid4 #fox2 > .sloupce2 p:has(> .class_toggle[rel="bonuskod"]) {
  display: none;
}

body.zs26-obj--uklid4 #fox2 > .sloupce2 #bonuskod.skryte {
  display: block;
}

/* 5. Souhlas na plnou sirku a az za bonusovy kod, tedy primo nad tlacitko odeslani.
      Resi to grid a order, ne prehazeni uzlu: uzly enginu vrstva nepresouva.
      Engine ma na tomhle .sloupce2 47% + auto, po uklidu by v levem sloupci
      zbyl samotny souhlas a v pravem samotny bonusovy kod, tedy dva uzke
      sloupce s jednou veci kazdy. */
body.zs26-obj--uklid4 #fox2 > .sloupce2:has(#souhlas) {
  grid-template-columns: 100%;
  grid-gap: 0;
}

body.zs26-obj--uklid4 #fox2 > .sloupce2:has(#souhlas) > div:first-child {
  order: 2;
  padding-top: var(--zs-odstup-md);
}

/* 6. Poznamka na vlastni rozklik. Textarea je skryta, dokud clovek neklikne na
      tlacitko v h3 enginu. Puvodni text nadpisu drzi span, ktery se jen
      schova, takze odebranim tridy zs26-obj--uklid4 se krok vrati do dnesni
      podoby bez znovunacteni stranky. */
body.zs26-obj--uklid4 #fox2 > .fpol[data-zs26-poznamka] {
  display: none;
}

body.zs26-obj--uklid4.zs26-obj--poznamka #fox2 > .fpol[data-zs26-poznamka] {
  display: block;
  margin-top: var(--zs-odstup-sm);
}

body.zs26-obj--uklid4 .zs26-obj-poznamka-nadpis {
  display: none;
}

body.zs26-obj:not(.zs26-obj--uklid4) .zs26-obj-poznamka-spust {
  display: none;
}

/* Textove tlacitko uvnitr h3. Je to <button>, takze na nej sedi
   content2024.css:1015 s padding 21px 25px !important a border 0 !important.
   Odtud ty !important, jinak by z nej byl zeleny obdelnik se 42 px paddingu.
   Font-weight a velikost se berou z h3, proto se tu neprepisuji. */
body.zs26-obj .zs26-obj-poznamka-spust {
  display: inline-flex;
  align-items: center;
  gap: var(--zs-odstup-xs);
  min-height: auto;
  margin: 0;
  padding: 0 !important;
  background: transparent;
  border: 0 !important;
  color: var(--zs-barva-text-odkaz);
  font-family: var(--zs-pismo) !important;
  font-size: 15.5px !important;
  font-weight: 600;
  line-height: 1.3;
  cursor: pointer;
  box-shadow: none !important;
}

body.zs26-obj .zs26-obj-poznamka-spust::before {
  content: "+";
  font-weight: 700;
}

body.zs26-obj--poznamka .zs26-obj-poznamka-spust::before {
  content: "\2212";
}

body.zs26-obj .zs26-obj-poznamka-spust:hover {
  text-decoration: underline;
}

body.zs26-obj .zs26-obj-poznamka-spust:focus-visible {
  outline: 2px solid var(--zs-barva-stav-fokus);
  outline-offset: 2px;
}

/* 7. Rozmery pole bonusoveho kodu a poznamky.
      ZMERENO 1. 9. 2026: #bonus_kod mel padding 28/31 a vysku 74 px, zatimco
      sousedni PSC melo 50 px. Duvod: U13 (zmenseni poli) je scopnute na
      #vyber7 a #fakturacni, jenze #bonuskod ani poznamka pod ne nespadaji,
      jsou to primi potomci #fox2. Dokud oboji viselo pod "Dalsimi moznostmi",
      nebylo to videt. Ted je bonusovy kod trvale odkryty, takze by vedle
      ostatnich poli vypadal jako chyba. Hodnoty jsou schvalne TOTOZNE s U13,
      at se pole nerozjedou, az nekdo sahne na jedno z nich. */
body.zs26-obj--uklid4 #fox2 > .sloupce2 #bonuskod .fpol input[type="text"],
body.zs26-obj--uklid4 #fox2 > .fpol[data-zs26-poznamka] textarea {
  padding: 14px 16px !important;
  line-height: 20px !important;
  min-height: 48px;
}

body.zs26-obj--uklid4 #fox2 > .sloupce2 #bonuskod .fpol > label,
body.zs26-obj--uklid4 #fox2 > .fpol[data-zs26-poznamka] > label {
  left: 12px;
  font-size: 13px;
}

/* Kod ma osm az deset znaku, pole pres celou sirku formulare (880 px)
   vypada jako pole na adresu. Strop je odhad podle sirky popisku, ne
   z Figmy: Figma tohle pole odkryte nema, viz odchylka v hlavicce bloku. */
body.zs26-obj--uklid4 #fox2 > .sloupce2 #bonuskod .fpol {
  max-width: 340px;
  padding-bottom: var(--zs-odstup-xs);
}

/* 8. Mrtve misto nad poznamkou. Enginovy h3 ma vlastni box (mereno 90 px
      na jeden radek textu) a U18 ho srovnava jen uvnitr #vyber7. Tenhle h3
      je primy potomek #fox2, takze na nej U18 nedosahne. */
body.zs26-obj--uklid4 #fox2 > h3:has(.zs26-obj-poznamka-spust) {
  margin: 0;
  padding: var(--zs-odstup-xs) 0;
  min-height: 0;
}


/* ===========================================================================
   U21. Rozvrzeni formulare fox1 uvnitr popupu "Zavolame vam", 1. 9. 2026
   (cislo U18 bylo uz obsazene blokem "Krok 4: mene vzduchu" z 31. 8.,
   prejmenovano 1. 9. po upozorneni souběžné session)
   Marek: "ten formular je strasne moc dlouhy... zajima me primarne jmeno,
   prijmeni, email, telefon a pak adresa (staci jeden radek), ale hlavne tam
   musi byt velke pole pro poznamku a musi to fungovat jak na desktopu a na
   mobilu. musi to byt na cele sirce."

   ZMERENO 1. 9. 2026 na nasazene strance, proc byl formular dlouhy a uzky:
   div.sloupce2 ma ze sablony display: grid se DVEMA sloupci (259 + 253 px,
   gap 40). Blok "Komu se mame ozvat?" ma ale jen JEDNO dite, takze druhy
   sloupec zustaval prazdny a tri pole stala pod sebou v polovine sirky.
   Odtud "moc dlouhy" i to nevyuzite misto vpravo.

   Vsechno nize je JEN CSS box. Nic se nepresouva, zadne pole nemizi
   ani nepribyva, name, value ani handlery se nemeni. Selektory jdou pres
   :has() na jmena poli, protoze bloky enginu nemaji vlastni tridy.

   Poradi na obrazovce zustava presne takove, jake ho posila server:
   kontakt, adresa, poznamka, souhlas, odeslani.
   =========================================================================== */

/* Vsechny tri bloky sloupce2 uvnitr dialogu prestavaji byt dvousloupcove.
   Vnitrni mrizky si nize kazdy blok resi sam. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > .sloupce2 {
  display: block !important;
}

/* --- Kontakt: jmeno, telefon, e-mail na jeden radek ---------------------- */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > .sloupce2:has([name="a_jmeno"]) > div {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1.4fr;
  gap: var(--zs-odstup-base);
  align-items: start;
}

/* --- Adresa: ulice, mesto, PSC na jeden radek ---------------------------- */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > .sloupce2:has([name="a_ulice"]) > div:first-child {
  display: grid;
  grid-template-columns: 2fr 1.2fr .8fr;
  gap: var(--zs-odstup-base);
  align-items: start;
}

/* Nadpis bloku adresy je take ditetem te mrizky, patri pres celou sirku. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > .sloupce2:has([name="a_ulice"]) > div:first-child > h3 {
  grid-column: 1 / -1;
}

/* Druhy sloupec adresy je div.objednavka_mapa: mapa (schovana vys pres
   #map1_okolo) a veta o mistech a casech rozvozu. Ve dvousloupcovem
   rozvrzeni plavala vpravo vedle poli, ted je to drobny text pod nimi
   pres celou sirku. Stejny princip jako UKLID.rozvozPozn u fox2. */
/* ZMERENO 1. 9. 2026: sablona dava .objednavka_mapa position: absolute
   a top: -118px, aby se vytahla nahoru do praveho sloupce. Jednosloupcove
   rozvrzeni ji tim polozilo PRES adresni pole (rodic mel vysku 0, protoze
   dite bylo mimo tok). Vraci se do toku, tim se srovna i vyska rodice.
   Stejna rodina pasti jako contain: layout u .obsah_okolo v sekci U10:
   sablona pocita s jinym rozvrzenim, nez ktere kresli vrstva. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .objednavka_mapa {
  position: static !important;
  top: auto !important;
  left: auto !important;
  width: 100%;
  margin: var(--zs-odstup-sm) 0 0 0;
  font-size: 13px;
  line-height: 1.5;
  text-align: left;
  color: var(--zs-barva-text-tlumeny);
}

/* Odstavec uvnitr ma INLINE styl ze sablony
   (text-align: center; max-width: 470px; font-size: 14px; margin: auto),
   proto !important. Vycentrovany blok 470 px uprostred 848 px siroke karty
   se cetl jako samostatne sdeleni, ne jako poznamka pod adresou, a bral
   tri radky misto dvou. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .objednavka_mapa p,
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .objednavka_mapa .fpol {
  max-width: none !important;
  padding: 0 !important;
  margin: 0 !important;
  text-align: left !important;
  font-size: 13px !important;
}

/* --- Poznamka: velke pole pres celou sirku ------------------------------- */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .fpol:has([name="a_poznamka"]) textarea {
  width: 100%;
  min-height: 120px;
  resize: vertical;
}

/* --- Souhlas pres celou sirku, "jak jste se dozvedeli" zustava schovane --- */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > .sloupce2:has([name="a_souhlas"]) > div {
  width: 100%;
}

/* --- Odeslani ------------------------------------------------------------ */
/* ZMERENO 1. 9. 2026: sablona dava .odesilani padding 58 px nahore a 35 dole
   a odstavci pod tlacitkem dalsich 26. Na plne strance to oddeluje odeslani
   od formulare, v dialogu to bylo 119 px prazdna, kvuli kterym tlacitko
   KONTAKTUJTE ME padalo pod hranu okna. Sahame jen na box, ne na tlacitko
   ani na jeho handler. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .odesilani {
  margin-top: var(--zs-odstup-sm);
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  text-align: left;
}

/* Veta pod tlacitkem ("operatorky se s vami spoji...") je text enginu,
   nesahame na jeji zneni, jen na velikost. V puvodni sirce brala tri radky
   patnactkou a delala z konce formulare blok vyssi nez samo tlacitko. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .odesilani p {
  max-width: none !important;
  padding: 0 !important;
  margin: var(--zs-odstup-sm) 0 0 0 !important;
  text-align: left !important;
  font-size: 13px !important;
  line-height: 1.5;
  color: var(--zs-barva-text-tlumeny);
}

/* Oddelovace mezi bloky: sablona jich kresli tri a v uzsim dialogu delaly
   z formulare pas linek. Zustava jen jemna linka se vzduchem. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > hr {
  margin: var(--zs-odstup-sm) 0;
  border: 0;
  border-top: 1px solid var(--zs-barva-ramecek-karta);
}

/* --- Vyska poli. Tataz vedoma vyjimka jako U13 --------------------------- */
/* content2024.css:1001 dava kazdemu inputu padding 28/31 s !important, pole
   pak vychazi kolem 108 px. V dialogu je to jeste horsi nez v kroku 4,
   protoze radek ma tri pole vedle sebe. Sahame JEN na CSS box. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .fpol input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not(.skrytyinput):not(.latlon),
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .fpol textarea {
  width: 100%;
  padding: 14px 16px !important;
  line-height: 20px !important;
  min-height: 48px;
}

body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .fpol > label {
  left: 12px;
  font-size: 13px;
}

/* Sablona dava kazdemu .fpol padding 15 nahore a 20 dole, tedy 35 px na pole
   navic k padesati. Na mobilu, kde sest poli stoji pod sebou, to je 210 px
   sameho vzduchu. Kraci se JEN spodek: horni padding drzi misto pro popisek,
   ktery sedi na hrane pole. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .fpol {
  padding-bottom: 8px !important;
}

/* Nadpisy bloku uvnitr dialogu uz nepotrebuji tolik vzduchu, kdyz je
   formular kratky. Prepisuje to obecne pravidlo z U10. */
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > h3,
body.zs26-obj--zavolame .zs26-obj-dialog #fox1 h3 {
  padding: var(--zs-odstup-sm) 0 var(--zs-odstup-xs) 0;
}

/* --- Mobil: vsechno pod sebe ------------------------------------------- */
@media (max-width: 700px) {

  body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > .sloupce2:has([name="a_jmeno"]) > div,
  body.zs26-obj--zavolame .zs26-obj-dialog #fox1 > .sloupce2:has([name="a_ulice"]) > div:first-child {
    grid-template-columns: 1fr;
    gap: var(--zs-odstup-sm);
  }

  /* Na 390 px je poznamka to jedine, co ma smysl mit vysoke. */
  body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .fpol:has([name="a_poznamka"]) textarea {
    min-height: 100px;
  }

  /* Odeslat pres celou sirku, at je palcem trefitelne. */
  body.zs26-obj--zavolame .zs26-obj-dialog #fox1 .odesilani .button_hlavni {
    width: 100%;
  }
}

/* ===========================================================================
   U22. Hlavicka objednavky na mobilu: vlevo, bez stromecku, 2. 9. 2026
   Marek: "hlavicka, je to takove nepekne zarovnane ... text je jak stromecek
   od nejmensiho radku po nejsirsi."

   Zmereno 2. 9. 2026 na 390 px (Dukazy/hlavicka-mobil-0902/pred-390.png):
   sablona pod 700 px centruje .header-objednavka (template2024.css:1825),
   takze drobecky stoji vlevo a pod nimi tri centrovane radky ruzne sirky.
   K tomu content2024.css:25 zvetsuje <strong> v H1 na 32 px, i kdyz H1 ma
   26, a h3 dedi padding-top 30 px, takze mezi nadpisem a podtitulem je dira.
   Pas mel 265 px.

   Reseni: cela hlavicka na jednu levou osu s drobecky, jako na desktopu,
   strong dedi velikost H1, h3 bez zdedeneho paddingu. Radek s duverou
   (od roku 2008, den predem, telefon) se na mobilu schova: telefon je
   v ikone hlavicky, pod mrizkou programu ("Poradime po telefonu") i v paticce,
   rok 2008 v paticce. Na desktopu zustava, tam je to jeden radek.
   Plati na vsechny tri jazyky (moduly 149 cs, 376 sk, 375 en).
   =========================================================================== */
@media (max-width: 700px) {
  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .header-objednavka,
  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .header-objednavka > div {
    text-align: left;
  }

  /* Drobecky: sablona 23 px nahore i dole, tady tesneji k nadpisu. */
  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .breadcrumbC {
    padding: var(--zs-odstup-base) 0 var(--zs-odstup-md);
  }

  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .header-objednavka {
    padding-top: 0;
    padding-bottom: var(--zs-odstup-lg);
  }

  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h1 {
    font-size: 28px;
    line-height: 1.15;
  }

  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h1 strong {
    font-size: inherit;
    line-height: inherit;
  }

  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) h3 {
    margin: var(--zs-odstup-sm) 0 0;
    padding: 0;
    font-size: 16px;
    line-height: 1.4;
    font-weight: 500;
  }

  body.zs26-obj #obsah .pas:is(.m149, .m375, .m376) .zs26-obj-duvera {
    display: none;
  }
}

/* ===========================================================================
   U23. Kombinace chodu na mobilu: rameček obou pulek karty, 2. 9. 2026
   Marek ze snimku z iPhonu: "spatne ohraniceni bunek, nedokonale."

   Zmereno 2. 9. 2026 na 390 px (computed style .klikblok a .detaily):
   horni pulka mela border-right "0px none", spodni border-left "0px none".
   Desktopove pravidlo pise `border-right: 0` a `border-left: 0`, zkratka
   nuluje i border-style, a mobilni blok pak nastavuje jen `border-*-width`.
   Sirka bez stylu se nevykresli, takze horni pulka byla vpravo bez ramecku
   a spodni vlevo bez ramecku: karta vypadala jako dva ruzne siroke boxy.
   Tady se pise cela zkratka (sirka, styl, barva), ne jen sirka. Barvy jsou
   tytez, ktere karta ma v klidu a ve vybranem stavu na ostatnich stranach.
   =========================================================================== */
@media (max-width: 700px) {
  body.zs26-obj #fox2 #nabidka_kodu .klikblok {
    border-right: 1px solid var(--zs-barva-ramecek-karta);
  }

  body.zs26-obj #fox2 #nabidka_kodu .klikblok.act {
    border-right: 2px solid var(--zs-barva-ramecek-doporucena);
  }

  body.zs26-obj #fox2 #nabidka_kodu .detaily {
    border-left: 1px solid var(--zs-barva-ramecek-karta);
  }

  body.zs26-obj #fox2 #nabidka_kodu .klikblok.act + .detaily {
    border-left: 2px solid var(--zs-barva-ramecek-doporucena);
  }
}

/* Tentyz prazdny validacni box jako v U9, ale pod mrizkou kalorickych rad
   (#vyber2, hlaska "Vyberte kalorickou variantu."). Zmereno 2. 9. 2026 na
   390 px: mezi radami a nadpisem kombinaci bylo 118 px, z toho 57 px tenhle
   box bez textu a 24 px <hr>. Na Markove snimku je to ta prazdna plocha nad
   "Jake si prejete kombinace chodu?". Schovava se jen bez aktivni vystrahy. */
body.zs26-obj #fox2 #vyber2 .fpol:not(:has(.vystraha)) {
  display: none;
}

/* Vlna 27, 11. 9. 2026 vecer (Mojmir: "chybi informace, ze byla poskytnuta
   sleva"). Zakladni cena pred slevou, preskrtnuta, vedle ceny za den v souhrnu.
   Plni ji souhrn() jen se slevou z kosiku enginu, jinak je prazdna a skryta. */
body.zs26-obj .zs26-obj-souhrn__cena-den .zs26-obj-souhrn__puvodni {
  font-size: 15px;
  font-weight: 500;
  color: var(--zs-barva-text-tlumeny);
  text-decoration: line-through;
  white-space: nowrap;
}
body.zs26-obj .zs26-obj-souhrn__cena-den .zs26-obj-souhrn__puvodni:empty {
  display: none;
}
