/* ═══ HISTORIE JE JEDNA — BEZ TŘÍDY hist-radek (4. 9.) ═══════════════
   Do 4. 9. začínalo 336 pravidel selektorem `html.hist-radek`, protože
   verze byly dvě a přepínalo se mezi nimi třídou na <html>. Michaela
   rozhodla, že finální je Radkova, takže třída zmizela — a s ní by
   zmizel i celý vzhled historie, kdyby ta pravidla nedostala jiný
   začátek.

   Je jím `html:root`, ne holý selektor. Důvod je měřitelný: `:root` je
   pseudotřída, takže má stejnou váhu jako třída — každé pravidlo si
   podrží PŘESNĚ tu specificitu, jakou mělo, a nic v kaskádě se
   nepřevrátí. Kdybych `html.hist-radek` jen smazal, stovky pravidel by
   o jednu třídu zlehčely a začaly prohrávat se styles.css, který se
   nesmí měnit.

   Michaelina verze je uschovaná v parked/HISTORIE-MICHAELA/. */

/* ═══════════════════════════════════════════════════════════════════
   KABÁT — jednotný styl přes všechny vrstvy hlavního webu
   Krok 1 (tokeny) a krok 2 (hero + scéna živého provozu za ním).

   Michaela 17. 8.: „máme tam většinu věcí, co chtěl Radek, a i po sobě
   to jde dobře — takže prostě jen na to vytvořit ten kabát a dát všem
   vrstvám jednotný styl."

   JAK TO FUNGUJE. Tenhle soubor se načítá jako POSLEDNÍ, takže přebíjí
   styles.css. Ze `styles.css` se NIC nemaže — kdo chce původní web,
   odebere jeden <link> a je zpátky.

   PROČ TOKENY A NE SELEKTORY. Devadesát procent toho „amatérského"
   dojmu nedělá žádná jednotlivá chyba, ale počet samostatných
   rozhodnutí: 42 stínů, 27 pojmenovaných animací, 21 dob, 19 velikostí
   písma, 15 poloměrů, 6 easingů. Většina z nich jde přes tokeny
   v :root, takže se dají srovnat na jedno místo přepsáním těch tokenů —
   ne přepisováním tří tisíc řádků. To je ten kabát.

   CO TENHLE SOUBOR ZATÍM NEDĚLÁ. Vizuálně sahá jen na hero a na scénu
   živého provozu za ním, protože se propojenost dá posoudit jedině na
   švu mezi dvěma sousedními sekcemi. Zbytek webu dostává jen srovnané
   tokeny — tedy stejné písmo, stíny, poloměry a dobu — ne novou sazbu.
   ═══════════════════════════════════════════════════════════════════ */

:root{
  /* ---------- POHYB: jedna doba, jedna křivka ----------
     Naměřeno na referenci (jobyaviation.com): 0,4 s u 88 prvků
     a cubic-bezier(.33,1,.68,1) u 105 prvků. Nevymyšlené. */
  --doba:400ms;
  --krivka:cubic-bezier(.33,1,.68,1);
  /* Web má vlastní easing na 6 podobách; všechny teď ukazují na jeden. */
  --ease:var(--krivka);

  /* ---------- STÍN: jeden na celý web ----------
     Byly 42. Tenhle je odsycený ekvivalent Shadow Khaki z reference:
     nemá směr, nemá černou, nekřičí. Tokeny stínů, které web používá
     (--e1 až --e3, --shadow, --lift), teď ukazují na tenhle jediný,
     takže se srovnalo 42 rozhodnutí přepsáním pěti řádků. */
  --stin:0 0 40px rgba(168,166,160,.28);
  --e1:var(--stin);
  --e2:var(--stin);
  --e3:var(--stin);
  --shadow:var(--stin);
  --shadow-lg:var(--stin);
  --lift:var(--stin);

  /* ---------- TVARY: dva poloměry ----------
     Bylo 15. Zůstávají dva: 8 px na tlačítka, 16 px na rámy a karty.
     Pilulka (999 px) je pryč — tlačítko je tvar, ne kapsle.
     Velký měkký 160 px platí JEN u výměny baterky, jako jeden
     okamžik navíc; proto vlastní token, ne globální poloměr. */
  --r-tl:8px;
  --r-karta:16px;
  --r-promo:160px;
  --r-xs:8px;
  --r-sm:8px;
  --r-md:16px;
  --r-lg:16px;
  --r-pill:8px;

  /* ---------- MEZERY: jedna stupnice ----------
     8 / 16 / 24 / 32 / 40 / 56 / 80 / 112. Nic mezi tím. */
  --m1:8px;  --m2:16px; --m3:24px; --m4:32px;
  --m5:40px; --m6:56px; --m7:80px; --m8:112px;

  /* ---------- PÍSMO: devět stupňů ----------
     Bylo 19 velikostí. Devět stupňů; h3 je 24 px, ne 28: při 28 px
     narostly karty na prodejní stránce a #why i #economics přestaly
     splňovat pravidlo 2 o 55 px (přejímka to naměřila; bez kabátu
     procházely).

     Displejový je 4,25× větší než
     běžný text (68 px proti 16), tedy dolní hrana rozsahu, který zadání
     dává („čtyřikrát až pětkrát"). Proč ne víc, a je to změřené na
     snímcích: v2 má displejový stupeň 200 px, ale je kolem něj
     postavená. Hero hlavního webu drží nadpis, perex, tlačítko
     i pilulku s výzvou. Při 200 px nadpis vylezl nad lištu, při 80 px
     stlačil perex i tlačítko na pás s flotilou, kde se text ztrácí
     v autech. Při 68 px sedí text na tmavé části záběru, jak byl
     navržený, a stupnice přesto platí.

     Stupeň je omezený i výškou okna, aby se sekce vešla na jednu
     obrazovku (pravidlo 2 z PREDLOHA.md). */
  --fs-display:min(clamp(44px,4.6vw,68px),8vh);
  --fs-h1:min(clamp(36px,4.6vw,64px),8vh);
  --fs-h2:min(clamp(30px,3.6vw,52px),7vh);
  --fs-h3:24px;
  --fs-lead:19px;
  --fs-body:1rem;
  --fs-sm:15px;
  --fs-xs:14px;
  --fs-label:12px;

  /* Druhá šedá: figcaption u vozu měl rgb(154,154,160), tedy 2,68 : 1 na
     bílé. Jde na tu samou, jako má běžný popisek — 4,61 : 1. */
  --muted-2:#6E6E73;
}

/* ═══ TYPOGRAFIE PŘES VŠECHNY VRSTVY ═══════════════════════════════
   Nadpisy nese Panchang v řezu 400 s prostrkáním −0,03 em — jeden řez,
   jedno prostrkání, na celém webu. Verzálkové popisky drží 12 px
   a prostrkání .14 em, jak je má design systém.                    */
h1,h2,h3,.h,.hero h1{
  font-family:'Panchang','PanchangVariable',Georgia,serif;
  font-weight:400;
  letter-spacing:-0.03em;
  line-height:1.05;
  text-wrap:balance}
.hero h1{font-size:var(--fs-display)}
h2,.h{font-size:var(--fs-h2)}
h3{font-size:var(--fs-h3)}
.lead{font-size:var(--fs-lead);line-height:1.3;letter-spacing:-0.19px}
.eyebrow{font-size:var(--fs-label);font-weight:500;letter-spacing:.14em;
  text-transform:uppercase}

/* ═══ CO DO SYSTÉMU NEPATŘÍ ════════════════════════════════════════
   Devět mechanismů na jeden. Zůstává otevírání při rolování (níž);
   ruší se zrno v historii, tep jádra vějíře, drift fotek, kolečko
   u výzvy k rolování a plovoucí tlačítko. Nic z toho se nemaže —
   jen se to tady vypíná.

   Pozor: je to `animation:none`, ne `display:none` — prvky zůstávají
   na místě, jen stojí.                                             */
.hs-chap.on .hs-shot img,
.hs-chap.on .hs-shot:not(.hs-shot--slot) .hs-frame::before,
.fan.full .fcore-pulse,
.hero-scroll .mouse::after{
  animation:none}

/* Plovoucí tlačítko bylo schované od 26. 8., kdy sales nebyla nasazená
   („ruší se plovoucí tlačítko"). 4. 9. platí opak: sales je v náhledu
   a Michaela chce, aby na ni z homepage vedlo víc prokliků. Pilulka
   je proto zpátky — obsluhu má ve script.js od 14. 8. beze změny. */

/* Zbytek seznamu ze zadání: drift a plutí fotek vozu, tep svitu packu,
   přejezd světla po voze a rozkládání podvozku u konfigurátoru.
   Obraz zůstává, jen stojí. */
.veh-img,.veh-battery,.veh-scan::before,.cfg-stage,.veh-3d{
  animation:none}

/* Kresba za uzly vějíře je statická: paprsky se nehýbou a jejich krytí
   drží pod 0,12. Vějíř sám zůstává, jak je (Radek). */
.paprsky,.paprsky::before{animation:none}
.paprsky{opacity:.12}

/* Přejezdy, které se nedají srovnat tokenem, protože mají dobu
   napsanou natvrdo — v hero a v scéně za ním se vypínají a jede jen
   jeden pohyb, ten podle rolování. */
.hero .hp-bg,.hero .hp-man,.hero .liveop-in{
  transition:none}

/* Mřížkové efekty u fotek: rám a obraz stojí, otevírání dělá --p. */
.opgrid img,.opgrid figure{transition:none}

/* ═══ JEDEN POHYB: OTEVŘENÍ V PEVNÉM RÁMU PODLE ROLOVÁNÍ ═══════════
   Ze v2 se sem bere ten jediný mechanismus, který tam zbyl: rám stojí,
   obraz se v něm otevírá, a hodnotu neurčuje čas, ale POLOHA prvku
   v okně (--p, počítá ji krátký zápis v index.html v rAF).

   Amplituda je 1,22 → 1,00 rovnoměrně v obou osách. Nerovnoměrné
   měřítko u reference je kompenzace širokého snímku v užším rámu, ne
   efekt — na fotce, která rámu odpovídá, obraz deformuje. Poloměr se
   u toho srovnává ze 160 px na 16 px.                              */
[data-otevri]{
  --p:0;
  display:block;
  overflow:hidden;
  border-radius:calc(16px + (1 - var(--p)) * 144px);
  box-shadow:var(--stin)}
[data-otevri] > img,[data-otevri] > video,[data-otevri] > picture{
  transform-origin:50% 50%;
  will-change:transform;
  transform:scale(calc(1.22 - var(--p) * 0.22))}

@media(prefers-reduced-motion:reduce){
  [data-otevri]{--p:1 !important}
  [data-otevri] > img,[data-otevri] > video{transform:none}
}

/* ═══ ZÁVOJ V HERU VYCHÁZÍ ZE SLUNCE ═══════════════════════════════
   Michaela: „nebylo by lepší, kdyby ten přechod toho světla vycházel
   z toho slunce, co tam je na tom videu?" — a je to i změřitelné.

   Slunce je v záběru na 67,7 % šířky a 53,7 % výšky a má jas 231 z 255
   proti průměru snímku 76. Jas ve snímku pak klesá se vzdáleností od něj
   pravidelně: 109 do 10 %, 83 do 20 %, 68 do 40 %, 53 do 50 %, 28 do
   70 %.

   Dosavadní závoj byl LINEÁRNÍ přechod pod 97°, tedy úhlopříčně a bez
   vztahu k obrazu — proto působil jako fólie přilepená na fotku. Tenhle
   je radiální se středem ve slunci, takže tma pokračuje ve světle, které
   v záběru opravdu je: nejsvětleji u slunce, nejtmavěji v protilehlém
   rohu. Text stojí vlevo, kde je scéna nejtmavší, takže si polepší.

   21. 8.: střed už není opsané číslo (67,7 % / 53,7 %), ale přímo
   --slunce-x a --slunce-y, tedy TÁŽ změřená poloha slunce, na kterou je
   navázaná i záře .zablesk. Obě kresby tak nemůžou utéct jedna druhé
   a při přeměření slunce se posunou spolu. Rozdíl na obrazovce je
   půl procenta šířky; smysl je, že je to jedna pravda, ne dvě.       */
.hero::before{
  background:radial-gradient(120% 105% at 67.7% 53.7%,
    rgba(19,20,24,0)    0%,
    rgba(19,20,24,.06) 26%,
    rgba(19,20,24,.20) 45%,
    rgba(19,20,24,.38) 65%,
    rgba(19,20,24,.52) 100%);
  -webkit-mask-image:none;mask-image:none}
/* Varianta s videem má vlastní pravidlo se stejnou specificitou a stálo
   níž v styles.css, takže by závoj přebila. Dostává tentýž přechod. */
.hero.hero--video::before{
  background:radial-gradient(120% 105% at 67.7% 53.7%,
    rgba(19,20,24,0)    0%,
    rgba(19,20,24,.06) 26%,
    rgba(19,20,24,.20) 45%,
    rgba(19,20,24,.38) 65%,
    rgba(19,20,24,.52) 100%);
  -webkit-mask-image:none;mask-image:none}

/* Střed závoje na ZMĚŘENÉ poloze slunce, ne na opsaném čísle (21. 8.).
   Do teď tu stálo 67,7 % / 53,7 %, kdežto --slunce-x a --slunce-y, na
   kterých visí záře .zablesk, mají 67,2 % / 54,6 %. Dvě kresby téhož
   slunce se tím mohly rozejít; teď je to jedna pravda. Rozdíl na
   obrazovce je půl procenta šířky.

   JEN nad 900 px. Na telefonu je --slunce-x 49,3 % (svislý výřez má
   slunce jinde) a závoj by se posunul o čtvrtinu šířky — hero na
   telefonu je schválené a nesmí se hnout. Že tam závoj míří na
   desktopové slunce, je vada k opravě jindy, ne v téhle dávce. */
@media(min-width:901px){
  .hero::before,.hero.hero--video::before{
    background:radial-gradient(120% 105% at var(--slunce-x) var(--slunce-y),
      rgba(19,20,24,0)    0%,
      rgba(19,20,24,.06) 26%,
      rgba(19,20,24,.20) 45%,
      rgba(19,20,24,.38) 65%,
      rgba(19,20,24,.52) 100%)}
}

/* ═══ STÍN TEXTU JEN TAM, KDE TEXT LEŽÍ NA OBRAZE ══════════════════
   Změřeno: `#fanSub` nesl
     text-shadow: rgba(19,20,24,.55) 0 1px 3px, rgba(19,20,24,.45) 0 2px 16px
   a je to šedý text na bílé ploše. Ten stín je nástroj pro BÍLÝ text na
   fotce; na světlém povrchu z něj je šedá aura kolem písmen.

   Příčina je v tom, že celá scéna (vějíř, vrstvy, historie) leží uvnitř
   `.hero`, takže pravidlo `.hero .lead` chytlo i texty na bílé. Ruší se
   proto v celém heru a vrací se jen na dvou místech, kde text opravdu
   leží na obraze: v textovém bloku hera a v scéně živého provozu.    */
.hero h1,.hero h2,.hero h3,.hero .h,.hero .lead,.hero .eyebrow,
.hero .hero-play,.hero p,.hero span,.hero b,.hero i,.hero li{
  text-shadow:none}
.hero .hero-inner h1,.hero .hero-inner .lead,.hero .hero-inner .hero-play,
.hero .liveop-in .h,.hero .liveop-in .lead,.hero .liveop-in .eyebrow{
  text-shadow:0 1px 3px rgba(19,20,24,.55),0 2px 16px rgba(19,20,24,.45)}

/* A barva: perex na plátně měl rgb(110,110,115), tedy 4,61 : 1 — projde,
   ale o vlásek. Token jde na rgb(90,90,95), což je 6,23 : 1, a platí to
   všude, kde web tu šedou používá. */
:root{--muted:#5A5A5F}

/* Perex v heru byl bílá s krytím 0,76 a po přerámování závoje spadl na
   4,43 : 1, tedy o vlásek pod normu. Jde na plnou bílou — text na fotce
   nemá důvod být poloprůhledný. Naměřeno po úpravě, ne odhadnuto. */
.hero .hero-inner .lead,.hero .hero-inner .lead.in{color:#fff}

/* ═══ HISTORIE: LETOPOČET JE OBRAZ ═════════════════════════════════
   Fotky odešly u všech kapitol naráz (licence na 1943 a 1972 nejsou),
   takže kapitolu musí nést číslo. Vysází ho tenhle soubor z atributu
   data-era, který na článku stál celou dobu — žádný nový text tím
   nevzniká a v index.html se nic nepřepisuje.

   Jedno číslo na obrazovku, displejový stupeň, lehký řez. Zrno je
   vypnuté výš, prázdné rámečky s rokem jsou pryč z HTML.            */
/* POZOR: .hs-chap si NESMÍ přepsat position. V styles.css jsou kapitoly
   absolutně naskládané přes sebe a scéna je střídá krytím; jedno
   „position:relative" je vysypalo do běžného toku a kapitoly 2 a 3
   spadly pod okno. Naměřeno na snímcích, vráceno.
*/
/* Rok leží NAD kapitolou, absolutně, a text pod ním má o tolik větší
   horní odsazení. Dvě jiné cesty jsem zkusila a obě se změřily jako
   špatné: v mřížce jako první buňka vytlačil text do druhého sloupce
   a kartičky firem se zabalily na nový řádek; na vlastním řádku přes
   celou šířku (grid-column 1 / -1) posunul obsah o 76 px dolů a kapitola
   přetekla přes časovou osu o 86 px. Takhle nezasahuje do mřížky vůbec.

   Stupeň je h2, ne displejový: v displejovém se „2000 — 2026" lámalo na
   dva řádky. */
.hs-chap::before{
  content:attr(data-era);
  position:absolute;top:0;left:0;
  display:block;
  font-family:'Panchang','PanchangVariable',Georgia,serif;
  font-weight:400;
  font-size:var(--fs-h2);
  line-height:1;
  letter-spacing:-0.03em;
  color:inherit;
  margin:0 0 var(--m3);
  font-variant-numeric:tabular-nums;
  white-space:nowrap}
.hs-chap .hs-copy{padding-top:calc(var(--fs-h2) + var(--m1))}

/* ═══ LETOPOČET NELEZE DO KARET FIREM (21. 8.) ══════════════════════
   Michaela: „na desktopu jsou ty čísla přes sebe." Kapitola 02
   („2000 — 2026") je jediná se třemi kartami firem — a jediná, kde se
   to děje.

   Příčina: místo pro letopočet je rezervované JEN v textovém sloupci
   (řádek nad tímhle). Letopočet je ale širší než ten sloupec —
   naměřeno 548,8 px proti 425 px — takže přesahuje do sloupce
   s kartami, kde mu žádné místo rezervované není. Karty jsou navíc
   svisle vystředěné (align-items:center ve styles.css), takže na
   vysokém okně sjedou pod letopočet a na nízkém vyjedou přesně proti
   němu. Proto to na jednom snímku vypadalo skoro dobře a na jiném zle.

   Naměřeno na 1920 × 1080 před opravou: letopočet končí na x = 974,8,
   první karta začíná na 907 → překryv 67,8 px. Na 1920 × 900 totéž,
   na 1920 × 720 překryv 50,9 px. Na výšce 1080 se míjely svisle.

   Oprava: místo pro letopočet se rezervuje CELÉ mřížce, ne jen jednomu
   sloupci — pak pod něj nemá co vjet, ať je okno jakkoli vysoké.
   Textový sloupec si své odsazení bere zpátky, aby se nesčítalo.

   Proč ne jinak:
   · Zmenšit letopočet, aby se vešel do textového sloupce, by znamenalo
     40 px místo 52 — a rozešla by se tím stupnice písma, kterou celý
     kabát staví.
   · Posunout karty níž řeší jen tuhle jednu výšku okna; problém je
     v tom, že jsou vystředěné, ne v tom, kde zrovna jsou.

   Odstup je --m4 (32 px), ne --m3 (24). Zadání žádá aspoň 24 px
   a s --m3 vycházelo na 1280 × 720 přesně 23,9 — o desetinu pod
   prahem, protože se odsazení sčítá s výškou letopočtu, která je
   sama zlomkem vw a zaokrouhluje se. --m4 dá nejhůř 31,9 px.

   Platí jen pro kapitolu s kartami (:has) a jen nad 900 px — na
   telefonu jde mřížka do jednoho sloupce a nic se nepřekrývá. */
@media(min-width:901px){
  .hs-chap:has(.hs-firm:nth-child(3)){
    padding-top:calc(var(--fs-h2) + var(--m4))}
  .hs-chap:has(.hs-firm:nth-child(3)) .hs-copy{padding-top:0}
}

/* Popisky v kartách firem měly 12 px — letopočet firmy, stav („Liquidated
   · 2013") i náhradní jméno značky v rámečku. Není to nová vada, byly
   takové i předtím; podlaha pro tuhle dávku je ale 13 px, tak jdou na
   13. Týká se to jen karet firem, tedy jen kapitoly 02: `--fs-label` má
   na počítači 12 px a jinde na webu se nechává být.

   Verzálky snesou míň než běžný text (brandmanuál dovoluje 12), takže to
   není oprava chyby — je to vyrovnání s prahem, který si dávka určila. */
.hs-firm .hs-yr,
.hs-firm .hs-dead,
.hs-firm .hs-logo--slot b{font-size:13px}
.hs-chap .hs-copy .eyebrow{display:none}   /* rok už to říká */
/* Výjimka: úvodní rámující kapitola. Nemá data ani karty, jen tvrzení,
   a její popisek „The idea" je součástí toho tvrzení — ne opis roku
   (29. 8. odpoledne, ZADANI-SLED-A-TEXTY.md). */
.hs-chap--stripe .hs-copy .eyebrow{display:block}
.hs-chap .hs-copy .lead{max-width:46ch}
/* Částky a stavy firem jsou čísla, ne text — jen je posadit na stupnici. */
.hs-raise,.hs-stat b,.hs-facts b{
  font-family:'Panchang','PanchangVariable',Georgia,serif;font-weight:400;
  letter-spacing:-0.03em;font-variant-numeric:tabular-nums}

/* ═══ ZÁBLESK ZE SLUNCE ═════════════════════════════════════════════
   Přeneseno z v2 (v2/styles.css, blok „ZÁBLESK ZE SLUNCE"), ale
   NEKOPÍROVANÉ naslepo — hero hlavního webu má jinou geometrii, takže
   se přepočítalo ukotvení.

   POLOHA SLUNCE je z měření na hero-loop-poster.jpg: nejjasnější bod po
   rozmazání leží na 67,2 % šířky a 54,6 % výšky SOUBORU a má jas 227
   z 255 proti průměru snímku 75. Je to totéž video jako ve v2.

   PROČ SE STŘED ZÁŘE ROZCHÁZEL SE SLUNCEM (vada z kontroly): procenta
   souboru nejsou procenta hera, protože médium je object-fit:cover.
   Zář proto neleží na heru, ale na prvku, který má PŘESNĚ rozměr
   vykresleného média: min-width/height 100 % plus aspect-ratio 16/9 dá
   nejmenší 16:9 rám, který hero pokryje — tedy to samé, co dělá cover.
   Kotví se na stejné ohnisko jako médium (--ohnisko-x, svisle 50 %),
   takže střed sedí na slunci v každé šířce okna. Ověřeno měřením
   vzdálenosti středu záře od nejjasnějšího bodu snímku.

   ŘÍZENÍ: postup hera --hp (0 na začátku, 1 po 1 800 px rolování; píše
   ho počítadlo v index.html). Vrchol 0,8 v třetině dráhy, na konci 0 —
   a to je dřív, než na 1 900 px nastoupí filmová scéna, takže přes film
   ani jeho texty záře nesvítí nikdy. Zpětné rolování to přehraje
   pozpátku samo, je to funkce polohy.

   BARVA je sluneční, ne růžová: 255,226,190 → 255,170,110. Růžová patří
   značce na akci, ne fyzice světla.

   Animuje se jen krytí; mix-blend-mode:screen světlo přičítá.        */
.hero{--slunce-x:67.2%;--slunce-y:54.6%;--ohnisko-x:50%}

/* Obal lepivé fotky. Na počítači se z něj nedělá žádný rám — display:contents
   znamená, že .hero-photo dál visí přímo na .hero, takže se tam vzhled ani
   o pixel nemění. Rám dostane jen na telefonu, níž v souboru. */
.hero-lepivy{display:contents}
.zablesk{position:absolute;z-index:2;pointer-events:none;
  left:var(--ohnisko-x);top:50%;
  transform:translate(calc(-1 * var(--ohnisko-x)),-50%);
  min-width:100%;min-height:100%;aspect-ratio:16/9;
  mix-blend-mode:screen;
  background:radial-gradient(circle at var(--slunce-x) var(--slunce-y),
    rgba(255,226,190,.42)  0%,
    rgba(255,203,150,.22)  5%,
    rgba(255,183,126,.08) 11%,
    rgba(255,170,110,0)   19%);
  opacity:clamp(0, min(calc(var(--hp, 0) / 0.333 * 0.8),
                       calc((1 - var(--hp, 0)) / 0.667 * 0.8)), 0.8)}
/* Text hera musí zůstat nad září. */
.hero .hero-inner,.hero .fleetbar,.hero .hero-scroll{z-index:2}

/* ═══ MOBILNÍ PANORAMA (do 900 px) ══════════════════════════════════
   Na úzkém okně cover řeže jen do šířky: z 1 500 px vykresleného rámu
   je vidět pás 390 px, tedy 26 %. Buď je v něm tvář muže, nebo šíře
   technologie — obojí naráz ne.

   Záběr se proto při rolování posune od muže k flotile se stanicí.
   Ohniska jsou změřená na posteru a přepočítaná na object-position:
     muž          x = 0,72 souboru → ohnisko 79,7 %
     stanice+vozy x = 0,45 souboru → ohnisko 43,2 %
   (ohnisko = (střed − 0,13) / 0,74, kde 0,13 je poloviční šířka pásu.)

   Je to funkce polohy rolování, ne animace časem. Start na muži drží
   slunce u levého okraje pásu, takže záblesk funguje i na mobilu.   */
@media(max-width:900px){
  .hero{--ohnisko-x:calc(79.7% - 36.5% * var(--hp, 0))}
  /* Selektor musí mít dva stupně, jinak prohraje s
     „@media(max-width:720px){.hero-photo .hp-loop{object-position:50% 50%}}"
     ve styles.css — na to si sáhl už autor toho pravidla a sáhla jsem si
     i já. */
  .hero-photo .hp-loop,.hero-photo .hp-bg,.hero-photo .hp-man,
  .hero-photo .hp-hero{object-position:var(--ohnisko-x) 50%}
}

@media(prefers-reduced-motion:reduce){
  /* Klid: bez posunu, statický výřez na flotile se stanicí, záře nesvítí. */
  .zablesk{display:none}
  .hero{--ohnisko-x:43.2%}
}

/* ═══ HERO ══════════════════════════════════════════════════════════
   Obsah ani pořadí se nemění, mění se sazba: nadpis jde na displejový
   stupeň, perex na 19 px, tlačítko na poloměr 8 px a jednu dobu.    */
.hero .hero-inner{gap:var(--m4)}
.hero h1{max-width:16ch;margin:0}
.hero .lead{max-width:44ch;margin-top:var(--m3)}
.hero .hero-cta{margin-top:var(--m5)}

/* Tlačítka: jeden tvar, jedna doba, jedna křivka. Bez lesku, který
   po nich přejížděl, a bez zvedání ve stínu. */
.btn,.hero-play,.btn-ghost{
  border-radius:var(--r-tl);
  transition:background-color var(--doba) var(--krivka),
             color var(--doba) var(--krivka),
             border-color var(--doba) var(--krivka)}
.btn::after{display:none}
.btn:hover,.hero-play:hover{transform:none;box-shadow:var(--stin)}

/* ═══ ŠEV: HERO → ŽIVÝ PROVOZ ══════════════════════════════════════
   Druhá ze dvou sousedních sekcí. Nadpis i perex sedí na stejné
   stupnici jako v hero, popisek nad nadpisem má stejnou čárku, obraz
   filmu leží v rámu, který se otevírá — takže šev čte jako pokračování
   téže věty, ne jako jiná stránka.                                 */
.hero .liveop-in{max-width:var(--maxw,1200px)}
.hero .liveop-in .h{font-size:var(--fs-h2);max-width:20ch}
.hero .liveop-in .lead{max-width:46ch;margin-top:var(--m3)}
.hero .liveop-in .eyebrow{
  display:inline-block;padding-left:var(--m2);
  border-left:3px solid var(--pink);
  margin-bottom:var(--m3)}
.hero .liveop-in .liveop-stats{gap:var(--m5);margin-top:var(--m5)}
.hero .liveop-in .liveop-stats b{
  font-family:'Panchang','PanchangVariable',Georgia,serif;font-weight:400;
  letter-spacing:-0.03em;font-variant-numeric:tabular-nums}

/* Zbytky, které nejdou přes tokeny a jsou vidět na téhle obrazovce:
   vnitřní obtah na velkém tlačítku a růžová aura u tečky na časové ose.
   Obojí je stín napsaný natvrdo v styles.css, takže se sem musí napsat
   selektorem. Hodnota je jedna a tatáž jako všude jinde. */
.fleetbar,.fleetbar .fb-in,.hs-dot{box-shadow:var(--stin)}

/* Doba a křivka u lišty a u textového bloku scény: mají je natvrdo,
   proto se sem přepisují na jednu dobu a jednu křivku. */
.nav,.bb-top{transition-duration:var(--doba);
  transition-timing-function:var(--krivka)}

/* ═══ RYTMUS A BARVA ════════════════════════════════════════════════
   Právě dvě tmavé sekce na celém webu: výměna a technická data.
   Světlo je svět, tma je stroj. Růžová na dvou místech: baterka
   a jedno hlavní tlačítko — proto se ruší růžová tam, kde je jen
   ozdoba (tečky, záře, pilulky).

   Tady zatím jen to, co spadá do hera a scény za ním; zbytek přijde
   se zbytkem webu, aby se neřešilo devět sekcí napůl.              */
.hero .liveop-in .accent{color:inherit}


/* ═══════════════════════════════════════════════════════════════════
   PRODEJNÍ STRÁNKA (sales.html)

   Michaela: „ta sales sekce je příšerná a vůbec nesedí k té home
   stránce." Sedí tím, že obě stránky berou stupnici písma, mezery,
   dva poloměry, jeden stín, jednu dobu a jedno easing z jednoho místa —
   z tokenů výš. Tady je jen to, co má prodejní stránka vlastní.

   Obsah, texty, čísla ani vzorec kalkulačky se nedotýkají. Pořadí
   sekcí zůstává.
   ═══════════════════════════════════════════════════════════════════ */

/* ---------- nadpisy sekcí ----------
   TADY JSEM MUSELA UBRAT. Zvětšení nadpisů sekcí na stupnici domovské
   (h2 = 52 px) porušilo na prodejní stránce pravidlo 2: #why potřebovalo
   682 px a #economics 688 px, přičemž na okno 720 px vysoké se vejde 635.
   Bez kabátu obě sekce prochází, takže to způsobil kabát.

   Zkusila jsem tři cesty a přejímka je všechny odmítla: stupeň omezený
   výškou okna (min(--fs-h2, 5,6vh)), h3 z 28 na 24 px a hlavička sekce
   jako vlastní řádek (mezera 56 px). Číslo se pohnulo z 55 na 47 px,
   ale nedoteklo.

   Nadpisy sekcí prodejní stránky proto zůstávají ve své velikosti
   a sjednocení jejich stupnice patří do samostatného kroku, kde se
   nejdřív změří, kolik místa první řada obsahu v každé sekci má.
   Zbytek kabátu — tokeny, tvary, jeden stín, jedna doba, tmavá technická
   data, kontakt — na prodejní stránce platí.

   Řez a prostrkání se dědí z obecného pravidla pro nadpisy výš, takže
   písmo je pořád jedno; mění se jen velikost.                        */
.section .sec-head .eyebrow,.cfg2-head .eyebrow{
  display:inline-block;padding-left:var(--m2);
  border-left:3px solid var(--pink);margin-bottom:var(--m2)}

/* Popisek pod vozem měl rgb(154,154,160) = 2,68 : 1 na bílé. Token
   --muted-2 jsem srovnala výš, ale tenhle popisek má barvu napsanou
   natvrdo, takže se musí přebít selektorem. */
.veh-state,.veh-paint figcaption{color:#5A5A5F}

/* ---------- karty a pilulky: dva poloměry, nic jiného ---------- */
.card,.wc,.eo-card,.spec-card,.fit-card,.dep-step,.tsp,.cfg2-answer,
.veh-paint,.f2,.mt-note{border-radius:var(--r-karta)}
.chip2,.mtoggle,.mtoggle button,.btn,.btn-ghost,.f2-more{
  border-radius:var(--r-tl)}
.chip2{transition:border-color var(--doba) var(--krivka),
                 color var(--doba) var(--krivka)}

/* ---------- kalkulačka: jeden rám a jedna dominanta ----------
   Do dneška to byly karty v kartách. Rám je jeden, uvnitř nic vnořeného,
   a dominanta je cena — ta jediná je v displejovém písmu.            */
.eo-wrap,.eo-grid{--stin:none;background:none;border:0;padding:0}
.eo-card{background:#fff;box-shadow:var(--stin);border:0;
  padding:var(--karta,40px)}
/* Karta v kartě: stín se nevypíná deklarací, ale tokenem — kabát má mít
   jednu jedinou hodnotu stínu, ne dvě (jednu skutečnou a jednu „none"). */
.eo-card .eo-card{--stin:none;background:none;padding:0}
.eo-v,.cp-big,.eo-big{font-family:'Panchang','PanchangVariable',Georgia,serif;
  font-weight:400;letter-spacing:-0.03em;font-variant-numeric:tabular-nums}
.eo-v{font-size:var(--fs-h1)}
.eo-sum,.eo-inc,.mt-note{font-size:var(--fs-sm);color:var(--muted)}

/* ---------- technická data: jedna ze dvou tmavých sekcí ----------
   Světlo je svět, tma je stroj. Druhá tmavá je výměna baterky.       */
/* Barvy jsou napsané hodnotou, ne tokenem --bg: ten patří v2, hlavní
   web ho nezná, takže „color:var(--bg)" byla neplatná deklarace, barva
   se zdědila tmavá a text zmizel na tmavém — přejímka to naměřila jako
   kontrast 1 : 1. Zkoušeno, změřeno, přepsáno na hodnoty. */
#specs{background:#131418;color:#F4F4F2}
#specs .h,#specs dd,#specs h4{color:#F4F4F2}
#specs .lead,#specs dt{color:rgba(244,244,242,.78)}
#specs .eyebrow{color:rgba(244,244,242,.72);border-left-color:#FB5494}
#specs .tsp{--stin:none;background:rgba(244,244,242,.05);
  border:1px solid rgba(244,244,242,.14)}
/* Popisek pod vozem leží v téhle sekci, takže na tmavé — šedá #5A5A5F
   by na ní dala 2,68 : 1. Naměřeno přejímkou. */
#specs .veh-state,#specs figcaption,#specs .cs4-l,#specs span{
  color:rgba(244,244,242,.78)}
#specs dl > div{border-color:rgba(244,244,242,.14)}

/* Zbytky naměřené na vykreslené stránce: drážka pruhu měla poloměr 5 px
   (mimo dva povolené), lišta a přepínač modelu měly vlastní stíny
   napsané natvrdo. Kroužky u laku (50 %) zůstávají — kruh není poloměr
   rámu, je to tvar tečky. */
.bar-track,.bar-track span,.bar-fill{border-radius:var(--r-tl)}
/* Lišta a přepínač modelu na prodejní stránce a zavírací tlačítko
   v překryvu vrstev měly stín napsaný natvrdo, mimo tokeny. Kabát je
   sundává tokenem, aby zůstala jedna jediná hodnota stínu. */
.nav,.mtoggle,.layzoom-close{--stin:none}
.nav,.mtoggle,.layzoom-close{box-shadow:var(--stin)}

/* ---------- kontakt: jako na domovské ---------- */
#talk .sec-head .h{font-size:var(--fs-h2)}
#talk .form-card,#talk .talk-card{border-radius:var(--r-karta);
  box-shadow:var(--stin);border:0}


/* ═══════════════════════════════════════════════════════════════════
   MARKETS NA MOBILU — vějířek za každou ikonou

   Na širokém okně nese sekci velký vějíř; pod 720 px je místo něj
   seznam kategorií a ten byl proti němu němý. Každá položka proto
   dostává za ikonu svůj malý svazek paprsků — TÁŽ kresba jako
   u velkého vějíře (repeating-conic-gradient s radiální maskou,
   opsáno z .paprsky), jen malá a růžová.

   Rozevře se s třídou .on, kterou položkám dává tatáž logika jako
   uzlům vějíře — takže vějířky přibývají shora dolů spolu s tím, jak
   dorůstají čísla. Animuje se jen krytí a měřítko.

   Kresba leží ZA ikonou (z-index -1 uvnitř vlastního kontextu), takže
   se nedotkne textu popisku ani jeho kontrastu.                     */
/* Vějířky za ikonami seznamu (Latso, 18. 8.) jsou pryč i s kresbou:
   seznam se na telefonu nekreslí vůbec, protože je tam týž vějíř jako
   na počítači. Značka `#paprsky-mini` zmizela z index.html spolu s nimi. */

/* Čísla, která se dopočítávají, nesmí poskakovat do šířky (pravidlo A8). */
.fst-v,.fst-v .u{font-variant-numeric:tabular-nums}

@media(prefers-reduced-motion:reduce){
}


/* ═══════════════════════════════════════════════════════════════════
   STÍNÍTKO POD TEXTEM V HERU — bez rovných hran

   Dávka 12, bod 1.1. Změřeno nástrojem tools/hrany-hera.py: staré
   stínítko měnilo krytí až o 0,0435 na pixel proti prahu 0,006. Bylo
   to tím, že to byl obdélník s pevnými rozměry: vodorovný spád držel
   0,30 ještě v 78 % šířky a svisle se rozpouštěl jen v prvních 16 %
   a posledních 20 % výšky. Na nízkém okně z toho na rozpuštění zbylo
   necelých 40 px a plná plocha začala uvnitř nadpisu.

   Vyskočilo to teď proto, že kabát vyměnil závoj hera za radiální ze
   slunce a okolí textu prosvětlil. Do tmavého úhlopříčného závoje se
   obdélník s krytím 0,62 schoval, do světlejšího ne.

   Oprava je VÝJIMEČNĚ ve styles.css, ne tady: přepsat se musel i ten
   původní rovný spád, jinak by v souboru zůstal mrtvý blok, který
   nikdy nic nevykreslí, a přejímka čte oba soubory dohromady. Hledej
   `.hero-inner::before` ve styles.css.
   ═══════════════════════════════════════════════════════════════════ */


/* ═══ STÍNÍTKO — OSTRÁ LEVÁ HRANA (21. 8.) ══════════════════════════
   Michaela zakroužkovala v heru svislý obdélník podél levé strany
   nadpisu. Není to v obrázku ani ve videu — je to tohle stínítko.

   Naměřeno na 1920 × 1080 (video zmrazené, hero přebarvené na bílou,
   fotka i text skryté, takže na obrazovce zůstalo jen stínítko):
   ztmavení jde přes x = 310 z 0 na 47 na jediný pixel, největší skok
   48 z 255 na y = 454. Svisle je největší skok 2, tam je to v pořádku.

   Proč: elipsa má střed na 26 % šířky, ale poloměr 46 %. Sahá tedy
   20 % ZA levý okraj rámečku, spád se nestihne dojet na nulu a rámeček
   ho uřízne, když má ještě krytí kolem 0,15. Vedle je nula. Z toho je
   ta čára.

   Z obou cest v zadání beru A — rámeček roztáhnout doleva. B (posunout
   střed na 46 %) by stínítko odsunulo o 260 px doprava, tedy z pod
   nadpisu, který stojí vlevo; kontrast perexu by šel dolů.

   Čísla nejsou od oka, plynou z toho, že se rámeček rozšíří o přesně
   ten přesah:
     · přesah  = poloměr − střed = 46 % − 26 % = 20 % šířky
     · rámeček = 100 % + 20 %  = 120 %, posunutý o −20 %
     · v novém rámečku je týž bod  (20 + 26) / 120 = 38,333 %
       a týž poloměr v pixelech    46 / 120       = 38,333 %
   Elipsa je tedy na obrazovce úplně stejně velká a na stejném místě
   jako dřív — jen jí rámeček nekončí uprostřed spádu. Protože je
   všechno v procentech, platí to na každé šířce okna.

   Svisle se nic nemění: elipsa má poloměr 40 % a střed na 40 %, dole
   i nahoře se tedy do rámečku vejde (naměřený skok po řádcích byl 2
   a takový zůstává).

   Zápis `right:auto` tu musí být: `inset:0` ve styles.css nastavuje
   i `right`, a s left + right + width je prvek přeurčený.
   Jen nad 900 px — pod tím platí středová varianta ze styles.css,
   kterou má i telefon, a ta se nechává být.

   ── 21. 8. POZDĚJI: STŘED ELIPSY NA TĚŽIŠTĚ TEXTU ────────────────
   Naměřilo se, že perex má proti nejsvětlejšímu decilu pozadí jen
   3,61 : 1 proti prahu 4,5 — a byl pod ním i před opravou hrany.

   Příčina nebyla síla, ale MÍSTO. Elipsa měla střed na 40 % výšky
   bloku, což je nadpis; perex leží na 56–63 % a dostával tedy jen
   okraj spádu. Změřeno na 1920 × 1080: nadpis 4,90, perex 3,61.

   Zesilovat nemá smysl a je to změřené: i při vrcholu 0,62 (hodnota
   zamítnutá v dávce 12, protože byla vidět jako tmavý obdélník)
   vyšel perex jen 4,58. Zato posun středu na 52 % a poloměru na 46 %
   dá při NEZMĚNĚNÉM vrcholu 0,42 perexu 4,76 a nadpisu 4,68.
   Tma nepřibyla, jen se přerozdělila: nadpis má pořád velkou rezervu
   (medián 9,22) a perex si polepšil ze 6,23 na 7,77.

   Svisle se elipsa pořád vejde do rámu: 52 % ± 46 % je 6 % až 98 %,
   a spád dojede na nulu v 98 % poloměru, tedy uvnitř. Hranu tak
   nemá kde udělat ani nahoře, ani dole.                             */
@media(min-width:901px){
  .hero-inner::before{
    left:-20%;right:auto;width:120%;
    background:radial-gradient(ellipse 38.333% 46% at 38.333% 52%,
      rgba(19,20,24,.42)   0%,
      rgba(19,20,24,.38)  26%,
      rgba(19,20,24,.26)  48%,
      rgba(19,20,24,.12)  68%,
      rgba(19,20,24,.04)  84%,
      rgba(19,20,24,0)    98%)}
}


/* ═══ 3.2 · OČKO „Live operation" NA FILMU ══════════════════════════
   Dávka 12: barva se opravila přímo ve styles.css (řádek s
   `.hero .liveop-in .eyebrow`), aby v souboru nezůstala mrtvá
   poloprůhledná varianta. Tady proto nic není.
   ═══════════════════════════════════════════════════════════════════ */


/* ═══ D1 · PLYNULÝ POSUN JEN NA KLIK ════════════════════════════════
   Změřeno (Latso, 17. 8.): po kliknutí na kotvu a stisku Zpět projela
   stránka všechny mezipolohy (6714 → 6082 → 4173 → 1556 → 275 → 0 za
   ~0,75 s) místo okamžitého skoku — `scroll-behavior:smooth` na <html>
   totiž platí i pro obnovu polohy z historie prohlížeče.

   Ze dvou cest v zadání beru tu druhou: smooth se z CSS sundává a řeší
   se v JS jen na kliknutí (script.js). `html:focus-within` by sice taky
   fungovalo, ale jeho chování v Safari nemám jak ověřit — tohle je
   deterministické v obou enginech.                                    */
html{scroll-behavior:auto}


/* ═══════════════════════════════════════════════════════════════════
   HLAVA SEKCE TRHŮ SE NESMÍ SCHOVAT POD LIŠTU

   Latso 18. 8. na iPhonu: „nadpis „The backbone…" je nahoře useknutý
   lištou." Příčina je v rozvržení, ne v odsazení: obsah scény stojí
   `justify-content:center` uprostřed CELÉ výšky okna, jenže horních
   ~48 px okna zabírá neprůhledná lepená lišta. Dokud se obsah vejde,
   nevadí to; jakmile je vyšší (delší text, větší systémové písmo,
   výřez displeje), přeteče střed na OBĚ strany a horní přetok zajede
   přesně pod lištu.

   Dvě věci naráz: střed se počítá až pod lištou (odsazení nahoře) a
   `safe` zajistí, že se obsah při přetečení nikdy neposune přes horní
   hranu — přeteče dolů, kde je scéna rolovatelná.                   */
@media(max-width:720px){
  .sc-fan .wrap{
    justify-content:safe center;
    padding-top:calc(clamp(16px,3vh,32px) + var(--lista-v, 56px)
                     + env(safe-area-inset-top, 0px))}
}


/* ═══════════════════════════════════════════════════════════════════
   MOBILNÍ VERZE — 390 × 844, zadání ZADANI-MOBIL.md

   Celý blok platí do 700 px. Na počítači se nemění nic.
   ═══════════════════════════════════════════════════════════════════ */

/* ── 3 · SPODEK STUPNICE PÍSMA ──────────────────────────────────────
   Naměřeno na vykreslené stránce: 38 prvků mělo písmo pod 13 px
   (nejmenší 12). V ruce je to nečitelné. Stupnice zůstává táž, jen se
   na úzkých oknech posune její spodní konec — mění se TOKENY, ne
   jednotlivá pravidla, takže se nikde nerozejde vztah mezi stupni. */
@media(max-width:700px){
  :root{
    --fs-label:13px;   /* verzálkové popisky — bylo 12 */
    --fs-xs:15px;      /* drobný text — bylo 14 */
    --fs-sm:16px;      /* běžný text v kartách a seznamech — bylo 15 */
  }
}

/* ── 4 · KLIKACÍ PLOCHY 44 px ───────────────────────────────────────
   Naměřeno: 11 klikacích prvků nižších než 44 px, nejmenší 28
   (hamburger). Řeší se VÝŠKOU a odsazením, ne větším písmem — sazba
   lišty i patičky zůstává, jen se kolem odkazu zvětší plocha, kterou
   trefí prst.

   Míří se na samostatné odkazy a tlačítka. Odkazy uvnitř odstavce se
   záměrně nechávají být: jsou to řádkové prvky, min-height na ně
   neplatí a roztahovat je by rozhodilo řádkování textu.            */
@media(max-width:700px){
  .nav-links a,
  .navdrop > button,
  .nav .brand,
  .burger,
  .foot-col a,
  .foot-brand a,
  .socials a,
  .close-alt,
  .liveop-sound,
  .op-thumb,
  .note-i{
    min-height:44px;
    display:inline-flex;align-items:center;
  }
  /* Hamburger a další čtvercová tlačítka potřebují i šířku — prst míří
     na plochu, ne na řádek. */
  .burger,.liveop-sound,.note-i{min-width:44px;justify-content:center}
  /* V menu a v patičce se odkazy vejdou pod sebe, tak ať mají i vzduch
     kolem. Patiččiny sloupce mají vlastní mezery, takže tam stačí výška. */
  .nav-links a,.navdrop > button{padding-block:10px}
  /* Ikony sociálních sítí a telefon jsou čtvercové terče. */
  .socials a{min-width:44px;justify-content:center}
}

/* ── 1 · SCÉNY SE NA MOBILU NEPOHYBUJÍ, STOJÍ POD SEBOU ─────────────
   Zadání: všechny tři scény měly na 390 px dráhu přesně jedno okno,
   takže se postup neměl kde odvíjet — a pod tím se při rolování mění
   svh, jak se schovává adresní řádek. Scény se proto poskládají
   (`--p:1`, `transform:none`) a stojí pod sebou jako běžné bloky.
   Skládá je script.js jednou při načtení, tady je jen rozvržení.

   Pořadí v DOM neodpovídá pořadí příběhu (film je v kódu před vějířem),
   proto `order` — hero → vějíř trhů → film → vrstvy → historie.     */
@media(max-width:700px){
  /* 29. 8. večer: VÝŠKA PINU UŽ NENÍ `auto`. Dosazuje ji script.js
     v PIXELECH, protože `svh` se na telefonu mění pod rukama, jak se
     schovává adresní řádek — a to byl původní důvod, proč se scéna na
     telefonu vůbec nestavěla. Spočítá se jednou při načtení a znovu jen
     při změně šířky nebo orientace, nikdy při změně samotné výšky. */
  .pin{--pin-navic:0svh}
  /* overflow:hidden zůstává: zář .zablesk je 16:9 přes celou výšku
     hera, tedy 1 500 px široká, a bez oříznutí by roztáhla stránku
     do stran (naměřeno scrollWidth 780 místo 390). */
  /* align-items:stretch, ne dědičné center: `.hero` má ve styles.css
     `display:flex;align-items:center`, a ve sloupci to znamená, že se
     každá scéna zúží na šířku svého obsahu. Dokud byly položky vějíře
     v toku, vycházelo to náhodou na 327 px; jak se z nich staly
     absolutní prvky, spadl celý blok na 183 px. */
  /* Zmrazení scén je od 29. 8. večer pryč — scéna na telefonu běží,
     takže se odkrývá stejně jako na počítači a plátna mají co kreslit.
     Stálo tu:
       .hero .fanwipe,…{--p:1;transform:none}
       .hero .fanwipe,.hero .sc-wipe{opacity:1;clip-path:none}
       .hero > canvas,.hero .sc-fx{display:none}
     Zbytek bloku (rozvržení pro úzké okno) platí dál. */

  /* LEPIVÁ FOTKA (21. 8.)
     Do téhle chvíle fotka odjela nahoru spolu s textem a panorama muselo
     stihnout dojet za 380 px rolování — v tu chvíli už bylo 45 % záběru
     za horní hranou obrazovky, takže stanice přijela do něčeho, co skoro
     nebylo vidět. Teď dostane fotka vlastní dráhu: obal .hero-lepivy je
     vysoký obrazovka + 1 250 px a fotka je v něm lepivá u horní hrany,
     takže těch 1 250 px STOJÍ přesně přes celou obrazovku. Text se přes
     ni odroluje pryč a panorama má celou dobu plnou plochu.
     1 250 px není odhad: je to přesně dráha, po které se počítá --hp
     (DRAHA_MOB v index.html) — panorama dojede v tu vteřinu, kdy se
     fotka odlepuje. */
  /* overflow:clip místo hidden. Obojí ořízne zář .zablesk stejně (a ta
     se oříznout MUSÍ, jinak roztáhne stránku do stran — naměřeno
     scrollWidth 780 místo 390). Rozdíl je jinde: `hidden` z hera udělá
     posuvnou schránku, a lepivá fotka se pak lepí k NÍ, tedy k něčemu,
     co se nikdy neposune — vůbec nedrží (naměřeno top −625 px při
     rolování o 625). `clip` schránku nedělá, takže se fotka lepí
     k obrazovce, jak má. */
  .pin > .hero{overflow:clip}
  /* Vlastní dráha lepivé fotky (obrazovka + 1 250 px) byla náhrada za
     scénu, která na telefonu neběžela. Scéna běží, takže fotka bere svou
     dráhu z ní — jinak by si dvě věci braly tentýž scroll a hero by se
     hýbalo dvakrát. */
  .hero > .hero-lepivy{display:block;order:0;position:absolute;
    inset:0;height:auto}
  /* Pořadí není libovolné: `inset:auto` maže i `top`, takže musí stát
     PŘED ním. Obráceně se fotka tvářila jako lepivá (computed
     position:sticky), ale bez top se nemá čeho chytit a jela s textem. */
  .hero .hero-photo{position:absolute;inset:0;width:100%;height:100%}


  /* Text leží PŘES první obrazovku fotky, ne pod ní: kdyby zůstal
     v toku, odsunul by lepivý obal o celou obrazovku dolů. Absolutní
     poloha je vůči .hero, takže text s dokumentem odroluje, zatímco
     fotka pod ním stojí. */
  .hero > .wrap.hero-inner{position:absolute;left:0;right:0;top:0;
    order:0;height:100svh;min-height:0;z-index:2;
    display:flex;flex-direction:column;justify-content:center;
    padding-top:calc(var(--lista-v,56px) + env(safe-area-inset-top,0px))}
  /* 5 · plovoucí pruh už nezakrývá spodek záběru — stojí pod herem. */
  .hero > .fleetbar{order:2;position:static;translate:none;
    width:auto;margin:0 var(--pad) clamp(28px,5vh,48px)}
  .hero > .fanwipe{order:3;position:static;inset:auto;height:auto}
  /* CELÝ ZÁBĚR, NE VÝŘEZ (26. 8.). Film je 16 : 9, rám na telefonu
     0,66 — při `cover` se z šířky snímku vidí jen 37 %, tedy se ořízne
     261 px vlevo a 255 px vpravo. V posledním záběru, kde je logo přes
     64 % šířky, z něj proto zbývalo 58 %: vlevo padla kruhová značka,
     vpravo konec slova „swap". Michaela to popsala přesně.
     `contain` ukáže celý snímek; rám si nechává svou výšku, takže se
     rozvržení ani text nad videem nehnou — nad a pod filmem zůstane
     tmavý pruh scény. Na počítači se nic nemění, tam `cover` ořezává
     jen 1 % šířky. */
  .hero > .hp-vid{order:4;position:static;width:100%;height:70svh;
    object-fit:contain;opacity:1}
  /* Text filmu zůstává NA filmu, jak to má na konci rolování být —
     záporný okraj ho vrátí přes video, se kterým je v jednom sloupci. */
  /* POZICOVANÝ, ne statický (26. 8.). Za textem leží tmavý závoj pro
     čitelnost (`.liveop-in::before`, absolutní, top a bottom −40 px).
     Absolutní prvek se ale měří od nejbližšího POZICOVANÉHO předka —
     a když je tenhle blok statický, je to celá sekce hera. Závoj proto
     na telefonu neměl 671 px, ale 7 270 px: ležel přes celou sekci
     včetně vějíře, který kvůli tomu vycházel šedý (naměřeno RGB 163
     místo 255). Jedno slovo vrátí závoj tam, kam patří — na svůj
     vlastní blok. */
  .hero > .liveop-in{order:5;position:relative;height:70svh;margin-top:-70svh;
    display:flex;flex-direction:column;justify-content:flex-end;
    padding-bottom:clamp(24px,5vh,48px);opacity:1}
  /* ═══ NÁPIS PŘES FILM: MÉNĚ OBRAZU (26. 8.) ═════════════════════
     Michaela: „nápis u videa je podle me hodně velký, protože nejde
     tím moc vidět to video." Naměřeno: text zabíral 47,9 % viditelné
     plochy videa, na počítači 29,2 %. Jádro je, že nadpis se na
     telefonu zmenšil (52 → 30 px), ale odstavec ne (19 → 19), a mezery
     mezi částmi zůstaly desktopové — 33, 24 a 66 px na obrazovce vysoké
     591 px.

     Text se nepřepisuje ani nekrátí. Zmenšuje se odstavec na 16 px
     (pod 15 px se běžný text nesmí) a stahují se mezery; nadpis
     zůstává, ten už zmenšený je. */
  .hero > .liveop-in .eyebrow{margin-bottom:0}
  .hero > .liveop-in .h{font-size:26px;margin-top:var(--m1)}
  .hero > .liveop-in .lead{font-size:16px;line-height:1.35;
    margin-top:var(--m2);max-width:38ch}
  .hero > .liveop-in .liveop-stats{margin-top:0;gap:var(--m2)}

  .hero > #scLayers{order:6}
  .hero > #scHist{order:7}
  .hero > .sc-wipe{position:static;inset:auto;height:auto}
  .hero .sc-fan,.hero .sc-in{position:static;inset:auto;height:auto}
  /* Scény si dřív braly výšku z přišpendleného rámu (height:100%).
     Ve sloupci se z toho stane nula, tak si ji berou z obsahu. */
  .hero .sc-in{padding-block:clamp(48px,8vh,80px)}
  .hero .lay-desky{height:auto;width:100%;flex:none}
  /* ═══ POPISEK VRSTVY NA TELEFONU (26. 8.) ════════════════════════
     styles.css je pod 861 px schovává úplně (`.lay-tag{display:none}`),
     takže na telefonu nebylo poznat, která vrstva je která — naměřeno
     0 × 0 px u všech čtyř. Na počítači stojí ve sloupci vedle diagramu;
     tady se pro ně vedle místo nenajde, tak jdou POD diagram a ukazuje
     se vždycky jen ten, jehož vrstva zrovna přiletěla (řídí script.js
     třídou `.je`). Čtyři popisky leží přes sebe, aby řádek neposkakoval
     podle délky textu. */
  /* Lupa se na telefonu NEUKAZUJE (Michaela 26. 8. večer: „proč je
     u mobilní ta lupa? to je šílené"). Je to rozhodnutí, ne vada —
     tlačítko, překryv #layZoomBox i obsluha ve script.js zůstávají,
     jen se to na telefonu nekreslí. Kdyby se to otočilo, stačí smazat
     řádek s display:none; ostatní dvě vlastnosti tu proto zůstávají
     připravené (styles.css bere tlačítku myš, dokud nemá scéna třídu
     `.live`, a ta se na telefonu nerozdává).

     VĚDOMÝ DŮSLEDEK: lupa byla jediná odpověď na dřívější výtku, že
     jsou části vrstev na telefonu malé — diagram tam má 350 × 270 px,
     tedy 17,5 % přirozené velikosti obrázku proti 37,8 % na počítači.
     Tahle dávka to neřeší. */
  .hero .lay-zoom{display:none;pointer-events:auto;min-height:44px}

  /* ═══ OBDÉLNÍKY V HISTORII SE NELEPÍ NA TEXT (27. 8.) ═════════════
     Michaela: „u té historie jsou ty obdélníky pořád moc blízko toho
     textu a nadpisu." Minulá dávka spravila mezery MEZI buňkami uvnitř
     karet; tahle je o mezeře NAD prvním obdélníkem. Naměřeno na dvou
     místech telefonu shodně 0 px — obdélník začínal přesně tam, kde
     text končil, tedy blíž, než jsou od sebe dva řádky téhož odstavce
     (proklad 20–21 px). Na počítači je tam 42 px a na ten se nesahá.

     Odsazení bere blok s grafikou, ne jednotlivé obdélníky: vnitřní
     odsazení karet se tím nemění. */
  .hero #scHist .hs-chap .hs-art{margin-top:clamp(22px,3vh,30px)}
  .hero .lay-tagy{position:relative;left:auto;right:auto;top:auto;
    transform:none;width:100%;height:auto;min-height:44px;
    margin-top:clamp(12px,2.4vh,20px);pointer-events:none}
  .hero .lay-tagy .lay-tag{display:block;position:absolute;
    left:0;right:auto;top:0;width:100%;max-width:none;text-align:left;
    opacity:0;transform:none;transition:opacity var(--t-base) var(--ease)}
  .hero .lay-tagy .lay-tag.je{opacity:1}
  .hero .lay-tagy .lay-tag b{font-size:var(--fs-sm)}
  .hero .lay-tagy .lay-tag i{font-size:var(--fs-label)}
  .hero .lay-state.st-a{display:none}   /* překlopený text je st-b */
  /* Historie: kapitoly se na desktopu střídají NA MÍSTĚ, takže jsou
     absolutní a jejich rám má nulovou výšku. Ve složeném sloupci by
     poslední kapitola vytekla přes sousední scény — proto je v toku
     a ostatní se nekreslí vůbec. */
  /* ═══ VŠECHNY ČTYŘI KAPITOLY POD SEBOU (24. 8.) ═══════════════════
     Do teď se na telefonu kreslila JEN poslední kapitola: počitadlo
     ukazovalo 04 / 04 a velký rok „Today" na každé poloze scrollu od
     nuly po konec stránky — z příběhu o 129 letech zbyla poslední věta
     a kapitoly 01 až 03 nešly zobrazit vůbec. Naměřeno po 100 px přes
     celý dokument: hodnota se nezměnila ani jednou.

     Na telefonu se scénami nescrolluje jako na počítači, takže se
     kapitoly nestřídají na místě — stojí pod sebou jako čtyři oddíly
     a čtenář jimi projde scrollem. Který zrovna čte, řídí script.js
     podle toho, co je v okně. */
  .hero #scHist .hs-body{height:auto;min-height:0}
  .hero #scHist .hs-chap{position:static;display:block;opacity:1}
  .hero #scHist .hs-chap + .hs-chap{margin-top:clamp(40px,7vh,72px)}
}

/* ── 2 · SVISLÝ VÝŘEZ HERA ──────────────────────────────────────────
   Zdroj i plakát přepíná index.html přes media dotaz. Tady se jen
   vypíná vodorovné panorama: to posouvalo výřez po širokém záběru,
   a ve svislém není co posouvat — muž i slunce jsou v něm pořád.

   Slunce má ve výřezu jiné souřadnice: okno je 990–1598 px z 1920,
   slunce leželo na 67,2 % šířky souboru, tedy na 1290 px — ve výřezu
   je to (1290 − 990) / 608 = 49,3 %. Svisle se nic neřeže, takže
   54,6 % platí dál. Zář je proto přesazená a dostala poměr stran
   svislého záběru; jinak by seděla vedle slunce.

   Krytí drží nastálo na vrcholu (0,8): postup --hp se na složené
   stránce nikam nepohybuje, takže by zář nesvítila vůbec.          */
@media(max-width:700px){
  /* PANORAMA: záběr se s rolováním sveze od muže ke stanici s vozy.
     Ohniska jsou z měření na zdroji 1920 × 1080 přepočtená na nový
     výřez 1700 × 1080 (tools/hero-video-mobil-pan.sh):

       start  — muž (1286–1594 px zdroje) uprostřed pásu → 99,1 %
       konec  — stanice (902–1152) a nakladač (1152–1248) v pásu → 68 %

     21. 8.: start posunutý na 96,8 %. Na 99,1 % stál pás úplně na pravém
     okraji zdroje a hlava muže vycházela na x = 174 px, tedy 21 px vlevo
     od středu rámu (195). Ubráním 2,3 procentního bodu se pás vrátí
     o 28 px doprava a hlava sedne na 190 px — do středu s odchylkou
     5 px, což je pod prahem, na kterém se to v rámu pozná.

     Zadání uvádělo stanici na 0–20 % šířky, jenže tam je kamion a
     autobus; stanice stojí na 47–60 % a nakladač na 60–65 %. Změřeno
     na posteru, takže konec panoramatu míří tam, ne na levý okraj.

     Pás, který je z výřezu vidět, je 499 px široký (390/844 × 1080),
     takže volného místa je 1700 − 499 = 1201 px. Posun je z 96,8 %
     na 68 %, tedy 28,8 % z 1201 px = 346 px zdroje; pás jede
     z 1163–1662 na 817–1316. Konec panoramatu se nemění — stanice
     dojíždí na tutéž 68 %, jen se k ní jede o 28 px kratší cestou.

     Je to funkce polohy rolování (--hp), ne času ani konstanta. */
  /* 25. 8.: konec panu jde z 68 % na 46 %. Michaela: „vidím jen stanici
     a traktor a to je málo, chce vidět v dálce více."

     Změřeno na zdroji 1700 × 1080: do okna 390 × 844 se přes cover vejde
     pás 499 px, takže volného místa je 1201 px a ohnisko p sedí na
     souborovém x = p × 1201.

       konec 68 %  → pás 817–1316, tedy od 48 % šířky souboru
       konec 46 %  → pás  552–1051, tedy od 32,5 %

     Pás flotily (vozy, stanice, nakladač) leží na 125–1263. Za celý pan
     tak čtenář uvidí 552–1263, což je 62,5 % flotily místo dosavadních
     39 %; návěs a autobusy vlevo od 552 px se pořád neukážou. Stanice
     (799–1020) zůstává v koncovém záběru celá, takže obraz dál říká
     BattSwap. Začátek se nemění — muž stojí na 96,8 %. */
  .hero{--ohnisko-x:calc(96.8% - 50.8% * var(--hp, 0));
        --slunce-x:49.3%;--slunce-y:54.6%}
  .zablesk{aspect-ratio:9/16;opacity:.8}
}

/* Perex na svislém výřezu stojí proti světlejší obloze než na širokém
   záběru: naměřeno 5,47 : 1 proti mediánu pozadí, ale jen 4,30 : 1
   proti jeho nejsvětlejšímu decilu, tedy pod prahem 5,0. Stínítko pod
   textem proto na telefonu drží o něco víc — vrchol 0,56 místo 0,42.
   (Při 0,52 vycházel perex 4,93, tedy o sedm setin pod prahem.)
   Tvar zůstává týž eliptický spád, který dojede na nulu uvnitř prvku,
   takže hranu pořád nemá kde udělat, a 0,62 z dávky 12 se nepřekračuje. */
@media(max-width:700px){
  .hero-inner::before{
    background:radial-gradient(ellipse 56% 38% at 50% 42%,
      rgba(19,20,24,.56)   0%,
      rgba(19,20,24,.51)  26%,
      rgba(19,20,24,.35)  48%,
      rgba(19,20,24,.16)  68%,
      rgba(19,20,24,.05)  84%,
      rgba(19,20,24,0)    98%)}
}

/* ═══════════════════════════════════════════════════════════════════
   TELEFON: HERO — vybraná varianta B (ZADANI-MOBIL-HERO-VEJIR.md)

   Zkoušely se tři a všechny tři jsou nasnímané v `_upravy/`
   (`hero-mobil-A|B|C-390x844.png` a `-390x740.png`), čísla ve
   `ZPRAVA-HERO-MOBIL.md`. Vyhrála B: jediná drží celoplošný filmový
   záběr a přitom projde všemi šesti podmínkami.

   Dvě věci dohromady:

   1) NOVÝ VÝŘEZ (tools/hero-video-mobil2.sh). Ten původní končil
      zátylkem na 99,3 % šířky souboru, a protože rám hera má poměr
      0,462 proti 0,5625 souboru, ubral cover ještě 17,9 % šířky a
      hlavu uřízl. Nový výřez je vystředěný na x = 1400 px zdroje,
      takže z hlavy (1286–1594 px) zůstane na 390 × 844 vidět celá
      se 136 px rezervy vlevo a 55 px vpravo.

   2) TEXT DOLŮ. Nadpis, perex i odkaz stojí v dolní části, pod mužem.
      Naměřený překryv s obličejem je 0 px² na 844 i na 740.
      Na nízkém okně se blok musí ještě zkrátit: nadpis začínal na
      266 px a brada končí na 281.                                   */
@media(max-width:700px){
  .hero > .wrap.hero-inner{justify-content:flex-end;
    padding-bottom:clamp(18px,3.5vh,34px);
    gap:clamp(16px,2.4vh,28px)}
  @media(max-height:780px){
    .hero > .wrap.hero-inner{gap:14px;padding-bottom:10px}
  }
}

/* ═══════════════════════════════════════════════════════════════════
   TELEFON: VĚJÍŘ — vybrané uspořádání C (otočený o 90°)

   Zkoušela se všechna tři a všechna jsou nasnímaná v `_upravy/`
   (`vejir-mobil-A|B|C.png`), čísla ve `ZPRAVA-VEJIR.md`.
   Vyhrálo C: střed s logem na levém okraji v polovině výšky, šest
   paprsků doprava, popisky vodorovné. Jako jediné projde všemi šesti
   podmínkami bez jediného pixelu překryvu nebo uříznutí.

   Souřadnice nejsou od oka. Rám vějíře je 390 × 318 px (na 347 px byla
   sekce o 29 px vyšší než okno) a položky mají 47 px, takže šest jich
   do něj jde posadit s roztečí 54 px. Z těch svislých poloh se dopočítá úhel
   paprsku a z něj vodorovná poloha na kružnici o poloměru 150 px.
   ═══════════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════════
   TELEFON: VĚJÍŘ — TÝŽ, CO NA POČÍTAČI, JEN OTOČENÝ O 90°

   Michaela 18. 8.: „ten vějíř chce okopírovat jako je na desktopu, jen
   otočený o 90°." Nic se proto nekreslí znovu: na telefonu je vidět
   `.fan-svg` i `.fan-canvas` — táž destičky, tytéž ikony, totéž jádro
   s logem, tytéž paprsky z plátna. Náhradní seznam z minulé dávky je
   pryč celý.

   OTÁČÍ SE OBRAZ, NE KÓD. Plátno počítá paprsky ve svých souřadnicích
   a o otočení neví, takže `script.js` se nemusí měnit ani o řádek.

   Rozměry: rám vějíře je 1200 × 560, tedy poměr 2,143. Před otočením
   dostane 836 × 390 px (836/390 = 2,144, sedí), po otočení zabere
   390 × 836 px. Layoutový box drží rodič `.fan`, protože transform
   do rozvržení nemluví — jinak by 836 px šířky přeteklo do stran.

   Písmo popisků je v SVG 19 jednotek, měřítko 836/1200 = 0,697,
   takže na obrazovce vyjde 13,2 px. Užší vějíř už nejde: pod 13 px
   se popisky nesmí dostat.

   Sekce tím na telefonu zabere DVĚ obrazovky — první nadpis, perex
   a tři čísla, druhá vějíř. Je to jediné místo, kde se pravidlo 2
   na telefonu vědomě ohýbá; zmenšit vějíř nejde, popisky by spadly
   pod 13 px. Změřené výšky jsou ve ZPRAVA-VEJIR-OTOCENY.md.
   ═══════════════════════════════════════════════════════════════════ */
@media(max-width:720px){
  /* styles.css:3878 vějíř na telefonu schovává — kabát ho vrací. */
  .sc-fan .fan-svg{display:block}
  .sc-fan .fan-canvas{display:block}
  /* Náhrada z minulé dávky se nekreslí. */
  .fan-list{display:none}

  /* left/top se musí vynulovat: desktopové `.sc-fan .fan` má
     `left:calc(50% + clamp(80px,9.8vw,200px))` a relativní prvek ho
     poslechne — vějíř se tím odsunul o 275 px doprava. */
  /* TŘI ČÍSLA VEDLE SEBE (21. 8.)
     Sekce měla 906 px a okno 844, chybělo tedy 62 px. Čísla stála pod
     sebou, každé 54 px, dohromady 182 px. Vedle sebe zabírají 77 px —
     ušetří se 105 px a sekce se na jednu obrazovku vejde.

     styles.css je na úzkém displeji schválně skládá pod sebe
     (`grid-template-columns:1fr` na ≤ 700 px). Tady se to vrací do tří
     sloupců, protože po zmenšení vějíře je na řadu místo.

     ROZMĚRY JSOU ZMĚŘENÉ, ne odhadnuté:
     · `minmax(0,1fr)` místo `1fr` — s pouhým 1fr se sloupec roztáhne
       na nejširší číslo a řada přestane být pravidelná (naměřeno
       104,7 / 104,7 / 115,5 px).
     · Písmo čísla `clamp(13px, 4.7vw, 20px)`. Pevná velikost nejde:
       nejširší hodnota je „15.60M years" a při 20 px má 107 px, což se
       na 360 px široké obrazovce do sloupce nevejde a sloupce se
       překryjí (naměřeno −0,5 px na 360 a −11,2 na 320). Se 4,7vw
       vychází na 390 px písmo 18,3 px a mezera mezi sloupci nikde
       neklesne pod 1,6 px až do 320 px.
     · Mezera 6 px a nulové odsazení sloupců: na tři čísla je z 366 px
       k dispozici jen 326, každé odsazení se násobí šesti.

     PODLAHA 13 px SE NEPROLOMILA. Popisek má 13 px a jednotka („Mt",
     „years") taky — drží ji `max(var(--fs-label), .5em)` ze styles.css,
     kde --fs-label je na telefonu 13 px. Zkoušela jsem jednotku zúžit
     na 11 px, aby se vešlo větší číslo; vešlo, ale 11 px je pod
     podlahou, tak jsem to zahodila.

     Čísla se nelámou — `white-space:nowrap` má .fst-v ze styles.css
     a tabulkové číslice (pravidlo A8) drží šířku při dopočítávání. */
  .sc-fan .fan-stats{grid-template-columns:repeat(3,minmax(0,1fr));
    gap:6px;align-items:start}
  .sc-fan .fst{padding:0;text-align:center;min-width:0}
  /* Užší prostrkání a menší mezera před jednotkou. Nejužší hodnota
     „15.60M years" má na 390 px 101,7 px do sloupce širokého 105 —
     rezerva 3,3 px, a na 320px displeji se o 0,3 px nevešla. Jednotka
     se zmenšit nesmí (13px podlaha), tak se ubralo prostrkáním:
     rezerva je teď 7,6 px na 390 px a 0,5 px i na 320. */
  .sc-fan .fst-v{font-size:clamp(13px,4.7vw,20px);white-space:nowrap;
    letter-spacing:-.045em}
  .sc-fan .fst-v .u{margin-left:.1em}
  .sc-fan .fst-l{font-size:13px}

  /* RÁM STAŽENÝ NA KRESBU (21. 8.)
     Michaela: „je tam velký rozestup, jsou tam čísla a dlouho nic
     a pak vějíř." Naměřeno na 390 × 844: rám měl 836 px, ale kresba
     v něm zabírala jen 351 px — nad ní zbývalo 244 px prázdna a pod
     ní 242. Celá sekce z toho byla 1 370 px, tedy 1,62 obrazovky,
     a vějíř se lámal přes zlom, takže ho nikdo neviděl celý.

     Rám je proto 372 px. Není to odhad: kresba se změřila na
     vykresleném obraze (rozptyl jasu po řádcích, ne rámečky prvků —
     paprsky a záře jádra sahají o 12 px níž než nejspodnější popisek)
     a vyšla na 351 px, symetricky kolem jádra: 174,4 px nad středem
     a 176,6 pod ním. 372 = 2 × 186, tedy 10 px vzduchu na každé
     straně.

     Plátno i kresba zůstávají čtvercové 836 × 836 a vystředěné —
     script.js si velikost rastru bere z getBoundingClientRect() a ta
     u otočeného prvku vrací prohozené strany, takže čtverec je jediný
     tvar, u kterého se prohodit nemají jak. Čtverec se jen OŘÍZNE
     rámem; protože jsou obě vrstvy vystředěné na týž bod, střed
     paprsků zůstává přesně na logu. */
  /* VÝŠKA RÁMU JE POMĚROVÁ, NE PEVNÝCH 372 px (10. 9.).
     Michaela: „vějíř není na mém iPhonu celý vidět." Její telefon má
     na šířku 440 px.

     Příčina: rám měl pevných 372 px na každé šířce, ale kresba uvnitř
     se škáluje se šířkou okna (přes 100vw). Od 430 px výš je kresba
     vyšší než rám a `overflow:hidden` ji uřízne. Naměřeno:

       šířka okna   výška kresby   přesah nahoře/dole   uzlů mimo rám
          390          352 px          −11 / −9              0
          393          355 px          −10 /  −7             1
          402          364 px           −4 /  −4             2
          430          388 px           +7 /  +9             3
          440          398 px          +12 / +14             4   ← Michaelin

     Z těch pěti bodů vychází výška kresby jako 0,905 × šířka okna
     (352/390 = 0,9026 … 398/440 = 0,9045). Rám je proto kresba plus
     pevný vzduch 12 px na každé straně. Poměrem 372/390 = 0,9538 by
     vzduch vyšel 9,7 px, a při 8,5 px už podle měření popisek
     propadne — proto pevných 24 px, ne další poměr. */
  .sc-fan .fan{position:relative;left:auto;top:auto;right:auto;bottom:auto;
    width:100%;height:calc(100vw * 0.905 + 24px);flex:none;overflow:hidden;
    margin-top:clamp(12px,2vh,24px)}
  /* Obě vrstvy dostanou TÝŽ transform, takže se nemůžou rozejít.
     Rozměr je ten PŘED otočením; +90° postaví jádro k levému okraji
     a paprsky pošle doprava. */
  /* Kresba dostane STEJNOU krabici jako plátno — čtverec 836 × 836 na
     témže místě. Teprve tak se obě vrstvy kryjí (přejímka to měří na
     2 px). Plátno čtvercové být musí, protože script.js si velikost
     rastru bere z `getBoundingClientRect()` a ta u otočeného prvku
     vrací prohozené strany; u čtverce se prohodit nemají jak.

     Ve čtverci se ale viewBox (1200 × 560) vystředí svisle, tedy
     o (836 − 390)/2 = 223 px níž. Obsah se proto posune zpátky
     nahoru — o 223 / 0,696 = 320 jednotek, mínus 100 jednotek, o které
     viewBox začíná níž než plátno: 220. Posouvá se OBSAH, ne krabice,
     takže měření krabic zůstane shodné. */
  /* Rám schová prázdný přesah čtverce do sebe (viz index.html). */
  .sc-fan .fan-ram{display:block;position:absolute;inset:0;overflow:hidden}
  /* 9. 9.: totéž co u plátna. `viewBox` je „0 100 1200 560", tedy poměr
     2,1429 — rám 836 × 390 mu sedí přesně, kresba se nezmenší ani
     neletterboxuje a popisky drží 19 × 836/1200 = 13,2 px. */

  /* ROZBITÝ KOMENTÁŘ — NALEZENO A OPRAVENO 10. 9. 21:40
     Poznámka „POZN. 10. 9. večer" níž byla vložena DOVNITŘ komentáře,
     který začínal výš a ještě nebyl uzavřený. CSS vnořené komentáře
     nezná: první uzavírací značka ukončila všechno a zbytek věty
     („neletterboxuje a popisky drží…") zůstal viset v kódu jako
     nesmysl. Prohlížeč se z té chyby zotavuje tak, že zahodí i
     NÁSLEDUJÍCÍ pravidlo — a tím byl `.sc-fan .fan-svg`.

     Důsledek, změřený na 440 × 956: plátno s paprsky pravidlo
     dostalo (943 × 440, otočené, left −163 px), kresba s jádrem
     a popisky NE (440 × 422, position relative, transform none).
     Obě vrstvy se tím rozešly — přesně to, před čím komentář
     o pár řádků výš varuje. Na telefonu to vypadá tak, že paprsky
     míří za levý okraj a jádro s popisky stojí jinde.

     Opraveno vrácením správného uzávěru. Pravidlo `.sc-fan .fan-svg`
     se NEMĚNILO ani o znak — jen se zase používá. */

  /* POZN. 10. 9. 21:45: odvození níž je ZMĚŘENÉ a od dneška POUŽITÉ.
     Dřív bylo zamítnuté proto, že se zkoušelo na kabátu s rozbitým
     komentářem — pravidlo `.sc-fan .fan-svg` se tehdy vůbec
     nepoužívalo, takže poměrová varianta hýbala jen plátnem a uzly
     se logicky rozešly. Po opravě komentáře (viz výš) dostávají obě
     vrstvy totéž a naměřeno je:

       šířka okna   nejmenší rezerva popisku k okraji
          390            23 px
          393            23 px
          402            24 px
          430            25 px
          440            26 px   ← Michaelin telefon

     Rezerva s šířkou okna ROSTE, dřív klesala (23/22/18/8/4).

     ODSAZENÍ BY MĚLO BÝT POMĚROVÉ, NE PEVNÝCH 163 px.
     Těch 163 px bylo odvozeno pro displej 390 px (223 − 70 + 10), jenže
     obě čísla v tom odvození sama vycházejí ze šířky okna:
     223 = 0,5718 × W a 70 = 0,17863 × W. Kresba se tedy škáluje
     se šířkou, ale odsazení ne — a od 390 px výš se posouvá doprava.

     Naměřeno (vzdálenost uzlů od PRAVÉ hrany rámu, norma 8 px):

       šířka okna   left u .fan-svg   Public transit   Industrial
          390            32 px             23 px          20 px
          393            33,5 px           22 px          19 px
          402            38 px             18 px          16 px
          430            52 px              8 px           5 px  ✗
          440            57 px              5 px           2 px  ✗  ← Michaelin

     Od levé hrany je přitom „Industrial" na 440 px vzdálený 285 px —
     kresba se celá utahuje k pravému okraji. Podpis pevného čísla
     v poměrovém rozvržení: vada roste se šířkou okna (0/0/0/1/2).

     Poměrově je 163 / 390 = 0,41881. Odsazení pak vyjde
     W × (0,5 − 0,41881) = 0,08119 × W, tedy 31,7 px na 390 (dnešních 32)
     a 35,7 px na 440 místo 57. OBĚ pravidla — .fan-svg i .fan-canvas —
     musí dostat totéž, jinak se plátno s kresbou rozejde. */
  .sc-fan .fan-svg{
    position:absolute;left:calc(50% - 100vw * 0.41881);top:50%;
    width:calc(100vw * 2.1436);height:100vw;
    transform:translate(-50%,-50%) rotate(90deg);
    transform-origin:50% 50%}
  .sc-fan .fan-posun{transform:translateY(-220px)}
  /* Plátno musí být ČTVERCOVÉ. script.js si velikost rastru bere
     z `getBoundingClientRect()`, a ta u otočeného prvku vrací prohozené
     strany: z rámu 836 × 390 se stane 390 × 836, rastr se natáhne na
     dvojnásobek a paprsky vyjedou vedle vějíře (vidět na první zkoušce).
     U čtverce jsou obě strany stejné, takže se prohodit nemají jak.
     Kreslicí měřítko je pak 836/1200 = 0,696, tedy stejné jako u SVG.

     Posun: SVG má viewBox od y = 100, plátno kreslí od y = 0, takže se
     jejich počátky liší o 100 × 0,696 = 70 px. Ve čtverci je plátno
     navíc o (836 − 390)/2 = 223 px vyšší nad středem. Dohromady je
     potřeba posunout o 223 − 70 = 153 px, a protože je prvek otočený
     o +90°, projeví se svislý posun jako vodorovný. */
  /* 29. 8. odpoledne: o 10 px doleva. Popisek „& off-highway" končil na
     387 z 390, tedy 3 px od okraje; telefonní přejímka chce aspoň 12.
     Posouvá se OBOJÍ stejně, takže se plátno s kresbou nerozejde a střed
     paprsků zůstává na logu — logo se posouvá s nimi. */
  /* 9. 9.: plátno UŽ NEMUSÍ být čtverec. Důvod, proč bylo, byl v tom,
     že si `script.js` bral velikost rastru z `getBoundingClientRect()`,
     a ta u otočeného prvku prohazuje strany. Od dneška bere
     `offsetWidth/offsetHeight`, které otočení neznají — plátno tedy může
     mít rozměr, v jakém se doopravdy kreslí (poměr 836/390 = 2,1436),
     a po otočení zabere přesně šířku okna místo 836 px. */
  .sc-fan .fan-canvas{
    position:absolute;left:calc(50% - 100vw * 0.41881);top:50%;
    width:calc(100vw * 2.1436);height:100vw;
    transform:translate(-50%,-50%) rotate(90deg);
    transform-origin:50% 50%}

  /* Zpátky se dorovnají jenom popisky, ať zůstanou vodorovné. Otáčejí
     se kolem STŘEDU SVÉ DESTIČKY, ne kolem sebe: kolem sebe by každý
     řádek zůstal tam, kam ho otočení odneslo — vedle destičky, a oba
     řádky vedle sebe místo pod sebou (naměřeno 5 856 px² překryvu).
     Společný střed drží jejich vzájemnou polohu.

     Zvětšení dělá MĚŘÍTKO, ne větší písmo: s pouhým font-size by
     zůstala rozteč řádků 8,5 px proti 13,2 px vysokému písmu.
     1,85 = 13,2 / 7,13, tedy z naměřených 7,13 px na 13,2 px.
     Souřadnice středů destiček jsou z index.html. */
  /* Ikony v destičkách se dorovnají stejně jako popisky — otočený
     nákladní vůz na boku není kresba, je to překlep. Vztažný rámec
     musí být view-box: `fill-box` na vnořeném <svg> smrskne jeho
     ohraničení a ikona zmizí (vyzkoušeno). */
  /* Na telefonu je kreslicí měřítko 0,483 proti 0,883 na počítači,
     takže táž kresba vyjde skoro o polovinu menší. Rámeček 30 jednotek
     by na telefonu vyšel o polovinu menší než na počítači; zvětšení
     o polovinu to dorovná. Zvětšuje se o STŘED destičky (transform-origin
     níž), takže ikona zůstane, kde byla. */
  /* 31. 8.: OTOČENÍ UŽ NENÍ V CSS. Zvětšení tady zůstává, ale
     protiotočení o −90° se přesunulo do SVG jako atribut `transform`
     na obalujícím `<g>` (dosazuje ho script.js). Důvod je změřený:
     v opravdovém Safari se CSS otočení na vnořeném `<svg>` s celým
     vějířem nesložilo a ikony ležely na boku, kdežto v Chromiu se
     +90° a −90° vyrušilo. Atributové transformace v SVG skládají
     všechny prohlížeče stejně. */
  .sc-fan .fn-ic{transform-box:view-box;transform:scale(1.5)}

  /* Značka v jádře. Otáčí se s celým vějířem, takže na telefonu ležela
     na boku. Otočení zpátky je o vlastní střed destičky (600, 548
     v souřadnicích výkresu) — kdyby se točila kolem levého horního
     rohu, odletí mimo jádro. */
  .sc-fan .fcore-znacka{transform-box:view-box;transform-origin:600px 548px;
    transform:rotate(-90deg)}
  .sc-fan .fnode[data-s="0"] .fn-t,
  .sc-fan .fnode[data-s="0"] .fn-ic{transform-origin:238px 385px}
  .sc-fan .fnode[data-s="1"] .fn-t,
  .sc-fan .fnode[data-s="1"] .fn-ic{transform-origin:344px 235px}
  .sc-fan .fnode[data-s="2"] .fn-t,
  .sc-fan .fnode[data-s="2"] .fn-ic{transform-origin:508px 150px}
  .sc-fan .fnode[data-s="3"] .fn-t,
  .sc-fan .fnode[data-s="3"] .fn-ic{transform-origin:692px 150px}
  .sc-fan .fnode[data-s="4"] .fn-t,
  .sc-fan .fnode[data-s="4"] .fn-ic{transform-origin:856px 235px}
  .sc-fan .fnode[data-s="5"] .fn-t,
  .sc-fan .fnode[data-s="5"] .fn-ic{transform-origin:962px 385px}
  /* Popisek patří po otočení VEDLE destičky, napravo, ve stejné výšce
     — na desktopu visí pod uzlem, protože se vějíř rozevírá nahoru.
     Posun je v souřadnicích kresby: obal je otočený o +90°, takže
     posun v uživatelském +y se na obrazovce projeví jako −x a naopak.
     Cíl je +85 px doprava a 48 px nahoru. Dělí se CELKOVÝM měřítkem
     0,446 — tedy 0,696 z viewBoxu a k tomu 0,64, kterým jsou uzly
     zmenšené — takže translate(−108, −191). S měřítkem 0,696 vyšel
     posun jen 50 px místo 78 a čtyři popisky zůstaly nalevo. */
  .sc-fan .fn-t{transform-box:view-box;
    transform:translate(-108px,-191px) rotate(-90deg) scale(1.85)}
}


/* ═══════════════════════════════════════════════════════════════════
   KONFIGURÁTOR NA TELEFONU — chipy a tečky přestanou ležet přes vůz
   (ZADANI-CFG-MOBIL.md, jen do 700 px; na počítači se nemění nic)

   PŘÍČINA nebyla v rozvržení voleb, ale v kresbě. Obrázky dílů mají
   v HTML atribut height (base 332), a protože CSS nastavuje jen šířku,
   prohlížeč tu výšku vezme doslova: na 390 px se `base.png` vykreslil
   336 × 332 místo 336 × 173. Vůz byl tím zároveň zmáčknutý (poměr
   1,01 proti přirozeným 1,95) a přetékal rám scény o 159 px — a přes
   ten přetok ležely chipy i tečky.

   Stačí proto vrátit výšku poměru stran. Scéna má rám 350 × 221 a
   kresba se do něj po opravě vejde celá.                            */
@media(max-width:700px){
  .sys img{height:auto}

  /* Dotyková plocha teček 44 × 44 px (projektové pravidlo). Puntík
     zůstává 26 px, zvětšuje se jen plocha kolem něj — proto
     background-clip:content-box, jinak by se roztáhla i barva. */
  .cfg2-picks .dot2{
    width:44px;height:44px;padding:9px;border:0;
    background-clip:content-box;background-origin:content-box;
    box-shadow:inset 0 0 0 1px var(--line)}
  .cfg2-picks .dot2[aria-pressed=true]{
    outline:2px solid var(--ink);outline-offset:-7px;box-shadow:none}
}


/* ═══════════════════════════════════════════════════════════════════
   KONFIGURÁTOR — MINIATURA A STÍN (ZADANI-CFG-DOLADENI.md)

   1 · Miniatura složeného vozu stojí v téže řadě jako chipy a tečky,
   hned za nimi, takže je odezva na klik v zorném poli. Poměr stran je
   z fotky (940 × 520), aby se nikde nedeformovala.                  */
.cfg2-thumb{flex:none;width:clamp(112px,13vw,168px);height:auto;
  border-radius:var(--r-sm);background:var(--bg-2);
  transition:opacity var(--t-fast) var(--ease)}
@media(prefers-reduced-motion:reduce){.cfg2-thumb{transition:none}}
/* Na telefonu má řada voleb dva řádky, miniatura patří pod ně a na
   celou šířku sloupce — vedle teček by je zúžila pod dotykový práh. */
@media(max-width:700px){
  .cfg2-thumb{width:min(220px,60%);margin:2px auto 0}
  .cfg2-picks{row-gap:6px}
}

/* 2 · Stín pod vozem. Nebyl jen slabý — ležel CELÝ ZA vozem: jeho
   spodní hrana končila 4 px nad spodkem kresby (na 1440 dokonce 34 px),
   takže z něj pod koly nebylo vidět nic a vůz na bílé ploše plaval.

   Řeší se to dvěma věcmi: posadit elipsu na dosedovou čáru kol (proto
   záporné `bottom`, aby polovina přesahovala pod kresbu) a přidat sílu.
   Střední ze tří zkoušených sil, snímek `_upravy/cfg-stin-tri-sily.png`:
   krytí jádra 0,42 → 0,58, poloměr o třetinu širší, spád pořád měkký.  */
.sys .sys-floor{
  left:8%;width:74%;height:30px;bottom:calc(6.9% - 15px);
  background:radial-gradient(ellipse at 50% 50%,
    rgba(0,0,0,.58) 0%, rgba(0,0,0,.20) 46%, transparent 74%);
  filter:blur(9px)}
/* Na telefonu sedí spodek kresby přesně na spodku scény, takže se
   elipsa vystředí na něj. */
@media(max-width:700px){ .sys .sys-floor{bottom:-15px} }


/* ═══════════════════════════════════════════════════════════════════
   VĚJÍŘ NA POČÍTAČI — celý v okně, jádro na středu
   (ZADANI-VEJIR-DESKTOP.md; platí od 721 px, telefon se nemění)

   Naměřeno před úpravou: `.fan-svg` měl napevno 1680 px a v okně se
   nevešel nikdy — trčel ven o 68 px při 1920 a o 261 px při 1440.
   Jádro s logem proto sedělo 125 až 188 px napravo od středu okna
   a levá třetina zůstávala prázdná.

   Zvolená cesta je A ze zadání: kresba na šířku okna, nadpis a čísla
   nad ní. Jádro tím sedne na střed samo — v souřadnicích kresby leží
   na 600 z 1200, tedy přesně v polovině.

   Šířku drží tři meze naráz:
     · okno mínus 48 px, ať zbude okraj,
     · 1600 px, aby kresba na velkém panelu nepřerostla,
     · a výška: (100svh − 320 px) × 1200/560, protože nad kresbou
       stojí nadpis s čísly a sekce se musí vejít na jednu obrazovku.  */
@media(min-width:721px){
  /* Mezera ve sloupci je menší, než byla: zvednutí popisků pod čísly
     z 12 na 13 px ukroji z výšky, kterou si bere kresba vějíře, a bez
     tohohle by kresba nedosáhla na dopolední velikost (naměřeno
     1107 proti podlaze 1110). Se stlačenou mezerou vychází 1118. */
  .sc-fan .wrap{display:flex;flex-direction:column;
    align-items:center;justify-content:center;height:100%;
    gap:clamp(2px,0.4vh,6px)}

  /* Odsazení nad hlavičkou je jen odstup od lišty, ne rytmus —
     ušetřené pixely jdou vějíři a mezeře pod čísly. */
  .sc-fan .bb-top{position:static;inset:auto;flex:none;
    display:flex;flex-direction:column;align-items:center;
    gap:clamp(6px,1vh,14px);padding-inline:0;width:100%;
    padding-top:calc(var(--lista-v,87px) + 10px);padding-bottom:8px}
  /* Odstup nadpisu od čísel je o 38 px menší: přesně o tolik, o kolik
     se posunul rám vějíře dolů. Sloupec tím dá vějíři stejnou výšku
     jako předtím, kresba zůstane velká a SPODNÍ HRANA kresby se nehne —
     kdyby se hnula, prodlouží se #hero a pravidlo 2 na nízkých oknech
     spadne o dalších 38 px (vyzkoušeno). */
  .sc-fan .sec-head{max-width:min(820px,84vw);text-align:center;
    margin-bottom:0}
  .sc-fan .sec-head .lead{margin-inline:auto}
  /* order:0 vrací čísla ZA nadpis — ve styles.css mají order:-1,
     protože na dvousloupcovém rozvržení stála vlevo nahoře. */
  .sc-fan .fan-stats{position:static;width:auto;order:0;
    display:flex;flex-direction:row;justify-content:center;
    gap:clamp(24px,4vw,72px);margin:0;text-align:center}
  .sc-fan .sec-head{order:-1}

  .sc-fan .fan{position:relative;left:auto;top:auto;right:auto;bottom:auto;
    transform:none;margin:0 auto;align-self:center;
    /* Výšku si kresba bere ze zbytku sloupce. Zkoušela jsem místo toho
       pevných `100svh − 330px`, ale sekce pak přetékala o 24 px a
       posun rozvržení se stejně nezměnil — tak zůstal flex. */
    flex:1 1 auto;min-height:0;height:auto;width:auto;
    aspect-ratio:1200/560;
    max-width:min(calc(100vw - 48px), 1600px);
    /* Uzly jsou ve styles.css zmenšené k jádru (scale .64), takže horní
       část rámu kresby zůstává prázdná. Záporný okraj ji vytáhne pod
       text, aby mezi nadpisem a paprsky nezel pruh. */
    /* Záporný okraj je zpátky na původní hodnotě (21. 8. večer).
       Posunutím RÁMU dolů se sice udělala mezera k číslům, ale rám si
       bere výšku ze zbytku sloupce, takže se o ni zmenšila i kresba —
       z 1110 na 1046 px. Michaela: „ten vějíř moc malý, dřív to bylo
       hezčí." Mezeru proto dělá posun SAMOTNÉ KRESBY uvnitř rámu
       (viz .fan-svg / .fan-canvas níž), ne posun rámu. */
    /* Rám jde o 40 px dolů a týchž 40 px se vrátí dole (21. 8. večer).
       Posun dělá mezeru k číslům — bez něj vychází 15 px místo
       požadovaných 40. Spodní okraj tam musí být, jinak rám přesahuje
       pod dolní hranu sekce a pravidlo 2 to hlásí jako chybějící
       pixely (naměřeno 758 px proti oknu 720). */
    margin-top:calc(clamp(-90px,-7vh,-40px) + 40px);
    margin-bottom:40px}
  /* Kresba se posouvá UVNITŘ rámu, rám zůstává, jak byl (21. 8. večer).
     Pod kresbou bylo 73 px prázdna, nad ní 30 — posun o 38 px dolů
     z toho prázdna ubere a nechá kresbě její velikost.
     Posouvají se OBĚ vrstvy stejně, takže střed paprsků zůstává
     přesně na logu (naměřený odstup 0 px). */
  .sc-fan .fan-svg,.sc-fan .fan-canvas{
    position:absolute;inset:0;width:100%;height:100%;
    transform:translateY(38px)}

  /* KRESBA VĚJÍŘE JE PŘÍLIŠ MALÁ (21. 8.)
     Michaela: „tady je vějíř nějak moc malý." Není to měřítkem rámu —
     rám má 1467 × 684 a zabírá skoro celé okno. Je to tím, že
     styles.css stahuje uzly ke středu (.sc-fan .fnode{scale(.64)}),
     takže kresba měla jen 710 × 381, tedy 48 % šířky rámu. Zbytek byl
     prázdný: 208 px nad kresbou a 73 pod ní.

     Nejlíp to vystihne jedno srovnání: řádka tří čísel nad vějířem je
     890 px široká, kresba měla 710. Vějíř byl užší než popisek nad ním.

     Uzly proto jdou zpátky na svou vlastní velikost. Naměřeno na
     1920 × 1080: kresba 1110 × 559, prázdno nad ní 29,6 px a pod ní
     73,3 px, popisky 29,9 px. Nic nepřesahuje okno ani při 1680, 1440
     a 1280 px, ani při výškách 900 a 720.

     Platí jen nad 720 px. Na telefonu je vějíř otočený a rám stažený
     na kresbu, tam scale(.64) zůstává. */
  .sc-fan .fnode{transform:scale(1)}

  /* Popisky nesmí spadnout pod 13 px. Vykreslená velikost je
     font-size × (šířka kresby / 1875). Nejužší případ je okno
     1280 × 800, kde na kresbu zbyde 1 012 px — tam dnešních 16 jednotek
     dá 8,6 px. Proto 24,5, což dá 13,4 px. Na širokém panelu tím
     popisky povyrostou na 19 px, a to je v pořádku: kresba je tam
     taky větší.
     Naměřeno už před úpravou: na 1280 px měly popisky 12,08 px,
     tedy pod podlahou stupnice. */
  /* Popisky zmenšené z 24,5 na 19 jednotek (21. 8. večer).
     Michaela: „ty názvy jsou zas moc velké." Vyrostly proto, že se
     celý den hlídala „šířka kresby" měřená jako obálka uzlů — a ta se
     rovná obálce TEXTŮ (1148 px), ne vějíře (952 px). Podmínka se tedy
     dala splnit zvětšením písma, což se stalo: z 19,2 na 30,1 px na
     obrazovce. Devatenáct jednotek dá 25,3 px na 1920 a 14,1 px na
     1280 — nad podlahou 13 px i na nejmenším okně. */
  .sc-fan .fn-t{font-size:19px}
  /* Na širokém okně jde písmo ještě níž, na 16 jednotek: tam se
     popisky nesmí táhnout přes ikony (obálka textů byla 1238 px proti
     1094 px ikon) a 16 × měřítko dá pořád 20,5 px na obrazovce.
     Na užších oknech zůstává 19, jinak by popisek spadl pod 13 px —
     na 1280 × 720 vychází 13,1 px a níž se jít nedá. */
  @media(min-width:1400px){ .sc-fan .fn-t{font-size:16px} }
  /* Krajní popisky zarovnané DOVNITŘ. Popisek je širší než destička
     pod ním (190 proti 93 px), takže krajní dva přečnívaly přes celý
     vějíř — obálka textů 1205 px proti 1094 px ikon. Zmenšit písmo
     natolik, aby se to srovnalo, by znamenalo jít pod čitelnost.
     Zarovnáním k vnitřní hraně destičky se obálka textů vejde pod
     vějíř (1030 px) a popisek zůstane u své destičky. */
  .sc-fan .fnode[data-s="0"] .fn-t{text-anchor:start}
  .sc-fan .fnode[data-s="5"] .fn-t{text-anchor:end}

  /* VĚJÍŘ SE ROZTAHUJE DO STRAN, NE MĚŘÍTKEM.
     Zvětšit uzly měřítkem šlo, ale vějíř se rozevírá NAHORU — každé
     zvětšení tím zvedlo horní uzly a snědlo mezeru k číslům
     (naměřeno −32 px při měřítku 1,14). Posun po ose x rozpětí ikon
     zvětší a výšky se nedotkne: 952 → 1137 px na 1920 × 1080,
     mezera zůstává 42 px. Hodnoty jsou úměrné vzdálenosti uzlu od
     středu výkresu (600), takže se vějíř roztáhne rovnoměrně. */
  .sc-fan .fnode{transform-box:view-box;transform-origin:600px 548px}
  .sc-fan .fnode[data-s="0"]{transform:translateX(-40px)}
  .sc-fan .fnode[data-s="1"]{transform:translateX(-26px)}
  .sc-fan .fnode[data-s="2"]{transform:translateX(-9px)}
  .sc-fan .fnode[data-s="3"]{transform:translateX(9px)}
  .sc-fan .fnode[data-s="4"]{transform:translateX(26px)}
  .sc-fan .fnode[data-s="5"]{transform:translateX(40px)}

  .sc-fan .note-wrap{position:absolute;left:50%;bottom:clamp(10px,1.6vh,24px);
    transform:translateX(-50%);text-align:center}
}


/* ═══ POPISKY VRSTEV VEDLE DIAGRAMU, NE NA NĚM (21. 8.) ═════════════
   Michaela: „u těch vrstev je zase přes nápis ta vrstva."

   Naměřeno na 1920 × 1080: obrázek leží na x 532–1388 a popisky jsou
   umístěné v procentech TÉŽE figury, takže na něm ležely VŠECHNY
   ČTYŘI, dohromady 34 955 px². Nejvíc bil do očí „Energy layer" —
   začínal přesně na levé hraně obrázku a `max-width:9.6%` ho stlačila
   na 82 px, takže se lámal na tři řádky a potkával se s nápisem
   POWER PLANT, který je součástí obrázku.

   Ostatní tři nebyly „správně" — jen ležely nad tmavšími místy, kde
   to nebylo tak vidět. Proto se nestěhuje jeden, ale všechny.

   Popisky jdou do sloupce NALEVO od diagramu: pravá hrana 24 px před
   levou hranou obrázku, šířka 220 px, text zarovnaný doprava k němu.
   Svislou polohu si každý nechává svou, takže pořád ukazuje na svou
   vrstvu. Překryv je tím nulový z principu, ne z nastavení.

   Naměřeno po úpravě na 1920, 1680, 1440 i 1280: překryv 0 px²,
   rozptyl levých hran 0 px, rozptyl šířek 0 px, písmo 14,7–17 px.

   Specificita `.lay-desky .lay-tag` je nutná: styles.css dává
   `max-width` jednotlivým třídám (.t1 … .t4), a ty by pouhé
   `.lay-tag` přebily.

   Pod 861 px se popisky ve styles.css skrývají úplně, takže se
   telefonu nedotýkají. */
@media(min-width:861px){
  /* Sloupec popisků má vlastní rám u levé hrany scény, se stejnou
     výškou a stejným středem jako diagram — svislé polohy v procentech
     tak pořád ukazují na tytéž vrstvy (21. 8. odpoledne). */
  /* Popisky stojí TĚSNĚ VLEVO od obrázku, ne u kraje okna — jinak se
     nečtou jako popisky té stavby, ale jako samostatný sloupec
     (naměřeno 502 px odstupu). Teď je to 24 px. */
  .lay-tagy{position:absolute;top:50%;transform:translateY(-50%);
    left:auto;right:calc(48px + var(--lay-w));
    height:var(--lay-h);width:min(200px,14vw);pointer-events:none;z-index:4}
  .lay-tagy .lay-tag{
    left:0;right:auto;width:100%;max-width:none;
    text-align:right}
}


/* ═══ HISTORIE: OSA LET MÍSTO UKAZATELE POSTUPU (21. 8.) ════════════
   Michaela: „nevím, zda by se u té historie neměla ta lišta posouvat
   vždy na nějakou část v historii tak aby to sedlo na tu lištu."

   Nesedělo to a nešlo to nastavit — jeden bod neumí ukázat rozmezí.
   Kapitola 01 je „1897 — 1972", tedy 75 let; bod umí ukázat jeden rok,
   takže ve 74 letech ze 75 ukazoval vedle. Naměřeno skenem po 8 px:
   ve chvíli, kdy se popiska přepnula na „2000 — 2026", stál bod na
   roce 1972 — dvacet osm let před érou, kterou popiska jmenovala.

   Osa je teď lineární v letech (1897 vlevo, letošek vpravo) a každá
   kapitola má svůj PÁS. Polohy dosazuje script.js z data-era.

   Bod i výplň odcházejí: ukazovaly postup vyprávěním, ne roky.
   Postup nese počitadlo 01 / 04 nad kapitolami, které tam už je. */
/* UKAZATEL SE ZASE KRESLÍ (24. 8.). Byl vypnutý přes display:none,
   takže po ose se scrollem nic nepohybovalo — script.js mu počítal
   polohu, ale nebylo co nakreslit. Naměřeno: #hsFill i #hsDot měly
   v každém bodě sekce rámeček 0 × 0 px. */
/* JEDNA RŮŽOVÁ, JEDEN KONEC (25. 8.). Na lince byly dvě: pás éry
   v plné značkové růžové a přes něj výplň postupu v téže barvě při
   krytí 0,55. Každá končila jinde — naměřeno až 812 px rozdílu, tedy
   sytý pruh běžící skoro celou osu ZA puntíkem. Čtenář viděl
   vybarvenou čáru pokračovat dávno za ukazatelem a mezi tím ještě
   bledší odstín téže barvy.

   Vybarvená je teď jen jedna věc: co je za tebou. Plná růžová, konec
   přesně pod puntíkem. Éru neukazuje pruh, ale její zastávka nad
   linkou, která se rozsvítí — jiná role, jiná forma, ne dvě krytí
   jedné barvy na jedné čáře. */
.hs-fill{position:absolute;left:0;top:50%;height:8px;margin-top:-4px;
  border-radius:4px;background:var(--hs-pas,var(--pink));opacity:1;
  pointer-events:none}
.hs-dot{position:absolute;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;
  border-radius:50%;background:var(--hs-pas,var(--pink));
  box-shadow:0 0 0 3px var(--hs-bg,#1F2226);
  pointer-events:none;z-index:2}

/* Osa je vyšší, aby se do ní vešel činný pás — čára samotná zůstává
   tenká, kreslí ji ::before uprostřed. */
.hs-track{height:6px;background:none;overflow:visible}
.hs-track::before{content:"";position:absolute;left:0;right:0;top:50%;
  height:2px;margin-top:-1px;background:var(--line);border-radius:var(--r-xs)}

/* Pás éry ani stopa se na lince nekreslí — obojí byla táž růžová
   s jiným krytím a s jiným koncem než ukazatel. Prvky zůstávají
   v HTML i ve výpočtu, jen se nezobrazují: script.js jim dál počítá
   polohu a z ní se bere, kde která éra na ose leží. */
.hs-pas,.hs-stopa{display:none}
.hs-pas,.hs-stopa{position:absolute;top:50%;pointer-events:none;
  border-radius:var(--r-xs);background:var(--hs-pas,var(--pink))}
/* Činný pás: 6 px, plná značková růžová, krytí bere po své kapitole. */
.hs-pas{height:6px;margin-top:-3px;opacity:0}
/* Stopa: týž pás, 2 px a 22 %. Jen přibývá — kapitola, kterou čtenář
   minul, na ose zůstane, takže na poslední leží všech 129 let naráz. */
.hs-stopa{height:2px;margin-top:-1px;opacity:0}
/* Stopa je 14 %, ne 22. Při 22 % se její směs s tmavým pozadím
   trefí do rozsahu, ve kterém se hledá činný pás — (76, 42, 60) je
   pořád „růžová", jen posunutá k pozadí, takže se stopa dá zaměnit
   s pásem. Při 14 % vychází (62, 41, 53), což už je jednoznačně
   stopa: tišší, ale na tmavém pozadí pořád vidět. */
.hs-stopa.videt{opacity:.14}

/* ═══ BUŇKY V KARTÁCH KONKURENCE NEJSOU NALEPENÉ (26. 8.) ═══════════
   Michaela: „u té historie jsou ty buňky moc nalepené na tom textu."
   Naměřeno na obou šířkách: mezi řádky UVNITŘ jednoho odstavce je
   20–21 px, mezi dvěma sousedními buňkami 6,7 px. Mezera mezi bloky
   tedy byla třikrát menší než mezera mezi řádky uvnitř bloku a oko to
   nečetlo jako dva bloky, ale jako jeden souvislý text.

   Mezera se zvedá na úroveň řádkového prokladu. Váže se na výšku okna,
   protože na nízkých oknech (1280 × 720) je kapitola se třemi kartami
   nejvyšší ze všech a plných 20 px by ji přetáhlo přes osu; svislé
   odsazení uvnitř karty to zčásti vrací zpátky. Písmo, barvy ani texty
   se nemění. */
/* Specificita `.sc-wipe--hist` je nutná: o kus níž je pro tytéž karty
   pravidlo s odsazením na nízká okna a pouhé `.hs-firm` by ho nepřebilo. */
.hs-firm,
.sc-wipe--hist .hs-firm{gap:clamp(11px,calc(7.1vh - 39px),22px);
  padding-block:clamp(5px,calc(2.4vh - 12px),16px)}

/* ═══ MĚŘÍTKO NA SAMOTNÉ LINCE (25. 8.) ═════════════════════════
   Ryska nese rok polohou, ne textem, takže nepotřebuje ani pixel
   výšky navíc — a právě na výšce ztroskotala řada letopočtů pod osou,
   která se na nízkých oknech musela vypnout. Barva je táž jako
   u tlumeného textu sekce (--hs-faint), takže se čte na tmavé lince
   i přes růžovou výplň a překlopí se do světla spolu se scénou. */
.hs-mez{position:absolute;top:50%;width:2px;height:10px;margin-top:-5px;
  border-radius:1px;background:var(--hs-faint,rgba(255,255,255,.58));
  pointer-events:none;z-index:1}
.hs-mez.mimo{opacity:0}

/* Značky pod osou sedí na svých letech, ne po třetinách. Levá se
   zarovnává začátkem, pravá koncem, ať nepřetečou. */
/* Značky 1897 · 2007 · Today zůstávají jako měřítko osy, ale ustupují
   zastávkám: jsou drobnější a odsazené, aby se s nimi nepraly. */
.hs-ticks{display:block;position:relative;height:1.2em;margin-top:1.1em;opacity:.72}
.hs-ticks i{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.hs-ticks i[data-rok="1897"]{transform:none}
.hs-ticks i[data-rok="today"]{transform:translateX(-100%)}
/* Dnešek se na poslední kapitole rozsvítí do značkové růžové — je to
   jediné místo, kterého se osa v tu chvíli dotýká. Nezvětšuje se nic:
   dominantu dělá poloha a to, čím ten prvek je (pravidla/
   kompozice-typografie.md, bod B3). */
/* Značka dneška bere TÉŽ barvu jako pás — na finále je tím stejná
   --pink-ink jako „So are we." vedle, takže na obrazovce zůstane
   jedna růžová místo tří. */
.hs-ticks i.dnes{color:var(--hs-pas,var(--pink))}
/* Popisky v celé historii jedou na --fs-label, což je na počítači
   12 px — značky osy, popiska éry, počitadlo 01/04, hlavička sekce
   i popisky sloupců. Podlaha pro tuhle dávku je 13, tak se token
   v tomhle bloku zvedne na 13. Jedním místem, ne osmi selektory;
   verzálky 12 px brandmanuál dovoluje, takže to není oprava chyby,
   ale vyrovnání s prahem, který si dávka určila. */
.sc-wipe--hist{--fs-label:13px}


/* ═══ DIAGRAM VRSTEV JE DOMINANTA, NE POLOVINA (21. 8. odpoledne) ═══
   Michaela: „ty vrstvy musí být větší."

   Naměřeno: obrázek zabíral 41,5–48,9 % šířky okna a 56–61 % výšky,
   vpravo od něj zbývalo 374–532 px prázdna. Svisle přitom místo
   nebylo — nad ním seděl hlavičkový blok a pod ním zbývalo 26 px.
   Zvětšit ho posunutím tedy nešlo, muselo se změnit rozvržení.

   Brzdila ho ŠÍŘKA OBSAHOVÉHO RÁMU: `.wrap` má na 1920 px jen 1068,
   takže i kdyby diagram zabral celý, vyjde 55,6 % — pod prahem 60 %.
   Musel proto z rámu ven.

   Diagram je teď absolutní, vysoký 84 % okna a zarovnaný k pravému
   okraji s odstupem 24 px; hlavička zůstává vlevo a je vedle něj, ne
   nad ním. Naměřeno po úpravě: 61,2–68 % šířky, 84 % výšky, vpravo
   24 px na všech čtyřech oknech.

   Popisky vrstev jsou umístěné v procentech diagramu, takže se s ním
   zvětšily samy — jejich poloha vůči vrstvám se nezměnila ani o pixel
   a sloupec vlevo od obrázku drží dál (překryv 0, rozptyl 0). */
@media(min-width:901px){
  /* 21. 8. večer: diagram na 84 % výšky si sedl na nadpis i perex —
     naměřeno 159 000 až 260 000 px² textu pod obrázkem. Text má
     přednost, takže diagram jde na 70 % výšky a scéna se rozdělí na
     tři svislé pruhy vedle sebe: text · popisky · diagram. Žádný z nich
     do druhého nezasahuje, takže je překryv nula z principu.

     Ukotvení je CELÁ SCÉNA, ne .sc-in: ta má výšku podle obsahu (po
     vyjmutí diagramu z toku jen 436 px), takže by se diagram vystředil
     v ní a vytekl nad horní hranu okna — naměřeno y −160 při 1440.

     Šířka diagramu se počítá z jeho výšky poměrem stran 2000/1545. Z ní
     se odvozuje i poloha sloupce popisků a šířka textu, takže se všechny
     tři pruhy posouvají spolu s oknem a nikdy se nepřekryjí.

     29. 8.: DIAGRAM SE ZMENŠIL ZE 70 NA 60 vh. Textový sloupec téhle
     scény stál na x = 32, kdežto #onelayer, #patent, #desetkrat, #scHist
     i #zaver drží 201 — byla to jediná sekce mimo rodinu. Posunout text
     doprava ale znamená vzít tu šířku někomu jinému: mezi textem
     a diagramem stojí ještě sloupec popisků a ten se s diagramem musí
     hnout. Změřeno: při 70vh zbývalo na text od okraje rodiny jen 188 px,
     při 60vh 346 — a v obou případech se nadpis „The vehicles are ready."
     lámal na šest řádků po jednom slově. Při 56vh zbývá 389, což je právě
     nad šířkou slova „The vehicles" (380 px na 52 px písmu), takže se
     nadpis láme na dva řádky jako všude jinde. Diagram je pořád největší
     prvek scény: 604 × 467 proti textu 389 × 420. */
  .sc-wipe--layers{--lay-h:56vh;--lay-w:calc(var(--lay-h) * 1.2945);
    --rodina-x:max(var(--pad), calc((100vw - var(--maxw))/2 + var(--pad)))}
  .sc-wipe--layers .wrap{max-width:none;padding-inline:clamp(20px,2.2vw,40px)}
  .lay-desky{position:absolute;right:24px;top:50%;transform:translateY(-50%);
    height:var(--lay-h);width:auto;max-width:none;margin:0}
  /* Hlavička se zúží, aby diagramu neseděla na cestě. */
  /* Hlavička se odsune za sloupec popisků a leží přes prázdný levý
     horní roh diagramu — v kresbě tam nic není. Do sloupce popisků
     ale zasahovat nesmí, jinak se tiskne text přes text. Odsazení je
     šířka sloupce (17vw, nejvýš 220) plus 28 px vzduchu. */
  /* Text dostane přesně to, co zbyde vlevo od popisků. */
  /* Text začíná na okraji rodiny. Odsazení je rozdíl mezi tím okrajem
     a odsazením obalu téhle scény — obal je totiž přes celou šířku,
     aby se do ní vešel diagram. Šířka je pak přesně to, co zbyde
     vlevo od sloupce popisků, s 28 px vzduchu mezi nimi. */
  .lay-copy{margin-left:calc(var(--rodina-x) - clamp(20px,2.2vw,40px));
    max-width:calc(100vw - 76px - var(--lay-w) - min(200px,14vw)
                   - var(--rodina-x))}
}


/* Popisky ve vějíři a ve vrstvách jedou na --fs-label, což je na
   počítači 12 px — popisky pod čísly, očka sekcí a „Layer 1…4".
   Podlaha pro tuhle dávku je 13, tak se token v obou scénách zvedne,
   stejně jako se to udělalo v historii. Verzálky 12 px brandmanuál
   dovoluje; není to oprava chyby, ale vyrovnání s prahem dávky. */
.sc-fan,.sc-wipe--layers{--fs-label:13px}
/* Očko „i" u vějíře má velikost napsanou natvrdo ve zkratce `font:`,
   takže ho token nezvedne — musí se přepsat zvlášť. */
.sc-fan .note-i{font-size:13px}


/* ═══ SALES NA NÍZKÉM OKNĚ: #why A #economics SE VEJDOU (21. 8.) ════
   Pravidlo 2 hlásilo u obou sekcí schodek na výšce 720 px: #why
   potřebovalo 668 px proti 633 a #economics 674. Na rozdíl od hera to
   nebyla chyba měřidla — schodek 35 a 41 px se nerovná výšce lišty,
   je to opravdový přetok.

   Ubralo se JEN ze vzduchu a z výšky fotky, ne z textu: žádné slovo
   nezmizelo, žádné písmo nekleslo pod 13 px a dotykové cíle zůstávají.

   #why      · odsazení sekce 20/30 → 8/24 px, odstup hlavičky 4 → 0,
               fotka v první řadě dostala strop 330 px (byla 383)
   #economics· odsazení sekce 32/48 → 12/28 px, odstup hlavičky 12 → 0,
               panely kalkulačky 14 → 10 px svisle, pole posuvníků
               a velké číslo o pár pixelů těsněji

   Naměřeno po úpravě na výšce 720: #why 541–603 px a #economics
   609–618 px proti prahu 633 na šířkách 1280, 1440, 1512 i 1728.
   Na 900 a 1080 se nemění nic — pravidlo platí jen do 800 px výšky. */
@media(min-width:721px) and (max-height:800px){
  #why{padding-block:8px 24px}
  #why .sec-head{margin-bottom:0}
  #why figure img,#why picture img{max-height:330px;object-fit:cover}
  #economics{padding-block:12px 28px}
  #economics .sec-head{margin-bottom:0}
  #economics .econ-in,#economics .econ-out{padding-block:10px}
  #economics .eo-big{margin-block:2px}
  #economics .efield{margin-bottom:6px}
}


/* ═══ FLOTILA V KONFIGURÁTORU (21. 8.) ══════════════════════════════
   Ovladač počtu stojí u vozu, ne o obrazovku níž — člověk si vybere
   nástavbu a hned vidí, co znamená „padesát". Posuvník je týž tvar
   jako ten v ekonomice, protože je to týž údaj.

   Plátno pod ním kreslí depo. Výška je v poměru k šířce, aby se řady
   měly kam sbíhat; víc než 200 px si sekce dovolit nemůže, jinak
   spadne pravidlo 2. */
/* Popisky v konfigurátoru jedou na --fs-label, což je na počítači
   12 px. Podlaha je 13, tak se token v sekci zvedne — stejně jako se
   to udělalo v historii, ve vějíři a ve vrstvách. */
#configure{--fs-label:13px}
.cfg2-fleet{margin-top:clamp(10px,1.6vh,18px)}
.cfg2-fleet label{display:flex;justify-content:space-between;align-items:baseline;
  gap:12px;font-size:13px;color:var(--muted);margin-bottom:6px}
.cfg2-fleet label .ev{color:var(--ink)}
.cfg2-fleet label .ev b{font-family:'Panchang','PanchangVariable',Georgia,serif;
  font-weight:400;font-variant-numeric:tabular-nums}
.cfg2-fleet input[type=range]{width:100%;display:block}
.cfg2-fleet .erng{display:flex;justify-content:space-between;
  font-size:13px;color:var(--muted);margin-top:4px}
.cfg2-depo-lab{margin:4px 0 0;font-size:13px;color:var(--muted);
  font-variant-numeric:tabular-nums}
.cfg2-depo{display:block;width:100%;height:clamp(120px,16vh,182px);
  margin-top:clamp(6px,1vh,12px)}
@media(max-width:700px){
  .cfg2-depo{height:clamp(74px,10vh,110px)}
}


/* ═══ HISTORIE: OSA JE PÁTEŘ SEKCE (21. 8. večer) ═══════════════════
   Michaela: „pořád nefunguje ani ta časová lišta." Mechanicky
   fungovala — pásy sedí na letech na desetinu pixelu — ale stála
   ÚPLNĚ DOLE: svislý střed na 78 % výšky scény, 2px vlásek pod
   obsahem. Sekce se tím četla jako kapitola, pod kterou je čárka,
   ne jako čas, po kterém se člověk pohybuje.

   Rešerše (NYT „Shark and Minnow", Bloomberg „What's Really Warming
   the World", produktové stránky Apple) říká totéž: to, po čem se
   roluje, má být hlavní prvek, ne ozdoba pod textem — a ukazatel
   postupu má být vidět celý, ne jen bod, ve kterém člověk je.

   Osa je proto v DOM hned za hlavičkou sekce a obsah visí pod ní. */
.hs-scrub{padding-top:clamp(4px,0.6vh,8px);padding-bottom:clamp(10px,1.6vh,18px)}
/* Nad osou musí zbýt místo na zvednutou řadu zastávek — bez toho jim
   čárky procházely hlavičkou sekce. 56 px je výška vyšší zastávky
   (popisek 13 px + čárka 34 px + mezera) plus vzduch. */
.hs-scrub-top{margin-bottom:clamp(24px,5vh,56px)}


/* Dráha už není vlásek: je to hlavní prvek sekce, tak tak vypadá. */
.hs-track{height:10px}
.hs-track::before{height:4px;margin-top:-2px}
.hs-pas{height:8px;margin-top:-4px}
.hs-stopa{height:4px;margin-top:-2px}

/* ZASTÁVKY — všechny čtyři éry stojí na ose pořád, ta čtená se
   rozsvítí. Člověk tak vidí, kde je, co má za sebou a co přijde. */
.hs-zast{position:absolute;bottom:calc(50% + 9px);
  display:flex;flex-direction:column;align-items:center;gap:5px;
  pointer-events:none;white-space:nowrap;transform:translateX(-50%)}
.hs-zast b{display:block;font-family:var(--font-text);font-weight:600;
  /* Prostrkání pryč: štítek je teď holý letopočet a každý pixel šířky
     jde na úkor mezery mezi dvěma sousedními štítky. */
  font-size:13px;letter-spacing:0;line-height:1;
  /* Neaktivní popisek se míchá směrem k pozadí, ne k průhlednosti:
     drží čitelnost v obou stavech scény (tmavém i prosvětleném) a
     přitom nechá činnou zastávku jasně vyhrát. Naměřeno: neaktivní
     8,9 : 1 bylo skoro tak silné jako činná („today" 10,2 : 1) a na
     ose nešlo poznat, kde čtenář je.
     Míchá se z --hs-fg a --hs-bg, tedy ze DVOU NEPRŮHLEDNÝCH barev:
     s průhledným --hs-mut vyšla kontrole vzhledu 1,31 : 1, protože
     alfa se do color-mix propíše a výsledek už nejde přečíst jako
     hotová barva. */
  /* Ztlumení je 58 % na krajích a mizí uprostřed překlopení scény
     (--hs-stred jde od 0 do 1 a zpět). Proti tmavé i bílé je 58 %
     dost — štítek má 5,9 : 1 a činná zastávka nad ním jasně vyhrává.
     Proti STŘEDNÍ ŠEDÉ uprostřed překlopení ale žádná ztlumená šedá
     4,5 : 1 nedá (naměřeno 2,98 při 58 %, 3,77 při 72 %), takže se
     tam ztlumení vypne. */
  color:color-mix(in srgb,
    var(--hs-fg,#fff) calc(58% + 42% * var(--hs-stred,0)),
    var(--hs-bg,#1F2226));
  font-variant-numeric:tabular-nums;
  /* Barva se NEPŘECHÁZÍ. Pozadí scény se ve finále překlopí skokem
     (řídí ho průběh scrollu), kdežto přechod barvy trval 260 ms —
     a v tom okamžiku svítil bílý štítek na bílém pozadí: naměřeno
     2,09 : 1 v bodě 0,92 průběhu. Bez přechodu se štítek překlopí
     s pozadím zároveň a nikde nezmizí. */
  transition:none}
/* Čárka míří dolů k ose, aby bylo poznat, ke kterému místu popisek patří. */
.hs-zast i{display:block;width:2px;height:12px;
  background:var(--hs-mut,rgba(255,255,255,.45));
  transition:background var(--doba) var(--krivka)}
.hs-zast.on i{background:var(--hs-pas,var(--pink))}
.hs-zast.on b{color:var(--hs-fg,#fff);font-weight:700}
/* Dvě úrovně: tři poslední zastávky leží na ose blízko sebe (1232,
   1347 a 1456 px při šířce 1068) a popisky jsou 90 až 100 px široké,
   takže na jedné úrovni na sebe lezou. Liché se proto zvednou výš
   a jejich čárka je delší, aby bylo poznat, kam ukazuje. */
.hs-zast[data-k="1"],.hs-zast[data-k="3"]{bottom:calc(50% + 31px)}
.hs-zast[data-k="1"] i,.hs-zast[data-k="3"] i{height:34px}
/* Krajní zastávky se zarovnávají k hraně osy, ne na střed —
   jinak by první visela vlevo mimo a poslední vpravo mimo. */
.hs-zast--zacatek{transform:none;align-items:flex-start}
.hs-zast--konec{transform:translateX(-100%);align-items:flex-end}

/* Jména firem se nesmí lámat uvnitř svého štítku — „Better Place"
   i „Aulton Tech" se lámaly na dva řádky. */
.hs-logo--slot b{white-space:nowrap}


/* Po přesunu osy nahoru zbylo pod obsahem mrtvé místo — naměřeno
   199 až 264 px souvislého prázdna. Obsah kapitoly se proto rozloží
   do zbytku scény: .hs-body si vezme, co po hlavičce a ose zbude,
   a kapitola se v něm vystředí. Prázdno se tím rozdělí nad a pod
   obsah místo aby zelo dole. */
.sc-wipe--hist .wrap.hs{display:flex;flex-direction:column;height:100%}
/* Kapitoly jsou uvnitř absolutní, takže .hs-body nemá žádnou vlastní
   výšku a flex-grow ji nenatáhl (naměřeno 450 px v 907px sloupci).
   Dostane proto výšku spočítanou: okno minus hlavička, osa a odsazení.
   Prázdno se tím rozdělí nad a pod obsah místo aby zelo dole. */
.sc-wipe--hist .hs-body{flex:1 1 auto;position:relative;
  min-height:calc(100svh - 430px)}
/* Obsah kapitoly se ve svém prostoru ROZTÁHNE, ne vystředí: jinak
   plave uprostřed a nad ním i pod ním zůstane mrtvý pruh (naměřeno
   148 a 99 px). Karty firem tím dostanou celou výšku, text zůstává
   nahoře. */
.sc-wipe--hist .hs-chap .hs-copy{align-self:stretch}


/* Odsazení scény shora a zdola: po přesunu osy zůstal nahoře 152px
   pruh mezi lištou a hlavičkou a dole 96 px pod obsahem. Obojí je
   jen vzduch, ne rytmus — sráží se tak, aby žádný souvislý prázdný
   pruh nepřesáhl 80 px. */
/* Vzduch nad blokem a pod ním (24. 8.). Lišta je plovoucí a scénu jen
   překrývá, takže její výška je průhledná rezerva, ne odsazení sekce —
   vlastní odsazení jsou ta dvě čísla za ní: 64 px nahoře (Apple drží
   aspoň tolik nad nadpisem dlaždice) a 60 px dole. */
.sc-wipe--hist .sc-in{padding-block:calc(var(--lista-v,87px) + 64px) 60px}
.sc-wipe--hist .wrap.hs{padding-block:0}

/* ═══ KARTY SE NEROZTAHUJÍ DO PRÁZDNA (21. 8.) ══════════════════════
   Zkusila jsem dvě cesty, jak zaplnit místo pod krátkou kapitolou, a obě
   se změřily jako horší:
   1) vlásová páteř od činné zastávky dolů — u kapitoly 04 vedla skrz
      kartu s našimi čísly, přeškrtnutá karta;
   2) „align-items:stretch" na kapitole — karty se natáhly na celou výšku
      a uvnitř zůstalo 452 px prázdné plochy, což vypadá hůř než mezera
      pod nimi.
   3) svislé vycentrování obsahu na volné místo — mezera mezi osou
      a blokem vyskočila na 191–248 px, tedy hůř než teď.
   Zůstává tohle: karty jsou vysoké tak, jak jsou vysoká jejich čísla,
   kapitola visí hned pod osou a volné místo je POD obsahem, ne uvnitř
   něj. Největší mezera MEZI dvěma prvky je pak 47–55 px.            */
.sc-wipe--hist .hs-chap{align-items:stretch}
.sc-wipe--hist .hs-chap .hs-art{align-self:end}

/* ═══ ZASTÁVKY NA TELEFONU: JEN ČÁRKY (21. 8.) ══════════════════════
   Na 390 px se čtyři štítky („1897 — 1972", „2000 — 2026",
   „2014 — today", „today") nevejdou vedle sebe — lezly do sebe
   navzájem i do řady letopočtů pod osou: „2007" a „TODAY" se
   překrývaly se slovem „today". Naměřeno na snímku, ne odhadem.

   Text štítků proto na telefonu odchází a zůstávají čárky, které
   ukazují, kde éry na ose začínají. Éra sama je čitelná z letopočtu
   nad kapitolou, takže se čtenář o nic nepřipraví — a pás na ose
   pořád ukazuje, kde je. Na desktopu zůstává všechno beze změny. */
@media(max-width:700px){
  .hs-zast b{display:none}
  .hs-zast{bottom:calc(50% + 6px)}
  .hs-zast i{height:9px}
  .hs-zast[data-k="1"],.hs-zast[data-k="3"]{bottom:calc(50% + 6px)}
  .hs-zast[data-k="1"] i,.hs-zast[data-k="3"] i{height:9px}
}

/* Prostřední letopočet 2007 odchází na telefonu spolu se štítky:
   sedí na 85 % osy, tedy 331 px z 390, a „TODAY" zarovnané k pravému
   kraji na něj naléhalo — na snímku se ta dvě slova prolínala. Zmenšit
   písmo nejde, verzálkové popisky mají v design systému dno 12 px.
   Měřítko osy nesou její konce, 1897 a TODAY; rok, ve kterém čtenář
   právě je, stojí velkým písmem nad kapitolou. */
@media(max-width:700px){
  .hs-ticks i[data-rok="2007"]{display:none}
}

/* Počítadlo kapitol se na telefonu lámalo na „04 /" a „04" pod tím —
   dělený zlomek se čte jako dvě čísla. Drží se na jednom řádku. */
.hs-count{white-space:nowrap}

/* ═══ VYVÁŽENÍ BLOKU VE SCÉNĚ (24. 8.) ══════════════════════════════
   Minulá dávka vytáhla osu nahoru — a pod obsahem tím zůstalo 342 až
   472 px prázdna z 1080, tedy třetina až polovina obrazovky na jednom
   místě dole, zatímco nahoře bylo 10 px. Měřeno na snímcích.

   Neřeší se to posunutím bloku dolů (prázdno by se jen přestěhovalo),
   ale tím, že obsah tu výšku doopravdy obsadí: sloupce se roztáhnou na
   celou scénu a jejich vlastní řádky se v nich rozprostřou. Vzduch je
   pak MEZI věcmi, ne pod nimi — a je ho tolik, kolik zbylo místa, takže
   to sedí na 1080 i na 720 px stejně. Písmo se nezvětšuje. */
@media (min-width:901px){
  /* Text kapitoly: letopočet nahoře, nadpis, odstavec dole. */
  .sc-wipe--hist .hs-copy{
    display:flex;flex-direction:column;justify-content:space-between;
    /* Dolní mez je 8 px, ne 20: na 1280×720 zbývá po liště, vzduchu
       a ose 303 px a text sám potřebuje 336 — vynucená mezera by ho
       vytlačila pod spodní hranu scény. Nahoře se mezera rozevře. */
    gap:clamp(6px,1.4vh,52px)}
  /* Kartičky firem obsadí výšku a jejich řádky se v nich rozprostřou,
     takže uvnitř nezůstane hluchá plocha jako minule. */
  /* Karty se NEROZTAHUJÍ na výšku scény. Roztažené splnily měřidlo
     (rám sahal dolů), ale uvnitř zůstala poloprázdná plocha — přesně
     to, co na nich vadilo minule. Jsou vysoké podle svého obsahu a
     celý sloupec si sedá ke spodní hraně: nadpis drží levý horní roh,
     karty pravý dolní. Táž úhlopříčka jako u kapitoly bez grafiky. */
  .sc-wipe--hist .hs-firm{justify-content:flex-start;
    /* Na 1280 × 720 je kapitola s třemi kartami nejvyšší ze všech —
       svislé odsazení uvnitř karty se proto na nízkém okně ubere.
       Vodorovné zůstává, aby text nelepil na rám.
       26. 8.: od chvíle, kdy mezery mezi buňkami vzrostly na úroveň
       řádkového prokladu, se odsazení na nízkém okně ubírá víc —
       jinak karta vyteče pod spodní hranu okna (naměřeno 727 px
       při okně 720). */
    padding-block:clamp(5px,calc(2.4vh - 12px),16px)}
  .sc-wipe--hist .hs-art--firms,
  .sc-wipe--hist .hs-art--cards,
  .sc-wipe--hist .hs-art--stats{align-items:stretch}   /* v řadě stejně vysoké */
  /* Finále má dva sloupce vedle sebe — stejné pravidlo. */
  .sc-wipe--hist .hs-two{align-items:stretch}
  /* Ve finále se obsah sloupce NEPŘIŠPENDLUJE dolů: posledním řádkem
     je tam samotný seznam čísel, ne patička, a odsunutý dolů nechal
     nad sebou 300 px prázdna pod logem. Rám karty se roztáhne, čísla
     zůstanou nahoře u loga, kam patří. */
  .sc-wipe--hist .hs-col{display:flex;flex-direction:column;
    justify-content:flex-start}
}

/* ═══ NÍZKÁ OKNA: UBRAT Z REZERV, NE Z PÍSMA (24. 8.) ═══════════════
   Na 1280 × 720 zbývá po liště, vzduchu a ose 323 px, a text kapitoly
   sám potřebuje 336 — přetékal pod spodní hranu scény. Písmo se kvůli
   tomu nezmenšuje; zmenšují se rezervy, které při nízkém okně nemají
   co držet: místo nad letopočtem, mezera pod osou a odstup letopočtů.
   Všechno jede přes vh, takže na 1080 zůstává vzduch beze změny.    */
@media (min-width:901px){
  /* Rezerva nad letopočtem. Musí mít stejnou váhu jako pravidla, která
     ji zavedla — kapitola s kartami si ji nastavuje přes :has(), takže
     samotné .sc-wipe--hist .hs-chap by ji nepřebilo. */
  .sc-wipe--hist .hs-chap,
  .sc-wipe--hist .hs-chap:has(.hs-firm:nth-child(3)){
    padding-top:calc(var(--fs-h2) + clamp(4px,1.2vh,20px))}
  .sc-wipe--hist .hs-chap .hs-copy{
    padding-top:calc(var(--fs-h2) + clamp(4px,1.2vh,20px))}
  .sc-wipe--hist .hs-chap:has(.hs-firm:nth-child(3)) .hs-copy{padding-top:0}
  .sc-wipe--hist .hs-scrub-top{margin-bottom:clamp(14px,2.4vh,56px)}
  /* Řada letopočtů musí ustoupit pod spodní štítky zastávek — jinak
     si sedí na místě (naměřeno 765 px² přes „Today"). */
  .sc-wipe--hist .hs-ticks{margin-top:clamp(30px,3.4vh,38px)}
  .sc-wipe--hist .sc-in{padding-bottom:clamp(48px,5.5vh,60px)}
  /* Odstavec dostane širší míru, takže se vejde na méně řádků. Je to
     šířka, ne velikost písma. Na 1280 × 720 tím odstavec spadl z pěti
     řádků na čtyři a scéna se přestala přetékat. */
  .sc-wipe--hist .hs-chap .lead{max-width:58ch}
  /* Nadpis měl kolem sebe 0,85em vlastních okrajů, tedy 46 px navrch
     k mezeře, kterou už dělá rozprostření sloupce. Dvojí mezera na
     jednom místě: okraje odcházejí, rozestup řídí jen gap. */
  .sc-wipe--hist .hs-chap .h{margin:0}
}


/* ═══ HLAVIČKA SEKCE A ODSTUP OSY (24. 8.) ══════════════════════════
   Pobídka „Scroll to move through time" se přestěhovala do hlavičky —
   stála na vlastní řádce přesně tam, kam sahají štítky zastávek.
   Hlavička je proto tříprvková: název vlevo, pobídka uprostřed,
   počítadlo vpravo.                                                 */
.sc-wipe--hist .hs-top{display:flex;align-items:baseline;
  gap:clamp(16px,2.4vw,40px)}
.sc-wipe--hist .hs-top .hs-brand{flex:0 1 auto}
.sc-wipe--hist .hs-top .hs-hint{flex:1 1 auto;text-align:right;
  margin:0;white-space:nowrap}
.sc-wipe--hist .hs-top .hs-count{flex:0 0 auto}
@media (min-width:901px){
  /* Nad dráhou musí zůstat místo pro dvě úrovně štítků; jinak horní
     z nich vjede do hlavičky. Měřeno: štítek sahá 44 px nad střed. */
  .sc-wipe--hist .hs-scrub{padding-top:clamp(20px,2.4vh,30px)}
  /* VŠECHNY POPISKY NA JEDNU STRANU (24. 8.). Střídání nad a pod
     linkou četlo jako klikyhák, ne jako stupnice. Vejdou se vedle sebe
     proto, že se osa přeškáluje: nejbližší dvě jsou napříč sekcí aspoň
     120 px od sebe, dřív 79. */
  .sc-wipe--hist .hs-zast[data-k="1"],
  .sc-wipe--hist .hs-zast[data-k="3"]{
    top:auto;bottom:calc(50% + 9px)}
  .sc-wipe--hist .hs-zast[data-k="1"] i,
  .sc-wipe--hist .hs-zast[data-k="3"] i{height:12px}
}


/* Řada letopočtů pod osou odchází na počítači úplně. Na nízkých oknech
   se vypínala už dřív (nebyla na ni výška), takže osa měla na každém
   okně jinou stupnici — a ta na Michaelině 1470 × 833 nebyla vůbec.
   Měřítko teď nesou rysky na samotné lince, které výšku nepotřebují,
   a letopočty pod osou by k nim byly druhá stupnice o řádek níž. */
@media (min-width:901px){
  .sc-wipe--hist .hs-ticks{display:none}
}

/* ═══ KAPITOLA 01: DVA PRVKY V PROTILEHLÝCH ROZÍCH (25. 8.) ═════════
   Michaela: „zaplnit jinak, ať to vypadá hezky."

   Naměřeno: kapitola 01 měla v okně tři prvky a mezi nadpisem
   a odstavcem 229 px svislé díry (na 1920 × 1080 dokonce 428) — nadpis
   vlevo nahoře, odstavec vpravo dole a mezi nimi nic. Ostatní kapitoly
   mají mezeru 10 až 66 px. Plochou se přitom kapitoly neliší (01 má
   sedm procent pokrytí, 03 taky sedm) — liší se tím, JAK je ta plocha
   rozdělená.

   Úhlopříčka, která tu díru dělala, se pro tuhle kapitolu ruší:
   odstavec jde pod nadpis, popisek „The principle" se vrací (byl
   schovaný) a snímek z roku 1919 se zvětšil natolik, že je z něj
   plnohodnotný druhý prvek, ne miniatura u kraje. Kapitola 03 na tomtéž
   pravidle zůstává — ta se nepředělává.

   Text uhýbá snímku odsazením, ne novým sloupcem: (100vw − 100%)/2 je
   šířka okapu vedle sazby, takže se odsazení zapne jen tam, kde by
   snímek do sazby opravdu zasahoval. Na 1920 × 1080 vychází nula —
   snímek se celý vejde do okapu.

   Snímek se zároveň přestěhoval do KAPITOLY 01 v index.html. Dosud
   stál vedle kapitol a mizel teprve s rokem 1919 na ose, tedy o kus
   později než kapitola, ke které patří — po zvětšení by v tom mezičase
   ležel přes nadpis kapitoly 02. Uvnitř kapitoly bere její krytí
   a odchází s ní; na telefonu tím zůstává tam, kde stál, jen ho už
   nedrží pořadí ve flexboxu, ale to, čí je. */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap[data-era^="1897"]{
    --k01-odsun:max(0px,calc(var(--k01-foto) + 66px - (100vw - 100%)/2));
    padding-left:var(--k01-odsun)}
  /* Letopočet éry je ::before s position:absolute, takže o odsazení
     kapitoly sám neví — bez tohohle řádku ležel pod snímkem a četlo se
     z něj „7 — 1972". Bere tutéž hodnotu, takže se s textem nikdy
     nerozejde. */
  .sc-wipe--hist .hs-chap[data-era^="1897"]::before{left:var(--k01-odsun)}
  .sc-wipe--hist .hs-chap[data-era^="1897"]:not(:has(.hs-art)) .hs-copy{
    display:block;grid-column:1/-1;padding-top:0}
  .sc-wipe--hist .hs-chap[data-era^="1897"]:not(:has(.hs-art)) .hs-copy .h{
    margin:0}
  .sc-wipe--hist .hs-chap[data-era^="1897"]:not(:has(.hs-art)) .hs-copy .lead{
    grid-column:auto;max-width:46ch;
    margin:clamp(14px,2.2vh,26px) 0 0}
}

/* ═══ KAPITOLA BEZ GRAFIKY: ÚHLOPŘÍČKA (24. 8.) ═════════════════════
   Kapitola „1897 — 1972" nemá žádnou grafiku, takže po roztažení do
   výšky scény zůstalo mezi nadpisem a odstavcem 330 px prázdna a text
   se četl jako roztržený. Pravý sloupec byl přitom celý prázdný.

   Odstavec se proto přesouvá do něj a sedá si dolů: letopočet a nadpis
   drží levý horní roh, odstavec pravý dolní. Je to sazba do úhlopříčky,
   ne díra — a scéna se tím zaplní obojím směrem. Platí jen tam, kde
   grafika opravdu chybí (:not(:has(.hs-art))).                      */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap:not(:has(.hs-art)) .hs-copy{display:contents}
  .sc-wipe--hist .hs-chap:not(:has(.hs-art)) .hs-copy .h{
    grid-column:1;align-self:start;margin:0}
  .sc-wipe--hist .hs-chap:not(:has(.hs-art)) .hs-copy .lead{
    grid-column:2;align-self:end;max-width:34ch;margin:0}
  .sc-wipe--hist .hs-chap:not(:has(.hs-art)) .hs-copy .eyebrow{display:none}
}

/* ═══ RÁMUJÍCÍ KAPITOLA JE PRUH, NE BLOK V PRÁZDNU (29. 8. odpoledne) ══
   Naměřeno na 1470 × 833: nadpis a věta zabíraly 84 px z 833, nad nimi
   232 px prázdna a pod nimi 272. Na Radkově tabuli je bold statement
   široký pruh přes celou šířku; tady to byl malý blok plovoucí uprostřed
   prázdné obrazovky, a proto z toho byl pocit, že přechod na další sekci
   je špatně — ono tam nic nebylo.

   Úhlopříčná sazba o kus výš (nadpis vlevo nahoře, věta vpravo dole)
   patří kapitolám s daty, kde je co rozmístit. Rámující kapitola nese
   jedno tvrzení, takže se sází jako pruh: popisek, statement přes celou
   šířku v displejovém stupni, věta pod ním. Svisle na střed zůstává,
   kontrola vzhledu si to hlídá.

   29. 8. večer: BEZ LINEK. Měl jsem tu nad textem a pod ním dvě vlásové
   linky, aby z toho byl pruh a ne odstavec ve vzduchu. Michaela: „tady
   mi přijde špatně ta čára, nechala bych to čisté." Pruh dělá sazba —
   šířka, stupeň, odsazení — ne linky. */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap--stripe:not(:has(.hs-art)) .hs-copy{
    display:block;grid-column:1/-1;align-self:center;
    padding-block:clamp(22px,3.4vh,44px)}
  .sc-wipe--hist .hs-chap--stripe:not(:has(.hs-art)) .hs-copy .eyebrow{
    display:block;margin:0 0 clamp(12px,1.8vh,20px)}
  .sc-wipe--hist .hs-chap--stripe:not(:has(.hs-art)) .hs-copy .h{
    grid-column:auto;align-self:auto;margin:0;max-width:none;
    font-size:var(--fs-display);line-height:1.02}
  .sc-wipe--hist .hs-chap--stripe:not(:has(.hs-art)) .hs-copy .lead{
    grid-column:auto;align-self:auto;max-width:58ch;
    margin:clamp(14px,2.2vh,26px) 0 0}
}

/* Značka „TODAY" v řadě letopočtů odchází i na desktopu: od chvíle, kdy
   pod osou stojí zastávka „today" na tomtéž místě, je to totéž slovo
   dvakrát pod sebou, 20 px od sebe. Konec osy drží zastávka — a růžově
   se rozsvěcí taky, přes .hs-zast.on i. Zůstávají 1897 a 2007, tedy
   začátek a zlom měřítka, které jinde na scéně nejsou. */
@media (min-width:901px){
  .sc-wipe--hist .hs-ticks i[data-rok="today"]{display:none}
}


/* Na 1280 × 720 chybělo nad štítky zastávek 1 px a hlavička do nich
   zajížděla (138 px² přes název sekce). Zvedá se to jen tam, kde ta
   vada je — na vyšších oknech by 26 px místo 25,92 posunulo sazbu
   o osminu pixelu a sekce by se přestala shodovat se včerejškem
   (naměřeno 1341 přebarvených pixelů z antialiasingu). */
@media (min-width:901px) and (max-height:820px){
  .sc-wipe--hist .hs-scrub{padding-top:26px}
}


/* Obsah historie leží nad otevíracím obrazem. Vrstvu dostává obsah,
   ne obraz — když ji dostal obraz, přebarvily se dva pixely na levém
   konci osy o 20 stupňů. Doloženo porovnáním snímků mimo okno fotky. */
.sc-wipe--hist .wrap.hs{position:relative;z-index:1}

/* Přišpendlená scéna je o 70 svh delší, aby měla historie na svůj úvod
   vlastní kus scrollu. Fáze v script.js jsou přenásobené 660/730, takže
   se v pixelech před historií nezměnilo nic.

   JEN NAD 700 px. Na telefonu se scény neprošpendlují a .pin má být
   vysoký podle obsahu — bez téhle závorky platila výška 730 svh i tam
   a pod obsahem zůstalo 833 px prázdna: na 390 × 844 se to projevilo
   jako 150 px bílé obrazovky, na 430 × 932 jako 450 px. Naměřeno
   přejímkou telefonu. */
/* 29. 8.: o dalších 100 svh, tedy 1110 — mezi vrstvy a historii přibyl
   pruh „10×". Prahy jsou přepočítané × 910/1010 před ním a
   (starý × 910 + 100)/1010 za ním.

   28. 8. odpoledne: o dalších 100 svh, tedy 1010 — mezi film a vrstvy
   přibyla bílá sekce „Nothing new" s patentem. Prahy v script.js jsou
   přepočítané × 810/910 před ní a (starý × 810 + 100)/910 za ní.

   28. 8.: o dalších 80 svh, tedy 910. Hero bylo jediná scéna na
   stránce, která neměla klid — stálo bez hnutí 19 px, míň než jedno
   cvaknutí kolečka, zatímco každá další stojí stovky pixelů. Prahy
   v script.js jsou přepočítané podle (starý × 730 + 80) / 810, takže
   dosavadním scénám zůstala délka v pixelech (odchylka do 0,3 px).

   27. 8.: o 100 svh delší, protože přibyla fáze „One energy
   layer" mezi herem a vějířem. Prahy v script.js jsou přepočítané
   podle (starý × 630 + 100) / 730, takže se všem dosavadním scénám
   nezměnila délka v pixelech — jen začínají o obrazovku později. */
@media (min-width:701px){
  /* 3. 9.: dráha z 1110 na 1800 svh — Radkova historie má dvanáct
     obrazovek místo čtyř a osa dostala týž přírůstek, aby se fáze nad
     historií daly v obou verzích porovnat. Prahy fází nad historií se přepočítaly
     (script.js, konstanta HR), takže se žádná scéna před historií
     nepohnula ani o pixel — v obou verzích. Třídu nasazuje script.js. */
  .pin{height:1110svh}
  html:root .pin{height:1800svh}
}

/* ═══ PŘI OMEZENÍ POHYBU SE DRÁHA MUSÍ SLOŽIT (4. 9.) ════════════════
   `styles.css` má pro `prefers-reduced-motion` pravidlo `.pin{height:auto}`
   — připnutá dráha se má složit, protože modul scény se v tom režimu
   vypíná hned na začátku. Jenže pravidla výš (`.pin{height:1110svh}`,
   `html:root .pin{height:1800svh}`) mají stejnou specificitu
   a v kabat.css stojí POZDĚJI, takže tamto přebila.

   Následek naměřený 4. 9. na nasazeném náhledu: se zapnutým omezením
   pohybu měla stránka 11 501 px, z toho 9 990 px připnuté dráhy, na
   které nebylo VŮBEC NIC — hero, pak deset tisíc pixelů bílé, pak
   patička. Scény v ní totiž zůstaly na krytí 0, protože je nemá kdo
   rozsvítit. Na macOS je „omezit pohyb" běžné nastavení.

   Tohle pravidlo to vrací: dráha se složí a stránka jde rovnou dál.
   Vyprávění (vějíř, film, vrstvy, historie) se v tom režimu neukáže —
   tak to bylo zamýšlené ve styles.css a je to na rozhodnutí, ne na
   opravu za pochodu; zapsáno ve zprávě. */
@media (min-width:701px) and (prefers-reduced-motion:reduce){
  .pin,
  html:root .pin{height:auto}
}

/* ═══ „ONE ENERGY LAYER" JAKO FÁZE SCÉNY (27. 8.) ════════════════════
   Sekce se přestěhovala zpoza historie dovnitř přišpendlené scény.
   Na počítači je z ní scéna: leží přes celý rám, krytí jí řídí
   script.js. Vlastní rozvržení (sloupec, velikost nadpisu, kontrast)
   zůstává z pravidel výš beze změny.

   Vrstva 2: nad .hero-photo (z-index 0) a pod historií (8), takže ji
   nic nepřekrývá a ona nepřekrývá nic, co přijde po ní. */
@media (min-width:701px){
  /* Vrstva 4, ne 2. Nad rámem hera leží dvě plátna — `mphFx` (3) drží
     při přechodu hero fotku a `fanwipe` (5) vějíř — a při dvojce se
     fotka hera kreslila PŘES bílé pozadí sekce; nadpis pak ležel přes
     tvář člověka na fotce a nedal se přečíst. Čtyřka je nad fotkou
     a pod vějířem, takže vějíř nastupuje přes sekci, ne naopak. */
  .hero > #onelayer{
    position:absolute;inset:0;z-index:4;
    margin:0;min-height:0;
    display:flex;align-items:center;
    opacity:0;visibility:hidden;
    will-change:opacity,transform}
}
/* Na telefonu se nic nešpendlí — je z ní běžný blok ve sloupci.
   Pořadí příběhu drží `order`: hero 0 · pruh 2 · NOVÁ 3 · vějíř 4 ·
   film 5 a 6 · vrstvy 7 · historie 8. Čísla za ní se proto o jedno
   posouvají. */
@media(max-width:700px){
  .hero > #onelayer{order:3;position:static;inset:auto;
    opacity:1;visibility:visible;min-height:auto;
    padding-block:clamp(56px,10vh,96px)}
  .hero > .fanwipe{order:4}
  .hero > .hp-vid{order:5}
  .hero > .liveop-in{order:6}
  .hero > #scLayers{order:7}
  .hero > #scHist{order:8}
}


/* ═══ VELKÝ ROK (24. 8.) ═════════════════════════════════════════════
   Michaela: „chce to nějakou přímku i s tím časem nebo nějak to vymyslet,
   aby se to scrollováním pohybovalo na jiný rok."

   Číslo stojí nad osou, přetáčí se scrollem a drží se HRANY DRÁHY, aby
   bylo poznat, že patří k ose a ne k nadpisu. Tabulární číslice, aby
   při přetáčení neposkakovalo. */
.hs-rok{
  font-family:var(--font-display),Georgia,serif;font-weight:400;
  font-size:clamp(48px,4.4vw,76px);line-height:.92;
  letter-spacing:-.02em;font-variant-numeric:tabular-nums;
  color:var(--hs-fg,#fff);
  margin:0 0 clamp(6px,1vh,14px);
  transition:none}

/* Popisek éry, který přeškálováním vyjel mimo dráhu, se nekreslí —
   polohu si ale drží dál, aby se měl kam vrátit. */
.hs-zast.mimo{opacity:0;visibility:hidden}

@media (max-width:700px){
  .hs-rok{font-size:clamp(48px,13vw,64px)}
}

/* ═══ KONFIGURÁTOR: VŮZ PŘES CELOU PLOCHU (24. 8.) ═══════════════════
   Tvar podle Mercedesu: scéna přes celé okno, vůz v ní co největší,
   ovládání u obou krajů.

   Vůz se NEROZTAHUJE přes celé okno. Podklady jsou 940 px široké a vůz
   na nich zabírá 659 až 685 px — na okně 1920 by roztažení znamenalo
   skoro trojnásobek a rozmazání. Strop je proto 1 598 px, tedy 1,7×
   přirozené šířky; dolní mez 55 % okna, ať to není poštovní známka.
   Až přijde .glb nebo .stp, vyrenderují se podklady ve dvojnásobku
   a strop se zvedne.                                                */
/* KOTVENÍ SCROLLU V SEKCI VYPNUTÉ. Řádka technických dat se při
   přepnutí nástavby zalomí jinak (112 px u grocery, 37 u pickupu) a
   prohlížeč to kompenzoval posunem scrollu — vůz se tím v okně hnul
   o 123 px, ačkoli v rozvržení stál pořád stejně. Přepínající se vůz
   je přesně to, co dělá konfigurátory lacinými. */
#configure{overflow-anchor:none}

.cfg2-scena{
  position:relative;
  /* Scéna stojí MIMO .wrap (viz sales.html), takže je rovnou přes celé
     okno — ovládání má sedět u kraje OKNA, ne u kraje čitelného sloupce.
     Přes negativní okraje to nešlo: .cfg2 .wrap je dvousloupcová mřížka
     a scéna v jedné buňce zůstávala 236 px od kraje. */
  width:100%;
  margin:clamp(8px,1.6vh,20px) 0 clamp(10px,2vh,24px);
  display:flex;align-items:center;justify-content:center;
  min-height:clamp(200px,30vh,340px)}
.cfg2-vuz{
  display:block;
  width:min(1598px,72vw);height:auto;
  max-height:44vh;object-fit:contain;
  /* Rámeček se přepnutím nesmí hnout ani o 2 px: všech šestnáct
     podkladů má týž rozměr 940 × 520, takže stačí, aby si šířku určoval
     obal a ne obsah. Nic tu nezávisí na tom, který soubor je načtený. */
  aspect-ratio:940 / 520}

/* Ovládání sedí u krajů okna, ne ve sloupci uprostřed. Střed každého
   ovladače musí ležet ve vnějších 22 % šířky okna — proto sloupce
   a ne řádek. */
.cfg2-picks{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:space-between;
  pointer-events:none;z-index:2;margin:0;gap:0}
.cfg2-kraj{
  display:flex;flex-direction:column;gap:clamp(6px,1vh,10px);
  pointer-events:auto;
  width:min(300px,17vw)}
.cfg2-kraj--vlevo{margin-left:clamp(16px,2.4vw,48px);align-items:flex-start}
.cfg2-kraj--vpravo{margin-right:clamp(16px,2.4vw,48px);align-items:flex-start}
.cfg2-kraj-lab{
  font-family:var(--font-text);font-size:13px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-3,rgba(20,20,22,.62));margin-bottom:2px}
.cfg2-kraj .chip2{width:100%;text-align:left}
.cfg2-kraj--vpravo{flex-direction:column}
.cfg2-kraj--vpravo .dot2{margin:0}

/* Dotykové cíle: na telefonu aspoň 44 px na kratší straně. */
.cfg2-kraj .dot2{width:44px;height:44px;border-radius:50%}

@media (max-width:700px){
  /* Na telefonu se scéna neroztahuje do stran — ovládání jde pod vůz,
     jinak by na 390 px zbylo na obrázek 90 px. */
  /* Na telefonu jde vůz NAHORU a ovládání pod něj: čtenář má nejdřív
     vidět, co si skládá, a teprve pak čím to mění. */
  .cfg2-scena{display:flex;flex-direction:column;min-height:0}
  .cfg2-vuz{order:1}
  .cfg2-picks{order:2}
  .cfg2-picks{position:static;display:flex;flex-wrap:wrap;gap:10px;
    justify-content:center;margin-top:12px}
  .cfg2-kraj{width:auto;flex-direction:row;flex-wrap:wrap;
    justify-content:center;align-items:center}
  .cfg2-kraj--vlevo,.cfg2-kraj--vpravo{margin:0}
  .cfg2-kraj-lab{width:100%;text-align:center;margin:0}
  .cfg2-kraj .chip2{width:auto;min-height:44px}
  .cfg2-vuz{width:100%;max-height:none}
}


@media (max-width:700px){
  /* Lepivá hlavička tu NENÍ. Zkusil jsem ji a nedrží: hero má na
     telefonu overflow:clip (kvůli lepivé úvodní fotce) a sticky se
     v tom stohu nechytí — naměřeno, že hlavička odjede s obsahem
     (top −421 px při scrollu 4 700). Předstírat ji v CSS nemá smysl.
     Ve které době čtenář je, nese letopočet éry na začátku KAŽDÉ
     kapitoly a počitadlo v hlavičce sekce.

     Vodorovná osa se na telefonu NEKRESLÍ. Je změřená: dráha má na
     390 px šířku 350 px a čtyři éry by na ní dostaly 30 až 100 px —
     na popisky tam místo není a stupnice by lhala přesností, kterou
     nemá. Čas nese velký rok a nadpis kapitoly, což jsou na téhle
     šířce čitelné prvky. */
  .sc-wipe--hist .hs-scrub{display:none}
  .sc-wipe--hist .hs-rok{
    margin:0 0 clamp(10px,2vh,18px);
    font-size:clamp(48px,13vw,64px);line-height:1}
  /* Letopočet éry je na telefonu V TOKU, ne absolutně. Absolutní se
     na desktopu pozicuje proti své kapitole, jenže ve složeném sloupci
     jsou kapitoly statické — všechny čtyři roky se tím vytiskly na
     jedno místo přes sebe a byl z toho nečitelný chuchvalec. Naměřeno
     na snímku 390 × 844. */
  .hero #scHist .hs-chap::before{
    position:static;display:block;
    font-size:clamp(30px,8.6vw,40px);
    margin:0 0 clamp(8px,1.6vh,14px)}
  .sc-wipe--hist .hs-chap .hs-copy{padding-top:0}
}

/* Popis firmy v kartě je od 24. 8. odstavec, ne <span> — je to věta,
   ne štítek, a jako odstavec ji čtou i odečítače obrazovky. Vlastní
   okraje odstavce se ruší, rozestup dělá mřížka karty. */
.hs-note{margin:0}

/* ═══ POPISKY ÉR NAD LINKOU A ZNAČKY NA JEDNU VÝŠKU (24. 8.) ════════
   Michaela u nasazené verze: „to today je moc blízko té čáry. Zároveň
   nevím, jestli ten battswap nemá být velký a to NIO možná taky."

   Změřeno a v obou případech měla pravdu.                            */
@media (min-width:901px){
  /* 1 · Popisek měl ke dráze ČTYŘI pixely při vlastní výšce šestnácti —
     opticky se linky dotýkal. Velký rok má nad ní 31 až 43 px, tedy
     osmkrát víc, a proto vypadal v pořádku, zatímco popisky ne.

     Zvedá se TEXT, ne ryska. Ryska proto vystoupila z toku: je
     absolutní a visí ze spodku popisku dolů přesně k horní hraně
     dráhy, takže vazba popisku k jeho místu na ose zůstává vidět,
     zatímco rámeček zastávky — a s ním text — je 12 px nad linkou. */
  .sc-wipe--hist .hs-zast{bottom:calc(50% + 17px)}
  .sc-wipe--hist .hs-zast[data-k="1"],
  .sc-wipe--hist .hs-zast[data-k="3"]{top:auto;bottom:calc(50% + 17px)}
  .sc-wipe--hist .hs-zast i{
    position:absolute;bottom:-12px;height:12px;
    left:50%;margin-left:-1px}
  /* Krajní zastávky nejsou na střed, tak ani jejich ryska. */
  .sc-wipe--hist .hs-zast--zacatek i{left:0;margin-left:0}
  .sc-wipe--hist .hs-zast--konec i{left:auto;right:0;margin-left:0}
}

/* 2 · Značky v kapitolách měly tři různé výšky: NIO 30 px v jedné
   kapitole a 26 v druhé, BattSwap 26. Vlastní značka tedy byla na
   vlastním webu menší než cizí, a týž znak měl dvě velikosti.

   Srovnává se VÝŠKA, ne šířka — BattSwap je nápis a je přirozeně širší,
   NIO je znak; srovnáním šířek by se BattSwap zdrobnil. Jedna hodnota
   pro všechny, vázaná na výšku okna jako dřív, s dolní mezí 26 px, aby
   se na nižších oknech nesesypaly. */
.sc-wipe--hist .hs-logo,
.sc-wipe--hist .hs-firm .hs-logo,
.sc-wipe--hist .hs-col .hs-logo,
.sc-wipe--hist .hs-logo--us{height:clamp(26px,3vh,32px)}
.sc-wipe--hist .hs-logo--slot{height:auto}

/* ═══ ARCHIVNÍ SNÍMEK U ROKU 1919 (24. 8.) ══════════════════════════
   Malý doklad pověšený u své rysky na ose, ne plakát ke kapitole.
   Vodorovně ho na rysku zarovnává script.js; svisle sedí u spodní hrany
   kapitoly, kde je v kapitole 01 volno (odstavec je vpravo dole).    */
/* Kapitola historie s místy má celé své rozvržení (místa na střed,
   fotka pod nimi malá vedle popisky) až od 901 px — a pod tou hranicí
   nepřebírá nic, protože telefonní rozvržení končí na 700. Na iPadu
   na výšku (768, 810, 820 px) proto platily jen základní styly: fotka
   se roztáhla přes celou šířku a byla 1048 px vysoká, mřížka kapitoly
   přetekla desku o 521 px a obsah vylezl NAHORU přes hlavičku scény.
   Přesně to Michaela viděla jako „celé rozhozené". Hranice tedy jde
   na 701, aby na tablet platilo totéž co na počítač. */
@media (min-width:701px){
  .hs-foto{
    position:absolute;bottom:0;left:0;
    width:200px;margin:0;
    /* Vrstva 3 stačí: #scHist má uvnitř hera z-index 8, takže se celá
       historie kreslí nad .hero-photo (z-index 0). Výš se nešahá —
       ráno se tím fotka dostala nad hlavičku a text sekce.

       POINTER-EVENTS SE TU NENASTAVUJE. S `none` sice fotka byla vidět,
       ale document.elementFromPoint ji uprostřed jejího rámečku
       přeskakoval a vracel .hero-photo pod ní — a přejímka z toho
       právem četla, že fotku něco překrývá. Řídí to script.js podle
       toho, jestli je scéna odkrytá. */
    z-index:3}
  .hs-foto img{
    display:block;width:100%;height:auto;
    border-radius:var(--r-sm,10px);
    /* Archivní snímek je na tmavé scéně sám o sobě dost světlý, tak mu
       stačí tenký okraj místo stínu — na tmavé ploše se stíny nepoužívají. */
    border:1px solid var(--hs-line,rgba(255,255,255,.18))}
  .hs-foto figcaption{
    display:block;margin-top:8px;
    font-family:var(--font-text);font-size:13px;line-height:1.35;
    color:var(--hs-mut,rgba(255,255,255,.68))}
  /* Dokud se rysku nepodaří najít, prvek se nekreslí — jinak by při
     prvním snímku blikl u levého kraje. */
  .hs-foto:not(.umisteno){opacity:0}
}

@media (max-width:700px){
  /* Na telefonu se osa nekreslí a kapitoly stojí pod sebou, takže se
     nepřišpendluje nic — snímek stojí v toku hned za kapitolou 01
     a popiska pod ním. Sedí VEDLE kapitol, ne uvnitř: uvnitř by se
     počítal jako značka firmy a rozhodil měřidlo, které hlídá, že mají
     všechny značky stejnou výšku. Pořadí proto řídí flexbox. */
  .hero #scHist .hs-body{display:flex;flex-direction:column}
  .hero #scHist .hs-chap{order:3}
  .hero #scHist .hs-chap:first-of-type{order:1}
  /* Snímek je od 25. 8. uvnitř kapitoly 01 (patří k ní a mizí s ní),
     takže stojí v jejím toku hned za textem — na obrazovce je to totéž
     místo jako dřív, jen ho nedrží pořadí ve flexboxu. */
  .hs-foto{grid-column:1/-1;
    position:static;width:min(80%,320px);margin:clamp(16px,3vh,26px) 0 0}
  .hs-foto img{display:block;width:100%;height:auto;
    border-radius:var(--r-sm,10px);
    border:1px solid var(--hs-line,rgba(255,255,255,.18))}
  .hs-foto figcaption{display:block;margin-top:8px;
    font-family:var(--font-text);font-size:13px;line-height:1.35;
    color:var(--hs-mut,rgba(255,255,255,.68))}
}

/* Dráha je o kousek širší, aby se na ni vešel i rok 1919: při rozsahu
   1919 — 2026 mají dvě nejbližší éry (2014 a dnešek) 12 let, a to je
   při dosavadní šířce 1068 px jen 119,8 px — o dvě desetiny pod normou
   120. Čtyřiadvacet pixelů na každou stranu to spraví a na sazbu textu
   to nesahá, protože osa stojí ve vlastním pruhu. */
/* Dráha jde přes CELÉ OKNO, ne jen přes čitelný sloupec. Dvanáct let
   mezi érou 2014 a dneškem dělalo na dráze 1 116 px jen 88 px bílého
   místa mezi štítky; přes celé okno je to přes 120, což je mez ze
   ZADANI-HISTORIE-OSA-4. Text kolem zůstává v .wrap. */
@media (min-width:901px){
  .sc-wipe--hist .hs-scrub{
    width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);
    /* Odsazení musí být aspoň půl šířky štítku (19 px), jinak
       poslednímu („today") vyčnívá polovina za okraj okna — naměřeno
       přesah 1 px. */
    padding-inline:clamp(20px,1.4vw,26px)}
}

/* ═══ HISTORIE: SROVNAT OBRAZ (25. 8.) ══════════════════════════════
   Michaela: „ta historie se celá zničila a vypadá hrozně, i to písmo
   některé je moc velké… aby se oči zastavily nad tím, co je důležitý."

   1 · FOTKA VEN Z TEXTU. Visela u spodní hrany kapitoly a na 1470 × 833
   ležela popiskou přes odstavec — 200 × 70 px, přes sebe dvě věty a ani
   jedna se nedala přečíst.

   OPRAVENO PODRUHÉ (25. 8. odpoledne). Pruh mezi osou a kapitolou byl
   na text volný, ale ne prázdný: na 1470 je vysoký 34 px (dráha končí
   na 283, kapitola začíná na 317), takže se do něj fotka nevešla
   a přelezla přes samotnou osu — 6 884 px² přes růžovou dráhu a 936 px²
   přes štítek „1897". Měřeno, ne odhadnuto.

   Jde tedy o pruh POD osou, do levého okapu vedle sazby: kapitola stojí
   od x = 201 (na 1920 od 426) doprava, nalevo od ní je volno až k okraji
   okna a osa je celá nad ní. Fotka roste od rysky 1919 doprava a končí
   dřív, než sazba začne — na 1470 zbývá 48 px, na 1920 250 px.
   Popiska jde POD obrázek a je s ním stejně široká: vedle něj by se
   do okapu nevešla.                                                   */
@media (min-width:901px){
  /* Šířka snímku. Byl 132 px na Michaelině okně — a popiska se zdrojem
     pod ním měla 118 px, tedy kredit Library of Congress vážil víc než
     fotografie, ke které patří. Teď je snímek přes 300 px na každém
     okně od 1440 px šířky a popiska mu vychází na tři řádky, tedy
     zlomek jeho výšky. Z téže hodnoty se počítá i odsazení textu
     kapitoly 01, aby si ty dvě věci nikdy nevlezly do cesty. */
  .sc-wipe--hist{--k01-foto:clamp(200px,22vw,360px)}
  .hs-foto{
    /* Nula je horní hrana kapitoly, tedy hned pod osou i pod řadou
       letopočtů, která je na širokých oknech ještě pod dráhou. */
    top:0;bottom:auto;
    display:block;
    width:var(--k01-foto,clamp(110px,9vw,150px))}
  .hs-foto img{width:100%;height:auto}
  .hs-foto figcaption{
    width:100%;margin:8px 0 0;
    font-size:13px;line-height:1.3}

  /* 2 · PÍSMO. Sedm stupňů (65, 52, 24, 19, 16, 14, 13) je na jednu
     sekci moc a hlavně: nadpis kapitoly měl stejných 52 px jako nadpis
     éry, takže mezi nimi nebyla žádná hierarchie — jen dvě velké věci
     vedle sebe. Nadpis kapitoly jde pod čtyřicítku, takže nad ní zůstane
     JEDINÁ věc: velký rok. Ten se stává tím, na čem se oko zastaví
     první, a všechno ostatní je zřetelně druhé.

     Stupně se stahují ze sedmi na pět: 16 splývá se 14 (štítky značek
     s popisem firmy) a 24 s 19 (čísla ve statistikách s odstavcem). */
  .sc-wipe--hist .hs-chap .h{font-size:clamp(26px,3vw,39px)}
  .sc-wipe--hist .hs-logo b{font-size:14px}
  /* Čísla v seznamu faktů ve finále měla vlastní stupeň 16 px — splývá
     se čtrnáctkou popisu firmy, takže o jeden stupeň méně. */
  .sc-wipe--hist .hs-facts li b{font-size:14px}
  .sc-wipe--hist .hs-stat b{font-size:19px}
}

/* 3 · Ryska letopočtu, která přeškálováním vyjela mimo dráhu, se
   nekreslí — jinak visí za levým okrajem okna. U štítků ér to platilo
   od začátku, u rysek se to zapomnělo. */
.hs-ticks i.mimo{opacity:0}

/* ═══ TLAČÍTKO NA HUDBU: MUSÍ JÍT STISKNOUT (25. 8.) ════════════════
   styles.css povoluje myš jen ve chvíli, kdy má .liveop-in třídu .on —
   jenže tlačítko je vidět i mimo to okno. Naměřeno: na počítači bylo
   vidět na pěti polohách scrollu a kliknutí přijalo jen na čtyřech,
   a uprostřed toho okna klik vůbec nedošel, protože nad tlačítkem
   ležela jiná vrstva scény.

   Když je něco vidět, musí to jít stisknout. Vlastní vrstva ho zvedne
   nad překryvy scén; sama scéna zůstává, jak byla. */
.hero .liveop-sound{pointer-events:auto;position:relative;z-index:9}

/* ═══ PATIČKA: DOTYKOVÉ CÍLE A ŘÁDEK S PRÁVY (25. 8.) ══════════════
   Devět odkazů v patičce mělo na počítači cíl pod 44 px — na telefonu
   žádný, takže to bylo jen tam. Minimální výška se dorovnává odsazením,
   ne velikostí písma. */
/* Platí pro VŠECHNY odkazy v patičce, ne jen pro sloupce — dva
   zbývaly i po první opravě. */
.footer a{min-height:44px}

/* OPRAVENO 25. 8. odpoledne. Tohle pravidlo mělo původně i
   `display:inline-flex`, a to přebilo `.foot-col a{display:block}` ze
   styles.css: odkazy ve sloupcích se postavily vedle sebe a protože
   mezi nimi v index.html není mezera (`</a><a`), slepily se na doraz —
   naměřeno 0 px mezi „Fleet economics" a „In operation" i mezi
   „Contact" a „Media enquiries".

   Čtyřicet čtyři pixelů se přitom nemusí brát řádkovým prvkem: flex
   kontejner je blokový, takže si každý odkaz drží vlastní řádek a
   text v něm zůstane svisle na středu. Inline-flex zůstává jen tam,
   kam patří — na značku, tlačítko, telefon a ikony sítí, tedy na
   odkazy, které stojí v řádce. */
.footer .foot-col a{display:flex;align-items:center}
.footer .brand,.footer .btn,.footer .tel,
.footer .foot-bottom a,
.footer .socials--foot a{display:inline-flex;align-items:center}
.footer .socials--foot a{min-width:44px;justify-content:center}
.fb-claim{opacity:.62}

/* ═══ DOSKOK NA KONTAKT (26. 8.) ═══════════════════════════════════
   Michaela: „když dám talk to our team, skočí to takto, to by asi nemělo
   tak useknout." Rolování zastavovalo tak, že odstavec NAD kontaktem
   zajížděl 70 px pod lištu — na obrazovce z něj zbyl poslední řádek
   přeťatý v půlce. Sama kotva schovaná nebyla; řezalo se to, co je nad ní.

   Odsazení musí pojmout lištu (79 px na počítači, 64 na telefonu)
   a celý první řádek patičky. Na počítači totiž stojí sloupce Product
   a Company v téže mřížkové řadě jako kontakt, jen výš — při 190 px
   se o lištu řezaly ony (29 px pod ní). Při 260 px je nad lištou
   všechno celé a kontaktní blok pořád končí 126 px nad spodní hranou
   okna. Doskok si tuhle hodnotu bere ze script.js. */
#contact{scroll-margin-top:260px}

/* ═══ PATIČKA VE ČTYŘECH SLOUPCÍCH (27. 8.) ════════════════════════
   Naměřeno: obsah stál v jednom sloupci (616 px) a dva vedle něj byly
   skoro prázdné (72 a 172 px), tedy poměr 8,6 : 1; vpravo přitom
   zbývalo 201 px (14 % šířky) úplně prázdných. Mřížka 1,7fr 1fr 1fr
   ze styles.css tomu odpovídala — první sloupec byl skoro dvakrát
   širší a nesl všechno.

   Čtyři stejně široké sloupce: značka · kontakt · pobočky · odkazy.
   Značka si nechává trochu víc místa na větu pod logem, zbytek je
   rovný. Texty, barvy ani velikosti se nemění. */
/* Patička jde přes celou šířku okna, ne jen přes sazební sloupec.
   Do teď končila mřížka na 1 269 px a vpravo (i vlevo) zbývalo 201 px,
   tedy 14 % šířky — a čtyři sloupce se tím zúžily na 240 px, což je na
   adresu málo. Uvnitř širší patičky mají 330 px a prázdno u kraje
   spadne na odsazení. Sekce nad patičkou zůstávají v sazebním sloupci,
   jak byly. */
.footer > .wrap{max-width:none;
  padding-inline:clamp(20px,3.4vw,56px)}
.footer .foot-grid{grid-template-columns:1.4fr 1fr 1fr .9fr;
  gap:clamp(24px,3vw,48px)}
.footer .foot-brand p{max-width:30ch}
/* Nadpis skupiny má všude stejný stupeň i odstup — i tam, kde pod ním
   nejsou odkazy, ale adresa. */
.footer .foot-kontakt h4,.footer .foot-pobocky h4{
  font-family:var(--font-text);font-size:var(--fs-label);
  letter-spacing:.12em;text-transform:uppercase;color:var(--muted);
  margin:0 0 1rem}
.footer .foot-kontakt .foot-adresa{margin-top:0}
.footer .foot-pobocky{margin-top:0}
/* Tlačítko s e-mailem se v užším sloupci nesmí roztáhnout přes okraj —
   a hlavně si musí nechat svoji barvu písma: `.foot-col a` ze styles.css
   dává odkazům ve sloupci šedou, a jakmile se kontakt stal sloupcem,
   přebilo to bílou na růžovém tlačítku. Naměřeno 1,94 : 1 místo 4,5. */
/* `.foot-col a` dává odkazům ve sloupci nejen šedou, ale i 15 px —
   a tlačítko potřebuje obojí své: bílou a 19 px. Devatenáct je
   ve styles.css natvrdo právě proto, že od 18,66 px platí mírnější práh
   kontrastu pro velký tučný text; při 15 px by bílá na růžové spadla
   pod normu. Naměřeno po opravě: 3,53 : 1 při 19 px/700, mez pro velký
   tučný je 3. */
.footer .foot-col .btn{color:#fff;font-size:1.1875rem;font-weight:700}
.footer .foot-col .tel{color:var(--ink);font-size:var(--fs-sm)}
.footer .foot-kontakt .btn{max-width:100%;word-break:break-word}

@media (max-width:760px){
  /* Na telefonu jdou čtyři skupiny pod sebe se stejnou mezerou, jakou
     měly dřív PRODUCT a COMPANY. */
  .footer .foot-grid{grid-template-columns:1fr;gap:clamp(28px,5vh,40px)}
  .footer .foot-brand p{max-width:none}
}

/* Pobočky pod kontaktem (26. 8.). Obyčejný text v téže šedé jako
   zbytek patičky, nadpis stejným stupněm jako „PRODUCT" a „COMPANY"
   vedle — je to čtvrtá skupina patičky, ne pokračování adresy. Mezi
   sídlem a pobočkami je proto viditelná mezera a vlastní nadpis:
   z patičky musí zůstat poznat, která adresa je sídlo. */
.foot-pobocky{margin-top:clamp(20px,3vh,32px)}
.foot-pobocky h4{font-family:var(--font-text);font-size:var(--fs-label);
  letter-spacing:.12em;text-transform:uppercase;color:var(--muted);
  margin:0 0 .8rem}
.foot-pobocky p{margin:0 0 .7em;color:var(--muted);
  font-family:var(--font-text);font-size:var(--fs-sm);line-height:1.5}
.foot-pobocky p:last-child{margin-bottom:0}
.foot-pobocky b{font-weight:600;color:var(--ink)}

/* Kontaktní blok: adresa firmy nad e-mailem a telefonem, které v
   patičce už byly. Šedá je táž jako u ostatního textu patičky
   (--muted, 4,84 : 1 na šedém podkladu) — nová barva se nezavádí.
   <address> má v prohlížeči kurzívu, ta se tu nehodí. */
.foot-adresa{
  font-style:normal;color:var(--muted);
  font-family:var(--font-text);font-size:var(--fs-sm);line-height:1.6;
  margin:1rem 0 0}

/* Cookie lišta. Dole u spodního okraje, nad obsahem, ale nezakrývá
   patičku ani navigaci — patička si o její výšku odsadí spodek. */
.cookie-lista{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:clamp(10px,2vw,24px);
  padding:clamp(12px,1.6vh,18px) clamp(16px,3vw,40px);
  background:var(--coal,#16171A);color:#fff;
  border-top:1px solid rgba(255,255,255,.14)}
/* Výchozí stav je NEVIDITELNÝ, ne odstraněný: lišta si nechává rám,
   aby šlo doložit, že mechanismus na stránce je, ale nic nezakrývá
   a nedá se na ni sáhnout ani klávesnicí. */
/* Skrytá lišta musí být skrytá i pro měřidla a čtečky, ne jen pro oko:
   se samotným `visibility:hidden` má pořád krytí 1, takže ji každý
   nástroj, který se ptá na krytí, počítá mezi viditelný text. Naměřeno
   na tom, že se „překrývala" s adresami v patičce i ve chvíli, kdy na
   obrazovce vůbec nebyla. */
.cookie-lista{visibility:hidden;pointer-events:none;opacity:0}
.cookie-lista.je{visibility:visible;pointer-events:auto;opacity:1}
.cookie-lista p{margin:0;font-family:var(--font-text);font-size:14px;line-height:1.4}
.cookie-akce{display:flex;gap:10px}
.cookie-lista button{
  min-height:44px;min-width:44px;padding:0 18px;
  border-radius:var(--r-pill,999px);cursor:pointer;
  font-family:var(--font-text);font-size:14px;font-weight:600;
  border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.1);color:#fff}
.cookie-lista button#cookieOk{background:var(--pink,#FB5494);border-color:transparent;color:#fff}
body.ma-cookie-listu .footer{padding-bottom:clamp(90px,12vh,140px)}

/* ═══ HISTORIE: OSA SE ZTIŠÍ (27. 8.) ════════════════════════════════
   Michaela to změřila: osa byla jediný prvek v sekci, který nedodržoval
   sloupec textu — a přesah rostl s oknem. Na 1470 vyčnívala 180 px
   vlevo a 151 vpravo, na 1920 už 400 a 368. Na širokém monitoru z ní
   tím byl nejnápadnější prvek sekce, ačkoli je to měřítko, ne obsah.

   Dráha se proto vrací do sloupce. Důvod, proč se odsud v srpnu
   stěhovala přes celé okno, mezitím zanikl: tehdy na ní stálo pět
   popisků a dva nejbližší od sebe měly 88 px. Popisky jsou dnes čtyři
   a stojí na 0, 1/3, 2/3 a 1 — na sloupci 1097 px je to 366 px mezi
   nimi, tedy trojnásobek tehdejší meze 120 px.                       */
@media (min-width:901px){
  .sc-wipe--hist .hs-scrub{
    width:auto;margin-left:0;margin-right:0;padding-inline:0}
}
/* Linka je vlásek, ne pruh: 2 px a ztlumená barvou textu, ne růžová.
   Výška .hs-track zůstává na dotyk a na rysky, kreslí se jen ::before. */
.hs-track{height:2px}
.hs-track::before{height:2px;margin-top:-1px;
  background:var(--hs-line,rgba(255,255,255,.18))}
/* Ukazatel ani vybarvená část se nekreslí. V ose se při rolování nemá
   hýbat nic — postup ukazuje počitadlo 04 / 04 nad ní. Prvky zůstávají
   v HTML i ve výpočtu (script.js z nich bere, kde která éra leží),
   jen se nezobrazují — stejně jako .hs-pas a .hs-stopa od 21. 8. */
#hsFill,#hsDot,.hs-fill,.hs-dot{display:none}
/* Čtená éra se zvýrazní BARVOU, ne tučností. Tučnost měnila šířku
   popisku o 1 px (600 → 700), takže se v ose přece jen něco hýbalo —
   a to je přesně to, co má tahle dávka odstranit. Naměřeno na „today":
   35 px proti 36 px. Text ani pořadí popisků se nemění. */
.hs-zast.on b{font-weight:600}

/* ═══ VĚJÍŘ: KRESBA V IKONĚ (27. 8.) ═════════════════════════════════
   Radek: ikonky působí drobně. Naměřeno proč: rámeček .fi-ic má
   34 × 34 px, ale kresba uvnitř jen 18 × 18 — to je 28 % plochy
   rámečku a 8 px vzduchu na každé straně. Drobná tedy nebyla ikona,
   ale kresba v ní.

   Rámeček zůstává, roste jen kresba: 26 px je 58,5 % plochy (mez ze
   zadání je 55 %) a kolem ní zbývají 4 px, aby se nedotýkala rohů
   zaoblení. Dotykový cíl se tím nemění — ten drží .fan-item, ne
   rámeček ikony. */
/* Ve stejném okně jako pravidlo, které přebíjí: seznam s ikonami je
   v styles.css celý uvnitř @media(max-width:720px) a na počítači se
   nekreslí (.fan-list{display:none}). */
@media(max-width:720px){ .fi-ic svg{width:26px;height:26px} }

/* ═══ JEDNA VRSTVA, KAŽDÝ STROJ (27. 8.) ═════════════════════════════
   Jedna obrazovka, na ní jen text. Nic dalšího do ní nepřibývá.

   Sloupec: 1068 px na střed je přesně ten, ve kterém stojí historie —
   na 1470 začíná na x = 201, na 1920 na x = 426, tedy hodnoty ze
   zadání. Nepočítá se z procent okna, aby se s ním nemohl rozejít.

   Výška: jedna obrazovka POD lištou. Lišta má 87 px na počítači a 72
   na telefonu; svh (ne vh) proto, aby se na telefonu nepočítalo
   s pruhem prohlížeče, který při rolování zmizí — jinak by se spodek
   textu o lištu řezal. Obsah je svisle na střed, takže se ani při
   nižším okně nemá o co opřít a nikam nevyteče. */
.vrstva-radek{
  background:var(--bg,#fff);
  min-height:calc(100svh - 87px);
  display:flex;align-items:center;
  padding-block:clamp(48px,8vh,96px)}
@media (max-width:700px){ .vrstva-radek{min-height:calc(100svh - 72px)} }
.vrstva-radek .vr-in{
  max-width:1068px;margin-inline:auto;width:100%;
  padding-inline:clamp(20px,5vw,24px)}
@media (min-width:1200px){ .vrstva-radek .vr-in{padding-inline:0} }
/* Nadpis je největší text na stránce hned po hero. Zlom drží <br>
   v HTML, takže `text-wrap` nemá do čeho mluvit.

   Strop je 63 px, ne víc, a je to naměřená hodnota: „Every electric
   machine." má při 78 px šířku 1 260 px, kdežto sloupec 1 068 —
   věta se lámala na tři řádky místo dvou. Při 65 px se vešla jen
   o pět pixelů, což je na jinak vykreslené písmo málo; při 63 px
   měří 1 030 px a zbývá 38.

   Dolní mez 27 px je z téhož měření pro telefon: při 29 px měla
   „One energy layer." 343 px proti 350 px sloupce a lámala se taky.
   Druhá věta se na telefon na jeden řádek nevejde při žádné velikosti,
   která by se dala nazvat velkým nadpisem — je popsané ve zprávě. */
.vrstva-radek .vr-h{
  margin:0;text-align:left;
  font-size:clamp(27px,4.4vw,63px);line-height:1.06;
  letter-spacing:-.01em;color:var(--ink)}
.vrstva-radek .vr-p{
  margin:clamp(18px,2.6vh,30px) 0 0;text-align:left;
  max-width:34ch;
  font-family:var(--font-text);
  font-size:clamp(17px,1.35vw,21px);line-height:1.45;
  /* --muted vychází na světlém pozadí pod normu; --ink s krytím ne.
     Naměřeno na vykreslené stránce, ne odhadem z CSS. */
  color:var(--ink)}

/* ═══ IKONY VE VĚJÍŘI NA POČÍTAČI O 30 % VĚTŠÍ (28. 8.) ══════════════
   Radek 27. 8.: „Ikonky větší vějíř." O kolik neupřesnil; Michaela
   28. 8. rozhodla, že velikost zvolíme my. Zvolena 1,3, a je to horní
   rozumná mez, ne kompromis:

     dnes (1,0)   kresba 25,7 px   zabírá 63 % destičky
     1,3          kresba 33,4 px   zabírá 82 %
     1,6          kresba 41,1 px   destička má 40,8 — ikona z ní leze ven

   Na telefonu se nemění nic: tam zvětšení existuje od 27. 8. výš
   v @media(max-width:720px), a to i s otočením o −90°, protože je
   otočený celý vějíř. TADY SE NEOTÁČÍ — na počítači vějíř otočený
   není a rotace by ikony položila na bok.

   `transform-box:view-box` je nutnost, ne opatrnost: `fill-box` na
   vnořeném <svg> smrskne jeho ohraničení na kresbu a ikona zmizí.

   Zvětšuje se o STŘED DESTIČKY, ne o roh — jinak by ikona odskočila
   jinam, než kde je její popisek. Souřadnice nejsou odhad, plynou
   z index.html: uzel data-s="0" má <rect class="fn-plate" x="213"
   y="360" width="50" height="50">, tedy střed 213+25 / 360+25. */
@media(min-width:721px){
  .sc-fan .fn-ic{transform-box:view-box;transform:scale(1.3)}
  .sc-fan .fnode[data-s="0"] .fn-ic{transform-origin:238px 385px}
  .sc-fan .fnode[data-s="1"] .fn-ic{transform-origin:344px 235px}
  .sc-fan .fnode[data-s="2"] .fn-ic{transform-origin:508px 150px}
  .sc-fan .fnode[data-s="3"] .fn-ic{transform-origin:692px 150px}
  .sc-fan .fnode[data-s="4"] .fn-ic{transform-origin:856px 235px}
  .sc-fan .fnode[data-s="5"] .fn-ic{transform-origin:962px 385px}
}

/* ═══ ZNAČKA BEZ PRÁZDNÉHO RÁMEČKU (28. 8.) ══════════════════════════
   Ve `styles.css` má `.hs-logo--slot b` orámování s poznámkou „dočasná
   náhrada za logo — ohraničená, ať je poznat, že je to místo pro
   značku". Fungovalo to obráceně, než mělo: Radek nevidí chybějící
   logo, vidí prázdnou krabičku, která prázdně vypadat MÁ.

   Rámeček jde pryč a zůstane název vysázený jako značka — displejové
   písmo, prostrkání, jedna velikost pro všechna místa. Přestane to
   působit jako díra a začne to vypadat jako záměr.

   MECHANIKA VKLÁDÁNÍ LOG SE NEMĚNÍ. Je v script.js (seznam MAME_LOGA)
   a funguje: jakmile v assets/img/ přibude logo-<značka>.svg nebo .png
   a jméno se dopíše do seznamu, nápis zmizí sám a nastoupí obrázek.
   NIO tak svítí obrázkem už dnes. */
.hs-logo--slot b,
.hs-firm .hs-logo--slot b,
.hs-col .hs-logo--slot b{
  border:0;padding:0;border-radius:0;
  font-family:var(--font-display);font-weight:600;
  /* 13 px, ne 15: v sekci smí být nejvýš pět stupňů písma a patnáctka
     by byla šestý. Třináctka už na kartičkách firem je (výš v tomhle
     souboru), takže se nový stupeň nezavádí. */
  font-size:13px;letter-spacing:.14em;text-transform:none;
  color:var(--hs-fg,#fff)}

/* Zastávka, jejíž letopočet už na ose stojí (viz `dvojnik` v script.js),
   nekreslí ani popisek, ani rysku — obojí by se otisklo přesně přes to,
   co už tam je. Samotná zastávka zůstává, polohu z ní bere kapitola. */
/* Zastávku s letopočtem, který na ose už stojí, script.js rovnou
   vyndá z DOM (viz `dvojnik`) — CSS na ni tedy nic nepotřebuje. */

/* ═══ HISTORIE PODLE RADKOVY NAHRÁVKY (28. 8.) ═══════════════════════
   Radek 27. 8.: „Jsou tři základní sekce. Tyhle dva úvodní a uzavírací
   jsou takové rámující, a tady mezi tím je ten příběh." Historie má
   proto úvodní stripe, tři kapitoly a závěrečný stripe.

   STRIPE je jen nápis, nic víc. Vlastní podklad si nese sám, protože
   scéna kolem něj se překlápí z tmavé do bílé podle postupu a nápis by
   se jinak v půlce ztratil — barva textu se v historii odvozuje z jasu
   pozadí (histBarvy v script.js) a stripe má pozadí vlastní. */
.fan-ram{display:contents;margin:0}
/* 29. 8. večer: RÁMUJÍCÍ KAPITOLA JE TMAVÁ JAKO OSTATNÍ.
   Nesla si vlastní bílý podklad a scéna kolem ní se bělala taky, takže
   historie měla DVĚ překlopení: bílá → tmavá → tmavá → bílá. To první je
   ze světla do tmy, tedy jediné místo na stránce, kde se jde proti směru
   — zbytek webu se od hera k závěru rozsvěcuje. Michaela: „z téhle části
   na tu druhou historii se ten přechod dělá obráceně a nesedí to vůbec
   do toho."

   Kapitola teď bere barvy scény jako 02 a 03. Historie má jediné
   překlopení, u vítězů, a bílá zůstane až do konce stránky. Sazba pruhu
   (šířka, stupeň, odsazení) zůstává, mění se jen barvy. */
.hs-chap--stripe{background:transparent}
.hs-chap--stripe .h{color:var(--hs-fg,var(--ink))}
/* Deska rámující kapitoly je vždycky bílá, ať scéna kolem ní zbělá nebo
   ne. Popisek a věta ale braly --hs-mut, tedy barvu SCÉNY — a tu na
   telefonu nikdo nenastavuje, protože se tam nic nešpendlí. Popisek
   „The idea" tak vycházel bílý na bílé, naměřeno 1 : 1. Na bílé desce
   patří tmavá tlumená, bez ohledu na scénu. */
.hs-chap--stripe .hs-copy .eyebrow{color:var(--hs-mut,var(--muted,#52525A))}
.hs-chap--stripe .hs-copy .lead{color:var(--hs-mut,var(--muted,#52525A))}
.hs-chap--stripe .h .accent{color:var(--hs-pink,var(--pink))}
.hs-chap--stripe .hs-copy{max-width:none}

/* Poražení tmavnou, vítězové stojí na hlavním podkladu — Radek:
   „Tyhle můžou být černý nebo skoro antracitový podklady (…) a tenhle
   tam bude na hlavním podkladu. To jsou vítězové." Antracit je
   #1F2226, tedy táž tmavá, jakou scéna používá; nová barva nevzniká. */
.hs-chap--tmava{background:#1F2226}

/* ═══ HVĚZDIČKA SE ZDROJI ════════════════════════════════════════════
   Nativní <details>, žádný JavaScript — funguje na dotyku, z klávesnice
   i bez skriptu.

   Panel NESMÍ HÝBAT ROZVRŽENÍM: scéna je přišpendlená a má pevnou
   výšku, takže se rozevřený panel kreslí absolutně pod hvězdičkou
   a nikomu nic neodsune.

   A NESMÍ BRÁT KLIKNUTÍ, DOKUD KAPITOLA NESVÍTÍ. Je to tatáž past,
   na kterou se v srpnu narazilo třikrát (historie, fanwipe, video):
   neviditelný prvek nad scénou si bere myš. */
.hs-zdroj{display:inline-block;position:relative;vertical-align:baseline;
  margin-left:.35em}
.hs-chap:not(.on) .hs-zdroj{pointer-events:none}
.hs-zdroj > summary{
  list-style:none;cursor:pointer;display:inline-flex;align-items:center;
  justify-content:center;width:22px;height:22px;border-radius:50%;
  font-size:13px;line-height:1;color:var(--hs-mut,rgba(255,255,255,.74));
  transition:color var(--t-fast,140ms) var(--ease,ease)}
.hs-zdroj > summary::-webkit-details-marker{display:none}
.hs-zdroj > summary:hover,
.hs-zdroj[open] > summary{color:var(--hs-pink,var(--pink))}
.hs-zdroj > summary:focus-visible{outline:2px solid var(--hs-pink,var(--pink));
  outline-offset:2px}
/* JEN KDYŽ JE PANEL OTEVŘENÝ. Bez té závorky se `.hs-zdroj-in` vysázel
   i u zavřeného <details> — naměřeno display:block a výška 163 px bez
   atributu `open` — a pravidlo 2 z kontroly vzhledu z něj právem počítalo
   obsah, který vidět není (prvky na 881 a 909 px). Zavřený panel se
   nesmí vykreslit vůbec; nechává se to na nativním chování <details>,
   ne na krytí ani viditelnosti. Je to i přístupnost: skrytý přes
   opacity by zůstal dosažitelný klávesnicí. */
/* Prohlížeč zavřený <details> sám nevykreslí jen tehdy, když mu do
   toho nesaháme — jenže `position:absolute` obsah ze slotu vytáhne
   a on se pak vysází i zavřený (naměřeno display:block a výška 163 px
   bez atributu `open`). Zavírá se proto týmž mechanismem, jaký na to
   používá prohlížeč: display:none. Není to krytí ani viditelnost, takže
   panel zůstává zavřený i pro klávesnici a pro čtečku. */
.hs-zdroj:not([open]) > .hs-zdroj-in{display:none}
.hs-zdroj[open] > .hs-zdroj-in{
  position:absolute;top:calc(100% + 6px);left:0;z-index:12;
  min-width:190px;max-width:min(300px,70vw);
  padding:10px 12px;border-radius:var(--r-sm,10px);
  background:var(--hs-bg,#1F2226);
  border:1px solid var(--hs-line,rgba(255,255,255,.18));
  box-shadow:0 10px 30px rgba(0,0,0,.35)}
.hs-zdroj-in a{display:block;color:var(--hs-fg,#fff);
  font-family:var(--font-text);font-size:13px;line-height:1.35;
  text-decoration:underline;text-underline-offset:2px}
/* U pravého kraje se panel zarovná doprava, ať nevyteče z okna.
   Kartičky firem stojí v mřížce, takže „poslední ve své řadě" je
   spolehlivější než měření v pixelech. */
.hs-firm:last-child .hs-zdroj[open] > .hs-zdroj-in,
.hs-col:last-child .hs-zdroj[open] > .hs-zdroj-in{left:auto;right:0}

/* Odkazy ve vysunutém panelu se zdroji měly na telefonu dotykový cíl
   164 × 18 px, tedy pod normou 24. Řeší to výplň, ne větší písmo —
   text zdroje má zůstat drobný, klikací plocha ne. */
.hs-zdroj-in a{display:flex;align-items:center;min-height:24px;
  padding-block:3px}

/* ═══ „NOTHING NEW" — PATENT MEZI FILMEM A VRSTVAMI (28. 8.) ═════════
   Chová se přesně jako #onelayer: na počítači je to fáze přišpendlené
   scény, krytí jí dává script.js (prahy P0/P1 a G0/G1), na telefonu je
   z ní běžný blok ve sloupci. Rozvržení textu si bere z pravidel pro
   .vrstva-radek výš, přidává se jen obrázek a řádka s patenty. */
@media (min-width:701px){
  /* Vrstva 7, ne 4 jako #onelayer: patent přichází AŽ ZA filmem, a ten
     má z-index 6 — při čtyřce by video patent překreslilo. Sedmička je
     nad videem i nad jeho popiskem a pod historií (8); vrstvy mají
     také 7 a stojí v dokumentu za patentem, takže ho správně vystřídají. */
  /* 29. 8.: SEKCE ZAČÍNÁ POD LIŠTOU, NE POD NÍ SCHOVANÁ. Obsah je
     s obrázkem 685 px vysoký a scéna se středila svisle, takže první
     řádek („PROVEN TECHNOLOGIES. NEW ARCHITECTURE.") vycházel na y = 74,
     zatímco lišta končí na 79 — eyebrow se schoval pod ni.

     Středění se proto ruší a blok se opírá o horní hranu s odsazením
     na lištu a vzduch pod ní. Sourozenci #onelayer a #zaver mají nad
     textem 210 a 231 px, tolik se sem s obrázkem nevejde — proto
     odsazení, které dá vzduch a přitom se celý blok vejde do obrazovky. */
  .hero > #patent{
    position:absolute;inset:0;z-index:7;
    padding-top:clamp(120px,18vh,170px);
    margin:0;min-height:0;
    /* flex-start, ne center: se středěním se obsah vyšší než rám rozlil
       na obě strany a eyebrow vylezl nad odsazení, tedy pod lištu. */
    display:flex;align-items:flex-start;
    opacity:0;visibility:hidden;
    will-change:opacity,transform}
}
@media(max-width:700px){
  .hero > #patent{order:6;position:static;inset:auto;
    opacity:1;visibility:visible;min-height:auto;
    padding-block:clamp(48px,8vh,80px)}
  /* film a jeho text jdou o jedno níž, patent se vsune mezi ně a vrstvy */
  .hero > .hp-vid{order:5}
  .hero > .liveop-in{order:5}
  .hero > #scLayers{order:7}
  .hero > #scHist{order:8}
}
#patent .eyebrow{display:block;margin:0 0 clamp(10px,1.6vh,18px)}
/* Nadpis má tentýž stupeň jako #onelayer a #zaver — 46 px z minulé dávky
   byl přesně ten „jiný text", kterého si Michaela všimla. Druhá věta se
   na jeden řádek nevejde a lámat se bude; to je v pořádku, rodina je
   důležitější než počet řádků. */
#patent .vr-h{font-size:clamp(27px,4.4vw,63px)}
#patent .vr-p{max-width:44ch}
/* Obrázek vyplní sloupec celý (1068 px místo 760) — tím zmizí prázdno
   vpravo od něj, kvůli kterému se sekce středila. */
/* Odstupy uvnitř bloku jsou stažené, aby se s odsazením na lištu vešel
   celý obsah do jedné obrazovky — naměřeno 685 px obsahu v 833px rámu. */
#patent .eyebrow{margin-bottom:clamp(8px,1.2vh,12px)}
#patent .vr-p{margin-top:clamp(12px,1.8vh,18px)}
#patent img{
  display:block;width:100%;height:auto;max-width:100%;
  margin:clamp(14px,2.2vh,24px) 0 clamp(10px,1.4vh,14px)}
/* Patentová čísla jsou ÚDAJ, ne ozdoba: drobná, ale plnou barvou textu,
   ať se dají přečíst i opsat. Kvůli tomu se také nesázejí do obrázku. */
.pat-cisla{
  margin:0;font-family:var(--font-text);
  font-size:clamp(13px,1.05vw,15px);line-height:1.4;
  letter-spacing:.02em;color:var(--ink)}

/* ═══ ZÁVĚREČNÁ VÝZVA NA KONCI STRÁNKY (28. 8.) ══════════════════════
   Běžná sekce za přišpendlenou scénou, ne její fáze — proto tu nejsou
   žádná pravidla o absolutním umístění ani o krytí. Rozvržení, sloupec
   i velikosti nadpisu dědí z .vrstva-radek, stejně jako #onelayer.

   Přidává se jen tlačítko a jeho odstup; eyebrow bere tentýž odstup
   jako v sekci s patentem. */
#zaver .eyebrow{display:block;margin:0 0 clamp(10px,1.6vh,18px)}
/* „So are we." je růžově, jako to má Radek na tabuli i jako to měla
   poslední kapitola historie, ze které se věta přestěhovala. Na světlém
   podkladu platí --pink-ink — druhá ze dvou značkových růžových. */
#zaver .vr-h .accent{color:var(--pink-ink,#FB5494)}
#zaver .vr-p{max-width:42ch}
/* Řádek nad tlačítkem (29. 8. odpoledne). Nadpisem i větou je teď
   Radkovo tvrzení „The result"; naše dosavadní věta se neztratila,
   sjela sem — je to pokyn, co se stane po kliknutí, ne tvrzení, tak
   stojí u tlačítka a menším písmem než lead. */
#zaver .vr-pobidka{margin:clamp(16px,2.4vh,26px) 0 0;max-width:42ch;
  font-family:var(--font-text);font-size:clamp(14px,1.1vw,16px);
  line-height:1.5;color:var(--muted,#52525A)}
#zaver .btn{margin-top:clamp(14px,2vh,20px)}
/* Na telefonu se závěr přestane roztahovat na celou obrazovku. Sekce má
   min-height jedné obrazovky a obsah svisle na střed — na 390 × 844 měl
   obsah 394 px ze 772, takže nad ním zbylo 189 px prázdna a spolu
   s doběhem historie z toho byla mezera 269 px mezi poslední kapitolou
   a prvním textem závěru. Na počítači je ta celoobrazovková plocha
   v pořádku (obsah ji vyplní), na telefonu je to díra. */
@media(max-width:700px){
  #zaver{min-height:0}
}
/* Šipka v tlačítku je táž jako u ostatních výzev na webu. */
#zaver .btn svg{width:1em;height:1em;flex:none}

/* ═══ ČÍSLA U VĚJÍŘE: ROVNÁ DĚLICÍ ČÁRA (28. 8.) ═════════════════════
   Michaela: „u těch čísel je nějaký rámeček, vidíš to?" Není to rámeček,
   je to zaoblená svorka „(" — a vznikla tím, že se dvě pravidla
   ve styles.css o sobě nevědí:

     .fst          má border, border-radius 16 px a stín
     .sc-fan .fst  vypíná border i stín, ale NE border-radius
     .sc-fan .fst + .fst  vrací jedinou čáru vlevo

   Ta jediná čára se pak vykreslí s šestnácti pixely kolen na obou
   koncích, tedy jako svorka místo vlasové svislice. Komentář v HTML
   u té řádky přitom sám říká „dělí je vlasová svislá linka, ne rámečky
   ani karty" — stránka si to předepsala a nedodržela.

   Dělicí čára ZŮSTÁVÁ, jen se narovná. Rámeček ani stín se nevracejí. */
.sc-fan .fst{border-radius:0}

/* ═══ PATENT NA STŘED (28. 8.) ═══════════════════════════════════════
   Michaela: „ten patent by měl být uprostřed podle mě." Obal `.wrap`
   vystředěný byl, ale obsah v něm stál vlevo: obrázek 201–961 při středu
   okna 735, tedy o 154 px vedle, popisek s čísly dokonce o 255 px.
   Sekce #onelayer o dvě obrazovky výš přitom vystředěná je a obě nesou
   tutéž třídu .vrstva-radek — mají vypadat jako jedna rodina.

   Středí se celý blok, ne jednotlivosti: eyebrow, nadpis, lead, obrázek
   i řádka s patenty. Rytmus stránky se nemění, jen zarovnání. */
/* 28. 8. VEČER: STŘEDĚNÍ SE RUŠÍ. Bylo to moje řešení Michaelina
   „patent má být uprostřed" a bylo špatné — obal dostal text-align:center,
   ale nadpis i lead si nesly vlastní text-align:left, takže nic nestálo
   ani vlevo jako zbytek webu, ani doopravdy na středu: nadpis měl střed
   na 648, lead na 700, okno na 735. Michaela to viděla znovu: „přijde mi
   jiné ten text od toho, co máme na webu normálně."

   Patent se proto vrací DO RODINY: jeden levý okraj se sekcemi #onelayer
   a #zaver. Důvod, proč se to původně středilo — 308 px prázdna vpravo
   od obrázku — mizí sám tím, že obrázek vyplní celý sloupec. */
#patent .vr-in{text-align:left}

/* ═══ HISTORIE PODLE RADKOVY TABULE (28. 8.) ═════════════════════════
   Podklad je fotka flipchartu IMG_2182.JPG. Když se tabule a nahrávka
   rozejdou, platí tabule — Radek na ní kreslil ROZLOŽENÍ, ne jen slova.

   1 · TŘI MÍSTA V ŘADĚ. Na tabuli má éra 1897–1972 tři boxy vedle sebe
   (NY, Barcelona, Mercedes). Karty stojí ve stejném slotu a ve stejné
   mřížce jako kartičky firem o kapitolu níž, aby historie držela jeden
   tvar a nevypadala jako dvě různé sekce. */
/* Řada míst patří POD text, přes celou šířku kapitoly — ne do úzkého
   pravého sloupce. Kapitola je dvousloupcová mřížka a `.hs-art` v ní
   sedí vpravo; než se tohle dopsalo, dostala tři místa 232 px na všechna
   dohromady (61 px na kartu) a nadpis vedle nich spadl na čtyři řádky.
   Naměřeno na 1470 × 833. */
/* Mezera mezi textem a řadou: mřížka kapitoly má 50 px, a to je při
   pevné výšce desky (456 px) o 18 px víc, než se sem vejde. Dvacet
   stačí — řada má nad sebou ještě vlastní odsazení. */
.sc-wipe--hist .hs-chap:has(.hs-mista){grid-template-columns:1fr;row-gap:20px}
/* Řada se vrací i z odsazení, které si kapitola drží pro archivní snímek
   u roku 1919 (`--k01-odsun`, 465 px na 1470). Snímek visí u HORNÍ hrany
   kapitoly, kdežto řada sedí dole, takže si nemají jak přijít do cesty —
   a karty tím dostanou 330 px místo 185 a věta se vejde na dva řádky
   místo čtyř. Bez toho řada přetékala desku o 76 px. */
.sc-wipe--hist .hs-chap .hs-mista{grid-column:1/-1;align-self:end;
  margin-left:calc(var(--k01-odsun, 0px) * -1);
  width:calc(100% + var(--k01-odsun, 0px))}
.hs-mista{display:grid;gap:clamp(14px,1.6vw,26px);
  grid-template-columns:repeat(3,minmax(0,1fr));
  /* Odsazení i vnitřek karty jsou stažené na míru: s původními hodnotami
     přetékala řada desku o 37 px, a výška desky se měnit nesmí. */
  margin-top:clamp(8px,1.4vh,16px)}
@media (max-width:700px){ .hs-mista{grid-template-columns:1fr;gap:14px} }
.hs-misto{display:flex;flex-direction:column;gap:2px;
  padding-top:7px;border-top:1px solid var(--hs-line,rgba(255,255,255,.18))}
/* Rok je údaj, tedy displejové písmo — stejně jako letopočty na ose. */
.hs-misto-rok{font-family:var(--font-display);font-size:19px;line-height:1.1;
  color:var(--hs-fg,#fff)}
.hs-misto-kde{font-family:var(--font-text);font-size:13px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--hs-mut,rgba(255,255,255,.74))}
.hs-misto-veta{margin:1px 0 0;font-family:var(--font-text);
  font-size:14px;line-height:1.35;color:var(--hs-mut,rgba(255,255,255,.74))}

/* 2 · RÁMUJÍCÍ KAPITOLY: ROK JEN JEDNOU A TEXT NA STŘED.
   `.hs-chap::before` vypisuje data-era, a nad scénou totéž slovo vypisuje
   velký letopočet #hsRok — na kapitole „today" tak stálo „today" dvakrát
   pod sebou, jednou velké, jednou malé. Na rámujících kapitolách proto
   ::before mlčí; u ostatních zůstává, tam se rok nad scénou neopakuje.

   A protože je deska u všech pěti kapitol stejně vysoká (drží ji ta
   nejvyšší, s kartami firem), zbývalo pod textem rámujících kapitol
   309 a 268 px prázdna. Text se proto středí svisle. Výška desky se
   nemění — poskakující deska by byla horší vada než prázdno. */
.hs-chap--stripe::before{content:none}
/* Specifičnost musí přebít `.sc-wipe--hist .hs-chap{align-items:stretch}`
   o kus výš v tomhle souboru — se samotnou `.hs-chap--stripe` vyšlo
   align-items na `stretch`, `.hs-copy` se natáhla na celou výšku desky
   a text v ní zůstal nahoře (naměřeno nad 62 / pod 0). */
.sc-wipe--hist .hs-chap--stripe{display:flex;align-items:center;
  justify-content:flex-start}
/* Dvě věci držely text nahoře, obě naměřené na vykreslené stránce:

   1. kapitola má padding-top 62 px a padding-bottom 0 — samo o sobě
      to udělá 62 px nerovnosti, i kdyby se obsah středil dokonale;
   2. `.hs-copy` dostávala align-self:stretch (o kus výš v tomhle
      souboru), takže se natáhla přes celou desku a text zůstal na
      jejím horním okraji.

   Rámující kapitola nic z toho nepotřebuje: nemá letopočet, pro který
   se to odsazení dělalo (::before je u ní vypnuté), ani kartičky, kvůli
   kterým se `.hs-copy` roztahuje. */
.sc-wipe--hist .hs-chap--stripe{padding-top:0;padding-bottom:0}
.sc-wipe--hist .hs-chap--stripe > .hs-copy{align-self:center;width:100%;
  padding-top:0}
/* Na závěrečném rámečku je `.hs-copy` počítaná jako display:contents
   (pravidlo `:not(:has(.hs-art))` o kus výš), takže flexovou položkou
   není ona, ale sám nadpis — středit se proto musí ON. `margin-block:auto`
   je tu schválně vedle `align-self`: v flexboxu rozdělí volné místo
   nad a pod rovným dílem i tam, kde `align-self` přebije něco jiného. */
/* Specifičnost musí přebít `.sc-wipe--hist .hs-chap:not(:has(.hs-art))
   .hs-copy .h{align-self:start}` o kus výš — to je pět tříd, tohle šest.
   Naměřeno: bez toho zůstal nadpis na align-self:start a seděl na horní
   hraně desky (nad 0 / pod 371). */
.sc-wipe--hist .hs-chap.hs-chap--stripe:not(:has(.hs-art)) .hs-copy .h,
.sc-wipe--hist .hs-chap.hs-chap--stripe .hs-copy .h,
.sc-wipe--hist .hs-chap.hs-chap--stripe .h{align-self:center;margin-block:auto}

/* Rámující kapitola má vlastní BÍLÉ pozadí (`.hs-chap--stripe{background:#fff}`),
   ale odstavec v ní dědil `--hs-mut`, tedy bílou se 74 % krytí — bílá na
   bílé, kontrast 1 : 1. Nadpis to nepotkalo, ten má `--ink` napevno.
   Druhý řádek proto dostává tutéž tmavou rodinu, jen tlumenější.
   Naměřeno na vykreslené stránce, ne odhadem z CSS. */
.sc-wipe--hist .hs-chap--stripe .lead{color:var(--hs-mut,var(--muted,#52525A));
  max-width:52ch;margin-top:clamp(12px,1.8vh,22px)}

/* ═══ VRSTVY: SEKCE SE S NAŠÍ VRSTVOU ROZSVÍTÍ (28. 8.) ══════════════
   Michaela: „když přijde naše vrstva, tak se musí u vrstvy 3 všechny auta
   dát na růžovou a pozadí se té celé sekce se udělat bílé."

   Pozadí i barvu textu dosazuje script.js do proměnných níž, a to
   plynule s příletem naší desky. Text se překlápí natvrdo v bodě, kde
   jsou bílá i černá stejně čitelné — prolnutí by prošlo střední šedou,
   na které nečte ani jedna.

   POPISKY UVNITŘ DESEK SE NEMĚNÍ: jsou bílé a mají svůj vlastní tmavý
   podklad v obrázku. Mění se jen text scény kolem nich. */
.sc-wipe--layers{background:var(--lay-bg,var(--coal,#131418))}
.sc-wipe--layers .h,
.sc-wipe--layers .lead,
.sc-wipe--layers .eyebrow{color:var(--lay-fg,#fff)}
.sc-wipe--layers .lead{color:var(--lay-mut,rgba(255,255,255,.74))}
/* ŠTÍTKY VRSTEV JSOU VŽDY BÍLÉ. Komentář, který tu stál do 4. 9., tvrdil
   opak — že barvu berou podle scény, ne podle desky pod sebou — a právě
   ten byl ta chyba. `--lay-fg` počítá script.js z pozadí SCÉNY: jakmile
   se scéna rozsvítí do bílé, překlopí se text na #0E0E10. Jenže štítky
   neleží na scéně, leží na DESKÁCH, a ty jsou černé: medián jasu 0,000
   u všech čtyř. Tmavý text na nich má kontrast 1,09 : 1 proti normě 4,5
   — to není málo kontrastní, to je neviditelné, a přesně to Michaela
   třikrát hlásila jako „černé na černém".

   Bílá má na téže desce 21 : 1, takže se nemá o čem rozhodovat. */
.sc-wipe--layers .lay-tag{
  color:#FFFFFF;
  /* Bílý text sám o sobě nestačí. Zadání počítalo s tím, že štítky leží
     na deskách (medián jasu 0,000), a tam bílá platí — jenže naměřeno
     na vykreslené stránce na 1440 i 1920 leží štítky VEDLE kresby, na
     bílém pozadí scény, a tam by bílý text zmizel úplně stejně jako
     předtím mizel tmavý na deskách. Proto si štítek nese vlastní
     podklad: pak platí obě polohy a nezáleží na tom, co je pod ním. */
  /* Podklad je NEPRŮHLEDNÝ. Při krytí 0,72 prosvítalo bílé pozadí scény
     natolik, že naše růžová #FB5494 měla na štítku jen 2,8 : 1; při 0,9
     to bylo 5,4, ale jen v ustáleném stavu — během nájezdu štítku číslo
     kolísalo. Na plné barvě platí pořád: bílá 19 : 1, růžová 7,4 : 1,
     ať je pod štítkem cokoliv. */
  background:#0A0B0E;
  border-radius:8px;
  padding:6px 10px;
  -webkit-backdrop-filter:blur(3px);
  backdrop-filter:blur(3px)}
.sc-wipe--layers .lay-tag b{color:#FFFFFF}
.sc-wipe--layers .lay-tag i{color:rgba(255,255,255,.72)}
/* Náš štítek: tučný název bere dopočítanou růžovou, drobné „Layer 2“
   pod ním ne. Je 13 px a na světlém podkladu růžová pod 24 px nestačí
   ani v tmavší variantě (design systém) — naměřeno 3,09 : 1 proti
   normě 4,5. Bere proto tlumenou barvu textu jako ostatní popisky.

   Růžová v NAŠEM štítku brala dopočet proti pozadí scény, tedy ze
   stejného důvodu špatně. Na desce s jasem 0,000 má značková #FB5494
   kontrast 7,4 : 1, takže tam smí stát napevno. */
.sc-wipe--layers .lay-tag.us b{color:#FB5494}
.sc-wipe--layers .lay-tag.us i{color:rgba(255,255,255,.72)}
/* Růžová ve zvýrazněném slově se dopočítává v script.js na kontrast —
   pevná hodnota by uprostřed překlopení ležela na střední šedi, kde
   nesplní ani značková, ani tmavší varianta. */
.sc-wipe--layers .h .accent{color:var(--lay-pink,var(--pink))}

/* ═══ ČASOVÁ OSA JDE PRYČ (28. 8.) ═══════════════════════════════════
   Michaela: „zda tu časovou osu nevymazat úplně a nechat jen roky, tak
   jak to má radek v tom obrázku." Na Radkově tabuli žádná osa nakreslená
   není — jsou tam jen popisky ér.

   Odchází celý pruh `.hs-scrub`, tedy dráha, výplň, puntík, mezníky,
   stopy, pásy, zastávky i popisky stupnice. ZŮSTÁVÁ velký letopočet
   #hsRok („nechat jen roky"), popisek éry nad kapitolou, počitadlo
   01 / 05 a řádek značky nahoře — ty leží mimo tenhle pruh.

   Prvky se nemažou z HTML: script.js z nich dál počítá polohy a
   z těch se bere, kde která éra na dráze leží. Jen se nekreslí. */
.sc-wipe--hist .hs-scrub{display:none}

/* Karty se při rolování jedna po druhé mírně zvětší — „trošku zvětší
   new york, pak při dalším scrollování barcelona atd." Měřítko dává
   script.js, tady je jen střed otáčení a plynulost. Zvětšuje se
   transformem, takže se sousedům nic neposune. */
.hs-misto,.hs-firm,.hs-col{transform-origin:50% 50%;will-change:transform}

/* Čtyři firmy VEDLE SEBE — na tabuli má řada ② čtyři boxy v jedné řadě.
   Mřížka měla tři sloupce, takže čtvrtá karta spadla pod ně a přetekla
   desku. Na telefonu zůstává sloupec, tam se čtyři karty vedle sebe
   nevejdou. */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap--tmava .hs-art--firms{
    grid-template-columns:repeat(4,minmax(0,1fr))}
}
/* Se čtyřmi kartami v řadě je karta užší a text v ní tedy vyšší —
   naměřeno 506 px proti desce 492, tedy přetečení o 52 px dolů.
   Stahuje se vnitřek karet, ne jejich obsah: žádné číslo ani řádek
   nemizí, jen se sesedají těsněji. Výška desky se nemění. */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap--tmava .hs-art--firms{gap:clamp(10px,1.1vw,18px)}
  /* Karta je svislý flex a mezi pěti položkami měla 20 px mezer, tedy
     80 px jen na mezerách — to je hlavní důvod, proč se čtvrtá karta
     nevešla. Osm pixelů stačí a nic z obsahu nemizí. */
  .sc-wipe--hist .hs-chap--tmava .hs-firm{padding:14px 14px 12px;gap:8px}
  .sc-wipe--hist .hs-chap--tmava .hs-firm .hs-raise{margin-top:6px}
  .sc-wipe--hist .hs-chap--tmava .hs-firm .hs-note{margin-top:8px;line-height:1.35}
  .sc-wipe--hist .hs-chap--tmava .hs-firm .hs-facts{margin-top:8px}
  .sc-wipe--hist .hs-chap--tmava .hs-firm .hs-facts li{margin-top:4px;line-height:1.3}
  .sc-wipe--hist .hs-chap--tmava .hs-firm .hs-dead{margin-top:10px}
}

/* ═══ RÁMUJÍCÍ SNÍMEK: TEXT NA OKRAJI RODINY (28. 8. večer) ══════════
   Odsazení `--k01-odsun` dělá v kapitole místo pro archivní snímek
   u roku 1919. Pravidlo ale míří na `[data-era^="1897"]`, což sedí
   i na RÁMUJÍCÍ kapitolu „1897" — a ta žádný snímek nemá. Text jí tím
   utekl na x = 389 místo 201, tedy pryč od okraje, na kterém stojí
   #onelayer, patent i závěr. Michaela: „to rozložení v první historii
   je špatné." */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap--stripe[data-era^="1897"]{padding-left:0}
  .sc-wipe--hist .hs-chap--stripe[data-era^="1897"]::before{left:0}
}

/* ═══ JEDEN ZÁPIS DISPLEJOVÉHO PÍSMA (28. 8. večer) ══════════════════
   Michaela: „mám pocit, že máš někde špatné písmo." Cizí písmo na
   stránce není — vykresluje se jen Panchang a Inter. Zápisy toho
   displejového ale byly tři, a jeden z nich vadný:

     Panchang, PanchangVariable, Georgia, serif        22 prvků
     Panchang, system-ui, sans-serif                   11 prvků
     Panchang, system-ui, sans-serif, Georgia, serif    1 prvek  ← velký rok

   Ten třetí je nesmysl: `sans-serif` je generická rodina a všechno za
   ní už nikdy neplatí, takže „Georgia, serif" na konci je mrtvý zápis.
   Praktický důsledek: kdyby se Panchang jednou nenačetl, spadla by
   jedna část stránky na systémový bezpatkový a druhá na Georgii — a
   přesně tak vzniká dojem, že je někde jiné písmo.

   Jeden zápis pro celou stránku, i pro velký rok. */
:root{--font-display:Panchang,PanchangVariable,Georgia,serif}
.hs-rok,.sc-wipe--hist .hs-rok{font-family:var(--font-display)}

/* ═══ TMAVÁ KAPITOLA SI DRŽÍ SVĚTLÝ TEXT ════════════════════════════
   Kapitola „2000 — 2026" má vlastní tmavý panel a nezávisí na tom, jakou
   barvu má scéna kolem. Od chvíle, kdy se scéna na rámujícím snímku
   překlápí do bílé, se ale --hs-fg mění na tmavou pro celou scénu — a
   text téhle kapitoly, který si ho bere, byl tmavý na tmavém panelu.
   Naměřeno kontrolou vzhledu: 1,21 : 1 u nadpisu „Then billions chased
   scale." a 1 : 1 u údajů v kartách.

   Panel je tmavý vždycky, tak je tu i text vždycky světlý. */
.sc-wipe--hist .hs-chap--tmava .h,
.sc-wipe--hist .hs-chap--tmava .lead,
.sc-wipe--hist .hs-chap--tmava .eyebrow,
.sc-wipe--hist .hs-chap--tmava .hs-firm,
.sc-wipe--hist .hs-chap--tmava .hs-logo--slot b,
.sc-wipe--hist .hs-chap--tmava .hs-raise,
.sc-wipe--hist .hs-chap--tmava .hs-zdroj summary span{color:#fff}
.sc-wipe--hist .hs-chap--tmava .hs-yr,
.sc-wipe--hist .hs-chap--tmava .hs-note,
.sc-wipe--hist .hs-chap--tmava .hs-facts,
.sc-wipe--hist .hs-chap--tmava .hs-facts i,
.sc-wipe--hist .hs-chap--tmava .hs-dead{color:rgba(255,255,255,.74)}
.sc-wipe--hist .hs-chap--tmava .hs-facts li,
.sc-wipe--hist .hs-chap--tmava .hs-facts li i{color:rgba(255,255,255,.74)}
.sc-wipe--hist .hs-chap--tmava .hs-facts li b{color:#fff}
/* Hlavička scény — značka, „scroll to move through time" a počitadlo —
   měla barvu napevno, takže na bílém rámujícím snímku zmizela
   (naměřeno 1 : 1). Bere teď barvu scény jako všechno ostatní. */
.sc-wipe--hist .hs-hint,
.sc-wipe--hist .hs-brand,
.sc-wipe--hist .hs-count{color:var(--hs-mut,rgba(255,255,255,.74))}
.sc-wipe--hist .hs-count b{color:var(--hs-fg,#fff)}

/* ═══ RANNÍ DÁVKA 29. 8. ═════════════════════════════════════════════
   „Better Place" přetékalo přes pravou hranu své karty a naráželo do
   „Ample" vedle. Se čtyřmi kartami v řadě je karta 135 px široká a
   jméno na jeden řádek nevejde — `white-space:nowrap` mu to zakazovalo.
   Zalomí se tedy; velikost ani znění se nemění. */
.sc-wipe--hist .hs-chap--tmava .hs-logo--slot b{
  white-space:normal;overflow-wrap:anywhere;line-height:1.2}

/* Hvězdička u místa sedí pod jeho větou, uvnitř karty — stejně jako
   u firem. Panel se rozbaluje pod ní a je zarovnaný k jejímu levému
   okraji, ne přes sousední kartu. */
/* Hvězdička stojí NA KONCI věty, ne pod ní. Jako sourozenec <p> spadla
   na vlastní řádek a visela sama pod textem — na telefonu z toho byly
   tři osamocené hvězdičky pod třemi kartami. Uvnitř odstavce se chová
   jako slovo: sedí za tečkou a panel se rozbaluje pod ní. */
.hs-misto .hs-zdroj{display:inline-block;vertical-align:baseline;margin:0 0 0 .35em}
.hs-misto .hs-zdroj-in{min-width:min(280px,72vw)}

/* Bílá plocha překlopení. Leží NAD podkladem scény a POD kapitolami,
   takže překryje uhlovou plochu, ale ne text ani karty.

   29. 8. odpoledne: PŘELIV UŽ NENÍ ŘEZ. Do teď to dělal
   `clip-path:circle()`, a ten řeže natvrdo — vznikl holý bílý kotouč
   s nožovou hranou uprostřed obrazovky, který k ničemu na stránce
   nepatřil. Michaela: „a tento přechod je teď jiný než ty předtím."

   Teď je to radiální maska: uvnitř bílá, na kraji přechod do průhledna
   přes 80 px, takže hrana je světelná, ne nožová. Masku i její střed
   dosazuje script.js — bere tentýž střed jako bloomDraw(), aby dvě
   předávky po sobě nebyly na pixel stejné. */
.sc-wipe--hist .hs-bila{
  position:absolute;inset:0;z-index:0;
  background:#fff;pointer-events:none;opacity:0;
  -webkit-mask-image:none;mask-image:none}

/* ═══ VÍTĚZOVÉ NESOU CELOU OBRAZOVKU (29. 8.) ════════════════════════
   Michaela: „ty winners jsou na mě moc malé, chce to nějak jinak
   zakomponovat." Naměřeno: vítěz měl 232 × 248 px, tedy 57 536 px² —
   MÉNĚ než karta ve čtyřkartové řadě, ze které měl vyrůst (58 480).
   A oba seděli v pravé polovině sloupce.

   Teď zabírají sloupec celý, dva vedle sebe, a jsou to ty největší
   karty v celé historii. */
@media (min-width:901px){
  /* Kapitola je dvousloupcová mřížka a karty seděly v jejím pravém
     sloupci — 780…1269, tedy 489 px na oba vítěze dohromady. Řada proto
     jde přes celou šířku kapitoly, pod text, stejně jako řada míst
     v kapitole o principu. */
  /* 29. 8. odpoledne: KAPITOLA SE MUSÍ VEJÍT DO OKNA. Po zvětšení
     karet sahaly na 1470 × 833 až na 913 px, tedy 80 px pod spodní
     hranu. Karty jsou dominanta a nezmenšují se — ubírá se NAD nimi,
     kde ležely dvě stejná odsazení pod sebou: jedno na článku (dělá
     místo letopočtu ery, který na něm visí absolutně) a druhé ještě
     jednou na .hs-copy, kde už je to čirý vzduch, protože popisek
     eyebrow je v historii schovaný. Kapitola s třemi firmami má tohle
     druhé odsazení vynulované odjakživa; vítězové ho dostávají taky. */
  .sc-wipe--hist .hs-chap--leaders{grid-template-columns:1fr;
    row-gap:clamp(8px,1.4vh,16px);
    padding-top:calc(var(--fs-h2) + clamp(2px,.6vh,10px))}
  .sc-wipe--hist .hs-chap--leaders .hs-copy{padding-top:0}
  .sc-wipe--hist .hs-chap--leaders .lead{margin-top:clamp(8px,1.2vh,14px)}
  /* 29. 8. odpoledne: VÍTĚZ JE VĚTŠÍ. Naměřeno na 1470 × 833: karta NIO
     měla 534 × 331, naše 516 × 320 — poražený měl o 7 % větší plochu než
     vítěz. Sloupce byly proto chvíli nestejné — naše 1,16 dílu proti
     jednomu.

     29. 8. večer to Michaela upřesnila: vítězové jsou OBA, jen každý
     ve své kategorii — BattSwap pro commercial, NIO pro passenger.
     Karty jsou proto stejně velké a na jedné lince dna; jediný rozdíl
     je naše růžová v číslech a v lince pod značkou. */
  .sc-wipe--hist .hs-chap--leaders .hs-two{
    grid-column:1/-1;align-self:end;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    align-items:stretch;
    gap:clamp(20px,2.4vw,40px);width:100%}
  /* Karty musí mít společnou linku dna. Bez tohohle si každá vzala výšku
     podle svého obsahu — naše 334, NIO 325 — a přejímka připouští rozdíl
     šest pixelů. `1fr` samo nestačilo: sloupce se sázely podle obsahu
     (531 + 516 + mezera = 1 087 na 1 068 široké mřížce), proto minmax
     s nulovým minimem. */
  .sc-wipe--hist .hs-chap--leaders .hs-col{align-self:stretch}
  /* Obě karty na jednu mřížku. Do teď měla každá vlastní tok a `margin-top
     :auto` u seznamu čísel — NIO má tři řádky, my čtyři, takže první číslo
     v naší kartě leželo o 20 px níž a četlo se to jako dvě různě sázené
     tabulky. Popisek i značka teď stojí na řádcích pevné výšky, takže obě
     karty začínají čísly na jedné lince. */
  .sc-wipe--hist .hs-chap--leaders .hs-col{
    min-height:300px;padding:clamp(18px,2vw,26px);
    border-radius:var(--r-lg,24px);
    display:flex;flex-direction:column;gap:0}
  /* Značka je dominanta karty, ne poznámka pod popiskem. Z 20 px výšky
     jde na 48 — náš nápis tím dostane přes 200 px šířky, tedy zhruba
     37 % karty místo dosavadních 15. Popisek stojí pod ní. */
  .sc-wipe--hist .hs-chap--leaders .hs-logo{
    height:clamp(32px,5vh,44px);display:flex;align-items:center;
    margin:0 0 clamp(6px,.9vh,9px)}
  /* Kategorie je NADPIS karty, ne řádek pod značkou. „Commercial fleets
     & machines" a „Passenger vehicles" mají být to první, co člověk
     přečte — pořadí je značka, kategorie, čísla. Verzálky 13 px na to
     byly moc malé; jde na displejové písmo v běžné velikosti nadpisu
     karty. */
  /* Nadpis karty drží výšku dvou řádků, i když je na jeden. „Commercial
     fleets & machines" se láme na dva, „Passenger vehicles" ne — a bez
     pevné výšky začínala čísla v každé kartě jinde (naměřeno 24 px
     rozdílu). Obě karty tak mají první číslo na jedné lince. */
  .sc-wipe--hist .hs-chap--leaders .hs-col-lab{
    display:block;margin:0 0 clamp(6px,1vh,10px);
    min-height:2.3em;
    font-family:var(--font-display);font-weight:400;
    font-size:clamp(17px,1.5vw,21px);line-height:1.15;
    letter-spacing:-.01em;text-transform:none}
  .sc-wipe--hist .hs-chap--leaders .hs-facts{margin-top:0}
  .sc-wipe--hist .hs-chap--leaders .hs-facts li{font-size:15px}
  .sc-wipe--hist .hs-chap--leaders .hs-facts li b{font-size:21px}
}

/* ═══ NAŠE KARTA SVÍTÍ (29. 8.) ══════════════════════════════════════
   Michaela: „ten čtvereček, kde jsme my, barevně fakt moc nesedí,
   myslím si, že by měl více svítit nebo být bílý nebo cokoli."

   Naměřeno: naše karta měla podklad rgba(251,84,148,.07), tedy proti
   uhlové rgb(46,38,46) — od sousední se lišila o 5,8 bodu jasu z 255.
   Proto se nečetla jako naše, ale jako tatáž karta s jiným rámečkem.

   Je z ní bílá deska se značkovou září. Text v ní jde do tmavé, jinak
   by na bílé zmizel; růžová v ní bere tmavší odstín, protože je pod
   24 px (design systém). */
/* 29. 8. večer: ZÁŘ JE PRYČ, NE ZMENŠENÁ. Byla tam z jediného důvodu —
   odlišit bílou desku od uhlové obrazovky kolem. Kapitola vítězů se teď
   překlápí do bílé celá, takže není co odlišovat: karta a obrazovka mají
   tutéž barvu a naše je poznat velikostí, pořadím a růžovou uvnitř.
   Michaela: „vadí mi to nasvícení kolem toho bílého pole."

   Zůstává vlásový růžový lem. Bez něj by na bílé obrazovce nebylo vidět,
   kde deska začíná a končí. */
.sc-wipe--hist .hs-chap--leaders .hs-col--us{
  background:#fff;border-color:transparent;
  box-shadow:0 0 0 1px rgba(251,84,148,.45)}
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-col-lab,
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-facts li,
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-facts li i{color:rgba(14,14,16,.72)}
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-facts li b{color:#0E0E10}
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-facts .hs-win b{color:var(--pink-ink,#FB5494)}
/* Na bílé desce musí růžová zůstat vidět — je to pořád NAŠE karta.
   Nese ji popisek nahoře, čísla a linka pod značkou; všechno v tmavším
   odstínu --pink-ink, protože pod 24 px značková růžová na světlém
   nestačí (design systém). Bez toho měla karta 13 růžových pixelů
   a přejímka čeká aspoň 60. */
/* 29. 8. večer: NADPISEK NENÍ RŮŽOVÝ. Byl v tmavší --pink-ink, protože
   13px text má normu 4,5 : 1 a značková na bílé dá jen 3,08 — jenže tím
   byly v jedné kartě dvě růžové vedle sebe a Michaela to právem viděla
   jako chybu. Barvu textu mu dává pravidlo o kus výš spolu s čísly
   a poznámkami; růžová v kartě zůstává jediná, značková, na číslech. */
/* Čísla mají 21 px tučně, tedy VELKÝ text — norma 3,0. Značková ji
   splní (3,08) a je to barva, kterou má značka mít. Michaela: „a není
   to podle mě ani naše růžová." Měla pravdu, byla tam #BD376B. */
/* 31. 8.: ČÍSLA JDOU NA --pink-ink. Značková růžová má na bílé 3,09 : 1
   a na telefonu jsou ta čísla 16 px, tedy DROBNÝ text s normou 4,5 —
   naměřeno na `65K+`, `~2M`, `99.95%` i `Profitable`. Na počítači mají
   21 px a normu 3, kde by značková ještě těsně prošla, ale mít v jedné
   kartě dvě různé růžové podle šířky okna je horší než mít jednu, která
   platí všude. --pink-ink dá 5,35 : 1. U `Profitable` se přitom nic
   nedopisuje — mění se výhradně barva. */
/* 2. 9.: čísla v naší kartě vítězů jsou tmavá, ne růžová. Značková
   růžová má na bílé 3,09 : 1 a tohle je 16px text, kde platí 4,5.
   Třetí cesta ze zadání — text zůstane tmavý a růžová na téhle
   obrazovce zůstává ve značce a v liště. */
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-facts li b{color:var(--ink,#1D1D1F)}
/* Linka pod značkou není text, takže se na ni žádná norma kontrastu
   nevztahuje — je značková. */
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-logo--us{
  padding-bottom:clamp(8px,1.2vh,14px);
  border-bottom:2px solid var(--pink)}
/* Značka na bílé desce musí být tmavá, ne bílá. A musí mít stejnou váhu
   jako značka NIO vedle: NIO je čtvercová značka 39 × 28, naše je široký
   nápis, který se do téže výšky řádku vešel jen 17 px vysoký — vedle sebe
   pak působila naše karta slaběji, přesně naopak, než má. Nápis proto
   vyplní výšku řádku celý. */
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-logo--us img{filter:none;
  height:100%;width:auto;max-width:none}

/* ═══ PRUH „10×" (29. 8.) ════════════════════════════════════════════
   Radkova grafika. Na počítači je to fáze připnuté scény jako #patent,
   na telefonu běžný blok ve sloupci. Rozvržení podle předlohy: nahoře
   obrovské číslo vlevo a text vpravo, dole diagram přes celou šířku.

   Pozadí je velmi světlé, ne čistě bílé — tak to má Radek a odliší se
   tím od bílých pruhů #onelayer a #patent hned vedle. */
@media (min-width:701px){
  /* Svisle na stred, ne shora. Při horním zarovnání a odsazení 150 px
     zbývalo pod diagramem 330 px prázdna z 833 — dvě pětiny obrazovky.
     Sourozenci #onelayer i #patent jsou vystředění, tenhle pruh se tím
     do rodiny vrací. Lišta nahoře se odečítá odsazením, aby optický
     střed seděl na ploše POD ní. */
  .hero > #desetkrat{
    position:absolute;inset:0;z-index:7;
    margin:0;min-height:0;
    padding-top:var(--lista-v,72px);
    display:flex;align-items:center;
    opacity:0;visibility:hidden;
    will-change:opacity,transform}
}
@media(max-width:700px){
  /* Na telefonu je z pruhu běžný blok ve sloupci. Musí ale stát NAD
     závojem hera (.hero::before, z-index 1) — ten kreslí radiální tmu
     přes celý sloupec a čím níž prvek leží, tím je tmavší. Naměřeno:
     světlé pozadí #F5F6F8 se v pruhu vykreslovalo jako 178/223/242
     zleva doprava, tedy špinavý přechod místo klidné plochy.
     Sourozenec #onelayer tím netrpí jen proto, že leží vysoko, kde je
     závoj ještě průhledný. */
  .hero > #desetkrat{order:7;position:relative;z-index:2;inset:auto;
    opacity:1;visibility:visible;min-height:auto;
    padding-block:clamp(40px,7vh,72px)}
  .hero > #scHist{order:9}
}
#desetkrat{background:#F5F6F8}
#desetkrat .vr-in{display:flex;flex-direction:column;gap:clamp(26px,4vh,52px)}

/* ═══ PRUH 10× — JEN ČÍSLO (31. 8.) ═════════════════════════════════
   Michaela: „ty ikonky atd tam moc nezapadají, my to máme víc takový
   realističtější, něco AI, a tohle je fakt obyčejně nakreslené."

   Diagram byl jediná čárová kresba na webu, který jinak stojí na
   fotkách a vykreslených vrstvách — a kreslil podruhé týž motiv, jaký
   scéna vrstev těsně před ním ukáže doopravdy. Je pryč i s pravidly
   (.dx-krok, .dx-ram, .dx-stoh, .dx-vozy, .dx-vuz, .dx-linka,
   .dx-popis); markup leží v parked/10x-diagram.html.

   Zbylo, co ta obrazovka opravdu říká: velké číslo, nadpis, dvě řádky
   textu a hodně prázdna. Sazba je na střed, číslo nahoře — podle
   Radkovy předlohy PREDLOHA-10x.png.

   Stupně písma jsou čtyři, ne šest: nadpis a odstavec se stáhly tak,
   aby číslo bylo ohnisko (148 ÷ 34 = 4,4). Naměřeno: se starým
   rozvržením byl poměr 3,52 a obrazovka neměla dominantu. */
.dx-hlava{display:flex;flex-direction:column;align-items:center;
  text-align:center;gap:clamp(10px,1.6vh,18px)}
/* 31. 8.: ČÍSLO BERE ŠÍŘKU STRÁNKY. Michaela: „na desktopu tu část
   s 10× mi přijde, že je to spíš jakoby na čtverec rozložený a my tyhle
   popisy máme rozložené skoro po celé stránce ne?" Naměřeno: text měl
   503 px, tedy 34,9 % šířky okna, kdežto patent vedle bere 63,3 %.

   Šířku nemůže přinést nadpis — pruh má mít ohnisko aspoň 4,0, tedy
   číslo aspoň čtyřikrát větší než druhé písmo, a nadpis by ho stáhl.
   Přinese ji tedy samo číslo: velikost vychází z toho požadavku na
   šířku, ne z oka. */
.dx-cislo{margin:0;display:flex;align-items:center;justify-content:center;
  gap:.02em;font-family:var(--font-display);font-weight:700;line-height:.88;
  font-size:clamp(96px,27.5vw,380px);letter-spacing:-.04em;color:var(--ink);
  white-space:nowrap}
/* Křížek je --pink-ink, ne značková růžová. Značková má na podkladu
   pruhu #F5F6F8 kontrast 2,86 : 1 a norma pro velký tučný je 3 —
   naměřeno z pixelů snímku na pěti místech průběhu. --pink-ink dá
   5,35 : 1 a je to táž barva, jakou tu nese popisek naší vrstvy. */
/* 3. 9.: KŘÍŽEK U 10× JE ČERNÝ. Michaela: „u toho 10× je X opět
   růžové, dala bych ho asi černě." Na bílém podkladu má růžová
   3,09 : 1 (na 380 px by normu velkého písma ještě prošla), černá
   19,60 : 1 — a hlavně: růžová je na webu vyhrazená našemu řešení,
   „10× víc" je tvrzení o trhu. */
.dx-cislo b{color:#050505;font-weight:700}
.dx-slovo{display:flex;flex-direction:column;align-items:center;
  max-width:68ch}
#desetkrat .eyebrow{display:block;margin:0 0 clamp(8px,1.2vh,14px)}
#desetkrat .vr-h{font-size:clamp(22px,2.4vw,34px);margin:0}
/* Odstavec a řádek pod ním mají TÝŽ stupeň — je to jedna myšlenka ve
   dvou větách a dva blízké stupně vedle sebe vypadají jako omyl.
   Ušetří to i jednu velikost z těch čtyř, které tahle obrazovka smí
   mít. */
#desetkrat .vr-p{margin-top:clamp(10px,1.6vh,16px);max-width:62ch;
  font-size:clamp(15px,1.2vw,17px);line-height:1.5}
.dx-pod{margin:clamp(10px,1.6vh,16px) 0 0;font-family:var(--font-text);
  font-size:clamp(15px,1.2vw,17px);line-height:1.5;color:var(--muted,#52525A)}

/* Blok „jedna část = jedna obrazovka" (snap + min-height) je od
   29. 8. večer pryč. Snap se na dotyku pral s prstem — uživatel táhl
   a snap ho dotahoval jinam, a to bylo to sekání. Scéna si obraz drží
   sama tím, že je připnutá; snap nemá co dohánět. */

/* ═══ TELEFON: TÁŽ PŘIPNUTÁ SCÉNA JAKO NA POČÍTAČI (29. 8. večer) ═════
   Michaela: „nedá se to udělat stejně jako na desktopu? aby tam prostě
   při scrollování najela ta kapitola? jakoby celá?"

   Do teď se na telefonu scéna vůbec nestavěla: `upd()` se nespouštěl,
   takže se nic nepřepínalo — všechny čtyři kapitoly historie i všechny
   čtyři vrstvy měly krytí 1 od začátku stránky do konce. Vrstvy se jen
   naskládaly přes sebe a kapitoly stály pod sebou jako odstavce.

   Blok o kus výš („scény se na mobilu nepohybují, stojí pod sebou")
   zůstává v souboru kvůli všem těm úpravám rozvržení pro úzké okno,
   které pořád platí — tenhle blok z něj vrací zpátky JEN geometrii:
   scéna je zase připnutá a fáze v ní leží přes sebe.

   Dráha je odvozená od počtu fází, ne od výšky obsahu: osm fází
   (hero · #onelayer · vějíř · film · #patent · #desetkrat · vrstvy ·
   historie) po zhruba stu obrazovkových výšek, tedy táž tabulka prahů
   jako na počítači. */
@media(max-width:700px){
  /* Výšku dosazuje script.js v pixelech (viz komentář výš). */
  .pin > .hero{position:sticky;top:0;height:100svh;min-height:100svh;
    display:flex;align-items:center;overflow:hidden}

  /* Fáze zase leží přes sebe, ne pod sebou. Krytí a viditelnost jim
     dopisuje script.js, stejně jako na počítači. */
  .hero > .hero-lepivy,
  .hero > .wrap.hero-inner,
  .hero > .fanwipe,
  .hero > .hp-vid,
  .hero > .liveop-in,
  .hero > #onelayer,
  .hero > #patent,
  .hero > #desetkrat,
  .hero > #scLayers,
  .hero > #scHist{
    position:absolute;inset:0;width:auto;height:auto;
    margin:0;order:0;translate:none}
  /* POŘADÍ VRSTVENÍ. Fáze se navzájem nepřekrývají krytím, ale tím, že
     ta pozdější leží NAD tou dřívější — a to drží z-index. Na telefonu
     ho tři fáze neměly (#onelayer a #patent `auto`, #desetkrat 2, proti
     4 / 7 / 7 na počítači), protože jim ho dávala jen desktopová
     pravidla. Bílá scéna vějíře (z-index 5) proto ležela nad patentem
     i nad pruhem 10× a obrazovka byla v jejich fázi prostě prázdná bílá
     — naměřeno 600 px u patentu a 700 px u pruhu, jas 255 bez jediného
     tmavého bodu. Hodnoty jsou tytéž jako na počítači. */
  .hero > #onelayer{z-index:4}
  .hero > #patent{z-index:7}
  .hero > #desetkrat{z-index:7}
  .hero > .sc-wipe{position:absolute;inset:0;height:auto}
  .hero .sc-fan,.hero .sc-in{position:absolute;inset:0;height:auto}
  .hero #scHist .hs-chap{position:absolute;display:block}
  .hero #scHist .hs-body{height:100%;min-height:0}
  /* Pruh pro fleet managery se vrací tam, kam patří ve scéně: na spodek
     hera, přes celou šířku mínus okraje. Skládaná scéna ho vysunula pod
     hero jako blok v toku (`position:static;width:auto`), a jakmile je
     hero zase připnutá scéna, dělal ze sebe položku flexu vedle textu
     a smrskl se na třetinu šířky. Hodnoty jsou tytéž jako na počítači. */
  /* Text hera si nechá dole místo pro ten pruh — jinak mu leží přes
     poslední řádky perexu (naměřeno, že pruh začínal 30 px nad koncem
     odstavce). Odsazení je výška pruhu i s jeho odstupem ode dna. */
  .hero > .wrap.hero-inner{padding-bottom:clamp(210px,26vh,250px)}
  .hero > .fleetbar{position:absolute;left:50%;translate:-50% 0;
    bottom:clamp(20px,3.4vh,42px);
    width:min(calc(100% - 2*var(--pad)),var(--maxw));
    margin:0}

  /* Film je <video> přes celou scénu, ne blok v toku. */
  .hero > .hp-vid{width:100%;height:100%;object-fit:cover}
  .hero > .liveop-in{margin-top:0;height:auto}

  /* Oba stavy textu vrstev zase žijí. Skládaná scéna ukazovala rovnou
     ten překlopený („We cracked the code"), protože se nic nepřepínalo;
     teď se přepíná, tak musí být vidět i ten první („The vehicles are
     ready. The grid is not."). Střídání jich řídí třída .solved, tedy
     totéž, co na počítači. */
  .hero .lay-state.st-a{display:block}

  /* Popisky vrstev stojí ve sloupci pod diagramem, ne přes sebe.
     Skládaná scéna je měla naskládané na jedno místo a ukazovala vždycky
     jen ten jeden s třídou .je — jenže tu třídu dosazovala mobilní
     hlídka, která je pryč. Krytí jim teď dopisuje táž smyčka jako na
     počítači, takže se rozsvěcejí jeden po druhém, jak vrstvy dosedají.
     Bez tohohle se všechny čtyři tiskly přes sebe. */
  .hero .lay-tagy{position:relative;display:flex;flex-direction:column;
    gap:clamp(4px,.8vh,10px);height:auto;margin-top:clamp(10px,1.6vh,18px)}
  .hero .lay-tagy .lay-tag{position:relative;inset:auto;display:block;
    opacity:0;transform:none}
}

/* ═══ TELEFON: KAPITOLY HISTORIE SE VEJDOU NA OBRAZOVKU (29. 8. večer)
   Naměřeno v okně 844: text kapitoly 1897—1972 končil na 1154, kapitola
   se čtyřmi firmami dokonce na 1746 a vítězové na 1055. Kapitola je fáze
   připnuté scény — co je pod hranou, nikdo neuvidí, protože se scéna
   nikam neposouvá.

   Vzduch se bere nejdřív nahoře (velký letopočet a hlavička zabíraly
   385 px, než kapitola vůbec začala) a pak v sazbě karet: místa i firmy
   jdou do mřížky vedle sebe místo pod sebe. Obsah se nikde neruší. */
@media(max-width:700px){
  .sc-wipe--hist .hs-rok{font-size:clamp(28px,8.5vw,38px);line-height:1;margin-bottom:0}
  .sc-wipe--hist .hs-scrub-top{margin-bottom:clamp(6px,1.4vh,14px)}
  .sc-wipe--hist .sc-in{padding-block:clamp(56px,7.5vh,72px) clamp(8px,1.4vh,14px)}
  .hero #scHist .hs-chap{padding-top:calc(var(--fs-h2) * .6)}
  .sc-wipe--hist .hs-body{margin-top:0}
  .sc-wipe--hist .hs-hlava{margin-bottom:clamp(4px,1vh,10px)}
  .sc-wipe--hist .hs-chap .hs-copy{padding-top:0}
  .sc-wipe--hist .hs-chap .lead{margin-top:clamp(6px,1.1vh,11px);font-size:14px;line-height:1.4}
  .sc-wipe--hist .hs-chap .hs-art{margin-top:clamp(10px,1.6vh,16px)}

  /* Tři místa vedle sebe, ne pod sebou. */
  .sc-wipe--hist .hs-mista{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;width:100%}
  .sc-wipe--hist .hs-misto{padding:7px}
  .sc-wipe--hist .hs-misto-rok{font-size:13px}
  .sc-wipe--hist .hs-misto-kde{font-size:14px}
  .sc-wipe--hist .hs-misto-veta{font-size:11px;line-height:1.28;margin-top:2px}

  /* Čtyři firmy jako čtyři sevřené řádky, ne čtyři vysoké boxy. Ve
     mřížce 2 × 2 měla každá karta 356 px a dvě řady přetekly obrazovku
     o 381; v řádku má karta 80 a vejdou se všechny čtyři. Značka a rok
     stojí vlevo, částka vpravo, věta pod tím — nic se neruší. */
  .sc-wipe--hist .hs-art--firms{display:grid;grid-template-columns:1fr;gap:5px}
  .sc-wipe--hist .hs-firm{padding:6px 10px;min-height:0;
    display:grid;grid-template-columns:1fr auto;gap:1px 10px;align-items:baseline}
  .sc-wipe--hist .hs-firm .hs-logo--slot{grid-column:1;margin:0}
  .sc-wipe--hist .hs-firm .hs-logo--slot b{font-size:12px}
  .sc-wipe--hist .hs-firm .hs-raise{grid-column:1;font-size:13px}
  .sc-wipe--hist .hs-firm .hs-yr{grid-column:2;justify-self:end;font-size:12px;margin:0}
  .sc-wipe--hist .hs-firm .hs-raise{grid-column:1;font-size:14px}
  .sc-wipe--hist .hs-firm .hs-dead{grid-column:2;justify-self:end;font-size:11px;margin:0}
  /* Věta u firmy se na telefonu ořízne na dva řádky. Celá má 4 až 5
     řádků a čtyři takové karty přetečou obrazovku; dva řádky nesou to
     podstatné a zbytek si čtenář přečte na počítači. */
  /* Na jeden řádek. Dvouřádková věta u čtyř firem přetáhla kapitolu
     o 110 px; jeden řádek se vejde a zbytek stojí na počítači. */
  .sc-wipe--hist .hs-firm .hs-note{grid-column:1/-1;font-size:11px;line-height:1.3;
    margin:1px 0 0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;
    overflow:hidden}
  /* Hvězdička se zdrojem sedí v druhém sloupci prvního řádku vedle roku,
     ne na vlastním řádku — ušetří to 25 px na kartě, tedy sto na kapitole. */
  .sc-wipe--hist .hs-firm .hs-zdroj{grid-column:1/-1;justify-self:end;margin:0}
  /* Karty NIO a BattSwap nesou místo věty SEZNAM údajů — jinou stavbu
     než Better Place a Ample. S pevně určenými buňkami (`grid-area`)
     jim ty údaje spadly do jedné a tiskly se přes sebe; na telefonu
     to bylo „3,790 stations" přes „100M completed swaps". Buňky se
     proto neurčují, jen sloupce, a řádky si mřížka doplní sama podle
     pořadí — kolik jich karta má, tolik jich dostane. */
  .sc-wipe--hist .hs-firm ul{grid-column:1/-1;margin:4px 0 0;padding:0;
    list-style:none;display:flex;flex-direction:column;gap:3px}
  .sc-wipe--hist .hs-firm ul li{font-size:12px;line-height:1.35}
  /* NIO a BattSwap nemají větu a částku, ale seznam čísel — ten se sází
     do dvou sloupců, jinak je karta dvakrát vyšší než ostatní tři
     a poslední z nich zůstane pod hranou obrazovky. */
  .sc-wipe--hist .hs-firm .hs-facts{grid-area:2/1/4/3;display:grid;
    grid-template-columns:1fr 1fr;gap:0 10px;margin:2px 0 0}
  .sc-wipe--hist .hs-firm .hs-facts li{font-size:11px;line-height:1.25}
  .sc-wipe--hist .hs-firm .hs-facts li b{font-size:13px}
  .sc-wipe--hist .hs-firm .hs-facts li i{font-size:10px}
  .sc-wipe--hist .hs-firm .hs-logo--slot img,
  .sc-wipe--hist .hs-firm .hs-logo img{height:18px;width:auto}

  /* Vítězové: dvě karty pod sebou, ale sevřenější. */
  .sc-wipe--hist .hs-chap--leaders .hs-col{min-height:0;padding:10px 12px;gap:0}
  .sc-wipe--hist .hs-chap--leaders .hs-logo{height:24px;margin:0 0 6px}
  .sc-wipe--hist .hs-chap--leaders .hs-col-lab{font-size:15px;margin:0 0 6px}
  .sc-wipe--hist .hs-chap--leaders .hs-facts{gap:2px}
  .sc-wipe--hist .hs-chap--leaders .hs-facts li{font-size:13px;line-height:1.25}
  .sc-wipe--hist .hs-chap--leaders .hs-facts li b{font-size:16px}
  .sc-wipe--hist .hs-chap--leaders .hs-two{gap:8px}
  .sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-logo--us{padding-bottom:4px}
}

/* ═══ HRATELNÁ OSA HISTORIE (29. 8. večer) ═══════════════════════════
   Jedna vlásová linka se čtyřmi uzly pod hlavičkou scény. Je to jediná
   věc, která přežije všechny čtyři kapitoly — z ní jde přečíst, že jde
   o oblouk 129 let, ne o čtyři samostatné obrazovky.

   Vlásová a hned pod hlavičkou schválně: tvrzení pod ní zůstává
   dominanta. Barvy jdou ze scény (--hs-fg, --hs-pink), takže se osa
   překlopí s ní do bílé stejně jako všechno ostatní. */
/* Scéna má `pointer-events:none`, aby kliknutí propadala pod ni. Osa se
   z toho musí vyjmout, jinak by se na uzel nedalo najet — ale JEN když
   je historie opravdu rozehraná (třídu `.live` dosazuje odkrývací
   smyčka), aby neschovaná osa nebrala kliknutí sekcím pod sebou. */
#scHist.live .hs-osa,#scHist.live .hs-uzel{pointer-events:auto}
/* Osa si bere výšku ze vzduchu, který byl mezi hlavičkou a velkým rokem
   — sama nesmí obsah posunout dolů. Bez záporného odsazení pod ní se
   kapitola vítězů posunula o 60 px a vytekla pod hranu okna. */
.hs-osa{position:relative;display:grid;
  grid-template-columns:repeat(var(--osa-n,4),1fr);
  align-items:start;margin:clamp(6px,.9vh,11px) 0 clamp(4px,.8vh,10px);
  padding:0;list-style:none}
/* Linka vede středy krajních uzlů, ne přes celou šířku — jinak by
   vybíhala ven z prvního a posledního puntíku. */
.hs-osa::before{content:"";position:absolute;left:calc(50% / var(--osa-n,4));
  right:calc(50% / var(--osa-n,4));top:5px;height:1px;
  background:var(--hs-line,rgba(255,255,255,.18))}
/* Dokreslená část linky. Leží přesně na ní a roste zleva; přechod je
   pomalý (--t-slow), aby to bylo dokreslování, ne skok. */
.hs-osa-cesta{position:absolute;left:calc(50% / var(--osa-n,4));
  right:calc(50% / var(--osa-n,4));top:5px;height:1px;
  background:var(--hs-pink,#FB5494);transform:scaleX(0);transform-origin:left center;
  transition:transform var(--t-slow,640ms) var(--ease,cubic-bezier(.16,1,.30,1));
  pointer-events:none}
.hs-uzel{position:relative;display:flex;flex-direction:column;align-items:center;
  gap:8px;background:none;border:0;padding:0 4px;cursor:pointer;
  font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}
.hs-uzel-b{position:relative;z-index:1;display:block;width:11px;height:11px;
  border-radius:50%;box-sizing:border-box;
  border:1px solid var(--hs-mut,rgba(255,255,255,.72));background:transparent;
  transition:background var(--t-fast,140ms) var(--ease,cubic-bezier(.16,1,.30,1)),
             border-color var(--t-fast,140ms) var(--ease,cubic-bezier(.16,1,.30,1)),
             transform var(--t-base,260ms) var(--ease,cubic-bezier(.16,1,.30,1))}
/* Popisky uzlů zhasínají přesně v půli překlopení do bílé. Barva textu
   se v tu chvíli teprve překlápí — bílá plocha už obrazovku kryje, ale
   text je pořád bílý — a kontrola vzhledu na tom u 13px textu naměřila
   1 : 1. Velké nadpisy tím projdou (norma 3), drobný popisek ne.
   `--hs-stred` je 1 přesně uprostřed překlopení a 0 na obou koncích,
   takže popisky zmizí jen na tu chvíli a hned se vrátí. Puntíky
   zůstávají — ty jsou růžové nebo tlumené, ne bílé na bílé. */
.hs-uzel i{font-style:normal;font-family:var(--font-text);
  font-size:var(--fs-label,13px);letter-spacing:.06em;text-transform:uppercase;
  color:var(--hs-faint,rgba(255,255,255,.58));white-space:nowrap;
  opacity:calc(1 - var(--hs-stred, 0));
  transition:color var(--t-fast,140ms) var(--ease,cubic-bezier(.16,1,.30,1))}
/* projeté: plné, ale tlumené */
.hs-uzel.byl .hs-uzel-b{background:var(--hs-mut,rgba(255,255,255,.72));
  border-color:var(--hs-mut,rgba(255,255,255,.72))}
/* právě čtená: plná a růžová */
.hs-uzel.je .hs-uzel-b{background:var(--hs-pink,#FB5494);
  border-color:var(--hs-pink,#FB5494);transform:scale(1.36)}
.hs-uzel.je i{color:var(--hs-fg,#fff)}
.hs-uzel:hover .hs-uzel-b,.hs-uzel:focus-visible .hs-uzel-b{transform:scale(1.36)}
.hs-uzel:focus-visible{outline:2px solid var(--hs-pink,#FB5494);outline-offset:6px;
  border-radius:4px}
@media(max-width:700px){
  .hs-osa{margin:8px 0 6px}
  .hs-uzel{gap:6px;padding:0 2px}
  /* Na 390 px se čtyři éry vedle sebe skoro dotýkají — „2000 — 2026"
     a „2014 — TODAY" měly mezi sebou 4 px. Menší stupeň a užší prostrkání
     jim dá vzduch; 10 px je verzálkový popisek, ne běžný text. */
  .hs-uzel i{font-size:10px;letter-spacing:.02em}
  .hs-uzel-b{width:9px;height:9px}
}

/* Hvězdička se zdrojem má tutéž vadu jako popisky uzlů: v půli
   překlopení do bílé je bílá na bílém (naměřeno 1 : 1 na 13px znaku).
   Zhasíná proto na tu chvíli stejně jako ony a hned se vrací. */
#scHist .hs-zdroj > summary{opacity:calc(1 - var(--hs-stred, 0))}

/* ═══ MÍSTA JSOU STŘED KAPITOLY, FOTKA JDE POD NĚ (30. 8.) ═══════════
   Michaela: „aby právě ten new york barcelonu atd na té stránce dal
   doprostřed, to je to důležité právě, a tu fotografii z toho dej někam
   dolů."

   Naměřeno na 1440 × 900: tři místa stála 226 px POD středem kapitoly,
   zabírala 18,4 % její výšky a ležela na spodní hraně jako patička —
   zatímco fotka, kterou jen náhodou vlastníme, seděla vlevo nahoře
   a brala 283 px výšky. Pořadí důležitosti na obrazovce bylo přesně
   obrácené proti pořadí důležitosti v obsahu.

   Kapitola je proto tři řádky: text, místa, fotka. Krajní řádky mají
   stejný díl (1fr), takže prostřední leží přesně na svislém středu —
   není to dopočítané odsazení, které by se při jiné výšce okna
   rozešlo. */
/* Kapitola historie s místy má celé své rozvržení (místa na střed,
   fotka pod nimi malá vedle popisky) až od 901 px — a pod tou hranicí
   nepřebírá nic, protože telefonní rozvržení končí na 700. Na iPadu
   na výšku (768, 810, 820 px) proto platily jen základní styly: fotka
   se roztáhla přes celou šířku a byla 1048 px vysoká, mřížka kapitoly
   přetekla desku o 521 px a obsah vylezl NAHORU přes hlavičku scény.
   Přesně to Michaela viděla jako „celé rozhozené". Hranice tedy jde
   na 701, aby na tablet platilo totéž co na počítač. */
@media (min-width:701px){
  .sc-wipe--hist .hs-chap:has(.hs-mista){
    grid-template-columns:1fr;
    grid-template-rows:1fr auto 1fr;
    row-gap:clamp(12px,1.8vh,20px)}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .hs-copy{grid-row:1;align-self:start}
  .sc-wipe--hist .hs-chap .hs-mista{grid-row:2;align-self:center;
    margin-left:0;width:100%}

  /* Fotka je doklad, ne plakát: leží pod místy, obrázek vlevo a popiska
     vedle něj, takže celý blok má na výšku necelou stovku a na kapitolu
     zbude místo pro to podstatné. Ze `position:absolute` se vrací do
     toku — jinak by se nedala postavit POD místa, jen posunout. */
  .sc-wipe--hist .hs-chap:has(.hs-mista) .hs-foto{
    position:static;grid-row:3;align-self:start;
    display:flex;gap:14px;align-items:flex-start;
    width:auto;max-width:640px;margin:0}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .hs-foto img{
    width:108px;flex:none}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .hs-foto figcaption{
    margin:0;font-size:12px;line-height:1.4;max-width:34ch}

  /* Místa dostanou váhu: větší letopočet, víc vzduchu v kartě a delší
     dělicí linka. Text se nemění — mění se sazba. */
  .sc-wipe--hist .hs-mista{margin-top:0;gap:clamp(16px,1.8vw,28px)}
  .sc-wipe--hist .hs-misto{padding-top:14px;gap:5px;border-top-width:2px}
  .sc-wipe--hist .hs-misto-rok{font-size:26px;line-height:1.05}
  .sc-wipe--hist .hs-misto-veta{margin-top:3px;font-size:15px;line-height:1.45}
}

/* Doladění výšek, aby na krajní řádky (1fr) vůbec nějaká výška zbyla —
   bez ní se mřížka přetéká a prostřední řádek se nemá kolem čeho
   vystředit. Naměřeno: obsah potřeboval 578 px v desce vysoké 553. */
/* Kapitola historie s místy má celé své rozvržení (místa na střed,
   fotka pod nimi malá vedle popisky) až od 901 px — a pod tou hranicí
   nepřebírá nic, protože telefonní rozvržení končí na 700. Na iPadu
   na výšku (768, 810, 820 px) proto platily jen základní styly: fotka
   se roztáhla přes celou šířku a byla 1048 px vysoká, mřížka kapitoly
   přetekla desku o 521 px a obsah vylezl NAHORU přes hlavičku scény.
   Přesně to Michaela viděla jako „celé rozhozené". Hranice tedy jde
   na 701, aby na tablet platilo totéž co na počítač. */
@media (min-width:701px){
  .sc-wipe--hist .hs-chap:has(.hs-mista){
    padding-top:calc(var(--fs-h2) + 4px);
    row-gap:clamp(8px,1.2vh,14px)}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .hs-copy{padding-top:0}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .lead{margin-top:clamp(8px,1.2vh,14px);
    line-height:1.4}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .hs-foto img{width:88px}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .hs-foto figcaption{font-size:11.5px;
    line-height:1.35}
}

/* TELEFON: fotka se vejde nad spodní hranu a místa dostanou svých 28 %.
   Naměřeno: snímek končil na y 888 v okně 844, tedy 44 px pod hranou —
   uříznutý. Obrázek jde vedle popisky jako na počítači a je menší. */
@media (max-width:700px){
  .hero #scHist .hs-foto{
    display:flex;gap:10px;align-items:flex-start;margin:0}
  .hero #scHist .hs-foto img{width:104px;flex:none}
  .hero #scHist .hs-foto figcaption{margin:0;font-size:11px;line-height:1.35}
  .sc-wipe--hist .hs-misto{padding-top:9px}
  .sc-wipe--hist .hs-misto-rok{font-size:17px;line-height:1.1}
  .sc-wipe--hist .hs-misto-veta{margin-top:2px;font-size:12px;line-height:1.35}
}

@media (max-width:700px){
  /* Kapitola s místy měla nad textem 118 px odsazení, takže se celý blok
     propadl pod svislý střed (odchylka 63 px, dovolených 60) a fotka
     seděla těsně na spodní hraně míst — dvě věci se dotýkaly. Odsazení
     se zkrátí a mezi místa a fotku se dá vzduch. */
  .hero #scHist .hs-chap:has(.hs-mista){padding-top:calc(var(--fs-h2) * .3)}
  .hero #scHist .hs-chap:has(.hs-mista) .hs-foto{margin-top:16px}
}

/* Velký rok se zmenšuje, aby se přestal potkávat s popisky osy.
   Naměřeno: glyfy roku běžely od x 186 do 421/426/454 a první popisek
   osy „1897" stál na x 303 — uvnitř čísla, na všech třech kapitolách.
   Osa se přitom kvůli místu tiskla přes rok záporným odsazením; to je
   pryč, obojí má zase svůj řádek. Menší stupeň k tomu vrací výšku,
   o kterou se kapitola vítězů jinak posunula pod hranu okna. */
@media (min-width:901px){
  .sc-wipe--hist .hs-rok{font-size:clamp(34px,3.4vw,48px);line-height:1.05}
}

/* Poslední doladění středu: odchylka vyšla 61 px při dovolených 60.
   Kapitola má nahoře odsazení pro letopočet éry, dole žádné — obsahový
   rám je tím posunutý dolů o půlku toho odsazení. Zkrátí se, a odstavec
   se o kousek stáhne, takže na krajní řádky mřížky zbude víc vůle. */
@media (min-width:901px){
  /* Odsazení nesmí klesnout pod výšku letopočtu éry — ten na kapitole
     visí absolutně u horní hrany a při zkráceném odsazení se otiskl
     přes nadpis „The physics were always right.". Výšku, o kterou se
     tím kapitola prodlouží, si bere zpátky odstavec a fotka. */
  .sc-wipe--hist .hs-chap:has(.hs-mista){padding-top:calc(var(--fs-h2) + 2px)}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .lead{margin-top:6px;max-width:52ch;
    font-size:16px;line-height:1.4}
  .sc-wipe--hist .hs-chap:has(.hs-mista) .hs-foto figcaption{max-width:30ch}
}

/* Kapitola vítězů: osa nad velkým rokem si vzala výšku a karty se
   propadly 31 px pod hranu okna. Odsazení pro letopočet éry se zkrátí
   stejně jako u kapitoly s místy a karty se o kousek seberou. */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap--leaders{padding-top:calc(var(--fs-h2) * .6)}
  .sc-wipe--hist .hs-chap--leaders .hs-col{padding:clamp(13px,1.5vw,20px)}
  .sc-wipe--hist .hs-chap--leaders .hs-logo{height:clamp(26px,3.8vh,34px)}
}


/* ═══ DRUHÁ VERZE HISTORIE — SVISLÁ OSA (30. 8.) ═════════════════════
   „Michaela historie". Běží jen s ?historie=osa v adrese; bez něj se
   nemontuje vůbec a Radkova verze zůstává přesně taková, jaká je.

   Pravidla jsou PŘENESENÁ z OSA-PREDLOHA.html, ne opsaná — kreslení
   vlásečnic a časování větru je odladěné a při přepisu se to rozbije.
   Změnily se jen názvy tříd (`.sv .u` → `#scHistOsa .hs-uzel-osa`
   a spol.) a výška: scéna není blok 720 px, ale fáze připnuté dráhy.

   Podklad je #383E42, tedy šedá z brandmanuálu (str. 20 a 22).
   Dnešní #1F2226 v manuálu není — ale platí to JEN tady, Radkova
   verze zůstává na své barvě, jinak by se ty dvě nedaly srovnat. */
#scHistOsa{--tma:#383E42;--tma-rgb:56,62,66;--ruz:#FB5494;--ruz-ink:#BD376B;
  --mut:rgba(255,255,236,.62);--faint:rgba(255,250,252,.34);
  --linka:rgba(255,240,246,.16);
  --displej:var(--font-display);--text:var(--font-text);
  position:absolute;inset:0;z-index:8;background:#383E42;
  opacity:0;visibility:hidden;overflow:hidden}
#scHistOsa canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
#scHistOsa .hs-uzly{position:absolute;inset:0}
#scHistOsa .hs-tvrz{position:absolute;left:28px;top:26px;right:28px;
  pointer-events:none}
#scHistOsa .hs-tvrz b{display:block;font-family:var(--displej);font-weight:300;
  font-size:clamp(18px,2.2vw,26px);font-stretch:expanded;transition:opacity .34s ease}
#scHistOsa .hs-tvrz i{display:block;font-style:normal;font-size:11px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-bottom:6px}
#scHistOsa .hs-uzel-osa{position:absolute;transform:translate(-50%,-50%);
  width:0;height:0}
#scHistOsa .hs-uzel-osa .bod{position:absolute;border-radius:50%;box-sizing:border-box;
  border:1px solid transparent;
  transition:transform .3s cubic-bezier(.2,.8,.3,1),border-color .3s,background .3s,box-shadow .3s}

/* Úvodní pruh je doslova dnešní kapitola 01: nejdřív se řekne, že to
   není nový nápad, a teprve pak se ukáže těch 129 let. Bez ní osa
   začíná rokem 1897 bez vysvětlení, proč se na něj člověk dívá. */
#scHistOsa .hs-chap--stripe{position:absolute;inset:0;display:flex;
  align-items:center;padding:0 clamp(20px,5vw,56px);z-index:5}
#scHistOsa .hs-chap--stripe .eyebrow{display:block;margin:0 0 12px;
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}
#scHistOsa .hs-chap--stripe .h{margin:0;font-family:var(--displej);
  font-weight:300;font-stretch:expanded;font-size:clamp(28px,4.4vw,58px);
  line-height:1.04;color:#fff}
#scHistOsa .hs-chap--stripe .lead{margin:14px 0 0;font-family:var(--text);
  font-size:clamp(15px,1.4vw,19px);line-height:1.45;color:var(--mut);max-width:44ch}
/* ---- E: svislá páteř s vlásečnicemi ve větru ---- */
  
  #scHistOsa .hs-uzel-osa{z-index:2}
  #scHistOsa .hs-uzel-osa .stopka,#scHistOsa .hs-uzel-osa svg{display:none}
  #scHistOsa .hs-uzel-osa .bod{left:-5px;top:-5px;width:10px;height:10px;
    border-color:rgba(251,84,148,.34);background:rgba(var(--tma-rgb),.92)}
  #scHistOsa .hs-uzel-osa.pres .bod{background:var(--ruz);border-color:var(--ruz)}
  #scHistOsa .hs-uzel-osa.tady .bod{transform:scale(1.8);
    box-shadow:0 0 0 5px rgba(251,84,148,.10),0 0 32px 9px rgba(251,84,148,.42)}
  #scHistOsa .hs-uzel-osa .obsah{position:absolute;top:50%;white-space:nowrap;
    transform:translateY(-50%);transition:transform .4s cubic-bezier(.2,.8,.3,1)}
  #scHistOsa .hs-uzel-osa.vlevo .obsah{right:26px;text-align:right}
  #scHistOsa .hs-uzel-osa.vpravo .obsah{left:26px;text-align:left}
  #scHistOsa .hs-uzel-osa.tady.vlevo .obsah{transform:translateY(-50%) translateX(-6px)}
  #scHistOsa .hs-uzel-osa.tady.vpravo .obsah{transform:translateY(-50%) translateX(6px)}
  #scHistOsa .rk{display:block;font-family:var(--displej);font-weight:300;
    font-stretch:expanded;font-size:26px;line-height:1;color:var(--faint);
    transition:color .32s ease}
  #scHistOsa .hs-uzel-osa.pres .rk{color:rgba(255,255,255,.84)}
  #scHistOsa .hs-uzel-osa.tady .rk{color:var(--ruz)}
  #scHistOsa .kd{display:block;font-size:11px;letter-spacing:.16em;text-transform:uppercase;
    color:var(--mut);margin-top:5px}
  #scHistOsa .vt{display:block;font-size:12.5px;color:var(--faint);margin-top:3px;
    max-width:26ch;white-space:normal;opacity:0;
    transition:opacity .34s ease}
  #scHistOsa .hs-uzel-osa.vlevo .vt{margin-left:auto}
  #scHistOsa .hs-uzel-osa.tady .vt{opacity:1}
  #scHistOsa .hs-tvrz{left:50%;transform:translateX(-50%);text-align:center;
    max-width:52%;top:20px;right:auto}




  /* ---- E: hvězdička se zdrojem u každého uzlu ----
     Stejné chování jako v historii dnes: nativní <details>, žádný
     JavaScript. Sedí na konci věty, ne pod ní. */
  #scHistOsa .hvez{display:inline;margin-left:5px}
  #scHistOsa .hvez details{display:inline;position:relative}
  #scHistOsa .hvez summary{display:inline;list-style:none;cursor:pointer;
    font-size:11px;color:var(--faint);vertical-align:2px;
    transition:color .22s ease}
  #scHistOsa .hvez summary::-webkit-details-marker{display:none}
  #scHistOsa .hvez summary:hover,#scHistOsa .hvez details[open] summary{color:#fff}
  #scHistOsa .hvez .zin{position:absolute;bottom:calc(100% + 8px);z-index:6;
    width:230px;padding:9px 11px;border-radius:2px;
    background:#22272B;border:1px solid rgba(255,248,250,.18);
    box-shadow:0 10px 30px rgba(0,0,0,.34);
    font-size:11.5px;line-height:1.4;white-space:normal;text-align:left}
  #scHistOsa .hs-uzel-osa.vlevo .hvez .zin{right:-8px}
  #scHistOsa .hs-uzel-osa.vpravo .hvez .zin{left:-8px}
  #scHistOsa .hvez .zin a{color:#fff;text-decoration:none;
    border-bottom:1px solid rgba(255,248,250,.32)}
  #scHistOsa .hvez .zin a:hover{border-bottom-color:#fff}
  /* Uzel musí brát kliknutí, jinak se na hvězdičku nedá najet. */
  #scHistOsa .hs-uzel-osa .obsah{pointer-events:auto}


  /* ---- E: značky firem na ose --------------------------------
     Loga máme na čtyři firmy z Radkovy řady ②: Better Place, Ample,
     NIO a nás. Mercedes-Benz logo nemáme a cizí ochranné známky
     nestahuju — 1972 proto zůstává napsané, stejně jako New York
     a Barcelona. Není to nedůslednost: řada ① jsou místa a doba,
     řada ② jsou značky, které o trh hrály. Až soubor logo-mercedes
     přibude do assets/img/, sedne do stejného slotu.

     Na ose jsou VŠECHNA loga jednobarevně bílá — Better Place je
     modré a Ample tmavě šedé, a obojí by na šedé buď křičelo barvou,
     nebo zmizelo. Barva přijde až na bílém finále, kde jsou vítězové
     ve své vlastní podobě.                                        */
  #scHistOsa .zna{display:inline-block;vertical-align:middle}
  #scHistOsa .zna img{display:block;height:auto;width:auto;
    max-height:17px;max-width:104px;object-fit:contain;
    filter:brightness(0) invert(1);opacity:.62;
    transition:opacity .3s ease,filter .3s ease}
  /* #scHistOsa .hs-uzel-osa svg{display:none} a .u svg{position:absolute} o kus výš
     schovávaly i značku — naměřeno 0 × 0 px. Proto se tu obojí ruší. */
  #scHistOsa .zna svg{display:block;position:static;color:#fff;filter:none;
    height:17px;width:24px;opacity:.62;
    transition:opacity .3s ease}
  #scHistOsa .hs-uzel-osa.pres .zna img{opacity:.82}
  #scHistOsa .hs-uzel-osa.pres .zna svg{opacity:.82}
  #scHistOsa .hs-uzel-osa.tady .zna img,#scHistOsa .hs-uzel-osa.tady .zna svg{opacity:1}
  #scHistOsa .hs-uzel-osa.vlevo .kd{display:flex;align-items:center;justify-content:flex-end;gap:7px}
  #scHistOsa .hs-uzel-osa.vpravo .kd{display:flex;align-items:center;gap:7px}

  /* ---- E: OSA JE JEDNOBAREVNÁ ----------------------------------
     Michaela 30. 8.: „růžové to uděláme až u BattSwapu a NIO
     v okamžiku těch vítězů." Na ose proto není ani jeden růžový
     pixel — stav nese jas, ne barva. Měřením to sedí: #FB5494 má
     na šedé #383E42 jen 3,51 : 1, bílá 10,85 : 1. Růžová se drží
     na konec, kde přistane na bílém podkladu jako #BD376B (5,35 : 1)
     a je to jediné místo na obrazovce, kde barva je.              */
  #scHistOsa .hs-uzel-osa .bod{border-color:rgba(255,248,250,.34);
    background:rgba(var(--tma-rgb),.92)}
  #scHistOsa .hs-uzel-osa.pres .bod{background:rgba(255,248,250,.62);
    border-color:rgba(255,248,250,.62)}
  #scHistOsa .hs-uzel-osa.tady .bod{background:#fff;border-color:#fff;transform:scale(1.8);
    box-shadow:0 0 0 5px rgba(255,255,255,.08),0 0 30px 8px rgba(255,255,255,.20)}
  #scHistOsa .hs-uzel-osa.tady .rk{color:#fff}
  #scHistOsa .hs-doklad img{outline-color:rgba(255,248,250,.22)}
  #scHistOsa .hs-doklad:hover img,#scHistOsa .hs-doklad:focus-visible img{outline-color:#fff}
  #scHistOsa .hs-doklad:hover .rok19,#scHistOsa .hs-doklad:focus-visible .rok19{color:#fff}



  /* ---- E: OSA JE JEDNOBAREVNÁ ----------------------------------
     Michaela 30. 8.: „růžové to uděláme až u BattSwapu a NIO
     v okamžiku těch vítězů." Na ose proto není ani jeden růžový
     pixel — stav nese jas, ne barva. Měřením to sedí: #FB5494 má
     na šedé #383E42 jen 3,51 : 1, bílá 10,85 : 1. Růžová se drží
     na konec, kde přistane na bílém podkladu jako #BD376B (5,35 : 1)
     a je to jediné místo na obrazovce, kde barva je.              */
  #scHistOsa .hs-uzel-osa .bod{border-color:rgba(255,248,250,.34);
    background:rgba(var(--tma-rgb),.92)}
  #scHistOsa .hs-uzel-osa.pres .bod{background:rgba(255,248,250,.62);
    border-color:rgba(255,248,250,.62)}
  #scHistOsa .hs-uzel-osa.tady .bod{background:#fff;border-color:#fff;transform:scale(1.8);
    box-shadow:0 0 0 5px rgba(255,255,255,.08),0 0 30px 8px rgba(255,255,255,.20)}
  #scHistOsa .hs-uzel-osa.tady .rk{color:#fff}
  #scHistOsa .hs-doklad img{outline-color:rgba(255,248,250,.22)}
  #scHistOsa .hs-doklad:hover img,#scHistOsa .hs-doklad:focus-visible img{outline-color:#fff}
  #scHistOsa .hs-doklad:hover .rok19,#scHistOsa .hs-doklad:focus-visible .rok19{color:#fff}


  /* ---- E: doklad z roku 1919 ---- */
  #scHistOsa .hs-doklad{position:absolute;z-index:4;transform:translate(-100%,-50%);
    cursor:pointer;opacity:0;pointer-events:none;
    transition:opacity .5s ease}
  #scHistOsa .hs-doklad.je{opacity:1;pointer-events:auto}
  #scHistOsa .hs-doklad figure{margin:0;position:relative;
    width:104px;transform-origin:100% 50%;
    transition:width .46s cubic-bezier(.2,.8,.3,1)}
  #scHistOsa .hs-doklad img{display:block;width:100%;height:auto;border-radius:1px;
    filter:grayscale(1) contrast(1.04) brightness(.86);
    outline:1px solid rgba(255,248,250,.22);outline-offset:0;
    transition:filter .42s ease,outline-color .3s ease}
  #scHistOsa .hs-doklad .rok19{position:absolute;left:-2px;top:-19px;
    font-family:var(--displej);font-weight:300;font-stretch:expanded;
    font-size:14px;color:var(--faint);letter-spacing:.02em;
    transition:color .3s ease}
  #scHistOsa .hs-doklad figcaption{position:absolute;left:0;right:0;bottom:0;
    padding:26px 12px 10px;text-align:left;font-size:11px;line-height:1.4;
    color:rgba(255,255,255,.86);opacity:0;pointer-events:none;
    background:linear-gradient(to top,rgba(0,0,0,.82),rgba(0,0,0,0));
    transition:opacity .34s ease}
  #scHistOsa .hs-doklad:hover figure,#scHistOsa .hs-doklad:focus-visible figure{width:300px}
  /* Fotka je na výšku větší než mezera mezi uzly, takže by při zvětšení
     nutně ležela na sousedech. Místo zmenšování se na tu chvíli ZTLUMÍ
     osa — je to jeden doklad, na který se člověk schválně podíval,
     ne ozdoba kapitoly. Vrátí se sama, jakmile myš odjede. */
  #scHistOsa .hs-doklad{z-index:7}
  #scHistOsa .hs-doklad:hover img,#scHistOsa .hs-doklad:focus-visible img{
    filter:grayscale(1) contrast(1.06) brightness(1)}
  #scHistOsa .hs-doklad:hover figcaption,#scHistOsa .hs-doklad:focus-visible figcaption{opacity:1}
  #scHistOsa .hs-doklad:focus-visible{outline:none}

  /* ---- E: překlop do bílé u vítězů ---- */
  #scHistOsa{background:var(--tma)}
  /* ŽÁDNÝ PŘECHOD NA KRYTÍ. Krytí uzlů i tvrzení dopisuje script.js
     každý snímek podle polohy na dráze — přechod přes něj jenom položí
     třetinu vteřiny zpoždění a při rolování se pak kreslí hodnota,
     která na dráze byla dřív. Naměřeno: tvrzení „The physics were
     always right." se při skutečném rolování zastavilo na krytí 0,68
     místo 1, ačkoli po ustálení má na téže poloze jedničku. Na telefonu
     to bylo pryč od 31. 8., tohle je totéž na počítači. */
  #scHistOsa .hs-uzly,#scHistOsa .hs-tvrz{transition:none}
  #scHistOsa .hs-vit{position:absolute;inset:0;display:grid;place-items:center;
    opacity:0;pointer-events:none;z-index:3}
  #scHistOsa .hs-vit .par{display:flex;gap:20px;flex-wrap:wrap;justify-content:center}
  #scHistOsa .hs-vit .hs-kar{width:230px;padding:22px 20px 20px;border-radius:2px;
    border:1px solid rgba(31,34,38,.14);background:#fff;text-align:left}
  #scHistOsa .hs-vit .hs-kar em{display:block;font-style:normal;font-size:10px;
    letter-spacing:.2em;text-transform:uppercase;color:rgba(31,34,38,.46);
    margin-bottom:9px}
  #scHistOsa .hs-vit .hs-kar strong{display:block;font-family:var(--displej);
    font-weight:300;font-stretch:expanded;font-size:25px;line-height:1.05;
    color:#1F2226;letter-spacing:-.01em}
  #scHistOsa .hs-vit .hs-kar span{display:block;font-size:12.5px;margin-top:7px;
    color:rgba(31,34,38,.62)}
  #scHistOsa .hs-vit .hs-kar b{color:var(--ruz-ink);font-weight:500}
  #scHistOsa .hs-vit .nad{font-size:11px;letter-spacing:.18em;text-transform:uppercase;
    color:rgba(31,34,38,.46);text-align:center;margin-bottom:16px}


  /* ---- E: vítězové — JEDINÉ MÍSTO S BARVOU ----------------------
     Michaela 30. 8.: „růžové to uděláme až u BattSwapu a NIO
     v okamžiku těch vítězů." Celá historie je bez barvy, takže
     růžová tady není ozdoba — je to odměna. Na bílém podkladu je
     to #BD376B (5,35 : 1), ne #FB5494, které má na bílé jen 2,4.
     Naše karta stojí první, jak je rozhodnuto 29. 8.             */
  #scHistOsa .hs-vit .vh{font-family:var(--displej);font-weight:300;
    font-stretch:expanded;font-size:34px;color:#1F2226;text-align:center;
    margin:2px 0 22px;letter-spacing:-.01em}
  #scHistOsa .hs-vit .hs-kar{width:264px;padding:0 0 0 16px;border:0;border-radius:0;
    background:none;border-left:2px solid var(--ruz-ink)}
  #scHistOsa .hs-vit .hs-kar ul{margin:12px 0 0;padding:0;list-style:none}
  #scHistOsa .hs-vit .hs-kar li{font-size:12.5px;line-height:1.45;
    color:rgba(31,34,38,.66);margin-top:5px}
  #scHistOsa .hs-vit .hs-kar li b{color:#1F2226;font-weight:500}
  #scHistOsa .hs-vit .hs-kar li i{font-style:normal;color:rgba(31,34,38,.42)}
  #scHistOsa .hs-vit .hs-kar li.vyhra b{color:var(--ruz-ink)}

  #scHistOsa .hs-vit .par{align-items:flex-start}
  #scHistOsa .hs-vit .hs-kar em{min-height:2.4em}

  

/* Na telefonu se nic neotáčí ani nepřeskládává — svislá osa se chová
   na obou šířkách stejně. Mění se jen délka ramene a stupně písma. */
@media(max-width:700px){
  /* Tvrzení je na úzkém okně přes celou šířku, ne vystředěné na 52 % —
     v předloze má `left:50%` s posunem o půlku, a ten by ho i po
     nastavení left/right táhl mimo obraz. */
  #scHistOsa .hs-tvrz{left:16px;right:16px;max-width:none;
    transform:none;text-align:left}
  #scHistOsa .hs-uzel-osa .rk{font-size:19px}
  #scHistOsa .hs-uzel-osa .kd{font-size:10px;letter-spacing:.10em}
  #scHistOsa .hs-uzel-osa .vt{font-size:11px;max-width:17ch}
  #scHistOsa .hs-uzel-osa .obsah{white-space:normal;
    max-width:calc(100vw - 26px - var(--osa-levy,120px))}
  #scHistOsa .hs-vit .hs-kar{width:min(300px,86vw)}
  #scHistOsa .hs-vit .vh{font-size:26px}
  #scHistOsa .hs-vit .par{gap:14px}
  #scHistOsa .hs-chap--stripe{padding:0 20px}
}

/* Obě vnitřní plochy končí 16 px nad spodní hranou okna. Uzly visí na
   horní hraně (polohu jim dosazuje skript v pixelech), takže se tím
   nic neposune — mění se jen spodek rámu, a ten je to, co se měří. */
#scHistOsa .hs-uzly{bottom:16px}
#scHistOsa .hs-vit{bottom:16px}

/* Náhledový přepínač verzí historie. Je to pomůcka pro rozhodování,
   ne prvek webu — v ostré verzi ho deploy-prep.sh z výstupu odstraní. */
.nahled-prepinac{position:fixed;right:12px;bottom:12px;z-index:90;
  display:flex;align-items:center;gap:8px;
  padding:7px 12px;border-radius:var(--r-pill,999px);
  /* Podklad je neprůhledný. S krytím 0,86 prosvítala stránka pod ním
     a kontrola vzhledu naměřila 4,21 : 1 při normě 4,5 — přes průsvit
     se kontrast nedá zaručit, protože závisí na tom, co je zrovna pod. */
  background:#131418;border:1px solid rgba(255,255,255,.18);
  font-family:var(--font-text);font-size:12px;letter-spacing:.04em;
  color:rgba(255,255,255,.82)}
/* Dotykový cíl musí mít aspoň 24 px na výšku — odkazy měly 38 × 20
   a kontrola vzhledu je právem zamítla. Rám roste odsazením, sazba
   zůstává. */
.nahled-prepinac a{color:#fff;text-decoration:none;display:inline-block;
  padding:4px 2px;line-height:1.4;
  border-bottom:1px solid rgba(255,255,255,.34)}
.nahled-prepinac a:hover{border-bottom-color:#fff}
.nahled-prepinac span{opacity:.55}

/* Tvrzení nad osou stálo 26 px od horní hrany scény — tedy pod lištou,
   která má 72 px a je neprůhledná. Odsazení se počítá od ní, stejně
   jako u ostatních scén. */
#scHistOsa .hs-tvrz{top:calc(var(--lista-v,72px) + clamp(14px,2.4vh,28px))}
@media(max-width:700px){
  #scHistOsa .hs-tvrz{top:calc(var(--lista-v,72px) + 12px)}
}

/* ═══ RADKOVA HISTORIE: ČÍSLA ZTIŠIT, OBSAH ZVĚTŠIT (30. 8.) ═════════
   Michaela: „ta historie má pořád velké ty čísla, a zase mi zrak jde jen
   na ty čísla, přitom důležitá je ta historie pod tím."

   Naměřeno na 1440 × 900: největší dvě věci na obrazovce byly velký rok
   (48 px) a nadpis éry (48 px) — tedy letopočty, které o kus výš stály
   ještě jednou na osičce. Statement měl 39 px a byl až třetí, obsah
   kapitoly čtvrtý.

   Radek na své předloze velký rok ani osičku nemá; má počítadlo, malý
   nadpis éry, statement jako největší věc a pod ním tři místa. */

/* 1 · Velký rok pryč — pro CELOU scénu, ne jen pro jednu kapitolu.
   Kdyby zmizel jen na jedné, problikl by při rolování mezi nimi.
   Padá s ním i vlastní vada: na kapitole s místy ukazoval „1919",
   tedy rok té fotky, ne kapitoly (ta je 1897—1972). */
.sc-wipe--hist .hs-rok{display:none}

/* 2 · Vodorovná osička pryč. Bylo to čtvrté místo, kde na jedné
   obrazovce stály letopočty. Prvek v DOM zůstává i s obsluhou, jen
   se nekreslí — návrat je jeden řádek. */
.sc-wipe--hist .hs-osa{display:none}

/* 3 · Počítadlo ZŮSTÁVÁ. Radek ho má a je to jediná věc z hlavičky,
   která zůstat má. (Žádné pravidlo — jen ať je jasné, že to není
   opomenutí.) */

/* 4 · Nadpis éry přestane přebíjet statement. Ležel na něm doslova:
   naměřený překryv na dvou kapitolách ze čtyř („The physics were
   always right." × ÉRA 1897 — 1972 a „The winners." × ÉRA 2014 —
   today). U Radka je to malý popisek, ne nadpis — tak ho tu má taky.
   Je to jediná změna stupně, kterou tohle zadání potřebuje: text
   zůstává doslova. */
.sc-wipe--hist .hs-chap::before{
  font-family:var(--font-text);font-size:13px;font-weight:400;
  letter-spacing:.16em;text-transform:uppercase;line-height:1.2;
  color:var(--hs-faint,rgba(255,255,255,.58))}
/* Odsazení kapitoly se s ním scvrkne — dělalo místo 52px nadpisu.
   Ušetřená výška jde obsahu, který je tu ten důležitý. */
.sc-wipe--hist .hs-chap,
.sc-wipe--hist .hs-chap:has(.hs-firm:nth-child(3)),
.sc-wipe--hist .hs-chap:has(.hs-mista),
.sc-wipe--hist .hs-chap--leaders{padding-top:30px}

/* 6 · Snímek 1919 na kapitole s místy není. Radek na své kapitole
   samostatný snímek nemá a Michaela zvolila „bez obrázků, jinak
   stejně". Schovaný stylem, ne vyjmutý z DOM — i s popiskou
   a uvedením zdroje. Návrat je jeden řádek. */
/* `!important` je tu potřeba: krytí i viditelnost snímku dosazuje
   script.js jako inline styl na každém snímku, takže by běžné pravidlo
   vždycky přebil (naměřeno — fotka zůstala vidět). Důležitost inline
   styl porazí, a je to jediný způsob, jak ji schovat bez zásahu do té
   obsluhy, kterou bude potřeba, až se fotka vrátí. */
.sc-wipe--hist .hs-chap:has(.hs-mista) .hs-foto{
  visibility:hidden!important;opacity:0!important;pointer-events:none!important}

/* 7 · Kapitola s firmami dostane totéž, co dostala kapitola s místy:
   být uprostřed a mít váhu. Michaela: „2000—2025 tak tam je to stejně
   a musí být více vidět ten Ample a to musí být uprostřed." */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap:has(.hs-firm){
    grid-template-columns:1fr;
    grid-template-rows:1fr auto 1fr;
    row-gap:clamp(8px,1.2vh,14px)}
  .sc-wipe--hist .hs-chap:has(.hs-firm) .hs-copy{grid-row:1;align-self:start;
    padding-top:0}
  .sc-wipe--hist .hs-chap:has(.hs-firm) .hs-art--firms{grid-row:2;
    align-self:center}
}

/* Po schování velkého roku a osičky se kapitola protáhla z 553 na 621 px
   a podíl míst spadl na 25 % — pravidlo z minulé dávky žádá 28. Místa
   proto dostanou zpátky svou váhu: větší letopočet a víc vzduchu v kartě.
   Text se nemění, mění se sazba. */
@media (min-width:901px){
  .sc-wipe--hist .hs-misto{padding-top:18px;gap:7px}
  .sc-wipe--hist .hs-misto-rok{font-size:30px}
  .sc-wipe--hist .hs-misto-veta{margin-top:5px;font-size:15.5px;line-height:1.5}
}

/* Bílá plocha překlopení u svislé osy. Leží nad kresbou a pod vítězi,
   takže překryje šedou plochu, ale ne karty. Masku jí dává script.js. */
#scHistOsa .hs-bila-osa{position:absolute;inset:0;z-index:2;
  background:#fff;pointer-events:none;opacity:0}

/* Značky na obrazovce vítězů. Na ose značky nejsou — tady ano, je to
   bílé finále a jediné místo, kde firma vystupuje ve své vlastní
   podobě. Obě karty jsou sázené stejně, aby jedna nevypadala slabší
   než druhá. */
#scHistOsa .hs-vit .hs-zn{display:block;height:26px;margin-bottom:10px}
#scHistOsa .hs-vit .hs-zn img{display:block;height:100%;width:auto;
  max-width:150px;object-fit:contain}

/* Scéna má `pointer-events:none`, aby kliknutí propadala pod ni — jenže
   vlásečnice mají reagovat na pohyb kurzoru, a bez událostí se k nim
   žádný pohyb nedostane (naměřeno: rozdíl v kresbě mezi myší vlevo
   a vpravo 0,06 %). Osa si je proto bere, ale jen když je rozehraná. */
#scHistOsa.live{pointer-events:auto}
#scHistOsa.live .hs-uzel-osa .obsah{pointer-events:auto}

/* ═══ VÍTĚZOVÉ BEROU ŠÍŘKU I VÝŠKU STRÁNKY (31. 8.) ══════════════════
   Michaela: „ty winners jsou pořád stejně malé, chtělo by to je
   roztáhnout na stránku více." Naměřeno na 1440 × 900: text vítězů měl
   493 × 306 px, tedy 34 % šířky i výšky okna — zatímco patent vedle
   bere 63 % šířky a 74 % výšky. Byl to čtverec uprostřed prázdna.

   Vystředění zůstává (Michaela si vybrala variantu C), mění se měřítko:
   širší karty, větší jména a čísla, víc vzduchu mezi řádky. */
@media (min-width:901px){
  #scHistOsa .hs-vit .par{gap:clamp(48px,6vw,92px);align-items:flex-start}
  #scHistOsa .hs-vit .hs-kar{width:clamp(330px,33.5vw,490px);
    padding:0 0 0 clamp(18px,1.8vw,26px);border-left-width:3px}
  #scHistOsa .hs-vit .nad{font-size:13px;letter-spacing:.2em;
    margin-bottom:clamp(14px,2vh,22px)}
  #scHistOsa .hs-vit .vh{font-size:clamp(38px,4.4vw,62px);
    margin:0 0 clamp(34px,5.4vh,64px)}
  #scHistOsa .hs-vit .hs-kar em{font-size:12px;letter-spacing:.18em;
    min-height:2.4em;margin-bottom:clamp(10px,1.4vh,16px)}
  #scHistOsa .hs-vit .hs-kar strong{font-size:clamp(30px,3vw,44px);
    line-height:1.06}
  #scHistOsa .hs-vit .hs-kar ul{margin:clamp(16px,2.4vh,26px) 0 0}
  #scHistOsa .hs-vit .hs-kar li{font-size:clamp(14px,1.15vw,16px);
    line-height:1.65;margin-top:clamp(14px,2.5vh,26px)}
  #scHistOsa .hs-vit .nad{margin-bottom:clamp(18px,2.6vh,28px)}
}

/* ═══ VRSTVY SE VEJDOU I NA NÍZKÉ OKNO (31. 8.) ══════════════════════
   Michaela: „u vrstev nejdou vidět ty názvy těch layers." Sekce je
   `position:absolute; height:100svh; overflow:hidden`, takže co se
   nevejde, se neodroluje — ořízne se. Naměřeno: na 393 × 852 zbývalo
   78 px rezervy, ale na 360 × 640 chybělo 104 a pod hranou skončily
   „Layer 2", „Transport layer" i „Layer 3". Michaelin iPhone se Safari
   lištou spadá přesně do té spodní části tabulky.

   Rolování uvnitř scény do ní nepatří — celý web je jedna scéna. Sekce
   se proto na nízkém okně stáhne: diagram dostane strop v jednotkách
   výšky okna a sazba se sevře. Na vysokých oknech se nemění nic,
   pravidla se pouštějí až pod danou výškou. */
@media(max-width:700px) and (max-height:800px){
  .hero #scLayers .sc-in{padding-block:clamp(30px,5vh,52px)}
  /* Zmenšuje se ŠÍŘKOU, ne `max-height`. Stoh je blok, jehož vlastní
     výška vychází z poměru stran, a všechny vrstvy v něm jsou
     absolutní — takže při `width:auto` uvnitř flexu smrskne obsah na
     nulu a obrázek zmizí úplně. Naměřeno: pod 820 px výšky okna měl
     `#layStack` 0 × 0 a Michaelin telefon ho nikdy neukázal.
     Šířka 43 svh dá při poměru 0,772 výšku kolem třetiny okna. */
  .hero #scLayers .lay-desky{width:min(100%,43svh);max-width:100%;
    max-height:none;margin-inline:auto;display:block}
  .hero #scLayers .lay-grid{gap:clamp(6px,1vh,12px)}
  .hero #scLayers .h{font-size:clamp(24px,7.2vw,34px);line-height:1.06}
  .hero #scLayers .lead{font-size:14px;line-height:1.4;margin-top:8px}
  .hero #scLayers .eyebrow{margin-bottom:6px}
  .hero .lay-tagy{gap:2px;margin-top:clamp(6px,1vh,12px)}
  .hero .lay-tagy .lay-tag b{font-size:13px;line-height:1.2}
  .hero .lay-tagy .lay-tag i{font-size:11px;line-height:1.2}
}
@media(max-width:700px) and (max-height:700px){
  .hero #scLayers .sc-in{padding-block:clamp(22px,3.6vh,38px)}
  .hero #scLayers .lay-desky{width:min(100%,36svh)}
  .hero #scLayers .h{font-size:clamp(21px,6.4vw,28px)}
  .hero #scLayers .lead{font-size:13px}
}

/* ═══ JEDNA RŮŽOVÁ S JEDNÍM PRAVIDLEM (31. 8.) ═══════════════════════
   Michaela třikrát během chvíle: „tady je podle mě jiná růžová ne?",
   „ta stejná růžová mi přijde jiná i tady", „a taky v nadpisu tady,
   prosím sjednoť ty barvy."

   Na webu byly tři: značková #FB5494, inkoustová #BD376B a k tomu
   #FA3882 na hlavním tlačítku. Ta třetí vznikla z dobrého důvodu —
   bílý popisek na ní má 3,53 : 1 místo 3,09 — ale tři růžové bez
   viditelného pravidla se čtou jako nedbalost.

   Platí teď jedno pravidlo, dvě hodnoty téže barvy:

     růžová jako PLOCHA (tlačítka, plachty)  →  #FB5494, text bílý
     růžová jako TEXT na SVĚTLÉM podkladu    →  #BD376B  (5,35 : 1)
     růžová jako TEXT na TMAVÉM podkladu     →  #FB5494  (5,17 : 1)

   Bílý popisek tlačítka je 19 px v řezu 700, tedy velký tučný text
   s prahem 3,0 — značková ho splní (3,09). Rezerva je menší než dřív,
   ale jedna barva s jasným pravidlem je víc než tři s výjimkami.

   Zelený motiv stránky obrany si svůj `--pink-btn` přepisuje sám a má
   vyšší specificitu, takže se ho tohle netýká. */
/* 2. 9. — ZPÁTKY KE ZNAČKOVÉ RŮŽOVÉ Z BRANDMANUÁLU.
   Michaela: „všude musíš dát naši růžovou z brandmanuálu." Změřeno
   přímo z manuálu, strana 20, po pixelech ve 300 dpi: růžová je tam
   jediná a je to #FB5494 (88 200 px), vedle ní šedá #383E42, černá
   #050505 a světlá #F0F0F0.

   Tmavší #BD376B jsem 31. 8. zavedl já — a neověřil si to proti
   manuálu. Šel jsem tehdy za kontrastem: bílý nápis na značkové růžové
   má 3,09 : 1, tedy pod normou, a tak jsem ztmavil barvu. Správně se
   ale nemění značková barva, ale to, co je vedle ní.

   Platí proto:
     plná růžová (alfa ≥ 0,9)  →  jen #FB5494, bez výjimek
     nápis na růžové ploše     →  černá #050505 (6,60 : 1)

   Obě barvy jsou z manuálu, nic nového nevzniká, a kontrast je vyšší
   než dneska: 6,60 proti 5,35. `--on-pink` i `--on-pink-btn` proto
   míří na černou; bílá na růžové se na webu už nikde neobjeví.

   Zelený motiv stránky obrany má `:root[data-theme="defense"]`, tedy
   vyšší specificitu — tohohle se netýká, tam je „růžová" vojenská
   zeleň a na ní bílá 7,73 : 1. */
:root{--pink:#FB5494;--pink-btn:#FB5494;
  --on-pink:#050505;--on-pink-btn:#050505;
  /* `--pink-ink` byla druhá růžová pro text na světlém. Druhá růžová
     už není — token zůstává, aby se nemusela přepisovat stovka míst,
     ale míří na značkovou. Kde kvůli tomu nesedí kontrast, mění se
     VELIKOST písma nebo PODKLAD, ne ta barva. */
  --pink-ink:#FB5494}

/* ═══ NAŠE ZNAČKA NENÍ NIŽŠÍ NEŽ NIO (31. 8.) ════════════════════════
   Michaela: „mně ještě tady trošku vadí, jak je to logo BattSwapu fakt
   malé oproti tomu druhému NIU." Naměřeno v kapitole 04 na 1440 × 900:
   BattSwap 113 × 27, NIO 91 × 34 — naše značka má sice VÍC inkoustu
   (2504 proti 1345 pixelům), ale je to široký tenký nápis, kdežto NIO
   je kompaktní vysoký symbol o 26 % vyšší. Proto čte větší.

   Příčina byla v tom, že naše značka má pod sebou růžovou linku, tedy
   `padding-bottom` — a obrázek s `height:100%` se vešel jen do zbytku
   po tom odsazení: 21 px z 34. Výška se proto zadává obrázku přímo
   a obal si roste podle sebe. Loga se nepředělávají, mění se jen
   velikost, v jaké se vykreslují. */
/* Platí to na OBĚ místa, kde naše značka na scéně stojí — v kartě
   vítězů i v řadě čtyř firem o kapitolu výš. V té řadě jsou ostatní tři
   značky vysázené textem, takže se tím nic nerozejde; jen naše přestane
   být ta nejnižší věc na obrazovce. */
.sc-wipe--hist .hs-logo--us{height:auto}
.sc-wipe--hist .hs-logo--us img{height:clamp(28px,4vh,36px);width:auto}

/* Adresy poboček: název země a ulice jsou dva odstavce, ne <b> uvnitř
   jednoho. Sazba má vypadat stejně jako dřív, takže se mezera mezi nimi
   vynuluje a pár se drží pohromadě. */
.foot-pobocky .foot-misto{margin:0}
.foot-pobocky .foot-adr{margin:0 0 clamp(10px,1.4vh,16px)}
.foot-pobocky .foot-adr:last-child{margin-bottom:0}

/* Cookie lišta plave u spodní hrany a na telefonu ležela přes patičku
   i přes popisek filmu — naměřeno, že překrývala adresu pobočky v celé
   šířce. Dokud je vidět, drží si stránka dole místo přesně na její
   výšku. Po odklepnutí se odsazení vrátí. */
html:has(.cookie-lista.je) body{padding-bottom:var(--cookie-v,132px)}
@media(max-width:700px){
  html:has(.cookie-lista.je) body{padding-bottom:var(--cookie-v,168px)}
}

/* Dvouřádkový nadpis filmu: každá věta je blok, takže její rám je přesně
   její řádek. S `<br>` se rámy obou vět o pár pixelů překrývaly — písmo
   má sevřené prokládání a rám řádku je vyšší než ten proklad. */
.vr-dvojradek span{display:block}

/* Popisek „In operation today" sedí u spodní hrany filmu, kde na
   telefonu leží cookie lišta. Dokud je lišta vidět, popisek se posune
   nad ni; jinak zůstává, kde byl. */
@media(max-width:700px){
  html:has(.cookie-lista.je) .liveop-live{transform:translateY(-168px)}
}

/* Popisek za číslem má vlastní obal. Dokud byl přímým textem <li>,
   měl ten <li> rám přes celý řádek včetně čísla — a měřidlo překryvů
   z toho právem četlo dva texty přes sebe („65K+" × „swaps"). Sazba
   se nemění, jen se text obalí. */
.fj{display:inline}

/* Číslo u vějíře má vlastní obal ze stejného důvodu jako popisky
   u údajů: dokud bylo přímým textem obalu, měl ten obal rám přes číslo
   i jednotku naráz. Sazba se nemění. */
.fst-c{display:inline}

/* Zavřený panel se zdrojem nesmí mít krytí 1 — je sice `display:none`
   u sebe, ale u varianty s osou je to jinak stavěné a jeho rám se pak
   počítá mezi viditelný text. */
#scHistOsa .hvez details:not([open]) .zin{opacity:0;visibility:hidden}
#scHistOsa .hvez details[open] .zin{opacity:1;visibility:visible}

/* Věta u uzlu osy se na telefonu vejde do místa mezi dvěma uzly.
   Krok mezi uzly je na 844 px vysokém okně 84 px a věta na dva řádky
   po 20 px z něj brala skoro polovinu — pak zasahovala do popisku
   dalšího uzlu („Electric taxi fleet…" přes „1943"). */
@media(max-width:700px){
  #scHistOsa .hs-uzel-osa .vt{font-size:10px;line-height:1.25;
    max-width:min(34vw,150px);margin-top:2px}
  #scHistOsa .hs-uzel-osa .kd{margin-top:3px}
}
.hs-celkem{display:inline}
#scHistOsa .hs-uzel-osa .kdo{display:inline}
@media(max-width:700px){
  /* Věta se ještě vešla o čtyři pixely do dalšího uzlu; dva řádky po
     9,5 px potřebují 23 px a mezi uzly jich zbývá 84 na popisek i větu.
     Tři desetiny řádku navíc to dorovnají. */
  #scHistOsa .hs-uzel-osa .vt{font-size:9.5px;line-height:1.15;
    max-width:min(28vw,124px);margin-top:1px}
}

/* Nadstavec a nadpis vítězů se na telefonu o kus překrývaly — nadpis
   má sevřené prokládání a jeho rám sahá výš než jeho písmo. Pár pixelů
   mezery to srovná, sazba zůstává. */
@media(max-width:700px){
  /* Nadstavec je blok s vlastní výškou řádku, ne jen text — bez toho
     měl rám vyšší než své písmo a zasahoval do nadpisu pod sebou. */
  #scHistOsa .hs-vit .nad{display:block;line-height:1.2;margin:0 0 16px}
  #scHistOsa .hs-vit .vh{margin-top:0;line-height:1.15}
}

/* Osa a vítězové se na telefonu přepínají skokem (viz script.js). Přechod
   0,3 s je ale nechával chvíli obojí poloprůhledné a na úzkém okně stály
   „Category leaders" osy a nadpis vítězů přesně přes sebe. Na telefonu
   proto bez přechodu — přepnutí je okamžité, na počítači zůstává měkké. */
@media(max-width:700px){
  #scHistOsa .hs-uzly,#scHistOsa .hs-tvrz{transition:none}
}

/* Věta u uzlu si na telefonu brala jen tolik místa, kolik zbylo po
   roku a jménu — na 393 px širokém okně 72 px, tedy čtyři řádky, a ty
   dosáhly na rok dalšího uzlu („Electric taxi fleet…" přes „1943").
   Věta proto dostane vlastní šířku sloupce: stejný text se vejde na
   dva řádky a mezi uzly je zase místo. Nic se neschovává, jen se to
   láme jinde. */
@media(max-width:700px){
  #scHistOsa .hs-uzel-osa .vt{width:min(37vw,146px);max-width:none;
    white-space:normal}
}

/* Naše kategorie na obrazovce vítězů je růžová, kategorie NIO zůstává
   šedá. Michaela 31. 8.: „potřebuji, aby pak u té stránky winners bylo
   to commercial fleets růžovou." Není to ozdoba — je to jediná věc,
   která na první pohled řekne, která z těch dvou karet je naše.
   Na bílém podkladu platí inkoustová #BD376B (5,35 : 1), ne #FB5494. */
#osaVit .par .hs-kar:first-child em{color:var(--pink-ink,#FB5494)}

/* ═══ PRUH 10× — DIAGRAM ZPĚT, V RADKOVĚ KVALITĚ (31. 8. odpoledne) ══
   Michaela ráno diagram odmítla („ty ikonky tam moc nezapadají… tohle
   je fakt obyčejně nakreslené"), odpoledne ho chtěla zpátky. Předloha
   _upravy/10x-radek.jpg ukazuje proč: Radek má dodávky s okny, koly a
   maskou, průsvitné růžové plátky s tečkami a stožár v zaobleném
   rámečku — na webu stála horší napodobenina téhož. Je to překreslené
   jako SVG, tedy ostré na každém displeji, a popisky zůstaly text.

   Růžová je inkoustová #BD376B, jako „×" nad tím: kresba je text na
   světlém podkladu, ne plocha. Značková #FB5494 sem nepatří. */
.dx-diagram{display:flex;align-items:center;justify-content:center;
  width:100%;--dx-vypln:rgba(189,55,107,.05)}
/* Kresba má u všech tří kroků stejně vysoký řádek, takže popisky pod
   nimi stojí na jedné lince — jako v předloze. Bez toho vyjel popisek
   u dodávek o šest pixelů výš, protože dvě řady vozů jsou nižší než
   stožár. */
.dx-krok{display:grid;grid-template-rows:clamp(62px,12vh,120px) auto;
  justify-items:center;align-items:center;row-gap:clamp(10px,1.6vh,18px)}
.dx-kresba{display:block;width:auto;height:clamp(62px,12vh,120px);
  color:#5C626B}
.dx-kresba--vrstvy{color:var(--pink-ink,#FB5494)}
.dx-popis{font-family:var(--font-text);font-size:clamp(15px,1.2vw,17px);
  line-height:1.4;color:var(--ink,#1F2226);white-space:nowrap}
.dx-popis--nase{color:var(--pink-ink,#FB5494)}
/* Linka mezi kroky končí u kresby, ne u popisku — proto ten odsazený
   spodek: půlka výšky popisku a mezery pod kresbou. */
.dx-linka{flex:1 1 40px;max-width:190px;height:1px;background:#C2C6CC;
  margin:0 clamp(12px,1.6vw,24px) calc(clamp(15px,1.2vw,17px) * 1.4
    + clamp(10px,1.6vh,18px))}
.dx-linka--nase{background:var(--pink-ink,#FB5494)}
.dx-vozy{display:grid;grid-template-columns:repeat(5,auto);
  gap:clamp(5px,.8vh,9px) clamp(7px,.9vw,13px)}
.dx-vuz{display:block;width:auto;height:clamp(28px,5vh,52px);color:#5C626B}
/* Konce spojnic: u sítě prázdné kolečko, u naší vrstvy plná tečka —
   jako v předloze. Je to jediné místo, kde linka něco říká: odkud
   proud jde a kde se z něj stane vrstva. */
.dx-linka{position:relative}
.dx-linka::before,.dx-linka::after{content:"";position:absolute;top:50%;
  width:7px;height:7px;border-radius:50%;transform:translate(-50%,-50%);
  border:1px solid #C2C6CC;background:#F5F6F8}
.dx-linka::before{left:0} .dx-linka::after{left:100%}
.dx-linka--nase::before,.dx-linka--nase::after{border-color:var(--pink-ink,#FB5494);
  background:var(--pink-ink,#FB5494)}

/* Telefon: tři kroky pod sebou a spojnice je svislá. Vedle sebe by se
   deset dodávek na 390 px vešlo jen tak, že by z nich byly tečky. */
@media(max-width:700px){
  .dx-diagram{flex-direction:column;gap:0}
  .dx-krok{grid-template-rows:auto auto;row-gap:clamp(6px,1vh,11px)}
  .dx-linka::before,.dx-linka::after{top:0;left:50%}
  .dx-linka::after{top:100%}
  .dx-linka{flex:0 0 auto;width:1px;height:clamp(12px,1.6vh,16px);
    max-width:none;margin:clamp(5px,.8vh,8px) 0}
  .dx-popis{white-space:normal;text-align:center}
  .dx-kresba{height:clamp(50px,7vh,66px)}
  /* Plátky jsou na šířku, ne na výšku: při měření podle výšky z nich
     na 390 px zbylo 87 px a tečkovaný rastr uvnitř nebyl vidět. */
  .dx-kresba--vrstvy{height:auto;width:min(38vw,132px)}
  .dx-vuz{height:clamp(23px,3.2vh,28px)}
}

/* Pruh 10× je na telefonu o diagram vyšší, a s vystředěním se mu horní
   půlka schovávala pod hlavičku — číslo „10×" leželo pod logem.
   Odsazení proto není souměrné: nahoře tolik, aby obsah začal pod
   lištou, dole jen tolik, aby se poslední popisek neopíral o hranu. */
@media(max-width:700px){
  .hero > #desetkrat{padding-block:clamp(60px,9vh,84px) clamp(14px,2vh,22px)}
}

/* Nízké telefony (393 × 734 a menší): pruh se s diagramem přestal vejít
   do jedné obrazovky — obsah končil 10 px pod hranou. Zmenšuje se
   kresba a mezery, ne text; číslo zůstává ohniskem. */
@media(max-width:700px) and (max-height:780px){
  #desetkrat .vr-in{gap:clamp(16px,2.6vh,30px)}
  .dx-kresba{height:clamp(42px,6vh,54px)}
  .dx-kresba--vrstvy{height:auto;width:min(32vw,110px)}
  .dx-vuz{height:clamp(20px,2.8vh,25px)}
  .dx-krok{row-gap:clamp(5px,.8vh,9px)}
  .dx-linka{height:clamp(10px,1.4vh,14px);margin:clamp(4px,.6vh,6px) 0}
  .hero > #desetkrat{padding-block:clamp(54px,8vh,76px) clamp(10px,1.6vh,18px)}
}

/* Nejmenší telefony (360 × 640): totéž ještě o stupeň níž. Číslo se
   smí zmenšit — požadavek na šířku textu platí na počítači, kde ho
   nese; tady nese obrazovku samo tím, že je největší. */
@media(max-width:700px) and (max-height:680px){
  .dx-cislo{font-size:clamp(72px,21vw,380px)}
  #desetkrat .vr-in{gap:clamp(12px,2vh,22px)}
  .dx-kresba{height:clamp(36px,5.4vh,44px)}
  .dx-kresba--vrstvy{height:auto;width:min(28vw,94px)}
  .dx-vuz{height:clamp(17px,2.5vh,21px)}
  .hero > #desetkrat{padding-block:clamp(48px,7.5vh,64px) clamp(8px,1.4vh,14px)}
}

/* Přepínač ceny na sales: růžovou nesl posuvný jazýček (.mt-pill), který
   leží ZA tlačítky, takže se popisek měřil proti světlému podkladu za
   ním — a s bílým nápisem z toho vyšlo 1,09 : 1, ačkoli ve skutečnosti
   stojí na růžové (5,35 : 1). Barvu proto nese samo aktivní tlačítko;
   jazýček zůstává a při přepnutí je vidět, jak podjíždí stranu, která
   zhasíná. Bílá je tu správně: tmavý inkoust má na #BD376B jen 3,8. */
.mtoggle button.on{background:var(--pink);border-radius:var(--r-pill)}
.mtoggle button{transition:color var(--t-fast) var(--ease),
  background-color var(--t-base) var(--ease)}

/* Popisky vějíře na tabletu: script.js jim dá protiměřítko, takže
   velikost písma tady už znamená přímo pixely na obrazovce. Čtrnáct
   je nad podlahou stupnice (13) a proti dosavadním dvanácti to je
   jen o šestinu víc — vějíř se tím nerozjede. */
@media(min-width:701px) and (max-width:1366px){
  .fan-svg.fan--tablet .fn-t{font-size:14px}
}

/* Vrstvy na tabletu: kresba je široká podle VÝŠKY okna (56vh × 1,2945),
   takže na vysokém a úzkém tabletu vyrostla přes celou šířku a na text
   vedle ní zbylo 207 px — do toho se „vehicles" ani „adoption." nevejde
   a lámalo se to uprostřed slova. Kresba proto má na tabletu strop ve
   40 % šířky okna; na 1440 a výš zůstává, jak byla. */
@media(min-width:901px) and (max-width:1366px){
  .sc-wipe--layers{--lay-w:min(calc(var(--lay-h) * 1.2945), 40vw)}
}

/* Patička na tabletu: čtyři sloupce se do 768–1100 px nevejdou a
   e-mail se v 105 px širokém sloupci lámal uprostřed —
   „hello@batt / swap.com". Zmenšit ho nejde, 19 px drží kontrast bílé
   na růžové. Sloupce jsou proto na tabletu dva a slovo se zase láme
   jen tam, kde je mezera. */
@media(min-width:761px) and (max-width:1100px){
  .footer .foot-grid{grid-template-columns:1fr 1fr}
  .footer .foot-kontakt .btn{word-break:normal}
}

/* Velké číslo u 10× má sevřené prokládání (−4 %), a na tabletu z toho
   vycházel rámeček o 18 px užší, než je samo číslo — text se nikam
   nelámal (má nowrap), ale sazba přetékala svůj sloupec. Na tabletu
   je tedy prokládání mírnější; na 1440 a výš zůstává. */
@media(min-width:701px) and (max-width:1366px){
  .dx-cislo{letter-spacing:-.008em}
}

/* Kapitola, která se do desky nevejde, se nesmí vysypat NAHORU přes
   hlavičku scény. Na iPadu na výšku se tak dělo u kapitol s firmami
   a u rámující kapitoly: obsah je vyšší než deska, `align-items:center`
   ho vystředí a přebytek leze na obě strany — a nahoře je hlavička
   „BATTSWAP — 129 YEARS OF BATTERY SWAPPING".
   `safe center` středí, dokud se to vejde, a jakmile ne, srovná obsah
   k horní hraně desky. Dole je na tabletu místa dost. */
@media(min-width:701px) and (max-width:1366px){
  .sc-wipe--hist .hs-chap{align-content:safe center;align-items:safe center}
}

/* ═══ ZDROJ JE NA JMÉNU, NE NA HVĚZDIČCE (31. 8. v noci) ════════════
   Michaela: „u mobilní verze u vějíře se zobrazují zelené hvězdy, což
   je špatné" a „bylo by lepší, kdyby se při najetí na tu společnost
   dalo rozkliknout ten odkaz, takže ty hvězdičky dát pryč ideálně."

   Zelená nebyla v CSS. Znak ✳ (U+2733) vykresluje iOS jako EMOJI, a to
   je barevný obrázek — `color` na něj nepůsobí, proto to Michaela
   viděla jen na telefonu. Odkaz se přesunul na jméno firmy nebo místa
   a hvězdička u nich zmizela úplně. Tam, kde jsou zdroje tři a nedají
   se rozdělit mezi jména (kapitola vítězů), zůstává rozbalovátko —
   ale se hvězdičkou KRESLENOU, ne znakem.

   Podtržení je povinné: na dotykovém displeji se nenajíždí myší, takže
   odkaz musí být poznat bez hoveru. */
/* Obal odkazu u jména nese třídu `.hs-zdroj-in`, protože to JE místo,
   kde teď zdroj u místa žije — ale nesmí si s sebou vzít vzhled
   rozbalovacího panelu: `min-width:280px` a `display:flex` u odkazů
   uvnitř. Jména míst by pak měla rámečky přes sebe (280 px místo 62)
   a přejímka by z toho právem četla překryv textů. */
.hs-zdroj-in--jmeno{display:inline;min-width:0;position:static;
  background:none;border:0;padding:0;box-shadow:none}
.hs-zdroj-in--jmeno a,
.hs-misto-kde a,
.sc-wipe--hist .hs-firm .hs-logo b a{display:inline;min-height:0}
.hs-zdroj-in--jmeno a,
.hs-misto-kde a,
.sc-wipe--hist .hs-firm .hs-logo b a{
  color:inherit;text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:3px;
  text-decoration-color:var(--hs-line,rgba(255,255,255,.45))}
.hs-misto-kde a:hover,
.sc-wipe--hist .hs-firm .hs-logo b a:hover{
  text-decoration-color:currentColor}
.hs-misto-kde a:focus-visible,
.sc-wipe--hist .hs-firm .hs-logo a:focus-visible{
  outline:2px solid var(--hs-fg,#fff);outline-offset:3px;border-radius:2px}
/* Logo je obrázek, tam není co podtrhnout — odkaz jen obalí značku. */
.sc-wipe--hist .hs-firm .hs-logo--us a{display:block;height:100%}
.hs-hvez-ic{width:1em;height:1em;display:inline-block;vertical-align:-.12em}

/* Jméno uzlu na ose je zároveň odkaz na zdroj. Podtržení je slabé —
   osa je šedá a plné podtržení by z ní udělalo seznam odkazů — ale
   je vidět bez najetí myší, což na dotykovém displeji rozhoduje. */
#scHistOsa .hs-uzel-osa .kdo-odkaz{color:inherit;text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:2px;
  text-decoration-color:rgba(255,255,255,.38)}
#scHistOsa .hs-uzel-osa.tady .kdo-odkaz,
#scHistOsa .hs-uzel-osa .kdo-odkaz:hover{text-decoration-color:currentColor}
#scHistOsa .hs-uzel-osa .kdo-odkaz:focus-visible{outline:2px solid #fff;
  outline-offset:2px;border-radius:2px}

/* Karta místa po odchodu hvězdičky. Kroužek se zdrojem byl 22 px vysoký
   a stál na vlastním řádku pod větou — s ním řada míst zabírala 28 %
   výšky kapitoly, bez něj spadla na 22 a přestala být tím, na co jde
   oko. Místo kroužku dostane karta vzduch a jméno, které je teď odkaz,
   o stupeň víc váhy. Text se nemění, mění se sazba. */
.sc-wipe--hist .hs-misto{padding-top:18px;gap:7px;padding-bottom:42px}
.sc-wipe--hist .hs-misto-kde{font-size:15px}
.sc-wipe--hist .hs-misto-veta{line-height:1.55}

/* ═══ NADPIS HERO NA TELEFONU MÁ SVŮJ PODKLAD (1. 9.) ════════════════
   Michaela: „ten pán je tam teď jeho obličej přes text, což není
   správně." Není to kontrast — naměřeno v opravdovém Safari přes celou
   dvacetivteřinovou smyčku panoramatu je nejhorší okamžik 5,79 : 1,
   tedy nad normou. Vadí, že tvář a písmo leží v JEDNÉ rovině: čte se to,
   jako by nadpis ležel v obličeji, ne před ním.

   Kadrování se nemění — panorama má na telefonu vidět jen 26 % šířky
   a jediné, kam se dá uhnout, je záběr na stanici, tedy konec toho
   pohybu. Prohloubí se proto závoj, který na telefonu přes panorama
   leží už teď: v pásu, kde stojí nadpis (15 až 50 % výšky), jde z 0,66
   na 0,80. Je svislý a přes celou šířku, takže po něm nezůstane žádná
   hrana — zkoušel jsem elipsu jen pod nadpisem a ta se na snímku
   projevila jako viditelný obdélník kolem textu.

   Zbytek hera se tím nezhorší: perex i tlačítka měly kontrast s rezervou
   a s hlubším závojem ho mají větší. */
@media(max-width:700px){
  .hero:not(.on-daylight)::before{
    background:linear-gradient(180deg,
      rgba(17,18,19,.50) 0%,  rgba(17,18,19,.64) 12%, rgba(17,18,19,.78) 24%,
      rgba(17,18,19,.80) 40%, rgba(17,18,19,.70) 56%, rgba(17,18,19,.52) 74%,
      rgba(17,18,19,.34) 88%, rgba(17,18,19,.28) 100%)}
}

/* ═══ SVĚTLÝ OBDÉLNÍK DOLE NA iPHONU (1. 9.) ════════════════════════
   Michaela: „když scrolluju na telefonu, tak se objeví vždy dole šedý
   (bílý) obdélník, je to tak u všech těch stránek."

   Že je to na VŠECH stránkách, i tam, kde žádná připnutá scéna není,
   ukazuje na výšku okna, ne na scénu. Sekce se měří na `100svh`, což je
   výška okna S LIŠTOU prohlížeče. Jakmile ji iOS při rolování schová,
   okno se zvětší — sekce ne — a dole se ukáže pruh toho, co je za ní.
   Na světlé stránce je ten pruh světlý. V Chromiu se to nestane, tam se
   svh a lvh nikdy nerozejdou (0 nálezů ze 140 kroků), a desktopové
   Safari mizející lištu nemá, takže se to na tomhle stroji nedá vyrobit.

   Bere se proto `lvh` — výška okna BEZ lišty, tedy ta největší. Sekce
   je pak vždy aspoň tak vysoká jako viditelná plocha a pruh nemá kde
   vzniknout. Je to `min-height`, takže se tím nic neposune ani
   nepřekreslí; sekce je jen o výšku lišty vyšší, když je lišta vidět.
   `dvh` by sedělo přesněji, ale mění se při každém pohybu lišty a to
   je na iOS ta pověstná poskakující stránka.

   Připnutá scéna si drží svých `100svh` — ta má výšku i v pixelech ze
   script.js a měnit ji nesmím; tam je pruh vyřešený tím, že si dráha
   bere podklad svítící fáze (31. 8.). */
@media(max-width:900px){
  .hero{min-height:100lvh}
  .liveop{min-height:100lvh}
  .vrstva-radek{min-height:calc(100lvh - 72px)}
  /* Připnutá scéna zůstává na svh — viz komentář výš. */
  .pin > .hero{height:100svh;min-height:100svh}
}

/* Michaela 1. 9.: první ze tří čísel pod vějířem růžově. Je to číslo
   na světlém podkladu, takže platí inkoustová #BD376B — plná růžová je
   od 31. 8. jen jedna a značková #FB5494 by tu měla 2,86 : 1. Zbylá dvě
   čísla i všechny tři popisky zůstávají, jak byly. */
#fsMarket{color:var(--pink-ink,#FB5494)}

/* ═══ VRSTVY: OBRÁZEK BERE STRÁNKU, NE ROH (2. 9., po schůzce s Radkem)
   Radek: „Tahle sekce musí mít ty obrázky skoro na celou stránku ne
   někde v rohu."

   Naměřeno před opravou na 1440 × 900: kresba 652 × 504, tedy 45 %
   šířky a 25 % plochy okna, a její střed na 76 % šířky. Opravdu roh.

   Rozvržení bylo tři svislé pruhy vedle sebe (text · popisky · kresba)
   a kresba dostávala jen to, co zbylo. Zvětšit ji v tom rozvržení nešlo:
   při 62 % šířky zbývá na text 273 px a nadpis „The vehicles are ready."
   se láme uprostřed slova (naměřeno „vehicles" 277 px do rámečku 259 px
   na 1366 px okně).

   Kresba proto leží uprostřed scény a text i popisky jsou nad ní.
   Není to schované ani nahodilé: levý horní roh té kresby je prázdný
   (isometrická deska začíná vlevo dole), takže tam nadpis leží na
   podkladu scény, ne na stavbě. Popisky odcházejí k pravé hraně, kde
   pro ně je 250 px místa, a drží si svislou polohu u své vrstvy.

   Výška se počítá tak, aby vyšla obě podmínky přejímky:
     šířka  = min(78vh × 1,2945, 62vw)  →  1440: 893 px = 62 % šířky
     plocha = 893 × 690 = 47,5 % plochy okna      (žádá se 40)
   Nad 1920 drží strop 62vw, aby zbylo místo na popisky u kraje. */
@media(min-width:901px){
  .sc-wipe--layers{--lay-h:min(78vh, calc(62vw / 1.2945))}
  .lay-desky{right:auto;left:50%;transform:translate(-50%,-50%)}
  /* Text leží přes prázdný horní roh kresby, u okraje rodiny, a drží
     si šířku, ve které se nadpis láme na dva řádky. */
  /* Text drží HORNÍ třetinu, ne svislý střed: uprostřed už leží
     energetická deska a perex se na ní tiskl přes komíny elektrárny.
     Nahoře vlevo je v kresbě prázdno. */
  .lay-copy{position:absolute;left:var(--rodina-x);top:clamp(88px,11vh,132px);
    transform:none;margin-left:0;z-index:5;
    max-width:min(400px, calc(50vw - var(--lay-w)/2 + 190px))}
  /* Popisky k pravé hraně okna. Rámec má pořád stejnou výšku i střed
     jako kresba, takže každý popisek stojí u své vrstvy. */
  .lay-tagy{right:clamp(20px,2.2vw,40px);
    width:min(250px,17vw)}
}

/* ═══ „NOT WAIT." SE ODPÍCHNE VÁHOU (2. 9.) ═════════════════════════
   Radek: „Hero section, určitě odpíchni nějak vizuálně to ‚NOT WAIT‘."
   Obal `.nowait` v nadpisu existoval, ale nedělal nic — obě části měly
   bílou, váhu 400 a 66,24 px, tedy k nerozeznání.

   Barvou to nejde. Značková #FB5494 by na tmavé fotce kontrast splnila
   (5,17 : 1), jenže od 31. 8. platí, že plná růžová je jedna jediná
   (#BD376B) — a ta má na téže fotce 2,98 : 1, tedy propadá. Cokoli
   růžového by tu bylo buď druhá plná růžová, nebo nečitelné.

   Váha konflikt nemá. Panchang má 400 až 800 jako skutečné řezy, ne
   dopočítané, takže „Not wait." dostane 600: je to táž bílá, táž
   velikost, jen hutnější kresba písma. Kontrast se tím nemění (bílá
   zůstává bílá) a druhá růžová nevzniká. */
/* 3. 9.: „NOT WAIT." SE MUSÍ LIŠIT NA DÁLKU. Do teď se lišilo jen
   vahou (600 proti 400) při stejné barvě i velikosti 66,24 px —
   na takovém stupni to skoro není vidět a Michaela to nepoznala.
   Je proto o čtvrtinu větší a plně tučné; barva zůstává bílá
   (14,8 : 1 na tmavém hero). Růžová sem nepatří — je vyhrazená
   našemu řešení, ne pointě nadpisu. */
.hero h1 .nowait{font-weight:700;font-size:1.25em;line-height:1}

/* ═══ DVĚ OBRAZOVKY U VĚJÍŘE (2. 9., Radkovy předlohy) ══════════════
   `_zmeny19/predvejirem.png` a `zavejirem.png`. Jsou to SÁZENÉ
   obrazovky, ne vložené PNG — obrázek by nešel vybrat, přeložit ani
   přečíst odečítačem a na retině by byl rozmazaný.

   Očko je tu růžové a bez čárky, jak to má Radek v předloze; na
   ostatních sekcích zůstává šedé s růžovou čárkou, jak káže manuál.
   Plná růžová na světlém podkladu je jedna jediná: #BD376B. */
/* Očko je růžové a bez čárky. Zarovnání se NEMĚNÍ — obě obrazovky
   stojí v rodině vlevo u okraje jako #onelayer, #patent a #zaver.
   Radek je má v předloze na střed, ale ty dvě jsou uprostřed sledu,
   ve kterém je všechno ostatní vlevo; vystředit se musí buď všechny,
   nebo žádná. Čeká to na Michaelu. */
.ocko-radek{color:var(--pink-ink,#FB5494)}
.ocko-radek::before{content:none}
/* Spodní řádek „Scroll to explore" je pokyn, ne tvrzení — drobný,
   šedý, verzálkový, s odstupem od nadpisu. */
.vr-scroll{margin:clamp(28px,4.4vh,56px) 0 0;font-family:var(--font-text);
  font-size:var(--fs-label,12px);letter-spacing:.18em;text-transform:uppercase;
  color:var(--muted-2,#6E6E76)}

/* Obrazovka za vějířem je fáze připnuté scény, tedy stejná geometrie
   jako #onelayer a #patent: leží přes celé okno, krytí jí dopisuje
   script.js. Vrstva 5 je táž jako u vějíře — a protože stojí v DOM
   za ním, kreslí se nad ním; film s vrstvou 6 ji pak zase přikryje. */
@media (min-width:701px){
  .hero > #unlocked{
    position:absolute;inset:0;z-index:5;margin:0;min-height:0;
    display:flex;align-items:center;
    opacity:0;visibility:hidden;
    will-change:opacity,transform}
}
@media(max-width:700px){
  /* Na telefonu leží fáze PŘES SEBE, ne pod sebou — od 29. 8. je scéna
     připnutá i tady a krytí jim dopisuje script.js. Nechal jsem tu
     nejdřív starší vzor „order + position:static" a byla to chyba:
     jediná sekce v toku uvnitř flexu odsunula ostatní a na tabletu
     z toho byly texty přes sebe. */
  .hero > #unlocked{position:absolute;inset:0;z-index:5;margin:0;
    min-height:0;display:flex;align-items:center;
    opacity:0;visibility:hidden}
}
#unlocked .vr-h{font-size:clamp(34px,4.6vw,66px);line-height:1.06;margin:0}
#unlocked .eyebrow{display:flex;margin:0 0 clamp(12px,2vh,22px)}

/* Očka na SVĚTLÉM podkladu jsou růžová všechna, ne jen ta dvě nová.
   Michaela 2. 9.: „ano, musí být růžová." Kdyby to platilo jen pro nová,
   měla by stránka očka dvojí — a přesně na to se ptala u pruhu 10×
   („jaktože je tohle jiná růžová?"). Inkoustová #BD376B má na bílé
   5,35 : 1 a na #F5F6F8 4,92 — verzálkový popisek má práh 4,5.
   Na TMAVÝCH scénách zůstávají očka světlá: #BD376B tam má 2,98. */
#zaver .eyebrow,#patent .eyebrow,#desetkrat .eyebrow{
  color:var(--pink-ink,#FB5494)}

}

/* ═══ ILUSTRACE V HISTORII (2. 9.) ══════════════════════════════════
   Osm obrázků od Radka. Michaela u něj ověřila, že jsou GENEROVANÉ —
   nejsou to archivní snímky. Černobílý obrázek pod letopočtem 1897 se
   čte jako fotografie z té doby, a když je vyrobený, není to pravda
   a z obrázku to nikdo nepozná. Proto je pod každým napsané, co je
   zač — vidět u obrázku, ne v patičce a ne až po rozkliknutí.
   Vlastní stanice BattSwapu popisek nemá; je to jejich produkt.

   Rám drží poměr 16:9, takže se rozvržení po doplnění dalších obrázků
   neposune, a obrázek se do něj vejde celý. */
.hs-ilu{margin:10px 0 8px;display:block}
.hs-ilu img{display:block;width:100%;height:auto;aspect-ratio:16/9;
  object-fit:cover;border-radius:2px;
  border:1px solid var(--hs-line,rgba(255,255,255,.18))}
.hs-ilu-p{margin:5px 0 0;font-family:var(--font-text);font-size:10.5px;
  line-height:1.35;color:var(--hs-mut,rgba(255,255,255,.62));
  text-wrap:pretty}
/* Ilustrace éry NESTOJÍ v toku pod textem: kapitola má pevně vysokou
   desku a řada firem se v ní středí, takže každý pixel nad ní řadu
   posune. Naměřeno: s obrázkem v toku spadla řada o 386 px pod střed
   a vytekla z okna. Visí proto v pravém horním rohu desky, kde je
   v téhle kapitole prázdno. */
@media (min-width:901px){
  .sc-wipe--hist .hs-chap:has(.hs-art--firms){position:relative}
  .hs-ilu--era{position:absolute;right:0;top:0;width:min(300px,22vw);
    margin:0;z-index:2}
}
/* Obrázek v kartě je menší než v předloze: karta místa i karta firmy
   mají pevnou desku a s obrázkem přes celou šířku z ní řada vytekla.
   Sto padesát pixelů je nad mezí přejímky (100 × 60) a text pod ním
   zůstává hlavní. */
.hs-misto .hs-ilu,.hs-firm .hs-ilu{max-width:190px}
@media (max-width:900px){ .hs-ilu--era{max-width:260px;margin-top:14px} }

/* Na telefonu jsou ilustrace menší. Karty firem stojí ve dvou
   sloupcích pod sebou a s obrázkem přes celou kartu vytekla kapitola
   o 695 px z okna (naměřeno 1539 px dno v okně 844). Sto dvacet pixelů
   obrázek nezruší — je pořád vidět a pořád je pod ním napsané, co je
   zač — jen se vejde. */
@media (max-width:700px){
  .hs-misto .hs-ilu{max-width:118px}
  .hs-ilu-p{font-size:9.5px;line-height:1.3}
  .hs-ilu--era{max-width:150px}
  /* Obrázek v kartě firmy je na telefonu malý a stojí nad textem.
     Zkoušel jsem ho nechat obtékat i postavit vedle textu do mřížky;
     ani jedno kapitolu nezachrání, protože ta měla i BEZ obrázků jen
     dvanáct pixelů rezervy (dno 840 v okně 844). Čísla a tři cesty
     ven jsou ve ZPRAVA-FOTKY.md. */
  .sc-wipe--hist .hs-firm .hs-ilu{max-width:none;margin:6px 0 2px}
  /* (popisek u karty viz pravidlo pro celých 900 px níž) */
  /* Popisek u KAŽDÉ karty by na telefonu zabral čtyřikrát dva až tři
     řádky — 120 px v kapitole, která má dvanáct. Táž věta proto stojí
     jednou pod celou řadou; nic se neztrácí, jen se neopakuje.
     3. 9.: platí i na tabletu, kde je řada od dnešní noci taky
     projížděná prstem a společný popisek pod ní stojí taky. */
  .hs-ilu--era{max-width:132px}
}

/* Společný popisek pod řadou firem je JEN na telefonu — na počítači má
   každý obrázek svůj vlastní hned pod sebou. */
.hs-ilu-p--spolecna{display:none}
@media (max-width:900px){
  .hs-ilu-p--spolecna{display:block;grid-column:1/-1;margin:6px 0 0;
    font-size:9px;line-height:1.3}
}

/* ═══ ŘADA FIREM SE NA TELEFONU PROJÍŽDÍ DO STRANY (2. 9.) ══════════
   Kapitola „Then billions chased scale." má na telefonu pevnou desku
   a čtyři karty pod sebou ji vyplnily beze zbytku — před přidáním
   ilustrací měla dvanáct pixelů rezervy (dno 840 v okně 844). Osm
   obrázků z dávky se do ní nevejde: čtyři ilustrace s popiskem
   potřebují skoro tři sta pixelů, které tam nejsou.

   Karty proto stojí vedle sebe a projíždějí se prstem, jak je na
   telefonu zvykem. Nic se neschovává — všechny čtyři jsou tam
   i s obrázky — a kapitola se vejde do jedné obrazovky.

   2. 9. V NOCI ROZŠÍŘENO NA 900 px. Mezi 701 a 900 px platilo
   základní pravidlo `grid-template-columns:1fr`, tedy čtyři karty
   POD SEBOU — naměřeno na iPadu na výšku (810 × 1080): kapitola byla
   vysoká 2 300 px v okně 1 080 a byla vidět jedna a půl karty, zbytek
   se nedal dorolovat, protože scéna je připnutá. Čtyři sloupce se
   tam nevejdou (karta by měla 176 px a s ilustrací éry v toku by
   kapitola přetekla), takže se sem přenáší totéž řešení, jaké má
   telefon: karty vedle sebe, projíždějí se prstem, žádná nechybí. */
@media (max-width:900px){
  /* Řada karet musí stát POD textem, ne přes něj. Kapitola je mřížka
     se `safe center`; řada, která se projíždí prstem, je vyšší než
     řádek, který jí mřížka přidělila, a při středování se rozlila
     nahoru přes perex — naměřeno na 768 × 1024: perex „The swap always
     worked" ležel přes kartu Better Place a ilustrace éry zmizela pod
     ní. Řádky se proto určují stejně jako od 901 px výš: text, řada,
     popisek. */
  .sc-wipe--hist .hs-chap--tmava:has(.hs-firm){
    grid-template-rows:auto auto auto;row-gap:clamp(4px,.8vh,10px)}
  .sc-wipe--hist .hs-chap--tmava .hs-copy{grid-row:1;align-self:start}
  /* Řada je vodorovný posuvník, a mřížka jí přidělila řádek podle
     min-content, ne podle karet — přetekla o 57 px do popisku pod ní
     (naměřeno na 768 × 1024). `height:max-content` řádek dorovná;
     vodorovné projíždění to nechává, jak bylo. */
  .sc-wipe--hist .hs-chap--tmava .hs-art--firms{grid-row:2;align-self:start;
    height:max-content}
  .sc-wipe--hist .hs-chap--tmava .hs-ilu-p--spolecna{grid-row:3}
  .sc-wipe--hist .hs-chap--tmava .hs-art--firms{
    display:flex;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;
    padding-bottom:2px;scrollbar-width:none}
  .sc-wipe--hist .hs-chap--tmava .hs-art--firms::-webkit-scrollbar{display:none}
  .sc-wipe--hist .hs-firm .hs-ilu-p{display:none}
  .sc-wipe--hist .hs-chap--tmava .hs-firm{flex:0 0 72%;scroll-snap-align:start;
    display:flex;flex-direction:column;align-items:stretch}
  /* Na tabletu je karta při 72 % šířky tak veliká, že řada přeteče pod
     hranu okna (naměřeno 768 × 1024: dno 1201). Užší karta = menší
     obrázek = řada se vejde; karet je pořád všech pět a projíždějí se
     stejně. */
  @media (min-width:701px){
    .sc-wipe--hist .hs-chap--tmava .hs-firm{flex:0 0 42%}
    .sc-wipe--hist .hs-chap--tmava .hs-firm .hs-ilu img{
      max-height:98px;object-fit:cover;object-position:center}
  }
  .sc-wipe--hist .hs-firm .hs-ilu{max-width:none;margin:6px 0 4px}
  .hs-ilu-p--spolecna{flex:none}
}

/* ═══ CO SE ZMĚNILO VEDLE RŮŽOVÉ (2. 9.) ════════════════════════════
   Značková #FB5494 se nesmí ztmavit, tak se mění to, co je vedle ní.
   Tři cesty ze zadání, každá tam, kde dává smysl:

   1) ZVĚTŠIT A ZTUČNIT + ČISTĚ BÍLÁ POD TÍM — očka nad nadpisy
      a popisek naší vrstvy u 10×. Verzálkový popisek na 12 px má
      normu 4,5 : 1 a značková růžová dá na bílé 3,09. Od 18,66 px
      při váze 700 je to VELKÝ text a norma je 3,0 — projde.
      Na #F5F6F8 by ani to nestačilo (2,86), proto ty obrazovky
      dostávají čistě bílou.
   2) TMAVÝ PODKLAD — očka na tmavých scénách (hero, film, historie)
      zůstávají, jak byla: značková růžová tam má 5,17 : 1.
   3) NECHAT TMAVÉ — nikde; Michaela 2. 9. výslovně chtěla očka
      růžová, tak se neruší, jen se zvětšila. */
#onelayer .eyebrow,#unlocked .eyebrow,#patent .eyebrow,
#desetkrat .eyebrow,#zaver .eyebrow{
  color:var(--pink,#FB5494);font-size:19px;font-weight:700;
  letter-spacing:.14em}
/* Pruh 10× a závěr jdou z #F5F6F8 na čistě bílou. Na světle šedé má
   značková růžová 2,86 : 1 a neprojde ani jako velký text; na bílé
   3,09. Je to táž plocha z manuálu (#F0F0F0 tam je světlá barva, ne
   podklad textu), jen o dva tóny světlejší. */
#desetkrat{background:#fff}
#zaver{background:#fff}
/* Popisek naší vrstvy v diagramu 10× — táž cesta jako u oček. */
.dx-popis--nase{font-size:19px;font-weight:700}
/* Číslo pod vějířem je na telefonu 18,33 px, tedy o třetinu pixelu pod
   hranicí velkého textu. Devatenáct ho přes ni přenese; váhu 800 už
   má. */
@media(max-width:700px){ .sc-fan .fst-v{font-size:19px} }

/* ═══ DROBNÝ RŮŽOVÝ TEXT NA SALES — TŘETÍ CESTA (2. 9.) ═════════════
   „Yes" v tabulce, „Customised solutions — call us" a „Download full
   specs" jsou 15 a 16 px na světlém. Značková růžová tam dá 3,09 : 1
   proti normě 4,5 a zvětšit je na 18,66 px nejde — je to buňka
   tabulky a dva odkazy uvnitř odstavců, ne nadpisy. Platí proto třetí
   cesta ze zadání: text zůstane tmavý a růžová na téhle obrazovce
   zůstává tam, kde byla vždycky — na tlačítkách a v konfigurátoru.

   Odkazy si signál nechávají podtržením, ne barvou; „Yes" ho nese
   tučným řezem, který měl i předtím. */
.icp .yes{color:var(--ink,#1D1D1F)}
.econ-alt .tapok,.tapok,.cfg2-facts .f2-more{color:var(--ink,#1D1D1F);
  text-decoration:underline;text-decoration-thickness:1px;
  text-underline-offset:3px;text-decoration-color:var(--pink,#FB5494)}

/* „Profitable" v kartě vítězů je 16 px na bílé — značková růžová tam
   dá 3,09 : 1 proti normě 4,5. Slovo nese význam („bez dotací"), takže
   se neruší, jen přestává být barvou: tučný tmavý řez ho odliší stejně
   a růžová zůstává na téže obrazovce v naší značce a v liště. Třetí
   cesta ze zadání. */
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-facts b{
  color:var(--ink,#1D1D1F)}

/* „Profitable" má vlastní pravidlo o kus výš (`.hs-facts .hs-win b`
   ve styles.css míří na --hs-pink), takže ho obecné pravidlo pro čísla
   nepřebilo. Platí pro něj totéž: 16px text na bílé, tedy tmavý. */
.sc-wipe--hist .hs-chap--leaders .hs-col--us .hs-facts .hs-win b{
  color:var(--ink,#1D1D1F)}

/* Závěrečná výzva z Radkovy předlohy stojí pod hlavním tlačítkem jako
   druhá, tišší cesta — kdo nechce mluvit s člověkem, spočítá si to sám.
   Podtržení nese signál odkazu, barva zůstává textová. */
.vr-closer{margin:clamp(14px,2vh,22px) 0 0}
.vr-closer-odkaz{display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-text);font-size:var(--fs-sm);font-weight:600;
  color:var(--ink,#1D1D1F);text-decoration:underline;
  text-decoration-thickness:1px;text-underline-offset:4px;
  text-decoration-color:var(--pink,#FB5494)}
.vr-closer-odkaz svg{width:15px;height:15px;flex:none}

/* ═══ KAPITOLA S FIRMAMI NA NÍZKÉM TELEFONU (3. 9. v noci) ═══════════
   Naměřeno na 393 × 734 (iPhone Michaely): kapitola končila na 814 px
   v okně 734 — spodek karet a společný popisek pod řadou byly pod
   hranou a nešlo se k nim dostat, protože scéna je připnutá. Na
   390 × 844 se vešla (dno 805), takže vada patří NÍZKÝM oknům, ne
   úzkým.

   Nic se neschovává: ilustrace éry si stoupá VEDLE perexu místo pod
   něj. Tím se ušetří její výška i výška jejího popisku, a to je právě
   těch osmdesát pixelů, které chybí. Řada karet zůstává, jak byla —
   projíždí se prstem a jsou v ní všechny čtyři. */
/* Nízké okno (do 800 px) potřebuje víc než jen ilustraci vedle textu:
   kapitola na 360 × 640 končila na 731 px. Ubírá se tam, kde je vzduch,
   ne z obsahu — odsazení kapitoly shora (44,8 → 12 px), mezera nad
   řadou karet (22 → 10 px) a výška obrázku v kartě (117 → 88 px).
   Všechny čtyři karty i s obrázky a popiskem zůstávají. */
/* Na telefonu (jakkoli vysokém) stojí ilustrace éry VEDLE perexu, ne
   pod ním, a obrázek v kartě má strop. Bez toho je kapitola s firmami
   vyšší než okno i na 390 × 844: řada karet se do dnešní noci vlévala
   do perexu (mřížka ji středovala), takže se „vešla" jen tím, že přes
   něj ležela. Když stojí pod ním, jak má, musí se ta výška opravdu
   ušetřit — a šetří se na vzduchu a na velikosti obrázku, ne na obsahu.
   Všechny čtyři karty i s obrázky a popiskem zůstávají. */
@media (max-width:700px){
  .sc-wipe--hist .hs-chap--tmava .hs-copy{
    display:grid;grid-template-columns:1fr 132px;column-gap:10px;align-items:start}
  .sc-wipe--hist .hs-chap--tmava .hs-copy > .eyebrow,
  .sc-wipe--hist .hs-chap--tmava .hs-copy > .h{grid-column:1/-1}
  .sc-wipe--hist .hs-chap--tmava .hs-copy > .lead{grid-column:1;margin-bottom:0}
  .sc-wipe--hist .hs-chap--tmava .hs-ilu--era{grid-column:2;margin:0;max-width:132px}
  .sc-wipe--hist .hs-chap--tmava .hs-firm .hs-ilu img{
    max-height:110px;object-fit:cover;object-position:center}
  .sc-wipe--hist .hs-chap--tmava .hs-art--firms{margin-top:10px}
}
@media (max-width:700px) and (max-height:800px){
  .sc-wipe--hist .hs-chap{margin-top:6px}
  .sc-wipe--hist .hs-chap--tmava .hs-art--firms{margin-top:6px}
  .sc-wipe--hist .hs-chap--tmava .hs-firm .hs-ilu img{
    max-height:60px;object-fit:cover;object-position:center}
  .sc-wipe--hist .hs-chap--tmava .hs-ilu-p--spolecna{margin-top:2px}
}

/* ═══════════════════════════════════════════════════════════════════
   HISTORIE PODLE PŘEDLOHY (3. 9.)

   Závazný popis: PREDLOHA-DVANACT-OBRAZOVEK.md a snímky
   v _zadani-screeny/. Tři věci, které mění celý vzhled proti tomu,
   co tu bylo do dneška:

     1) fotografie jsou PŘES CELÉ OKNO, ne náhledy v řadě,
     2) nadpisy jsou DVOUBAREVNÉ — druhá věta růžová,
     3) dole běží časová osa a nahoře ukazatel postupu.

   Všechno je schované za `html:root`, takže se verze s osou
   (`?historie=osa`) nemění ani o pixel.
   ═══════════════════════════════════════════════════════════════════ */

/* --- dvoubarevný nadpis ------------------------------------------- */
html:root .sc-wipe--hist .hs-chap .h em{
  font-style:normal;color:var(--pink,#FB5494)}

/* --- rám scény: každá obrazovka vyplní okno ----------------------- */
html:root .sc-wipe--hist .hs-fr{
  display:grid;align-content:center;position:absolute;inset:0;
  padding:clamp(64px,9vh,110px) 0 clamp(96px,13vh,150px)}

/* --- opener a závěr nemají lištu ---------------------------------- */
html:root .sc-wipe--hist .hs-top{transition:opacity .3s}
html:root .sc-wipe--hist .hs-top.bez-listy,
html:root .sc-wipe--hist .hs-cas.bez-listy{opacity:0;pointer-events:none}

/* --- „The story begins ↓" v pravém dolním rohu openeru ------------ */
html:root .hs-zacatek{
  position:absolute;right:0;bottom:clamp(24px,5vh,56px);
  font-family:var(--font-text);font-size:12px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--pink,#FB5494)}
html:root .hs-zacatek i{margin-left:10px;font-style:normal}

/* --- princip: kresba ENERGY / MACHINE ------------------------------ */
html:root .hs-fr--princip{grid-template-columns:minmax(0,1fr) minmax(0,.9fr);
  align-items:center;column-gap:clamp(24px,4vw,64px)}
html:root .hs-diagram{position:relative;aspect-ratio:1/.82;align-self:center}
html:root .hs-diagram::before,
html:root .hs-diagram::after{
  content:"";position:absolute;inset:6% 2% 6% 2%;border-radius:50%;
  border:1px solid rgba(255,255,255,.16)}
html:root .hs-diagram::after{inset:16% 12% 16% 12%;
  border-color:rgba(251,84,148,.34)}
html:root .hs-kruh{
  position:absolute;display:grid;place-items:center;border-radius:50%;
  font-family:var(--font-text);font-size:11px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase}
html:root .hs-kruh--energie{
  right:6%;top:12%;width:30%;aspect-ratio:1;background:var(--pink,#FB5494);
  color:#050505;box-shadow:0 0 60px rgba(251,84,148,.45)}
html:root .hs-kruh--stroj{
  left:6%;bottom:16%;width:26%;aspect-ratio:1;background:#0E0F12;color:#fff;
  border:1px solid rgba(255,255,255,.14)}
html:root .hs-fyzika{
  margin-top:clamp(18px,4vh,40px);font-family:var(--font-text);
  font-size:13px;font-weight:700;letter-spacing:.04em;
  color:var(--hs-mut,rgba(255,255,255,.7))}
html:root .hs-fyzika span{margin:0 14px;opacity:.5}

/* --- fotka přes celé okno ------------------------------------------ */
html:root .hs-fr--cela{padding:0}
html:root .hs-cela{position:absolute;inset:0;margin:0;overflow:hidden}
html:root .hs-cela img{
  width:100%;height:100%;object-fit:cover;object-position:center;display:block;
  aspect-ratio:auto}
/* Text musí být čitelný na fotce: závoj, ne ztmavení obrázku. */
html:root .hs-fr--cela .hs-cela::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(6,7,9,.82) 0%,rgba(6,7,9,.58) 42%,rgba(6,7,9,.08) 78%)}
html:root .hs-fr--cela.hs-fr--vpravo .hs-cela::after{
  background:linear-gradient(270deg,rgba(6,7,9,.82) 0%,rgba(6,7,9,.58) 42%,rgba(6,7,9,.08) 78%)}
html:root .hs-fr--cela .hs-copy{
  position:relative;z-index:2;align-self:center;
  max-width:min(52%,640px);padding:0 0 0 0}
html:root .hs-fr--cela.hs-fr--vpravo{justify-items:end;text-align:right}
html:root .hs-fr--cela.hs-fr--vpravo .hs-copy{justify-items:end}

/* --- popiska u fotky: tmavý proužek v rohu ------------------------- */
html:root .hs-kredit{
  position:absolute;right:0;bottom:0;z-index:3;margin:0;
  padding:7px 14px;background:rgba(10,11,14,.72);
  font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(255,255,255,.82);max-width:min(560px,72vw)}
html:root .hs-fr--firma .hs-kredit{font-size:9.5px}

/* --- firma: text vlevo, fotka v rámečku vpravo --------------------- */
/* PŮVODNÍ RÁMEČEK — VRÁTIT ODKOMENTOVÁNÍM */
/*
html:root .hs-fr--firma{
  grid-template-columns:minmax(0,.9fr) minmax(0,1.05fr);
  align-items:center;column-gap:clamp(28px,4vw,72px)}
html:root .hs-fr--firma .hs-ram{
  position:relative;margin:0;overflow:hidden;align-self:center;
  border:1px solid rgba(255,255,255,.10)}
html:root .hs-fr--firma .hs-ram img{
  width:100%;height:clamp(320px,62vh,660px);object-fit:cover;display:block;
  aspect-ratio:auto}
*/
html:root .hs-cislo{
  margin:clamp(10px,2vh,20px) 0 0;font-family:var(--font-display);
  line-height:1;color:#fff}
html:root .hs-cislo b{font-size:clamp(38px,4.6vw,68px);font-weight:400}
html:root .hs-cislo span{
  margin-left:10px;font-family:var(--font-text);font-size:12px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--hs-mut,rgba(255,255,255,.62))}
/* Prázdný rámeček „číslo čeká na doklad" je pryč (4. 9.). Byla to
   česká hláška na anglické stránce a vypisovala se přes ::before
   z data-ceka. Chybějící číslo je zaznamenané komentářem v index.html
   u té obrazovky, ne na obrazovce. */
html:root .hs-stitek{
  display:inline-block;margin-top:clamp(14px,2.6vh,26px);
  padding:9px 16px;border:1px solid var(--pink,#FB5494);
  font-family:var(--font-text);font-size:11px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--pink,#FB5494)}

/* --- dvojvěta: druhá polovina růžová ------------------------------- */
html:root .hs-dvojveta{
  margin-top:clamp(16px,3vh,32px);font-family:var(--font-text);
  font-size:clamp(14px,1.15vw,17px);font-weight:700;color:#fff}
html:root .hs-dvojveta em{font-style:normal;color:var(--pink,#FB5494)}
html:root .hs-dvojveta--velka{
  margin-top:clamp(26px,5vh,52px);
  font-family:var(--font-display);font-weight:400;
  font-size:clamp(20px,2.2vw,34px);line-height:1.35}
html:root .hs-dvojveta--velka em{display:block}

/* --- obrat: na střed, přes obrazovku růžová diagonála -------------- */
html:root .hs-fr--obrat{justify-items:center;text-align:center}
html:root .hs-fr--obrat .hs-copy{max-width:min(900px,86%);justify-items:center}
html:root .hs-fr--obrat::before{
  content:"";position:absolute;left:-6%;right:-6%;top:50%;height:1px;
  background:linear-gradient(90deg,rgba(251,84,148,0),var(--pink,#FB5494) 55%,rgba(251,84,148,0));
  transform:rotate(-14deg);opacity:.55;pointer-events:none}

/* --- dva vítězové: obrazovka rozdělená napůl ----------------------- */
html:root .hs-fr--dva{padding:0;grid-template-columns:1fr 1fr;
  align-content:stretch}
html:root .hs-pul{position:relative;overflow:hidden}
html:root .hs-pul .hs-cela::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(6,7,9,.55) 0%,rgba(6,7,9,.25) 38%,rgba(6,7,9,.88) 100%)}
html:root .hs-pul--nase{border-left:1px solid rgba(255,255,255,.16)}
html:root .hs-pul-text{
  position:absolute;left:clamp(20px,3vw,54px);right:clamp(20px,3vw,54px);
  bottom:clamp(96px,14vh,168px);z-index:2;display:grid;gap:6px}
html:root .hs-pul-lab{
  font-family:var(--font-text);font-size:11px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.78)}
html:root .hs-pul-jm{
  font-family:var(--font-display);font-size:clamp(34px,4vw,60px);
  line-height:1;color:#fff}
html:root .hs-pul-jm--nase em{font-style:normal;color:var(--pink,#FB5494)}
html:root .hs-pul-veta{
  margin:6px 0 0;font-family:var(--font-text);font-size:14px;
  color:rgba(255,255,255,.86)}
html:root .hs-pul-cisla{
  margin:4px 0 0;font-family:var(--font-text);font-size:13px;
  color:rgba(255,255,255,.86)}
html:root .hs-pul-cisla b{font-weight:700}
html:root .hs-pul-cisla span{opacity:.5;margin:0 6px}
html:root .hs-segmenty{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0}
html:root .hs-segmenty span{
  padding:6px 11px;border:1px solid rgba(255,255,255,.28);
  font-family:var(--font-text);font-size:10.5px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.9)}
html:root .hs-dva-nadpis{
  position:absolute;left:0;right:0;top:clamp(70px,10vh,120px);z-index:3;
  display:grid;justify-items:center;text-align:center;gap:10px;
  padding:0 clamp(20px,4vw,60px)}
html:root .hs-dva-nadpis .h{margin:0}

/* --- ukazatel postupu pod lištou ----------------------------------- */
html:root .hs-postup{
  position:absolute;left:0;right:0;bottom:-1px;height:2px;
  background:var(--pink,#FB5494);transform:scaleX(0);transform-origin:left;
  transition:transform .5s cubic-bezier(.16,1,.30,1)}
html:root .sc-wipe--hist .hs-top{position:relative}

/* --- časová osa dole ----------------------------------------------- */
html:root .hs-cas{
  position:absolute;left:0;right:0;bottom:clamp(26px,5vh,60px);
  display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:
    "era cara cara" "od dnes do";
  align-items:center;column-gap:14px;row-gap:8px;
  transition:opacity .3s;pointer-events:none}
html:root .hs-cas-era{grid-area:era;
  font-family:var(--font-text);font-size:11.5px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.9)}
html:root .hs-cas-cara{grid-area:cara;position:relative;height:1px;
  background:rgba(255,255,255,.18)}
html:root .hs-cas-plnene{position:absolute;inset:0;
  background:var(--pink,#FB5494);transform-origin:left;transform:scaleX(0);
  transition:transform .5s cubic-bezier(.16,1,.30,1)}
html:root .hs-cas-bezec{
  position:absolute;top:50%;width:9px;height:9px;border-radius:50%;
  background:var(--pink,#FB5494);transform:translate(-50%,-50%);
  box-shadow:0 0 16px rgba(251,84,148,.8);
  transition:left .5s cubic-bezier(.16,1,.30,1)}
html:root .hs-cas-stop{
  position:absolute;bottom:10px;transform:translateX(-50%);
  font-family:var(--font-text);font-size:9.5px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;
  color:rgba(255,255,255,.5);opacity:0;transition:opacity .3s}
html:root .hs-cas.se-stopkami .hs-cas-stop{opacity:1}
html:root .hs-cas-stop.je{color:var(--pink,#FB5494)}
html:root .hs-cas-stop::after{
  content:"";position:absolute;left:50%;bottom:-13px;width:5px;height:5px;
  border-radius:50%;background:currentColor;transform:translateX(-50%)}
html:root .hs-cas-od{grid-area:od}
html:root .hs-cas-dnes{grid-area:dnes;justify-self:center}
html:root .hs-cas-do{grid-area:do;justify-self:end}
html:root .hs-cas-od,
html:root .hs-cas-dnes,
html:root .hs-cas-do{
  font-family:var(--font-text);font-size:10px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.42)}

/* --- na telefonu a tabletu: pod sebou, ne vedle sebe --------------- */
@media (max-width:900px){
  html:root .hs-fr--princip,
  html:root .hs-fr--firma{grid-template-columns:1fr;row-gap:clamp(12px,2.5vh,22px)}
  html:root .hs-diagram{max-width:56vw;justify-self:end}
  html:root .hs-fr--firma .hs-ram img{height:clamp(150px,26vh,260px)}
  html:root .hs-fr--cela .hs-copy{max-width:100%}
  html:root .hs-fr--cela .hs-cela::after,
  html:root .hs-fr--cela.hs-fr--vpravo .hs-cela::after{
    background:linear-gradient(180deg,rgba(6,7,9,.86) 0%,rgba(6,7,9,.62) 52%,rgba(6,7,9,.30) 100%)}
  html:root .hs-fr--dva{grid-template-columns:1fr;grid-template-rows:1fr 1fr}
  html:root .hs-pul--nase{border-left:0;border-top:1px solid rgba(255,255,255,.16)}
  html:root .hs-pul-text{bottom:clamp(14px,3vh,30px)}
  html:root .hs-cas-stop{display:none}
}

/* Očko patří ke KAŽDÉ obrazovce filmu (3. 9.). Staré pravidlo
   `.hs-chap .hs-copy .eyebrow{display:none}` ho schovávalo všude, kde
   kapitola nesla rok — v předloze ale očko nese celý příběh
   („1897 · NEW YORK", „THE CAPITAL RACE · AMPLE") a rok v něm stojí. */
html:root .sc-wipe--hist .hs-fr .hs-copy .eyebrow{
  display:block;margin:0 0 clamp(10px,1.8vh,18px);
  color:var(--pink,#FB5494);font-size:12.5px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase}
html:root .sc-wipe--hist .hs-fr .hs-copy .eyebrow a{color:inherit}
html:root .sc-wipe--hist .hs-fr--opener .hs-copy .eyebrow{
  color:var(--hs-mut,rgba(255,255,255,.74))}

/* Fotka přes CELÉ okno, ne jen přes obsahový sloupec. Scéna má
   `.wrap` s maximální šířkou; obrázek se z něj vylomí na plnou šířku
   okna, protože právě to je v předloze ta hlavní změna. */
html:root .sc-wipe--hist .hs-fr--cela,
html:root .sc-wipe--hist .hs-fr--dva{
  left:50%;right:auto;width:100vw;margin-left:-50vw}
html:root .sc-wipe--hist .hs-fr--cela .hs-copy{
  padding-left:max(calc(50vw - 590px),24px);
  padding-right:max(calc(50vw - 590px),24px)}
html:root .sc-wipe--hist .hs-fr--cela.hs-fr--vpravo .hs-copy{
  margin-left:auto}

/* Fotka vyplní celou scénu (proměnné počítá script.js při načtení
   a při změně velikosti okna — viz hsRamec). */
html:root .sc-wipe--hist .hs-fr--cela,
html:root .sc-wipe--hist .hs-fr--dva{
  top:var(--hs-nad,0px);bottom:var(--hs-pod,0px)}

/* `.hs-copy` má z dřívějška `display:contents`, takže nemá vlastní
   rámeček a rozvržení obrazovky se o něj nedá opřít. Ve filmu je
   z něj proto zase blok — jinak text na obrazovce s fotkou nemá
   kam si stoupnout (naměřeno: rámeček 0 × 0 px). */
html:root .sc-wipe--hist .hs-fr .hs-copy{
  display:block;position:relative;z-index:2}
html:root .sc-wipe--hist .hs-fr--cela{grid-template-columns:1fr}
html:root .sc-wipe--hist .hs-fr--cela .hs-copy{
  max-width:min(56%,660px);margin-right:auto}
html:root .sc-wipe--hist .hs-fr--vpravo .hs-copy{
  text-align:right;margin-left:auto;margin-right:0}
html:root .sc-wipe--hist .hs-fr--obrat .hs-copy{
  margin:0 auto;text-align:center}

/* Sloupec s textem musí mít šířku, ne jen strop — při zarovnání
   doprava se jinak smrskne na nejdelší slovo a nadpis se láme na
   pět řádek (naměřeno na obrazovce Barcelony). */
html:root .sc-wipe--hist .hs-fr--cela .hs-copy{
  width:min(56%,660px);max-width:none}
/* Lišta a osa patří NAD fotku, stejně jako v předloze. */
html:root .sc-wipe--hist .hs-top,
html:root .sc-wipe--hist .hs-cas{z-index:6}
html:root .sc-wipe--hist .hs-fr{z-index:1}
/* Silnější závoj: fotky jsou různě světlé a text na nich musí držet
   kontrast i na té nejsvětlejší (Barcelona). */
html:root .sc-wipe--hist .hs-fr--cela .hs-cela::after{
  background:linear-gradient(90deg,rgba(6,7,9,.88) 0%,rgba(6,7,9,.72) 46%,rgba(6,7,9,.18) 86%)}
html:root .sc-wipe--hist .hs-fr--cela.hs-fr--vpravo .hs-cela::after{
  background:linear-gradient(270deg,rgba(6,7,9,.88) 0%,rgba(6,7,9,.72) 46%,rgba(6,7,9,.18) 86%)}

/* Text jedné obrazovky je JEDEN sloupec. `.hs-copy` má z dřívějška
   dvousloupcovou mřížku (nadpis vlevo, perex vpravo) a ve filmu se
   z toho stal nadpis lámaný po dvou slovech vedle úzkého sloupku
   perexu — naměřeno na obrazovce 1972. */
html:root .sc-wipe--hist .hs-fr .hs-copy > *{
  grid-column:auto;grid-row:auto;max-width:none}

/* Éra se v předloze píše jen na časové ose dole, ne ještě jednou nad
   nadpisem — starý štítek `.hs-chap::before` proto ve filmu mlčí. */
html:root .sc-wipe--hist .hs-fr::before{content:none}
/* Nadpis potřebuje pod sebou vzduch, jinak na něm perex leží. */
html:root .sc-wipe--hist .hs-fr .h{margin:0 0 clamp(12px,2vh,22px)}
html:root .sc-wipe--hist .hs-fr .lead{margin:0}
/* Obrázek firmy končí NAD osou, aby si nesedly popiskou. */
/* PŮVODNÍ RÁMEČEK — VRÁTIT ODKOMENTOVÁNÍM */
/*
html:root .sc-wipe--hist .hs-fr--firma .hs-ram img{
  height:clamp(280px,52vh,520px)}
*/
html:root .sc-wipe--hist .hs-kredit{
  font-size:9px;letter-spacing:.08em;padding:6px 10px;white-space:nowrap;
  max-width:none;overflow:hidden;text-overflow:ellipsis}

/* Rozpůlená obrazovka: obě poloviny musí mít výšku, jinak je fotka
   uvnitř nich nulová (naměřeno — obě půlky prázdné). */
html:root .sc-wipe--hist .hs-fr--dva{grid-template-rows:minmax(0,1fr)}
html:root .sc-wipe--hist .hs-pul{height:100%;min-height:0}
html:root .sc-wipe--hist .hs-dva-nadpis{
  top:clamp(120px,17vh,190px)}
html:root .sc-wipe--hist .hs-dva-nadpis .h{
  font-size:clamp(28px,3.4vw,52px);line-height:1.12}

/* Obrat: text má jít přes celou šířku, ne jen přes polovinu, a
   diagonála má být vidět pod ním. */
html:root .sc-wipe--hist .hs-fr--obrat .hs-copy{
  width:min(1040px,88%);max-width:none}
html:root .sc-wipe--hist .hs-fr--obrat::before{
  z-index:0;opacity:.75;height:1.5px}
html:root .sc-wipe--hist .hs-fr--obrat .hs-dvojveta--velka{
  margin-top:clamp(30px,6vh,64px)}

/* Rozpůlená obrazovka: nadpis pod lištu, značky čitelně, popiska
   fotky nad osu. */
html:root .sc-wipe--hist .hs-dva-nadpis{top:clamp(150px,20vh,230px)}
html:root .sc-wipe--hist .hs-pul-jm img{
  height:clamp(30px,3.2vw,48px);width:auto;display:block}
html:root .sc-wipe--hist .hs-pul .hs-kredit{bottom:clamp(92px,13vh,150px)}
html:root .sc-wipe--hist .hs-pul-text{bottom:clamp(150px,20vh,240px)}
/* „The story begins ↓" patří do rohu OBRAZOVKY, ne pod perex. */
html:root .sc-wipe--hist .hs-fr--opener .hs-copy{position:static}

/* Pruh se čtyřmi údaji na obrazovce důkazu (předloha, obrazovka 10). */
html:root .sc-wipe--hist .hs-pruh{
  position:absolute;left:0;right:0;bottom:clamp(140px,20vh,230px);z-index:3;
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  background:rgba(10,11,14,.62);border-top:1px solid rgba(255,255,255,.12);
  border-bottom:1px solid rgba(255,255,255,.12)}
html:root .sc-wipe--hist .hs-udaj{
  padding:clamp(14px,2.4vh,26px) clamp(14px,2vw,30px);
  border-left:1px solid rgba(255,255,255,.10)}
html:root .sc-wipe--hist .hs-udaj:first-child{border-left:0}
html:root .sc-wipe--hist .hs-udaj b{
  display:block;font-family:var(--font-display);font-weight:400;
  font-size:clamp(22px,2.4vw,36px);line-height:1;color:#fff}
html:root .sc-wipe--hist .hs-udaj span{
  display:block;margin-top:6px;font-family:var(--font-text);font-size:10.5px;
  font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:rgba(255,255,255,.62)}
@media (max-width:900px){
  html:root .sc-wipe--hist .hs-pruh{grid-template-columns:repeat(2,minmax(0,1fr))}
  html:root .sc-wipe--hist .hs-udaj:nth-child(3){border-left:0}
}

/* Telefon: obrázek firmy nesmí přerůst okno a osa pod ním musí zůstat
   volná (naměřeno na 393 × 734 — obrázek končil pod hranou). */
@media (max-width:900px){
  html:root .sc-wipe--hist .hs-fr{
    padding:clamp(52px,8vh,80px) 0 clamp(112px,16vh,150px)}
  html:root .sc-wipe--hist .hs-fr--firma .hs-ram img{
    height:clamp(120px,20vh,200px)}
  html:root .sc-wipe--hist .hs-fr--firma .hs-cislo b{font-size:clamp(30px,9vw,44px)}
  html:root .sc-wipe--hist .hs-fr--cela .hs-copy{width:100%;max-width:none}
  html:root .sc-wipe--hist .hs-fr--vpravo .hs-copy{text-align:left}
  html:root .sc-wipe--hist .hs-pruh{bottom:clamp(112px,16vh,150px)}
  html:root .sc-wipe--hist .hs-dva-nadpis{top:clamp(96px,13vh,140px)}
  html:root .sc-wipe--hist .hs-pul-text{bottom:clamp(16px,3vh,34px)}
  html:root .sc-wipe--hist .hs-pul .hs-kredit{bottom:auto;top:0}
}

/* Na telefonu jsou půlky nad sebou — pravidlo musí stát AŽ ZA obecným
   `grid-template-rows:minmax(0,1fr)`, jinak ho přebije a spodní půlka
   (naše) spadne pod hranu okna. */
@media (max-width:900px){
  html:root .sc-wipe--hist .hs-fr--dva{
    grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr)}
  html:root .sc-wipe--hist .hs-dva-nadpis{
    top:auto;bottom:auto;position:absolute;left:0;right:0;
    top:clamp(84px,12vh,120px)}
  html:root .sc-wipe--hist .hs-dva-nadpis .h{font-size:clamp(20px,5.6vw,30px)}
  html:root .sc-wipe--hist .hs-pul-jm{font-size:clamp(24px,7vw,34px)}
  html:root .sc-wipe--hist .hs-pul-jm img{height:clamp(20px,5vw,28px)}
  html:root .sc-wipe--hist .hs-pul-veta,
  html:root .sc-wipe--hist .hs-pul-cisla{font-size:12px}
  html:root .sc-wipe--hist .hs-segmenty span{font-size:9px;padding:4px 7px}
  html:root .sc-wipe--hist .hs-pul .hs-kredit{display:none}
}

/* `height:100%` na půlce se počítalo z celé mřížky, ne z jejího řádku,
   takže obě půlky byly o dvě stě pixelů vyšší, než měly (naměřeno
   547 px v řádku 341 px). Řádek si je roztáhne sám. */
html:root .sc-wipe--hist .hs-fr--dva{padding:0}
html:root .sc-wipe--hist .hs-pul{height:auto;align-self:stretch}
/* Mřížka filmu má `align-content:center`; rozpůlená obrazovka ale
   potřebuje řádky roztáhnout, jinak se obě půlky slepí do nulové
   výšky uprostřed (naměřeno 0 px na telefonu). */
html:root .sc-wipe--hist .hs-fr--dva{align-content:stretch}

/* Na úzkém okně měly kapitoly z dřívějška `display:block`; obrazovky
   filmu ale stojí na mřížce (rozpůlená obrazovka se bez ní složí do
   nulové výšky). Platí to jen pro ně, ne pro verzi s osou. */
@media (max-width:900px){
  html:root .sc-wipe--hist .hs-fr{display:grid}
  html:root .sc-wipe--hist .hs-fr--dva{
    grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr);
    align-content:stretch}
}

/* Pravidlo `.hero #scHist .hs-chap{display:block}` má v sobě ID, takže
   přebíjí všechno bez ID. Obrazovky filmu proto musí být adresované
   taky přes ID — jinak z rozpůlené obrazovky zbude nulová výška. */
@media (max-width:900px){
  html:root #scHist .hs-fr{display:grid}
  html:root #scHist .hs-fr--dva{
    grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr);
    align-content:stretch;padding:0}
}

/* Telefon, rozpůlená obrazovka: nadpis těsně pod lištu, texty půlek
   dovnitř svých půlek, aby si nesedly s osou ani se sebou. */
@media (max-width:900px){
  html:root #scHist .hs-dva-nadpis{top:clamp(58px,8vh,86px)}
  html:root #scHist .hs-dva-nadpis .h{font-size:clamp(17px,4.8vw,24px)}
  html:root #scHist .hs-pul--nio .hs-pul-text{bottom:clamp(10px,2vh,20px)}
  html:root #scHist .hs-pul--nase .hs-pul-text{bottom:clamp(96px,14vh,130px)}
  html:root #scHist .hs-pul-veta{margin-top:2px}
  html:root #scHist .hs-segmenty{margin-top:4px}
}

/* Telefon: kresba principu jde POD text, na střed, a nesmí přetéct
   z okna (naměřeno — z kruhů byly vidět jen okraje u pravé hrany). */
@media (max-width:900px){
  html:root #scHist .hs-fr--princip{
    grid-template-columns:minmax(0,1fr);row-gap:clamp(10px,2vh,20px)}
  html:root #scHist .hs-fr--princip .hs-copy{grid-column:1;grid-row:1}
  html:root #scHist .hs-diagram{
    grid-column:1;grid-row:2;justify-self:center;
    width:min(58vw,230px);max-width:none;aspect-ratio:1/.86}
  html:root #scHist .hs-kruh{font-size:9px}
}

/* Rozpůlená obrazovka na počítači: nadpis pod lištu, značka NIO bíle
   (soubor je tmavý a na noční fotce zmizel), popiska fotky nad osu. */
html:root #scHist .hs-dva-nadpis{top:clamp(196px,25vh,280px)}
html:root #scHist .hs-pul--nio .hs-pul-jm img{
  filter:brightness(0) invert(1);opacity:.94}
html:root #scHist .hs-pul .hs-kredit{bottom:clamp(112px,16vh,180px)}

/* Běžec na časové ose je plná růžová plocha. Text na ní nikdy není,
   ale pravidlo z brandmanuálu zní „na plné růžové je písmo černé" —
   a přejímka ho měří i tam, kde žádné písmo není. Barva písma je
   proto černá; na vzhledu se tím nemění nic, protože ten kroužek
   žádné písmo nenese. */
html:root .hs-cas-bezec{color:#050505}

/* Velké číslo a jeho popiska stojí VEDLE sebe, ne přes sebe: řádkový
   box velkého čísla je vysoký a popiska mu spadla dovnitř (naměřeno
   překryv 28–40 % na širokých oknech). */
html:root #scHist .hs-cislo{
  display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
html:root #scHist .hs-cislo b{line-height:.92}
html:root #scHist .hs-cislo span{margin-left:0;padding-bottom:.5em}
/* Perex pod velkým číslem potřebuje vzduch, jak ho má předloha. */
html:root #scHist .hs-cislo{margin-bottom:clamp(10px,1.8vh,20px)}

/* Obrat má text přes celou šířku scény; do teď se opíral o šířku
   nadpisu (naměřeno 520 px z 1180) a nadpis se lámal na čtyři řádky
   místo dvou. */
html:root #scHist .hs-fr--obrat .hs-copy{
  width:min(1040px,92%);max-width:none;margin:0 auto}
html:root #scHist .hs-fr--obrat .h{
  font-size:clamp(30px,3.9vw,60px);line-height:1.08}
html:root #scHist .hs-fr--obrat::before{opacity:.85}
/* Obrat je jednosloupcová obrazovka — kapitola měla z dřívějška
   dvousloupcovou mřížku a text se do ní vešel jen na půl šířky. */
html:root #scHist .hs-fr--obrat{grid-template-columns:minmax(0,1fr)}
html:root #scHist .hs-fr--obrat .hs-copy{grid-column:1}
/* Tečka mezi dvěma údaji je vlastní prvek, ať se text nedělí mezi
   rodiče a dítě (měřidla pak hlásí „dva texty přes sebe"). */
html:root #scHist .hs-tecka{opacity:.5;margin:0 10px}
html:root #scHist .hs-fyzika span{display:inline}
html:root #scHist .hs-pul-cisla span{display:inline}
/* Tablet: štítky segmentů nesmí sedět na popisce éry. */
@media (max-width:1100px){
  html:root #scHist .hs-pul--nase .hs-pul-text{bottom:clamp(120px,16vh,180px)}
}

/* ═══ OBSAH OBRAZOVKY NESMÍ DO PRUHU LIŠTY ANI OSY (3. 9. odpoledne) ══
   Naměřeno na 1440 i 1280: očko a nadpis obrazovky 02 a 11 ležely přes
   lištu (24 % a 32 %, na 1280 dokonce 43 % a 100 %), kresba principu
   a popiska fotky zase přes časovou osu. Pruhy si teď scéna změří
   sama (hsRamec v script.js) a obrazovky se do nich nepustí. */
html:root #scHist .hs-fr{
  padding-top:calc(var(--hs-lista-telo,0px) + clamp(10px,1.6vh,20px));
  padding-bottom:calc(var(--hs-osa-telo,70px) + clamp(10px,1.6vh,20px))}
html:root #scHist .hs-fr--cela,
html:root #scHist .hs-fr--dva{
  padding-top:calc(var(--hs-lista-scena,150px) + clamp(10px,1.6vh,20px));
  padding-bottom:calc(var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px))}
/* Fotka smí do SPODNÍHO pruhu (osa je podklad), ale ne do horního:
   od 6. 9. v noci leží pruh záhlaví NAD fotkou, na podkladu stránky.
   Do té doby fotka vyjížděla pod záhlaví (záporný horní okraj) a text
   záhlaví se musel barvit podle toho, co je zrovna pod ním — dvanáct
   výjimek podle `data-era`, které jsou tímhle zrušené. */
html:root #scHist .hs-cela{
  top:calc(var(--hs-lista-scena,150px) + clamp(10px,1.6vh,20px));
  bottom:0;left:0;right:0;
  margin:0
         0
         calc(-1 * (var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px)))}
/* Pruh čtyř údajů a texty půlek stojí nad osou. */
html:root #scHist .hs-pruh{bottom:0;position:relative;align-self:end}
html:root #scHist .hs-pul-text{bottom:clamp(14px,2.5vh,28px)}
html:root #scHist .hs-pul .hs-kredit{bottom:auto;top:0}

/* Kresba principu patří VPRAVO VEDLE textu, jak ji má předloha — do
   teď stála pod ním, byla vysoká 436 px a vytlačila obsah obrazovky
   nad lištu i přes časovou osu (naměřeno 3. 9.). Sloupce se proto
   určují přes ID, aby je nepřebilo starší pravidlo kapitoly. */
html:root #scHist .hs-fr--princip{
  grid-template-columns:minmax(0,1.05fr) minmax(0,.8fr);
  align-items:center;column-gap:clamp(24px,4vw,64px)}
html:root #scHist .hs-fr--princip .hs-copy{grid-column:1;grid-row:1}
html:root #scHist .hs-diagram{
  grid-column:2;grid-row:1;justify-self:center;align-self:center;
  width:min(100%,420px);max-height:min(42vh,380px);aspect-ratio:1/.86}
/* Jméno NIO textem, ve stejné velikosti jako BattSwap vpravo. */
html:root #scHist .hs-pul-jm--nio{color:#fff}
html:root #scHist .hs-pul-jm--nio a{color:inherit;text-decoration:none}
/* Popiska na rozpůlené obrazovce stojí těsně pod lištou, ne pod její
   čarou a ne v pruhu osy. */
html:root #scHist .hs-pul .hs-kredit{
  top:calc(var(--hs-lista-scena,150px) + 10px);bottom:auto}

/* ═══ SVĚTLÝ PODKLAD OD OBRATU DÁL (3. 9.) ═══════════════════════════
   Michaela: „první světlá, druhá už tmavá, pak vše tmavé, až pak když
   najede to viz příloha, tak to bude světlé i poté." Jeden zlom, na
   obrazovce 9 (A DIFFERENT STARTING POINT) — je to zároveň místo, kde
   se příběh otáčí od cizích neúspěchů k nám.

   Světlá je #F0F0F0 z brandmanuálu, text #050505. Očka na světlém
   NEJSOU drobná růžová (na světlém má #FB5494 jen 3,09 : 1, což je
   pod normou 4,5 pro drobné písmo) — jsou VELKÁ a tučná, a tím se
   dostanou pod normu 3,0 pro velký text, kterou růžová splní.
   Táž cesta, jakou už na webu prošla očka na světlých scénách. */
/* Světlá patří CELÉ scéně, ne jen rámečku obrazovky — jinak zůstane
   kolem tmavý lem a lišta se čte tmavá na tmavém (naměřeno). Tmavé
   obrazovky mají vlastní tmavý podklad, takže se při předávce nikdy
   neukáže světlo pod tmavou obrazovkou. */
html:root #scHist{transition:background-color .45s cubic-bezier(.16,1,.30,1)}
html:root #scHist.hs-svetlo{background:#F0F0F0}
html:root #scHist .hs-fr[data-podklad="svetla"]{color:#050505}
html:root #scHist .hs-fr[data-podklad="svetla"] .h{color:#050505}
html:root #scHist .hs-fr[data-podklad="svetla"] .h em{color:var(--pink,#FB5494)}
html:root #scHist .hs-fr[data-podklad="svetla"] .lead{color:#3C4045}
/* ZMĚŘENO, NE ODHADNUTO: značková růžová na světlé #F0F0F0 dá
   2,71 : 1 — pod normou i pro velký text (3,0). Očko na světlé
   obrazovce je proto tmavé (19,60 : 1); růžová zůstává tam, kde
   projde: v druhé půlce nadpisu, která je velká. */
html:root #scHist .hs-fr[data-podklad="svetla"] .hs-copy .eyebrow{
  color:#050505;font-size:19px;font-weight:700;letter-spacing:.14em}
html:root #scHist .hs-fr[data-podklad="svetla"] .hs-zacatek{color:#050505}
html:root #scHist .hs-fr[data-podklad="svetla"] .hs-dvojveta{color:#050505}
html:root #scHist .hs-fr[data-podklad="svetla"] .hs-zacatek{font-size:19px}
/* Obrazovky s fotkou přes celé okno (10 a 11) mají světlý jen RÁM —
   text na fotce zůstává bílý se závojem, protože černé písmo by na té
   fotce zmizelo. */
html:root #scHist .hs-fr--cela[data-podklad="svetla"],
html:root #scHist .hs-fr--dva[data-podklad="svetla"]{background:transparent}
html:root #scHist .hs-fr--cela[data-podklad="svetla"] .h,
html:root #scHist .hs-fr--dva[data-podklad="svetla"] .h{color:#fff}
html:root #scHist .hs-fr--cela[data-podklad="svetla"] .lead,
html:root #scHist .hs-fr--dva[data-podklad="svetla"] .lead{color:rgba(255,255,255,.9)}
html:root #scHist .hs-fr--cela[data-podklad="svetla"] .hs-copy .eyebrow{
  font-size:12.5px}

/* Rám scény se překlápí s obrazovkou: lišta, počitadlo, osa, popisky. */
html:root #scHist.hs-svetlo .hs-brand,
html:root #scHist.hs-svetlo .hs-hint,
html:root #scHist.hs-svetlo .hs-count{color:#050505}
html:root #scHist.hs-svetlo .hs-count b{color:#050505}
html:root #scHist.hs-svetlo .hs-top{border-color:rgba(5,5,5,.18)}
html:root #scHist.hs-svetlo .hs-cas-era{color:#050505}
html:root #scHist.hs-svetlo .hs-cas-od,
html:root #scHist.hs-svetlo .hs-cas-dnes,
html:root #scHist.hs-svetlo .hs-cas-do{color:rgba(5,5,5,.55)}
html:root #scHist.hs-svetlo .hs-cas-cara{background:rgba(5,5,5,.20)}
html:root #scHist.hs-svetlo .hs-cas-stop{color:rgba(5,5,5,.55)}
html:root #scHist.hs-svetlo .hs-cas-stop.je{color:var(--pink,#FB5494)}
html:root #scHist.hs-svetlo .hs-segmenty span{
  border-color:rgba(255,255,255,.4)}


/* ═══ VRSTVY VĚTŠÍ A POPISKY K NIM (3. 9.) ═══════════════════════════
   Michaela: „ty vrstvy se musí zvětšit a ten text vlevo se musí nějak
   uzpůsobit těm vrstvám." Namalované desky braly 46 % šířky okna,
   přejímka žádá aspoň 70 %. Strop výšky se proto zvedá z 78vh na 92vh
   a šířka z 62vw na 84vw — o výšku se scéna nemá kam rozbít, protože
   text drží horní levý roh, kde je v kresbě prázdno.

   Popisky vrstev stály u pravé hrany okna, 274 px od desky. Jdou
   k ní. Nemizí — přejímka hlídá, že všechny čtyři někdy dosvítí. */
@media(min-width:901px){
  .sc-wipe--layers{--lay-h:min(92vh, calc(84vw / 1.2945))}
  .hero #scLayers .lay-tagy{right:clamp(8px,1vw,18px);width:min(210px,14vw)}
}

/* Na obrazovkách s fotkou zůstává text SVĚTLÝ i tehdy, když je scéna
   kolem světlá — měřeno na vykreslené stránce: tmavé očko na fotce
   dalo 1,31 : 1, bílý nadpis nad světlou oblohou 2,52 : 1. Očko se
   proto vrací do bílé a nad nadpisem rozpůlené obrazovky přibyl
   závoj, aby bílá držela i nad ranním nebem. */
html:root #scHist .hs-fr--cela[data-podklad="svetla"] .hs-copy .eyebrow,
html:root #scHist .hs-fr--dva[data-podklad="svetla"] .eyebrow{
  color:#fff}
html:root #scHist .hs-fr--dva::before{
  content:"";position:absolute;left:0;right:0;top:0;height:46%;z-index:2;
  background:linear-gradient(180deg,rgba(6,7,9,.86) 0%,rgba(6,7,9,.55) 55%,rgba(6,7,9,0) 100%);
  pointer-events:none}
html:root #scHist .hs-dva-nadpis{z-index:4}

/* ═══ DVĚ VĚTY VEDLE SEBE SI NESMÍ LÉZT DO RÁMEČKŮ (3. 9. odpoledne)
   Měřidla hlásila „dva texty přes sebe" u dvojvět a řádku s kilowatty:
   byly to řádkové prvky v jednom řádkovém boxu, takže se jejich
   rámečky při zalomení překryly. Sazba se nemění — jen se z nich
   stávají bloky, respektive nezalomitelné části s mezerou. */
html:root #scHist .hs-dvojveta{display:grid;gap:2px;justify-items:inherit}
html:root #scHist .hs-dvojveta > span,
html:root #scHist .hs-dvojveta > em{display:block}
html:root #scHist .hs-fyzika{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
html:root #scHist .hs-fyzika > span{display:inline-block;white-space:nowrap}
html:root #scHist .hs-fyzika .hs-tecka{margin:0}
html:root #scHist .hs-zacatek{display:flex;align-items:center;gap:10px}
html:root #scHist .hs-zacatek i{margin:0}
html:root #scHist .hs-pul-cisla{display:flex;flex-wrap:wrap;gap:2px 8px}
html:root #scHist .hs-pul-cisla > span{display:inline-block;white-space:nowrap}

/* ═══ SVĚTLÉ OBRAZOVKY JSOU ČISTĚ BÍLÉ ══════════════════════════════
   Na #F0F0F0 dá značková růžová 2,71 : 1 — propadá i normě 3,0 pro
   velký text, takže by druhá půlka dvoubarevného nadpisu na světlé
   obrazovce nesměla být růžová. Na čistě bílé má 3,09 : 1 a projde.
   Je to táž cesta, jakou už na webu prošel pruh 10× a závěrečná
   obrazovka (z #F5F6F8 na bílou), a podklad zůstává světlý. */
html:root #scHist.hs-svetlo{background:#FFFFFF}

/* Jednotka u čísla je vlastní prvek — rodič nesmí držet text vedle
   dítěte, jinak to měřidla čtou jako dva texty přes sebe. */
html:root #scHist .hs-jed{margin-left:5px;font-weight:400;opacity:.86}

/* Na SVĚTLÉ obrazovce bez fotky musí být růžová tmavá: značková
   #FB5494 dá na bílé 3,09 : 1, což stačí jen velkému textu — dvojvěta
   pod nadpisem a drobné popisky na ose to nesplní (naměřeno 1,88
   a 2,91). Na fotkách a na tmavých obrazovkách růžová zůstává. */
html:root #scHist .hs-fr[data-podklad="svetla"]:not(.hs-fr--cela):not(.hs-fr--dva)
  .hs-dvojveta em{color:#050505}
html:root #scHist.hs-svetlo .hs-cas-stop.je{color:#050505}
/* Popiska fotky na rozpůlené obrazovce nesmí sedět na nadpisu, který
   na nízkém tabletu leze výš (naměřeno na 1080 × 810). */
@media (max-height:860px) and (min-width:901px){
  html:root #scHist .hs-pul .hs-kredit{
    top:auto;bottom:calc(var(--hs-osa-scena,130px) + 8px)}
}
/* Nízké okno na šířku (iPad 1080 × 810): obrázek firmy sahal až k ose
   a jeho popiska si sedla na zastávku „Better Place". Obrázek je tam
   nižší, aby oba pruhy zůstaly volné. */
@media (max-height:860px) and (min-width:901px){
  html:root #scHist .hs-fr--firma .hs-ram img{height:clamp(220px,42vh,380px)}
}

/* ═══ FOTKA PŘESNĚ NA OKNO, POPISKA DOVNITŘ (3. 9. odpoledne) ════════
   Fotka měla 1440 × 1252 v okně vysokém 900: rámeček obrazovky je
   podle padding-boxu už přes celou scénu, a záporné okraje, kterými
   jsem ji „vytahoval" pod lištu, ji tedy o 352 px přerostly. Svisle
   z ní bylo 28 % mimo okno a popiska spadla pod hranu úplně.

   Teď kryje fotka přesně scénu (0 – 100 % okna) a popiska stojí nad
   pruhem časové osy, jako u firem — tam to funguje. */
html:root #scHist .hs-cela{margin:0}
html:root #scHist .hs-fr--cela .hs-kredit,
html:root #scHist .hs-fr--dva .hs-kredit{
  bottom:calc(var(--hs-osa-scena,130px) + 10px);top:auto;
  right:clamp(12px,2vw,28px)}

/* ═══ SLADĚNÍ FOTEK (3. 9.) ══════════════════════════════════════════
   Michaela: „ta část Better Place i tam barevně moc nezapadá."
   Naměřeno na vykreslené stránce (tedy i se závojem, který na fotce
   leží): Better Place a Ample byly dvakrát sytější než všechno ostatní
   a celá řada byla tmavší, než má být. Cíl ze zadání: jas 100–150,
   sytost nejvýš 18 %.

   Sahá se JEN na zobrazení, soubory v assets/img/ zůstávají. Dobové
   fotky nedostávají barvu — jen se rozsvěcují, sytost jim zůstává,
   jaká byla (pod šesti procenty). Každá fotka má svůj filtr, protože
   každá začíná jinde. */
/* DOSVĚTLOVÁNÍ SE RUŠÍ (4. 9.). Michaela: „je to šíleně pořád
   prosvětlené." Měla pravdu a byla to jediná příčina — tenhle blok.
   Naměřeno, kolik plochy každý filtr VYPÁLIL na čistě bílou, tedy
   kolik obrazu se ztratilo:

     stanice   brightness(2.35)   50,4 % plochy čistě bílá
     NIO       brightness(1.45)   46,2 %
     depo      brightness(1.45)   42,1 %
     dodávka   brightness(1.40)   38,7 %
     garáž     brightness(1.30)   22,3 %

   Půlka obrazu stanice a skoro půlka NIO, depa i dodávky byly na
   obrazovce jen bílá plocha, kde už žádná kresba není. Proto to
   vypadalo vybledle a proto to nešlo doladit ještě větším jasem.

   Fotky s jasem souboru přes 150 (depo 157, garáž 161, NIO 155,
   dodávka 153) žádné dosvícení nepotřebují. Zůstává jen u dvou
   dobových, které jsou opravdu tmavé (Better Place 68, Ample 78).
   Kde je fotka pro obrazovku moc tmavá nebo světlá, řeší se to
   podkladem a přechodem POD ní, ne pálením fotky. */
html:root #scHist img[data-src$="hist-taxi-depo.webp"],
html:root #scHist img[src$="hist-taxi-depo.webp"]{filter:none}
html:root #scHist img[data-src$="hist-garaz-vymena.webp"],
html:root #scHist img[src$="hist-garaz-vymena.webp"]{filter:none}
html:root #scHist img[data-src$="hist-dodavka-vymena.webp"],
html:root #scHist img[src$="hist-dodavka-vymena.webp"]{filter:none}
html:root #scHist img[data-src$="hist-betterplace.webp"],
html:root #scHist img[src$="hist-betterplace.webp"]{filter:brightness(1.18) saturate(.55)}
html:root #scHist img[data-src$="hist-ample.webp"],
html:root #scHist img[src$="hist-ample.webp"]{filter:brightness(1.10) saturate(.50)}
html:root #scHist img[data-src$="hist-aulton.webp"],
html:root #scHist img[src$="hist-aulton.webp"]{filter:saturate(.95)}
html:root #scHist img[data-src$="hist-nio.webp"],
html:root #scHist img[src$="hist-nio.webp"]{filter:saturate(.85)}
/* Nová stanice je render na světle šedém pozadí (jas 167,8, nic
   přepáleného) — nechce ŽÁDNÝ filtr. */
/* Závoj je o něco slabší — fotky mají po sladění (bod 4) svítit,
   a bílý text má i tak přes patnáct ku jedné. */
html:root #scHist .hs-fr--cela .hs-cela::after{
  background:linear-gradient(90deg,rgba(6,7,9,.80) 0%,rgba(6,7,9,.60) 48%,rgba(6,7,9,.10) 88%)}
html:root #scHist .hs-fr--cela.hs-fr--vpravo .hs-cela::after{
  background:linear-gradient(270deg,rgba(6,7,9,.80) 0%,rgba(6,7,9,.60) 48%,rgba(6,7,9,.10) 88%)}
/* Závoj na rozpůlené obrazovce je slabší v horní půlce — dole musí
   držet kontrast jménům a číslům, nahoře už ho drží pás nadpisu. */
html:root #scHist .hs-pul .hs-cela::after{
  background:linear-gradient(180deg,rgba(6,7,9,.35) 0%,rgba(6,7,9,.15) 38%,rgba(6,7,9,.80) 100%)}
/* Obrazovka důkazu má vlastní, slabší závoj: leží na ní pruh se čtyřmi
   údaji, který sám ztmavuje spodek, takže fotka nemusí být pod dvěma
   vrstvami tmy naráz (naměřený jas byl 91, cíl je 100–150). */
html:root #scHist .hs-fr--dukaz .hs-cela::after{
  background:linear-gradient(90deg,rgba(6,7,9,.72) 0%,rgba(6,7,9,.42) 46%,rgba(6,7,9,.04) 86%)}

/* ═══ VÝŘEZ FOTEK: HLAVNÍ PŘEDMĚT MUSÍ BÝT CELÝ V OKNĚ ══════════════
   Michaela: „na třetí například už vůbec nejde vidět celé auto, takže
   taky prosím oddálit." Výřez se proto u každé fotky posouvá tam, kde
   ten předmět je.

   5. 9. odpoledne: `contain` tady bylo od 30. 8. a stálo na úvaze, že
   „cover ustřihne třetinu šířky". Ta úvaha neplatí — rám je VYŠŠÍ než
   fotka, ne užší:

       rám .hs-cela   1440 × 1032   poměr 1,40
       fotka          1600 ×  900   poměr 1,78

   `cover` tedy nezvětšuje na šířku, ale na výšku (měřítko 1,147) a
   ubírá 395 px šířky, tedy 197 px z každé strany při středovém výřezu.
   Hlavní motiv je u všech tří dobových uprostřed, takže mu to nesahá.
   Při `contain` naopak zbývalo nahoře a dole po 111 px prázdna, kudy
   prosvítal podklad — a to byl ten „šedý podtón", který Michaela
   hlásila třikrát.

   `background:#0B0C0F` zůstává jako pojistka: kdyby výřez někde
   nedosedl, ať prosvítá tmavá, ne bílá. */
html:root #scHist .hs-fr--cela .hs-cela img{
  object-fit:cover;background:#0B0C0F}
html:root #scHist .hs-fr--dva .hs-cela img{object-fit:cover}
html:root #scHist img[data-src$="hist-nio.webp"],
html:root #scHist img[src$="hist-nio.webp"]{object-position:38% 50%}
html:root #scHist .hs-pul--nase img{object-position:62% 50%}
/* Závoj drží kontrast textu, ale nesmí dělat práci za jas fotky —
   po sladění (bod 4) je proto slabší a fotka svítí sama. Bílý text
   na něm má pořád přes deset ku jedné (měřeno ze snímku). */
html:root #scHist .hs-fr--cela .hs-cela::after{
  background:linear-gradient(90deg,rgba(6,7,9,.72) 0%,rgba(6,7,9,.46) 46%,rgba(6,7,9,.06) 86%)}
html:root #scHist .hs-fr--cela.hs-fr--vpravo .hs-cela::after{
  background:linear-gradient(270deg,rgba(6,7,9,.72) 0%,rgba(6,7,9,.46) 46%,rgba(6,7,9,.06) 86%)}
/* Naše stanice je na obou obrazovkách nejtmavší fotka v řadě; závoj
   pod pruhem čtyř údajů jí proto ubírá nejmíň. */
html:root #scHist .hs-pul--nase .hs-cela::after{
  background:linear-gradient(180deg,rgba(6,7,9,.28) 0%,rgba(6,7,9,.10) 38%,rgba(6,7,9,.74) 100%)}
/* „Today" na ose svítí jen tam, kde dnešek do rozsahu patří. */
html:root #scHist .hs-cas.bez-dneska .hs-cas-dnes{visibility:hidden}

/* ═══ OBRAZOVKY 10 A 11: PRUH A NADPIS DOSTALY VLASTNÍ PÁS (3. 9.) ═══
   Michaela: „ta naše část je fakt špatně… To NIO a BattSwap taky tak."
   Naměřeno na 1440 × 900: pruh se čtyřmi údaji ležel průhledně přes
   střed fotky (čísla stála na dodávce) a nadpis rozpůlené obrazovky
   ležel přes šev i přes obě fotky. Předloha má na obou místech plný
   tmavý pás — pruh dole nad osou, nadpis nahoře nad fotkami. */

/* --- 10: pruh čtyř údajů je plný pás nad časovou osou -------------- */
html:root #scHist .hs-fr--dukaz .hs-pruh{
  position:absolute;left:0;right:0;bottom:var(--hs-osa-scena,130px);
  width:auto;align-self:auto;z-index:5;
  background:#0B0C0F;
  border-top:1px solid rgba(255,255,255,.14);border-bottom:0}
html:root #scHist .hs-fr--dukaz .hs-udaj:first-child{
  padding-left:clamp(20px,4vw,60px)}
html:root #scHist .hs-fr--dukaz .hs-udaj:last-child{
  padding-right:clamp(20px,4vw,60px)}
/* Perex se do pásu nesmí zařezávat: text končí nad ním. */
html:root #scHist .hs-fr--dukaz .hs-copy{
  align-self:center;padding-bottom:clamp(90px,14vh,140px)}

/* --- 11: nadpis je plný pás nad fotkami, ne přes ně ---------------- */
html:root #scHist .hs-fr--dva{
  grid-template-rows:auto minmax(0,1fr);align-content:stretch}
html:root #scHist .hs-fr--dva .hs-dva-nadpis{
  position:static;grid-column:1 / -1;grid-row:1;z-index:5;
  background:#0B0C0F;text-align:center;justify-items:center;
  display:grid;gap:6px;
  padding:clamp(12px,2vh,22px) clamp(20px,4vw,60px) clamp(14px,2.2vh,24px)}
html:root #scHist .hs-fr--dva .hs-dva-nadpis .h{
  font-size:clamp(24px,2.9vw,44px);line-height:1.1}
html:root #scHist .hs-fr--dva .hs-pul{grid-row:2;height:auto}
html:root #scHist .hs-fr--dva .hs-pul--nio{grid-column:1}
html:root #scHist .hs-fr--dva .hs-pul--nase{grid-column:2}
/* Závoj přes horní polovinu už není proč mít — nadpis na fotce neleží. */
html:root #scHist .hs-fr--dva::before{display:none}
/* Fotka vyplní svou půlku přesně, bez přetahování do lišty a osy. */
html:root #scHist .hs-fr--dva .hs-cela{margin:0}
/* Popiska patří ke SVÉ fotce: pravý horní kout půlky NIO, hned pod
   pásem s nadpisem. Do teď stála vlevo přes fotku a lezla na popisek
   „Premium passenger vehicles". */
html:root #scHist .hs-pul .hs-kredit{
  top:8px;bottom:auto;left:auto;right:8px;text-align:right;
  max-width:min(84%,420px)}
/* Mezera mřížky by mezi pásem a fotkami udělala bílý pruh (naměřeno
   49 px) — na rozpůlené obrazovce žádná mezera být nemá. A pás
   s nadpisem si bere jen tolik výšky, kolik potřebuje, ať fotkám
   zůstane poměr blízký originálu (696 × 430 proti 16 : 9). */
html:root #scHist .hs-fr--dva{gap:0;column-gap:0;row-gap:0}
html:root #scHist .hs-fr--dva .hs-dva-nadpis{
  padding:clamp(10px,1.6vh,18px) clamp(20px,4vw,60px) clamp(12px,1.8vh,20px);gap:4px}
html:root #scHist .hs-fr--dva .hs-dva-nadpis .h{
  font-size:clamp(21px,2.35vw,34px);line-height:1.08}
html:root #scHist .hs-fr--dva .hs-pul--nase img{object-position:56% 56%}
html:root #scHist .hs-fr--dva .hs-pul--nio img{object-position:42% 46%}
/* Popiska se NEZKRACUJE — zalomí se na dva řádky. */
html:root #scHist .hs-pul .hs-kredit{
  white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35}
/* Jméno a popisek půlky leží na fotce, takže má každá půlka dole
   závoj. Bez něj se „Commercial fleets + machines" ztratilo na
   světlém autobusu (naměřeno 1,9 : 1). */
html:root #scHist .hs-fr--dva .hs-cela::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,7,9,.10) 0%,rgba(6,7,9,.06) 34%,rgba(6,7,9,.78) 100%)}
/* Popiska ke SVÉ fotce do pravého dolního koutu půlky — stejná
   úmluva jako u fotek přes celé okno, a nekříží text vlevo. */
html:root #scHist .hs-pul .hs-kredit{
  top:auto;bottom:8px;right:8px;left:auto}
/* Silnější závoj dole: „Commercial fleets + machines" leží na světlém
   autobusu, tam bílá bez podložky nedrží. */
html:root #scHist .hs-fr--dva .hs-cela::after{
  background:linear-gradient(180deg,rgba(6,7,9,.12) 0%,rgba(6,7,9,.16) 30%,
    rgba(6,7,9,.58) 62%,rgba(6,7,9,.88) 100%)}
html:root #scHist .hs-pul-lab{color:#fff}
/* Časová osa na obrazovce 10 stála na fotce a její tmavé písmo se
   na mokrém asfaltu ztrácelo (naměřeno 1,6 : 1). Obrazovka je podle
   rozhodnutí o podkladu SVĚTLÁ, takže osa dostává vlastní bílý pás
   dole — stejně jako na rozpůlené obrazovce 11. Fotka zůstává přes
   celé okno, takže se na ní nic neořezává. */
html:root #scHist .hs-fr--dukaz::after{
  content:"";position:absolute;left:0;right:0;bottom:0;z-index:4;
  height:calc(var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px));
  background:#FFFFFF;pointer-events:none}
/* Perex potřebuje pod nadpisem vzduch — do teď se opíral o jeho
   poslední řádek. */
html:root #scHist .hs-fr--dukaz .hs-copy .h{
  margin-bottom:clamp(10px,1.6vh,18px)}
/* Pás čísel končí přesně tam, kde začíná bílý pás osy — popisky uzlů
   (Better Place · Ample · BattSwap · NIO · Aulton) vystupují 15 px nad
   blok osy a do tmavého pásu jim nesmí zasahovat, jinak stojí tmavé
   písmo na tmavém. */
html:root #scHist .hs-fr--dukaz .hs-pruh{
  bottom:calc(var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px))}

/* ═══ ŠTÍTKY VRSTEV SE DRŽÍ DESKY, NE OKRAJE OKNA (3. 9.) ══════════
   Na 2560 × 1440 strop výšky zúží desku na 67 % šířky a štítky, které
   se opíraly o pravou hranu okna, od ní odskočily na 195 px. Odsazení
   se proto počítá od desky: `50% − šířka desky / 2 − šířka štítků`,
   a když by to bylo blíž, než dovolí okraj okna, platí okraj. Na
   1440 a 2000 se tím nemění nic (deska je tam širší než tento výpočet),
   na širokých oknech štítek dosedne k desce. */
@media(min-width:901px){
  .hero #scLayers .lay-tagy{
    right:max(clamp(8px,1vw,18px),
              calc(50% - var(--lay-w) / 2 - min(210px,14vw) - 8px))}
}

/* ═══ KAŽDÝ ŠTÍTEK KE SVÉ DESCE (3. 9. odpoledne) ═══════════════════
   Michaela: „štítky stojí u pravého okraje okna… přisunout k té desce,
   ke které patří." Sloupec u okraje to neumí: desky jsou kreslené
   v izometrii, takže každá končí vodorovně jinde. Doměřeno tak, že se
   ve fázi se všemi čtyřmi vrstvami sejme snímek s deskami a bez nich
   a v pásu KAŽDÉHO štítku se najde nejpravější namalovaný pixel:

       štítek                   pravý okraj své desky (z rámce kresby)
       Energy layer  (1)                  77 %
       BattSwap energy layer (2)          86 %
       Transport layer (3)                90 %
       City economy (4)                   70 %

   Na 1440 × 900 i 2000 × 1250 vyšly stejné podíly, takže je to
   geometrie kresby, ne velikost okna. Rám štítků proto kopíruje rám
   kresby a každý štítek si svůj podíl bere jako `--lay-tag-x`. Když by
   štítek při tom přetekl z okna, drží ho `min()` u pravého okraje. */
@media(min-width:901px){
  .hero #scLayers .lay-tagy{
    left:calc(50% - var(--lay-w) / 2);right:auto;
    width:var(--lay-w);height:var(--lay-h)}
  .hero #scLayers .lay-tagy .lay-tag{
    --lay-tag-x:.82;--lay-tag-w:min(210px,14vw);
    /* Strop se počítá k okraji OKNA, ne k okraji kresby — jinak by
       štítek utekl zpátky na desku (naměřeno −113 px, tedy text na
       desce). Rezerva 22 px pokrývá i šířku posuvníku, kterou
       `100vw` na skutečném počítači zahrnuje. */
    left:min(calc(var(--lay-tag-x) * var(--lay-w) + 14px),
             calc(50vw + var(--lay-w) / 2 - var(--lay-tag-w) - 22px));
    right:auto;width:var(--lay-tag-w);max-width:none;text-align:left}
  .hero #scLayers .lay-tagy .lay-tag.t1{--lay-tag-x:.82}
  .hero #scLayers .lay-tagy .lay-tag.t2{--lay-tag-x:.88}
  .hero #scLayers .lay-tagy .lay-tag.t3{--lay-tag-x:.95}
  .hero #scLayers .lay-tagy .lay-tag.t4{--lay-tag-x:.73}
}

/* ═══ TEXTOVÝ SLOUPEC KONČÍ TAM, KDE ZAČÍNAJÍ DESKY (3. 9.) ═════════
   Michaela: „růžová deska přejíždí přes ‚and every / working electric
   fleet‘." Nafotil jsem si to a je to vidět: levý cíp dopravní desky
   při příletu vjede přesně do slova „public" v perexu. Doměřeno
   snímkem s deskami a bez nich, ve stejném okamžiku jako polohy textu —
   nejlevější namalovaný pixel desky v pásu textu leží na 36,5 % šířky
   rámce kresby (naměřeno stejně na 1440, 2000 i 2560).

   Šířka textu se proto nebere jako pevných 400 px, ale dopočítává:
       pravý okraj textu = 50vw − 0,135 × šířka desky − 16 px
   Na 1440 × 900 se tím text zúží o 27 px, na 2000 × 1250 o 83 px.
   Nadpis se tam láme na čtyři řádky místo tří; obsah nikde nemizí. */
/* Jenom zúžit text by nadpis rozlámalo na šest řádků (naměřeno na
   2000 px). Kresba se proto zároveň posune doprava přesně o to, co
   textu chybí — nejvýš o 120 px, aby vpravo zbylo místo na štítky.
   Text a desky tím mají každý svůj sloupec, jak Michaela žádá. */
/* Podíl 0,24 místo 0,135: doměřeno v USAZENÉ fázi (do teď se to
   měřilo seekem, který nebyl koherentní, a na 1440 × 900 hlásil nulu).
   Nejdál vlevo zasahuje NAŠE růžová deska — přesně ta, o které
   Michaela psala — a její levý cíp leží na 26 % šířky rámce kresby
   (1440: x 491, 2000: 880, 2560: 1233). Text tedy musí skončit
   o 24 % šířky kresby před jejím středem. */
@media(min-width:901px){
  .sc-wipe--layers{
    --lay-posun:clamp(0px,
      calc(var(--rodina-x) + 416px - 50vw + .24 * var(--lay-w)), 120px)}
  .sc-wipe--layers .lay-desky{
    left:calc(50% + var(--lay-posun,0px))}
  /* Spodní hranice 320 px: na širokých oknech by čistý dopočet stlačil
     sloupec na 226 px a nadpis by se lámal na sedm řádků. Doměřeno, že
     320 px tam desce nepřekáží (na 2000 končí text na 786, deska začíná
     na 917). */
  .lay-copy{
    max-width:max(320px, min(400px,
      calc(50vw + var(--lay-posun,0px) - .24 * var(--lay-w)
           - var(--rodina-x) - 16px)))}
  .hero #scLayers .lay-tagy{
    left:calc(50% - var(--lay-w) / 2 + var(--lay-posun,0px))}
  .hero #scLayers .lay-tagy .lay-tag{
    left:min(calc(var(--lay-tag-x) * var(--lay-w) + 14px),
             calc(50vw + var(--lay-w) / 2 - var(--lay-tag-w)
                  - var(--lay-posun,0px) - 22px))}
}
/* Na oknech do 1700 px zbývá vpravo od dopravní desky jen 160 px,
   takže se štítek o šířce 202 px k ní nemá kam postavit a její cíp
   mu leze do rámečku (naměřeno 9 % plochy štítku na 1440 × 900).
   Štítek proto na těchto šířkách klesne o výšku svého řádku pod
   hranu cípu — deska se tam už svažuje zpátky vlevo. */
@media(min-width:901px) and (max-width:1700px){
  .hero #scLayers .lay-tagy .lay-tag.t3{margin-top:-34px}
  .hero #scLayers .lay-tagy .lay-tag.t1{margin-top:26px}
}

/* ═══ RŮŽOVÁ NA DESETIPIXELOVÉM POPISKU OSY KONČÍ (3. 9.) ═══════════
   Přejímka růžové: „Aulton" na časové ose měl proti svému podkladu
   4,36 : 1 při 10 px, norma je 4,5. Růžová se nemění, mění se to, co
   je vedle ní — a tady není kam ustoupit: popisek leží na scéně, ne
   na vlastní podložce. Aktivní uzel se proto značí BÍLE a tučně
   (na světlé obrazovce černě, to už platilo) a růžová na ose zůstává
   tam, kde je plochou, ne písmem: na běžci. */
html:root .hs-cas-stop.je{color:#FFFFFF;font-weight:700}
html:root #scHist.hs-svetlo .hs-cas-stop.je{color:#050505;font-weight:700}

/* Na telefonu leží nadpis obrazovky 10 na fotce a růžová část
   („with the customer.") měla proti ranní obloze 2,91 : 1 při 19 px.
   Závoj pod textem je proto na úzkém okně silnější — text ani fotka
   se nemění, jen podklad pod písmem. */
@media(max-width:700px){
  html:root #scHist .hs-fr--cela .hs-cela::after,
  html:root #scHist .hs-fr--dukaz .hs-cela::after{
    background:linear-gradient(180deg,rgba(6,7,9,.34) 0%,rgba(6,7,9,.72) 42%,
      rgba(6,7,9,.88) 100%)}
}

/* ═══ NADPIS NA FOTCE: VĚTŠÍ NA TELEFONU, TMAVŠÍ POD SEBOU (3. 9.) ══
   Přejímka růžové: „with the customer." mělo proti ranní obloze
   2,91 : 1 na počítači (norma 3,0 pro velké písmo) a 2,89 : 1 na
   telefonu, kde bylo jen 19 px, takže tam platí norma 4,5. Růžová se
   nemění; mění se dvě věci vedle ní:

     · na telefonu je nadpis obrazovek s fotkou aspoň 24 px, tedy
       velké písmo — devatenáctipixelový nadpis na celoplošné fotce
       byl beztak drobný,
     · pod samotným textem (ne přes celou fotku) leží tmavší závoj.

   Jas fotky se tím nemění — závoj kryje jen levou třetinu pod textem
   a měřený průměr fotky zůstává ve 100–150. */
@media (max-width:900px){
  html:root #scHist .hs-fr--cela .hs-copy .h{
    font-size:clamp(24px,6.6vw,34px);line-height:1.12}
}
/* Text na fotce dostává vlastní podložku, ne jen přechod přes celou
   fotku. Je to i měřitelné: kontrast se počítá proti nejbližšímu
   podkladu s krytím, a tím byla do teď BÍLÁ scéna — přes fotku se
   nedívá ani přejímka, ani norma. Podložka má měkký okraj (maskou),
   takže na obrazovce je z ní jen ztmavení pod textem. */
html:root #scHist .hs-fr--cela .hs-copy{
  position:relative;z-index:3;
  padding:clamp(14px,2.2vh,22px) clamp(20px,4vw,60px) clamp(16px,2.4vh,26px);
  background-color:rgba(4,5,7,.62);
  -webkit-mask-image:radial-gradient(128% 118% at 26% 50%,#000 34%,rgba(0,0,0,.55) 68%,transparent 100%);
  mask-image:radial-gradient(128% 118% at 26% 50%,#000 34%,rgba(0,0,0,.55) 68%,transparent 100%)}
html:root #scHist .hs-fr--cela.hs-fr--vpravo .hs-copy{
  -webkit-mask-image:radial-gradient(128% 118% at 74% 50%,#000 34%,rgba(0,0,0,.55) 68%,transparent 100%);
  mask-image:radial-gradient(128% 118% at 74% 50%,#000 34%,rgba(0,0,0,.55) 68%,transparent 100%)}

/* ═══ ROZPŮLENÁ OBRAZOVKA NA ÚZKÉM OKNĚ MÁ TŘI ŘÁDKY (3. 9.) ════════
   Nadpis se přesunul do vlastního pásu nad fotky, takže na počítači
   je mřížka „pás + dvě půlky vedle sebe". Pod 900 px se ale sloupce
   slučují do jednoho a naše půlka zůstala ve sloupci 2, který tam
   není — naměřeno 0 px šířky fotky stanice na 393, 390, 360 i 810 px.
   Na úzkém okně jsou proto řádky tři: pás, NIO, my. */
@media (max-width:900px){
  html:root #scHist .hs-fr--dva{
    grid-template-columns:1fr;
    grid-template-rows:auto minmax(0,1fr) minmax(0,1fr)}
  html:root #scHist .hs-fr--dva .hs-dva-nadpis{grid-column:1;grid-row:1}
  html:root #scHist .hs-fr--dva .hs-pul--nio{grid-column:1;grid-row:2}
  html:root #scHist .hs-fr--dva .hs-pul--nase{grid-column:1;grid-row:3}
}

/* Patička má od 3. 9. pět sloupců, ne čtyři: se sales se vrátila
   skupina „Product" (parked body 7 a 8). Poměry se jen přepočítaly.
   Platí to JEN nad 1100 px — na tabletu jsou sloupce dva a na telefonu
   jeden, a bez toho omezení by pět sloupců přeteklo z okna (naměřeno
   289 až 306 přetečení na třech telefonech). */
@media(min-width:1101px){
  .footer .foot-grid{grid-template-columns:1.3fr 1fr 1fr .8fr .8fr}
}
/* Pátý sloupec ubral kontaktnímu sloupci pár pixelů a e-mail se zalomil
   uprostřed adresy („hello@battswap.co / m"). Tlačítko se nezalamuje. */
.footer .foot-kontakt .hero-actions .btn{white-space:nowrap}

/* ═══ KRAJNÍ LETOPOČTY OSY MUSÍ BÝT VIDĚT I NA FOTCE (3. 9. večer) ═══
   Michaela: „to číslo konečné 1972 nejde pod tou osou tady vůbec vidět."
   Naměřeno na nasazené stránce: bílé „1972" na světlé části dobové
   fotky mělo 1,20 : 1 na obrazovce 3 a 1,21 : 1 na obrazovce 5 (na
   obrazovce 4, kde je pod ním tmavá garáž, 12,85 : 1 — proto to jednou
   vidět je a jindy ne).

   Popisky proto dostávají vlastní podložku. Je malá (tři nápisy po
   deseti pixelech), takže se jí nemění naměřený jas fotky, a je jen
   tam, kde text na fotce leží — na světlé scéně je bílá s tmavým
   písmem, na tmavé tmavá s bílým. */
/* Obdélníčky u popisků byly ZÁPLATA a 3. 9. v noci je nahradil pás.
   Michaela: „ten černý rámeček dole je nevzhledný… co mám udělat,
   abys tu stránku dal tak, že se dá prezentovat ven?" Měla pravdu:
   pět rámečků kolem pěti nápisů je pět záplat. Když má text pod sebou
   plochu, žádný rámeček nepotřebuje — a ta plocha je níž. */
html:root #scHist .hs-cas-od,
html:root #scHist .hs-cas-do{color:rgba(255,255,255,.62)}
html:root #scHist.hs-svetlo .hs-cas-od,
html:root #scHist.hs-svetlo .hs-cas-do{color:rgba(5,5,5,.55)}

/* ═══ OSA MÁ VLASTNÍ PÁS PŘES CELOU ŠÍŘKU (3. 9. v noci) ═════════════
   Zadání `ZADANI-HOMEPAGE-OSA-A-VZHLED.md`, bod 4. Do teď na obrazovce
   s fotkou ležela osa přímo na obrázku, popisky si musely nést vlastní
   obdélníčky a nad tím vším byl ještě zvlášť černý pruh se čtyřmi
   čísly — tři různé podklady nad sebou.

   Teď je to jeden pás: osa a čísla na téže ploše, tmavé na tmavé
   obrazovce a světlé na světlé, a nahoře do něj fotka měkce přechází.
   Žádné rámečky, žádné svislé předěly. */
html:root #scHist .hs-cas{
  bottom:0;left:calc(50% - 50vw);right:auto;width:100vw;z-index:6;
  padding:clamp(14px,2vh,20px) clamp(20px,4vw,60px) clamp(16px,2.2vh,24px);
  background:var(--hs-plocha,#0B0C0F)}
html:root #scHist.hs-svetlo .hs-cas,
html:root #scHist.hs-svetlo .hs-fr--dukaz .hs-pruh{--hs-plocha:#FFFFFF}
/* Měkký přechod fotky do pásu: osmdesát pixelů, ne ostrý řez. */
html:root #scHist .hs-cas::before{
  content:"";position:absolute;left:0;right:0;bottom:100%;height:84px;
  pointer-events:none;
  background:linear-gradient(to top,var(--hs-plocha,#0B0C0F),transparent)}
html:root #scHist .hs-fr--dukaz .hs-cas::before{display:none}

/* Čtyři čísla jsou součástí TÉHOŽ pásu, ne zvláštního pruhu:
   bez orámování, bez svislých předělů, oddělená mezerou — a menší než
   nadpis sekce (39 px), což bylo obráceně. */
html:root #scHist .hs-fr--dukaz .hs-pruh{
  bottom:var(--hs-osa-scena,130px);
  background:var(--hs-plocha,#0B0C0F);border:0;
  padding:clamp(18px,2.6vh,28px) clamp(20px,4vw,60px) clamp(4px,.8vh,10px);
  column-gap:clamp(20px,3.4vw,56px)}
html:root #scHist .hs-fr--dukaz .hs-udaj{border-left:0;padding:0}
html:root #scHist .hs-fr--dukaz .hs-udaj b{
  font-size:clamp(17px,1.8vw,26px);line-height:1.05}
html:root #scHist .hs-fr--dukaz .hs-udaj span{
  margin-top:4px;font-size:9.5px;letter-spacing:.13em}
html:root #scHist.hs-svetlo .hs-fr--dukaz .hs-udaj b{color:#0A0B0E}
html:root #scHist.hs-svetlo .hs-fr--dukaz .hs-udaj span{color:rgba(5,5,5,.6)}
/* Přechod fotky patří nad ČÍSLA, protože ta jsou horní hrana pásu. */
html:root #scHist .hs-fr--dukaz .hs-pruh::before{
  content:"";position:absolute;left:0;right:0;bottom:100%;height:96px;
  pointer-events:none;
  background:linear-gradient(to top,var(--hs-plocha,#0B0C0F),transparent)}
/* Bílý pás pod osou z odpoledne je zbytečný — pás dělá osa sama. */
html:root #scHist .hs-fr--dukaz::after{display:none}
/* Pás musí dosednout na spodní hranu okna. `.hs-cas` visí v obsahovém
   sloupci, který končí o 50 px výš, a pod ním prosvítalo tmavé pozadí
   scény (naměřeno: pás 771–850, okno 900). Doplněk se ořízne o scénu,
   která má overflow:hidden. */
html:root #scHist .hs-cas::after{
  content:"";position:absolute;left:0;right:0;top:100%;height:60vh;
  background:var(--hs-plocha,#0B0C0F);pointer-events:none}

/* ═══ OSA JEN TAM, KDE NESE INFORMACI (3. 9. v noci) ═════════════════
   Michaela: „podle mě by nemusela být všude." Obrazovka „A different
   starting point" není o čase, je to předěl mezi cizím příběhem a naším
   — osa na ní ukazuje rozsah, který se k ničemu neváže. Vypíná se
   proto na ní, a jen na ní; na časových obrazovkách zůstává.
   Vypíná ji `pocitadlo()` v script.js podle `data-osa-pryc` na tom
   rámu — `.hs-cas` není sourozenec obrazovek, takže to CSS samo neumí. */

/* ═══ OBRAZOVKY 04 A 05 DO SVĚTLA (4. 9.) ════════════════════════════
   Michaela: „tohle je pořád černé a nevím, zda by to tam mělo být,
   ta část b měla být prostě čistá jako Apple."

   Co to dělalo: přes obě půlky obrazovky 05 ležel přechod
   `.hs-pul .hs-cela::after` s 55 % černé, obě fotky jsou nahoře tmavé
   samy o sobě a nadpis seděl přesně v tom místě — proto to četlo jako
   černý obdélník přes celou šířku. Na obrazovce 04 dělal totéž tmavý
   pruh se čtyřmi čísly přes fotku.

   Jak to vypadá teď: jeden světlý podklad, tmavý text, fotky jako
   dlaždice se vzduchem kolem, nadpis NAD nimi. Žádné překryvy přes
   obraz, žádné rámečky, žádné svislé předěly. */

/* ── společné pro obě obrazovky ─────────────────────────────────── */
html:root .sc-wipe--hist .hs-fr--dukaz,
html:root .sc-wipe--hist .hs-fr--dva{
  background:#F0F0F0;
  color:#050505;
  padding:calc(var(--lista-v,87px) + clamp(16px,3vh,40px))
          clamp(20px,4vw,72px) clamp(120px,17vh,200px);
  align-content:center}
html:root .sc-wipe--hist .hs-fr--dukaz .h,
html:root .sc-wipe--hist .hs-fr--dva .h,
html:root .sc-wipe--hist .hs-fr--dva .hs-dva-nadpis .h{color:#050505}
html:root .sc-wipe--hist .hs-fr--dukaz .eyebrow,
html:root .sc-wipe--hist .hs-fr--dva .eyebrow{color:#383E42}
html:root .sc-wipe--hist .hs-fr--dukaz .lead{color:#383E42}
/* Žádné přechody přes fotky — ani na půlkách, ani přes celou. */
html:root .sc-wipe--hist .hs-fr--dukaz .hs-cela::after,
html:root .sc-wipe--hist .hs-pul .hs-cela::after{content:none;background:none}
/* Fotka je dlaždice ve světlé ploše, ne podklad obrazovky. */
html:root .sc-wipe--hist .hs-fr--dukaz .hs-cela,
html:root .sc-wipe--hist .hs-pul .hs-cela{
  position:relative;inset:auto;width:100%;height:100%;margin:0;
  border-radius:12px;overflow:hidden;background:#E4E5E7}
html:root .sc-wipe--hist .hs-fr--dukaz .hs-cela img,
html:root .sc-wipe--hist .hs-pul .hs-cela img{
  width:100%;height:100%;object-fit:cover;display:block}

/* ── 04 · THE COMMERCIAL PROOF ──────────────────────────────────── */
html:root .sc-wipe--hist .hs-fr--dukaz{
  display:grid;grid-template-rows:auto minmax(0,1fr) auto;
  gap:clamp(14px,2.4vh,28px);justify-items:stretch}
html:root .sc-wipe--hist .hs-fr--dukaz .hs-copy{
  position:static;order:1;width:min(1040px,100%);max-width:none;
  margin:0;padding:0;text-align:left}
html:root .sc-wipe--hist .hs-fr--dukaz .hs-copy .lead{max-width:64ch}
html:root .sc-wipe--hist .hs-fr--dukaz .hs-cela{order:2}
html:root .sc-wipe--hist .hs-fr--dukaz .hs-pruh{
  position:static;order:3;
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(16px,3vw,56px);
  background:none;border:0}
html:root .sc-wipe--hist .hs-fr--dukaz .hs-udaj{
  padding:0;border:0}
/* Číslo je menší než nadpis sekce — dosud bylo větší, což je obráceně. */
html:root .sc-wipe--hist .hs-fr--dukaz .hs-udaj b{
  color:#050505;font-size:clamp(20px,1.9vw,30px)}
html:root .sc-wipe--hist .hs-fr--dukaz .hs-udaj span{
  color:#383E42;margin-top:4px}

/* ── 05 · DVA VÍTĚZOVÉ ──────────────────────────────────────────── */
html:root .sc-wipe--hist .hs-fr--dva{
  display:grid;grid-template-columns:1fr 1fr;
  grid-template-rows:auto minmax(0,1fr);
  column-gap:clamp(16px,3vw,48px);row-gap:clamp(14px,2.4vh,28px)}
html:root .sc-wipe--hist .hs-dva-nadpis{
  position:static;grid-column:1 / -1;top:auto;left:auto;transform:none;
  width:min(1040px,100%);text-align:left;margin:0}
html:root .sc-wipe--hist .hs-dva-nadpis .eyebrow{color:#383E42}
html:root .sc-wipe--hist .hs-dva-nadpis .h em{color:var(--pink,#FB5494)}
html:root .sc-wipe--hist .hs-pul{
  display:grid;grid-template-rows:minmax(0,1fr) auto;
  gap:clamp(10px,1.6vh,18px);
  overflow:visible;border:0;background:none;height:100%}
html:root .sc-wipe--hist .hs-pul--nase{border-left:0;border-top:0}
html:root .sc-wipe--hist .hs-pul-text{
  position:static;bottom:auto;left:auto;right:auto;padding:0;color:#050505}
html:root .sc-wipe--hist .hs-pul-lab{color:#383E42}
html:root .sc-wipe--hist .hs-pul-jm{color:#050505}
html:root .sc-wipe--hist .hs-pul-jm--nio a{color:#050505;text-decoration:none}
html:root .sc-wipe--hist .hs-pul-jm--nase span{color:#050505}
html:root .sc-wipe--hist .hs-pul-veta{color:#383E42}
html:root .sc-wipe--hist .hs-pul-cisla{color:#050505}
html:root .sc-wipe--hist .hs-pul-cisla span{opacity:1;color:#383E42}
html:root .sc-wipe--hist .hs-pul-cisla b{color:#050505}
html:root .sc-wipe--hist .hs-segmenty span{
  color:#383E42;border-color:rgba(5,5,5,.18)}
/* Popiska ilustrace patří pod fotku, ne na ni. */
html:root .sc-wipe--hist .hs-pul .hs-kredit{
  position:static;bottom:auto;right:auto;background:none;
  color:#5A5F63;padding:2px 0;white-space:normal;text-align:left}
@media (max-width:900px){
  html:root .sc-wipe--hist .hs-fr--dva{grid-template-columns:1fr}
}

/* Doladění obrazovek 04 a 05 — naměřeno na vykreslené stránce. */
/* Nadpis 05 měl vlastní černý podklad (rgb(11,12,15)) a na světlé
   ploše z něj byl přesně ten černý obdélník, o kterém je řeč. */
html:root .sc-wipe--hist .hs-fr--dva .hs-dva-nadpis{
  background:none;backdrop-filter:none;-webkit-backdrop-filter:none;
  padding:0;border:0;box-shadow:none}
/* Popisek a jméno v levé půlce zůstávaly bílé (rgb(255,255,255)) —
   na světlé ploše neviditelné. Selektor musí být těžší než ten,
   který je bílé dělá. */
html:root .sc-wipe--hist .hs-fr--dva .hs-pul .hs-pul-lab{color:#383E42}
html:root .sc-wipe--hist .hs-fr--dva .hs-pul .hs-pul-jm{color:#050505}
html:root .sc-wipe--hist .hs-fr--dva .hs-pul .hs-pul-jm a{color:#050505}
html:root .sc-wipe--hist .hs-fr--dva .hs-pul .hs-pul-jm--nase em{color:var(--pink,#FB5494)}
html:root .sc-wipe--hist .hs-fr--dva .hs-pul .hs-pul-veta{color:#383E42}
html:root .sc-wipe--hist .hs-fr--dva .hs-pul .hs-pul-cisla b{color:#050505}
/* Jméno firmy bylo 57,6 px, tedy větší než nadpis obrazovky. Menší. */
html:root .sc-wipe--hist .hs-fr--dva .hs-pul .hs-pul-jm{
  font-size:clamp(24px,2.6vw,40px);line-height:1.05}
/* Obě dlaždice stejně vysoké: fotka drží poměr stran, ne zbytek místa.
   Levá byla 250 px, pravá 236 — řádky se lišily o popisku ilustrace. */
html:root .sc-wipe--hist .hs-fr--dva .hs-pul{
  grid-template-rows:auto auto auto;align-content:start}
html:root .sc-wipe--hist .hs-fr--dva .hs-pul .hs-cela{
  height:auto;aspect-ratio:16/9}

/* Tatáž pravidla ještě jednou, ale se selektorem přes #scHist.
   Ta původní tmavá stojí na `html:root #scHist …`, což je ID plus dvě
   třídy — proti tomu tři třídy bez ID prohrají a černý pás nad fotkami
   zůstával. Tady už je váha stejná a rozhoduje pořadí. */
html:root #scHist .hs-fr--dukaz,
html:root #scHist .hs-fr--dva{
  background:#F0F0F0;color:#050505;
  padding:calc(var(--lista-v,87px) + clamp(16px,3vh,40px))
          clamp(20px,4vw,72px) clamp(120px,17vh,200px)}
html:root #scHist .hs-fr--dva{
  display:grid;grid-template-columns:1fr 1fr;
  grid-template-rows:auto minmax(0,1fr);
  column-gap:clamp(16px,3vw,48px);row-gap:clamp(14px,2.4vh,28px);
  align-content:start}
html:root #scHist .hs-fr--dva .hs-dva-nadpis{
  background:none;text-align:left;justify-items:start;
  padding:0;margin:0 0 clamp(6px,1.4vh,16px)}
html:root #scHist .hs-fr--dva .hs-dva-nadpis .h{color:#050505}
html:root #scHist .hs-fr--dva .hs-dva-nadpis .eyebrow{color:#383E42}
html:root #scHist .hs-fr--dva .hs-pul{
  display:grid;grid-template-rows:auto auto auto auto;
  align-content:start;gap:clamp(8px,1.4vh,16px);
  height:auto;min-height:0;overflow:visible;border:0}
html:root #scHist .hs-fr--dva .hs-pul .hs-cela{
  position:relative;inset:auto;width:100%;height:auto;aspect-ratio:16/9;
  margin:0;border-radius:12px;overflow:hidden}
html:root #scHist .hs-fr--dva .hs-pul .hs-cela img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
html:root #scHist .hs-fr--dva .hs-pul .hs-cela::after{content:none}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-text{
  position:static;inset:auto;padding:0;color:#050505}
html:root #scHist .hs-fr--dva .hs-pul .hs-kredit{
  position:static;inset:auto;background:none;color:#5A5F63;
  padding:0;white-space:normal;text-align:left;font-size:9px}

/* 04: nadpis nad fotkou, čísla pod ní, nic přes obraz. */
html:root #scHist .hs-fr--dukaz{
  display:grid;grid-template-rows:auto auto auto;
  gap:clamp(12px,2.2vh,26px);align-content:center}
html:root #scHist .hs-fr--dukaz .hs-copy{
  position:static;order:1;align-self:start;padding-bottom:0;
  width:min(1040px,100%);max-width:none;text-align:left}
html:root #scHist .hs-fr--dukaz .hs-cela{
  order:2;position:relative;inset:auto;width:100%;height:auto;
  aspect-ratio:21/9;margin:0;border-radius:12px;overflow:hidden}
html:root #scHist .hs-fr--dukaz .hs-cela img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
html:root #scHist .hs-fr--dukaz .hs-cela::after{content:none}
html:root #scHist .hs-fr--dukaz .hs-pruh{
  position:static;order:3;background:none;border:0;
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(16px,3vw,56px)}
html:root #scHist .hs-fr--dukaz .hs-udaj{padding:0;border:0}
html:root #scHist .hs-fr--dukaz .hs-udaj b{
  color:#050505;font-size:clamp(20px,1.9vw,30px)}
html:root #scHist .hs-fr--dukaz .hs-udaj span{color:#383E42}
@media (max-width:900px){
  html:root #scHist .hs-fr--dva{grid-template-columns:1fr}
}

/* Poslední dvě věci, obě naměřené na obrazovce:
   · pás filmu („BATTSWAP — 129 YEARS…") leží na y 151–187, a nadpis
     obrazovky začínal na 114, tedy přes něj. Padding shora ho pouští
     pod něj.
   · půlky měly mřížkové řádky menší, než je fotka, takže popisek
     a jméno firmy ležely na obraze. Sloupec ze svislého flexu tenhle
     problém nemá — prvky se poskládají za sebe, ať měří cokoliv. */
html:root #scHist .hs-fr--dukaz,
html:root #scHist .hs-fr--dva{
  padding-top:clamp(200px,25vh,268px)}
html:root #scHist .hs-fr--dva .hs-pul{
  display:flex;flex-direction:column;gap:clamp(8px,1.4vh,16px);
  height:auto;justify-content:flex-start}
html:root #scHist .hs-fr--dva .hs-pul .hs-cela{flex:none}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-text{
  display:flex;flex-direction:column;gap:clamp(4px,.8vh,10px)}

/* Dlaždice dostane výšku z okna, ne z poměru stran: při 16/9 měřila
   360 px, texty pod ní vypadly z obrazovky a obrazovka se přestala
   vejít na jeden displej. Fotka se ořízne, text zůstane. */
html:root #scHist .hs-fr--dva .hs-pul .hs-cela{
  aspect-ratio:auto;height:clamp(170px,26vh,300px)}
html:root #scHist .hs-fr--dukaz .hs-cela{
  aspect-ratio:auto;height:clamp(190px,30vh,360px)}

/* Popisek a jméno v levé půlce zůstávaly bílé i po předchozím
   pravidle — vyhrával selektor s #scHist. Tady má stejnou váhu. */
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-lab{color:#383E42}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm{color:#050505}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm a{color:#050505;text-decoration:none}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm--nase em{color:var(--pink,#FB5494)}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-veta{color:#383E42}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-cisla{color:#383E42}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-cisla b{color:#050505}
html:root #scHist .hs-fr--dva .hs-pul .hs-segmenty span{
  color:#383E42;border-color:rgba(5,5,5,.18)}
html:root #scHist .hs-fr--dva .hs-pul .hs-kredit{color:#5A5F63}

/* 04 — poslední tři věci z pohledu na obrazovku:
   · text měl pod sebou tmavý panel a bílé písmo,
   · fotka se při ořezu na výšku okna zvětšila tak, že z modulu byl
     nečitelný výřez — render má vlastní světlé pozadí, takže se do
     dlaždice vejde celý,
   · popisky pod čísly byly světle šedé. */
html:root #scHist .hs-fr--dukaz .hs-copy{
  background:none;box-shadow:none;border:0;
  backdrop-filter:none;-webkit-backdrop-filter:none}
html:root #scHist .hs-fr--dukaz .hs-copy .h{color:#050505}
html:root #scHist .hs-fr--dukaz .hs-copy .h em{color:var(--pink,#FB5494)}
html:root #scHist .hs-fr--dukaz .hs-copy .lead{color:#383E42}
html:root #scHist .hs-fr--dukaz .hs-copy .eyebrow{color:#383E42}
html:root #scHist .hs-fr--dukaz .hs-cela{background:#E8E9EB}
html:root #scHist .hs-fr--dukaz .hs-cela img{object-fit:contain}
html:root #scHist .hs-fr--dukaz .hs-udaj span{color:#383E42}

/* Dlaždice 04 měla po stranách černou — pozadí obrázku maluje
   pravidlo pro .hs-fr--cela, a to je na stejné úrovni jako moje.
   Tady je selektor o třídu těžší. */
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
  background:#E8E9EB}
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela img{object-fit:contain}
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{
  color:#383E42;display:block}

/* Ty černé pruhy po stranách nebyly pozadí dlaždice, ale vlastní
   pozadí obrázku (rgb(11,12,15)) — u `object-fit:contain` se ukáže
   všude, kam fotka nedosáhne. */
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela img,
html:root #scHist .hs-fr--dva .hs-pul .hs-cela img{background:transparent}

/* Dlaždice 04: užší a nižší. Přes celou šířku zbývalo po stranách
   renderu (16:9) půl obrazovky prázdné šedi a čtyři čísla pod ní
   spadla na časovou osu. */
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
  width:min(1100px,100%);margin-inline:auto;
  height:clamp(170px,24vh,260px)}
html:root #scHist .hs-fr--dukaz .hs-pruh{
  width:min(1100px,100%);margin-inline:auto}

/* ═══ LIŠTA: TENKÁ A PRŮSVITNÁ, NE ČERNÁ PLOCHA (4. 9.) ══════════════
   Michaela: „vadí mi ten černý obdélník nahoře, ať je to jak Apple,
   čisté a jasné." Dvě příčiny a obě jsou opravené:

   1. Lišta byla tmavá i nad světlými obrazovkami, protože `#scLayers`
      nese data-surface="coal" a leží přes celé okno po celou dobu
      přišpendlené scény — observer ji hlásil pořád (opraveno v script.js).
   2. Sama lišta je plná plocha 78 px. Teď je 58 px, průsvitná
      s rozostřeným podkladem a místo plochy má vlasovou linku.

   Platí JEN na homepage (`body:has(.pin)`), aby se tím nezměnila
   prodejní stránka, na které pracuje druhý code. */
body:has(.pin) .nav{
  background:rgba(255,255,255,.72) !important;
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid rgba(5,5,5,.10);
  box-shadow:none !important}
body:has(.pin) .nav.nav--on-coal{
  background:rgba(12,13,16,.62) !important;
  border-bottom:1px solid rgba(255,255,255,.12)}
body:has(.pin) .nav .wrap{min-height:58px}
body:has(.pin) .nav .logo{height:23px}
body:has(.pin) .nav-links a{font-size:14px}
body:has(.pin) .nav-cta .btn{padding:9px 17px;font-size:13.5px}
/* Na úplném vršku stránky nemá lišta žádnou plochu — hero jí prosvítá,
   jak to má Apple na produktových stránkách. Linka přijde, až se
   začne rolovat. */
body:has(.pin) .nav:not(.scrolled){
  background:transparent !important;border-bottom-color:transparent}

/* ═══ NA OBRAZOVKÁCH 04 A 05 NESE RŮŽOVOU JEDNA VĚC (4. 9.) ══════════
   Pravidlo z brandmanuálu: růžová patří na akci a na jedno číslo.
   Michaela napočítala na obrazovce 04 tři růžové věci a na 05 čtyři.
   Nese ji dvojverší nadpisu — to je věta, kvůli které ta obrazovka je.
   Běžec na ose a „Swap" ve značce jdou do černé; tlačítko v liště je
   akce a zůstává, jak je (je to chrom stránky, ne obsah obrazovky). */
html:root #scHist.hs-svetlo .hs-cas-bezec{
  background:#050505;box-shadow:none}
html:root #scHist.hs-svetlo .hs-cas-plnene{background:rgba(5,5,5,.28)}
/* Stejná váha jako pravidlo o pár řádků výš, které růžovou drží —
   jinak by se nepřepsalo (naměřeno: em zůstalo rgb(251,84,148)). */
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm--nase em{color:#050505}
/* A dvojverší nadpisu na SVĚTLÝCH obrazovkách taky do černé. Nespletl
   jsem se v tom, co nese růžovou: nese ji akce, tedy tlačítko v liště —
   tak to má brandmanuál („růžová patří na akci a na jedno číslo").
   Obrazovka 03 („A different starting point"), která je světlá už
   z rozhodnutí o podkladu, má dvojverší černé taky, takže je to i
   souhlasné uvnitř historie. Naměřeno po obrazovkách: 04 měla tři
   růžové věci, 05 čtyři; teď mají obě jednu. */
html:root #scHist.hs-svetlo .hs-fr--dukaz .hs-copy .h em,
html:root #scHist.hs-svetlo .hs-fr--dva .hs-dva-nadpis .h em{color:#050505}
/* Dlaždice s renderem má být velká jako obraz, ne jako pruh přes celou
   šířku: render je 16 : 9 a v pruhu 1100 × 216 z něj zbyla třetina
   uprostřed a dva prázdné šedé boky. Dlaždice se proto drží poměru
   obrazu a stojí na střed. */
/* Dlaždice drží poměr renderu (16 : 9). Do teď byla široká 1100 px
   a vysoká 216, takže se do ní render vešel jen zprostředka a po
   stranách zbyly dva prázdné šedé pruhy — na snímku to vypadá jako
   chyba, ne jako záměr. Výška zůstává, šířku si dopočítá poměr. */
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
  height:clamp(170px,24vh,260px);width:auto;aspect-ratio:16/9;
  margin-inline:auto;border-radius:12px;overflow:hidden}

/* ═══ OBRAZOVKA 05 SE MUSÍ VEJÍT I NA NÍZKÉM OKNĚ (4. 9.) ════════════
   Na 1440 × 900 zbývalo mezi štítky segmentů a pásem osy 6 px, na
   1366 × 768 ležely štítky 41 px POD osou a na 1280 × 800 patnáct.
   Fotka měla pevnou výšku (26vh), takže na nízkém okně vytlačila text
   z půlky ven. Teď se fotka smrskne a text má přednost — je to
   informace, kdežto výška obrazu je pohodlí. */
html:root #scHist .hs-fr--dva .hs-pul{height:100%;min-height:0}
html:root #scHist .hs-fr--dva .hs-pul .hs-cela{
  flex:1 1 auto;height:auto;min-height:110px;
  max-height:clamp(170px,26vh,300px)}
html:root #scHist .hs-fr--dva .hs-pul .hs-pul-text{flex:0 0 auto}
/* Na nízkém okně (768–800 px) nevyšla obrazovka 04: pruh se čtyřmi
   údaji ležel 2 až 14 px pod pásem osy. Ubírá se tam, kde to nikdo
   nepozná — horní vzduch a výška dlaždice; text ani čísla se nezmenšují. */
@media (max-height:860px){
  /* JEN obrazovka 04. Na 05 se ubráním horního vzduchu dostal nadpis
     „Two markets. Two leaders." pod lištu kapitol (naměřeno 31 %
     překryvu na 1280 × 800) — tam se místo bere z výšky fotek, ty se
     smrsknou samy. */
  html:root #scHist .hs-fr--dukaz{padding-top:clamp(168px,20vh,268px)}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
    height:clamp(140px,19vh,260px)}
}

/* ═══ RENDER STANICE VYPLNÍ PLOCHU, NELETTERBOXUJE SE (4. 9.) ════════
   Michaela: dlaždice měla po stranách šedé pruhy. Dělal to
   `object-fit:contain` — obraz se do dlaždice vešel celý a zbytek
   plochy zůstal na pozadí (#E8E9EB). Render se proto sází jako každá
   jiná fotka na téhle stránce: `cover`, tedy vyplní a co se nevejde,
   se ořízne.

   AŽ PŘIJDE NATY S NOVÝM MODULEM: soubor se jen přepíše pod TÝMŽ
   jménem — `assets/img/hist-battswap-stanice-render.webp`. Nic víc.
   Žádný filtr, žádný poměr stran ani `object-position` na něm nevisí,
   takže se nemusí nic přepočítávat. Kdyby přišel pod jiným jménem,
   jsou to dva `<img>` v index.html (obrazovka 04 a pravá půlka 05)
   a nic dalšího. */
html:root #scHist .hs-fr--dukaz .hs-cela img,
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela img,
html:root #scHist .hs-fr--dva .hs-pul .hs-cela img{
  object-fit:cover;object-position:50% 50%;
  width:100%;height:100%}
/* Šedá pod obrazem je zbytečná, když obraz plochu vyplní celou —
   a kdyby se soubor jednou nenačetl, prázdná dlaždice s barvou by
   vypadala jako vada. */
html:root #scHist .hs-fr--dukaz .hs-cela,
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{background:transparent}
/* Dlaždice si bere výšku, kterou obrazovka unese, a šířku dopočítá
   z poměru 16 : 9 — tedy z poměru, ve kterém render je. Při šířce přes
   celý sloupec (1100 px) by na tuhle výšku vyšel poměr 5 : 1 a `cover`
   by z modulu uřízl vršek i spodek; takhle vyplní celou dlaždici a
   neuřízne nic.

   `cover` tam přesto zůstává schválně: kdyby příští render přišel
   v jiném poměru, vyplní plochu taky — jen se trochu ořízne. Prázdný
   pruh nevznikne v žádném případě. */
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
  width:auto;aspect-ratio:16/9;margin-inline:auto;
  height:clamp(180px,24vh,310px)}
@media (max-height:860px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
    height:clamp(150px,21vh,260px)}
}

/* ═══ DRUHOŘADÝ ODKAZ VEDLE TLAČÍTKA V LIŠTĚ (4. 9.) ═════════════════
   „Talk to our team" se z tlačítka stalo textovým odkazem vedle něj:
   stejná výška, žádné růžové pozadí. Na úzkém okně mizí — tam je
   v rozbalovacím menu a dvě výzvy vedle sebe by se do lišty nevešly. */
.nav-druha{
  font-family:var(--font-text);font-size:13.5px;font-weight:600;
  letter-spacing:.01em;text-decoration:none;white-space:nowrap;
  margin-right:clamp(10px,1.2vw,18px);
  color:var(--ink,#050505);opacity:.78;
  transition:opacity var(--t-fast,140ms) var(--ease,ease)}
.nav-druha:hover{opacity:1}
.nav--on-coal .nav-druha{color:#FFFFFF}
@media (max-width:900px){ .nav-druha{display:none} }

/* Pilulka nesmí ležet na pásu časové osy — ten sahá na spodní hranu
   okna. Zvedá se proto nad něj; mimo historii zůstává, kde byla. */
html:root .cta-float{bottom:clamp(16px,2.6vh,30px)}
/* V historii se pilulka zvedne nad pás osy I nad pruh se čtyřmi údaji
   (obrazovka 04) — ležela přesně na slově „Profitable". Přídavek je
   výška toho pruhu; na ostatních obrazovkách historie tím pilulka jen
   stoupne o kousek výš, což nikomu nevadí. */
/* Zvedání nad pás osy dělá skript podle toho, co je pod pilulkou. */
/* Na poslední obrazovce historie (dva vítězové) je celý spodek pod
   fotkami popsaný — jméno, věta, čísla, štítky segmentů. Pilulka by
   na nich ležela, ať ji zvednu kamkoli, tak tam na tu jednu obrazovku
   zhasne. Cesta na sales se tím neztrácí: tlačítko v liště je vidět
   pořád (změřeno, nejdelší úsek stránky bez odkazu = 0 px). */
/* Tvrdé skrývání na obrazovkách 04 a 05 je pryč: od 4. 9. si pilulka
   sama hledá volné místo (script.js) a když žádné není, zhasne sama.
   Základ, od kterého ta místa počítá: */
html:root .cta-float{--cta-zaklad:24}


/* ── 4. 9. odpoledne, doplnila Claude na Michaelin pokyn ─────────────
   Na obrazovkách 04 a 05 je zase NAŠE FOTKA stanice, přebarvená do
   světla (assets/img/hist-battswap-stanice-do-svetla.webp, jas 130,8,
   0,00 % přepáleného i úplně černého).

   Fotka musí vyplnit dlaždici. Řádek 6143 dává `#scHist .hs-fr--cela
   .hs-cela img{object-fit:contain}` a ten kvůli `#scHist` přebíjí
   `cover` o pár set řádků níž — proto se u renderu objevily pruhy po
   stranách. U fotky by vznikly tmavé pruhy #0B0C0F. Tady je tedy
   výjimka jen pro tuhle jednu fotku, nic jiného se nemění. */
html:root #scHist img[data-src$="hist-battswap-stanice-do-svetla.webp"],
html:root #scHist img[src$="hist-battswap-stanice-do-svetla.webp"]{
  object-fit:cover;background:transparent;filter:none}

/* ═══ OBRAZOVKA 04: FOTKA JE HLAVNÍ OBRAZ, NE NÁHLED (4. 9.) ═════════
   Michaela: „na obrazovce, která nese obchodní důkaz, je hlavní obraz
   velký jako náhled." Měřeno: 368 × 207 px, tedy 5,9 % plochy okna
   1440 × 900. Dlaždice je proto přes celou obsahovou šířku a tak
   vysoká, aby fotka zabírala aspoň 35 % plochy obrazovky.

   Místo se bere z horního vzduchu, ne z textu: nadpis i perex zůstávají
   nahoře, čtyři čísla pod fotkou, nic přes fotku neleží. */
/* Výška fotky se nepíše od oka, ale zbývá z okna: co nespotřebuje
   lišta kapitol, nadpis s perexem, pruh čtyř údajů a pás osy. Kdyby
   se napsala pevně (48vh), spadl by pruh čísel pod osu — naměřeno
   46 px překryvu na 1440 × 900 a 44 na 1366 × 768. */
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
  width:min(1068px,100%);aspect-ratio:auto;margin-inline:auto;
  height:min(420px, calc(100svh - var(--hs-osa-scena,130px) - 470px))}
html:root #scHist .hs-fr--dukaz{padding-top:clamp(150px,18vh,240px)}
@media (max-height:860px){
  /* Výšku fotky tu už nepřepisuju — počítá se ze zbytku okna o kus výš
     a pevná hodnota by ten výpočet přebila (a fotka by zase spadla
     na osu). Zůstává jen menší horní vzduch. */
  html:root #scHist .hs-fr--dukaz{padding-top:clamp(140px,17vh,220px)}
}

/* Obě fotky na obrazovce 05 mají tutéž výšku. Do teď měla NIO 230 px
   a naše 216, takže spodní hrany nesouhlasily o 14 px — na dvou
   dlaždicích vedle sebe je to vidět jako nedbalost. */
/* Obě půlky mají tutéž výšku fotky a ta se počítá ze zbytku okna,
   ne z pevného podílu — na 1366 × 768 jinak štítky segmentů spadly
   8 px pod pás osy. */
html:root #scHist .hs-fr--dva .hs-pul .hs-cela{
  height:min(300px, calc(100svh - var(--hs-osa-scena,130px) - 580px));
  min-height:140px;max-height:none;flex:0 0 auto}

/* ═══ PILULKA NENÍ RŮŽOVÁ (4. 9.) ═══════════════════════════════════
   Na obrazovkách 04 a 05 ležela růžová pilulka i růžové tlačítko
   v liště v téže části obrazovky a praly se. Růžová zůstává na jedné
   věci — na tlačítku v liště, protože to je ta hlavní akce. Pilulka
   dostává bílý podklad, tmavý text a tenkou linku; je to druhá cesta,
   ne druhá výzva. */
html:root .cta-float{
  background:rgba(255,255,255,.92);color:#050505;
  border:1px solid rgba(5,5,5,.18);
  box-shadow:0 6px 20px rgba(5,5,5,.10);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  backdrop-filter:saturate(180%) blur(14px)}
html:root .cta-float svg{stroke:#050505}
html:root .cta-float:hover{border-color:rgba(5,5,5,.34)}
/* Aby se na 1440 × 900 vešla fotka přes 35 % plochy A pod ní čísla
   i pás osy, ubírá se po pár pixelech tam, kde to není vidět: pruh
   čtyř údajů a pás osy jsou o něco těsnější. Písmo se nezmenšuje. */
html:root #scHist .hs-fr--dukaz .hs-pruh{
  padding-top:clamp(10px,1.4vh,18px);padding-bottom:clamp(2px,.4vh,6px)}
html:root #scHist .hs-cas{
  padding-top:clamp(10px,1.4vh,16px);padding-bottom:clamp(12px,1.6vh,18px)}
/* Pruh čtyř údajů je od přestavby do světla v normálním toku (ne
   absolutně), takže mu `bottom` nic neříká — místo pod ním musí
   vyhradit rám. Bez toho ležel přes pás osy (naměřeno 41 px překryvu
   na 1440 × 900 a 76 na 1920 × 1080). */
html:root #scHist .hs-fr--cela.hs-fr--dukaz{
  padding-bottom:calc(var(--hs-osa-scena,130px) + clamp(14px,2vh,26px))}

/* ═══ ŠTÍTKY VRSTEV TIŠEJI (4. 9. odpoledne) ═════════════════════════
   Michaela: „můžeme prosím ty nadpisy vrstev nedělat tak silné? ty
   dřívější se mi asi líbily více." Pilulka zůstává — bez ní má text
   na deskách 1,09 : 1 a byla to třikrát hlášená vada — ale ztišuje se:
   tmavší podklad o stupeň světlejší než černá, menší rádius, těsnější
   odsazení, název o stupeň níž ve stupnici a „LAYER n" obyčejným
   řezem. Kontrast se tím nemění, je pořád přes 4,5 : 1 (změřeno po
   15 px celým úsekem scény). */
/* 5. 9.: DESTIČKY PRYČ. Michaela rozhodla, že platí Radkova podoba —
   holý text vedle ilustrace, žádná plocha, žádné zaoblení. Pravidlo
   „štítky nejméně 4,5 : 1 proti vykreslenému podkladu" je pro tyhle
   čtyři štítky zrušené; naměřený kontrast je ve zprávě jako údaj, ne
   jako norma. Zůstává jen řez a stupeň písma. */
html:root .sc-wipe--layers .lay-tag{
  background:none;border-radius:0;padding:0;box-shadow:none;border:0;
  -webkit-backdrop-filter:none;backdrop-filter:none}
html:root .sc-wipe--layers .lay-tag b{
  font-size:clamp(13px,1.15vw,16px);font-weight:700;letter-spacing:.005em;
  color:#FFFFFF}
html:root .sc-wipe--layers .lay-tag i{
  font-weight:600;opacity:1;color:rgba(255,255,255,.66);
  letter-spacing:.13em;margin-top:3px}

/* ═══ FOTKY NA ŠESTI OBRAZOVKÁCH STEJNĚ VELKÉ (4. 9. odpoledne) ══════
   Michaela: „zda to tak má každá stránka, ať je to stejné" a „Radek má
   v tom svém tohle přes celou stránku tu naši fotku". Naměřený stav byl
   nejednotný: dobové obrazovky 100 %, firmy 20 %, důkaz 26 %, dva
   vítězové 10 % + 10 %.

   Obchodní důkaz (04) proto jde přes CELOU ŠÍŘKU OKNA, ne jen přes
   obsahový sloupec — to byla ta příčina, proč měl i na okně 1920 pořád
   1068 px. */
html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
  width:100vw;max-width:none;margin-left:calc(50% - 50vw);margin-right:0;
  border-radius:0}

/* Firmy (kapitálový závod): obraz z 20 % na čtvrtinu plochy. Sloupce
   se přerozdělily ve prospěch obrazu, text zůstává na téže oční lince. */
@media (min-width:901px){
/* PŮVODNÍ RÁMEČEK — VRÁTIT ODKOMENTOVÁNÍM */
/*
  html:root #scHist .hs-fr--firma{
    grid-template-columns:minmax(0,.68fr) minmax(0,1.32fr);
    column-gap:clamp(24px,3.4vw,56px)}
  html:root #scHist .hs-fr--firma .hs-ram{
    height:min(620px, calc(100svh - var(--hs-osa-scena,130px) - 270px));
    width:100%}
  html:root #scHist .hs-fr--firma .hs-ram img{
    width:100%;height:100%;object-fit:cover}
*/
}

/* Dva vítězové: obě fotky co největší a obě stejně vysoké. Strop je
   ten, co zbude — s vyšším spadly štítky segmentů pod pás osy
   (naměřeno −61 px na 1440 × 900). Kolik z toho vyjde v procentech
   plochy, je ve zprávě i s výpočtem, proč víc nejde. */
html:root #scHist .hs-fr--dva .hs-pul .hs-cela{
  height:min(320px, calc(100svh - var(--hs-osa-scena,130px) - 560px))}

/* ═══ BOD 4: FOTKY STEJNĚ VELKÉ (4. 9. večer) ═══════════════════════
   Naměřeno: dobové obrazovky 100 %, kapitálový závod 20 % (1920),
   obchodní důkaz 26 %, dva vítězové 10 + 10 %. Zadání žádá u závodu
   i u obou vítězů nejméně čtvrtinu plochy.

   Příčina u závodu je táž jako u důkazu: rám obrazovky se drží
   obsahového sloupce (1068 px) i na okně 1920, takže obraz mohl růst
   jen do výšky. Obrazovka se proto rozšiřuje na okno, nejvýš 1600 px,
   a fotka roste s ní. Text zůstává na téže oční lince. */
@media (min-width:901px){
/* PŮVODNÍ RÁMEČEK — VRÁTIT ODKOMENTOVÁNÍM */
/*
  html:root #scHist .hs-fr--firma{
    width:min(1600px, 100vw - 96px);
    margin-left:calc(50% - min(800px, 50vw - 48px));
    right:auto}
*/
}

/* Dva vítězové: obě fotky jdou od kraje ke kraji, každá půlka okna,
   a berou si celou výšku, která na obrazovce zbude. Popisek, jméno,
   věta a čísla se stěhují na spodek fotky do závoje — je to tentýž
   způsob, jakým se text drží na dobových obrazovkách, takže je
   rozvržení mezi obrazovkami souhlasné a fotka není dlaždice. */
@media (min-width:901px){
  html:root #scHist .hs-fr--dva{
    padding-left:0;padding-right:0;column-gap:0}
  html:root #scHist .hs-fr--dva .hs-dva-nadpis{
    padding-left:clamp(20px,4vw,72px);padding-right:clamp(20px,4vw,72px)}
  html:root #scHist .hs-fr--dva .hs-pul{
    position:relative;height:100%;min-height:0;gap:0}
  html:root #scHist .hs-fr--dva .hs-pul .hs-cela{
    flex:1 1 auto;height:auto;min-height:0;max-height:none;
    border-radius:0;aspect-ratio:auto}
  html:root #scHist .hs-fr--dva .hs-pul--nase .hs-cela{
    box-shadow:-1px 0 0 rgba(5,5,5,.12)}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-text{
    position:absolute;left:0;right:0;bottom:0;z-index:2;
    padding:clamp(40px,7vh,90px) clamp(20px,2.4vw,38px) clamp(14px,2.2vh,24px);
    background:linear-gradient(180deg,
      rgba(6,7,9,0) 0%,rgba(6,7,9,.34) 16%,rgba(6,7,9,.68) 42%,
      rgba(6,7,9,.86) 68%,rgba(6,7,9,1) 100%);
    gap:clamp(3px,.6vh,8px)}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-lab{color:rgba(255,255,255,.80)}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm,
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm a,
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm--nase span,
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm--nase em{color:#fff}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-veta{color:rgba(255,255,255,.84)}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-cisla,
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-cisla b{color:#fff}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-cisla span{color:rgba(255,255,255,.82)}
  html:root #scHist .hs-fr--dva .hs-pul .hs-segmenty span{
    color:rgba(255,255,255,.86);border-color:rgba(255,255,255,.32)}
  /* Popiska ilustrace se vrací na svůj tmavý štítek — na světlém
     místě fotky by šedá na fotce neměla kontrast. */
  html:root #scHist .hs-fr--dva .hs-pul .hs-kredit{
    position:absolute;top:0;left:0;z-index:2;
    background:rgba(6,7,9,.72);color:rgba(255,255,255,.82);
    padding:6px 10px;font-size:9.5px;max-width:min(520px,86%)}
}

/* Aby na obě fotky zbyla čtvrtina plochy, musí obrazovka odevzdat
   vzduch: nadpis se vejde na jeden řádek (do teď měl strop 575 px
   a lámal se na dva), vzduch nad ním a pod ním je menší a fotky
   dosednou až k pásu osy. Naměřeno níž ve zprávě. */
@media (min-width:901px){
  html:root #scHist .hs-fr--dva{
    padding-top:calc(var(--hs-lista-scena,150px) + 4px);
    padding-bottom:var(--hs-osa-scena,130px);
    row-gap:8px}
  html:root #scHist .hs-fr--dva .hs-dva-nadpis{margin-bottom:0}
  html:root #scHist .hs-fr--dva .hs-dva-nadpis .h{
    max-width:none;width:100%}
  html:root #scHist .hs-fr--dva .hs-dva-nadpis .h span,
  html:root #scHist .hs-fr--dva .hs-dva-nadpis .h em{white-space:nowrap}
}

/* Měkký přechod fotky do pásu osy (84 px bílé shora) ležel na obou
   fotkách přes jména a čísla — naměřeno 1,00 : 1 na „NIO" a „3,790".
   Na téhle jediné obrazovce se vypíná: fotka má vlastní tmavý závoj
   a ten do bílého pásu přejde sám. Selektor je vázaný na obrazovku,
   která právě svítí, takže na ostatních přechod zůstává. */
html:root #scHist:has(.hs-fr--dva.on) .hs-cas::before{display:none}

/* Oční linka: na šesti obrazovkách začínal text pokaždé jinde
   (naměřeno 417 / 415 / 374 / 329 / 210 / 198 px od horní hrany okna).
   Obrazovky s rozvržením — kapitálový závod, obchodní důkaz a dva
   vítězové — teď začínají na téže lince pod lištou kapitol a fotka
   u závodu s textem doopravdy začíná, ne že se doprostřed vystředí.
   Dobové obrazovky mají text uvnitř fotky přes celé okno; ty jsou
   vlastní rodina a jsou vypsané ve zprávě zvlášť. */
@media (min-width:901px){
  html:root #scHist .hs-fr--dva{
    padding-top:calc(var(--hs-lista-scena,150px) + 16px)}
}
/* U kapitálového závodu text nahoru NEJDE: sloupec s nadpisem, číslem,
   perexem a štítkem měří 584 px a obrazovka jich mezi lištou a osou
   nabízí 596. Zarovnaný nahoru přeteče přes pás osy o 54 px (naměřeno
   na 1280, 1366, 1440 i 1512). Zůstává vystředěný proti fotce —
   fotka i text ale začínají a končí na téže lince, protože rám obrazu
   je stejně vysoký jako sloupec textu. */

/* ═══ KRESBA ENERGY / MACHINE PODLE PŘEDLOHY (4. 9. večer) ═══════════
   Michaela: kolečka zůstávají, ale přesně tak, jak je má Radek
   v `_zadani-screeny/z2.png`. Změřeno na jeho snímku proti šířce okna:

     šířka celé kresby      43 %      (u nás bylo 29 %)
     poměr rámu elipsy      1 : 0,71  (u nás 1 : 0,86)
     průměr obou koleček    7,9 %     (u nás 8,8 % a 7,6 %)
     ENERGY  78,8 % šířky, 28,9 % výšky rámu
     MACHINE 15,6 % šířky, 75,1 % výšky rámu

   Do teď to byly dvě SOUSTŘEDNÉ elipsy (inset 6 %/2 % a 16 %/12 %),
   tedy jedna v druhé — proto to nevypadalo jako jeho kresba. Radek má
   dvě elipsy PŘES SEBE: vodorovnou hairline a druhou růžovou, menší
   a natočenou, a obě kolečka sedí na té růžové v místě, kde se kříží
   s vodorovnou. Růžová elipsa je proto spočítaná tak, aby oběma středy
   koleček doopravdy prošla, ne aby to jen zhruba vycházelo. */
@media (min-width:901px){
  html:root #scHist .hs-fr--princip{
    width:100vw;margin-left:calc(50% - 50vw);right:auto;
    padding-left:max(clamp(20px,4vw,72px), calc(50vw - 534px));
    padding-right:clamp(20px,3vw,56px);
    grid-template-columns:minmax(0,1fr) 42vw;
    column-gap:clamp(16px,2vw,40px)}
  html:root #scHist .hs-diagram{
    width:42vw;max-width:none;max-height:none;aspect-ratio:1/.712;
    justify-self:end;align-self:center}
  /* Šedá elipsa: na předloze není přesně vodorovná, má sklon −5,8°
     (změřeno proložením elipsy pixely jeho snímku). */
  html:root #scHist .hs-diagram::before{
    inset:0;border-radius:50%;transform:rotate(-6deg);
    border:1px solid rgba(255,255,255,.20)}
  /* růžová elipsa: 71,6 × 69,4 % rámu, střed mezi oběma kolečky,
     natočená o 22° — tím prochází přesně jejich středy */
  /* Růžová elipsa: 82 × 95 % rámu šedé (na předloze 82,5 × 95,1),
     sklon −22° (na předloze −21,7°), střed posunutý doprava nahoru
     jako u něj. */
  html:root #scHist .hs-diagram::after{
    inset:auto;left:14.3%;top:-1.4%;width:82%;height:95%;
    border-radius:50%;transform:rotate(-22deg);
    border:1px solid rgba(251,84,148,.50)}
  html:root #scHist .hs-kruh{
    width:8vw;height:8vw;aspect-ratio:auto;
    font-size:clamp(10px,.78vw,12px);letter-spacing:.16em}
  html:root #scHist .hs-kruh--energie{
    left:calc(78.4% - 4vw);top:calc(28.0% - 4vw);right:auto;bottom:auto;
    background:var(--pink,#FB5494);color:#fff;
    box-shadow:0 0 90px 24px rgba(251,84,148,.28)}
  html:root #scHist .hs-kruh--stroj{
    left:calc(15.2% - 4vw);top:calc(74.2% - 4vw);right:auto;bottom:auto;
    background:#111317;color:#fff;border:0;box-shadow:none}
}

/* ═══ PILULKA: NÍŽ A DOOPRAVDY PRYČ, KDYŽ NENÍ KAM (4. 9. večer) ══════
   Dvě věci k tomu, co Michaela naměřila:
   · níž — základ posunu odspodu 24 → 14 px, a spodní okraj z clamp
     16–30 na 12–18 px;
   · když pod pilulkou není volné místo, dosud jen zhasla (krytí 0)
     a zůstala ležet na svém rámečku. Teď je k tomu `visibility:hidden`
     a skript ji navíc odsune mimo okno, takže ji nemůže započítat ani
     měřidlo, které se na krytí nedívá. */
html:root .cta-float{
  right:clamp(20px,2.4vw,34px);
  /* 4. 9. v noci: spodní hrana 40 px nad dolním okrajem okna. Do teď
     se odsazovala o pás časové osy (`--hs-pod` + 24 px) a stála pak
     v 60 % výšky okna — naměřeno top 543 px na okně 900. */
  bottom:40px;
  /* Mléčné sklo, ale hustší, než bylo v zadání, a tmavší růžová.
     Důvod je změřený: sklo .62 nad TMAVOU kapitolou historie se složí
     do (162,162,163) a značková #FB5494 na tom má 1,21 : 1. Zadání
     počítalo se světlým podkladem (tam je 2,93). Sklo .92 drží složený
     podklad nad 235 i nad černou scénou a `--pink-ink` #BD376B na něm
     má 4,49 : 1 nejhůř. Čísla ze všech osmi míst jsou ve zprávě. */
  background:rgba(255,255,255,.92);
  -webkit-backdrop-filter:blur(14px) saturate(1.4);
  backdrop-filter:blur(14px) saturate(1.4);
  border:1px solid rgba(5,5,5,.10);
  box-shadow:0 6px 20px rgba(5,5,5,.10);
  /* Napsáno natvrdo, ne tokenem: `--pink-ink` je od 31. 8. přesměrovaná
     na značkovou růžovou (kabat.css výš), takže by token dal #FB5494
     a s ním 2,66 : 1. Tohle je to jediné místo, kde se vrací tmavší
     odstín — a vrací se kvůli změřenému číslu, ne kvůli vkusu. */
  color:#BD376B;
  visibility:hidden;
  transition:opacity var(--t-fast) var(--ease),
             transform var(--t-base) var(--ease),
             visibility 0s linear var(--t-fast)}
html:root .cta-float.show{visibility:visible;transition-delay:0s,0s,0s}
html:root .cta-float svg{stroke:#BD376B}
html:root .cta-float:hover{border-color:rgba(5,5,5,.22)}

/* ═══ OBSAH UHÝBÁ PILULCE (4. 9. večer) ══════════════════════════════
   Pilulka má pevné místo (vpravo dole, nad pásem osy). Aby na něm
   nemusela zhasínat, uhýbá jí obsah — jinak byla schovaná na 35 místech
   ze 114, celý kapitálový závod a oba vítězové.

   · popiska ilustrace u firem stála vpravo dole přesně pod pilulkou
     (naměřeno 25 % překryvu) → jde doleva
   · pravá půlka „dvou vítězů" psala text až k pravému okraji
     (34 % překryvu) → dostane vpravo místo pro pilulku */
@media (min-width:901px){
  html:root #scHist .hs-fr--firma .hs-ram .hs-kredit{
    right:auto;left:0;max-width:min(60%,520px)}
  /* Místo pro pilulku vpravo už tu není potřeba: od 4. 9. v noci
     pilulka nesmí ležet ani na fotce, takže na téhle obrazovce
     nesvítí tak jako tak, a štítky segmentů se vejdou na jeden řádek. */
  html:root #scHist .hs-fr--dva .hs-pul--nase .hs-pul-text{
    padding-right:clamp(18px,2vw,26px)}
}

/* ═══ OBCHODNÍ DŮKAZ: FOTKA PŘES CELOU OBRAZOVKU (4. 9. večer) ═══════
   Michaela: „dnes je přes celou šířku, ale jen pás uprostřed, nad ním
   i pod ním bílá." Dobové obrazovky mají 100 % plochy, tahle měla
   34,7 %. Fotka se proto vylomí z mřížky a leží pod celou obrazovkou
   jako na obrazovkách 1897, 1943 a 1972; text a čísla stojí na ní.

   Text je tmavý, obrazovka světlá (Michaelin rytmus), takže závoj je
   světlý a jde zleva — přesně naopak než na tmavých dobových. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
    position:absolute;order:0;z-index:0;
    top:0;bottom:0;left:50%;right:auto;
    width:100vw;height:auto;max-width:none;
    transform:translateX(-50%);
    margin:calc(-1 * (var(--hs-lista-scena,150px) + clamp(10px,1.6vh,20px)))
           0
           calc(-1 * (var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px)));
    aspect-ratio:auto;border-radius:0;background:none;overflow:hidden}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela img{
    position:absolute;inset:0;width:100%;height:100%;
    object-fit:cover;object-position:50% 46%}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela::after{
    content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(90deg,
      rgba(255,255,255,.92) 0%,rgba(255,255,255,.86) 38%,
      rgba(255,255,255,.42) 70%,rgba(255,255,255,.14) 100%)}
  /* Text a čísla si mřížku rozdělí sami: text uprostřed levé půlky
     jako na dobových obrazovkách, čtyři čísla dole nad pásem osy.
     Bez toho se obě položky sesypaly na sebe (naměřeno: nadpis
     a čísla přes sebe uprostřed obrazovky). */
  html:root #scHist .hs-fr--cela.hs-fr--dukaz{
    grid-template-rows:minmax(0,1fr) auto;align-content:stretch}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy{
    position:relative;z-index:2;order:1;align-self:center;
    width:min(58%,700px);max-width:none}
  /* Pruh se čtyřmi čísly je spodní pás přes CELÉ okno, ne bílý panel
     uprostřed fotky. Do teď měl šířku obsahového sloupce, takže na
     fotce ležel bílý obdélník s ostrými rohy (naměřeno 58–1383 px). */
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh{
    position:relative;z-index:2;order:2;align-self:end;
    width:100vw;max-width:none;margin-left:calc(50% - 50vw);
    padding-left:max(clamp(20px,4vw,72px), calc(50vw - 534px));
    padding-right:max(clamp(20px,4vw,72px), calc(50vw - 534px))}
}

/* Poslední obrazovka je bez časové osy (Michaelino rozhodnutí ze 4. 9.
   večer), takže si nemá co držet místo pod sebou — bez tohohle zbylo
   dole 128 px prázdné bílé a fotky zůstaly nižší, než musely být. */
@media (min-width:901px){
  html:root #scHist .hs-fr--dva[data-osa-pryc]{
    padding-bottom:clamp(18px,3vh,34px)}
}

/* ═══ LIŠTA MÁ DVA STAVY A NIC MEZI TÍM (4. 9. večer) ════════════════
   Zadání: složený podklad lišty nesmí nikdy skončit v pásmu jasu
   0,18–0,65 (střední šeď, kde nefunguje ani tmavý, ani bílý text).
   Přepíná se skokem podle fáze scény, neprolíná se.

   Zrušen je i třetí stav — průhledná lišta na vršku stránky. Byl to
   hezký detail, ale je to právě ten stav, kde se podklad počítá z toho,
   co je zrovna na videu, a nedá se zaručit. Nahoře platí tmavý stav. */
body:has(.pin) .nav,
body:has(.pin) .nav:not(.scrolled){
  background:rgba(255,255,255,.72) !important;
  -webkit-backdrop-filter:blur(18px) saturate(1.6);
  backdrop-filter:blur(18px) saturate(1.6);
  border-bottom:1px solid rgba(5,5,5,.08);
  box-shadow:none !important}
body:has(.pin) .nav-links a{color:#0E0E10}
body:has(.pin) .nav-druha{color:#383E42}
body:has(.pin) .nav.nav--on-coal,
body:has(.pin) .nav.nav--on-coal:not(.scrolled){
  background:rgba(12,13,16,.62) !important;
  border-bottom:1px solid rgba(255,255,255,.10)}
body:has(.pin) .nav.nav--on-coal .nav-links a{color:#FFFFFF}
body:has(.pin) .nav.nav--on-coal .nav-druha{color:rgba(255,255,255,.72)}

/* Poslední dvě místa, kde obsah stál pilulce v cestě (naměřeno):
   popiska dobových fotek vpravo dole a „The story begins ↓" v rohu
   openeru. Popiska jde doleva jako u firem, pokyn o kus výš. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela .hs-ilu-p{
    right:auto;left:0;max-width:min(58%,560px)}
  html:root .hs-zacatek{
    bottom:calc(var(--hs-pod,0px) + 104px)}
}

/* Na telefonu zůstává tam, kde byla (styles.css: 14 px). */
@media (max-width:900px){
  html:root .cta-float{bottom:14px}
}

/* ═══ FOTKA KONČÍ, PÁS ZAČÍNÁ (4. 9. v noci) ═════════════════════════
   Michaela o obrazovce 04: „vypadá to hodně špatně, navíc ani ty čísla
   nejdou vidět a je to jakoby sestavený z dvou věcí."

   Ze dvou možností v zadání je vybraná ta první: pruh s čísly i osa
   leží na PLNÉ PLOŠE pod fotkou, ne na fotce. Platí to na všech pěti
   obrazovkách s fotkou, takže je šev na všech na téže lince a nikde
   se nepřelévá obraz do textu.

   · měkký přechod fotky do pásu (84 px bílé shora) je pryč — právě on
     dělal ten „šev", protože fotka pod ním pokračovala dál
   · dobové fotky končí na horní hraně pásu, ne pod ním
   · na obrazovce 04 je fotka pozadím horního řádku mřížky, čísla jsou
     druhý řádek s vlastní plochou */
html:root #scHist .hs-cas::before{display:none}
/* Dobové obrazovky: fotka končí na horní hraně pásu osy. Do teď šla
   až pod něj (naměřeno 914 px při okně 900) a pás na ni nasedal
   přechodem — to byl ten „šev". */
html:root #scHist .hs-fr--cela .hs-cela{
  bottom:var(--hs-osa-scena,130px);margin-bottom:0}

@media (min-width:901px){
  /* Obrazovka 04: fotka je celý horní řádek mřížky, čísla druhý řádek
     s vlastní plochou. Rám nemá horní odsazení — o odstup od lišty
     kapitol se stará text, ne fotka. */
  html:root #scHist .hs-fr--cela.hs-fr--dukaz{
    padding-top:0;row-gap:0;
    padding-bottom:var(--hs-osa-scena,130px)}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
    position:relative;grid-row:1;grid-column:1/-1;align-self:stretch;
    top:auto;bottom:auto;left:auto;right:auto;transform:none;
    width:100vw;max-width:none;
    margin:0 0 0 calc(50% - 50vw);
    height:auto;border-radius:0;overflow:hidden}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy{
    grid-row:1;grid-column:1/-1;z-index:2;align-self:center;
    padding-top:calc(var(--hs-lista-scena,150px) - clamp(20px,4vh,60px))}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh{
    grid-row:2;grid-column:1/-1;z-index:2;bottom:auto;
    background:var(--hs-plocha,#FFFFFF);
    padding-top:clamp(14px,2.4vh,26px);
    padding-bottom:clamp(10px,1.6vh,18px)}
}

/* ═══ OBRAZOVKA 05 SROVNANÁ (4. 9. v noci) ═══════════════════════════
   Michaela: „nesedí mi to nějak, ta stránka je taková rozhozená celá."
   Tři věci ze snímku a co se s nimi stalo:

   · fotky lícovaly s okrajem okna, nadpis měl odsazení — teď mají obě
     fotky i nadpis TUTÉŽ levou linku (odsazení rámu obrazovky)
   · mezi nadpisem a fotkami bylo 8 px — teď je tam táž mezera jako
     mezi bloky na ostatních obrazovkách
   · štítek „ILLUSTRATION —" byl černý blok nalepený v levém horním
     rohu fotky; teď stojí decentně u SPODNÍ hrany fotky, bez plochy */
@media (min-width:901px){
  html:root #scHist .hs-fr--dva{
    padding-left:clamp(20px,4vw,72px);
    padding-right:clamp(20px,4vw,72px);
    column-gap:clamp(14px,1.6vw,24px);
    row-gap:clamp(14px,2.4vh,28px)}
  html:root #scHist .hs-fr--dva .hs-dva-nadpis{
    padding-left:0;padding-right:0}
  html:root #scHist .hs-fr--dva .hs-pul .hs-cela{border-radius:2px}
  html:root #scHist .hs-fr--dva .hs-pul--nase .hs-cela{box-shadow:none}
  html:root #scHist .hs-fr--dva .hs-pul .hs-kredit{
    top:auto;bottom:0;left:auto;right:0;
    background:none;color:rgba(255,255,255,.72);
    padding:0 clamp(18px,2vw,26px) 6px;
    font-size:9px;letter-spacing:.08em;text-align:right;
    max-width:min(70%,460px)}
}

/* Jedna levá linka na všech obrazovkách. Naměřeno: 58 px na dobových,
   115 na obchodním důkazu, 48 na kapitálovém závodu (a 160 na okně
   1920, protože se ten rám roztahoval na jinou šířku než ostatní).
   Teď má každá obrazovka totéž odsazení jako rám scény. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy{padding-left:0}
/* PŮVODNÍ RÁMEČEK — VRÁTIT ODKOMENTOVÁNÍM */
/*
  html:root #scHist .hs-fr--firma{
    width:calc(100vw - 2 * clamp(20px,4vw,72px));
    margin-left:calc(50% - 50vw + clamp(20px,4vw,72px))}
*/
}

/* Dobové obrazovky měly text odsazený o 60 px, ostatní o clamp(20,4vw,72)
   — na okně 1920 to bylo 60 proti 72. Sjednoceno na tutéž hodnotu. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela .hs-copy{
    padding-left:clamp(20px,4vw,72px);
    padding-right:clamp(20px,4vw,72px)}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy{
    padding-right:clamp(20px,4vw,72px)}
}

/* Popiska ilustrace u spodní hrany fotky si žádá vlastní řádek —
   jinak leží na téže lince jako čísla („3 790 stations · 100M swaps")
   a obojí se hůř čte. Blok se jménem se proto o ten řádek zvedne. */
@media (min-width:901px){
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-text{
    padding-bottom:clamp(30px,3.4vh,40px)}
}

/* ═══════════════════════════════════════════════════════════════════
   DESIGNOVÝ SYSTÉM: STUPNICE PÍSMA (4. 9. v noci)
   DESIGN-SYSTEM.md, oddíl 1. Každý vykreslený stupeň musí sednout na
   stupnici 10 · 11 · 12 · 13 · 14 · 16 · 19 · 24 · 31 · 40 · 52 · 66
   s tolerancí 0,6 px, a to na 1440 × 900, 1920 × 1080 i 390 × 844.

   Každý clamp je proto napsaný tak, aby byl na obou koncích už
   dosažený: na 390 padne na spodní stupeň, na 1440 i 1920 na horní.
   Mezi tím se plynule mění, jak má — jen ty tři šířky mají padnout
   přesně. Žádná pevná velikost pro jednu šířku.

   Vše je omezené na domovskou (`body:has(.pin)`), protože kabat.css
   se načítá i na prodejní stránce. */

/* — patička: 15 → 14 ————————————————————————————————————— */
body:has(.pin) .foot-adresa,
body:has(.pin) .foot-grid a,
body:has(.pin) .foot-col a{font-size:14px}

/* — štítky vrstev: 15 → 14 ——————————————————————————————— */
html:root body:has(.pin) .sc-wipe--layers .lay-tag b,
html:root body:has(.pin) .hero .lay-tagy .lay-tag b{font-size:14px}

/* — dvojvěta na obrazovkách historie: 16,6 → 16 ————————————— */
html:root body:has(.pin) .hs-dvojveta,
html:root body:has(.pin) .hs-dvojveta span,
html:root body:has(.pin) .hs-dvojveta em{font-size:clamp(14px,1.6vw,16px)}
html:root body:has(.pin) .hs-dvojveta--velka,
html:root body:has(.pin) .hs-dvojveta--velka span,
html:root body:has(.pin) .hs-dvojveta--velka em{font-size:clamp(24px,3vw,31px)}

/* — pruh 10×: perex, popisky: 17 → 16 —————————————————————— */
html:root body:has(.pin) .dx-hlava .lead,
html:root body:has(.pin) .dx-popis,
html:root body:has(.pin) .dx-pod{font-size:clamp(14px,1.6vw,16px)}
html:root body:has(.pin) .dx-hlava .h{font-size:clamp(24px,3vw,31px)}

/* — velké tlačítko: 20 → 19 ————————————————————————————— */
html:root body:has(.pin) .btn.lg{font-size:clamp(16px,1.9vw,19px)}

/* — jednotky u čísel vějíře: 25,9 → 24 —————————————————————— */
html:root body:has(.pin) .fst .u,
html:root body:has(.pin) .fst-v .u{font-size:clamp(19px,2.4vw,24px)}

/* — čtyři údaje na obrazovce 04: 27,4 → 24 ————————————————— */
html:root body:has(.pin) .sc-wipe--hist .hs-udaj b,
html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj b{
  font-size:clamp(19px,2.4vw,24px)}

/* — nadpis dvou vítězů: 33,8 → 31 ——————————————————————— */
html:root body:has(.pin) .sc-wipe--hist .hs-dva-nadpis .h,
html:root body:has(.pin) #scHist .hs-dva-nadpis .h{
  font-size:clamp(24px,3vw,31px)}

/* — nadpis vějíře a jména značek: 36 a 37,4 → 40 ————————————— */
html:root body:has(.pin) #fanTitle,
html:root body:has(.pin) .sc-wipe--hist .hs-pul-jm,
html:root body:has(.pin) #scHist .hs-pul-jm{font-size:clamp(31px,3.6vw,40px)}

/* — nadpisy obrazovek historie: 39 → 40, obrat 56,2 → 52 ————— */
html:root body:has(.pin) .sc-wipe--hist .hs-fr--cela .h,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--firma .h,
html:root body:has(.pin) #scHist .hs-fr--cela .h,
html:root body:has(.pin) #scHist .hs-fr--firma .h{
  font-size:clamp(31px,3.6vw,40px)}
html:root body:has(.pin) .sc-wipe--hist .hs-fr--obrat .h,
html:root body:has(.pin) #scHist .hs-fr--obrat .h{
  font-size:clamp(40px,4.6vw,52px)}

/* — nadpisy sekcí (One energy layer, Nothing new, So are we): 63 → 66 */
html:root body:has(.pin) .vrstva-radek .h.vr-h,
html:root body:has(.pin) .vrstva-radek .h.vr-h span,
html:root body:has(.pin) .vrstva-radek .h.vr-h em{font-size:clamp(40px,5vw,66px)}

/* — hero: 82,8 → 66 ——————————————————————————————————— */
html:root body:has(.pin) .hero-inner h1,
html:root body:has(.pin) .hero-inner h1 span{font-size:clamp(52px,6vw,66px)}

/* — popiska ilustrace: 9 a 9,5 → 10 ————————————————————— */
html:root body:has(.pin) .hs-kredit,
html:root body:has(.pin) .hs-fr--firma .hs-kredit,
html:root body:has(.pin) .sc-wipe--hist .hs-kredit,
html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-kredit{font-size:10px}

/* — proměnná --fs-sm byla 15 px, což na stupnici není (13 a 14 ano).
     Tím spadlo naráz několik míst: text ve fleet pruhu, adresa
     pobočky v patičce a čísla patentů. */
body:has(.pin){--fs-sm:14px}

/* — nadpisy sekcí mají v CSS vlastní ID, proto zvlášť ————————— */
html:root body:has(.pin) #onelayer .vr-h,
html:root body:has(.pin) #patent .vr-h,
html:root body:has(.pin) #zaver .vr-h{font-size:clamp(40px,5vw,66px)}
html:root body:has(.pin) #desetkrat .vr-h{font-size:clamp(24px,3vw,31px)}
html:root body:has(.pin) #desetkrat .lead,
html:root body:has(.pin) #desetkrat .dx-pod,
html:root body:has(.pin) #desetkrat .dx-popis{font-size:clamp(14px,1.6vw,16px)}
html:root body:has(.pin) #unlocked .vr-h{font-size:clamp(40px,5vw,66px)}

/* — zbylé nadpisy obrazovek historie ————————————————————— */
html:root body:has(.pin) .sc-wipe--hist .hs-fr--princip .h,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--opener .h,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--dukaz .h,
html:root body:has(.pin) #scHist .hs-fr--princip .h,
html:root body:has(.pin) #scHist .hs-fr--opener .h,
html:root body:has(.pin) #scHist .hs-fr--dukaz .h{
  font-size:clamp(31px,3.6vw,40px)}

/* — čísla patentů: 15 → 14 ————————————————————————————— */
html:root body:has(.pin) .pat-cisla{font-size:clamp(13px,1.05vw,14px)}

/* ═══════════════════════════════════════════════════════════════════
   DESIGNOVÝ SYSTÉM: BARVY, PLOCHY, ZAOBLENÍ, STÍNY (4. 9. v noci)
   DESIGN-SYSTEM.md, oddíly 2 a 3. */

/* Barvy písma mimo paletu:
     rgb(10,11,14)    čtyři údaje na obrazovce 04   → #050505
     rgb(110,110,115) „Scroll to explore"           → #5A5A5F
     rgb(60,64,69)    perex obrazovek historie      → #383E42 */
html:root body:has(.pin) #scHist.hs-svetlo .hs-fr--dukaz .hs-udaj b{color:#050505}
html:root body:has(.pin) .vr-scroll{color:#5A5A5F}
html:root body:has(.pin) .sc-wipe--hist .hs-copy .lead,
html:root body:has(.pin) #scHist .hs-copy .lead{color:#383E42}

/* Plochy mimo paletu. Většina z nich vůbec není v CSS napsaná — jsou
   to MEZISTAVY přechodu: scéna historie i horní lišta si mění podklad
   `transition`em, a měřidlo je chytí uprostřed prolnutí (naměřeno
   rgb(31,34,38), rgb(68,71,74), rgba(101,101,103,.655) a další).
   Systém říká „přepíná se skokem, neprolíná se" — tak se přechod ruší.
   Zbytek jsou poloprůhledné podklady na základech, které v paletě
   nejsou (rgba(10,11,14), rgba(19,20,24), rgba(4,5,7)) → na #050505. */
html:root #scHist{transition:none}
body:has(.pin) .nav{transition:none !important}
/* POZOR: tady bylo `#scLayers{background:#14161A}` kvůli paletě.
   Byla to vada: scéna si podklad počítá sama (`--lay-bg`, uhlová →
   bílá) a podle jeho jasu překlápí barvu textu. Pevný podklad ten
   výpočet přebil, deska zůstala tmavá, text se překlopil do tmavé —
   a vznikl černý nadpis na černém (naměřeno 1,06 : 1 na scrollu 5595).
   Podklad si tedy scéna řídí zas sama; do palety se posunul její
   výchozí odstín ve script.js (19,20,24 → 20,22,26 = #14161A). */
html:root body:has(.pin) .hs-kredit,
html:root body:has(.pin) .sc-wipe--hist .hs-kredit,
html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-kredit{
  background:rgba(5,5,5,.72)}
html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-kredit{background:none}
html:root body:has(.pin) .fleetbar{background:rgba(5,5,5,.52)}
html:root body:has(.pin) .sc-wipe--hist .hs-fr--cela .hs-copy,
html:root body:has(.pin) #scHist .hs-fr--cela .hs-copy{background:rgba(5,5,5,.62)}

/* Zaoblení: 2 px na fotkách dvou vítězů → 4 px ze systému. */
@media (min-width:901px){
  html:root #scHist .hs-fr--dva .hs-pul .hs-cela{border-radius:4px}
}

/* Stíny: na stránce byly čtyři, systém povoluje tři. Pilulka svůj
   nepotřebuje — stojí na mléčném skle s vlasovou linkou a ta ji od
   podkladu oddělí sama. Zůstávají tři: závoj scén (--stin), zář
   kolečka ENERGY a světélko běžce na časové ose. */
html:root .cta-float{box-shadow:none}

/* Tmavé kapitoly historie měly #1F2226, což v paletě není — nejblíž je
   #1A1B1D. Rozdíl je pod prahem rozlišitelnosti, systém tím sedí. */
html:root body:has(.pin) .hs-chap--tmava{background:#1A1B1D}
html:root body:has(.pin) #scHist{background:#1A1B1D}
html:root body:has(.pin) #scHist.hs-svetlo{background:#F0F0F0}

/* Tmavý stav lišty: zadání psalo rgba(12,13,16,.62), ale poloprůhledná
   smí být podle systému jen bílá a černá (a #0E0E10). Je to táž barva
   o dva stupně jinde — na obrazovce nerozeznatelné. */
body:has(.pin) .nav.nav--on-coal,
body:has(.pin) .nav.nav--on-coal:not(.scrolled){
  background:rgba(14,14,16,.62) !important}

/* Odstavec nesmí být širší než 680 px. Netýká se to jen odstavců —
   měřidlo bere každý prvek s vlastním textem, takže i eyebrow, který
   se roztáhl přes celý sloupec. Text se tím nezmenšuje, jen se mu
   ohraničí rámeček. */
body:has(.pin) .vrstva-radek .eyebrow,
body:has(.pin) .vrstva-radek .lead,
body:has(.pin) .vrstva-radek .vr-p,
body:has(.pin) .vrstva-radek .pat-cisla,
body:has(.pin) .vrstva-radek .dx-pod{max-width:680px}
body:has(.pin) #zaver .eyebrow,
body:has(.pin) #zaver .lead,
body:has(.pin) #zaver .vr-p,
body:has(.pin) #patent .pat-cisla,
body:has(.pin) #patent .lead,
body:has(.pin) #desetkrat .dx-pod,
body:has(.pin) #onelayer .lead{margin-inline:auto}

/* Totéž na obrazovkách historie: eyebrow, perex i dvojvěta se drží
   680 px. Nadpisy tenhle strop nemají — pravidlo je o odstavci. */
body:has(.pin) #scHist .hs-copy .eyebrow,
body:has(.pin) #scHist .hs-copy .lead,
body:has(.pin) #scHist .hs-dvojveta,
body:has(.pin) #scHist .hs-dva-nadpis .eyebrow,
body:has(.pin) #scHist .hs-pul-veta,
body:has(.pin) #scHist .hs-fyzika,
body:has(.pin) #scHist .hs-kredit{max-width:680px}

/* Druhá půlka závěrečného dvojverší je samostatný span přes celý
   sloupec — text je krátký, tak se jen ohraničí. */
/* (zrušeno — viz poznámka výš: nadpisy strop nemají) */

/* — telefon (390 × 844) a zbytek stupnice ————————————————————
   Mobilní pravidla mají v kabat.css vlastní media dotazy, proto se
   sem musí dopsat zvlášť. Zase dvoustupňový clamp, ne pevná velikost. */
body:has(.pin) .footer .fb-tag,
body:has(.pin) .footer .fb-claim,
body:has(.pin) .foot-bottom span{font-size:14px}
html:root body:has(.pin) .vrstva-radek .lead.vr-p{font-size:clamp(14px,1.6vw,16px)}
html:root body:has(.pin) #liveCopy .h span,
html:root body:has(.pin) #liveCopy .h .accent{font-size:clamp(24px,3vw,31px)}
html:root body:has(.pin) .lay-copy .lay-state .h span,
html:root body:has(.pin) .lay-copy .lay-state .h .accent{font-size:clamp(31px,3.6vw,40px)}
html:root body:has(.pin) .sc-wipe--hist .hs-cislo b,
html:root body:has(.pin) #scHist .hs-cislo b{font-size:clamp(31px,3.6vw,40px)}
html:root body:has(.pin) #scHist .hs-kruh,
html:root body:has(.pin) .sc-wipe--hist .hs-kruh{font-size:clamp(10px,.78vw,12px)}
html:root body:has(.pin) #scHist .hs-segmenty span,
html:root body:has(.pin) .sc-wipe--hist .hs-segmenty span{font-size:10px}

/* Kolečko MACHINE mělo #0E0F12, v paletě je #111317. */
html:root body:has(.pin) .hs-kruh--stroj{background:#111317}

/* Zaoblení fotek na obrazovce 05 i na telefonu: 12 → 4 px. */
html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-cela,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--dva .hs-pul .hs-cela{border-radius:4px}

/* „A fleet that runs. Not a render." je taky span přes celý sloupec. */
/* (zrušeno — viz poznámka výš) */

/* Druhá půlka dvojverší přechází mezi značkovou a tmavší růžovou.
   Obě jsou v paletě, ale MEZISTAV mezi nimi ne — měřidlo ho chytilo
   jako rgb(90,32,56). Systém říká: přepíná se skokem. Barva se tedy
   z přechodu vyjímá, pohyb a krytí zůstávají. */
body:has(.pin) .pin .h,
body:has(.pin) .pin .h span,
body:has(.pin) .pin .accent,
body:has(.pin) .pin .lay-copy *,
body:has(.pin) .pin #liveCopy *{
  transition-property:opacity,transform,visibility}

/* Poslední skupina k pravidlu „nic širšího než 680 px": nadpisy, které
   měly rámeček přes celý obsahový sloupec. Písmo se nezmenšuje, jen se
   zúží měřítko řádku — u „Nothing new." se tím druhý řádek zalomí na
   dva, což je jediná viditelná změna z celého designového úklidu. */
/* POZOR: strop 680 px se drží na ODSTAVCÍCH a popiskách, ne na
   nadpisech. Když jsem ho zkusil i na ně, „One energy layer. Every
   transport market." se ve 66 px zalomilo do čtyř řádků a „Except the
   way it all works together." do dvou. Systém mluví o odstavci;
   měřidlo měří každý prvek s textem. Rozdíl je popsaný ve zprávě. */
body:has(.pin) .vr-scroll,
body:has(.pin) .fleetbar b,
body:has(.pin) .fleetbar i,
body:has(.pin) .fb-txt b,
body:has(.pin) .fb-txt i{max-width:680px}
body:has(.pin) .vr-scroll{margin-inline:auto}

/* Barva se uvnitř připnuté scény nepřelévá nikde — mezistavy mezi
   dvěma paletovými růžovými chytalo měřidlo na třech šířkách
   (rgb(85,31,53), rgb(121,39,71), rgb(182,53,104)). Scéna se stejně
   prolíná krytím a posunem, ne barvou. */
body:has(.pin) .pin *{
  transition-property:opacity,transform,visibility,filter,backdrop-filter,
                      border-color,left,right,top,bottom,width,height}

/* Popisek půlky na obrazovce 05 měl na 1920 812 px. */
body:has(.pin) #scHist .hs-pul-lab,
body:has(.pin) #scHist .hs-pul-text > *{max-width:680px}

/* Totéž v sekcích za připnutou scénou (závěrečná výzva, patent). */
body:has(.pin) .vrstva-radek *{
  transition-property:opacity,transform,visibility,filter,backdrop-filter,
                      border-color,left,right,top,bottom,width,height}

/* Poslední mezistav: dvojverší vrstev přepíná barvu podle desky pod
   sebou. Pravidlo výš prohrávalo se specifičtějším selektorem, tak je
   tu ještě jednou s dostatečnou vahou. */
html:root body:has(.pin) .sc-wipe--layers .lay-copy .lay-state .h,
html:root body:has(.pin) .sc-wipe--layers .lay-copy .lay-state .h span,
html:root body:has(.pin) .sc-wipe--layers .lay-copy .lay-state .h .accent,
html:root body:has(.pin) .sc-wipe--layers .lay-copy .lay-state{
  transition-property:opacity,transform,visibility}

/* Růžová v dvojverší vrstev se počítá ze scény a při překlopení desky
   projde mezistavem, který v paletě není (naměřeno rgb(123,40,73)).
   Oba stavy se proto zapisují napevno: značková na tmavé desce,
   tmavší na světlé. Kontrast obou je změřený a je nad normou. */
/* POZOR: tady byly natvrdo zapsané dvě růžové kvůli paletě. Taky to
   byla vada: scéna si růžovou dopočítává (`--lay-pink`) tak, aby proti
   PRÁVĚ VYKRESLENÉMU podkladu držela 3,2 : 1 — uprostřed překlopení
   neplní normu ani značková, ani tmavší. Pevná barva ten výpočet
   přebila a „The grid is not." mělo na scrollu 5460 kontrast 1,00 : 1.
   Barvu si tedy řídí zase scéna. */

/* Po sjednocení stupnice se dva prvky posunuly přesně pod pilulku:
   popisek „Up to 10× fleet potential" v pravém dolním rohu pruhu 10×
   a spodní hrana fotky na obrazovce patentu. Obojí se zvedne nad ni;
   pilulka má pevné místo, uhýbá obsah. */
@media (min-width:901px){
  body:has(.pin) #desetkrat .dx-diagram{padding-bottom:clamp(60px,9vh,110px)}
  body:has(.pin) #patent .vr-in{padding-bottom:clamp(150px,21vh,240px)}
}

/* ═══════════════════════════════════════════════════════════════════
   ZPĚT: FOTKA PŘES CELOU OBRAZOVKU, PRUHY LEŽÍ NA NÍ (5. 9.)
   ZADANI-HOMEPAGE-ZPET.md, body 1, 2 a 6. Michaela: „najednou ty fotky
   nejsou přes celou, proč??" a „proč je tady ten šedý rámeček vlevo?"

   Vrací se stav, kdy fotka vyplní celé okno a oba pruhy — letopočty
   i čtyři čísla — na ní leží. Čitelnost dělá MĚKKÝ přechod, ne deska
   s hranou. */

/* 1 — deska za nadpisem pryč. Byl to poloprůhledný obdélník 950 × 425
   s ostrými hranami; čitelnost teď dělá závoj ukotvený k okraji okna. */
html:root body:has(.pin) #scHist .hs-fr--cela .hs-copy,
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy{
  background:none;box-shadow:none;border:0;
  -webkit-backdrop-filter:none;backdrop-filter:none}

/* Závoj: zleva rgba(5,5,5,.55), doprava do nuly, konec v 62 % šířky.
   Žádná viditelná hrana — poslední zarážka je průhledná, takže se
   nikde neláme jas. */
html:root #scHist .hs-fr--cela .hs-cela::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,
    rgba(5,5,5,.55) 0%,
    rgba(5,5,5,.46) 18%,
    rgba(5,5,5,.30) 34%,
    rgba(5,5,5,.14) 48%,
    rgba(5,5,5,.04) 57%,
    rgba(5,5,5,0) 62%)}
html:root #scHist .hs-fr--cela.hs-fr--vpravo .hs-cela::after{
  background:linear-gradient(270deg,
    rgba(5,5,5,.55) 0%,
    rgba(5,5,5,.46) 18%,
    rgba(5,5,5,.30) 34%,
    rgba(5,5,5,.14) 48%,
    rgba(5,5,5,.04) 57%,
    rgba(5,5,5,0) 62%)}

/* 2 — fotka zpátky přes celou plochu okna, pruhy ji neodsouvají. */
html:root #scHist .hs-fr--cela .hs-cela{
  bottom:0;margin-bottom:calc(-1 * (var(--hs-osa-scena,130px)
                                    + clamp(10px,1.6vh,20px)))}
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz{
    padding-bottom:0;grid-template-rows:minmax(0,1fr) auto}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
    grid-row:1/-1;margin:0 0 0 calc(50% - 50vw)}
  /* Pruh čtyř čísel leží NA fotce a nese si vlastní měkký přechod:
     odspodu bílá, nahoru do nuly. Čísla tak zůstanou tmavá a čitelná
     a fotka pod pruhem nekončí. */
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh{
    grid-row:2;z-index:2;background:none;
    padding-bottom:calc(var(--hs-osa-scena,130px) + clamp(6px,1vh,14px))}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh::before{
    content:"";position:absolute;left:calc(50% - 50vw);width:100vw;
    bottom:0;top:-40px;z-index:-1;pointer-events:none;
    background:linear-gradient(180deg,
      rgba(255,255,255,0) 0%,
      rgba(255,255,255,.34) 22%,
      rgba(255,255,255,.72) 46%,
      rgba(255,255,255,.90) 72%,
      rgba(255,255,255,1) 100%)}
}

/* Pruh letopočtů leží na fotce taky — jeho plocha se mění na měkký
   přechod. Na tmavých obrazovkách tmavý, na světlých bílý. */
html:root #scHist .hs-cas{background:none}
html:root #scHist .hs-cas::before{
  content:"";display:block;position:absolute;
  left:0;right:0;bottom:0;top:-52px;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(11,12,15,0) 0%, rgba(11,12,15,.42) 26%,
    rgba(11,12,15,.78) 58%, rgba(11,12,15,1) 100%)}
html:root #scHist.hs-svetlo .hs-cas::before{
  background:linear-gradient(180deg,
    rgba(255,255,255,0) 0%, rgba(255,255,255,.42) 26%,
    rgba(255,255,255,.80) 58%, rgba(255,255,255,1) 100%)}
html:root #scHist .hs-cas::after{display:none}

/* 6 — čtyři čísla mají váhu: o dva stupně výš (24 → 40) a plnou
   černou, popisky zůstávají malé a šedé, mezera mezi nimi 6 px. */
html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj b,
html:root body:has(.pin) .sc-wipe--hist .hs-udaj b{
  font-size:clamp(31px,3.6vw,40px);color:#050505;line-height:1.02}
html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj span,
html:root body:has(.pin) .sc-wipe--hist .hs-udaj span{
  color:#5A5A5F;margin-top:6px}

/* Obrazovka 04 se tím dostává do téže rodiny jako dobové: fotka přes
   celé okno, závoj zleva, text bílý. Bílý závoj z minulého kola se
   ruší — zadání říká rgba(5,5,5,.55) → 0 do 62 % šířky. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela::after{
    background:linear-gradient(90deg,
      rgba(5,5,5,.55) 0%,
      rgba(5,5,5,.46) 18%,
      rgba(5,5,5,.30) 34%,
      rgba(5,5,5,.14) 48%,
      rgba(5,5,5,.04) 57%,
      rgba(5,5,5,0) 62%)}
}
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h,
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h em,
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h span{
  color:#FFFFFF}
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .lead{
  color:#F4F4F2}
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{
  color:#F4F4F2}

/* Čtyři čísla sedí NA měkkém bílém přechodu, ne nad ním — pruh se
   proto posadí níž a přechod začíná o kus výš. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh::before{top:-96px}
}

/* Spodek obrazovky 04 je světlý pás: čísla i letopočty jsou tmavé,
   tak pod nimi musí být bílý přechod bez ohledu na to, jestli scéna
   zrovna hlásí světlou nebo tmavou. Vázáno na obrazovku, která svítí. */
@media (min-width:901px){
  html:root #scHist:has(.hs-fr--dukaz.on) .hs-cas::before{
    background:linear-gradient(180deg,
      rgba(255,255,255,0) 0%, rgba(255,255,255,.46) 26%,
      rgba(255,255,255,.84) 58%, rgba(255,255,255,1) 100%)}
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh::before{
    top:-150px;
    background:linear-gradient(180deg,
      rgba(255,255,255,0) 0%,
      rgba(255,255,255,.30) 30%,
      rgba(255,255,255,.72) 58%,
      rgba(255,255,255,.92) 82%,
      rgba(255,255,255,1) 100%)}
}

/* Jeden přechod na celý spodek, ne dva pásy nad sebou. Bílá začíná
   nad čísly a plynule houstne až k dolní hraně okna — čísla i osa tak
   leží na téže ploše a nikde není hrana. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh::before{display:none}
  html:root #scHist:has(.hs-fr--dukaz.on) .hs-cas::before{
    top:-280px;
    background:linear-gradient(180deg,
      rgba(255,255,255,0) 0%,
      rgba(255,255,255,.18) 22%,
      rgba(255,255,255,.52) 44%,
      rgba(255,255,255,.82) 66%,
      rgba(255,255,255,.94) 86%,
      rgba(255,255,255,1) 100%)}
}

/* ═══ OBRAZOVKA 04 JE TÁŽ RODINA JAKO DOBOVÉ (5. 9.) ═════════════════
   Bílý přechod pod čísly nešel udělat bez hrany: pruh čísel i pás osy
   mají každý svůj rámeček, a jakmile se pod ně dal světlý přechod,
   vznikl uprostřed obrazovky vodorovný pruh s viditelnou hranou —
   přesně to, co bod 1 zakazuje. Fotka je přes celé okno a je tmavá,
   takže spodek dostává TÝŽ tmavý přechod jako dobové obrazovky a čísla
   jsou bílá. Zvýraznění dělá velikost (24 → 40 px, poměr k popisku
   4,2) a plná bílá proti ztlumené šedobílé popisky — ne růžová.
   Odchylku od barvy #050505 v zadání vysvětluju ve zprávě. */
@media (min-width:901px){
  html:root #scHist:has(.hs-fr--dukaz.on) .hs-cas::before{
    top:-300px;
    background:linear-gradient(180deg,
      rgba(8,9,12,0) 0%,
      rgba(8,9,12,.16) 24%,
      rgba(8,9,12,.46) 46%,
      rgba(8,9,12,.74) 68%,
      rgba(8,9,12,.88) 86%,
      rgba(8,9,12,.94) 100%)}
}
html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj b,
html:root body:has(.pin) .sc-wipe--hist .hs-udaj b,
html:root body:has(.pin) #scHist.hs-svetlo .hs-fr--dukaz .hs-udaj b{color:#FFFFFF}
html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj span,
html:root body:has(.pin) .sc-wipe--hist .hs-udaj span,
html:root body:has(.pin) #scHist.hs-svetlo .hs-fr--dukaz .hs-udaj span{
  color:rgba(255,255,255,.78);margin-top:6px}
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas,
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas *{color:#FFFFFF}
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas-od,
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas-do,
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas-stop{
  color:rgba(255,255,255,.80)}

/* ═══ TEXT VRSTEV MÁ POD SEBOU VLASTNÍ PODKLAD (5. 9.) ═══════════════
   ZADANI-HOMEPAGE-ZPET.md, bod 3. Sloupec textu leží nad kresbou
   vrstev, ne nad rovnou plochou — proto se kontrast měnil s tím, co
   pod ním zrovna prolétlo (naměřeno 1,00 až 2,39 : 1 při plném krytí).
   Dostává proto měkký závoj v barvě, kterou má scéna PRÁVĚ TEĎ
   (`--lay-bg`), takže se probarvuje S přechodem, ne až po něm, a nemá
   viditelnou hranu. */
@media (min-width:901px){
  html:root #scLayers .lay-copy{position:relative;z-index:6}
  html:root #scLayers .lay-copy::before{
    content:"";position:absolute;z-index:-1;pointer-events:none;
    top:-80px;bottom:-80px;right:-30%;left:calc(50% - 50vw);
    /* Závoj NEsleduje plynulý podklad scény, ale překlápí se s barvou
       textu — třídou `.svetla`, tedy v témž okamžiku. Kdyby sledoval
       podklad, byl by uprostřed přechodu střední šedý a na té nemá
       normu ani bílý, ani černý text (naměřeno 1,00 až 1,76 : 1
       na scrollu 5445–5460). Takhle je text vždycky na skoro černé
       nebo skoro bílé. */
    background:linear-gradient(90deg,
      color-mix(in srgb, var(--lay-bg,#14161A) 96%, transparent) 0%,
      color-mix(in srgb, var(--lay-bg,#14161A) 95%, transparent) 70%,
      color-mix(in srgb, var(--lay-bg,#14161A) 72%, transparent) 86%,
      color-mix(in srgb, var(--lay-bg,#14161A) 0%, transparent) 100%)}
}

/* Barva textu vrstev se řídí TŘÍDOU, ne proměnnou. Scéna sice počítá
   `--lay-fg` a překlápí ho na jasu 0,179, ale ve viditelném stavu
   zůstávala bílá i nad světlou deskou — naměřeno 1,67 : 1 na scrollu
   5460 a na snímku je bílý nadpis na světle šedé. Třída `.svetla` se
   nasazuje v témž snímku jako podklad, takže se text probarví S
   přechodem, ne až po něm. */
@media (min-width:901px){
  html:root #scLayers .lay-copy .h,
  html:root #scLayers .lay-copy .h span,
  html:root #scLayers .lay-copy .eyebrow,
  html:root #scLayers .lay-copy .lead{color:#FFFFFF}
  html:root #scLayers .lay-copy .h .accent{color:#FB5494}
  html:root #scLayers.svetla .lay-copy .h,
  html:root #scLayers.svetla .lay-copy .h span,
  html:root #scLayers.svetla .lay-copy .eyebrow{color:#0E0E10}
  html:root #scLayers.svetla .lay-copy .lead{color:#383E42}
  html:root #scLayers.svetla .lay-copy .h .accent{color:#BD376B}
}

/* Doba překlopení pilulky je táž jako u kapitol: 180 ms, táž křivka. */
html:root .cta-float{
  transition:opacity 180ms cubic-bezier(.16,1,.30,1),
             transform 180ms cubic-bezier(.16,1,.30,1),
             visibility 0s linear 180ms}
html:root .cta-float.show{transition-delay:0s,0s,0s}

/* ═══ OBRAZOVKA 04: SVĚTLÝ ZÁVOJ, TMAVÝ TEXT (5. 9.) ═════════════════
   Závoj má podle zadání být rgba(5,5,5,.55) → 0 do 62 % šířky. Tvar
   zůstává, barva se obrací: fotka stanice je SVĚTLÁ (soumrak, bílá
   obloha), takže bílý text na tmavém závoji měl 1,38 až 2,77 : 1.
   Tmavý text na světlém závoji má 7 : 1 a výš — a je to táž barva,
   jakou pro čísla žádá bod 6 (#050505). Naměřená čísla obou variant
   jsou ve zprávě. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela::after{
    background:linear-gradient(90deg,
      rgba(255,255,255,.80) 0%,
      rgba(255,255,255,.74) 22%,
      rgba(255,255,255,.58) 38%,
      rgba(255,255,255,.34) 50%,
      rgba(255,255,255,.11) 58%,
      rgba(255,255,255,0) 62%)}
  html:root #scHist:has(.hs-fr--dukaz.on) .hs-cas::before{
    top:-300px;
    background:linear-gradient(180deg,
      rgba(255,255,255,0) 0%,
      rgba(255,255,255,.20) 24%,
      rgba(255,255,255,.56) 46%,
      rgba(255,255,255,.84) 68%,
      rgba(255,255,255,.94) 86%,
      rgba(255,255,255,1) 100%)}
}
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h,
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h em,
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h span{color:#050505}
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .lead,
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{color:#383E42}
html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj b,
html:root body:has(.pin) .sc-wipe--hist .hs-udaj b,
html:root body:has(.pin) #scHist.hs-svetlo .hs-fr--dukaz .hs-udaj b{color:#050505}
html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj span,
html:root body:has(.pin) .sc-wipe--hist .hs-udaj span,
html:root body:has(.pin) #scHist.hs-svetlo .hs-fr--dukaz .hs-udaj span{
  /* #5A5A5F ze zadání vyšlo na 1920 na 4,45 : 1, tedy o pět setin pod
     normou; #383E42 je z téže palety a dá 5,4. */
  color:#383E42;margin-top:6px}
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas,
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas *{color:#050505}
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas-od,
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas-do,
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas-stop{color:#5A5A5F}

/* Bílý přechod pod čísly patří na RÁM obrazovky, ne na pás osy: pás
   leží v obsahovém sloupci a jeho přesah se ořezával, takže čísla
   vpravo zůstala na tmavé části fotky (naměřeno 1,00 až 1,52 : 1). */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz::after{
    content:"";display:block;position:absolute;z-index:1;pointer-events:none;
    left:calc(50% - 50vw);width:100vw;bottom:0;height:440px;
    background:linear-gradient(180deg,
      rgba(255,255,255,0) 0%,
      rgba(255,255,255,.22) 26%,
      rgba(255,255,255,.60) 50%,
      rgba(255,255,255,.86) 72%,
      rgba(255,255,255,1) 100%)}
  html:root #scHist:has(.hs-fr--dukaz.on) .hs-cas::before{display:none}
}

/* Popiska a perex na 04 mají o stupeň tmavší šeď — na světlém závoji
   nad fotkou vycházely 3,53 a 4,42 : 1, norma je 4,5. */
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .lead,
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{color:#1D1D1F}

/* ═══ DOBOVÉ OBRAZOVKY: TEXT ZPÁTKY SVĚTLÝ (5. 9.) ═══════════════════
   Při sjednocování palety jsem perexům historie nasadil #383E42. Na
   obrazovkách 04 a 05, které jsou světlé, to sedí — na dobových, kde
   text leží na tmavé fotce, z toho byla tmavá na tmavé: naměřeno
   1,00 : 1 na „Early electric taxis…" a 1,41 na popisce „1897".
   Tady je text světlý, jak byl. */
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy .lead,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy .lead{
  color:#F4F4F2}
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy .eyebrow,
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy .eyebrow span,
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy .eyebrow em{
  color:#FFFFFF}
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-dvojveta,
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-dvojveta span{
  color:#F4F4F2}
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-ilu-p{
  color:#FFFFFF}

/* Závoj na dobových obrazovkách má být podle zadání rgba(5,5,5,.55).
   Na téhle sadě fotek to nestačí: perex vyšel 1,76 : 1 a popiska 1,24.
   Tvar i konec v 62 % zůstávají, hustota jde na .82 — při ní má
   nejslabší text 4,7 : 1. Obě čísla jsou ve zprávě. */
html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-cela::after{
  background:linear-gradient(90deg,
    rgba(5,5,5,.82) 0%,
    rgba(5,5,5,.74) 18%,
    rgba(5,5,5,.52) 34%,
    rgba(5,5,5,.24) 48%,
    rgba(5,5,5,.07) 57%,
    rgba(5,5,5,0) 62%)}
html:root #scHist .hs-fr--cela.hs-fr--vpravo .hs-cela::after{
  background:linear-gradient(270deg,
    rgba(5,5,5,.82) 0%,
    rgba(5,5,5,.74) 18%,
    rgba(5,5,5,.52) 34%,
    rgba(5,5,5,.24) 48%,
    rgba(5,5,5,.07) 57%,
    rgba(5,5,5,0) 62%)}
/* Popiska ilustrace má vlastní tmavou pilulku — leží na fotce mimo
   závoj. */
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-ilu-p{
  background:rgba(5,5,5,.72);padding:7px 12px;border-radius:4px}

/* Závoj přes celou obrazovku nestačí na nejhorší pixel v rámečku textu
   (fotky mají světlá místa i vlevo). Sloupec textu proto dostává ještě
   vlastní měkký podklad ukotvený k okraji okna — týž princip jako
   u vrstev. Konec je nejpozději v 55 % šířky okna, tedy uvnitř meze
   ze zadání. */
html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy{position:relative;z-index:2}
html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy::before{
  content:"";position:absolute;z-index:-1;pointer-events:none;
  top:-44px;bottom:-44px;left:calc(50% - 50vw);right:-16%;
  background:linear-gradient(90deg,
    rgba(5,5,5,.90) 0%, rgba(5,5,5,.86) 64%,
    rgba(5,5,5,.52) 84%, rgba(5,5,5,0) 100%)}
html:root #scHist .hs-fr--cela.hs-fr--vpravo .hs-copy::before{
  left:-16%;right:calc(50% - 50vw);
  background:linear-gradient(270deg,
    rgba(5,5,5,.90) 0%, rgba(5,5,5,.86) 64%,
    rgba(5,5,5,.52) 84%, rgba(5,5,5,0) 100%)}
html:root body:has(.pin) #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-dvojveta em{color:#F4F4F2}

/* Popiska ilustrace má tmavou pilulku na všech obrazovkách historie,
   kde leží na fotce — i na té zrcadlené (1943), kde stojí mimo závoj
   a měřila 1,19 : 1. */
html:root body:has(.pin) #scHist .hs-fr--cela .hs-ilu-p,
html:root body:has(.pin) #scHist .hs-fr--cela .hs-kredit,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--cela .hs-ilu-p{
  background:rgba(5,5,5,.78);padding:7px 12px;border-radius:4px;color:#FFFFFF}
/* Na telefonu je sloupec textu širší, závoj proto o kus hustší. */
@media (max-width:900px){
  html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy::before{
    right:-6%;
    background:linear-gradient(90deg,
      rgba(5,5,5,.96) 0%, rgba(5,5,5,.95) 80%,
      rgba(5,5,5,.66) 92%, rgba(5,5,5,0) 100%)}
}

/* Telefon: obrazovka 04 má tytéž dva přechody jako na počítači —
   světlý zleva pod textem a světlý zdola pod čísly. Bez nich měla
   čísla na fotce 1,34 : 1. */
@media (max-width:900px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela::after{
    content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(180deg,
      rgba(255,255,255,.86) 0%,
      rgba(255,255,255,.78) 34%,
      rgba(255,255,255,.62) 58%,
      rgba(255,255,255,.72) 78%,
      rgba(255,255,255,1) 100%)}
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-udaj b{color:#050505}
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-udaj span{color:#383E42}
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h,
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h span,
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h em{color:#050505}
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .lead,
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{color:#1D1D1F}
}

/* „The story begins ↓" jde na levou stranu. Stálo přesně v pruhu
   pilulky a jak se s dojezdem scény po pár pixelech posouvalo, pilulka
   se u každého kroku rozsvítila a zhasla — to bylo to problikávání na
   začátku historie (31 změn krytí na úseku 5800–7600 px). */
@media (min-width:901px){
  html:root .hs-zacatek{
    right:auto;left:0;bottom:calc(var(--hs-pod,0px) + 26px)}
}

/* ═══ ŽÁDNÝ OBDÉLNÍK V PODKLADU (5. 9.) ══════════════════════════════
   Michaela: „fotky mají šedý nádech a někde šedý obdélník v podkladu."
   Byly to moje závoje pod sloupcem textu: vodorovně se rozplývaly, ale
   nahoře a dole měly rovný řez, takže z nich byl obdélník s hranou.
   Přidává se maska, která je rozpustí i svisle — plocha zůstává tam,
   kde je text, a nikde nekončí čarou. */
html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy::before,
html:root #scLayers .lay-copy::before{
  -webkit-mask-image:linear-gradient(180deg,
    rgba(0,0,0,0) 0%, rgba(0,0,0,.55) 12%, #000 30%,
    #000 70%, rgba(0,0,0,.55) 88%, rgba(0,0,0,0) 100%);
  mask-image:linear-gradient(180deg,
    rgba(0,0,0,0) 0%, rgba(0,0,0,.55) 12%, #000 30%,
    #000 70%, rgba(0,0,0,.55) 88%, rgba(0,0,0,0) 100%)}
/* Závoj pod textem sahá výš a níž, aby měl kde vyblednout. */
html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy::before{
  top:-96px;bottom:-96px}
html:root #scLayers .lay-copy::before{top:-120px;bottom:-120px}

/* Po zjemnění závoje má popiska „THE COMMERCIAL PROOF" 4,08 : 1 —
   plná černá ji vrací nad normu. */
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{color:#050505}

/* ═══ ELIPSY PŘESNĚ PODLE PROLOŽENÍ (5. 9.) ══════════════════════════
   ZADANI-HOMEPAGE-SEDM.md, bod 1. Geometrie je odečtená z Radkovy
   kresby proložením kuželosečky; všechno je v násobcích D = průměr
   kolečka = 8vw (na 1440 × 900 je to 115 px).

     šedá elipsa    poloosy 2,627 D × 1,909 D, sklon 0°
     růžová elipsa  poloosy 2,174 D × 1,585 D, sklon 28°
     společný střed
     ENERGY   +1,501 D vpravo, 0,805 D nahoru
     MACHINE  −1,945 D vlevo,  0,971 D dolů

   Rám kresby = obálka šedé elipsy: 5,254 D × 3,818 D, tedy 42,03 vw
   na šířku a poměr 1 : 0,7267. Procenta níž jsou z toho dopočtená,
   ne odhadnutá. */
@media (min-width:901px){
  html:root #scHist .hs-diagram{
    width:42.03vw;max-width:none;max-height:none;
    aspect-ratio:5.254 / 3.818;
    justify-self:end;align-self:center}
  /* šedá: obálka rámu, bez sklonu */
  html:root #scHist .hs-diagram::before{
    inset:0;border-radius:50%;transform:none;
    border:1px solid rgba(255,255,255,.20)}
  /* růžová: 82,76 % šířky a 83,03 % výšky rámu, týž střed, sklon 28° */
  html:root #scHist .hs-diagram::after{
    inset:auto;left:8.62%;top:8.485%;
    width:82.76%;height:83.03%;
    border-radius:50%;transform:rotate(28deg);
    border:1px solid rgba(251,84,148,.55)}
  html:root #scHist .hs-kruh--energie{
    left:calc(78.57% - 4vw);top:calc(28.92% - 4vw);right:auto;bottom:auto}
  html:root #scHist .hs-kruh--stroj{
    left:calc(12.98% - 4vw);top:calc(75.43% - 4vw);right:auto;bottom:auto}
}

/* ═══ POSLEDNÍ KAPITOLA ZPĚT (5. 9.) ═════════════════════════════════
   ZADANI-HOMEPAGE-SEDM.md, bod 5: pro poslední kapitolu se pravidlo
   „max. šířka textu 680 px" a zarovnání na mřížku RUŠÍ. Byla to moje
   úprava z designového kola a rozhodila sazbu: popiska stála na 380 px,
   nadpis na 186, perex na 508 — tři různé levé linky pod sebou.
   (Projekt není v gitu, takže se nedá vzít revizí; vracím přesně ta
   dvě pravidla, která to způsobila — jsou vypsaná ve zprávě.) */
body:has(.pin) #zaver .eyebrow,
body:has(.pin) #zaver .lead,
body:has(.pin) #zaver .vr-p,
body:has(.pin) #zaver .vr-h,
body:has(.pin) #zaver .vr-h .accent,
body:has(.pin) #zaver .vr-dvojradek span{
  max-width:none;margin-inline:0}

/* ═══ OBRAZOVKA 04: ZÁVOJ PŘESNĚ PODLE ZADÁNÍ (5. 9.) ════════════════
   ZADANI-HOMEPAGE-SEDM.md, bod 2. Závoj je tmavý, zleva rgba(5,5,5,.55)
   do nuly nejpozději v 62 % šířky, a nemá hranu ani nahoře a dole —
   je to jediný prvek pod textem, nic s okrajem tam není.
   Text nad ním je proto světlý. Spodní pruh s čísly a osou si nechává
   svůj světlý přechod a tmavá čísla podle ZADANI-HOMEPAGE-SEST bodu 6. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela::after{
    /* Hustota je .86, ne .55 ze zadání: fotka stanice je světlá
       (soumrak, bílá obloha) a při .55 má perex 1,40 : 1 a nadpis
       2,79. Tvar, směr i konec v 62 % jsou přesně podle zadání,
       mění se jen krytí. Obě čísla jsou ve zprávě. */
    background:linear-gradient(90deg,
      rgba(5,5,5,.86) 0%,
      rgba(5,5,5,.78) 18%,
      rgba(5,5,5,.56) 34%,
      rgba(5,5,5,.28) 48%,
      rgba(5,5,5,.08) 57%,
      rgba(5,5,5,0) 62%)}
}
/* Bílý text patří jen na počítač, kde je závoj tmavý. Na telefonu má
   obrazovka 04 světlý přechod a tmavý text — bez tohohle omezení se
   bílý nadpis přelil i tam a byl na světlé fotce nečitelný. */
@media (min-width:901px){
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h,
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h em,
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .h span{color:#FFFFFF}
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .lead{color:#F4F4F2}
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{color:#FFFFFF}
}

/* Perex na 04 sahá dál doprava než nadpis a při .28 krytí závoje měl
   1,94 : 1. Vlastní podklad pod sloupcem textu ale nepřipadá v úvahu —
   Michaela ho dvakrát nahlásila jako „rámeček za textem". Řeší to
   tedy sazba: perex se zalomí dřív a zůstane v husté části závoje.
   Pod textem tak leží JEDINÝ prvek a je to přechod. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .lead{
    max-width:min(480px,42%)}
}
}

/* Popiska měla rámeček přes celý sloupec (642 px), takže do něj spadl
   i světlý kus fotky vpravo — měřidlo z toho počítalo 2,51 : 1, i když
   pod písmeny je tma. Rámeček se smrskne na text. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{
    width:max-content;max-width:100%;justify-self:start;align-self:start}
}

/* ═══ ČÍSLA U OSY NEJSOU NALEPENÁ NA ČÁRU (5. 9.) ════════════════════
   ZADANI-HOMEPAGE-SEDM.md, bod 3: mezera od účaří k ose nejméně
   0,75 × výška verzálky a nikdy méně než 14 px, na obou stranách
   stejná. Naměřeno: jména firem 9 px nad osou, letopočty 16 px pod ní.
   Jména jdou nahoru na 16 px, puntík zůstává na ose. */
html:root .hs-cas-stop{bottom:17px}
html:root .hs-cas-stop::after{bottom:-20px}

/* ═══ TELEFON: OBRAZOVKA 04 A 05 (5. 9.) ═════════════════════════════
   Na 390 px se čtyři údaje mačkaly do čtyř sloupců po 90 px a čísla
   ve 31 px se přes sebe přelévala. Jdou do dvou řad po dvou. */
@media (max-width:900px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh{
    grid-template-columns:repeat(2,minmax(0,1fr));
    row-gap:clamp(10px,2vh,18px);column-gap:clamp(12px,4vw,24px)}
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-udaj b{
    font-size:clamp(19px,6.4vw,24px)}
}

/* Na telefonu se obě půlky „dvou vítězů" skládaly pod sebe, ale první
   měla `height:100%` z desktopového pravidla, což ve sloupci vyjde
   jako nula — obě se pak překrývaly a jména se sázela přes sebe.
   Ve sloupci si výšku berou z obsahu. */
@media (max-width:900px){
  /* Řádky mřížky musí být `auto`: z počítače tu zůstávalo
     `minmax(0,1fr) auto`, takže prostřední řádek vyšel na nulu
     a obě půlky se ve sloupci překryly. */
  /* Na výšku se dvě půlky pod sebou na telefon nevejdou: potřebují
     přes 800 px a obrazovka jich nabízí 454. Zůstávají proto vedle
     sebe jako na počítači, jen v malém — fotka 110 px, jméno menší,
     věta a štítky segmentů se na telefonu nesázejí. */
  html:root body:has(.pin) #scHist .hs-fr--dva{
    grid-template-columns:1fr 1fr !important;
    grid-template-rows:auto auto !important;grid-auto-rows:auto;
    align-items:start;
    align-content:start;row-gap:clamp(14px,2.4vh,22px);
    column-gap:clamp(10px,3vw,16px);
    padding-left:clamp(20px,5vw,28px);padding-right:clamp(20px,5vw,28px)}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-dva-nadpis{grid-column:1/-1;grid-row:1}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul--nio{grid-column:1;grid-row:2}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul--nase{grid-column:2;grid-row:2}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-cela{
    height:clamp(96px,14vh,130px)}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul-veta,
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-segmenty,
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-kredit{display:none}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul-jm{
    font-size:clamp(19px,5.4vw,24px)}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul-cisla{font-size:11px}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul{
    height:auto !important;min-height:0;position:relative;display:flex;
    flex-direction:column;gap:clamp(8px,1.4vh,14px)}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-cela{
    position:relative;flex:none;border-radius:4px;overflow:hidden}
  html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-pul-text{
    position:static !important;padding:0;background:none;inset:auto}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-lab{color:#383E42}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm,
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm a,
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm--nase span,
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-jm--nase em{color:#050505}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-veta,
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-cisla{color:#383E42}
  html:root #scHist .hs-fr--dva .hs-pul .hs-pul-cisla b{color:#050505}
  html:root #scHist .hs-fr--dva .hs-pul .hs-segmenty span{
    color:#383E42;border-color:rgba(5,5,5,.18)}
  html:root #scHist .hs-fr--dva .hs-pul .hs-kredit{
    position:absolute;top:auto;bottom:0;left:0;right:auto;
    background:rgba(5,5,5,.72);color:#fff;padding:5px 9px;font-size:9px}
}

/* Na telefonu druhá řada čísel dosedala na pás časové osy — popisky
   „RELIABILITY" a „COMMERCIAL OPERATION" ležely na čáře. Pruh se
   zvedne o výšku pásu a čísla jsou o stupeň menší. */
@media (max-width:900px){
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh{
    padding-bottom:calc(var(--hs-osa-scena,120px) + clamp(10px,2vh,18px))}
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-udaj b{
    font-size:clamp(19px,5.6vw,24px)}
}

/* ═══ DOBOVÉ FOTKY VYPLNÍ RÁM (5. 9. odpoledne) ══════════════════════
   ZADANI-HOMEPAGE-OSM.md, bod 5. Rám měl 100 % obrazovky, ale fotka
   v něm ne: při `object-fit:contain` se vešla na šířku a zbylo jí
   810 px v rámu vysokém 1032 — nahoře a dole 111 px prázdna, kterým
   prosvítal podklad. To byl ten „šedý podtón".

   `cover` s ořezem na střed: hlavní motiv je u všech tří uprostřed
   (auto s obsluhou v depu, náklaďák s dělníky v garáži, dodávka
   s paletou), takže se ubírá jen z krajů — u dobové fotky vlevo
   část řady zaparkovaných vozů.

   Filtr `contrast(.96)` je pryč. Bez něj mají fotky svůj původní
   kontrast; rozdíl je ve zprávě změřený. */
html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-cela img,
html:root .sc-wipe--hist .hs-fr--cela:not(.hs-fr--dukaz) .hs-cela img{
  object-fit:cover;object-position:50% 50%;
  width:100%;height:100%}
html:root #scHist img[src$="hist-taxi-depo.webp"],
html:root #scHist img[data-src$="hist-taxi-depo.webp"],
html:root #scHist img[src$="hist-garaz-vymena.webp"],
html:root #scHist img[data-src$="hist-garaz-vymena.webp"],
html:root #scHist img[src$="hist-dodavka-vymena.webp"],
html:root #scHist img[data-src$="hist-dodavka-vymena.webp"]{filter:none}

/* ═══ KAPITOLA 03 SE ZAROVNÁ JAKO OPENER (5. 9. večer) ═══════════════
   ZADANI-HOMEPAGE-KAPITOLA-03.md, bod 1. Michaela: „je opět nějak
   rozhozený ten text na celé stránce". Byla to jediná kapitola na
   stránce se `text-align:center` — matematicky vystředěná správně,
   ale její tři bloky začínaly na 541, 353 a 563 px, tedy na třech
   různých místech. Ostatní kapitoly mají jednu levou linku.

   Teď je zarovnaná vlevo na tutéž linku jako opener (186 px na
   1440 × 900), odstavec drží 680 px z DESIGN-SYSTEM.md. Růžová
   diagonála přes obrazovku zůstává. */
html:root body:has(.pin) #scHist .hs-fr--obrat,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--obrat{
  justify-items:start;text-align:left}
html:root body:has(.pin) #scHist .hs-fr--obrat .hs-copy,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--obrat .hs-copy{
  width:min(1040px,100%);max-width:none;margin:0;
  justify-items:start;text-align:left}
html:root body:has(.pin) #scHist .hs-fr--obrat .lead,
html:root body:has(.pin) #scHist .hs-fr--obrat .hs-dvojveta:not(.hs-dvojveta--velka){
  max-width:680px;margin-inline:0}

/* ═══ BÍLÝ PŘECHOD AŽ NAD ŘADOU ČÍSEL (5. 9. večer) ══════════════════
   ZADANI-HOMEPAGE-KAPITOLA-03.md, bod 2. Přechod začínal v polovině
   obrazovky (CSS y 516 z 956) a spodních 40 % fotky vybělil skoro do
   bíla — naměřeno 238 z 255 u dolní hrany. Čísla začínají na y 762,
   takže přechod teď startuje těsně nad nimi a fotka nad ním zůstane
   fotkou. Čísla jsou pořád tmavá a čitelná, čísla jsou ve zprávě. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz::after{
    /* Pruh čísel se zvedl o řádek (kvůli jménům na ose), takže přechod
       začíná o tolik výš — pořád ale až pod polovinou obrazovky. */
    height:clamp(230px,33vh,330px);
    background:linear-gradient(180deg,
      rgba(255,255,255,0) 0%,
      rgba(255,255,255,.34) 16%,
      rgba(255,255,255,.72) 38%,
      rgba(255,255,255,.90) 62%,
      rgba(255,255,255,1) 100%)}
}

/* Popiska na 04 měla rámeček přes celý sloupec (642 px), takže do něj
   spadl i světlý kus fotky vpravo a měřidlo z toho počítalo 2,51 : 1,
   ačkoli pod písmeny je tma. Rámeček se drží textu. */
@media (min-width:901px){
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow{
    width:max-content !important;max-width:100%;justify-self:start}
}

/* Popisky pod čtyřmi čísly a jména značek na ose se překrývaly
   (naměřeno: popisky 758–773, značky 772–787, a vodorovně se
   prokládaly). Pruh čísel se zvedne o řádek. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh{
    padding-bottom:calc(var(--hs-osa-scena,130px) + clamp(28px,4vh,44px))}
}

/* ═══ VYHRAZENÝ PRUH PRO PILULKU (5. 9. večer) ═══════════════════════
   ZADANI-HOMEPAGE-PILULKA.md: pilulka nemá zhasínat, když jí něco leží
   v cestě — má mít místo, kam nikdy nic jiného nesmí. Skript proto od
   dneška nezkoumá obsah pod pilulkou vůbec (obsazeno() je pryč) a to
   místo drží CSS.

   Šířka pruhu je spočítaná, ne odhadnutá: odsazení pilulky od pravého
   okraje + její naměřená šířka (224 px na desktopu) + 8 px vůle. */
html:root{--pil-pruh:calc(clamp(20px,2.4vw,34px) + 224px + 10px)}

@media (min-width:901px){
  /* Časová osa. Krajní letopočet „1897 … 2026" stál doteď v pravém
     dolním rohu a pilulka ho celý zakrývala (naměřeno: štítek 1356–1382
     × 821–836 px, pilulka 1182–1406 × 797–860 — tedy uvnitř). Osa teď
     končí o šířku pruhu dřív; čára, běžec i letopočet se posunou spolu,
     takže rozsah čte pořád stejně. */
  html:root .hs-cas,
  html:root #scHist .hs-cas,
  html:root .sc-wipe--hist .hs-cas{
    padding-right:max(clamp(20px,4vw,60px), var(--pil-pruh))}

  /* Poslední kapitola: pravá půlka („Battery swapping built around…")
     psala text až k okraji. */
  html:root #scHist .hs-fr--dva .hs-pul--nase .hs-pul-text,
  html:root #scHist .hs-fr--dva .hs-pul--nase .hs-pul-veta{
    padding-right:0;max-width:calc(100% - var(--pil-pruh) + 120px)}

  /* Závěrečná výzva a patička se na rozdíl od scén ROLUJÍ, takže jimi
     obsah projede rohem, ať je odsazený zespodu jakkoli. Jediné, co
     roh spolehlivě uvolní, je nepsat do pravého pruhu vůbec. */
  html:root #zaver .vr-in{padding-right:var(--pil-pruh)}
  html:root .footer .wrap{padding-right:var(--pil-pruh)}
}

/* Na telefonu se pruh vyhradit nedá: 224 px pilulky je 57 % z 390 px
   šířky okna, takže by se do zbylých 166 px musel vejít nadpis, text
   i celý pás časové osy. Jediné, co jde a co je vidět jako vada, je
   krajní letopočet osy — pilulka ho celý zakrývala (naměřeno: štítek
   343–370 px, pilulka 164–370). Pilulka se proto na telefonu zvedne
   nad pás osy. Když pás na obrazovce není (`--hs-pod` je 0), zůstává
   tam, kde byla. */
@media (max-width:900px){
  html:root .cta-float{bottom:calc(var(--hs-pod,0px) + 14px)}
}

/* ═══ KOLEČKA LEŽÍ PŘES ELIPSY (5. 9. večer) ═════════════════════════
   ZADANI-HOMEPAGE-PILULKA.md, bod 2. Michaela: „tady prosím tě není to
   černé kolečko, které by bylo přes tu růžovou linku."

   Příčina je pořadí vykreslování, ne poloha. Elipsy jsou `::before`
   a `::after` rámu, kolečka jsou jeho běžné děti — a `::after` se
   podle specifikace kreslí AŽ ZA obsahem prvku. Růžová čára tedy
   přejížděla po černém kolečku (naměřeno 424 růžových pixelů uvnitř,
   u Radka 0).

   Mění se jen pořadí: kolečka dostanou `z-index:1`, elipsy zůstávají
   na nule. Poloha, velikost ani barvy se nedotýkají — střed ENERGY
   leží dál na růžové elipse a růžová čára dál obíhá kolem MACHINE,
   jen za ním. */
html:root .hs-diagram::before,
html:root .hs-diagram::after{z-index:0}
html:root .hs-kruh{z-index:1}

/* ═══ ŠMOUHY, STÍN NA NAŠÍ KARTĚ A ČÍSLA NAD OSOU (6. 9. ráno) ═══════
   Michaela: „v historii to dělá nějaké šmouhy … ty čísla zas nad tu
   osu, je to celé nějak u sebe … u nás je zas nějaký stín vpravo."

   Všechny tři jsou změřené, ne dojem.

   1) ŠMOUHY. Sloupec textu měl vlastní tmavý podklad (.hs-copy::before)
      navíc k závoji přes celý snímek. Maska ho měla svisle rozpustit,
      ale nerozpustila: na obrazovce 1972 je mezi dvěma SOUSEDNÍMI
      řádky skok 38 z 255, na 1943 skok 30. To je ta vodorovná šmouha
      přes fotku. Ruší se celý; zůstává jen závoj přes celý snímek
      (.hs-cela::after), který běží vodorovně, a proto vodorovnou
      hranu udělat nemůže.

   2) STÍN VPRAVO NA NAŠÍ KARTĚ. Fotka karty je 664 px široká, ale její
      závoj jen 516 px — 148 px fotky zůstávalo bez závoje, a tam byl
      ten svislý stín. Vinu měl max-width, který drží text mimo pruh
      pilulky. Text tam zůstává; omezení se přesouvá na jeho obsah,
      takže závoj kryje celou kartu a nemá kde udělat hranu.

   3) ČÍSLA U OSY. Řada údajů a časová osa visí každá na jiném boxu:
      údaje končily na 844 px, osa začínala na 833 px — PŘEKRÝVALY SE
      o 11 px. Proto to bylo „celé u sebe". Odsazení řady se zvětšuje
      tak, aby mezi popiskem a osou zbylo přes 40 px, a mezera mezi
      číslem a jeho popiskem roste z 6 na 12 px. */

html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy::before,
html:root .sc-wipe--hist .hs-fr--cela:not(.hs-fr--dukaz) .hs-copy::before{
  display:none}

@media (min-width:901px){
  html:root #scHist .hs-fr--dva .hs-pul--nase .hs-pul-text,
  html:root #scHist .hs-fr--dva .hs-pul--nase .hs-pul-veta{
    max-width:none;width:100%}
  html:root #scHist .hs-fr--dva .hs-pul--nase .hs-pul-text > *{
    max-width:calc(100% - var(--pil-pruh) + 120px)}

  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-pruh{
    padding-bottom:calc(var(--hs-osa-scena,130px) + clamp(12px,1.5vh,20px))}
}
html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj span,
html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-udaj span,
html:root body:has(.pin) .sc-wipe--hist .hs-udaj span,
html:root #scHist .hs-fr--dukaz .hs-udaj span,
html:root .sc-wipe--hist .hs-udaj span{margin-top:8px}


/* ═══ ŠEDÝ PRUH PŘES FOTKY PRYČ (6. 9. dopoledne) ════════════════════
   Michaela: „proč je pořád ta historie takováhle? je tam zas nějaký
   šedý pruh u všech fotek."

   Změřeno: závoj přes celý snímek bral fotce až 109 z 255 jasu, a to
   souvisle přes 62 % šířky — proto to nevypadá jako fotka, ale jako
   fotka pod šedým sklem. Byl to vodorovný přechod, takže tmavil i
   místa, kde žádný text není.

   Nahrazuje se eliptickým přechodem se středem tam, kde text opravdu
   je. Elipsa nemá žádnou hranu, ani vodorovnou, ani svislou, a na
   opačné straně snímku už nemá co ubírat — naměřeno 0 až 4 z 255
   místo 98 až 109. Kontrast textu zůstává nad normou. */
html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-cela::after,
html:root .sc-wipe--hist .hs-fr--cela:not(.hs-fr--dukaz) .hs-cela::after{
  background:radial-gradient(78% 60% at 22% 58%,
    rgba(5,5,5,.74) 0%, rgba(5,5,5,.60) 26%, rgba(5,5,5,.30) 52%,
    rgba(5,5,5,.08) 72%, rgba(5,5,5,0) 88%)}
html:root #scHist .hs-fr--cela.hs-fr--vpravo:not(.hs-fr--dukaz) .hs-cela::after,
html:root .sc-wipe--hist .hs-fr--cela.hs-fr--vpravo:not(.hs-fr--dukaz) .hs-cela::after{
  background:radial-gradient(78% 60% at 78% 58%,
    rgba(5,5,5,.74) 0%, rgba(5,5,5,.60) 26%, rgba(5,5,5,.30) 52%,
    rgba(5,5,5,.08) 72%, rgba(5,5,5,0) 88%)}


/* ═══ PÁS PŘES FOTKU — DOJEZD PŘECHODŮ (6. 9. poledne) ═══════════════
   Michaela: „zase špatný ten pás přes ty fotky a je tam nějaký šedý
   stín."

   Našla jsem to měřením: přes VŠECHNY obrazovky historie běžela na
   řádku 864 vodorovná čára se skokem 13 až 18 z 255. Není to stín,
   je to DOJEZD přechodu. Bílý závoj pod časovou osou končil krytím
   .94, ale plocha pod ním je bílá naplno — takže na hranici mezi nimi
   zbývalo 6 % rozdílu, a to je přes celou šířku snímku vidět jako
   linka.

   Všechny přechody, které kryjí plochu stejné barvy, teď dojíždějí
   na plné krytí. Skok na hranici je tím nulový. */

/* ═══ ČASOVÁ OSA LEŽÍ NA FOTCE, NE NA PÁSU (6. 9. večer) ═════════════
   Michaela: „proč nedokážeš dát celou fotku přes celý — na začátku,
   když jsi ty fotky tam dával, tohle tam nebylo, jen jsi tam přes to
   dal tu čáru časovou osu."

   Má pravdu a tohle je ten „pruh", o kterém celý den psala. Pod
   časovou osou ležela tmavá plocha: přechod přes 122 px, který dole
   dojížděl na plné krytí. Fotka pod ním nekončí, je jen zakrytá —
   proto to vypadá, že fotka není přes celou obrazovku.

   Plocha se ruší. Osa leží přímo na fotce, jak to bylo původně.
   Čitelnost drží stín pod písmem, ne plocha pod ním — stín nezabírá
   žádné místo a fotku nezakrývá. */
html:root #scHist .hs-cas::before,
html:root .sc-wipe--hist .hs-cas::before{background:none!important}
html:root #scHist .hs-cas::after,
html:root .sc-wipe--hist .hs-cas::after{display:none!important}

html:root #scHist .hs-cas,
html:root .sc-wipe--hist .hs-cas{
  text-shadow:0 1px 3px rgba(5,5,5,1), 0 0 8px rgba(5,5,5,.96), 0 0 18px rgba(5,5,5,.86)}
html:root #scHist.hs-svetlo .hs-cas,
html:root #scHist .hs-fr--dukaz ~ .hs-cas{
  text-shadow:0 1px 3px rgba(255,255,255,1), 0 0 8px rgba(255,255,255,.96), 0 0 18px rgba(255,255,255,.86)}
/* Stín se dědičností nedostal až k písmu — někde ho pravidlo níž
   nuluje. Sází se proto přímo na prvky s textem. Popisky značek byly
   navíc bílé jen z poloviny; na fotce bez pásu to nestačí. */
html:root #scHist .hs-cas *,
html:root .sc-wipe--hist .hs-cas *{
  text-shadow:0 1px 3px rgba(5,5,5,1), 0 0 8px rgba(5,5,5,.96),
              0 0 18px rgba(5,5,5,.86)!important}
html:root #scHist.hs-svetlo .hs-cas *{
  text-shadow:0 1px 3px rgba(255,255,255,1), 0 0 8px rgba(255,255,255,.96),
              0 0 18px rgba(255,255,255,.86)!important}
html:root #scHist .hs-cas [class*="znac"],
html:root #scHist .hs-cas span{color:rgba(255,255,255,.82)}

/* ═══ KOLEČKO MACHINE NA ŠEDOU ELIPSU (6. 9. večer) ══════════════════
   Latso: „machines nejsou na své elipse v prostředku dráhy, jsou
   mírně vyosená… kolečko MACHINE patří na šedou/bílou elipsu."

   Nedopočítávala jsem to, odečetla jsem to z Radkovy předlohy
   `_upravy/radek-elipsa.png` proložením šedé elipsy:

     šedá elipsa u Radka   poloosy 385,8 × 237,4 px, sklon 1,2°
     ENERGY   +0,568 a, −0,434 b   →  78,41 % / 28,30 %   (u nás 78,57 / 28,92 — sedí)
     MACHINE  −0,574 a, +0,523 b   →  21,30 % / 76,15 %   (u nás 12,98 / 75,43 — NESEDÍ)

   ENERGY tedy odpovídá předloze do 0,6 %, MACHINE je vodorovně
   vedle o 8,3 % šířky rámu. To je přesně to „vyosení". */
@media (min-width:901px){
  html:root #scHist .hs-kruh--stroj{
    left:calc(21.30% - 4vw);top:calc(76.15% - 4vw)}
}

/* Značka v záhlaví byla bílá jen na 74 %, a to ji i na ztmaveném
   podkladu drželo pod normou (3,97 až 4,38 : 1). Plná bílá ji zvedne. */
html:root #scHist .hs-top .hs-brand,
html:root .sc-wipe--hist .hs-top .hs-brand{color:rgba(255,255,255,.96)}

/* ═══ ZÁHLAVÍ HISTORIE LEŽÍ NAD FOTKOU (6. 9. v noci) ═══════════════
   Do teď fotka vyjížděla nahoru pod pruh záhlaví, takže se barva
   nápisů musela volit podle jasu fotky — dvanáct pravidel podle
   `data-era` a u každého ručně naměřený jas podkladu. Stačilo, aby
   se vyměnila fotka nebo se posunul výřez, a byla to znovu vada.

   Teď fotka do horního pruhu nesahá (`.hs-cela` už nemá záporný horní
   okraj) a záhlaví stojí na podkladu scény. Podklad je tím na všech
   obrazovkách jeden a týž, takže výjimky nejsou potřeba a jsou pryč. */


/* Na SVĚTLÝCH obrazovkách historie je záhlaví černé. Pravidlo o tom
   je v souboru už od dřívějška (řádek 5972), jenže pozdější rovnice
   `#scHist .hs-top .hs-brand{color:#FFF}` má stejnou váhu a stála za
   ním, takže značku přebarvila zpátky na bílou — na světlém podkladu
   pak měla 1,14 : 1. Tohle je totéž pravidlo, jen napsané tak, aby
   v kaskádě stálo poslední. Nahrazuje dvanáct výjimek podle data-era. */
html:root #scHist.hs-svetlo .hs-top .hs-brand,
html:root #scHist.hs-svetlo .hs-top .hs-hint,
html:root #scHist.hs-svetlo .hs-top .hs-count,
html:root #scHist.hs-svetlo .hs-top .hs-count b,
html:root #scHist.hs-svetlo .hs-top .hs-celkem{
  color:#050505;text-shadow:none}

/* ═══ ŠTÍTKY VRSTEV NA SVĚTLÉ SCÉNĚ (6. 9. v noci) ═══════════════════
   Nález z průchodu zařízeními: scéna vrstev má na telefonu i na
   iPadu Pro třídu `svetla`, ale štítky si nechaly bílé písmo z tmavé
   varianty. Naměřeno bílá na bílé:

     390 × 844     všech osm štítků   1,00 až 1,14 : 1
     430 × 932     všech osm štítků   1,00 až 1,01 : 1
     1024 × 1366   všech osm štítků   1,14 až 2,64 : 1

   Na snímku `_upravy/over-390-5400.png` po nich není stopa — jsou
   neviditelné, ne špatně čitelné.

   Podklad pod nimi není jednolitý (naměřeno 166 až 255), proto je
   i druhý řádek štítku hodně tmavý: rgba(5,5,5,.72) se na tom
   nejtmavším místě složí do rgb(50,50,50) a drží 6 : 1. Odlišuje se
   velikostí a prostrkáním, ne světlostí. */
html:root #scLayers.svetla .lay-tag b,
html:root .sc-wipe--layers.svetla .lay-tag b{color:#050505}
/* Druhý řádek štítku je PLNĚ tmavý, ne poloprůhledný: na růžové desce
   BattSwapu má podklad jas 144 a rgba(5,5,5,.72) se na něm složí do
   rgb(44,40,41), což dává 3,93 : 1. Plná #050505 tam má 6,30 : 1.
   Od prvního řádku ho odlišuje velikost a prostrkání, ne světlost. */
html:root #scLayers.svetla .lay-tag i,
html:root .sc-wipe--layers.svetla .lay-tag i{color:#050505;opacity:1}


/* ═══ OBRAZOVKA 05: NAŠE KARTA DOSTÁVÁ VÍC PLOCHY (6. 9. v noci) ═════
   Latso: „potřebuji, aby tady v této části více zabírala fotografie
   BattSwapu, jakoby větší plochu."

   Obě karty měly dosud přesně půl na půl (1fr 1fr). Na 1470 px to
   dělalo 664 px každá. Naše karta je ta pravá, tak dostane víc:

     poměr            0,78fr  :  1,22fr
     na 1470 px       527 px  :  825 px     (bylo 664 : 664)
     na 1920 px       690 px  : 1080 px

   Na telefonu a tabletu se nic nemění — tam jsou karty pod sebou
   v jednom sloupci a pravidlo `grid-template-columns:1fr` platí dál. */
@media (min-width:901px){
  html:root #scHist .hs-fr--dva,
  html:root .sc-wipe--hist .hs-fr--dva{
    grid-template-columns:0.78fr 1.22fr}
}

/* ═══ ŠTÍTKY VRSTEV V PÁSMU 701–860 px — NEUDĚLÁNO (7. 9.) ══════════
   Zadání: přebít z kabat.css to, že `styles.css` schovává štítky
   v pásmu 700–861 px, aby byly vidět i na iPadu na výšku.

   Zkusil jsem to dvakrát a obakrát to dopadlo hůř než ten původní
   stav, tak jsem to podle pravidla „dva pokusy a vrátit" vrátil:

     1) rám štítků odvozený z `--lay-w` / `--lay-h`
        → obě proměnné se v tomhle pásmu vůbec nenastavují (naměřeno
          prázdné), rám měl šířku 0 a všechny čtyři štítky se složily
          na jedno místo přes sebe
     2) rám přes celou scénu (`inset:0`) se svislými podíly ze
        styles.css → štítky se nevykreslily vůbec

   Příčina je hlubší než jedno pravidlo: geometrie kresby (`--lay-w`,
   `--lay-h`, `--lay-posun`) se pod 901 px nepočítá, takže není k čemu
   štítky přisunout. Udělat to pořádně znamená rozšířit tu geometrii
   na pásmo 701–860, což je zásah do scény, ne do barev — a to jsem
   sám dělat nechtěl. Popsáno ve zprávě. */


/* ═══ SEDM VELIKOSTÍ PÍSMA NA STUPNICI (7. 9.) ═══════════════════════
   Z průchodu čtyřmi zařízeními: sedm míst leželo pod normou
   z CLAUDE.md (běžný text nikdy pod 15 px, verzálkový popisek nikdy
   pod 12 px). Stupnice z DESIGN-SYSTEM.md nemá 15, takže nejbližší
   platný stupeň nad normou je 16.

     krajní letopočty osy   10   → 12 px   (verzálky, norma 12)
     #hsCasEra              11,5 → 12 px   (verzálky, norma 12)
     čísla v půlkách        11   → 16 px   (běžný text, norma 15)
     odkazy v patičce       14   → 16 px
     odkazy v horní liště   14   → 16 px
     #fanSub .lead          14   → 16 px                              */
html:root .hs-cas-od,
html:root .hs-cas-dnes,
html:root .hs-cas-do{font-size:12px}
html:root .hs-cas-era{font-size:12px}
/* Čísla v půlkách: samotné číslo je tučné a nese hodnotu, popisek
   vedle něj zůstává drobný — norma 15 px platí na text, ne na
   oddělovač. */
html:root .hs-pul-cisla{font-size:16px}
html:root .sc-wipe--hist .hs-pul-cisla{font-size:16px}
html:root .hs-pul-cisla b{font-size:16px}
/* Patička a horní lišta. `styles.css` je má na `--fs-sm`, což je 14 px;
   měnit se nesmí, tak se to přebíjí odsud a jen na homepage. */
body:has(.pin) .nav-links a{font-size:16px}
body:has(.pin) .footer a,
body:has(.pin) .footer .foot-col a,
body:has(.pin) .footer .foot-odkazy a{font-size:16px}
body:has(.pin) #fanSub,
body:has(.pin) #fanSub.lead{font-size:16px}

/* ═══ ZKOUŠKA: FIRMY JAKO DOBOVÉ OBRAZOVKY (7. 9.) ═══════════════════
   Better Place, Ample a Aulton dostanou fotku přes celé okno, jako
   mají obrazovky 1897, 1943 a 1972. Text stojí na ní vlevo, závoj pod
   ním je TÝŽ eliptický přechod jako u dobových — žádná plocha přes
   celou šířku, žádný vodorovný pruh.

   JE TO ZKOUŠKA A JE VRATNÁ: původní rámeček je v souboru na pěti
   místech zakomentovaný pod značkou
   „PŮVODNÍ RÁMEČEK — VRÁTIT ODKOMENTOVÁNÍM"; stačí ta místa
   odkomentovat a smazat tenhle blok. */

  /* Rám obrazovky se vrací do obsahového sloupce; fotka se z něj
     vylomí sama, stejně jako u dobových. */
  /* Obrazovka se vylomí přes celé okno — týž zápis, jaký mají dobové
     obrazovky (`left:50%; width:100vw; margin-left:-50vw` a svislé
     hranice z `--hs-nad` / `--hs-pod`, které počítá script.js). Bez
     toho zůstal rám firmy v obsahovém sloupci a fotka začínala
     o 185 px níž než u dobových (naměřeno 418 proti 233 px). */
  html:root #scHist .hs-fr--firma,
  html:root .sc-wipe--hist .hs-fr--firma{
    grid-template-columns:minmax(0,1fr);
    left:50%;right:auto;width:100vw;margin-left:-50vw;
    top:var(--hs-nad,0px);bottom:var(--hs-pod,0px);
    align-items:center;
    padding-top:calc(var(--hs-lista-scena,150px) + clamp(10px,1.6vh,20px));
    padding-bottom:calc(var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px))}

  /* FOTKA PŘES CELÉ OKNO. Táž konstrukce jako `.hs-cela` u dobových:
     vylomí se z mřížky, leží pod celou obrazovkou a text stojí na ní.
     Horní hrana začíná pod pruhem záhlaví — záhlaví zůstává nad
     fotkou, jak je od 6. 9. */
  html:root #scHist .hs-fr--firma .hs-ram{
    position:absolute;z-index:0;order:0;
    top:calc(var(--hs-lista-scena,150px) + clamp(10px,1.6vh,20px));
    bottom:0;left:0;right:0;
    width:auto;height:auto;max-width:none;
    margin:0 0 calc(-1 * (var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px)));
    border:0;border-radius:0;overflow:hidden;background:#0B0C0F}
  html:root #scHist .hs-fr--firma .hs-ram img{
    position:absolute;inset:0;
    width:100%;height:100%;max-width:none;
    object-fit:cover;object-position:50% 50%;
    aspect-ratio:auto;display:block}

  /* ZÁVOJ — týž eliptický přechod jako u dobových obrazovek.
     Elipsa 78 % × 60 % se středem v 22 % / 58 %, špička .74. */
  html:root #scHist .hs-fr--firma .hs-ram::after{
    content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
    background:radial-gradient(78% 60% at 22% 58%,
      rgba(5,5,5,.74) 0%, rgba(5,5,5,.60) 26%, rgba(5,5,5,.30) 52%,
      rgba(5,5,5,.08) 72%, rgba(5,5,5,0) 88%)}

  /* Text stojí na fotce vlevo, v téže šířce jako u dobových. */
  html:root #scHist .hs-fr--firma .hs-copy{
    position:relative;z-index:2;order:1;
    align-self:center;justify-self:start;
    width:min(56%,660px);max-width:none;
    /* Táž levá linka jako u dobových obrazovek (57,6 px na 1440). */
    padding-left:clamp(20px,4vw,72px)}

  /* Popiska ilustrace: 12 px a tmavá pilulka, jakou má popiska
     na dobových obrazovkách. Do teď měla 9 px (`.hs-fr--firma
     .hs-kredit`) a na fotce přes celé okno se nedala přečíst. */
  /* Popiska se drží VIDITELNÉ spodní hrany fotky, ne skutečné: fotka
     přetéká pod pás osy o jeho výšku, takže popiska u `bottom:0` by
     spadla mimo okno (naměřeno y 1036 při okně 900). */
  html:root #scHist .hs-fr--firma .hs-ram .hs-kredit{
    position:absolute;z-index:2;left:0;right:auto;
    bottom:calc(var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px));
    max-width:min(58%,560px);
    font-size:12px;letter-spacing:.06em;line-height:1.35;
    padding:7px 12px;white-space:normal;overflow:visible;
    background:rgba(5,5,5,.78);color:rgba(255,255,255,.92)}

/* Text na fotce: na úzkém okně přes celou šířku, na širokém v levé
   polovině jako u dobových obrazovek. */
@media (max-width:900px){
  html:root #scHist .hs-fr--firma .hs-copy{width:100%;padding-left:clamp(16px,5vw,28px)}
}

/* Perex byl tmavě šedý (#383E42) z doby, kdy stál na tmavé ploše
   scény, ne na fotce — na fotce má 1,14 až 1,76 : 1. Na zkušebních
   obrazovkách bere tutéž barvu jako perex dobových obrazovek. */
/* Váha musí být vyšší než u pravidla `body:has(.pin) #scHist .hs-copy
   .lead`, které perex barví na #383E42 — proto je tu `body:has(.pin)`
   taky. Bez toho moje pravidlo prohrálo, i když stálo poslední. */
html:root body:has(.pin) #scHist .hs-fr--firma .hs-copy .lead,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--firma .hs-copy .lead{
  color:rgba(255,255,255,.92)}
/* Štítek „Liquidated · 2013": růžové písmo o 11 px má na závoji
   4,19 : 1 při normě 4,5. Rámeček zůstává růžový (je to plocha, ne
   písmo), nápis jde do bílé — 13 : 1 a značková barva se neztrácí. */
html:root #scHist .hs-fr--firma .hs-stitek,
html:root .sc-wipe--hist .hs-fr--firma .hs-stitek{color:#FFFFFF}

/* Očko nad nadpisem bylo růžové (#FB5494) o 12,5 px. Na fotce přes
   celé okno má na světlejších místech 1,06 až 1,70 : 1 — Aulton
   i Ample mají přesně v tom pruhu bílou stěnu. Design systém přitom
   říká „popisky nad nadpisy jsou šedé s krátkou růžovou čárkou, ne
   růžové písmo", takže se očko sjednocuje s dobovými obrazovkami:
   bílé. Růžová na těch obrazovkách zůstává na rámečku štítku. */
html:root body:has(.pin) #scHist .hs-fr--firma .hs-copy .eyebrow,
html:root body:has(.pin) #scHist .hs-fr--firma .hs-copy .eyebrow span,
html:root body:has(.pin) #scHist .hs-fr--firma .hs-copy .eyebrow a,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--firma .hs-copy .eyebrow,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--firma .hs-copy .eyebrow span,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--firma .hs-copy .eyebrow a{
  color:#FFFFFF}

/* Text se sesune k TĚŽIŠTI ZÁVOJE. Elipsa má střed v 58 % výšky, ale
   text byl vystředěný na 50 %, takže očko a nadpis vyčnívaly nad její
   silnou část. Na Aultonu to bylo vidět nejvíc: očko mělo 3,27 : 1,
   po sesunutí o 40 px už 7,24 a po 80 px 8,96. Sesun je v jednotkách
   výšky okna, aby to platilo na všech třech velikostech. */
html:root body:has(.pin) #scHist .hs-fr--firma .hs-copy{
  margin-top:clamp(28px,5vh,64px)}
/* Ample: na iPadu na výšku (834) padne do pruhu s textem bílá stěna
   haly — očko na ní má 2,96 : 1. Výřez se posune doleva, kde je
   stěna ve stínu (naměřeno 6,84 : 1). Ostatní fotky zůstávají na
   50 % 50 %. */
html:root #scHist .hs-chap[data-stopky="ample"] .hs-ram img{
  object-position:15% 50%}

/* ═══ DVĚ VADY Z PŘEJÍMKY (8. 9.) ════════════════════════════════════

   1. TLAČÍTKO „hello@battswap.com" — bílá na značkové růžové
      Naměřeno: #FFFFFF na #FB5494 dává 3,09 : 1 při 16 px, norma 4,5.
      Růžová se nemění — je to jediná růžová značky a patří na akci.
      Mění se písmo: tmavé, přesně jako má druhé růžové tlačítko na
      téže stránce („Calculate your savings" v liště, rgb(5,5,5)).
      Není to nová barva, je to sjednocení s tím, co na stránce platí.

   2. ODKAZ „Calculate your fleet advantage" — dotykový cíl 228 × 22 px
      Norma je 24 px na výšku. Text ani jeho poloha se nemění, jen se
      kolem něj vyhradí místo, na které jde trefit prstem: odsazení
      nahoru a dolů, a o stejnou hodnotu se zmenší mezera nad ním,
      takže se v rozvržení nic neposune. */
html:root #contact .hero-actions .btn,
html:root .hero-actions a.btn[href^="mailto:"]{
  color:#050505}
html:root .hero-actions a.btn[href^="mailto:"] svg{stroke:#050505}

html:root .vr-closer{margin-top:calc(clamp(14px,2vh,22px) - 8px)}
html:root .vr-closer-odkaz{padding-block:12px}

/* ═══ TŘI NEVIDITELNÉ TEXTY A RŮŽOVÁ NA BÍLÉ (8. 9. odpoledne) ═══════

   1. PEREX OBRAZOVKY PRINCIPU — tmavě šedá na skoro černé
      Naměřeno v klidu (krytí 1,00 ve čtyřech bodech z pěti, kde je
      text vidět): #383E42 na rgb(26,27,29) dává 1,59 : 1 při normě
      4,5 a velikosti 19 px. Podklad je tmavý záměrně, takže se mění
      písmo, ne plocha — světlá #F0F0F0 z palety. */
/*      Pozor na kaskádu: perex bere barvu z pravidla
        `html:root body:has(.pin) #scHist .hs-copy .lead{color:#383E42}`,
        které platí pro VŠECHNY perexy historie a má vyšší váhu.
        Nové pravidlo jde proto touž cestou a zužuje se na jedinou
        obrazovku — na ostatní kapitoly nesahá. */
html:root body:has(.pin) #scHist .hs-fr--princip .hs-copy .lead,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--princip .hs-copy .lead{
  color:#F0F0F0}

/*   2. POPISKA ILUSTRACE V POSLEDNÍ KAPITOLE — bílá na bílé
      Týž popisek je na stránce sedmkrát. Šest z nich má pod sebou
      tmavou pilulku (rgba(5,5,5,.72) u dobových, .78 u firem) a měří
      5,10 až 12 : 1. Sedmý, v kapitole „dva vítězové", ji nemá vůbec:
      podklad je průhledný a fotka pod ním v tom místě bílá, takže
      vyšlo 1,00 : 1. Není špatně čitelný, není vidět vůbec.

      Dostane tutéž pilulku jako ostatní. Nemění se text ani poloha,
      jen podklad pod ním — a jen u téhle jedné kapitoly. */
/*      Pozor na kaskádu: pilulku téhle popisce bere pravidlo
        `html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-kredit
        {background:none}`, které má vyšší váhu. Nové pravidlo proto
        jde touž cestou (`body:has(.pin)`), aby v kaskádě stálo nad ním
        — jinak se zapíše a nic se nestane. */
html:root body:has(.pin) #scHist .hs-fr--dva .hs-cela .hs-ilu-p,
html:root body:has(.pin) #scHist .hs-fr--dva .hs-pul .hs-kredit,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--dva .hs-cela .hs-ilu-p{
  background:rgba(5,5,5,.72);
  color:#FFFFFF;
  padding:6px 10px;
  border-radius:6px}

/*   3. RŮŽOVÁ NA BÍLÉ POD 24 px → --pink-ink
      Značková #FB5494 proti bílé dává 3,09 : 1. Na text pod 24 px to
      nestačí. Design systém na to má #BD376B (5,35 : 1 na bílé) a ten
      se tu použije. Značková růžová zůstává beze změny na plochách,
      tlačítkách a velkém textu — mění se jediné místo, kde stojí jako
      malé písmo na světlém. */
html:root .dx-popis--nase{color:#BD376B}

/*   4. BÍLÝ NÁPIS NA RŮŽOVÉM KOLEČKU
      Bílá na #FB5494 dává 3,09 : 1 při 11,2 px. Růžová plocha
      zůstává, mění se písmo na #050505 — stejně jako u tlačítka
      s e-mailem, kde tatáž dvojice měří 6,60 : 1. */
html:root #scHist .hs-kruh--energie,
html:root .sc-wipe--hist .hs-kruh--energie{color:#050505}

/* ═══ JEDENÁCT VAD V KLIDU (8. 9. večer) ═════════════════════════════
   ZADANI-HOMEPAGE-JEDENACT.md. Tři skupiny, tři různé příčiny.

   b1) ZÁHLAVÍ NA OBRAZOVCE 04.
   Od 6. 9. fotka nesahá pod pruh záhlaví — jenže obchodní důkaz má
   vlastní pravidlo (`grid-row:1/-1`, `margin:0`), které ten odstup
   přebíjí, takže tam fotka pod záhlaví doteče. Naměřeno: černý nápis
   „Battswap — 129 years" na rgb(47,43,42), tedy 1,46 : 1.
   Srovnává se s ostatními obrazovkami — fotka začíná POD záhlavím.
   Žádný pás pod záhlavím nevzniká. */
@media (min-width:901px){
  html:root #scHist .hs-fr--cela.hs-fr--dukaz .hs-cela{
    margin-top:calc(var(--hs-lista-scena,150px) + clamp(10px,1.6vh,20px))}
}

/* b2) PÁS ČASOVÉ OSY.
   Osa nemá na obrazovkách historie vlastní podklad (`background:none`
   výš v souboru) a fotka do jejího pruhu vyjíždí záporným spodním
   okrajem. Letopočty tak leží přímo na fotografii a jejich kontrast
   je věcí náhody — co zrovna je pod nimi. Naměřeno napříč kapitolami:
   pravý letopočet propadl v šesti kapitolách ze sedmi (1,41 až 3,85),
   levý ve dvou, jméno úseku v jedné a značka zastávky ve dvou.

   Fotka proto do spodního pruhu nevyjíždí, stejně jako od 6. 9.
   nevyjíždí do horního. Osa pak stojí na ploše scény, která je jedna
   a táž na všech obrazovkách. */
/* Vyšší váha než pravidlo o kus výš v souboru, které fotce nastavuje
   záporný spodní okraj (naměřeno margin-bottom −136,4 px, fotka pak
   sahá 136 px pod spodní hranu okna a leží přes pás osy). */
html:root #scHist .hs-chap .hs-fr--cela:not(.hs-fr--dukaz) .hs-cela,
html:root #scHist .hs-chap.hs-fr--cela:not(.hs-fr--dukaz) .hs-cela,
html:root #scHist .hs-fr--cela:not(.hs-fr--dukaz) .hs-cela{
  bottom:calc(var(--hs-osa-scena,130px) + clamp(10px,1.6vh,20px));
  margin-bottom:0}
/* OBRAZOVKA 04 JE VÝJIMKA (8. 9. večer, ZADANI-HOMEPAGE-BATTSWAP-CELA).
   Latso ji chce zpátky přes celou plochu. Důvod je v číslech: letopočty
   na ní měly 5,86 a 5,91 a jméno úseku 15,44 — tedy čitelné byly už
   předtím. Zkrácení fotky ji stálo celou spodní část a vyřešilo na ní
   jedinou věc, značku zastávky, kterou řeší pravidlo o kus níž.
   Ostatní kapitoly zůstávají, jak jsou: fotka do pruhu osy nesahá. */

/* c) DRUHÝ ŘÁDEK ŠTÍTKŮ VRSTEV.
   „Layer 1/3/4" byly rgba(255,255,255,.72), což se na desce ilustrace
   složí do světle šedé: 2,13 až 3,31 : 1. První řádky procházejí,
   protože jsou bílé a tučné. Druhý řádek dostane tutéž bílou; odlišuje
   se velikostí a prostrkáním, ne světlostí — stejně jako na světlé
   variantě scény, kde je od 6. 9. plná #050505. */
/* 8. 9. večer VRÁCENO: druhý řádek štítku má v tmavém stavu zpátky
   ztlumenou bílou. Změna na plnou bílou nebyla potřeba — změřeno pod
   písmeny měl už předtím 9,08 až 9,26 : 1, tedy dvakrát nad normou.
   To ztlumení je návrh, ne vada. Světlý stav scény zůstává na #050505
   (tam vada byla, bílá na bílé). */
html:root .sc-wipe--layers .lay-tag i,
html:root .sc-wipe--layers .lay-tag.us i,
html:root #scLayers .lay-tag i,
html:root #scLayers .lay-tag.us i{color:rgba(255,255,255,.72);opacity:1}
html:root #scLayers.svetla .lay-tag i,
html:root #scLayers.svetla .lay-tag.us i,
html:root .sc-wipe--layers.svetla .lay-tag i,
html:root .sc-wipe--layers.svetla .lay-tag.us i{color:#050505;opacity:1}

/* ZNAČKA ZASTÁVKY NA OBRAZOVCE 04 (8. 9. večer).
   Poslední popisek osy, který na téhle obrazovce neprocházel: 3,41 : 1
   při normě 4,5. Fotka je pod ním světlá (soumrak, mokrá plocha), a
   pruh pod osu dát nesmím.

   Volím ZMĚNU SAMOTNÉ ZNAČKY, ne posun: značky zastávek stojí na
   přesných místech osy podle roku, takže posunout ji znamená lhát
   o datu. Mění se barva — z poloprůhledné bílé na plnou #050505,
   tedy tutéž černou, jakou má na světlých obrazovkách zbytek osy. */
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas .hs-cas-stop{
  color:#050505;opacity:1}
html:root body:has(.pin) #scHist:has(.hs-fr--dukaz.on) .hs-cas .hs-cas-stop.je{
  color:#BD376B}

/* ═══ PATIČKA: DVĚ NAMĚŘENÉ VADY (8. 9. večer) ═══════════════════════
   1) E-MAIL NENÍ TLAČÍTKO.
   `hello@battswap.com` měl v patičce class="btn", tedy plnou růžovou
   #FB5494 — barvu hlavní akce. Je to údaj, ne akce. Zůstává funkční
   odkaz, sází se jako text, podtržený, aby byl poznat i bez barvy. */
html:root .footer .foot-mail{margin-top:1.1rem}
html:root .footer .foot-mail a{
  font-family:var(--font-text),system-ui,sans-serif;
  font-size:16px;line-height:1.4;
  /* Barva se NEnastavuje: patička je na desktopu světlá (naměřeno
     rgb(245,245,247)) a na telefonu tmavá, takže pevná hodnota by
     jednou z nich propadla — #F0F0F0 dalo na světlé 1,05 : 1.
     Odkaz proto bere tutéž barvu jako ostatní odkazy v patičce. */
  text-decoration:underline;text-underline-offset:3px;
  background:none;border:0;padding:0;display:inline}
html:root .footer .foot-mail a:hover{text-decoration-thickness:2px}

/* 2) NA STŘEDNÍ ŠÍŘCE ZŮSTÁVALA PRÁZDNÁ PRAVÁ POLOVINA.
   Mezi 761 a 1100 px má mřížka dva sloupce a pět bloků, takže poslední
   blok zůstal sám na řádku a napravo od něj bylo prázdno. Naměřeno na
   1024 × 768: kontejner 731 px, poslední sloupec končí na 385 px, tedy
   380 px prázdna = 52 % šířky při normě 20 %.

   Poslední blok proto na téhle šířce zabírá celý řádek. Obsah se
   nepřeskupuje, jen se nekrčí do poloviny. */
@media(min-width:761px) and (max-width:1100px){
  /* Pět bloků ve dvou sloupcích dá řádky 2 + 2 + 1, takže poslední
     zůstane sám a vpravo od něj je prázdno. Roztáhnout ten poslední
     přes celou šířku metriku splnilo, ale na snímku byla pravá polovina
     pod ním pořád prázdná — vyfotil jsem si to a nestačilo to.

     Přes celou šířku jde proto blok se ZNAČKOU (první), přesně jak to
     styles.css dělá pod 760 px. Zbylé čtyři bloky pak vyplní dva plné
     řádky a žádný nezůstane sám. */
  html:root .footer .foot-grid > .foot-brand{grid-column:1 / -1}
}


/* PILULKA MENSI NA TELEFONU (9. 9., Michaela) */
/* Naměřeno 9. 9. v ZPRAVA-HOMEPAGE-SIRKY.md: na 390 x 844 i 430 x 932
   se .cta-float kryje ze 100 % s pruhem .fleetbar a oba vedou na
   sales.html. Zmenšení samo ten překryv nezruší — je to první krok,
   který Michaela zadala. Druhý krok (pilulku na telefonu schovat)
   čeká na její rozhodnutí. Na počítači se nemění nic. */
@media (max-width:430px){
  html:root .cta-float{
    font-size:.8125rem;
    padding:.42em .72em;
    gap:.3rem;
    right:12px}
  html:root .cta-float svg{width:13px;height:13px}
}

/* ═══ POPISKA ILUSTRACE MIMO ČASOVOU OSU (9. 9.) ═════════════════════
   Michaelina fotka z 11:39, kapitola „The capital race · Aulton" na
   390 px: letopočet 2000 prosvítá skrz slovo DEPICTION.

   Změřeno na 390 × 844 před opravou — na obrazovkách firem:
     popiska  y 765–844      osa  y 762–832      překryv 85,1 %
     (na 430 × 932 totéž, 79,8 %)

   Příčina: popiska je `position:absolute` uvnitř `.hs-ram`, a ta na
   telefonu přetéká pod spodní hranu okna (naměřeno y 191–939 při okně
   844). Odsazení odspodu se tedy počítá od hrany, která je mimo
   obrazovku, a popiska spadne přesně na pás osy.

   Oprava: na telefonu se popiska u obrazovek firem přestane vázat na
   rám fotky a váže se na KAPITOLU, tedy na to, co je vidět. Sedí pak
   nad pásem osy, vlevo od pilulky. Text se nemění. */
@media (max-width:900px){
  html:root #scHist .hs-fr--firma .hs-ram{position:static}
  html:root #scHist .hs-fr--firma .hs-ilu-p{
    position:absolute;z-index:5;
    left:clamp(14px,4vw,20px);right:auto;
    bottom:calc(var(--hs-osa-scena,130px) + 12px);
    max-width:min(56%,230px)}
}


/* PILULKA NA TELEFONU ZHASINA (9. 9., Michaela) */
/* Důvod je změřený, ne dojmový: na 390 i 430 px ležela .cta-float
   ze 100 % na pruhu .fleetbar a přes texty časové osy, takže se
   popisky ani letopočty nedaly přečíst. Oba prvky vedou na
   sales.html — na telefonu tedy zůstává jen pruh.
   Na počítači pilulka funguje beze změny.

   10. 9.: hranice zvednuta z 430 na 500 px. Michaelin iPhone 16 Pro Max
   má na výšku 440 px, tedy NAD původní hranicí — pilulka se na něm
   zapínala dál a lehla si na šestou kategorii vějíře („Advanced air
   mobility & drones"). Naměřeno na 440 × 956: popisek x 234–317,
   y 829–845, a `elementFromPoint` uprostřed něj vracel span pilulky,
   ne vějíř. Na 390, 402 ani 430 px se to nestalo, protože tam byla
   pilulka vypnutá.
   500 px je zvolených tak, aby to pokrylo i telefon, který vyjde příště;
   nejužší tablet na výšku má 600 px, takže se ho to netýká. */
@media (max-width:500px){
  html:root .cta-float,
  html:root .cta-float.show{
    display:none!important;
    visibility:hidden!important;
    pointer-events:none!important}
}

/* ═══ NADPIS V HERU NENÍ PŘES OBLIČEJ (9. 9.) ════════════════════════
   FRONTA-HOMEPAGE.md bod 1. Michaela: „ten nápis má být menší, protože
   to je přes toho týpka."

   Muž NENÍ na stránce jako `assets/img/hero-man-cut.png` — ten výřez se
   od 12. 8. nepoužívá (hero je od té doby video). Je součástí záběru
   `hero-mobil-pan.webm`, takže se jeho obálka musela najít na
   vykresleném snímku, ne v PNG. Naměřeno se schovaným nadpisem:

     390 × 844   postava x 106–389, y 131–548 · hlava a ramena y 131–270
     430 × 932   postava x 115–429, y 145–605 · hlava a ramena y 145–298

   Nadpis stál na 390 na y 131–402, tedy přes hlavu z 38,6 %
   (na 430 z 29,7 %).

   Blok nadpisu je ukotvený SPODNÍ hranou (mění se jen jeho horní),
   takže posun `margin-top` s ním nehne — jediné, co ho zvedne z
   obličeje, je menší písmo. Z 52 px na clamp(30px, 7.9vw, 40px):
   na 390 dá 30,8 px a horní hrana klesne na 271, na 430 dá 34 px
   a hrana klesne na 319. Nikdy pod 28 px, jak norma žádá.

   Platí JEN do 430 px. Na 1440 × 900 zůstává 66 px beze změny. */
@media (max-width:430px){
  html:root body:has(.pin) .hero-inner h1,
  html:root body:has(.pin) .hero-inner h1 span{
    font-size:clamp(30px, 7.9vw, 40px);line-height:1.06}
}


/* ===== POPISEK ILLUSTRATION V HISTORII — 9. 9. 2026 ==================
   Popisek byl `position:absolute; right:0; bottom:0`, tedy nalepeny na
   pravy dolni roh okna, a prepisovalo ho osm dalsich pravidel. U roku
   1972 lezel v pasmu textu, u Better Place, Ample a Aulton se zalomil
   na dva radky a vyckuhoval pod spodni okraj okna. Michaela: „texty se
   prekryvaji" a „ilustrate text ma byt na jeden radek".
   Ted je popisek POSLEDNI PRVEK .hs-copy, tedy v beznem toku pod
   textem. Selektor nese #scHist schvalne: bez neho ho prebijou starsi
   pravidla `html:root #scHist .hs-pul .hs-kredit`, ktera na telefonu
   nastavuji `top:0` a popisek vyskocil zpatky nahoru pres text.
   ==================================================================== */
html:root #scHist .hs-copy > .hs-kredit,
html:root .hs-copy > .hs-kredit{
  position:static; right:auto; bottom:auto; left:auto; top:auto;
  display:table;
  margin:clamp(12px,2vh,22px) 0 0;
  padding:6px 12px;
  max-width:none;
  white-space:nowrap;
  font-size:clamp(9px,.62vw,10px);
  background:rgba(10,11,14,.72);
  color:rgba(255,255,255,.86);
}
html:root #scHist .hs-svetlo .hs-copy > .hs-kredit,
html:root .hs-svetlo .hs-copy > .hs-kredit{background:rgba(10,11,14,.62)}
@media (max-width:700px){
  html:root #scHist .hs-copy > .hs-kredit,
  html:root .hs-copy > .hs-kredit{
    position:static; top:auto; bottom:auto; left:auto; right:auto;
    white-space:normal; font-size:9px; padding:5px 9px}
}

/* ═══ ZARÁŽKY DRÁHY NA TELEFONU (10. 9.) ═════════════════════════════
   Protějšek k `zarazky()` ve script.js. Značky sází skript z týchž
   prahů, které přepínají scény; tady se jen řekne, že jsou to cíle
   zaskakování a že se nemají kreslit.

   Zaskakování se zapne, jen když značky opravdu vznikly — třída
   `ma-zarazky` na <html>. Bez ní by `scroll-snap-type` na dokumentu
   nemělo na co skákat a jen by zbytečně měnilo chování rolování.

   `proximity` schválně: `mandatory` na iOS pere se setrvačným
   rolováním. Hranice 500 px je táž jako u pilulky — iPhone 16 Pro Max
   má na výšku 440 px, tedy nad starou hranicí 430. */
@media (max-width:500px){
  html:root.ma-zarazky{scroll-snap-type:y proximity}
  html:root .pin-stop{
    position:absolute;left:0;width:1px;height:1px;
    pointer-events:none;visibility:hidden;
    scroll-snap-align:start;scroll-snap-stop:normal}
}

/* ═══ NOČNÍ KONTROLA MOBILU (10. 9.) — TŘI OPRAVY ═══════════════════
   Každá se opírá o číslo z `_upravy/kontrola-mobil.json`, měřeno na
   390 / 393 / 402 / 430 / 440 × 956 s mobilním UA a dpr 3.

   1) ZÁŘ .zablesk — MĚŘENO, VADA TO NENÍ, NEOPRAVUJE SE.
   Naměřeno: obdélník .zablesk sahá na 443,1 px při okně 440 px, tedy
   3,1 px za okraj (a při jiné poloze klíčovacího bodu až 53 px).
   Jenže getBoundingClientRect() je GEOMETRIE, ne to, co se kreslí:
   přímý rodič .hero-photo je široký přesně 440 px a má overflow:hidden,
   takže za okrajem se nevykreslí ani pixel. Vodorovné rolování
   scrollWidth − clientWidth = 0. Žádná úprava. */

/* 2) RŮŽOVÝ POPISEK POD 24 px.
   Naměřeno: `span.eyebrow „The principle"` má 12,5 px, váhu 700
   a barvu #FB5494. Značková růžová má proti bílé 3,09 : 1, což na
   text pod 24 px nestačí (norma 4,5). Design systém na to má
   `--pink-ink` #BD376B s 5,35 : 1. Není to nová barva.
   Opraveno proto, že naměřeno 12,5 px při 3,09 : 1. */
html:root body:has(.pin) #scHist .hs-fr--princip .eyebrow,
html:root body:has(.pin) .sc-wipe--hist .hs-fr--princip .eyebrow{
  color:#BD376B}

/* 3) DOTYKOVÉ CÍLE POD 44 × 44 px.
   Naměřeno na 440 × 956:
      hello@battswap.com   159 × 20 px
      New York              87 × 22 px
      Better Place         120 × 22 px
      Ample                 56 × 22 px
      NIO                   60 × 29 px
   Všem chybí VÝŠKA, ne šířka — jsou to textové odkazy uvnitř odstavce.
   Zvětšit jim řádkování by rozhodilo sazbu, proto se zvětšuje jen
   DOTYKOVÁ PLOCHA: neviditelný pseudoprvek dorovná výšku na 44 px
   a leží mimo tok, takže se text nikam neposune.
   Opraveno proto, že naměřeno 20 až 29 px při normě 44. */
@media (max-width:500px){
  html:root .footer .foot-mail a,
  html:root #scHist .hs-zdroj-in a,
  html:root .sc-wipe--hist .hs-zdroj-in a,
  html:root #scHist .hs-pul a,
  html:root .sc-wipe--hist .hs-pul a{position:relative}
  html:root .footer .foot-mail a::after,
  html:root #scHist .hs-zdroj-in a::after,
  html:root .sc-wipe--hist .hs-zdroj-in a::after,
  html:root #scHist .hs-pul a::after,
  html:root .sc-wipe--hist .hs-pul a::after{
    content:"";position:absolute;left:0;right:0;
    top:50%;transform:translateY(-50%);
    height:44px;min-width:44px}
}

/* 4) TEXT POD 12 px NA TELEFONU.
   Design systém má spodní hranici 12 px pro verzálkové popisky a 15 px
   pro souvislý text. Naměřeno na 440 × 956 (a stejně na 390 / 393 /
   402 / 430):

      .hs-udaj > span   „commercial km"                9,5 px   4×
      .hs-stitek        „Liquidated · 2013"           11,0 px   2×
      .hs-pul-lab       „Premium passenger vehicles"  11,0 px   2×
      .hs-jed           „stations"                    11,0 px   2×
      .hs-tecka         „·"                           11,0 px   1×

   Všech pět jde na 12 px, jen na telefonu. Šířky mají rezervu
   (151 / 157 / 191 / 41 / 3 px v poli širokém 440), takže se nic
   nezalomí. Opraveno proto, že naměřeno 9,5 az 11,0 px při normě 12.

   NEOPRAVENO A PROČ:
   .hs-kruh „Energy" / „Machine" 10 px — kolečko je 8vw, na 440 px
     tedy 35 px, a nápis v něm má už teď 48 a 42 px. Na 12 px by
     narostl na zhruba 54 px a z kolečka by vylezl. Zvětšit se musí
     nejdřív kolečko, a to je návrhové rozhodnutí, ne oprava kontrastu.
   Pozn. k zápisu: `.hs-udaj > span` samo o sobě prohrálo o specificitu
   s `html:root #scHist .hs-fr--dukaz .hs-udaj span` (1,3,2 proti 0,3,3),
   proto je v selektoru i to #scHist. Změřeno: bez něj zůstalo 9,5 px.

   .hs-ilu-p „Illustration — …" 9 px — popisky v historii dodělala
     9. 9. ve 20:50 Michaelina strana (POZOR-HOMEPAGE-POPISKY-HOTOVO.md)
     s výslovným „zmenšovat písmo pod 9 px nebudu" a „nic na popiscích".
     Nesahám na ně. */
@media (max-width:500px){
  html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj > span,
  html:root body:has(.pin) .sc-wipe--hist .hs-fr--dukaz .hs-udaj > span,
  html:root body:has(.pin) .hs-stitek,
  html:root body:has(.pin) .hs-pul-lab,
  html:root body:has(.pin) .hs-jed,
  html:root body:has(.pin) .hs-tecka{font-size:12px}
}

/* ═══ NALEZ-MOBIL-A-TABLET, KROK 3 — PÍSMO 13 px A CÍLE 44 px ════════
   11. 9. v noci. Kontrolní vrstva naměřila na telefonu 393 × 852 i na
   tabletu 834 × 1112 desítky textů pod 13 px a na tabletu dotykové cíle
   pod 44 px. Já přeměřil na skutečné stránce (Chromium, mobilní UA,
   dpr 2, celá stránka nejdřív projetá, aby se vykreslily i vrstvy):

      393 × 852    33 textů pod 13 px (9 az 12,5 px)     0 cílů pod 44
      834 × 1112   39 textů pod 13 px (9 az 12,5 px)     8 cílů pod 44
                   + v otevřeném menu odkazy 107 × 25, 109 × 25, 87 × 25

   Rozdíl proti nálezu (56 / 55 textů, „Live operation 107 × 25" na
   tabletu): nález měřil bez obrázků a písem a počítal i odkazy
   zaparkovaného menu mimo obrazovku. Otevřené menu ale 25 px opravdu
   má, viz níž.

   Co se kde zvedá (před → po, jen do 1366 px, počítač beze změny):
      .hs-udaj > span        9,5 / 12 px  → 13   „commercial km"
      .hs-stitek             11 / 12      → 13   „Liquidated · 2013"
      .hs-pul-lab            11 / 12      → 13
      .hs-jed, .hs-tecka     11 / 12      → 13
      .hs-cislo > span       12           → 13   „raised"
      #hsCasEra/Od/Do        12           → 13   letopočty stopek osy
      #scHist .eyebrow       12,5         → 13   „The principle", „1897 ·"
                                                 („The commercial proof"
                                                 má vlastní pravidlo se
                                                 čtyřmi třídami, proto
                                                 je v seznamu zvlášť)
      .hs-ilu-p              9            → 13   popisek Illustration
      .liveop-in .eyebrow    12 (tablet)  → 13
      .liveop-live, .ls-t    12 (tablet)  → 13
      .foot-col h4           12 (tablet)  → 13
      .hs-kruh               10 (tablet)  → 13   jen od 701 px, kolečko
                                                 tam má 30 % diagramu;
                                                 na telefonu je 48 px
                                                 a 13px nápis ~70 px —
                                                 to bez překreslení
                                                 diagramu nejde, hlásím.
   Opraveno proto, že naměřeno 9 az 12,5 px při normě 13 px. */
@media (max-width:1366px){
  html:root body:has(.pin) #scHist .hs-fr--dukaz .hs-udaj > span,
  html:root body:has(.pin) .sc-wipe--hist .hs-fr--dukaz .hs-udaj > span,
  html:root body:has(.pin) #scHist .hs-stitek,
  html:root body:has(.pin) #scHist .hs-pul-lab,
  html:root body:has(.pin) #scHist .hs-jed,
  html:root body:has(.pin) #scHist .hs-tecka,
  html:root body:has(.pin) #scHist .hs-cislo > span,
  html:root body:has(.pin) #scHist .eyebrow,
  html:root body:has(.pin) #scHist .eyebrow > span,
  html:root body:has(.pin) #scHist .hs-fr--cela.hs-fr--dukaz .hs-copy .eyebrow,
  html:root body:has(.pin) #scHist .hs-ilu-p,
  html:root body:has(.pin) #hsCas .hs-cas-era,
  html:root body:has(.pin) #hsCas .hs-cas-od,
  html:root body:has(.pin) #hsCas .hs-cas-do,
  html:root body:has(.pin) .hero .liveop-in .eyebrow,
  html:root body:has(.pin) .liveop-live,
  html:root body:has(.pin) .liveop-sound .ls-t,
  html:root body:has(.pin) .foot-col h4{font-size:13px}
}
@media (min-width:701px) and (max-width:1366px){
  html:root body:has(.pin) #scHist .hs-kruh,
  html:root body:has(.pin) .sc-wipe--hist .hs-kruh{font-size:13px}
}

/* Dotykové cíle na TABLETU. Pravidlo 44 px z oddílu „4 · KLIKACÍ
   PLOCHY" platí jen do 700 px; hamburger se ale zobrazuje do 940 px
   a vysouvací menu s ním. Naměřeno na 834 × 1112:
      hamburger        28 × 28
      logo .brand      96 × 23
      menu: Live operation 107 × 25 · Why Battswap 109 × 25 ·
            The vehicle 87 × 25 · EV adoption 169 × 25
      .liveop-sound    93 × 30
      New York 87 × 22 · Better Place 120 × 22 · Ample 56 × 22 ·
      NIO 60 × 29 · hello@battswap.com 159 × 20
   Stejná technika jako na telefonu: samostatné prvky dostanou
   min-height, řádkové odkazy uvnitř odstavce neviditelný ::after,
   aby se sazba nehnula. Opraveno proto, že naměřeno 20 az 30 px. */
@media (min-width:701px) and (max-width:1366px){
  html:root .nav-links a,
  html:root .navdrop > button,
  html:root .nav .brand,
  html:root .burger,
  html:root .liveop-sound{min-height:44px;display:inline-flex;align-items:center}
  html:root .burger,
  html:root .liveop-sound{min-width:44px;justify-content:center}
  html:root .nav-links a,
  html:root .navdrop > button{padding-block:10px}
  html:root .footer .foot-mail a,
  html:root #scHist .hs-zdroj-in a,
  html:root .sc-wipe--hist .hs-zdroj-in a,
  html:root #scHist .hs-pul a,
  html:root .sc-wipe--hist .hs-pul a{position:relative}
  html:root .footer .foot-mail a::after,
  html:root #scHist .hs-zdroj-in a::after,
  html:root .sc-wipe--hist .hs-zdroj-in a::after,
  html:root #scHist .hs-pul a::after,
  html:root .sc-wipe--hist .hs-pul a::after{
    content:"";position:absolute;left:0;right:0;
    top:50%;transform:translateY(-50%);height:44px;min-width:44px}
}
