/* ============================================================
   MINI CSS SYSTÉM
   Architektura: Section → Container → Grid → Card
   CSS: 3.30
   ============================================================

   CHANGELOG:
   3.30 Stránka 404: úvod (blok „404-uvod") byl nalepený na hlášku „Stránka nenalezena" — .stranka-404
        .blok__uvod 32px nahoře i dole, tlačítko „Zpět na úvod" mt-md (404.php).
   3.29 Úvod pod H1 systémových stránek (.blok__uvod, blok „{id}-uvod") 16px od nadpisu místo 8px;
        mezera pod úvodem k obsahu sjednocená na 64px (aktuality, ceník, dokumenty: obsah v section--sm
        jako videa — dřív 32 / 96 / 96px).
   3.28 Blok vložený za obsah stránky (gdpr-text na konci GDPR) se lepil na předchozí odstavec:
        obal .blok__text bez odstupu a nadpis na začátku bloku vynulovaný přes h3:first-child.
        Nově :not(h1–h4) + .blok__text odstup + první nadpis bloku s běžnou horní mezerou
        (za vlastním nadpisem bloku beze změny). .gdpr p + p — slepené odstavce v sekci Cookies.
   3.27 Vodorovné menu bez padding-left z obecného ul:not([class]) (32px navíc vlevo) — CTA přečnívalo
        vpravo za okraj kontejneru (klidna-sila: 17px i na 1600px) a měření hlavičky (3.26) ho
        nepočítalo. Jen desktop (.header:not(.header--nav-mobile)); mobilní menu a margin-block beze změny.
   3.26 Hlavička podle skutečného místa (MWS 3.08): podnadpis loga se v 961–1200px už neschovává
        pevně (zbytečně i u krátkého menu, na tabletu byl vidět a na notebooku ne). Skript
        window.mwsHlavicka (header.php) měří obsah hlavičky; teprve když se nevejde:
        .header--logo-zalom (podnadpis zalomený na šířku názvu, text-wrap: balance),
        .header--bez-cta, pak hamburger. Pevné prahy 1200/1080 zůstávají jen bez JS
        (.header:not(.header--mereno)). Ověřeno: klidna-sila, BLANK, Start Your Journey.
   3.25 Video (MWS 3.06): .video-fasada (video_vlozit() bez cookie lišty — náhled + tlačítko,
        přehrávač až po kliknutí, poznámka „Spuštěním se načte přehrávač …") a
        .video-karta__thumb--bez-nahledu (Vimeo / Wistia bez staženého náhledu — plocha v barvě webu).
   3.24 Media queries bez mezery mezi páry max-width: N / min-width: N+1 (podnět klidna-sila):
        při neceločíselném DPR (Windows 110 %, 125 %, zoom) má okno šířku např. 960,99 px, která
        nesplní ani jedno → u 960/961 se nepřepnul hamburger ani úsporný režim hlavičky a stránka
        přetekla vodorovně. Dolní hranice teď N.02px (960.02 / 768.02 / 600.02) — range syntaxe
        (960px < width) by starší Safari (< 16.4, iPady) celé pravidlo zahodilo.
        Nový pár v CSS vždy takhle: max-width: N + min-width: N.02px, ne N+1.
   3.23 Patička: logo v .footer__top bylo natvrdo bílé (#fff, rgba 255) — na světlé primary
        (žlutá, klidna-sila) nečitelné, i když zbytek patičky bral --color-primary-contrast.
        Text loga i podnadpis teď z --color-primary-contrast; obrázek loga přes novou proměnnou
        --footer-logo-filter (výchozí brightness(0) invert(1) = bílá silueta jako dřív;
        brightness(0) = černá, none = původní barvy). barvy-navrh ji u světlé primary generuje sám.
   3.22 Akce (MWS 2.98): .akce-detail__galerie / .akce-detail__video — album a YouTube video
        v detailu akce, stejný odstup jako .aktualita__galerie / __video.
   3.21 Aktuality (MWS 2.97): .aktualita-badges — obal štítků novinky (kategorie, stav
        Důležité/Změna/Zrušeno, „Nové") vedle sebe s mezerou; dřív jediný badge + inline margin.
   3.20 Časté otázky (faq(), MWS 2.96): .faq__kategorie / .faq__popis — nadpis kategorie nad
        accordionem, mezera mezi kategoriemi; .faq__sloupce (faq(sloupce: 2)) zarovnané nahoru; odkazy v .accordion__odpoved v barvě text-safe.
   3.19 Aktuality v řádcích (novinky_seznam('row')) na mobilu: dlouhý perex (nowrap) roztáhl
        .aktualita-row__info přes šířku karty → text useknutý bez „…", tlačítko „Číst více"
        mimo kartu. .aktualita-row__info dostal min-width:0 (flex položka se smí zúžit),
        .aktualita-row__text flex-basis 12rem (na mobilu tlačítko pod text, ne úzký sloupec).
   3.18 Podmenu poslední(ch) položek menu přečnívalo vpravo za okno (skryté přes visibility,
        ale zabírá místo → vodorovný posun stránky, na mws.local 1100–1280px). Nová třída
        .nav__sub--vpravo (right:0), přidává ji main.js jen u podmenu, které by přesáhlo okraj.
   3.17 Hlavička na mobilu (režim hamburgeru) s CTA tlačítkem: CTA vyjíždělo za pravý
        okraj (gap 2rem, ☰ s margin-left:auto před CTA → ☰ uprostřed, CTA na kraji,
        vodorovný posun stránky na 320–414px u textového loga). Teď „Logo … [CTA] ☰",
        gap .5rem, pod 360px CTA skryté. Podnět dechovecviky (MWS 2.85).
        Patička: .footer__bottom-mid s flex-wrap — víc právních odkazů vedle GDPR
        (FOOTER_PRAVNI_ODKAZY) se na mobilu zalomí.
   3.16 Přílohy: karty příloh .priloha-karty / .priloha-karta (helper
        priloha_karty(), MWS 2.80) — obálka nebo ikona, štítek .priloha-karta__stitek
        (vyplněný = .priloha-karta--zvyraznena), název, popis, tlačítko; mřížka přes
        .grid[data-cols], pod sebou .priloha-karty--radky. Proměnné
        --priloha-karta-obrazek (výška obrázku) a --priloha-karta-fit (contain/cover).
   3.15 Fotosekce: .section--dim (tmavý překryv) nově sama přepne text na
        světlý — nadpisy, odstavce, podnadpis sekce, odkazy (bílé,
        podtržené), .btn--outline/.btn--ghost v bílé variantě. Dřív nic
        nenastavovala: bílá se psala inline a odkaz zůstal v barvě pro
        světlé pozadí (na tmavé fotce nečitelný, odhaleno na /styl). Nová
        třída .section--svetly-text = totéž ručně pro fotku bez překryvu
        nebo s vlastním přechodem (tón fotky systém nepozná).
        .section--dim-light beze změny (tmavý text). Karta (.card) uvnitř
        si drží tmavý text i odkazy (vlastní světlé pozadí). Stávající
        inline color:#fff na stránkách dál funguje, jen už není nutný.
   3.14 Bugfix: .section--secondary a (barva odkazů v sekundární sekci) platilo
        i pro tlačítka <a class="btn …"> a díky vyšší specificitě (0,1,1 proti
        0,1,0) přebilo jejich barvu textu — .btn--white na sekundárním pozadí
        měl bílý text na bílém tlačítku (neviditelný), .btn--primary dostal
        barvu odkazu místo --color-primary-contrast. Sjednoceno se
        .section--primary / .section--dark, které mají a:not(.btn) od 3.12.
        Odhaleno na /styl (nový 6. podklad section--secondary, MWS 2.51).
   3.13 Logo v hlavičce: text (.logo__text--desktop) se skrýval už při 960px —
        stejná hranice jako přepnutí menu na hamburger (js/main.js
        _mobileQuery), ale čistě shodou okolností. Pod 960px zbývá v hlavičce
        jen logo + hamburger (+ CTA), místa na text bylo dost. Text teď mizí
        až na 480px. Web bez obrázku loga (HEADER_LOGO_IMG = false, nová
        třída .logo--text-only na <a class="logo">, viz header.php) má text
        vždy, jinak by pod 960px nezbylo v hlavičce vůbec nic. Doplněny i
        odstupňované úpravy těsně nad hamburgerem (961–1200px): menu gap,
        skrytí podnadpisu (.logo__subtitle) a CTA tlačítka, ať se hlavička
        nezalomí/neposune dřív, než naskočí hamburger — prahy 1200/1080
        odladěné na běžný případ (8 položek menu), u delšího menu/názvu
        zvážit posun. Nahlášeno a ověřeno na projektu (startyourjourney,
        iframy 1300–450px, viz .podklady/TODO-hlavicka-logo-nav.md).
   3.12 Bugfix: .section--dark a nemělo žádné pravidlo pro plain odkazy
        (.section--primary a:not(.btn) a .section--secondary a ho mají).
        Odkaz uvnitř .section--dark tak zůstával na základní
        a { color: var(--color-secondary-text-safe) } — barvě navržené
        pro světlé pozadí, nekontrastní na tmavém --color-primary-dark
        podkladu. Odhaleno na /styl (ukázkový odkaz na 5 typech podkladu)
        při ladění klientského projektu. Sjednoceno s .section--primary
        do jednoho pravidla (stejná barva --color-primary-contrast pro
        oba, jen jiné pozadí).
   3.11 Dvě mobilní opravy nalezené při stavbě klientského projektu (2026-09-06):
        1) .btn--lg mělo (přes .btn) natvrdo white-space:nowrap — dlouhý
           text tlačítka (typicky ve dvojici v .btn-group, nebo v boxované
           CTA kartě s vlastním paddingem navíc k .container) na úzkém
           mobilu přetékal mimo kartu/kontejner. Pod 480px teď .btn--lg
           smí zalomit text na víc řádků. Malá tlačítka (.btn--sm, default)
           beze změny — nowrap tam problém nedělá.
        2) .steps má gap:0 (funguje na desktopu — kroky v jedné řadě
           propojené vodorovnou čárou ::before, žádná svislá mezera
           potřeba). V mobilních variantách (768px → 2 sloupce, 480px →
           1 sloupec) se ale grid zalomí do víc řádků a gap:0 zůstávalo —
           kroky pod sebou bez svislého odstupu, číslo kroku "naráželo"
           na text kroku nad ním. Doplněn row-gap:var(--space-md) pro obě
           mobilní varianty.
   3.10 Tři drobné opravy nalezené při stavbě vzorového blank (2026-09-05):
        1) Základní barva odkazu v textu přepnuta z --color-primary-text-safe
           na --color-secondary-text-safe — u tmavších/sytějších primary palet
           (např. lesní zelená) splývala s běžným textem (--color-text) i
           s podtrženým textem (<u>), obojí tmavé. Secondary bývá barevně
           odlišnější od primary/textu → lépe čitelné jako "tohle je odkaz".
           Kdo chce zpět původní chování, přepíše v theme.css:
           main a { color: var(--color-primary-text-safe); }
        2) main a:hover – doplněna hover barva (dřív žádná). ZÁMĚRNĚ scoped na
           "main a:hover", ne holé "a:hover" — bez scope má "a:hover" vyšší
           specificitu než např. ".logo", takže by na hover přebilo barvu loga/
           menu/patičky (ověřeno, reálně se stávalo). "main" = obsah stránky
           (<main id="hlavni-obsah">), header/nav/patička jsou mimo, beze změny.
        3) .btn--ghost nemělo (na rozdíl od .btn--outline) čitelnou variantu na
           .section--primary/--dark — text stejné barvy jako tmavé pozadí,
           prakticky neviditelné tlačítko. Doplněn stejný typ override jako
           u .btn--outline.
        4) ul:not([class])/ol:not([class]) — doplněn margin-block (dřív jen
           vnitřní gap mezi položkami, žádný odstup od okolních bloků; dva
           seznamy nebo odstavec+seznam za sebou se "lepily" bez mezery).
   3.9  Nové tokeny --color-primary-text-safe / --color-secondary-text-safe
        (výchozí = beze změny, rovny primary/secondary) — cca 75 míst, kde se
        primary/secondary používala jako barva TEXTU na bílém/světlém pozadí
        (odkazy — i základní "a {}", badge, ceny, .btn--outline/--ghost/--white,
        .text-primary, hover stavy...), teď čte tenhle token místo přímo
        --color-primary/--color-secondary. Řeší stejnou slabinu jako
        --color-primary-contrast, ale pro text NA bílém pozadí, ne text NA
        primary pozadí — u jasné/světlé primary (např. žlutá) by jinak byl
        i obyčejný odkaz nečitelný. border-color/accent-color beze změny
        (tam o čitelnost textu nejde). Nastavit v theme.css jen když je
        primary/secondary záměrně světlá.
   3.8  Oprava: .page-spine mělo margin-top:0 (bez fotky) — nahoře narážela
        "list papíru" karta přímo do headeru, zatímco po stranách/dole
        mezera byla. Sjednoceno na stejnou mezeru jako po stranách
        (clamp(.75rem,2.5vw,1.5rem) / .4rem na mobilu pod 600px).
        .page-spine--photo (s PAGE_SPINE_PHOTO) beze změny — margin-top
        tam řeší záměrné překrytí spodku fotky.
   3.7  Oprava: .section--primary a už neplatí pro .btn odkazy (dřív .section--primary a
        přebíjelo barvu i u .btn--secondary/.btn--primary apod. — tlačítko dostalo tmavý
        text schovávající se na tmavém pozadí, např. btn--secondary v primary sekci)
   3.6  .priloha__popis – volitelný popisek pod názvem přílohy (priloha(), plněný
        z pole 'popis' v data/prilohy.json)
   3.5  .header__cta – CTA tlačítko v headeru vedle menu (HEADER_CTA_TEXT/HEADER_CTA_URL
        v config.php; '' = tlačítko se nezobrazí)
   3.1  .card--secondary – varianta .card--primary se secondary barvou (zvýraznění
        karty/ceny sekundární barvou místo primary)
   3.0  .form__check – chybová hláška u checkboxu (např. "Zaškrtněte prosím: ...") se
        nyní zalomí na vlastní řádek pod popisek, místo natěsnání vedle dlouhého textu;
        dlouhý popisek zůstává vedle zaškrtávátka (flex:1 1 0% + min-width:0, aby ho
        flex-wrap nepřesunul jako celek na nový řádek, a zalamoval se místo toho sám)
   2.9  .form__potvrzeni__radek--stack – dlouhý popisek (např. text souhlasu u checkboxu)
        se zobrazí nad hodnotou na celou šířku místo vedle sebe (main.js, práh 30 znaků)
   2.8  .form__potvrzeni – modal se shrnutím vyplněných polí před odesláním
        formuláře (generator-formulare.php, volba "Potvrzení před odesláním")
   2.7  .form__nadpis – nadpis sekce uvnitř formuláře (generator-formulare.php,
        pseudo-pole "Nadpis sekce")
   2.6  Galerie: strip mód vždy 5 slotů (bylo 4) + odstraněna šipka "+více"
        (.galerie-strip__vice smazáno) – konzistentní výška dlaždic
   2.5  Aktuality: .aktualita-detail__meta (badge kategorie/Nové vedle data, ne nad nadpisem)
   2.4  Aktuality: .aktualita__akce-card (mini karta propojené akce v detailu novinky)
   2.3  Akce: .akce-detail__meta vzdušnější (větší mezery kolem datum/místo/lektor/cena)
   2.2  Akce: .akce-detail__letak/-popis (leták/plakát v detailu akce)
   2.1  Statistiky: .stat min-width:0 + overflow-wrap (oprava přetékání na mobilu
        u delších textů), menší padding na mobilu
   1.7  Statistiky: .stats-grid, .stat, .stat__cislo/popis, .stats-grid--band
   1.6  Recenze: .recenze-hodnoceni (souhrnné hodnocení – průměr ★ + počet)
   1.3  Recenze varianta citaty: .recenze-citaty, .recenze-citat, uvozovka ::before
   1.2  Modul Recenze: .recenze-grid/list, .recenze-karta, hvězdičky,
        zdroj badge (Google/Facebook), expand "Číst více"
   1.1  Fotopozadí: section--bg, --dim, --dim-light, --rounded,
        --gap, --transparent, --bg-fade-out (.section__fade-bg),
        PAGE_BG_IMAGE systém (body.page--bg-fixed + gradient 1200px)
   1.0  Počáteční verze

   OBSAH:
    0.  Fonty
    1.  Tokeny
    2.  Reset & Base
    3.  Section
    4.  Hero
    5.  Container
    6.  Grid
    7.  Card
    8.  Badge
    9.  Steps
   10.  Tabulka
   11.  Formulář
   12.  Tlačítka
   13.  Topbar
   14.  Header & Logo & Nav
   15.  Footer
   16.  Utility
   17.  Galerie
   18.  Přílohy
   19.  Novinky
   20.  Provozní doba
   21.  Akce
   22.  Accordion
   23.  Testimonials
   27.  Recenze
   ============================================================ */


/* ── 0. FONTY ─────────────────────────────────────────────── */
/*
   Vlastní font bez závislosti na Google.
   Soubory v: css/fonts/

   Záměna fontu: změň název 'Outfit' a cestu k souborům.
   Token --font-base níže se přizpůsobí automaticky.
*/



/* ── 1. TOKENY ────────────────────────────────────────────── */
/*
   Jediné místo kde měníš barvy a font.
   Zbytek CSS se přizpůsobí automaticky.

   --color-primary:   hlavní brand barva (header, tlačítka, footer)
   --color-secondary: akcentová barva (CTA, ceny, odkazy)
   --font-base:       font celého webu

   Příklady --color-primary:
     #15475B  teal (výchozí)
     #1a3a2a  lesní zelená
     #4a1942  fialová
     #8b3a1a  terakota
     #1a2a4a  námořnická modrá
*/

:root {

  /* Brand */
  --color-primary:        #15475B;
  --color-primary-rgb:    21,71,91;  /* stejná barva jako --color-primary v RGB — pro rgba() gradienty (hero--fullscreen) */
  --color-primary-dark:   #0d3347;   /* ~20% tmavší – tints.dev shade 800 */
  --color-primary-light:  #e8f0f3;   /* ~12% primary + bílá – tints.dev tint 50 */
  --color-primary-contrast:   #fff; /* text/ikony na --color-primary a --color-primary-dark pozadí; přepsat na tmavou barvu jen pokud je primary záměrně světlá */
  --color-primary-text-safe: var(--color-primary); /* primary POUŽITÁ JAKO TEXT na bílém/světlém pozadí (odkazy, badge, ceny...) — výchozí = beze změny; přepsat na tmavou barvu (např. --color-text) jen pokud je primary záměrně světlá/jasná a jako text by nebyla čitelná */
  --color-secondary:      #0d6efd;
  --color-secondary-dark: #0a58ca;   /* ~20% tmavší secondary */
  --color-secondary-contrast: #fff; /* text/ikony na --color-secondary a --color-secondary-dark pozadí */
  --color-secondary-text-safe: var(--color-secondary); /* secondary POUŽITÁ JAKO TEXT na bílém/světlém pozadí — stejný princip jako --color-primary-text-safe */

  /* Neutrální */
  --color-bg:             #ffffff;
  --color-bg-alt:         #f4f4f2;
  --color-surface:        #ffffff;   /* karty, panely — stejná jako bg, ale sémanticky oddělená */
  --color-text:           #1a1a1a;
  --color-text-muted:     #4b5563;
  --color-border:         #e2e2e0;

  /* Sémantické – formuláře, alerty */
  --color-success:        #14753a;
  --color-success-light:  #dcfce7;
  --color-warning:        #d97706;
  --color-warning-light:  #fef9c3;
  --color-danger:         #dc2626;
  --color-danger-light:   #fee2e2;
  --color-info:           #0369a1;
  --color-info-light:     #e0f2fe;

  /* Typografie */
  --font-base:   system-ui, -apple-system, sans-serif;
  --text-xs:     0.75rem;
  --text-sm:     0.875rem;
  --text-base:   1rem;
  --text-lg:     1.125rem;
  --text-xl:     1.25rem;
  --text-2xl:    1.5rem;
  --text-3xl:    2rem;
  --text-4xl:    2.75rem;

  /* Spacing */
  --space-2xs:   0.25rem;
  --space-xs:    0.5rem;
  --space-sm:    1rem;
  --space-md:    2rem;
  --space-lg:    4rem;
  --space-xl:    6rem;

  /* Layout */
  --container-sm:   720px;
  --container-md:  1200px;
  --container-lg:  1600px;
  --container-pad: clamp(1rem, 4vw, 2rem);

  /* Komponenty */
  --radius-sm:   6px;
  --radius-md:   10px;
  --radius-lg:   16px;
  --radius-xl:   24px;

  --shadow-sm:   0 1px 3px rgba(0,0,0,.08);
  --shadow-md:   0 4px 16px rgba(0,0,0,.10);
  --shadow-lg:   0 8px 32px rgba(0,0,0,.12);

  --transition:  160ms ease;

  /* Grid & Card */
  --card-img-height: 220px;
  --grid-min:        260px;
  --grid-gap:        var(--space-md);
}


/* ── 2. RESET & BASE ──────────────────────────────────────── */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

body {
  font-family:  var(--font-base);
  font-size:    var(--text-base);
  color:        var(--color-text);
  background:   var(--color-bg);
  line-height:  1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x:   clip;   /* ořízne přečnívající elementy bez ovlivnění fixed/sticky */
}

img { max-width: 100%; display: block; }

a { color: var(--color-secondary-text-safe); text-underline-offset: 2px; }

/* main a:hover, ne holé a:hover — viz CHANGELOG 3.10 (specificita by jinak
   přebila barvu loga/menu/patičky na hover) */
main a:hover { color: color-mix(in srgb, var(--color-secondary-text-safe) 80%, black); }

button { appearance: none; font-family: var(--font-base); }

/* Nadpisy */
h1 { font-size: var(--text-4xl); line-height: 1.15; font-weight: 700; }
h2 { font-size: var(--text-3xl); line-height: 1.25; font-weight: 700; }
h3 { font-size: var(--text-xl);  line-height: 1.35; font-weight: 600; }
h4 { font-size: var(--text-lg);  line-height: 1.4;  font-weight: 600; }

h1, h2, h3, h4 { margin-top: var(--space-md); margin-bottom: var(--space-xs); }
h1:first-child,
h2:first-child,
h3:first-child,
h4:first-child  { margin-top: 0; }

p { max-width: 100%; }

/* Textové bloky (include/bloky.inc.php → blok()) */
.blok__text p { margin-top: var(--space-sm); margin-bottom: var(--space-sm); }
.blok__text p:first-child { margin-top: 0; }
.blok__text p:last-child  { margin-bottom: 0; }
/* Blok vložený za jiný obsah stránky (gdpr-text, kontakt-text…, CSS 3.28): odstup od předchozího
   textu a nadpis na začátku bloku s běžnou horní mezerou — jinak ho h3:first-child vynuloval a blok
   se nalepil na předchozí odstavec. Za nadpisem bloku (h2 + .blok__text) beze změny. */
:not(:is(h1, h2, h3, h4)) + .blok__text { margin-top: var(--space-sm); }
:not(:is(h1, h2, h3, h4)) + .blok__text > :is(h2, h3, h4):first-child { margin-top: var(--space-md); }
/* Úvod pod H1 systémové stránky (blok „{id}-uvod", blok_uvod()) — 16px od nadpisu místo 8px (CSS 3.29) */
.blok__uvod { margin-top: var(--space-sm); }
/* 404: úvod mezi nadpisem a hláškou v jednom kontejneru — víc vzduchu nahoře i dole (CSS 3.30) */
.stranka-404 .blok__uvod { margin-block: var(--space-md); }
/* GDPR (gdpr.php): odstavce za sebou, např. Cookies + věta o videích */
.gdpr p + p { margin-top: var(--space-sm); }

/* Typografie – obsahové elementy */
ul:not([class]),
ol:not([class]) {
  padding-left:   var(--space-md);
  display:        flex;
  flex-direction: column;
  gap:            0.25rem;
  margin-block:   var(--space-sm);
}

blockquote {
  border-left:  4px solid var(--color-primary);
  padding-left: var(--space-md);
  color:        var(--color-text-muted);
  font-style:   italic;
  margin-block: var(--space-sm);
}

dl dt {
  font-weight: 600;
  margin-top:  var(--space-sm);
}

dl dd {
  padding-left: var(--space-md);
  color:        var(--color-text-muted);
  margin-top:   var(--space-xs);
}

pre {
  background:    var(--color-bg-alt);
  border:        1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding:       var(--space-sm) var(--space-md);
  overflow-x:    auto;
  font-size:     var(--text-sm);
  line-height:   1.7;
  margin-block:  var(--space-sm);
  max-width:     100%;
  box-sizing:    border-box;
}

@media (max-width: 600px) {
  pre {
    white-space: pre-wrap;   /* zalamuje dlouhé řádky na mobilu */
    word-break:  break-all;
  }
}

code {
  font-family:   monospace;
  font-size:     var(--text-sm);
  background:    var(--color-bg-alt);
  padding:       2px 6px;
  border-radius: 4px;
  color:         var(--color-primary-text-safe);
}

pre code {
  background: none;
  padding:    0;
  color:      inherit;
}

/* Kotvy – odsazení pod sticky headerem */
:not(body):not(html)[id] { scroll-margin-top: 80px; }


/* ── 3. SECTION ───────────────────────────────────────────── */
/*
   Základní stavební blok stránky.

   Základ:    <section class="section">
   Pozadí:    section--alt | section--primary | section--dark
   Velikost:  section--sm  | section--lg
   Okraje:    section--full | section--edge
   Textury:   section--dots | section--stripes | section--diagonal
*/

.section {
  padding-block: var(--space-lg);
  position:      relative;
}

/* Velikosti */
.section--sm  { padding-block: var(--space-md); }
.section--lg  { padding-block: var(--space-xl); }
.section--notop { padding-top: 0; }

/* Pozadí */
.section--alt { background: var(--color-bg-alt); }

.section--primary {
  background: var(--color-primary);
  color: var(--color-primary-contrast);
}
.section--primary h1,
.section--primary h2,
.section--primary h3,
.section--primary h4,
.section--primary p       { color: inherit; }
.section--primary a:not(.btn),
.section--dark    a:not(.btn)       { color: color-mix(in srgb, var(--color-primary-contrast) 80%, transparent); }
.section--primary a:not(.btn):hover,
.section--dark    a:not(.btn):hover { color: var(--color-primary-contrast); }

.section--secondary {
  background: var(--color-secondary);
  color: var(--color-secondary-contrast);
}
.section--secondary h1,
.section--secondary h2,
.section--secondary h3,
.section--secondary h4,
.section--secondary p       { color: inherit; }
.section--secondary a:not(.btn)       { color: color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent); }
.section--secondary a:not(.btn):hover { color: var(--color-secondary-contrast); }

.section--dark {
  background: var(--color-primary-dark);
  color: var(--color-primary-contrast);
}
.section--dark h1,
.section--dark h2,
.section--dark h3,
.section--dark h4,
.section--dark p   { color: inherit; }

/* Nadpis sekce */
.section__header {
  text-align:    center;
  margin-bottom: var(--space-md);
}
.section__header p {
  margin-inline: auto;
  color:         var(--color-text-muted);
}
.section--primary .section__header p,
.section--dark    .section__header p { color: color-mix(in srgb, var(--color-primary-contrast) 75%, transparent); }
.section--secondary .section__header p { color: color-mix(in srgb, var(--color-secondary-contrast) 75%, transparent); }

/* Full-width – obsah od kraje k okraji */
.section--full       { padding-inline: 0; }
.section--full .grid { gap: 0; }

/* Edge – text od kraje s bezpečnou mezerou (přebije section--full) */
.section--edge { padding-inline: clamp(1rem, 4vw, 3rem); }

/* ── Textury ───────────────────────────────────────────────
   Kombinují se s jakýmkoliv pozadím.
   Na section--alt přepnou automaticky na tmavší variantu.
   ────────────────────────────────────────────────────────── */

.section--dots {
  background-image: radial-gradient(rgba(255,255,255,.07) 1px, transparent 1px);
  background-size:  24px 24px;
}
.section--dots.section--alt {
  background-image: radial-gradient(rgba(0,0,0,.07) 1px, transparent 1px);
  background-size:  24px 24px;
}

.section--stripes {
  background-image: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent           40px,
    rgba(255,255,255,.03) 40px,
    rgba(255,255,255,.03) 80px
  );
}
.section--stripes.section--alt {
  background-image: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent       40px,
    rgba(0,0,0,.03) 40px,
    rgba(0,0,0,.03) 80px
  );
}

.section--diagonal {
  clip-path:      polygon(0 0, 100% 0, 100% 88%, 0 100%);
  padding-bottom: calc(var(--space-xl) + 60px);
}


/* ── 4. HERO ──────────────────────────────────────────────── */
/*
   Sémantický modifikátor – hlavní sekce stránky, vždy jen jedna.
   Větší padding + dekorativní kruhy přes ::before / ::after.
   Kombinuje se volně s pozadím a texturami.

   Použití:
     <section class="section hero section--primary">
     <section class="section hero section--primary section--dots">
*/

.hero {
  padding-block: var(--space-xl);
  position:      relative;
  overflow:      hidden;
}

.hero::before {
  content:       '';
  position:      absolute;
  right:         -120px;
  top:           -120px;
  width:         500px;
  height:        500px;
  border-radius: 50%;
  background:    rgba(255,255,255,.04);
  pointer-events: none;
}

.hero::after {
  content:       '';
  position:      absolute;
  right:         60px;
  bottom:        -60px;
  width:         280px;
  height:        280px;
  border-radius: 50%;
  background:    rgba(255,255,255,.03);
  pointer-events: none;
}

.hero__text {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-sm);
}

.hero__img img {
  width:         100%;
  border-radius: var(--radius-lg);
  object-fit:    cover;
}

@media (max-width: 768px) {
  .hero { padding-block: var(--space-lg); }
}


/* ── 5. CONTAINER ─────────────────────────────────────────── */
/*
   Kotví obsah na střed stránky.

   Výchozí (md): <div class="container">
   Úzký (sm):    <div class="container container--sm">
   Široký (lg):  <div class="container container--lg">
*/

.container {
  width:          100%;
  max-width:      var(--container-md);
  margin-inline:  auto;
  padding-inline: var(--container-pad);
}

.container--sm { max-width: var(--container-sm); }
.container--lg { max-width: var(--container-lg); }


/* ── 6. GRID ──────────────────────────────────────────────── */
/*
   Výchozí: auto-fit – samo rozloží obsah.
   Override: data-cols="2|3|4|5" – zafixuje počet sloupců.

   Výška obrázků přepisovatelná per-grid:
     <div class="grid" data-cols="3" style="--card-img-height: 320px">
*/

.grid {
  display:               grid;
  gap:                   var(--grid-gap);
  grid-template-columns: repeat(auto-fit, minmax(min(var(--grid-min), 100%), 1fr));
}

.grid[data-cols="1"] { grid-template-columns: 1fr; }
.grid[data-cols="2"] { grid-template-columns: repeat(2, 1fr); }
.grid[data-cols="3"] { grid-template-columns: repeat(3, 1fr); }
.grid[data-cols="4"] { grid-template-columns: repeat(4, 1fr); }
.grid[data-cols="5"] { grid-template-columns: repeat(5, 1fr); }

.grid--center { align-items: center; }

@media (max-width: 960px) {
  .grid[data-cols="3"],
  .grid[data-cols="4"],
  .grid[data-cols="5"] { grid-template-columns: repeat(2, 1fr); }
  /* grid--stack-md – přeskládá 2 sloupce na 1 při 960px */
  .grid.grid--stack-md[data-cols="2"],
  .grid.grid--stack-md { grid-template-columns: 1fr !important; }
}

@media (max-width: 600px) {
  .grid[data-cols="2"],
  .grid[data-cols="3"],
  .grid[data-cols="4"],
  .grid[data-cols="5"] { grid-template-columns: 1fr; }
}

/* Tabulka akcí – na tabletu zmenšit tlačítka */
@media (max-width: 960px) and (min-width: 600.02px) {
  .akce-tabulka__akce .btn {
    font-size: .72rem;
    padding:   .2rem .5rem;
  }
}


/* ── 7. CARD ──────────────────────────────────────────────── */
/*
   Univerzální komponenta – karty, bloky obsahu, služby, produkty.

   Struktura:
     <div class="card">
       <div class="card__img">          obrázek s ořezem (cover)
       <div class="card__img--auto">    obrázek bez ořezu
       <div class="card__body">         obsah karty
       <div class="card__footer">       patička (cena + tlačítko)
       <div class="card__price">        cena
       <div class="card__icon">         ikona SVG

   Modifikátory chování:  card--hover | card--shadow | card--borderless
   Modifikátory vzhledu:  card--center | card--primary | card--alt | card--glass
   Modifikátory layoutu:  card--row
*/

.card {
  background:     var(--color-bg);
  border:         1px solid var(--color-border);
  border-radius:  var(--radius-md);
  overflow:       hidden;
  display:        flex;
  flex-direction: column;
}

/* Obrázek – cover */
.card__img img {
  width:      100%;
  height:     var(--card-img-height);
  object-fit: cover;
  display:    block;
}

/* Obrázek – původní poměr */
.card__img--auto img {
  height:     auto;
  object-fit: initial;
}

/* Tělo */
.card__body {
  padding:        var(--space-md);
  flex:           1;
  display:        flex;
  flex-direction: column;
  gap:            var(--space-xs);
}

.card__body h1,
.card__body h2,
.card__body h3 {
  font-size:         var(--text-base);
  font-weight:       600;
  margin:            0;
  display:           -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow:          hidden;
}

.card__body--sm { padding: var(--space-sm); }
.card__body--lg { padding: var(--space-lg) var(--space-md); }

/* Patička */
.card__footer {
  padding:         var(--space-sm) var(--space-md);
  border-top:      1px solid var(--color-border);
  display:         flex;
  align-items:     center;
  justify-content: center;
  gap:             var(--space-sm);
}

/* Cena */
.card__price {
  font-size:   var(--text-lg);
  font-weight: 700;
  color:       var(--color-primary-text-safe);
  margin-top:  auto;
  padding:     var(--space-sm) var(--space-md) 0;
  text-align:  center;
}

/* Meta řádek – cena + badge ve spodku card__body */
.card__meta {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  gap:             .5rem;
  margin-top:      auto;
  padding-top:     .875rem;
}

.card__meta-price {
  font-size:   var(--text-sm);
  font-weight: 600;
  color:       var(--color-secondary-text-safe);
}

/* Ikona */
.card__icon {
  width:           48px;
  height:          48px;
  background:      var(--color-primary-light);
  border-radius:   var(--radius-md);
  display:         flex;
  align-items:     center;
  justify-content: center;
  flex-shrink:     0;
}

.card__icon svg {
  width:           24px;
  height:          24px;
  stroke:          var(--color-primary);
  fill:            none;
  stroke-width:    1.8;
  stroke-linecap:  round;
  stroke-linejoin: round;
}

/* ── Modifikátory chování ── */

.card--hover {
  transition: transform var(--transition), box-shadow var(--transition);
  cursor:     pointer;
}
.card--hover:hover {
  transform:  translateY(-4px);
  box-shadow: var(--shadow-md);
}

.card--shadow     { box-shadow:   var(--shadow-md); }
.card--borderless { border-color: transparent; }

/* ── Modifikátory vzhledu ── */

.card--center .card__body  { align-items: center; text-align: center; }
.card--center p            { max-width: 100%; }
.card--center .card__icon  { margin-inline: auto; }

.card--primary {
  background:   var(--color-primary);
  border-color: transparent;
  color:        var(--color-primary-contrast);
}
.card--primary h2,
.card--primary h3,
.card--primary p             { color: inherit; }
.card--primary p             { color: color-mix(in srgb, var(--color-primary-contrast) 85%, transparent); }
.card--primary .card__price  { color: color-mix(in srgb, var(--color-primary-contrast) 90%, transparent); }
.card--primary .card__footer { border-color: color-mix(in srgb, var(--color-primary-contrast) 15%, transparent); }
.card--primary .card__icon   { background: color-mix(in srgb, var(--color-primary-contrast) 15%, transparent); }
.card--primary .card__icon svg { stroke: var(--color-primary-contrast); }

.card--secondary {
  background:   var(--color-secondary);
  border-color: transparent;
  color:        var(--color-secondary-contrast);
}
.card--secondary h2,
.card--secondary h3,
.card--secondary p             { color: inherit; }
.card--secondary p             { color: color-mix(in srgb, var(--color-secondary-contrast) 85%, transparent); }
.card--secondary .card__price  { color: color-mix(in srgb, var(--color-secondary-contrast) 90%, transparent); }
.card--secondary .card__footer { border-color: color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent); }
.card--secondary .card__icon   { background: color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent); }
.card--secondary .card__icon svg { stroke: var(--color-secondary-contrast); }

.card--alt {
  background:   var(--color-bg-alt);
  border-color: transparent;
}

/* Skleněná karta – pro tmavé / barevné pozadí */
.card--glass {
  background:      rgba(255,255,255,.08);
  border:          1px solid rgba(255,255,255,.15);
  backdrop-filter: blur(4px);
  color:           var(--color-primary-contrast);
}
.card--glass h2,
.card--glass h3,
.card--glass p { color: inherit; }
.card--glass p { color: color-mix(in srgb, var(--color-primary-contrast) 80%, transparent); }
.card--glass .card__footer { border-color: rgba(255,255,255,.15); }

/* ── Horizontální layout ── */

.card--row               { flex-direction: row; }
.card--row .card__img    { width: 220px; flex-shrink: 0; }
.card--row .card__img img { height: 100%; }

@media (max-width: 600px) {
  .card--row               { flex-direction: column; }
  .card--row .card__img    { width: 100%; }
  .card--row .card__img img { height: var(--card-img-height); }
}


/* ── 8. BADGE ─────────────────────────────────────────────── */
/*
   <span class="badge badge--new">Novinka</span>
   <span class="badge badge--sale">-20 %</span>
   <span class="badge badge--hot">Limitováno</span>
*/

.badge {
  display:       inline-block;
  font-size:     11px;
  font-weight:   600;
  padding:       3px 10px;
  border-radius: 20px;
  white-space:   nowrap;
}

.badge--new     { background: var(--color-success-light); color: var(--color-success); }
.badge--sale    { background: var(--color-warning-light); color: #92400e; }
.badge--hot     { background: var(--color-danger-light);  color: #991b1b; }
.badge--info    { background: var(--color-info-light);    color: var(--color-info); }
.badge--primary { background: var(--color-primary-light); color: var(--color-primary-text-safe); }

/* Hero badge – dekorativní label nad nadpisem */
.badge--hero { font-size: .75rem; font-weight: 400; padding: 4px 14px; }


/* ── 9. STEPS ─────────────────────────────────────────────── */
/*
   Kroky procesu se spojovací linkou.

   Použití:
     <div class="steps" data-cols="4">
       <div class="step">
         <div class="step__num">1</div>
         <h4>Název</h4>
         <p>Popis.</p>
       </div>
     </div>
*/

.steps {
  display:  grid;
  gap:      0;
  position: relative;
}

.steps[data-cols="2"] { grid-template-columns: repeat(2, 1fr); }
.steps[data-cols="3"] { grid-template-columns: repeat(3, 1fr); }
.steps[data-cols="4"] { grid-template-columns: repeat(4, 1fr); }

.steps::before {
  content:    '';
  position:   absolute;
  top:        26px;
  height:     1px;
  background: var(--color-border);
}
.steps[data-cols="2"]::before { left: 25%;    right: 25%; }
.steps[data-cols="3"]::before { left: 16.67%; right: 16.67%; }
.steps[data-cols="4"]::before { left: 12.5%;  right: 12.5%; }

.step {
  text-align: center;
  padding:    0 var(--space-sm);
}

.step__num {
  width:           52px;
  height:          52px;
  border-radius:   50%;
  background:      var(--color-bg);
  border:          2px solid var(--color-primary);
  display:         flex;
  align-items:     center;
  justify-content: center;
  font-size:       var(--text-lg);
  font-weight:     800;
  color:           var(--color-primary-text-safe);
  margin:          0 auto var(--space-sm);
  position:        relative;
  z-index:         1;
}

.section--primary .step__num,
.section--dark    .step__num {
  background:   var(--color-primary);
  border-color: color-mix(in srgb, var(--color-primary-contrast) 40%, transparent);
  color:        var(--color-primary-contrast);
}

.section--primary .steps::before,
.section--dark    .steps::before { background: color-mix(in srgb, var(--color-primary-contrast) 20%, transparent); }

.step h3 { font-size: var(--text-base); margin-bottom: var(--space-xs); }
.step p  { font-size: var(--text-sm); color: var(--color-text-muted); max-width: 100%; }

.section--primary .step p,
.section--dark    .step p { color: color-mix(in srgb, var(--color-primary-contrast) 70%, transparent); }

@media (max-width: 768px) {
  .steps[data-cols="3"],
  .steps[data-cols="4"] { grid-template-columns: repeat(2, 1fr); row-gap: var(--space-md); }
  .steps::before        { display: none; }
}

@media (max-width: 480px) {
  .steps[data-cols="2"],
  .steps[data-cols="3"],
  .steps[data-cols="4"] { grid-template-columns: 1fr; row-gap: var(--space-md); }
}


/* ── 10. TABULKA ──────────────────────────────────────────── */
/*
   Wrapper zajišťuje horizontální scroll na mobilu.

   Použití:
     <div class="table-wrap">
       <table class="table table--striped table--hover">

   Varianty:
     table--striped   střídání řádků
     table--bordered  ohraničení buněk
     table--hover     hover efekt
     table--compact   menší padding
     table--nowrap    bez zalomení textu

   Velikost:
     table-wrap--sm   užší tabulka zarovnaná na střed
*/

.table-wrap {
  width:         100%;
  overflow-x:    auto;
  -webkit-overflow-scrolling: touch;
  border:        1px solid var(--color-border);
  border-radius: var(--radius-md);
}

.table-wrap--sm {
  max-width:    600px;
  margin-inline: auto;
}

.table {
  width:           100%;
  border-collapse: collapse;
  font-size:       var(--text-base);
  white-space:     normal;
}

.table--nowrap { white-space: nowrap; }

.table thead {
  background: var(--color-primary);
  color:      var(--color-primary-contrast);
  text-align: left;
}

.table thead th {
  padding:     var(--space-sm) var(--space-md);
  font-weight: 600;
  font-size:   var(--text-sm);
}

.table tbody tr {
  background:    var(--color-bg);
  border-bottom: 1px solid var(--color-border);
  transition:    background var(--transition);
}

.table tbody tr:last-child { border-bottom: none; }

.table tbody td {
  padding: var(--space-sm) var(--space-md);
  color:   var(--color-text);
}

.table--striped tbody tr:nth-child(even) { background: var(--color-bg-alt); }

.table--bordered th,
.table--bordered td { border: 1px solid var(--color-border); }

.table--hover tbody tr:hover { background: var(--color-primary-light); }

.table--compact thead th,
.table--compact tbody td { padding: var(--space-xs) var(--space-sm); }

.table td.text-right,
.table th.text-right { text-align: right; }

.table td.td--primary { color: var(--color-primary-text-safe); font-weight: 700; }
.table td.td--success { color: var(--color-success); font-weight: 600; }
.table td.td--danger  { color: var(--color-danger);  font-weight: 600; }
.table td.td--muted   { color: var(--color-text-muted); }


/* ── 11. FORMULÁŘ ─────────────────────────────────────────── */
/*
   Použití:
     <form class="form">
       <div class="form__row">         dvousloupcový řádek
       <div class="form__group">       skupina label + input
       <label class="form__label form__label--required">
       <input class="form__input">
       <textarea class="form__textarea">
       <select class="form__select">
       <div class="form__hint">        pomocný text
       <div class="form__error">       chybová zpráva
       <div class="form__check">       checkbox
       <div class="form__radio-group"> skupina radio tlačítek
       <label class="form__radio">     jedno radio tlačítko

   Stavy:   input.is-error | input.is-success
   Alerty:  alert--success | alert--warning | alert--danger | alert--info
*/

.form {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-md);
}

.form__group {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-xs);
}

.form__row {
  display: grid;
  gap:     var(--space-md);
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.form__nadpis {
  margin-top:    0;
  margin-bottom: 0;
  font-size:     var(--text-lg);
  font-weight:   600;
}

/* ── Potvrzení před odesláním (generator-formulare.php) ───── */
.form__potvrzeni {
  display:         none;
  position:        fixed;
  inset:           0;
  z-index:         2000;
  align-items:     center;
  justify-content: center;
  padding:         var(--space-md);
}

.form__potvrzeni.is-open { display: flex; }

.form__potvrzeni__overlay {
  position:   absolute;
  inset:      0;
  background: rgba(0,0,0,.6);
}

.form__potvrzeni__content {
  position:      relative;
  z-index:       1;
  width:         100%;
  max-width:     480px;
  max-height:    85svh;
  overflow-y:    auto;
  background:    var(--color-surface);
  border-radius: var(--radius-md);
  padding:       var(--space-lg);
  box-shadow:    0 8px 40px rgba(0,0,0,.3);
}

.form__potvrzeni__content h3 {
  margin-top:    0;
  margin-bottom: var(--space-sm);
  font-size:     var(--text-lg);
}

.form__potvrzeni__radky {
  border-top:    1px solid var(--color-border);
  margin-bottom: var(--space-md);
}

.form__potvrzeni__radek {
  display:         flex;
  justify-content: space-between;
  gap:             var(--space-md);
  padding:         .5rem 0;
  border-bottom:   1px solid var(--color-border);
  font-size:       var(--text-sm);
}

/* Dlouhý popisek (např. text souhlasu u checkboxu) – hodnota pod ním na celou šířku,
   místo vedle sebe kde by se muselo dělit po písmenech nebo dělat úzký sloupeček */
.form__potvrzeni__radek--stack {
  flex-direction: column;
  gap:            .15rem;
}

.form__potvrzeni__label {
  color:       var(--color-text-muted);
  flex-shrink: 0;
}

.form__potvrzeni__hodnota {
  text-align:  right;
  font-weight: 500;
  word-break:  break-word;
}

.form__potvrzeni__radek--stack .form__potvrzeni__hodnota {
  text-align: left;
}

.form__potvrzeni__akce {
  display:   flex;
  gap:       var(--space-sm);
  flex-wrap: wrap;
}

.form__label {
  font-size:   var(--text-sm);
  font-weight: 500;
  color:       var(--color-text);
}

.form__label--required::after {
  content: ' *';
  color:   var(--color-danger);
}

.form__input,
.form__textarea,
.form__select {
  width:         100%;
  padding:       .6rem 1rem;
  border:        1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size:     var(--text-base);
  font-family:   var(--font-base);
  color:         var(--color-text);
  background:    var(--color-bg);
  transition:    border-color var(--transition), box-shadow var(--transition);
  appearance:    none;
}

.form__input:hover,
.form__textarea:hover,
.form__select:hover { border-color: var(--color-text-muted); }

input[type="date"],
input[type="time"],
input[type="month"] { color-scheme: light; }
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="time"]::-webkit-calendar-picker-indicator,
input[type="month"]::-webkit-calendar-picker-indicator {
  cursor: pointer;
}

.form__input:focus,
.form__textarea:focus,
.form__select:focus {
  outline:      none;
  border-color: var(--color-primary);
  box-shadow:   0 0 0 3px var(--color-primary-light);
}

.form__textarea {
  resize:     vertical;
  min-height: 140px;
}

.form__select {
  background-image:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b7280' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:   no-repeat;
  background-position: right 1rem center;
  padding-right:       2.5rem;
}

.form__input.is-error,
.form__textarea.is-error    { border-color: var(--color-danger); }
.form__input.is-error:focus,
.form__textarea.is-error:focus { box-shadow: 0 0 0 3px var(--color-danger-light); }

.form__input.is-success,
.form__textarea.is-success  { border-color: var(--color-success); }

.form__hint  { font-size: var(--text-sm); color: var(--color-text-muted); }
.form__error { font-size: var(--text-sm); color: var(--color-danger); }

/* Checkbox */
.form__check {
  display:     flex;
  flex-wrap:   wrap;
  align-items: center;
  gap:         var(--space-xs);
  cursor:      pointer;
  font-size:   var(--text-sm);
}

.form__check .form__label {
  flex:      1 1 0%;
  min-width: 0;
}

.form__check .form__error {
  flex-basis:  100%;
  margin-left: calc(18px + var(--space-xs));
}

.form__check input {
  width:        18px;
  height:       18px;
  border:       1px solid var(--color-border);
  border-radius: 4px;
  accent-color: var(--color-primary);
  cursor:       pointer;
  flex-shrink:  0;
}

/* Radio skupina */
.form__radio-group {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-xs);
}

.form__radio {
  display:     flex;
  align-items: center;
  gap:         var(--space-xs);
  cursor:      pointer;
  font-size:   var(--text-base);
}

.form__radio input {
  width:        18px;
  height:       18px;
  accent-color: var(--color-primary);
  cursor:       pointer;
  flex-shrink:  0;
}

/* Alerty */
.alert {
  padding:       var(--space-sm) var(--space-md);
  border-radius: var(--radius-sm);
  border-left:   4px solid;
  font-size:     var(--text-sm);
}

.alert--success { background: var(--color-success-light); border-color: var(--color-success); color: var(--color-success); }
.alert--warning { background: var(--color-warning-light); border-color: var(--color-warning); color: var(--color-warning); }
.alert--danger  { background: var(--color-danger-light);  border-color: var(--color-danger);  color: var(--color-danger); }
.alert--info    { background: var(--color-info-light);    border-color: var(--color-info);    color: var(--color-info); }


/* Kompaktní varianta formuláře */
.form--sm .form__group  { gap: var(--space-2xs); }
.form--sm .form__row    { gap: var(--space-sm); }
.form--sm .form__input,
.form--sm .form__textarea,
.form--sm .form__select { padding: .45rem .75rem; font-size: var(--text-sm); }
.form--sm .form__textarea { min-height: 100px; }
.form--sm .form__check  { font-size: var(--text-xs); }


/* ── 12. TLAČÍTKA ─────────────────────────────────────────── */
/*
   Základ:    <a class="btn btn--primary">Text</a>
              <button type="submit" class="btn btn--primary">Odeslat</button>
   Varianty:  btn--primary | btn--secondary | btn--outline | btn--ghost | btn--white
   Velikosti: btn--sm | btn--lg
   Skupina:   <div class="btn-group"> nebo <div class="btn-group btn-group--center">
*/

.btn {
  display:         inline-flex;
  align-items:     center;
  justify-content: center;
  gap:             var(--space-xs);
  padding:         .6rem 1.5rem;
  border-radius:   var(--radius-sm);
  font-size:       var(--text-base);
  font-weight:     500;
  text-decoration: none;
  cursor:          pointer;
  border:          2px solid transparent;
  transition:      background var(--transition), color var(--transition),
                   border-color var(--transition);
  white-space:     nowrap;
}

.btn--primary         { background: var(--color-primary);   color: var(--color-primary-contrast); }
.btn--primary:hover   { background: var(--color-primary-dark); color: var(--color-primary-contrast); }

.btn--secondary       { background: var(--color-secondary); color: var(--color-secondary-contrast); }
.btn--secondary:hover { background: var(--color-secondary-dark); color: var(--color-secondary-contrast); }

.btn--danger          { background: #dc2626; color: #fff; border-color: #dc2626; }
.btn--danger:hover    { background: #b91c1c; border-color: #b91c1c; color: #fff; }

.btn--outline         { border-color: var(--color-primary); color: var(--color-primary-text-safe); background: transparent; }
.btn--outline:hover   { background: var(--color-primary); color: var(--color-primary-contrast); }

.btn--ghost           { background: transparent; color: var(--color-primary-text-safe); }
.btn--ghost:hover     { background: var(--color-primary-light); }

.btn--white           { background: #fff; color: var(--color-primary-text-safe); }
.btn--white:hover     { background: var(--color-primary-light); color: var(--color-primary-text-safe); }

.btn--outline-white   { background: transparent; color: #fff; border-color: rgba(255,255,255,.6); }
.btn--outline-white:hover { background: rgba(255,255,255,.15); border-color: #fff; color: #fff; }

/* Tlačítka na tmavém / primárním pozadí */
.section--primary .btn--white,
.section--dark    .btn--white     { color: var(--color-primary-text-safe); }

.section--primary .btn--outline,
.section--dark    .btn--outline   { border-color: color-mix(in srgb, var(--color-primary-contrast) 50%, transparent); color: var(--color-primary-contrast); }
.section--primary .btn--outline:hover,
.section--dark    .btn--outline:hover { background: color-mix(in srgb, var(--color-primary-contrast) 15%, transparent); color: var(--color-primary-contrast); }
.section--secondary .btn--outline   { border-color: color-mix(in srgb, var(--color-secondary-contrast) 50%, transparent); color: var(--color-secondary-contrast); }
.section--secondary .btn--outline:hover { background: color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent); color: var(--color-secondary-contrast); }

.section--primary .btn--ghost,
.section--dark    .btn--ghost   { color: var(--color-primary-contrast); }
.section--primary .btn--ghost:hover,
.section--dark    .btn--ghost:hover { background: color-mix(in srgb, var(--color-primary-contrast) 15%, transparent); }
.section--secondary .btn--ghost { color: var(--color-secondary-contrast); }
.section--secondary .btn--ghost:hover { background: color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent); }

.btn--sm { padding: .35rem 1rem;   font-size: var(--text-sm); }
.btn--lg { padding: .85rem 2.2rem; font-size: var(--text-lg); }

@media (max-width: 480px) {
  .btn--lg { white-space: normal; text-align: center; }
}

.btn-group {
  display:    flex;
  flex-wrap:  wrap;
  gap:        var(--space-sm);
  margin-top: var(--space-sm);
}

.btn-group--center { justify-content: center; width: 100%; }


/* ── Skip link ────────────────────────────────────────────── */

.skip-link {
  position: absolute;
  top: -100%;
  left: 1rem;
  padding: .4rem 1rem;
  background: var(--color-primary);
  color: var(--color-primary-contrast);
  font-size: var(--text-sm);
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  z-index: 9999;
  text-decoration: none;
}
.skip-link:focus { top: 0; }

/* ── 13. TOPBAR ───────────────────────────────────────────── */

.topbar {
  background:    var(--color-primary-dark, #0d3347);
  color:         color-mix(in srgb, var(--color-primary-contrast) 80%, transparent);
  font-size:     var(--text-sm);
  padding-block: .4rem;
}

.topbar__inner {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
}

.topbar__right {
  display:     flex;
  align-items: center;
  gap:         .5rem;
}

.topbar__sep { opacity: .6; }

.topbar a {
  color:           inherit;
  text-decoration: none;
  transition:      color var(--transition);
}
.topbar a:hover { color: var(--color-primary-contrast); }


/* ── 14. HEADER & NAV ───────────────────────────────────── */

/* Overlay */
.nav--overlay {
  position:       fixed;
  inset:          0;
  background:     rgba(0,0,0,.35);
  z-index:        998;
  opacity:        0;
  pointer-events: none;
  transition:     opacity 300ms ease;
}
.nav--overlay.is-open {
  opacity:        1;
  pointer-events: auto;
}

/* ── HEADER ─────────────────────────────────────────────── */
.header {
  background:    var(--color-bg);
  border-bottom: 1px solid var(--color-border);
  position:      relative;
  z-index:       999;
  transition:
    background  var(--transition),
    box-shadow  var(--transition);
}
.header--sticky {
  position: sticky;
  top:      0;
}

/* Scroll efekt – jen desktop */
.header:not(.header--nav-mobile).scrolled {
  box-shadow: var(--shadow-md);
}
.header:not(.header--nav-mobile).scrolled .header__inner {
  padding-block: .5rem;
}

/* ── GLASS ──────────────────────────────────────────────── */
.header--glass {
  background:              rgba(255,255,255,.92);
  backdrop-filter:         blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom:           1px solid rgba(255,255,255,.25);
}
/* Na mobilu glass vypneme – menu by mělo plné pozadí */
.header--nav-mobile.header--glass {
  background:    var(--color-bg);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  border-bottom: 1px solid var(--color-border);
}

/* ── HEADER INNER ───────────────────────────────────────── */
.header__inner {
  display:       flex;
  align-items:   center;
  gap:           var(--space-md);
  padding-block: var(--space-sm);
  transition:    padding-block var(--transition);
}

@media (max-width: 600px) {
  .header__inner { padding-block: .35rem; }
  .logo__img { height: 30px !important; }
  .topbar { font-size: .72rem; padding-block: .25rem; }
}

/* ── LOGO ───────────────────────────────────────────────── */
.logo {
  display:         flex;
  align-items:     center;
  gap:             var(--space-xs);
  text-decoration: none;
  color:           var(--color-text);
  flex-shrink:     0;
  padding-block:   .25rem;
}
@media (hover: hover) {
  .logo:hover { opacity: .85; }
}

.logo__img {
  height:  40px;
  display: block;
}

.logo__text {
  display:        flex;
  flex-direction: column;
  line-height:    1.2;
}

.logo__title {
  font-weight: 700;
  font-size:   1.1rem;
  line-height: 1.1;
}

.logo__subtitle {
  font-size:  var(--text-sm);
  color:      var(--color-text-muted);
  margin-top: .2rem;
}

/* Logo na mobilu */
/* Logo text – skrýt až na úzkých displejích (≤480px), ne už při přepnutí na hamburger
   (960px, viz js/main.js _mobileQuery) — pod 960px je v hlavičce jen logo + hamburger,
   místa je dost. Web bez obrázku loga (.logo--text-only) si text ponechá vždy. */
.logo__text--desktop { display: flex; flex-direction: column; }

@media (max-width: 960px) {
  .logo__img { height: 36px !important; width: auto; }
}
@media (max-width: 480px) {
  .logo:not(.logo--text-only) .logo__text--desktop { display: none; }
}

/* Těsně nad hamburgerem (961–1200px): menší mezery v menu.
   Dolní hranice 960.02px, ne 961px: okno 960,99 px (škálování Windows) by jinak nesplnilo
   ani hamburger (max-width: 960px), ani tohle (CSS 3.24). */
@media (min-width: 960.02px) and (max-width: 1200px) {
  .header:not(.header--nav-mobile) .nav > ul { gap: 1rem; }
}
/* Vodorovné menu bez odsazení obsahových seznamů (ul:not([class]) → padding-left 32px navíc,
   CTA přečnívalo za okraj kontejneru — CSS 3.27, podnět klidna-sila). Mobilní menu beze změny. */
.header:not(.header--nav-mobile) .nav > ul { padding-left: 0; }

/* Šetření místem podle skutečného obsahu hlavičky (CSS 3.26, MWS 3.08): skript za </header>
   (window.mwsHlavicka) změří, jestli se logo + menu + CTA vejdou do řádku, a jen když ne,
   postupně: 1. podnadpis zalomí na šířku názvu (vyrovnané řádky, k šířce loga nic nepřidá —
   samostatné skrytí podnadpisu by už nic neušetřilo), 2. skryje CTA, 3. přepne na hamburger.
   Min. šířka textu, ať se u krátkého názvu podnadpis nerozpadne na mnoho řádků. */
.header--logo-zalom .logo__text     { min-width: 9em; }
.header--logo-zalom .logo__subtitle { width: 0; min-width: 100%; text-wrap: balance; }
.header--bez-cta:not(.header--nav-mobile) .header__cta { display: none; }

/* Bez JavaScriptu (třídu header--mereno přidá až skript) dřívější pevné prahy. */
@media (min-width: 960.02px) and (max-width: 1200px) {
  .header:not(.header--mereno) .logo__subtitle { display: none; }
}
@media (min-width: 960.02px) and (max-width: 1080px) {
  .header:not(.header--mereno) .header__cta { display: none; }
}

/* Logo varianty */
.logo--compact .logo__subtitle { display: none; }
.logo--icon    .logo__text     { display: none; }

/* ── NAV DESKTOP ────────────────────────────────────────── */
.nav {
  margin-left: auto;
}

/* ── HEADER CTA ─────────────────────────────────────────── */
.header__cta {
  flex-shrink: 0;
}

.nav > ul {
  list-style:      none;
  display:         flex;
  flex-direction:  row;
  gap:             var(--space-md);
  white-space:     nowrap;
}

.nav a {
  display:         block;
  text-decoration: none;
  color:           var(--color-text-muted);
  font-weight:     500;
  padding-bottom:  3px;
  position:        relative;
  transition:      color var(--transition);
}

.nav a::after {
  content:          '';
  position:         absolute;
  bottom:           0; left: 0; right: 0;
  height:           2px;
  background:       var(--color-primary);
  transform:        scaleX(0);
  transform-origin: left;
  transition:       transform var(--transition);
}

.nav a:hover,
.nav a.active {
  color: var(--color-primary-text-safe);
}

.nav a:hover::after,
.nav a.active::after {
  transform: scaleX(1);
}

/* ── HAMBURGER ──────────────────────────────────────────── */
.nav-toggle {
  display:         none;
  flex-direction:  column;
  gap:             5px;
  background:      none;
  border:          none;
  cursor:          pointer;
  padding:         .5rem;
  margin-left:     auto;
  border-radius:   var(--radius-sm);
  transition:      background var(--transition);
}
.nav-toggle:hover { background: var(--color-primary-light); }

.nav-toggle span {
  display:       block;
  width:         22px;
  height:        2px;
  background:    var(--color-text);
  border-radius: 2px;
  transition:
    transform 260ms cubic-bezier(.4,0,.2,1),
    opacity   220ms ease,
    width     220ms ease;
}

/* Hamburger → křížek */
.nav-toggle.is-active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle.is-active span:nth-child(2) { opacity: 0; width: 0; }
.nav-toggle.is-active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ── MOBILE MODE ────────────────────────────────────────── */
/*  Třída header--nav-mobile se přidává přes JS (resize + init).
    Řídí vše: toggle, dropdown, logo, glass, topbar.          */

.header--nav-mobile .nav-toggle { display: flex; }

/* CTA v hlavičce v režimu hamburgeru: „Logo …… [CTA] ☰" — CTA vpravo hned vedle
   hamburgeru, menší mezery, ať se logo + CTA + ☰ vejdou i na 360px. Bez CTA zůstává
   ☰ vpravo díky margin-left:auto v .nav-toggle. Pod 360px se CTA schová (3.17). */
.header--nav-mobile .header__inner { gap: .5rem; }
.header--nav-mobile .header__cta   { order: 1; margin-left: auto; padding-inline: .75rem; }
.header--nav-mobile .nav-toggle    { order: 2; }
.header--nav-mobile .header__inner:has(.header__cta) .nav-toggle { margin-left: 0; }
@media (max-width: 359px) {
  .header--nav-mobile .header__cta { display: none; }
  .header--nav-mobile .header__inner:has(.header__cta) .nav-toggle { margin-left: auto; }
}

.header--nav-mobile .nav {
  position:       absolute;
  top:            calc(100% + 1px);
  left:           0;
  right:          0;
  background:     var(--color-bg);
  border-bottom:  1px solid var(--color-border);
  box-shadow:     var(--shadow-md);
  padding:        var(--space-xs) 0;
  max-height:     calc(100svh - 64px);
  overflow-y:     auto;
  /* Animace: clip-path odroluje menu shora dolů */
  clip-path:      inset(0 0 100% 0);
  opacity:        0;
  pointer-events: none;
  transition:
    clip-path 280ms cubic-bezier(.4,0,.2,1),
    opacity   200ms ease;
}

.header--nav-mobile .nav.is-open {
  clip-path:      inset(0 0 0 0);
  opacity:        1;
  pointer-events: auto;
}

/* Položky mobilního menu */
.header--nav-mobile .nav > ul {
  flex-direction: column;
  gap:            0;
  white-space:    normal;
}

.header--nav-mobile .nav li { width: 100%; }

.header--nav-mobile .nav a {
  padding:       .875rem var(--container-pad);
  border-bottom: 1px solid var(--color-border);
  color:         var(--color-text);
  white-space:   normal;
  transition:    background var(--transition);
}

.header--nav-mobile .nav a::after { display: none; }

.header--nav-mobile .nav li:last-child a { border-bottom: none; }

.header--nav-mobile .nav a:hover,
.header--nav-mobile .nav a.active {
  background: var(--color-primary-light);
  color:      var(--color-primary-text-safe);
}

/* Topbar – skrytí řízeno přes body třídu z JS */
body.nav-mobile .topbar { display: none; }


/* ── PODMENU (desktop dropdown + mobile accordion) ────────── */

.nav__item--has-sub { position: relative; }
.nav__sub-toggle    { display: none; }

.nav__item--has-sub > a::after {
  content:        '';
  display:        inline-block;
  position:       static;
  width:          .45em;
  height:         .45em;
  border-right:   1.5px solid currentColor;
  border-bottom:  1.5px solid currentColor;
  background:     none;
  transform:      rotate(45deg);
  margin-left:    .4em;
  vertical-align: .05em;
  opacity:        .7;
  transition:     transform var(--transition), opacity var(--transition);
}
.nav__item--has-sub:hover > a::after {
  opacity:   1;
  transform: rotate(-135deg) translateY(.35em);
}

.nav__sub {
  display:        block;            /* vždy v DOMu, skryto přes visibility */
  position:       absolute;
  top:            100%;             /* žádná mezera — padding tvoří vizuální odstup */
  left:           0;
  list-style:     none;
  margin:         0;
  padding:        6px 0 .3rem;     /* 6px padding = hover bridge, ne gap */
  min-width:      190px;
  background:     var(--color-surface);
  border:         1px solid var(--color-border);
  border-radius:  var(--radius-sm);
  box-shadow:     var(--shadow-md);
  z-index:        200;
  visibility:     hidden;
  opacity:        0;
  pointer-events: none;
  transition:     opacity .15s ease, visibility .15s ease;
  transition-delay: .12s;          /* zpoždění jen při zavírání */
}
/* Podmenu u pravého okraje okna: zarovnat k pravé hraně položky (třídu přidává
   main.js podle skutečné polohy — skryté podmenu jinak rozšiřovalo stránku). 3.18 */
.nav__sub--vpravo { left: auto; right: 0; }
.nav__item--has-sub:hover > .nav__sub {
  visibility:     visible;
  opacity:        1;
  pointer-events: auto;
  transition-delay: 0s;            /* otevření okamžitě */
}

.nav__sub a {
  display:        block;
  padding:        .5rem 1.1rem;
  font-size:      var(--text-sm);
  font-weight:    400;
  color:          var(--color-text);
  white-space:    nowrap;
  border-bottom:  none;
}
.nav__sub a::after { display: none; }
.nav__sub a:hover,
.nav__sub a.active { color: var(--color-primary-text-safe); background: var(--color-bg-alt); }

/* Mobile podmenu */
.header--nav-mobile .nav__item--has-sub {
  display:       flex;
  flex-wrap:     wrap;
  align-items:   stretch;
  border-bottom: 1px solid var(--color-border);
}
.header--nav-mobile .nav__item--has-sub:last-child { border-bottom: none; }
.header--nav-mobile .nav__item--has-sub > a {
  flex:          1;
  border-bottom: none;
}
.header--nav-mobile .nav__sub-toggle {
  display:         flex;
  align-items:     center;
  justify-content: center;
  background:      none;
  border:          none;
  cursor:          pointer;
  color:           var(--color-text-muted);
  padding:         0 var(--container-pad) 0 .5rem;
  font-size:       .75rem;
  transition:      transform var(--transition), color var(--transition);
}
.header--nav-mobile .nav__item--has-sub.is-open > .nav__sub-toggle {
  transform: rotate(180deg);
  color:     var(--color-primary-text-safe);
}
.header--nav-mobile .nav__sub {
  position:        static;
  display:         none;           /* JS toggle přes .is-open */
  visibility:      visible;        /* reset desktop visibility triku */
  opacity:         1;
  pointer-events:  auto;
  transition:      none;
  transition-delay: 0s;
  width:           100%;
  box-shadow:      none;
  border:          none;
  border-radius:   0;
  border-top:      1px solid var(--color-border);
  background:      var(--color-bg-alt);
  padding:         .25rem 0;
  min-width:       0;
}
.header--nav-mobile .nav__item--has-sub.is-open > .nav__sub { display: block; }
.header--nav-mobile .nav__sub a {
  padding-left:  calc(var(--container-pad) + .75rem);
  border-bottom: 1px solid var(--color-border);
  color:         var(--color-text);
  white-space:   normal;
}
.header--nav-mobile .nav__sub li:last-child a { border-bottom: none; }


/* ── 15. FOOTER ───────────────────────────────────────────── */

.footer__top {
  background:    var(--color-primary);
  color:         color-mix(in srgb, var(--color-primary-contrast) 90%, transparent);
  padding-block: var(--space-md);
}

.footer__top h3 {
  font-size:      var(--text-sm);
  font-weight:    700;
  letter-spacing: .05em;
  text-transform: uppercase;
  margin-bottom:  var(--space-sm);
  margin-top:     0;
  color:          var(--color-primary-contrast);
}

.footer__top p,
.footer__top a {
  font-size:       var(--text-sm);
  color:           color-mix(in srgb, var(--color-primary-contrast) 70%, transparent);
  text-decoration: none;
  line-height:     1.5;
}

.footer__top a:hover { color: var(--color-primary-contrast); }

/* Barvy v patičce – přebijí globální dědění */
footer p { color: inherit; }
footer a { color: inherit; }

/* Zavřeno a přestávka v tmavé patičce – musí být čitelné */
.footer__top .provozni-kompakt__zavreno   { color: color-mix(in srgb, var(--color-primary-contrast) 50%, transparent); }
.footer__top .provozni-kompakt__prestavka { color: color-mix(in srgb, var(--color-primary-contrast) 80%, transparent); }

/* Logo v patičce – barvou textu na primární ploše; obrázek loga jako silueta
   (výchozí bílá, světlá primary v theme.css: --footer-logo-filter: brightness(0) = černá, none = beze změny) */
.footer__top .logo          { color: var(--color-primary-contrast); }
.footer__top .logo__subtitle { color: color-mix(in srgb, var(--color-primary-contrast) 70%, transparent); }
.footer__top .logo__img     { filter: var(--footer-logo-filter, brightness(0) invert(1)); }

.footer__links {
  display:        flex;
  flex-direction: column;
}

.footer__social {
  display:        flex;
  flex-direction: row;
  flex-wrap:      wrap;
  gap:            .75rem;
  margin-top:     .75rem;
}

.footer__bottom {
  background:    var(--color-primary-dark, #0d3347);
  color:         color-mix(in srgb, var(--color-primary-contrast) 75%, transparent);
  font-size:     var(--text-sm);
  padding-block: var(--space-sm);
}

.footer__bottom .container {
  display:         flex;
  justify-content: space-between;
  align-items:     center;
  flex-wrap:       wrap;
  gap:             var(--space-sm);
}

.footer__bottom a       { color: inherit; text-decoration: none; }
.footer__bottom a:hover { color: var(--color-primary-contrast); }

.footer__bottom-mid {
  display:     flex;
  flex-wrap:   wrap;
  justify-content: center;
  align-items: center;
  gap:         .25rem .75rem;
}

.footer__cookies-btn {
  background:  none;
  border:      none;
  cursor:      pointer;
  font-size:   1rem;
  padding:     0;
  line-height: 1;
  opacity:     .6;
  transition:  opacity var(--transition);
}
.footer__cookies-btn:hover { opacity: 1; }


/* ── 16. UTILITY ──────────────────────────────────────────── */

.text-center  { text-align: center; }
.text-right   { text-align: right; }
.text-muted   { color: var(--color-text-muted); }
.text-primary { color: var(--color-primary-text-safe); }
.text-sm      { font-size: var(--text-sm); }
.text-lg      { font-size: var(--text-lg); }
.text-xl      { font-size: var(--text-xl); }
.text-2xl     { font-size: var(--text-2xl); }
.text-3xl     { font-size: var(--text-3xl); }
.fw-bold      { font-weight: 700; }

.d-flex      { display: flex; }
.align-center { align-items: center; }
.gap-sm      { gap: var(--space-sm); }
.gap-md      { gap: var(--space-md); }

.mt-xs { margin-top: var(--space-xs); }
.mt-sm { margin-top: var(--space-sm); }
.mt-md { margin-top: var(--space-md); }
.mt-lg { margin-top: var(--space-lg); }

.mb-sm { margin-bottom: var(--space-sm); }
.mb-md { margin-bottom: var(--space-md); }

.mx-auto       { margin-inline: auto; }
.mx-auto-right { margin-left: auto; }

@media (max-width: 768px) {
  .hidden-mobile  { display: none !important; }
}
@media (min-width: 768.02px) {   /* .02, ne 769: bez mezery při neceločíselném DPR (CSS 3.24) */
  .visible-mobile { display: none !important; }
}

/* Checklist – ✓ seznam bez odrážek */
.checklist {
  list-style: none; padding: 0;
  display: flex; flex-direction: column; gap: .875rem;
}
.checklist li { display: flex; align-items: flex-start; gap: .75rem; }
.checklist li::before {
  content: '✓'; color: var(--color-secondary-text-safe);
  font-size: 1.25rem; line-height: 1.3; flex-shrink: 0;
}

.sr-only {
  position:    absolute;
  width: 1px;  height: 1px;
  padding: 0;  margin: -1px;
  overflow:    hidden;
  clip:        rect(0,0,0,0);
  white-space: nowrap;
  border:      0;
}

/* Notice – zvýrazněný informační blok
   Varianty: notice--warning | notice--info | notice--success | notice--danger */
.notice {
  padding:       var(--space-sm) var(--space-md);
  border-left:   4px solid;
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  font-size:     var(--text-sm);
  margin-block:  var(--space-sm);
}


.notice--warning { background: var(--color-warning-light); border-color: var(--color-warning); color: #92400e; }
.notice--info    { background: var(--color-info-light);    border-color: var(--color-info);    color: #1e3a5f; }
.notice--success { background: var(--color-success-light); border-color: var(--color-success); color: #14532d; }
.notice--danger  { background: var(--color-danger-light);  border-color: var(--color-danger);  color: #7f1d1d; }
.notice--none    { background: var(--color-surface);       border-color: var(--color-border);  color: var(--color-text); }


/* ── 17. GALERIE ─────────────────────────────────────────── */

.galerie__chyba {
  color:      var(--color-text-muted);
  text-align: center;
  padding:    var(--space-lg) 0;
  font-size:  var(--text-sm);
}

/* ── ROW – horizontální pruh ────────────────────────────── */
.galerie-row {
  display:       flex;
  align-items:   stretch;
  gap:           0;
  border:        1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow:      hidden;
  background:    var(--color-surface);
  transition:    box-shadow var(--transition);
}

.galerie-row:hover { box-shadow: var(--shadow-md); }

.galerie-row__img {
  flex-shrink: 0;
  width:       120px;
  height:      110px;
  display:     block;
  overflow:    hidden;
}

.galerie-row__img img {
  width:      100%;
  height:     100%;
  object-fit: cover;
  transition: transform 350ms ease;
}

.galerie-row:hover .galerie-row__img img { transform: scale(1.05); }

.galerie-row__info {
  flex:            1;
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  gap:             var(--space-md);
  padding:         var(--space-sm) var(--space-md);
  flex-wrap:       wrap;
}

.galerie-row__text { flex: 1; min-width: 0; }

.galerie-row__nazev {
  font-size:   var(--text-base);
  font-weight: 600;
  margin:      0 0 .2rem;
}

.galerie-row__nazev a {
  text-decoration: none;
  color:           var(--color-text);
  transition:      color var(--transition);
}

.galerie-row__nazev a:hover { color: var(--color-primary-text-safe); }

.galerie-row__datum {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  display:   block;
}

.galerie-row__perex {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  margin:    .25rem 0 0;
  white-space: nowrap;
  overflow:    hidden;
  text-overflow: ellipsis;
}

.galerie-row__btn { flex-shrink: 0; }

@media (max-width: 500px) {
  .galerie-row__img  { width: 90px; }
  .galerie-row__btn  { display: none; } /* na velmi malém mobilu tlačítko skrýt – klikne na fotku */
}


/* ── Přehled galerií ────────────────────────────────────── */
.galerie-prehled {
  display:               grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap:                   var(--space-md);
  align-items:           stretch;   /* karty stejně vysoké */
  margin-bottom:         var(--space-md);
}

.galerie-prehled-rows {
  margin-bottom: var(--space-md);
}


/* ── THUMB – 1 fotka + info ─────────────────────────────── */
.galerie-thumb {
  display:        flex;
  flex-direction: column;
  border-radius:  var(--radius-md);
  overflow:       hidden;
  background:     var(--color-surface);
  border:         1px solid var(--color-border);
  transition:     box-shadow var(--transition), transform var(--transition);
  margin:         var(--space-md) 0;
}

.galerie-prehled .galerie-thumb { margin: 0; }

.galerie-thumb:hover {
  box-shadow: var(--shadow-md);
  transform:  translateY(-2px);
}

.galerie-thumb__img {
  position:    relative;
  display:     block;
  overflow:    hidden;
  aspect-ratio: 4/3;
}

.galerie-thumb__img img {
  width:      100%;
  height:     100%;
  object-fit: cover;
  transition: transform 400ms ease;
}

.galerie-thumb:hover .galerie-thumb__img img {
  transform: scale(1.04);
}

.galerie-thumb__pocet {
  position:      absolute;
  bottom:        var(--space-xs);
  right:         var(--space-xs);
  background:    rgba(0,0,0,.55);
  color:         #fff;
  font-size:     var(--text-sm);
  padding:       2px 8px;
  border-radius: var(--radius-sm);
  backdrop-filter: blur(4px);
}

.galerie-thumb__info {
  padding: var(--space-sm) var(--space-md);
  display: flex;
  flex-direction: column;
  gap: .25rem;
  flex: 1;
}

.galerie-thumb__nazev {
  font-size:   var(--text-base);
  font-weight: 600;
  margin:      0;
}

.galerie-thumb__nazev a {
  text-decoration: none;
  color:           var(--color-text);
  transition:      color var(--transition);
}

.galerie-thumb__nazev a:hover { color: var(--color-primary-text-safe); }

.galerie-thumb__datum {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
}

.galerie-thumb__perex {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  margin:    0;
}


/* ── STRIP – řada fotek ─────────────────────────────────── */
.galerie-strip {
  border:         1px solid var(--color-border);
  border-radius:  var(--radius-md);
  overflow:       hidden;
  background:     var(--color-surface);
  margin-block:   var(--space-sm);
  display:        flex;
  flex-direction: column;
}

.galerie-strip__header {
  padding:       var(--space-sm) var(--space-md);
  border-bottom: 1px solid var(--color-border);
  flex:          1;              /* roste – tlačítko + fotky zůstanou dole */
}

.galerie-strip__btn {
  padding:       var(--space-xs) var(--space-md);
  border-bottom: 1px solid var(--color-border);
  display:       flex;
  align-items:   center;
}

.galerie-strip__nazev {
  font-size:   var(--text-base);
  font-weight: 600;
  margin:      0;
}

.galerie-strip__nazev a {
  text-decoration: none;
  color:           var(--color-text);
  transition:      color var(--transition);
}

.galerie-strip__nazev a:hover { color: var(--color-primary-text-safe); }

.galerie-strip__datum {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  display:   block;
}

.galerie-strip__perex {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  margin:    .25rem 0 0;
}

.galerie-strip__fotky {
  display: flex;
  gap:     2px;
}

.galerie-strip__item {
  flex:        1;
  overflow:    hidden;
  aspect-ratio: 1;
  display:     block;
}

.galerie-strip__item img {
  width:      100%;
  height:     100%;
  object-fit: cover;
  transition: transform 350ms ease, filter 350ms ease;
}

.galerie-strip__item:hover img {
  transform: scale(1.06);
  filter:    brightness(1.08);
}

/* Placeholder slot – prázdné místo při méně fotkách */
.galerie-strip__placeholder {
  flex:       1;
  aspect-ratio: 1;
  background: var(--color-border);
  opacity:    .4;
}


/* ── LINK – textový odkaz ───────────────────────────────── */
.galerie-prehled-linky {
  display:        flex;
  flex-direction: column;
  gap:            .25rem;
}

.galerie-link {
  display:         flex;
  align-items:     baseline;
  gap:             .5rem;
  text-decoration: none;
  color:           var(--color-text);
  padding:         .35rem .5rem;
  border-radius:   var(--radius-sm);
  transition:      background var(--transition), color var(--transition);
}

.galerie-link:hover {
  background: var(--color-primary-light);
  color:      var(--color-primary-text-safe);
}

.galerie-link__arrow {
  color:       var(--color-primary-text-safe);
  flex-shrink: 0;
  font-size:   .9em;
  transition:  transform var(--transition);
}

.galerie-link:hover .galerie-link__arrow { transform: translateX(3px); }

.galerie-link__nazev {
  font-weight: 500;
}

.galerie-link__datum {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
}


/* ── FULL – celá galerie ─────────────────────────────────── */
.galerie-full__header {
  margin-bottom: var(--space-md);
}

.galerie-full__datum {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  display:   block;
  margin-top: .25rem;
}

.galerie-full__grid {
  display:               grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--galerie-full-min, 200px), 1fr));
  gap:                   var(--space-xs);
}

.galerie-full__item {
  display:      block;
  overflow:     hidden;
  aspect-ratio: 1;
  border-radius: var(--radius-sm);
}

.galerie-full__item img {
  width:      100%;
  height:     100%;
  object-fit: cover;
  transition: transform 350ms ease, filter 350ms ease;
}

.galerie-full__item:hover img {
  transform: scale(1.06);
  filter:    brightness(1.06);
}

@media (max-width: 600px) {
  .galerie-full__grid {
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  }
}

/* Mezery mezi galerie komponentami – řady sdílejí okraj (tenká linka), zbytek odděluje space-md */
.galerie-full,
.galerie-strip,
.galerie-grid,
.galerie-mini  { margin-bottom: var(--space-md); }

.galerie-row + .galerie-full,
.galerie-row + .galerie-strip,
.galerie-row + .galerie-grid,
.galerie-row + .galerie-mini  { margin-top: var(--space-md); }


/* ── LIGHTBOX (CSS :target) ──────────────────────────────── */
.lightbox {
  display:         none;
  position:        fixed;
  inset:           0;
  z-index:         2000;
  align-items:     center;
  justify-content: center;
}

/* Otevřený lightbox */
.lightbox.is-open { display: flex; }

.lightbox__overlay {
  position:   absolute;
  inset:      0;
  background: rgba(0,0,0,.88);
  cursor:     zoom-out;
}

.lightbox__content {
  position:      relative;
  z-index:       1;
  max-width:     min(90vw, 1200px);
  max-height:    90svh;
  display:       flex;
  flex-direction: column;
  align-items:   center;
}

.lightbox__content img {
  max-width:     100%;
  max-height:    80svh;
  object-fit:    contain;
  border-radius: var(--radius-sm);
  box-shadow:    0 8px 40px rgba(0,0,0,.6);
}

.lightbox__close {
  position:      absolute;
  top:           -2.5rem;
  right:         0;
  color:         rgba(255,255,255,.8);
  font-size:     1.5rem;
  text-decoration: none;
  line-height:   1;
  transition:    color var(--transition);
}

.lightbox__close:hover { color: #fff; }

.lightbox__popis {
  color:       rgba(255,255,255,.7);
  font-size:   var(--text-sm);
  margin-top:  var(--space-xs);
  text-align:  center;
}

.lightbox__prev,
.lightbox__next {
  position:        absolute;
  top:             50%;
  transform:       translateY(-50%);
  color:           rgba(255,255,255,.8);
  font-size:       2.5rem;
  text-decoration: none;
  padding:         var(--space-xs) var(--space-sm);
  line-height:     1;
  transition:      color var(--transition), background var(--transition);
  border-radius:   var(--radius-sm);
  user-select:     none;
}

.lightbox__prev { left:  -4rem; }
.lightbox__next { right: -4rem; }

.lightbox__prev:hover,
.lightbox__next:hover {
  color:      #fff;
  background: rgba(255,255,255,.1);
}

@media (max-width: 700px) {
  .lightbox__prev { left:  0; }
  .lightbox__next { right: 0; }
  .lightbox__prev,
  .lightbox__next {
    top:       auto;
    bottom:    0;
    transform: none;
    font-size: 2rem;
  }
}


/* ── 18. PŘÍLOHY ─────────────────────────────────────────── */

/* ── Jedna příloha ──────────────────────────────────────── */
.priloha {
  display:       flex;
  align-items:   center;
  gap:           var(--space-sm);
  padding:       var(--space-xs) var(--space-sm);
  border:        1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background:    var(--color-surface);

  transition:    box-shadow var(--transition), border-color var(--transition);
  flex-wrap:     wrap;   /* tlačítko se přeskládá na mobilu */
}

.priloha:hover {
  border-color: var(--color-primary);
  box-shadow:   var(--shadow-sm);
}

.priloha__ikona {
  font-size:   1.5rem;
  flex-shrink: 0;
  line-height: 1;
}

.priloha__info {
  flex:           1;
  min-width:      0;
  display:        flex;
  flex-direction: column;
  gap:            .1rem;
}

.priloha__nazev {
  font-weight:     500;
  color:           var(--color-text);
  text-decoration: none;
  white-space:     nowrap;
  overflow:        hidden;
  text-overflow:   ellipsis;
  transition:      color var(--transition);
}

.priloha__nazev:hover { color: var(--color-primary-text-safe); }

.priloha__popis {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  white-space: normal;
}

.priloha__meta {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
}

.priloha__btn { flex-shrink: 0; }

@media (max-width: 480px) {
  .priloha {
    flex-wrap: wrap;
  }
  .priloha__info {
    flex:      1 1 100%;
    min-width: 0;
  }
  .priloha__btn {
    width: 100%;
  }
  .priloha__btn .btn {
    width: 100%;
    justify-content: center;
  }
  /* Tabulka příloh na mobilu – tlačítko pod */
  .priloha-tabulka { display: block; }
  .priloha-tabulka thead { display: none; }
  .priloha-tabulka tr {
    display:       block;
    border:        1px solid var(--color-border);
    border-radius: var(--radius-sm);
    margin-bottom: var(--space-xs);
    padding:       var(--space-xs);
  }
  .priloha-tabulka td {
    display: block;
    border:  none;
    padding: .2rem var(--space-xs);
  }
  .priloha-tabulka td:last-child .btn {
    width: 100%;
    justify-content: center;
    margin-top: .25rem;
  }
}


/* ── Seznam příloh ──────────────────────────────────────── */
.priloha-seznam {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-xs);
}


/* ── Tabulka příloh ─────────────────────────────────────── */
.priloha-tabulka {
  width:           100%;
  border-collapse: collapse;
  font-size:       var(--text-sm);
  margin:          var(--space-md) 0;
}

.priloha-tabulka th,
.priloha-tabulka td {
  padding:     .6rem var(--space-sm);
  text-align:  left;
  border-bottom: 1px solid var(--color-border);
}

.priloha-tabulka th {
  font-weight:      600;
  background:       var(--color-surface);
  color:            var(--color-text-muted);
  font-size:        var(--text-xs);
  text-transform:   uppercase;
  letter-spacing:   .05em;
}

.priloha-radek:hover td { background: var(--color-primary-light); }

.priloha-radek__nazev a {
  text-decoration: none;
  color:           var(--color-text);
  font-weight:     500;
  transition:      color var(--transition);
}

.priloha-radek__nazev a:hover { color: var(--color-primary-text-safe); }

.priloha-radek__typ {
  white-space: nowrap;
  color:       var(--color-text-muted);
}

.priloha-radek__velikost {
  white-space: nowrap;
  color:       var(--color-text-muted);
  text-align:  right;
}

.priloha-radek__akce { text-align: right; }

@media (max-width: 500px) {
  .priloha-radek__velikost { display: none; }
}


/* ── Inline příloha ─────────────────────────────────────── */
.priloha-inline {
  display:         inline-flex;
  align-items:     baseline;
  gap:             .35em;
  text-decoration: none;
  color:           var(--color-text);
  transition:      color var(--transition);
}

.priloha-inline:hover { color: var(--color-primary-text-safe); }

.priloha-inline__ikona {
  font-size:   1em;
  line-height: 1;
  flex-shrink: 0;
}

.priloha-inline__nazev {
  font-weight: 500;
}

.priloha-inline__meta {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  transition: color var(--transition);
}

.priloha-inline:hover .priloha-inline__meta { color: var(--color-primary-text-safe); }

/* ── Karty příloh – priloha_karty() (3.16) ─────────────────
   Položky kategorie z admin/prilohy.php jako karty: obálka nebo ikona,
   štítek (vyplněný = zvýrazněná karta), název, popis, tlačítko. Mřížka
   je .grid[data-cols], rozložení „pod sebou" .priloha-karty--radky.
   Ladění v theme.css (nebo inline na obalu):
     --priloha-karta-obrazek: 220px    výška plochy obrázku
     --priloha-karta-fit:     contain  contain = celý obrázek (obálky dokumentů),
                                       cover = vyplnit plochu s ořezem          */
.priloha-karty {
  --priloha-karta-obrazek: 220px;
  --priloha-karta-fit:     contain;
}

.priloha-karta--zvyraznena {
  border-color: var(--color-primary);
  outline:      1px solid var(--color-primary);
}

.priloha-karta__obrazek {
  position:        relative;
  height:          var(--priloha-karta-obrazek);
  flex-shrink:     0;
  display:         flex;
  align-items:     center;
  justify-content: center;
  background:      var(--color-bg-alt);
}

.priloha-karta__obrazek img {
  width:      100%;
  height:     100%;
  object-fit: var(--priloha-karta-fit);
  display:    block;
}

.priloha-karta__ikona { color: var(--color-primary-text-safe); opacity: .7; }

.priloha-karta__stitek {
  position:      absolute;
  top:           .6rem;
  left:          .6rem;
  padding:       .25rem .7rem;
  border-radius: 999px;
  background:    var(--color-primary);
  color:         var(--color-primary-contrast);
  font-size:     .7rem;
  font-weight:   700;
  line-height:   1.3;
}

/* Bez plochy obrázku stojí štítek nad názvem */
.priloha-karta__stitek--v-textu { position: static; align-self: flex-start; }

.priloha-karta .card__body p {
  margin:    0;
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
}

.priloha-karta__akce { padding: 0 var(--space-md) var(--space-md); }

/* Pod sebou: obrázek vlevo, text uprostřed, tlačítko vpravo */
.priloha-karty--radky {
  --priloha-karta-obrazek: 120px;
  display:        flex;
  flex-direction: column;
  gap:            var(--space-sm);
}

.priloha-karty--radky .priloha-karta {
  flex-direction: row;
  align-items:    center;
}

.priloha-karty--radky .priloha-karta__obrazek {
  width:  calc(var(--priloha-karta-obrazek) * .8);
  height: var(--priloha-karta-obrazek);
}

.priloha-karty--radky .priloha-karta__akce { padding: var(--space-md); }

@media (max-width: 600px) {
  .priloha-karty--radky .priloha-karta              { flex-direction: column; align-items: stretch; }
  .priloha-karty--radky .priloha-karta__obrazek     { width: auto; }
  .priloha-karty--radky .priloha-karta__akce        { padding-top: 0; }
}


/* ── 19. NOVINKY ─────────────────────────────────────────── */

.novinky__prazdno,
.novinky__chyba {
  color:      var(--color-text-muted);
  text-align: center;
  padding:    var(--space-lg) 0;
  font-size:  var(--text-sm);
}

/* ── CARD grid ──────────────────────────────────────────── */
.novinky-grid {
  display:               grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap:                   var(--space-md);
}

.aktualita-karta {
  display:        flex;
  flex-direction: column;
  border:         1px solid var(--color-border);
  border-radius:  var(--radius-md);
  overflow:       hidden;
  background:     var(--color-surface);
  transition:     box-shadow var(--transition), transform var(--transition);
}

.aktualita-karta:hover {
  box-shadow: var(--shadow-md);
  transform:  translateY(-2px);
}

.aktualita-karta__img {
  display:      block;
  overflow:     hidden;
  aspect-ratio: 16/9;
}

.aktualita-karta__img img {
  width:      100%;
  height:     100%;
  object-fit: cover;
  transition: transform 350ms ease;
}

.aktualita-karta:hover .aktualita-karta__img img { transform: scale(1.04); }

.aktualita-karta__body {
  flex:    1;
  padding: var(--space-sm) var(--space-md);
  display: flex;
  flex-direction: column;
  gap:     .35rem;
}

.aktualita-karta__nadpis {
  font-size:   var(--text-lg);
  font-weight: 600;
  margin:      0;
}

.aktualita-karta__nadpis a {
  text-decoration: none;
  color:           var(--color-text);
  transition:      color var(--transition);
}

.aktualita-karta__nadpis a:hover { color: var(--color-primary-text-safe); }

.aktualita-karta__datum {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
}

.aktualita-karta__perex {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  margin:    0;
  flex:      1;
}

.aktualita-karta__footer {
  padding:     var(--space-xs) var(--space-md) var(--space-sm);
  border-top:  1px solid var(--color-border);
}


/* ── ROW list ───────────────────────────────────────────── */
.novinky-list {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-sm);
}

.aktualita-row {
  display:       flex;
  align-items:   stretch;
  border:        1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow:      hidden;
  background:    var(--color-surface);

  transition:    box-shadow var(--transition);
}

.aktualita-row:hover { box-shadow: var(--shadow-md); }

.aktualita-row__img {
  flex-shrink: 0;
  width:       140px;
  display:     block;
  overflow:    hidden;
}

.aktualita-row__img img {
  width:      100%;
  height:     100%;
  object-fit: cover;
  transition: transform 350ms ease;
}

.aktualita-row:hover .aktualita-row__img img { transform: scale(1.05); }

.aktualita-row__info {
  flex:            1;
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  gap:             var(--space-md);
  padding:         var(--space-sm) var(--space-md);
  flex-wrap:       wrap;
  min-width:       0;
}

.aktualita-row__text { flex: 1 1 12rem; min-width: 0; }   /* užší než 12rem → tlačítko pod text */

.aktualita-row__nadpis {
  font-size:   var(--text-base);
  font-weight: 600;
  margin:      0 0 .2rem;
}

.aktualita-row__nadpis a {
  text-decoration: none;
  color:           var(--color-text);
  transition:      color var(--transition);
}

.aktualita-row__nadpis a:hover { color: var(--color-primary-text-safe); }

.aktualita-row__datum {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  display:   block;
}

.aktualita-row__perex {
  font-size:     var(--text-sm);
  color:         var(--color-text-muted);
  margin:        .25rem 0 0;
  overflow:      hidden;
  text-overflow: ellipsis;
  white-space:   nowrap;
}

@media (max-width: 500px) {
  .aktualita-row__img { width: 90px; }
}


/* ── LINK list ──────────────────────────────────────────── */
.novinky-linky {
  display:        flex;
  flex-direction: column;
  gap:            .2rem;
}

.aktualita-link {
  display:         flex;
  align-items:     baseline;
  gap:             .5rem;
  padding:         .4rem .5rem;
  text-decoration: none;
  color:           var(--color-text);
  border-radius:   var(--radius-sm);
  transition:      background var(--transition), color var(--transition);
  flex-wrap:       wrap;
}

.aktualita-link:hover {
  background: var(--color-primary-light);
  color:      var(--color-primary-text-safe);
}

.aktualita-link__badge { flex-shrink: 0; }

/* Štítky novinky — kategorie, stav, „Nové" vedle sebe (karta, řádek, odkaz, detail) */
.aktualita-badges {
  display:     inline-flex;
  flex-wrap:   wrap;
  align-items: center;
  gap:         .35rem;
}

.aktualita-link__nadpis { font-weight: 500; flex: 1; }

.aktualita-link__datum {
  font-size:   var(--text-sm);
  color:       var(--color-text-muted);
  white-space: nowrap;
}


/* ── DETAIL novinky ─────────────────────────────────────── */

/* Header: badge + nadpis + datum */
.aktualita-detail__header {
  display:        flex;
  flex-direction: column;
  gap:            .4rem;
  align-items:    flex-start;
  margin-bottom:  var(--space-md);
}

.aktualita-detail__nadpis {
  font-size:   clamp(1.5rem, 4vw, 2.1rem);
  font-weight: 700;
  line-height: 1.2;
  margin:      0;
}

.aktualita-detail__meta {
  display:     flex;
  align-items: center;
  flex-wrap:   wrap;
  gap:         .6rem;
}

.aktualita-detail__datum {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
}

/* Hero card: perex + foto — surface blok */
.aktualita-detail__hero-card {
  background:    var(--color-surface);
  border:        1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow:    var(--shadow-sm);
  padding:       var(--space-md);
  margin-bottom: var(--space-lg);
}

/* Grid aktivní jen když jsou oba: perex + foto */
.aktualita-detail__hero-card--grid {
  display:               grid;
  grid-template-columns: 2fr 1fr;
  gap:                   var(--space-md);
  align-items:           center;
}

.aktualita-detail__perex {
  font-size:   1.05em;
  color:       var(--color-text);
  line-height: 1.7;
  margin:      0;
}

.aktualita-detail__hero-foto {
  line-height: 0;
}

.aktualita-detail__hero-foto img {
  width:         100%;
  aspect-ratio:  4 / 3;
  object-fit:    cover;
  display:       block;
  border-radius: var(--radius-sm);
  transition:    transform .35s ease;
}

.aktualita-detail__hero-link:hover img {
  transform: scale(1.03);
}

/* Mobil: foto nahoře, pak perex */
@media (max-width: 600px) {
  .aktualita-detail__hero-card--grid {
    grid-template-columns: 1fr;
  }
  .aktualita-detail__hero-foto {
    order: -1;
  }
}

.aktualita-detail__obsah {
  line-height: 1.75;
  font-size:   var(--text-base);
}

.aktualita-detail__obsah p { margin-top: var(--space-sm); margin-bottom: var(--space-sm); }
.aktualita-detail__obsah p:first-child { margin-top: 0; }
.aktualita-detail__obsah p:last-child  { margin-bottom: 0; }

.aktualita-detail__obsah hr {
  border: none;
  border-top: 1px solid var(--color-border);
  margin: var(--space-md) 0;
}

.aktualita-detail__obsah ul,
.aktualita-detail__obsah ol {
  margin: var(--space-sm) 0;
  padding-left: var(--space-md);
}

.aktualita-detail__obsah li { margin-bottom: .3rem; }

.aktualita-detail__obsah figure,
.aktualita-detail__obsah .aktualita__termin,
.aktualita-detail__obsah .aktualita__prilohy,
.aktualita-detail__obsah .aktualita__galerie,
.aktualita-detail__obsah .aktualita__video,
.aktualita-detail__obsah .aktualita__akce,
.aktualita-detail__obsah .aktualita__akce-card {
  margin-top: var(--space-md);
}

.aktualita__akce-card {
  background:    var(--color-surface);
  border:        1px solid var(--color-border);
  border-left:   3px solid var(--color-primary);
  border-radius: var(--radius-md);
  padding:       var(--space-md);
}

.aktualita__akce-card-label {
  display:        block;
  font-size:      var(--text-sm);
  font-weight:    600;
  color:          var(--color-primary-text-safe);
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-bottom:  var(--space-xs);
}

.aktualita__akce-card-nadpis {
  margin: 0 0 var(--space-xs);
}

.aktualita__akce-card-meta {
  display:       flex;
  flex-wrap:     wrap;
  gap:           var(--space-xs) var(--space-md);
  font-size:     var(--text-sm);
  color:         var(--color-text-muted);
  margin-bottom: var(--space-sm);
}

/* Bloky uvnitř obsahu */
.aktualita__termin {
  display:       inline-flex;
  align-items:   center;
  gap:           .5rem;
  background:    var(--color-primary-light);
  color:         var(--color-primary-text-safe);
  padding:       .5rem var(--space-sm);
  border-radius: var(--radius-sm);
  font-weight:   500;
  font-size:     var(--text-sm);
  margin-block:  var(--space-sm);
}

.aktualita__foto {
  margin-block: var(--space-md);
}

.aktualita__foto img {
  width:         100%;
  border-radius: var(--radius-sm);
  display:       block;
}

.aktualita__foto figcaption,
.aktualita__foto-popis {
  font-size:  var(--text-sm);
  color:      var(--color-text-muted);
  margin-top: .35rem;
}

.aktualita__prilohy {
  margin-block: var(--space-md);
  padding-top:  var(--space-sm);
  border-top:   1px solid var(--color-border);
}

.aktualita__galerie,
.aktualita__video,
.akce-detail__galerie,
.akce-detail__video {
  margin-block: var(--space-md);
}

.aktualita__prilohy h4,
.aktualita__galerie h4 {
  font-size:     var(--text-sm);
  font-weight:   600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color:         var(--color-text-muted);
  margin:        0 0 var(--space-xs);
}

.aktualita__akce {
  display:    flex;
  gap:        var(--space-sm);
  flex-wrap:  wrap;
  margin-top: var(--space-md);
}

.aktualita-detail__footer {
  margin-top:  var(--space-xl, 3rem);
  padding-top: var(--space-md);
  border-top:  1px solid var(--color-border);
}

/* ── Foto lightbox v novince ────────────────────────────── */
/* Pouziti:
   <a href="#foto-1" class="aktualita__foto-odkaz">
     <img src="img/foto.jpg" alt="Popis">
   </a>
   <div class="n-lightbox" id="foto-1">
     <a href="#" class="n-lightbox__overlay"></a>
     <div class="n-lightbox__obsah">
       <a href="#" class="n-lightbox__zavrit">&#10005;</a>
       <img src="img/foto.jpg" alt="Popis">
     </div>
   </div>
*/
.aktualita__foto-odkaz {
  display:      block;
  overflow:     hidden;
  border-radius: var(--radius-sm);
  cursor:       zoom-in;
}

.aktualita__foto-odkaz img {
  width:      100%;
  display:    block;
  transition: transform 350ms ease;
}

.aktualita__foto-odkaz:hover img { transform: scale(1.02); }

.n-lightbox {
  display:         none;
  position:        fixed;
  inset:           0;
  z-index:         3000;
  align-items:     center;
  justify-content: center;
}

.n-lightbox { display: none; }
.n-lightbox.is-open { display: flex; }

.n-lightbox__overlay {
  position:   absolute;
  inset:      0;
  background: rgba(0,0,0,.9);
  cursor:     zoom-out;
}

.n-lightbox__obsah {
  position:   relative;
  z-index:    1;
  max-width:  min(92vw, 1100px);
  max-height: 92svh;
}

.n-lightbox__obsah img {
  max-width:     100%;
  max-height:    88svh;
  object-fit:    contain;
  display:       block;
  border-radius: var(--radius-sm);
}

.n-lightbox__zavrit {
  position:        absolute;
  top:             -2.2rem;
  right:           0;
  color:           rgba(255,255,255,.8);
  font-size:       1.4rem;
  text-decoration: none;
  line-height:     1;
  padding:         .25rem .5rem;
  transition:      color var(--transition);
}

.n-lightbox__zavrit:hover { color: #fff; }


/* ── DATA-LIGHTBOX ───────────────────────────────────────── */
/*  Automatický lightbox přes JS pro img[data-lightbox]      */

.dl-overlay {
  display:         none;
  position:        fixed;
  inset:           0;
  z-index:         3000;
  background:      rgba(0,0,0,.92);
  align-items:     center;
  justify-content: center;
  cursor:          zoom-out;
}

.dl-overlay.is-open { display: flex; }

.dl-img {
  max-width:     min(92vw, 1200px);
  max-height:    90svh;
  object-fit:    contain;
  border-radius: var(--radius-sm);
  box-shadow:    0 8px 48px rgba(0,0,0,.6);
  cursor:        default;
}

.dl-zavrit {
  position:        absolute;
  top:             1rem;
  right:           1.2rem;
  background:      none;
  border:          none;
  color:           rgba(255,255,255,.7);
  font-size:       1.6rem;
  cursor:          pointer;
  line-height:     1;
  padding:         .25rem .5rem;
  border-radius:   var(--radius-sm);
  transition:      color var(--transition), background var(--transition);
}

.dl-zavrit:hover {
  color:       #fff;
  background:  rgba(255,255,255,.1);
}


/* ── 20. PROVOZNI DOBA ───────────────────────────────────── */

.provozni__chyba {
  color:      var(--color-text-muted);
  font-style: italic;
}

/* ── Tabulka ────────────────────────────────────────────── */
.provozni-tabulka {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-xs);
}

.provozni__table {
  width:           100%;
  border-collapse: collapse;
  font-size:       var(--text-sm);
}

.provozni__table td {
  padding:       .45rem var(--space-xs);
  border-bottom: 1px solid var(--color-border);
  vertical-align: middle;
}

.provozni__table tr:last-child td { border-bottom: none; }

.provozni__den  { width: 40%; color: var(--color-text-muted); }
.provozni__cas  { font-variant-numeric: tabular-nums; }

.provozni__radek--dnes td {
  background: var(--color-primary-light);
}

.provozni__radek--dnes .provozni__den {
  color: var(--color-primary-text-safe);
}

.provozni__zavreno { color: var(--color-text-muted); }

.provozni__prestavka {
  color:     var(--color-text-muted);
  font-size: var(--text-sm);
}

.provozni__vyjimka-label {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  margin-left: .35rem;
}

.provozni__upozorneni { margin-bottom: var(--space-xs); }
.provozni__vyjimka    { margin-bottom: var(--space-xs); }

.provozni__poznamka {
  font-size:  var(--text-sm);
  color:      var(--color-text-muted);
  margin-top: var(--space-xs);
  margin-bottom: 0;
}


/* ── Kompakt ────────────────────────────────────────────── */
.provozni-kompakt {
  display:     flex;
  align-items: baseline;
  gap:         .4rem;
  font-size:   var(--text-sm);
  flex-wrap:   wrap;
}

.provozni-kompakt__den        { font-weight: 600; }
.provozni-kompakt__cas        { font-variant-numeric: tabular-nums; }
.provozni-kompakt__zavreno    { color: var(--color-text-muted); }
.provozni-kompakt__prestavka  { color: var(--color-text-muted); }
.provozni-kompakt__poznamka   { color: var(--color-text-muted); font-style: italic; }
.provozni-kompakt__upozorneni { color: var(--color-warning, #d97706); font-weight: 500; }


/* ── Badge ──────────────────────────────────────────────── */
.provozni-badge {
  display:       inline-flex;
  align-items:   center;
  gap:           .35em;
  font-size:     var(--text-sm);
  font-weight:   400;
  padding:       .2rem .6rem;
  border-radius: var(--radius-sm);
  white-space:   nowrap;
}

.provozni-badge--otevreno {
  background: var(--color-success-light, #dcfce7);
  color:      var(--color-success, #16a34a);
}

.provozni-badge--zavreno {
  background: color-mix(in srgb, var(--color-text-muted) 12%, transparent);
  color:      var(--color-text-muted);
}

/* Na tmavém topbaru badge musí používat světlé barvy */
.topbar .provozni-badge--zavreno {
  background: color-mix(in srgb, var(--color-primary-contrast) 12%, transparent);
  color:      color-mix(in srgb, var(--color-primary-contrast) 85%, transparent);
}

.provozni-badge--prestavka {
  background: var(--color-info-light, #dbeafe);
  color:      var(--color-info, #1d4ed8);
}

.provozni-badge--upozorneni {
  background: var(--color-warning-light, #fef3c7);
  color:      var(--color-warning, #d97706);
}


/* ── 21. AKCE ────────────────────────────────────────────── */

.akce__prazdno,
.akce__chyba {
  color:      var(--color-text-muted);
  text-align: center;
  padding:    var(--space-lg) 0;
  font-size:  var(--text-sm);
}

/* ── FULL grid ──────────────────────────────────────────── */
.akce-grid {
  display:               grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap:                   var(--space-md);
}

.akce-karta__datum {
  display:     flex;
  align-items: baseline;
  gap:         .4rem;
  font-size:   var(--text-sm);
  color:       var(--color-primary-text-safe);
  font-weight: 600;
  margin-bottom: .4rem;
  flex-wrap:   wrap;
}

.akce-karta__den {
  background:    var(--color-primary);
  color:         var(--color-primary-contrast);
  font-size:     .7rem;
  padding:       .1rem .4rem;
  border-radius: var(--radius-sm);
  font-weight:   700;
  letter-spacing: .05em;
}

.akce-karta__cas   { color: var(--color-text-muted); font-weight: 400; }
.akce-karta__nadpis { font-size: var(--text-base); font-weight: 600; margin: 0 0 .4rem; }
.akce-karta__nadpis a { text-decoration: none; color: var(--color-text); transition: color var(--transition); }
.akce-karta__nadpis a:hover { color: var(--color-primary-text-safe); }
.akce-karta__lektor,
.akce-karta__misto  { display: block; font-size: var(--text-sm); color: var(--color-text-muted); }
.akce-karta__perex  { font-size: var(--text-sm); color: var(--color-text-muted); margin: .4rem 0 0; }
.akce-karta__cena   { font-weight: 600; color: var(--color-primary-text-safe); font-size: var(--text-sm); margin: .4rem 0 0; display: block; }
.akce-karta__nadpis--zruseno { text-decoration: line-through; color: var(--color-text-muted); }
.akce-karta--zruseno { opacity: .8; }
.akce-kompakt__nadpis--zruseno a { text-decoration: line-through; color: var(--color-text-muted) !important; }
.akce-mini--zruseno { opacity: .75; }
a.akce-mini__nazev--zruseno,
a.akce-mini__nazev--zruseno:hover { text-decoration: line-through; color: var(--color-text-muted) !important; }

/* Zvýrazněná karta */
.akce-karta--zvyraznena {
  border:     2px solid var(--color-primary) !important;
  box-shadow: var(--shadow-md), 0 0 0 4px var(--color-primary-light);
}

/* Label přes roh fotky */
.akce-karta__label {
  position:      absolute;
  top:           .75rem;
  left:          -.25rem;
  background:    var(--color-primary);
  color:         var(--color-primary-contrast);
  font-size:     .75rem;
  font-weight:   700;
  padding:       .25rem .75rem .25rem .6rem;
  border-radius: var(--radius-sm);
  letter-spacing: .03em;
  white-space:   nowrap;
  box-shadow:    2px 2px 6px rgba(0,0,0,.2);
}

/* Malý trojúhelník pod label – efekt složeného rohu */
.akce-karta__label::before {
  content:      '';
  position:     absolute;
  bottom:       -5px;
  left:         0;
  border-width: 0 5px 5px 0;
  border-style: solid;
  border-color: transparent var(--color-primary-dark, #0d3347) transparent transparent;
}


.akce-karta__opakovani {
  display:     block;
  font-size:   var(--text-sm);
  color:       var(--color-text-muted);
  margin-bottom: .2rem;
}

/* Šipka detail v tabulce místo tlačítka */
.akce-tabulka__detail-rez {
  display:         inline-flex;
  align-items:     center;
  justify-content: center;
  height:          30px;
  padding:         0 .6rem;
  border-radius:   var(--radius-sm);
  background:      var(--color-primary-light);
  color:           var(--color-primary-text-safe);
  text-decoration: none;
  font-weight:     700;
  font-size:       1rem;
  border:          1px solid var(--color-border);
  transition:      background var(--transition), color var(--transition);
  flex-shrink:     0;
  vertical-align:  middle;
}

.akce-tabulka__detail-rez:hover {
  background: var(--color-primary);
  color:      var(--color-primary-contrast);
  border-color: var(--color-primary);
}


/* ── KOMPAKT seznam ─────────────────────────────────────── */
.akce-kompakt-seznam {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-xs);
}

.akce-kompakt {
  display:       grid;
  grid-template-columns: 48px 1fr auto;
  gap:           0 var(--space-sm);
  align-items:   center;
  padding:       .65rem var(--space-sm);
  border-radius: var(--radius-sm);
  border:        1px solid var(--color-border);
  background:    var(--color-surface);

  transition:    box-shadow var(--transition), border-color var(--transition);
}

.akce-kompakt:hover {
  border-color: var(--color-primary);
  box-shadow:   var(--shadow-sm);
}

/* Datum blok */
.akce-kompakt__datum {
  display:        flex;
  flex-direction: column;
  align-items:    center;
  line-height:    1.1;
}

.akce-kompakt__den {
  font-size:      .65rem;
  font-weight:    700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color:          var(--color-primary-text-safe);
}

.akce-kompakt__cislo {
  font-size:   1.4rem;
  font-weight: 700;
  color:       var(--color-text);
  line-height: 1;
}

.akce-kompakt__mesic {
  font-size: .72rem;
  color:     var(--color-text-muted);
}

/* Info blok */
.akce-kompakt__info {
  display:        flex;
  flex-direction: column;
  gap:            .15rem;
  min-width:      0;
}

.akce-kompakt__radek1 {
  display:     flex;
  align-items: baseline;
  gap:         .5rem;
  flex-wrap:   wrap;
  min-width:   0;
}

.akce-kompakt__cas {
  font-size:      var(--text-sm);
  font-weight:    600;
  color:          var(--color-primary-text-safe);
  white-space:    nowrap;
  font-variant-numeric: tabular-nums;
  flex-shrink:    0;
}

.akce-kompakt__nadpis {
  font-size:     var(--text-base);
  font-weight:   600;
  color:         var(--color-text);
  white-space:   nowrap;
  overflow:      hidden;
  text-overflow: ellipsis;
  min-width:     0;
}

.akce-kompakt__nadpis a {
  text-decoration: none;
  color:           inherit;
  transition:      color var(--transition);
}

.akce-kompakt__nadpis a:hover { color: var(--color-primary-text-safe); }

.akce-kompakt__radek2 {
  display:     flex;
  gap:         .5rem;
  flex-wrap:   wrap;
  font-size:   var(--text-sm);
  color:       var(--color-text-muted);
}

/* Ikona rezervace – šipka */
.akce-kompakt__rez {
  display:         flex;
  align-items:     center;
  justify-content: center;
  width:           44px;
  height:          44px;
  border-radius:   var(--radius-sm);
  background:      var(--color-primary-light);
  color:           var(--color-primary-text-safe);
  text-decoration: none;
  font-size:       1rem;
  font-weight:     700;
  flex-shrink:     0;
  align-self:      center;
  transition:      background var(--transition), color var(--transition);
}

.akce-kompakt__rez:hover {
  background: var(--color-primary);
  color:      var(--color-primary-contrast);
}


/* ── MINI seznam ────────────────────────────────────────── */
.akce-mini-seznam {
  display:        flex;
  flex-direction: column;
  gap:            1px;
}

.akce-mini {
  display:     grid;
  grid-template-columns: 80px 1fr auto;
  gap:         0 .75rem;
  align-items: center;
  padding:     .4rem .5rem;
  border-radius: var(--radius-sm);
  transition:  background var(--transition);
}

.akce-mini:hover { background: var(--color-primary-light); }

.akce-mini__datum {
  font-size:      var(--text-sm);
  font-weight:    600;
  color:          var(--color-primary-text-safe);
  white-space:    nowrap;
  font-variant-numeric: tabular-nums;
}

.akce-mini__nazev {
  font-size:       var(--text-sm);
  font-weight:     500;
  color:           var(--color-text);
  text-decoration: none;
  white-space:     nowrap;
  overflow:        hidden;
  text-overflow:   ellipsis;
  transition:      color var(--transition);
}

.akce-mini__nazev:hover { color: var(--color-primary-text-safe); }
.akce-mini__nazev--zruseno:hover { color: var(--color-text-muted) !important; text-decoration: line-through !important; }

.akce-mini__rez {
  font-size:       1rem;
  color:           var(--color-primary-text-safe);
  text-decoration: none;
  font-weight:     700;
  padding:         .1rem .3rem;
  border-radius:   var(--radius-sm);
  transition:      background var(--transition);
  line-height:     1;
}

.akce-mini__rez:hover { background: var(--color-primary-light); }


/* ── TABULKA ────────────────────────────────────────────── */
.akce-tabulka-wrap { overflow: visible; }
.akce-tabulka      { width: 100%; }

/* Datum – tři řádky, pevná šířka */
.akce-tabulka__datum {
  width:          95px;
  min-width:      95px;
  vertical-align: top;
  padding-top:    .6rem !important;
}

.akce-tabulka__den {
  display:        block;
  font-size:      .68rem;
  font-weight:    700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color:          var(--color-primary-text-safe);
  line-height:    1;
}

.akce-tabulka__den-datum {
  display:     block;
  font-weight: 600;
  font-size:   var(--text-sm);
  color:       var(--color-text);
  margin-top:  .15rem;
  line-height: 1.2;
  white-space: nowrap;
}

.akce-tabulka__cas {
  display:              block;
  font-size:            .75rem;
  color:                var(--color-text-muted);
  margin-top:           .15rem;
  font-variant-numeric: tabular-nums;
  white-space:          nowrap;
}

.akce-tabulka__nazev {
  font-weight:     600;
  color:           var(--color-text);
  text-decoration: none;
  transition:      color var(--transition);
}

.akce-tabulka__nazev:hover            { color: var(--color-primary-text-safe); }
.akce-tabulka__nazev--zruseno         { text-decoration: line-through; color: var(--color-text-muted); }
.akce-tabulka__nazev--zruseno:hover   { color: var(--color-text-muted); }

.akce-tabulka__lektor { color: var(--color-text-muted); }
.akce-tabulka__perex  { color: var(--color-text-muted); font-style: italic; }
.akce-tabulka__misto  { color: var(--color-text-muted); white-space: nowrap; vertical-align: top; padding-top: .6rem !important; }
.akce-tabulka__cena   { white-space: nowrap; font-weight: 600; font-size: var(--text-sm); vertical-align: top; padding-top: .6rem !important; }
.akce-tabulka__akce   { white-space: nowrap; vertical-align: top; padding-top: .5rem !important; display: flex; gap: .4rem; }

/* Zrušený řádek */
.akce-tabulka__radek--zruseno { opacity: .75; background: var(--color-danger-light) !important; }

/* Info řádek – modrá */
.akce-tabulka__radek--info { background: var(--color-info-light) !important; }
.akce-karta--info { border-color: var(--color-info); }

/* Řádek s poznámkou – jemné podbarvení */
.akce-tabulka__radek--poznamka { background: var(--color-warning-light) !important; }

/* Mobilní řádek – skrytý na desktopu */
.akce-tabulka__mobil { display: none; }

/* Na tabletu a mobilu: skrýt desktop řádky, zobrazit mobilní karty */
@media (max-width: 960px) {
  .akce-tabulka thead { display: none; }
  .akce-tabulka__radek { display: none; }
  .akce-tabulka__mobil { display: table-row; }

  .akce-mobil-karta {
    padding:        .75rem var(--space-sm);
    display:        flex;
    flex-direction: column;
    gap:            .35rem;
  }

  .akce-mobil-karta__hlavicka {
    display:     flex;
    align-items: baseline;
    gap:         .5rem;
    font-size:   var(--text-sm);
    font-weight: 600;
    color:       var(--color-primary-text-safe);
    flex-wrap:   wrap;
  }

  .akce-mobil-karta__meta {
    display:   flex;
    gap:       .75rem;
    flex-wrap: wrap;
    font-size: var(--text-sm);
    color:     var(--color-text-muted);
  }

  .akce-mobil-karta__akce {
    display:    flex;
    gap:        .5rem;
    margin-top: .25rem;
  }
}


/* ── DETAIL akce ────────────────────────────────────────── */
.akce-detail__banner {
  width:         100%;
  height:        200px;
  overflow:      hidden;
  border-radius: var(--radius-sm);
  margin-bottom: var(--space-md);
}

.akce-detail__banner img {
  width:           100%;
  height:          100%;
  object-fit:      cover;
  object-position: center;
  display:         block;
}

.akce-detail__header { margin-bottom: var(--space-lg); }
.akce-detail__header h1 { margin-bottom: var(--space-sm); }
.akce-detail__nadpis--zruseno { text-decoration: line-through; color: var(--color-text-muted); }

.akce-detail__perex {
  font-size:    var(--text-base);
  color:        var(--color-text-muted);
  margin:       var(--space-sm) 0 0;
  border-left:  3px solid var(--color-primary);
  padding-left: var(--space-sm);
  font-style:   italic;
  line-height:  1.6;
}

.akce-detail__meta {
  display:       flex;
  flex-wrap:     wrap;
  gap:           var(--space-xs) var(--space-lg);
  font-size:     var(--text-base);
  line-height:   1.8;
  color:         var(--color-text-muted);
  margin-bottom: var(--space-md);
}

.akce-detail__obsah { line-height: 1.7; }
.akce-detail__obsah p { margin-top: var(--space-sm); margin-bottom: var(--space-sm); }
.akce-detail__obsah p:first-child { margin-top: 0; }
.akce-detail__obsah p:last-child  { margin-bottom: 0; }

.akce-detail__letak {
  margin-block: var(--space-md);
}

.akce-detail__letak img {
  width:         100%;
  border-radius: var(--radius-sm);
  display:       block;
}

.akce-detail__letak-popis {
  font-size:  var(--text-sm);
  color:      var(--color-text-muted);
  margin-top: var(--space-xs);
}

.akce-detail__delim {
  border:      none;
  border-top:  1px solid var(--color-border);
  margin:      var(--space-md) 0;
}

.akce-detail__terminy {
  margin-top:  var(--space-lg);
  padding-top: var(--space-sm);
  border-top:  1px solid var(--color-border);
}

.akce-detail__terminy h3 { margin-bottom: var(--space-sm); }

.akce-detail__footer {
  margin-top:  var(--space-lg);
  padding-top: var(--space-sm);
  border-top:  1px solid var(--color-border);
}

/* ── SCROLL TO TOP ───────────────────────────────────────── */
.scroll-top {
  position:        fixed;
  bottom:          1.5rem;
  right:           1rem;
  z-index:         9000;
  width:           40px;
  height:          40px;
  border-radius:   50%;
  background:      rgba(255,255,255,.9);
  backdrop-filter: blur(8px);
  border:          1px solid var(--color-border);
  color:           var(--color-primary-text-safe);
  font-size:       1.1rem;
  cursor:          pointer;
  display:         flex;
  align-items:     center;
  justify-content: center;
  box-shadow:      0 2px 12px rgba(0,0,0,.12);
  opacity:        0;
  transform:      translateY(12px);
  pointer-events: none;
  transition:     opacity .25s ease, transform .25s ease;
}

.scroll-top.is-visible {
  opacity:        1;
  transform:      translateY(0);
  pointer-events: auto;
}

.scroll-top:hover {
  background:   var(--color-primary);
  color:        var(--color-primary-contrast);
  border-color: var(--color-primary);
}

@media (max-width: 480px) {
  .scroll-top { right: .5rem; bottom: 1rem; }
}

.hero--no-circles::before,
.hero--no-circles::after { display: none; }

/* ── HERO VARIANTA: Split / Asymetrický ─────────────────────
 *
 * Použití:
 *   <section class="hero hero--split">
 *     <div class="hero--split__foto">
 *       <img src="..." alt="...">
 *     </div>
 *     <div class="hero--split__text">
 *       <p class="hero--split__eyebrow">Sig-Mat · od roku 2001</p>
 *       <h1>Prodejna čerpací<br><span>techniky</span></h1>
 *       <p class="hero__perex">Perex textu...</p>
 *       <div class="btn-group">...</div>
 *     </div>
 *   </section>
 */
.hero--split {
  display:        flex;
  min-height:     520px;
  padding:        0;
  overflow:       hidden;
}

.hero--split::before,
.hero--split::after { display: none; }

.hero--split__foto {
  flex:           0 0 52%;
  position:       relative;
  overflow:       hidden;
}

.hero--split__foto img {
  position:       absolute;
  inset:          0;
  width:          100%;
  height:         100%;
  object-fit:     cover;
}

/* Diagonální přechod foto → text */
.hero--split__foto::after {
  content:        '';
  position:       absolute;
  top:            0;
  right:          -1px;
  width:          80px;
  height:         100%;
  background:     var(--color-primary);
  clip-path:      polygon(60% 0, 100% 0, 100% 100%, 0% 100%);
}

.hero--split__text {
  flex:           0 0 48%;
  background:     var(--color-primary);
  display:        flex;
  flex-direction: column;
  justify-content: center;
  padding:        var(--space-xl) var(--space-lg) var(--space-xl) var(--space-md);
  position:       relative;
}

.hero--split__eyebrow {
  font-size:      .8rem;
  letter-spacing: .12em;
  color:          color-mix(in srgb, var(--color-primary-contrast) 60%, transparent);
  margin-bottom:  var(--space-sm);
}

.hero--split__text h1 {
  color:          var(--color-primary-contrast);
  font-size:      clamp(1.8rem, 3.5vw, 2.8rem);
  line-height:    1.1;
  margin-bottom:  var(--space-sm);
}

.hero--split__text h1 span {
  color:          var(--color-secondary, color-mix(in srgb, var(--color-primary-contrast) 70%, transparent));
}

.hero--split__text .hero__perex {
  color:          color-mix(in srgb, var(--color-primary-contrast) 80%, transparent);
  margin-bottom:  var(--space-md);
}

@media (max-width: 768px) {
  .hero--split {
    flex-direction: column;
    min-height:     auto;
  }
  .hero--split__foto {
    flex:           0 0 260px;
    height:         260px;
    position:       relative;
  }
  .hero--split__foto img {
    position:       absolute;
  }
  .hero--split__foto::after { display: none; }
  .hero--split__text {
    flex:           1;
    padding:        var(--space-lg) var(--space-md);
  }
}


/* ── COOKIES BANNER ─────────────────────────────────────── */
.cookies {
  position:      fixed;
  bottom:        0;
  left:          0;
  right:         0;
  z-index:       9999;
  background:    var(--color-bg-alt);
  border-top:    2px solid var(--color-primary);
  box-shadow:    0 -4px 24px rgba(0,0,0,.2);
  padding:       var(--space-sm) 0;
}

.cookies__inner {
  max-width:      var(--container-md);
  margin:         0 auto;
  padding-inline: var(--space-md);
  display:        flex;
  align-items:    center;
  gap:            var(--space-md);
  flex-wrap:      wrap;
}

.cookies__text {
  flex:      1;
  min-width: 200px;
}

.cookies__text p {
  margin:    .25rem 0 0;
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
}

.cookies__akce {
  display:         flex;
  gap:             .5rem;
  align-items:     center;
  flex-wrap:       wrap;
  position:        relative;
  z-index:         10000;
}

.cookies__detail {
  background:  none;
  border:      none;
  cursor:      pointer;
  font-size:   var(--text-sm);
  color:       var(--color-primary-text-safe);
  padding:     .25rem .5rem;
  text-decoration: underline;
}

.cookies__detail:hover { color: var(--color-primary-dark, #0d3347); }

.cookies__nastaveni {
  max-width:      var(--container-md);
  margin:         var(--space-sm) auto 0;
  padding-inline: var(--space-md);
  border-top:     1px solid var(--color-border);
  padding-top:    var(--space-sm);
}

.cookies__skupina { margin-bottom: .5rem; }

.cookies__label {
  display:     flex;
  align-items: flex-start;
  gap:         .5rem;
  cursor:      pointer;
  font-size:   var(--text-sm);
}

.cookies__label input { margin-top: .2rem; flex-shrink: 0; }

@media (max-width: 600px) {
  .cookies__inner { flex-direction: column; align-items: flex-start; }
  .cookies__akce  { width: 100%; }
  .cookies__akce .btn { flex: 1; justify-content: center; }
}


/* ── COOKIES PLACEHOLDER ────────────────────────────────── */
.cookies-placeholder {
  background:    var(--color-bg-alt);
  border:        1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding:       var(--space-md);
  text-align:    center;
  color:         var(--color-text-muted);
  font-size:     var(--text-sm);
}

.cookies-placeholder__btn {
  margin-top: var(--space-sm);
  display:    block;
  width:      fit-content;
  margin-inline: auto;
}


/* ── PRODUKTY ────────────────────────────────────────────── */
.produkt-karta--vyprodano { opacity: .7; }

.produkt-karta__badge {
  position:      absolute;
  top:           .75rem;
  left:          .75rem;
  background:    var(--color-primary);
  color:         var(--color-primary-contrast);
  font-size:     .75rem;
  font-weight:   700;
  padding:       .2rem .6rem;
  border-radius: var(--radius-sm);
}
.produkt-karta__badge--vyprodano { background: var(--color-text-muted); }

.produkt-karta__nazev  { font-weight: 700; margin-bottom: .25rem; }
.produkt-karta__perex {
  font-size:             var(--text-sm);
  color:                 var(--color-text-muted);
  flex:                  1;
  display:               -webkit-box;
  -webkit-line-clamp:    3;
  -webkit-box-orient:    vertical;
  overflow:              hidden;
}

.produkt-karta__ceny {
  margin-top:  auto;
  padding-top: var(--space-xs);
  display:     flex;
  flex-direction: column;
  gap:         .1rem;
}

.produkt-karta__cena-puvodni {
  display:         block;
  font-size:       var(--text-sm);
  color:           var(--color-text-muted);
  text-decoration: line-through;
}
.produkt-karta__cena {
  display:     block;
  font-size:   1.2rem;
  font-weight: 700;
  color:       var(--color-primary-text-safe);
  margin-top:  .1rem;
}

.produkt-karta__ks {
  display:     block;
  font-size:   var(--text-sm);
  color:       var(--color-text-muted);
  margin-top:  .4rem;
}
.produkt-karta__ks--malo {
  color:       var(--color-danger);
  font-weight: 600;
}

/* Detail */
.produkt-detail__foto img { width: 100%; border-radius: var(--radius-md); }
.produkt-detail__perex    { font-size: 1.05rem; color: var(--color-text-muted); margin-block: var(--space-sm); }
.produkt-detail__ceny     { display: flex; align-items: baseline; gap: .75rem; margin-block: var(--space-sm); }
.produkt-detail__cena     { font-size: 1.8rem; font-weight: 700; color: var(--color-primary-text-safe); }
.produkt-detail__obsah    { margin-top: var(--space-lg); padding-top: var(--space-md); border-top: 1px solid var(--color-border); }
.produkt-detail__obsah p { margin-top: var(--space-sm); margin-bottom: var(--space-sm); }
.produkt-detail__obsah p:first-child { margin-top: 0; }
.produkt-detail__obsah p:last-child  { margin-bottom: 0; }


/* ── PRODUKT FILTR ───────────────────────────────────────── */
.produkt-filtr {
  display:       flex;
  flex-wrap:     wrap;
  gap:           .5rem;
  margin-bottom: var(--space-md);
}

.produkt-filtr__btn {
  background:    var(--color-surface);
  border:        1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding:       .35rem .9rem;
  font-size:     var(--text-sm);
  font-weight:   500;
  cursor:        pointer;
  transition:    all var(--transition);
  font-family:   var(--font-base);
}

.produkt-filtr__btn:hover {
  border-color: var(--color-primary);
  color:        var(--color-primary-text-safe);
}

.produkt-filtr__btn.is-active {
  background:   var(--color-primary);
  border-color: var(--color-primary);
  color:        var(--color-primary-contrast);
}

.produkt-grid__item { transition: opacity .2s ease; display: flex; flex-direction: column; }
.produkt-grid__item .card { flex: 1; }
.produkt-grid__item.is-hidden { display: none; }


/* ── CENÍK ───────────────────────────────────────────────── */
.cenik__skupina    { margin-bottom: var(--space-lg); }

.cenik__kategorie-wrap {
  border-bottom: 2px solid var(--color-primary);
  margin-bottom: var(--space-xs);
  padding-bottom: var(--space-xs);
}

.cenik__kategorie {
  font-size:   1rem;
  font-weight: 700;
  color:       var(--color-primary-text-safe);
}

.cenik__popis {
  font-size:  var(--text-sm);
  color:      var(--color-text-muted);
  margin-top: .2rem;
}

.cenik__detail {
  display:     block;
  font-size:   .78rem;
  color:       var(--color-text-muted);
  font-weight: 400;
  margin-top:  .1rem;
}

.cenik__tabulka {
  width:           100%;
  border-collapse: separate;
  border-spacing:  0;
}

.cenik__radek {
  border-bottom: 1px solid var(--color-border);
  transition:    background var(--transition);
}
.cenik__radek:nth-child(even):not(.cenik__radek--zvyraznit) { background: var(--color-bg-alt); }
.cenik__radek:hover { background: var(--color-bg-alt); }

.cenik__radek--zvyraznit {
  font-weight: 600;
}
.cenik__radek--zvyraznit td {
  border-top:    1px solid var(--color-primary);
  border-bottom: 1px solid var(--color-primary);
}
.cenik__radek--zvyraznit .cenik__nazev {
  color:         var(--color-primary-text-safe);
  border-left:   3px solid var(--color-secondary);
  border-radius: var(--radius-sm) 0 0 var(--radius-sm);
}
.cenik__radek--zvyraznit .cenik__cena {
  border-right:  1px solid var(--color-primary);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}
.cenik__radek--zvyraznit td:only-child {
  border-top:       2px solid var(--color-border);
  border-bottom:    none;
  border-left:      none;
  border-right:     none;
  border-radius:    0;
  padding-top:      var(--space-sm);
  color:            var(--color-secondary-text-safe);
  font-size:        var(--text-base);
  font-weight:      700;
  background:       color-mix(in srgb, var(--color-secondary) 12%, var(--color-bg-alt));
}
.cenik__radek--zvyraznit + .cenik__radek--zvyraznit td {
  border-top: 5px solid var(--color-bg);
}

.cenik__nazev {
  padding: .65rem var(--space-sm) .65rem var(--space-sm);
  width:   65%;
}

.cenik__poznamka {
  font-size:    var(--text-sm);
  color:        var(--color-text-muted);
  font-weight:  400;
  margin-right: .3rem;
}
.cenik__poznamka::after {
  content:      ' ·';
  margin-right: .3rem;
}

.cenik__cena {
  padding:    .65rem var(--space-sm) .65rem var(--space-sm);
  text-align: right;
  font-weight: 600;
  color:       var(--color-primary-text-safe);
  width:       35%;
}

.cenik__platnost {
  font-size:  var(--text-sm);
  color:      var(--color-text-muted);
  margin-top: var(--space-sm);
  text-align: right;
}

.cenik__prazdno,
.produkt__prazdno {
  color:      var(--color-text-muted);
  text-align: center;
  padding:    var(--space-lg) 0;
  font-size:  var(--text-sm);
}

@media (max-width: 480px) {
  .cenik__radek        { display: block; }
  .cenik__nazev        { padding-bottom: .1rem; font-weight: 600; }
  .cenik__cena         { padding: .1rem var(--space-sm) .5rem; text-align: left; }
  .cenik__poznamka::after { content: ''; margin: 0; }
  .cenik__poznamka     { display: block; margin: 0 0 .1rem; }
}


/* ── STATISTIKY / ČÍSLA ─────────────────────────────────── */
.stats-grid {
  display:               grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  text-align:            center;
}

.stat { padding: var(--space-md); min-width: 0; }

.stat__cislo {
  font-size:      var(--text-4xl);
  font-weight:    700;
  line-height:    1;
  color:          var(--color-primary-text-safe);
  letter-spacing: -.02em;
}

.stat__popis {
  font-size:      var(--text-sm);
  color:          var(--color-text-muted);
  margin-top:     .35rem;
  overflow-wrap:  break-word;
}

.stats-grid--band .stat          { border-right: 1px solid color-mix(in srgb, var(--color-primary-contrast) 15%, transparent); }
.stats-grid--band .stat:last-child { border-right: none; }
.stats-grid--band .stat__cislo   { color: var(--color-primary-contrast); font-weight: 900; }
.stats-grid--band .stat__popis   { color: color-mix(in srgb, var(--color-primary-contrast) 65%, transparent); text-transform: uppercase; letter-spacing: .07em; }

@media (max-width: 600px) {
  .stats-grid                        { grid-template-columns: repeat(2, 1fr); }
  .stat                              { padding: var(--space-sm); }
  .stats-grid--band .stat            { border-right: none; border-bottom: 1px solid color-mix(in srgb, var(--color-primary-contrast) 15%, transparent); }
  .stats-grid--band .stat:last-child { border-bottom: none; }
}


/* ── PRICING KARTY ───────────────────────────────────────── */
.pricing {
  display:    grid;
  gap:        var(--space-md);
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  align-items: stretch;
  margin-top: var(--space-lg);
}

.pricing__karta {
  background:    var(--color-surface);
  border:        2px solid var(--color-border);
  border-radius: var(--radius-md);
  padding:       var(--space-md);
  display:       flex;
  flex-direction: column;
  position:      relative;
  transition:    box-shadow var(--transition), transform var(--transition);
}

.pricing__karta:hover                { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.pricing__karta--doporucena:hover    { box-shadow: 0 12px 32px rgba(0,0,0,.35); }
.pricing__karta--nahoru              { transform: translateY(-12px); box-shadow: 0 12px 32px rgba(0,0,0,.15); }
.pricing__karta--nahoru:hover        { transform: translateY(-15px); }

.pricing__karta--doporucena {
  border-color: var(--color-primary);
  background:   var(--color-primary);
  color:        var(--color-primary-contrast);
}

.pricing__badge {
  position:      absolute;
  top:           -1rem;
  left:          50%;
  transform:     translateX(-50%);
  background:    var(--color-warning, #f59e0b);
  color:         #1c1917;
  font-size:     .75rem;
  font-weight:   700;
  padding:       .2rem .8rem;
  border-radius: var(--radius-sm);
  white-space:   nowrap;
}

.pricing__hlavicka { margin-bottom: var(--space-sm); }

.pricing__nazev {
  font-size:   1.2rem;
  font-weight: 700;
  margin-bottom: .25rem;
}

.pricing__popis {
  font-size: var(--text-sm);
  opacity:   .75;
}

.pricing__cena {
  margin-bottom: var(--space-md);
  padding-bottom: var(--space-sm);
  border-bottom: 1px solid rgba(0,0,0,.1);
}

.pricing__karta--doporucena .pricing__cena { border-color: color-mix(in srgb, var(--color-primary-contrast) 20%, transparent); }

.pricing__cena-hodnota {
  display:     block;
  font-size:   2rem;
  font-weight: 700;
  line-height: 1;
}

.pricing__suffix {
  font-size: var(--text-sm);
  opacity:   .7;
}

.pricing__polozky {
  list-style: none;
  padding:    0;
  margin:     0 0 var(--space-md);
  flex:       1;
}

.pricing__polozka {
  display:     flex;
  align-items: center;
  gap:         .5rem;
  padding:     .3rem 0;
  font-size:   var(--text-sm);
  border-bottom: 1px solid rgba(0,0,0,.05);
}

.pricing__karta--doporucena .pricing__polozka { border-color: color-mix(in srgb, var(--color-primary-contrast) 10%, transparent); }

.pricing__polozka--ne { color: var(--color-text-muted); }
.pricing__karta--doporucena .pricing__polozka--ne { color: color-mix(in srgb, var(--color-primary-contrast) 65%, transparent); }

.pricing__ikona {
  font-size:  .8rem;
  flex-shrink: 0;
  width:      16px;
  text-align: center;
}

.pricing__footer { margin-top: auto; }

/* Doporučená karta – tlačítko v kontrastní barvě vůči kartě */
.pricing__karta--doporucena .btn--primary {
  background:   var(--color-primary-contrast);
  color:        var(--color-primary-text-safe);
  border-color: var(--color-primary-contrast);
}
.pricing__karta--doporucena .btn--primary:hover {
  background:   color-mix(in srgb, var(--color-primary-contrast) 90%, transparent);
}


/* ── GALERIE PŘEHLED – střídání pozadí ──────────────────── */
.galerie-prehled__item--alt { background: var(--color-bg-alt); }


/* ── SHAPE DIVIDERS ─────────────────────────────────────── */
/*
 * Použití – sekce musí mít position:relative a padding:
 *   <section class="section" style="position:relative; overflow:hidden; padding-bottom:70px;">
 *     <?php shape_divider('trojuhelnik', 'white'); ?>
 *   </section>
 *
 * Tvary:  trojuhelnik | vlnka | sikmina | vlna
 * Barvy:  white | alt | primary | secondary
 * Pozice: bottom (výchozí) | top
 */

/* Výplně – !important přebíjí inline opacity na SVG path */
.shape-fill--white     { fill: var(--color-bg) !important; }
.shape-fill--alt       { fill: var(--color-bg-alt) !important; }
.shape-fill--primary   { fill: var(--color-primary) !important; }
.shape-fill--secondary { fill: var(--color-secondary) !important; }

/* Otočení pro pozici top – transform-origin musí být bottom */
.shape-divider__svg--flip svg {
  transform:        scaleY(-1);
  transform-origin: bottom center;
}


/* ── HERO VARIANTA: Typografický ────────────────────────────
 *
 * Použití:
 *   <section class="hero hero--typo">
 *     <div class="container">
 *       <p class="hero--typo__tag">Sig-Mat · od 2001</p>
 *       <h1 class="hero--typo__title">Čerpací<em>technika.</em></h1>
 *       <p class="hero__perex">Perex...</p>
 *       <div class="btn-group">...</div>
 *     </div>
 *   </section>
 */
.hero--typo {
  background:   var(--color-bg-alt);
  padding-block: var(--space-xl);
  position:     relative;
  overflow:     hidden;
}

/* Velký dekorativní text na pozadí */
.hero--typo::before {
  content:          attr(data-bg);
  position:         absolute;
  top:              50%;
  left:             50%;
  transform:        translate(-50%, -50%);
  font-size:        clamp(100px, 22vw, 220px);
  font-weight:      900;
  letter-spacing:   -.04em;
  color:            rgba(0,0,0,.04);
  white-space:      nowrap;
  pointer-events:   none;
  line-height:      1;
}

.hero--typo__tag {
  display:         inline-block;
  font-size:       .75rem;
  font-weight:     600;
  letter-spacing:  .12em;
  color:           var(--color-primary-text-safe);
  border:          1.5px solid var(--color-primary);
  padding:         .2rem .8rem;
  border-radius:   var(--radius-sm);
  margin-bottom:   var(--space-md);
}

.hero--typo__title {
  font-size:        clamp(3rem, 8vw, 7rem);
  font-weight:      900;
  line-height:      1;
  letter-spacing:   -.03em;
  color:            var(--color-text);
  margin-bottom:    var(--space-md);
}

.hero--typo__title em {
  font-style:  normal;
  color:       var(--color-primary-text-safe);
  display:     block;
}

.hero--typo__line {
  width:            56px;
  height:           4px;
  background:       var(--color-primary);
  margin-bottom:    var(--space-md);
  border-radius:    2px;
}

@media (max-width: 768px) {
  .hero--typo__title { font-size: clamp(2.5rem, 12vw, 4rem); }
  .hero--typo::before { font-size: 30vw; }
}


/* ── HERO VARIANTA: Fullscreen foto ─────────────────────────
 *
 * Použití:
 *   <section class="hero hero--fullscreen">
 *     <img class="hero--fullscreen__foto" src="foto.jpg" alt="...">
 *     <div class="hero--fullscreen__overlay"></div>
 *     <div class="hero--fullscreen__content container">
 *       <p class="hero--fullscreen__eyebrow">Podnadpis</p>
 *       <h1>Nadpis</h1>
 *       <p class="hero__perex">Perex...</p>
 *       <div class="btn-group">...</div>
 *     </div>
 *   </section>
 *
 * Varianty překryvu:
 *   hero--fullscreen__overlay            → tmavý gradient zdola
 *   hero--fullscreen__overlay--center    → tmavý vignette ze středu
 *   hero--fullscreen__overlay--left      → gradient zleva
 */
.hero--fullscreen {
  position:      relative;
  min-height:    90vh;
  display:       flex;
  align-items:   flex-end;
  overflow:      hidden;
  padding:       0;
}

.hero--fullscreen__foto {
  position:      absolute;
  inset:         0;
  width:         100%;
  height:        100%;
  object-fit:    cover;
  object-position: center;
}

/* Gradient překryv – tmavý zdola */
.hero--fullscreen__overlay {
  position:      absolute;
  inset:         0;
  background:    linear-gradient(
    to top,
    rgba(0,0,0,.85) 0%,
    rgba(0,0,0,.4)  50%,
    rgba(0,0,0,.1)  100%
  );
}

/* Gradient překryv – zleva */
.hero--fullscreen__overlay--left {
  background:    linear-gradient(
    to right,
    rgba(0,0,0,.85) 0%,
    rgba(0,0,0,.5)  45%,
    rgba(0,0,0,.0)  100%
  );
}

/* Gradient překryv – primární barva zleva */
.hero--fullscreen__overlay--primary {
  background:    linear-gradient(
    to right,
    rgba(var(--color-primary-rgb, 21,71,91),.92) 0%,
    rgba(var(--color-primary-rgb, 21,71,91),.6)  45%,
    rgba(0,0,0,.0) 100%
  );
}

.hero--fullscreen__content {
  position:      relative;
  z-index:       1;
  width:         100%;
  padding-top:   var(--space-xl);
  padding-bottom: var(--space-xl);
}

.hero--fullscreen__eyebrow {
  font-size:     .8rem;
  letter-spacing: .14em;
  color:         color-mix(in srgb, var(--color-primary-contrast) 70%, transparent);
  margin-bottom: var(--space-sm);
}

.hero--fullscreen__content h1 {
  color:         var(--color-primary-contrast);
  font-size:     clamp(2rem, 5vw, 4rem);
  line-height:   1.1;
  max-width:     700px;
  margin-bottom: var(--space-sm);
}

.hero--fullscreen__content h1 span {
  color:         var(--color-secondary, color-mix(in srgb, var(--color-primary-contrast) 70%, transparent));
}

.hero--fullscreen__content .hero__perex {
  color:         color-mix(in srgb, var(--color-primary-contrast) 85%, transparent);
  max-width:     560px;
  margin-bottom: var(--space-md);
}

/* Scroll indikátor */
.hero--fullscreen__scroll {
  position:      absolute;
  bottom:        2rem;
  right:         2rem;
  display:       flex;
  flex-direction: column;
  align-items:   center;
  gap:           .4rem;
  color:         color-mix(in srgb, var(--color-primary-contrast) 50%, transparent);
  font-size:     .7rem;
  letter-spacing: .1em;
}

.hero--fullscreen__scroll::after {
  content:       '';
  width:         1px;
  height:        48px;
  background:    linear-gradient(to bottom, color-mix(in srgb, var(--color-primary-contrast) 50%, transparent), transparent);
}

@media (max-width: 768px) {
  .hero--fullscreen { min-height: 70vh; align-items: flex-end; }
  .hero--fullscreen__overlay--left { background: linear-gradient(to top, rgba(0,0,0,.85) 0%, rgba(0,0,0,.4) 60%, rgba(0,0,0,.1) 100%); }
}


/* ── HERO VARIANTA: Centered / Particles ────────────────────
 *
 * Použití:
 *   <section class="hero hero--centered section--primary">
 *     <div class="container">
 *       <p class="hero--centered__eyebrow">Podnadpis</p>
 *       <h1>Nadpis<br><span>s akcentem</span></h1>
 *       <p class="hero__perex">Perex...</p>
 *       <div class="btn-group btn-group--center">...</div>
 *     </div>
 *     <div class="hero--centered__particles" aria-hidden="true">
 *       <span></span><span></span><span></span>
 *       <span></span><span></span><span></span>
 *     </div>
 *   </section>
 */
.hero--centered {
  min-height:    80vh;
  display:       flex;
  align-items:   center;
  justify-content: center;
  text-align:    center;
  padding-block: var(--space-xl);
  /* Gradient zleva světlá → tmavá */
  background:    linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
}

.hero--centered::before,
.hero--centered::after { display: none; }

.hero--centered .container {
  position:      relative;
  z-index:       1;
  display:       flex;
  flex-direction: column;
  align-items:   center;
}

.hero--centered__eyebrow {
  font-size:     .8rem;
  letter-spacing: .15em;
  color:         color-mix(in srgb, var(--color-primary-contrast) 60%, transparent);
  margin-bottom: var(--space-sm);
  text-align:    center;
}

.hero--centered h1 {
  color:         var(--color-primary-contrast);
  font-size:     clamp(2.2rem, 5vw, 4.5rem);
  line-height:   1.1;
  margin-bottom: var(--space-sm);
  text-align:    center;
}

.hero--centered h1 span { color: var(--color-secondary, color-mix(in srgb, var(--color-primary-contrast) 70%, transparent)); }

.hero--centered .hero__perex {
  color:         color-mix(in srgb, var(--color-primary-contrast) 80%, transparent);
  max-width:     580px;
  margin:        0 auto var(--space-md);
  text-align:    center;
}

/* Bubliny */
.hero--centered__particles {
  position:      absolute;
  inset:         0;
  pointer-events: none;
  overflow:      hidden;
}

.hero--centered__particles span {
  position:      absolute;
  border-radius: 50%;
  background:    rgba(255,255,255,.06);
  border:        1px solid rgba(255,255,255,.1);
}

.hero--centered__particles span:nth-child(1) { width:180px; height:180px; left:5%;   top:10%;  }
.hero--centered__particles span:nth-child(2) { width:80px;  height:80px;  left:20%;  top:60%;  }
.hero--centered__particles span:nth-child(3) { width:300px; height:300px; left:60%;  top:-50px; }
.hero--centered__particles span:nth-child(4) { width:120px; height:120px; right:8%;  bottom:10%; }
.hero--centered__particles span:nth-child(5) { width:60px;  height:60px;  left:45%;  bottom:15%; }
.hero--centered__particles span:nth-child(6) { width:200px; height:200px; right:25%; top:30%; }

@media (max-width: 768px) {
  .hero--centered { min-height: 65vh; }
}


/* ── HERO VARIANTA: Minimalistická ──────────────────────────
 *
 * Použití:
 *   <section class="hero hero--minimal">
 *     <div class="container">
 *       <div class="hero--minimal__inner">
 *         <p class="hero--minimal__tag">Kategorie</p>
 *         <h1 class="hero--minimal__title">Jeden<br><em>výraz.</em></h1>
 *         <div class="hero--minimal__line"></div>
 *         <p class="hero--minimal__sub">Krátký podnadpis</p>
 *         <a href="#" class="btn btn--outline">Více →</a>
 *       </div>
 *     </div>
 *   </section>
 */
.hero--minimal {
  min-height:      60vh;
  display:         flex;
  align-items:     center;
  background:      var(--color-bg);
  border-bottom:   1px solid var(--color-border);
  position:        relative;
  overflow:        hidden;
  padding-block:   var(--space-xl);
}

/* Velké dekorativní číslo nebo písmeno vpravo */
.hero--minimal::after {
  content:         attr(data-deco);
  position:        absolute;
  right:           -40px;
  top:             50%;
  transform:       translateY(-50%);
  font-size:       clamp(200px, 35vw, 380px);
  font-weight:     900;
  letter-spacing:  -.05em;
  color:           var(--color-primary-text-safe);
  opacity:         .04;
  line-height:     1;
  pointer-events:  none;
  user-select:     none;
}

.hero--minimal__inner {
  width:           100%;
}

.hero--minimal__tag {
  font-size:       .75rem;
  font-weight:     600;
  letter-spacing:  .18em;
  color:           var(--color-primary-text-safe);
  margin-bottom:   var(--space-md);
}

.hero--minimal__title {
  font-size:       clamp(3rem, 7vw, 6rem);
  font-weight:     900;
  line-height:     1;
  letter-spacing:  -.03em;
  color:           var(--color-text);
  margin-bottom:   var(--space-sm);
}

.hero--minimal__title em {
  font-style:      normal;
  color:           var(--color-primary-text-safe);
}

.hero--minimal__line {
  width:           56px;
  height:          4px;
  background:      var(--color-primary);
  border-radius:   2px;
  margin-bottom:   var(--space-md);
}

.hero--minimal__sub {
  font-size:       1.05rem;
  color:           var(--color-text-muted);
  line-height:     1.6;
  margin-bottom:   var(--space-md);
  max-width:       520px;
}

@media (max-width: 768px) {
  .hero--minimal { min-height: auto; padding-block: var(--space-lg); }
  .hero--minimal__title { font-size: clamp(2.5rem, 12vw, 4rem); }
  .hero--minimal::after { font-size: 45vw; right: -20px; }
}


/* ── HERO VARIANTA: S formulářem ────────────────────────────
 *
 * Použití:
 *   <section class="hero hero--form section--primary">
 *     <div class="container">
 *       <div class="hero--form__grid">
 *         <div class="hero--form__text">
 *           <p class="hero--form__eyebrow">Podnadpis</p>
 *           <h1>Nadpis</h1>
 *           <p class="hero__perex">Perex...</p>
 *         </div>
 *         <div class="hero--form__card">
 *           <h3>Nezávazná poptávka</h3>
 *           ... formulář ...
 *         </div>
 *       </div>
 *     </div>
 *   </section>
 */
.hero--form {
  padding-block:  var(--space-xl);
  position:       relative;
  overflow:       hidden;
}

.hero--form__grid {
  display:        grid;
  grid-template-columns: 1fr 420px;
  gap:            var(--space-xl);
  align-items:    center;
}

.hero--form__text {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-sm);
}

.hero--form__eyebrow {
  font-size:      .8rem;
  letter-spacing: .12em;
  color:          color-mix(in srgb, var(--color-primary-contrast) 60%, transparent);
}

.hero--form__text h1 {
  color:          var(--color-primary-contrast);
  font-size:      clamp(1.8rem, 3.5vw, 3rem);
  line-height:    1.1;
}

.hero--form__text h1 span {
  color:          var(--color-secondary, color-mix(in srgb, var(--color-primary-contrast) 70%, transparent));
}

.hero--form__text .hero__perex {
  color:          color-mix(in srgb, var(--color-primary-contrast) 80%, transparent);
}

/* Karta formuláře */
.hero--form__card {
  background:     #fff;
  border-radius:  var(--radius-lg);
  padding:        var(--space-md) var(--space-lg);
  box-shadow:     0 8px 40px rgba(0,0,0,.2);
}

.hero--form__card h3 {
  font-size:      1.1rem;
  color:          var(--color-text);
  margin-bottom:  var(--space-md);
  padding-bottom: var(--space-xs);
  border-bottom:  2px solid var(--color-primary);
}

.hero--form__card .form__input,
.hero--form__card .form__textarea {
  background:     var(--color-bg-alt);
}

.hero--form__card .btn { width: 100%; justify-content: center; }

@media (max-width: 900px) {
  .hero--form__grid {
    grid-template-columns: 1fr;
  }
  .hero--form__card { order: -1; }
}


/* ── 22. ACCORDION ────────────────────────────────────────── */

/*
 * Použití – základní:
 *   <div class="accordion">
 *     <details class="accordion__item">
 *       <summary class="accordion__otazka">Otázka?</summary>
 *       <div class="accordion__odpoved"><p>Odpověď…</p></div>
 *     </details>
 *   </div>
 *
 * Varianta bez rámečku kolem celku (každá položka jako karta):
 *   <div class="accordion accordion--plain">…</div>
 *
 * Varianta se šipkou vpravo (výchozí je rotující +/−):
 *   <div class="accordion accordion--arrow">…</div>
 */

.accordion {
  border:        1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow:      hidden;
}

.accordion__item {
  border-bottom: 1px solid var(--color-border);
}

.accordion__item:last-child {
  border-bottom: none;
}

.accordion__otazka {
  display:         flex;
  justify-content: space-between;
  align-items:     center;
  gap:             var(--space-sm);
  padding:         var(--space-sm) var(--space-md);
  font-weight:     600;
  cursor:          pointer;
  list-style:      none;
  user-select:     none;
  transition:      background var(--transition), color var(--transition);
}

/* skrýt výchozí trojúhelník ve všech prohlížečích */
.accordion__otazka::-webkit-details-marker { display: none; }
.accordion__otazka::marker               { display: none; }

/* ikona +/− */
.accordion__otazka::after {
  content:     '+';
  flex-shrink: 0;
  font-size:   1.3rem;
  font-weight: 400;
  line-height: 1;
  color:       var(--color-primary-text-safe);
  transition:  transform var(--transition);
}

.accordion__item[open] > .accordion__otazka::after {
  content:   '−';
}

.accordion__otazka:hover {
  background: var(--color-primary-light);
  color:      var(--color-primary-text-safe);
}

.accordion__item[open] > .accordion__otazka {
  color: var(--color-primary-text-safe);
}

.accordion__odpoved {
  padding:     var(--space-xs) var(--space-md) var(--space-sm);
  color:       var(--color-text-muted);
  font-size:   var(--text-sm);
  line-height: 1.7;
}

.accordion__odpoved > *:first-child { margin-top: 0; }
.accordion__odpoved > *:last-child  { margin-bottom: 0; }

/* ── varianta --plain (každá položka = samostatná karta) ── */
.accordion--plain {
  border:        none;
  border-radius: 0;
  overflow:      visible;
  display:       flex;
  flex-direction: column;
  gap:           var(--space-xs);
}

.accordion--plain .accordion__item {
  border:        1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow:      hidden;
}

/* ── varianta --arrow (šipka místo +/−) ── */
.accordion--arrow .accordion__otazka::after {
  content:    '›';
  font-size:  1.1rem;
  transform:  rotate(90deg);
  transition: transform var(--transition);
}

.accordion--arrow .accordion__item[open] > .accordion__otazka::after {
  content:   '›';
  transform: rotate(270deg);
}

/* ── Časté otázky – faq() (více kategorií pod sebou) ── */
.faq__kategorie {
  font-size: var(--text-lg);
  margin:    var(--space-lg) 0 var(--space-xs);
}
.faq__kategorie:first-child { margin-top: 0; }
.faq__popis {
  margin:    -.2rem 0 var(--space-sm);
  color:     var(--color-text-muted);
  font-size: var(--text-sm);
}
.faq__kategorie + .accordion,
.faq__kategorie + .faq__sloupce { margin-top: var(--space-sm); }
.faq__sloupce { align-items: start; }   /* rozbalení v jednom sloupci neposouvá druhý */
.accordion__odpoved a { color: var(--color-primary-text-safe); }

@media (max-width: 600px) {
  .accordion__otazka {
    padding: var(--space-xs) var(--space-sm);
  }
  .accordion__odpoved {
    padding: var(--space-xs) var(--space-sm) var(--space-xs);
  }
}


/* ── 23. TESTIMONIALS ─────────────────────────────────────── */

/*
 * Použití – karta (do .grid):
 *   <div class="testimonial">
 *     <div class="testimonial__hvezdy">★★★★★</div>
 *     <p class="testimonial__text">Text recenze.</p>
 *     <div class="testimonial__autor">
 *       <div class="testimonial__avatar">JN</div>
 *       <div>
 *         <strong class="testimonial__jmeno">Jana Nováková</strong>
 *         <span class="testimonial__info">Spokojená zákaznice</span>
 *       </div>
 *     </div>
 *   </div>
 *
 * Avatar s fotkou: <img src="foto.jpg" alt="..."> uvnitř .testimonial__avatar
 *
 * Varianta featured (velký citát, na šířku):
 *   <div class="testimonial testimonial--featured">…</div>
 */

.testimonial {
  background:     var(--color-surface);
  border:         1px solid var(--color-border);
  border-radius:  var(--radius-md);
  padding:        var(--space-md);
  display:        flex;
  flex-direction: column;
  gap:            var(--space-sm);
}

.testimonial__hvezdy {
  color:          #f5a623;
  font-size:      1rem;
  letter-spacing: .05em;
  line-height:    1;
}

.testimonial__text {
  flex:         1;
  font-size:    var(--text-sm);
  line-height:  1.75;
  color:        var(--color-text);
  position:     relative;
  padding-left: 1.25rem;
}

.testimonial__text::before {
  content:    '\201C';
  position:   absolute;
  left:       -.1rem;
  top:        -.35rem;
  font-size:  2.8rem;
  line-height: 1;
  font-family: Georgia, serif;
  color:      var(--color-primary-text-safe);
  opacity:    .25;
}

.testimonial__autor {
  display:     flex;
  align-items: center;
  gap:         var(--space-sm);
  padding-top: var(--space-sm);
  border-top:  1px solid var(--color-border);
  margin-top:  auto;
}

.testimonial__avatar {
  width:           44px;
  height:          44px;
  border-radius:   50%;
  flex-shrink:     0;
  background:      var(--color-primary-light);
  color:           var(--color-primary-text-safe);
  display:         flex;
  align-items:     center;
  justify-content: center;
  font-weight:     700;
  font-size:       .85rem;
  overflow:        hidden;
}

.testimonial__avatar img {
  width:      100%;
  height:     100%;
  object-fit: cover;
}

.testimonial__jmeno {
  display:     block;
  font-weight: 600;
  font-size:   var(--text-sm);
}

.testimonial__info {
  display:    block;
  font-size:  .8rem;
  color:      var(--color-text-muted);
  margin-top: .1rem;
}

/* ── varianta --featured (velký citát na šířku) ── */
.testimonial--featured {
  border:      none;
  background:  var(--color-primary-light);
  text-align:  center;
  align-items: center;
  padding:     var(--space-lg) var(--space-xl);
}

.testimonial--featured .testimonial__text {
  font-size:   1.1rem;
  padding-left: 0;
  max-width:   640px;
}

.testimonial--featured .testimonial__text::before {
  position: static;
  display:  block;
  font-size: 4rem;
  opacity:  .3;
  margin-bottom: -.5rem;
}

.testimonial--featured .testimonial__autor {
  border-top:       none;
  justify-content:  center;
  padding-top:      0;
}

@media (max-width: 480px) {
  .testimonial { padding: var(--space-sm); }
  .testimonial--featured { padding: var(--space-md) var(--space-sm); }
}


/* ── 24. VIDEO ───────────────────────────────────────────── */
.video-wrap { width: 100%; }
.video-wrap video { border-radius: var(--radius-sm); }


/* ── 25. SOCIÁLNÍ SÍTĚ ────────────────────────────────────── */
.soc {
  display:   flex;
  gap:       .6rem;
  flex-wrap: wrap;
}
.soc--center { justify-content: center; }

.soc__link {
  display:         flex;
  align-items:     center;
  justify-content: center;
  width:           44px;
  height:          44px;
  border-radius:   50%;
  border:          1px solid var(--color-border);
  color:           var(--color-text);
  transition:      background var(--transition), color var(--transition), border-color var(--transition);
}
.soc__link svg { width: 20px; height: 20px; }

@media (hover: hover) {
  .soc__link:hover {
    background:   var(--color-primary);
    color:        var(--color-primary-contrast);
    border-color: var(--color-primary);
  }
}


/* ═══════════════════════════════════════════════════════════
   26. ADMIN – sdílené styly
   ═══════════════════════════════════════════════════════════ */

/* ── ADMIN PAGE HEADER ──────────────────────────────────── */

.admin-page-header {
  display:          flex;
  align-items:      center;
  justify-content:  space-between;
  padding:          var(--space-sm) var(--space-md);
  margin-bottom:    var(--space-md);
  background:       var(--color-surface);
  border:           1px solid var(--color-border);
  border-radius:    var(--radius-sm);
}
.admin-page-header__title {
  display:     flex;
  align-items: center;
  gap:         .4rem;
  font-size:   var(--text-base);
  font-weight: 700;
}
.admin-page-header__count {
  font-size:   var(--text-sm);
  font-weight: 400;
  color:       var(--color-text-muted);
}


/* ── ADMIN SIDEBAR LAYOUT ───────────────────────────────── */

.admin-nav {
  position:       fixed;
  left:           0;
  top:            44px;
  width:          185px;
  height:         calc(100vh - 44px);
  overflow-y:     auto;
  display:        flex;
  flex-direction: column;
  background:     var(--color-bg-alt);
  border-right:   1px solid rgba(0,0,0,.13);
  z-index:        200;
}

.admin-wrap {
  --radius-sm: 4px;
  --radius-md: 4px;
  --radius-lg: 6px;
  box-sizing:  border-box;
  padding: calc(44px + var(--space-md)) var(--space-md) var(--space-xl) calc(185px + var(--space-md));
  min-height: 100vh;
  background: var(--color-bg-alt);
}

.admin-topbar {
  position:        fixed;
  top:             0;
  left:            0;
  right:           0;
  height:          44px;
  z-index:         210;
  background:      var(--color-surface);
  border-bottom:   1px solid rgba(0,0,0,.13);
  display:         flex;
  align-items:     center;
  justify-content: space-between;
}
.admin-topbar__left {
  display:         flex;
  align-items:     center;
  gap:             .5rem;
  height:          100%;
  width:           185px;
  flex-shrink:     0;
  padding-left:    calc(var(--space-md) - 5px);
  border-right:    1px solid rgba(0,0,0,.13);
  text-decoration: none;
  color:           inherit;
}
.admin-topbar__brand {
  font-size:     .78rem;
  font-weight:   700;
  color:         var(--color-primary-text-safe);
  white-space:   nowrap;
  overflow:      hidden;
  text-overflow: ellipsis;
}
.admin-topbar__logo {
  height:  18px;
  width:   auto;
  opacity: .8;
}
.admin-topbar__title {
  flex:         1;
  font-size:    var(--text-sm);
  color:        var(--color-text-muted);
  padding-left: var(--space-md);
}
.admin-topbar__sitename {
  display:         flex;
  align-items:     center;
  gap:             .25rem;
  font-size:       var(--text-sm);
  color:           var(--color-text-muted);
  opacity:         .6;
  white-space:     nowrap;
  overflow:        hidden;
  text-overflow:   ellipsis;
  padding-right:   .75rem;
  border-right:    1px solid rgba(0,0,0,.13);
  margin-right:    .25rem;
  text-decoration: none;
  transition:      opacity .15s;
}
a.admin-topbar__sitename:hover { opacity: .9; }
.admin-topbar__actions {
  display:     flex;
  align-items: center;
  gap:         var(--space-sm);
  padding:     0 var(--space-md);
}
.admin-topbar__btn {
  display:          flex;
  align-items:      center;
  gap:              .35rem;
  font-size:        var(--text-sm);
  color:            var(--color-text-muted);
  text-decoration:  none;
  background:       none;
  border:           none;
  cursor:           pointer;
  padding:          0;
}
.admin-topbar__btn:hover { color: var(--color-primary-text-safe); }


.admin-nav__btns {
  display:        flex;
  flex-direction: column;
  gap:            0;
  padding:        0;
  flex:           1;
}

.admin-nav__btns .btn {
  width:           100%;
  justify-content: flex-start;
  text-align:      left;
  border:          none;
  border-bottom:   1px solid rgba(0,0,0,.13);
  border-radius:   0;
  background:      none;
  padding:         .7rem calc(var(--space-md) - 5px);
  gap:             .6rem;
  color:           var(--color-text);
}
.admin-nav__btns .btn:hover {
  background: var(--color-surface);
  color:      var(--color-primary-text-safe);
}
.admin-nav__btns .btn--primary,
.admin-nav__btns .btn--primary:hover {
  background: var(--color-primary);
  color:      var(--color-primary-contrast);
  border-bottom-color: transparent;
}

/* Mobil */
@media (max-width: 700px) {
  .admin-topbar {
    position: sticky;
    top:      0;
  }
  .admin-nav {
    position:         sticky;
    top:              44px;
    width:            100%;
    height:           auto;
    border-right:     none;
    border-bottom:    1px solid rgba(0,0,0,.13);
    overflow-x:       auto;
    scrollbar-width:  none;
  }
  .admin-nav::-webkit-scrollbar { display: none; }
  .admin-wrap { padding: var(--space-sm) 0.5rem var(--space-md); }
  .admin-nav__btns {
    flex-direction:  row;
    overflow-x:      auto;
    padding:         .25rem;
    gap:             0;
    scrollbar-width: none;
  }
  .admin-nav__btns::-webkit-scrollbar { display: none; }
  .admin-nav__btns .btn {
    width:         auto;
    border-bottom: none;
    white-space:   nowrap;
    padding:       0 .7rem;
    min-height:    44px;
  }
  .admin-nav__btns .nav-label { display: none; }
  .admin-nadpis { display: none; }
  .admin-topbar__left { width: auto; padding-left: var(--space-sm); padding-right: var(--space-sm); }
  .admin-topbar__title { padding-left: var(--space-sm); }
  .admin-topbar__actions { padding-right: var(--space-sm); }
  .admin-page-header { padding: .4rem .75rem; margin-bottom: .75rem; }
  .admin-page-header__btn-text { display: none; }
  .admin-topbar__brand { display: none; }
  .admin-topbar__sitename { display: none; }
  .admin-topbar__role-text { display: none; }
  a.admin-topbar__btn > span { display: none; }
}

/* ── ADMIN DARK MODE ──────────────────────────────────────── */
body.admin-dark,
html.admin-dark body {
  --color-bg:         #111827;
  --color-bg-alt:     #0d1117;
  --color-surface:    #1f2937;
  --color-text:       #f1f5f9;
  --color-text-muted: #94a3b8;
  --color-border:     #374151;
  --color-primary:    #5dbbd6;  /* světlejší teal – čitelná na tmavém */
}

/* Struktura */
body.admin-dark .admin-wrap   { background: var(--color-bg-alt); }
body.admin-dark .admin-topbar { background: var(--color-surface); border-color: var(--color-border); }
body.admin-dark .admin-nav    { background: var(--color-surface); border-color: var(--color-border); }
body.admin-dark .admin-nav__btns .btn { border-color: var(--color-border); color: var(--color-text); }
body.admin-dark .admin-topbar__sitename { border-color: var(--color-border); }

/* Logo a brand */
body.admin-dark .admin-topbar__logo  { filter: brightness(5); }
body.admin-dark .admin-topbar__brand { color: #5dbbd6; }

/* Toggle ikony */
.dark-toggle__sun  { display: none; }
body.admin-dark .dark-toggle__moon { display: none; }
body.admin-dark .dark-toggle__sun  { display: flex; }

/* Formuláře */
body.admin-dark .form__input,
body.admin-dark .form__select,
body.admin-dark .form__textarea {
  background:   var(--color-bg);
  border-color: var(--color-border);
  color:        var(--color-text);
}
body.admin-dark input[type="date"],
body.admin-dark input[type="time"],
body.admin-dark input[type="month"] { color-scheme: dark; }

/* Notice boxy */
body.admin-dark .notice--info    { background: rgba(59,130,246,.12);  border-color: rgba(59,130,246,.35);  color: #93c5fd; }
body.admin-dark .notice--success { background: rgba(34,197,94,.12);   border-color: rgba(34,197,94,.35);   color: #86efac; }
body.admin-dark .notice--warning { background: rgba(245,158,11,.12);  border-color: rgba(245,158,11,.35);  color: #fcd34d; }
body.admin-dark .notice--danger  { background: rgba(239,68,68,.12);   border-color: rgba(239,68,68,.35);   color: #fca5a5; }
body.admin-dark .notice          { background: var(--color-surface);  border-color: var(--color-border); }

/* Ikona kostička na kartách */
body.admin-dark .modul-karta__ikona { background: rgba(93,187,214,.12); }

/* Tabulky */
body.admin-dark table { color: var(--color-text); }
body.admin-dark tbody td { background: var(--color-surface); border-color: var(--color-border); }
body.admin-dark tbody tr:hover td { background: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface)); }


/* ============================================================
   LOGOS GRID – partneři / sponzoři
   ============================================================ */
.logos-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(110px,1fr)); gap:1rem 2rem; align-items:center; }
.logos-grid[data-cols="3"] { grid-template-columns:repeat(3, 1fr); }
.logos-grid[data-cols="4"] { grid-template-columns:repeat(4, 1fr); }
.logos-grid[data-cols="5"] { grid-template-columns:repeat(5, 1fr); }
.logos-grid[data-cols="6"] { grid-template-columns:repeat(6, 1fr); }
@media (max-width: 640px) {
  .logos-grid[data-cols="5"],
  .logos-grid[data-cols="6"] { grid-template-columns:repeat(3, 1fr); }
  .logos-grid[data-cols="4"] { grid-template-columns:repeat(2, 1fr); }
}
@media (max-width: 400px) {
  .logos-grid[data-cols="3"],
  .logos-grid[data-cols="4"],
  .logos-grid[data-cols="5"],
  .logos-grid[data-cols="6"] { grid-template-columns:repeat(2, 1fr); }
}
.logos-grid__item { display:flex; align-items:center; justify-content:center; padding:.5rem; }
.logos-grid__item img { max-height:48px; width:auto; max-width:100%; filter:grayscale(100%); opacity:.55; transition:filter .35s ease, opacity .35s ease; }
.logos-grid__item img:hover { filter:none; opacity:1; }


/* ── VIDEO GALERIE ──────────────────────────────────────── */
.video-karta {
  background:     var(--color-bg);
  border:         1px solid var(--color-border);
  border-radius:  var(--radius-md);
  overflow:       hidden;
  transition:     box-shadow var(--transition), transform var(--transition);
}
.video-karta:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }

.video-karta__thumb {
  position:    relative;
  display:     block;
  aspect-ratio: 16 / 9;
  overflow:    hidden;
  background:  #000;
}
.video-karta__thumb img {
  width:       100%;
  height:      100%;
  object-fit:  cover;
  display:     block;
  transition:  transform .35s;
}
.video-karta:hover .video-karta__thumb img { transform: scale(1.04); }

.video-karta__play {
  position:        absolute;
  inset:           0;
  display:         flex;
  align-items:     center;
  justify-content: center;
  background:      rgba(0,0,0,.2);
  transition:      background .2s;
}
.video-karta:hover .video-karta__play { background: rgba(0,0,0,.35); }

.video-karta__play::before {
  content:       '';
  width:         52px;
  height:        52px;
  border-radius: 50%;
  background:    rgba(255,0,0,.88);
  box-shadow:    0 2px 10px rgba(0,0,0,.35);
  transition:    transform .2s, background .2s;
}
.video-karta:hover .video-karta__play::before { background:#ff0000; transform:scale(1.08); }

.video-karta__play::after {
  content:       '';
  position:      absolute;
  width:         0;
  height:        0;
  border-top:    10px solid transparent;
  border-bottom: 10px solid transparent;
  border-left:   18px solid #fff;
  margin-left:   5px;
}

.video-karta__body { padding: var(--space-sm) var(--space-md); }
.video-karta__nazev {
  font-size:   var(--text-base);
  font-weight: 600;
  color:       var(--color-text);
  display:     block;
  margin-bottom: var(--space-2xs);
}
.video-karta__popis {
  font-size: var(--text-sm);
  color:     var(--color-text-muted);
  margin:    0;
  line-height: 1.5;
}

/* Vimeo / Wistia bez staženého náhledu (3.25) — neutrální plocha v barvě webu s tlačítkem */
.video-karta__thumb--bez-nahledu,
.video-fasada__spustit {
  background: linear-gradient(135deg, var(--color-primary-dark), var(--color-primary));
}

/* ── VIDEO PO KLIKNUTÍ – video_vlozit() bez cookie lišty (MWS 3.06) ── */
.video-fasada__spustit {
  position:      relative;
  display:       block;
  width:         100%;
  aspect-ratio:  16 / 9;
  padding:       0;
  border:        0;
  border-radius: var(--radius-md);
  overflow:      hidden;
  cursor:        pointer;
}
.video-fasada__spustit img {
  position:   absolute;
  inset:      0;
  width:      100%;
  height:     100%;
  object-fit: cover;
}
.video-fasada__spustit:focus-visible { outline: 3px solid var(--color-primary-text-safe); outline-offset: 3px; }
.video-fasada__play {
  position:        absolute;
  inset:           0;
  display:         flex;
  align-items:     center;
  justify-content: center;
  background:      rgba(0,0,0,.2);
  transition:      background .2s;
}
.video-fasada__spustit:hover .video-fasada__play { background: rgba(0,0,0,.35); }
.video-fasada__play::before {
  content:       '';
  width:         64px;
  height:        64px;
  border-radius: 50%;
  background:    rgba(0,0,0,.6);
  box-shadow:    0 2px 10px rgba(0,0,0,.35);
  transition:    transform .2s, background .2s;
}
.video-fasada__spustit:hover .video-fasada__play::before { background: rgba(0,0,0,.8); transform: scale(1.08); }
.video-fasada__play::after {
  content:       '';
  position:      absolute;
  border-top:    12px solid transparent;
  border-bottom: 12px solid transparent;
  border-left:   20px solid #fff;
  margin-left:   6px;
}
.video-fasada__pozn {
  margin:     var(--space-2xs) 0 0;
  font-size:  var(--text-sm);
  color:      var(--color-text-muted);
}
.video-fasada__prehravac {
  display:       block;
  width:         100%;
  aspect-ratio:  16 / 9;
  border:        0;
  border-radius: var(--radius-md);
}

@media (max-width: 640px) {
  .video-karta__play::before { width:44px; height:44px; }
  .video-fasada__play::before { width:52px; height:52px; }
}
.logos-grid--color .logos-grid__item img { filter:none; opacity:.8; }
.logos-grid--color .logos-grid__item img:hover { opacity:1; }


/* ============================================================
   SCROLL REVEAL
   Použití: přidej třídu .reveal (nebo .reveal--up / .reveal--slow)
   na jakýkoliv element. Pro stagger grid použij .reveal-group
   na kontejner — děti se rozsvítí postupně.
   ============================================================ */
.reveal { opacity:0; transform:translateY(16px) scale(.97); transition:opacity .5s ease, transform .5s ease; }
.reveal.reveal--up   { transform:translateY(40px) scale(1); transition-duration:.65s; }
.reveal.reveal--slow { transform:translateY(28px) scale(.92); transition-duration:.95s; }
/* Počáteční stavy keyframe variant */
.reveal.reveal--zoom,
.reveal.reveal--slide-left,
.reveal.reveal--slide-right,
.reveal.reveal--bounce-left,
.reveal.reveal--bounce-right { transition:none; }
.reveal.reveal--zoom         { opacity:0; transform:scale(.25); }
.reveal.reveal--slide-left   { opacity:0; transform:translateX(-80px); }
.reveal.reveal--slide-right  { opacity:0; transform:translateX(80px); }
.reveal.reveal--bounce-left  { opacity:0; transform:translateX(-120px); }
.reveal.reveal--bounce-right { opacity:0; transform:translateX(120px); }

/* Keyframes */
@keyframes mws-zoom-in {
  from { opacity:0; transform:scale(.25); }
  55%  { opacity:1; transform:scale(1.04); }
  to   { opacity:1; transform:scale(1); }
}
@keyframes mws-slide-left  {
  from { opacity:0; transform:translateX(-80px); }
  to   { opacity:1; transform:translateX(0); }
}
@keyframes mws-slide-right {
  from { opacity:0; transform:translateX(80px); }
  to   { opacity:1; transform:translateX(0); }
}
@keyframes mws-bounce-left {
  0%   { opacity:0; transform:translateX(-120px); }
  60%  { opacity:1; transform:translateX(12px); }
  80%  { transform:translateX(-5px); }
  100% { transform:translateX(0); }
}
@keyframes mws-bounce-right {
  0%   { opacity:0; transform:translateX(120px); }
  60%  { opacity:1; transform:translateX(-12px); }
  80%  { transform:translateX(5px); }
  100% { transform:translateX(0); }
}

/* Spuštění při reveal--visible */
.reveal.reveal--zoom.reveal--visible         { animation:mws-zoom-in     .9s cubic-bezier(.2,.6,.3,1) both; }
.reveal.reveal--slide-left.reveal--visible   { animation:mws-slide-left  .65s ease both; }
.reveal.reveal--slide-right.reveal--visible  { animation:mws-slide-right .65s ease both; }
.reveal.reveal--bounce-left.reveal--visible  { animation:mws-bounce-left  .75s ease both; }
.reveal.reveal--bounce-right.reveal--visible { animation:mws-bounce-right .75s ease both; }

/* Přístupnost – vypnout animace pro uživatele s předvolbou */
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-group > * { transition:none !important; animation:none !important; opacity:1 !important; transform:none !important; }
}
.reveal.reveal--visible { opacity:1; transform:none; }

.reveal-group > * { opacity:0; transform:translateY(20px); transition:opacity .5s ease, transform .5s ease; }
.reveal-group.reveal--slow > * { transform:translateY(28px) scale(.92); transition-duration:.95s; }
.reveal-group.reveal--up   > * { transform:translateY(40px); transition-duration:.65s; }
.reveal-group > *:nth-child(2) { transition-delay:.1s; }
.reveal-group > *:nth-child(3) { transition-delay:.2s; }
.reveal-group > *:nth-child(4) { transition-delay:.3s; }
.reveal-group > *:nth-child(5) { transition-delay:.4s; }
.reveal-group > *:nth-child(6) { transition-delay:.5s; }
.reveal-group.reveal--visible > * { opacity:1; transform:none; }


/* ── PAGE BG IMAGE ───────────────────────────────────────────── */
/*
 * Fixní obrázek v pozadí celé stránky — nerolluje, sekce jedou přes něj.
 * Nastavit v config.php:  define('PAGE_BG_IMAGE', 'img/bg.jpg');
 *
 * Obrázek kouká:
 *   - za hranicí 1200px (boky na širokých monitorech)
 *   - mezi sekcemi pokud mají mezeru (.section--gap)
 *   - přes sekce s průhledným pozadím (.section--transparent)
 *
 * .section--gap        přidá mezeru pod sekcí (obrázek prosvítá)
 * .section--transparent sekce bez bg (obrázek viditelný přes celou šířku)
 */

body.page--bg-fixed {
  background-size:       cover;
  background-attachment: fixed;
  background-position:   center;
}

/* Sekce: bg zúžit na container (1200px) → body bg kouká po stranách */
body.page--bg-fixed .section,
body.page--bg-fixed .section--alt,
body.page--bg-fixed .hero {
  background-image: linear-gradient(
    to right,
    transparent        calc(50% - 600px),
    var(--_sec-bg)     calc(50% - 600px),
    var(--_sec-bg)     calc(50% + 600px),
    transparent        calc(50% + 600px)
  );
  background-color: transparent;
}
body.page--bg-fixed .section      { --_sec-bg: var(--color-bg); }
body.page--bg-fixed .section--alt { --_sec-bg: var(--color-bg-alt); }
body.page--bg-fixed .hero         { --_sec-bg: var(--color-primary); }

.section--gap         { margin-bottom: var(--space-xl); }
.section--transparent { background: transparent !important; }
.section--bg-fade-out { position: relative; }
.section__fade-bg {
  position:            absolute;
  inset:               0;
  background-size:     cover;
  background-position: center;
  background-repeat:   no-repeat;
  -webkit-mask-image:  linear-gradient(to bottom, black 45%, transparent 100%);
  mask-image:          linear-gradient(to bottom, black 45%, transparent 100%);
}
.section--bg-fade-out > .container { position: relative; z-index: 1; }

/* section--rounded: barevný pás dostane zaoblení → jen při aktivním PAGE_BG_IMAGE */

/* Bez vlastního obrázku → background přesunout na container */
body.page--bg-fixed .section--rounded:not(.section--bg),
body.page--bg-fixed .section--alt.section--rounded:not(.section--bg),
body.page--bg-fixed .hero.section--rounded:not(.section--bg) {
  background-image: none;
  background-color: transparent;
}
body.page--bg-fixed .section--rounded:not(.section--bg) > .container {
  background:    var(--color-bg);
  border-radius: var(--radius-lg);
  padding-block: var(--space-lg);
}
body.page--bg-fixed .section--alt.section--rounded:not(.section--bg) > .container {
  background: var(--color-bg-alt);
}
body.page--bg-fixed .hero.section--rounded:not(.section--bg) > .container {
  background: var(--color-primary);
}

/* S vlastním obrázkem (section--bg) → border-radius přímo na sekci */
body.page--bg-fixed .section--bg.section--rounded {
  border-radius: var(--radius-lg);
  overflow:      hidden;
}


/* ── PAGE SPINE ──────────────────────────────────────────────── */
/*
 * "List papíru" layout — bílý obsah s bočními mezerami na barevném pozadí.
 * Aktivovat v config.php:
 *   define('PAGE_SPINE', true);
 *   define('PAGE_SPINE_PHOTO', 'img/foto.jpg');  // '' = bez fotky
 */

body.page--spine {
  background: #e8e8e6;
}

.page-spine {
  background:    var(--color-bg);
  margin:        clamp(.75rem, 2.5vw, 1.5rem) clamp(.75rem, 2.5vw, 1.5rem) 2rem;
  box-shadow:    0 0 60px rgba(0,0,0,.07);
  min-height:    60vh;
  border-radius: var(--radius-lg);
  overflow:      hidden;
}

.page-spine-photo {
  width:               100%;
  height:              clamp(200px, 42vh, 480px);
  background-size:     cover;
  background-position: center;
  background-repeat:   no-repeat;
}

/* Spine překrývá spodek fotky — zaoblené rohy zajišťuje parent .page-spine */
.page-spine--photo {
  margin-top: -4rem;
  position:   relative;
  z-index:    1;
}

@media (max-width: 600px) {
  .page-spine        { margin: .4rem .4rem 1.5rem; }
  .page-spine--photo { margin-top: -2rem; }
}


/* ── SECTION BG IMAGE ────────────────────────────────────────── */
/*
 * Obrázek přes celou šířku, obsah v containeru zůstává na 1200px.
 *
 * <section class="section section--bg"
 *          style="background-image: url('img/bg.jpg');">
 *
 * S tmavým překrytím (pro čitelnost světlého textu):
 * <section class="section section--bg section--dim" ...>
 *
 * Se světlým překrytím:
 * <section class="section section--bg section--dim-light" ...>
 */

.section--bg {
  background-size:     cover;
  background-position: center;
  background-repeat:   no-repeat;
}

.section--dim,
.section--dim-light {
  position: relative;
}
.section--dim > .container,
.section--dim-light > .container {
  position: relative;
  z-index:  1;
}

.section--dim::before {
  content:    '';
  position:   absolute;
  inset:      0;
  background: rgba(0, 0, 0, .5);
  z-index:    0;
}

.section--dim-light::before {
  content:    '';
  position:   absolute;
  inset:      0;
  background: rgba(255, 255, 255, .65);
  z-index:    0;
}

/* Světlý text na tmavém podkladu z fotky (CSS 3.15).
 * .section--dim (tmavý překryv) přepne text na světlý SAMO — stejně jako
 * .section--primary přepíná na --color-primary-contrast; inline color:#fff
 * u nadpisů/odstavců už není potřeba.
 * .section--svetly-text = totéž RUČNĚ pro fotku bez překryvu nebo s vlastním
 * přechodem v inline stylu (hero V8/V9) — tón fotky systém nepozná, přidá ho
 * ten, kdo stránku skládá a vidí, že je podklad tmavý.
 * .section--dim-light (světlý překryv) nechává výchozí tmavý text.
 * Karta uvnitř (.card) má vlastní světlé pozadí → text i odkazy zůstávají tmavé. */
.section--dim,
.section--svetly-text { color: #fff; }

.section--dim :is(h1, h2, h3, h4, p),
.section--svetly-text :is(h1, h2, h3, h4, p) { color: inherit; }

.section--dim .section__header p,
.section--svetly-text .section__header p { color: rgba(255, 255, 255, .85); }

.section--dim a:not(.btn):not(.card *),
.section--svetly-text a:not(.btn):not(.card *) { color: #fff; text-decoration: underline; }
.section--dim a:not(.btn):not(.card *):hover,
.section--svetly-text a:not(.btn):not(.card *):hover { color: rgba(255, 255, 255, .8); }

.section--dim .btn--outline:not(.card *),
.section--svetly-text .btn--outline:not(.card *) { color: #fff; border-color: rgba(255, 255, 255, .6); }
.section--dim .btn--ghost:not(.card *),
.section--svetly-text .btn--ghost:not(.card *) { color: #fff; }
.section--dim :is(.btn--outline, .btn--ghost):not(.card *):hover,
.section--svetly-text :is(.btn--outline, .btn--ghost):not(.card *):hover { color: #fff; background: rgba(255, 255, 255, .15); border-color: #fff; }

.section--dim .card,
.section--svetly-text .card { color: var(--color-text); }


/* ── 27. RECENZE ─────────────────────────────────────────────
 *
 * Použití:
 *   <?php recenze_vypis('grid', 6); ?>   – grid karet (výchozí)
 *   <?php recenze_vypis('list', 3); ?>   – užší list
 *
 * Manuální karta (bez helperu):
 *   <div class="recenze-grid">
 *     <div class="recenze-karta">
 *       <div class="recenze-karta__top">
 *         <span class="recenze-hvezdicky">★★★★★</span>
 *       </div>
 *       <div class="recenze-karta__text">Text recenze...</div>
 *       <div class="recenze-karta__autor">
 *         <span class="recenze-karta__avatar recenze-karta__avatar--initials">J</span>
 *         <div class="recenze-karta__info">
 *           <span class="recenze-karta__jmeno">Jana Nováková</span>
 *           <span class="recenze-karta__popis">zákaznice</span>
 *         </div>
 *       </div>
 *     </div>
 *   </div>
 */

.recenze-grid {
  display:               grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap:                   var(--space-md);
}

.recenze-list {
  display:        flex;
  flex-direction: column;
  gap:            var(--space-sm);
}

.recenze-karta {
  background:     var(--color-surface);
  border:         1px solid var(--color-border);
  border-radius:  var(--radius-md);
  padding:        var(--space-md);
  display:        flex;
  flex-direction: column;
  gap:            var(--space-sm);
}

/* Hvězdičky */
.recenze-hvezdicky    { display: inline-flex; gap: .1em; line-height: 1; }
.rec-star             { color: var(--color-border); font-size: 1rem; }
.rec-star--on         { color: #f59e0b; }

/* Zdroj badge */
.recenze-zdroj        { font-size: .65rem; font-weight: 700; padding: .15rem .45rem; border-radius: 3px; letter-spacing: .04em; text-transform: uppercase; vertical-align: middle; margin-left: .35rem; }
.recenze-zdroj--google   { background: #e8f0fe; color: #1a73e8; }
.recenze-zdroj--facebook { background: #e7f0ff; color: #1877f2; }

/* Top řádek (hvězdičky + badge) */
.recenze-karta__top   { display: flex; align-items: center; min-height: 1.4rem; }

/* Text s plynulým rozbalením */
.recenze-karta__text  { font-size: var(--text-sm); line-height: 1.75; color: var(--color-text); flex: 1; }
.recenze-karta__text--long {
  max-height: 7em;
  overflow:   hidden;
  transition: max-height .4s ease;
}

/* Číst více tlačítko */
.recenze-expand {
  background:  none;
  border:      none;
  color:       var(--color-primary-text-safe);
  font-size:   .8rem;
  cursor:      pointer;
  padding:     0;
  text-align:  left;
  margin-top:  -.25rem;
}
.recenze-expand:hover { text-decoration: underline; }

/* Autor */
.recenze-karta__autor {
  display:     flex;
  align-items: center;
  gap:         var(--space-sm);
  padding-top: var(--space-sm);
  border-top:  1px solid var(--color-border);
  margin-top:  auto;
}

.recenze-karta__avatar {
  width:        42px;
  height:       42px;
  border-radius: 50%;
  flex-shrink:  0;
  object-fit:   cover;
}

.recenze-karta__avatar--initials {
  background:      var(--color-primary-light);
  color:           var(--color-primary-text-safe);
  display:         flex;
  align-items:     center;
  justify-content: center;
  font-weight:     700;
  font-size:       .9rem;
}

.recenze-karta__info  { display: flex; flex-direction: column; min-width: 0; }
.recenze-karta__jmeno { font-weight: 600; font-size: var(--text-sm); }
.recenze-karta__popis { font-size: .78rem; color: var(--color-text-muted); margin-top: .1rem; }

.recenze__datum       { font-size: .72rem; color: var(--color-text-muted); margin-left: auto; }
.recenze__prazdno     { color: var(--color-text-muted); font-style: italic; }

@media (max-width: 480px) {
  .recenze-grid { grid-template-columns: 1fr; }
  .recenze-karta { padding: var(--space-sm); }
}

/* ── Varianta: citáty ─────────────────────────────────────── */
.recenze-citaty {
  columns:    2;
  column-gap: var(--space-xl);
}

@media (max-width: 600px) {
  .recenze-citaty { columns: 1; }
}

.recenze-citat {
  position:     relative;
  padding-left: 1.5rem;
  break-inside: avoid;
  margin-bottom: var(--space-lg);
}

.recenze-citat::before {
  content:      '\275D';
  position:     absolute;
  top:          -.75rem;
  left:         -.1rem;
  font-size:    3.5rem;
  line-height:  1;
  color:        var(--color-primary-text-safe);
  opacity:      .2;
  font-family:  Georgia, 'Times New Roman', serif;
  pointer-events: none;
  user-select:  none;
}

.recenze-citat__text {
  font-size:   1rem;
  line-height: 1.7;
  color:       var(--color-text);
  font-style:  italic;
  margin:      0 0 var(--space-sm);
}

.recenze-citat__hvezdicky {
  font-size:      .75rem;
  color:          #f59e0b;
  letter-spacing: .05em;
  margin-top:     .6rem;
  margin-bottom:  .5rem;
}

.recenze-citat__autor {
  display:     flex;
  align-items: center;
  gap:         .5rem;
}

.recenze-citat__initials {
  width:           32px;
  height:          32px;
  border-radius:   50%;
  background:      var(--color-primary-light);
  color:           var(--color-primary-text-safe);
  font-weight:     700;
  font-size:       .8rem;
  display:         flex;
  align-items:     center;
  justify-content: center;
  flex-shrink:     0;
}

.recenze-citat__jmeno { font-weight: 600; font-size: var(--text-sm); display: block; }
.recenze-citat__popis { font-size: .75rem; color: var(--color-text-muted); }

/* Souhrnné hodnocení */
.recenze-hodnoceni              { display: inline-flex; align-items: center; gap: .4em; }
.recenze-hodnoceni__cislo       { font-size: 1.25rem; font-weight: 700; line-height: 1; color: var(--color-text); }
.recenze-hodnoceni__pocet       { font-size: var(--text-sm); color: var(--color-text-muted); }
