/* =========================================================
   INSPIROCARDS — Vztahové karty
   Design systém

   Produktové barvy vycházejí ze skutečné sady: bordó krabička,
   levandulové karty s růžovým zlatem. Pozadí stránky je jednolité
   #F7F7F7, plné plochy o odstín světlejší.
   ========================================================= */

/* ---------------------------------------------------------
   1. TOKENY
   --------------------------------------------------------- */
:root{
  /* Barvy — produkt */
  --bordo:        #6B2432;   /* krabička; 10:1 na světlém podkladu */
  --bordo-deep:   #4E1824;
  --bordo-tint:   #EFE9EB;   /* jemný nádech bordó, doladěný k chladné šedé */
  --lavender:     #E6DFE8;   /* plocha karty */
  --lavender-deep:#CDBFD0;
  --gold:         #B4855A;   /* pouze dekorace a linky, nikdy text */
  --gold-text:    #85592F;   /* varianta pro text; 4.9:1 i na levandulové kartě */
  --gold-soft:    #E0C9AE;

  /* Barvy — plochy */
  /* Šedá značky. Tři odstíny, aby se plochy daly odlišit bez
     míchání náhodných hodnot po celém souboru:
       --grey        pozadí stránky, tónované sekce, dlaždice s fakty
       --grey-deep   plochy, které mají být o odstín vidět (dotazy)
       --grey-deeper tytéž plochy při najetí myší */
  --grey:         #F7F7F7;
  --grey-tint:    #F2F2F2;   /* tónované sekce — předěl bez linky */
  --grey-deep:    #F1F1F1;
  --grey-deeper:  #ECECEC;

  /* Pozadí je jednolité (2026-08, na pokyn). Původní vodorovný
     přechod tady zůstává v komentáři:
     linear-gradient(to right,#F8F9FA 0%,#F8F9FA 58%,#EFF1F3 100%).
     Tónované plochy mají teď stejný odstín jako pozadí a drží
     je vlastní linka — plnou šedou by od pozadí nic neodlišilo. */
  --page-bg:      var(--grey);
  /* Sklo: krytí 0,55 je spočítaná hranice. Při 0,72 vypadalo sklo
     nad světlou fotografií stejně jako plná barva — efekt nebyl
     poznat. Níž než 0,55 se nesmí: pod hlavičkou projíždí i tmavý
     fotografický pás (#2B2229) a odkazy by klesly pod 4,5:1.
     Změřeno pro odkazy v barvě --ink; s měkčí --ink-soft to neplatí. */
  --header-bg:    rgba(247,247,247,0.55);
  --cream:        #FCFCFC;      /* plné světlé plochy */
  --cream-deep:   var(--grey);  /* tónované sekce a dlaždice */
  --surface:      #FFFFFF;

  /* Barvy — text */
  --ink:          #2B2229;
  --ink-deep:     #1C161A;   /* pruh nahoře a pata dole */
  --ink-soft:     #5A4E56;   /* 6.9:1 na světlém podkladu */
  --ink-invert:   #F8F9FA;

  /* Text na tmavém podkladu (patička, dárková sekce) */
  --on-dark:        rgba(248,249,250,0.90);
  --on-dark-muted:  rgba(248,249,250,0.80);
  --on-dark-faint:  rgba(248,249,250,0.66);
  --on-dark-subtle: rgba(248,249,250,0.55);

  /* Linky */
  --line:         rgba(43,34,41,0.14);
  --line-strong:  rgba(43,34,41,0.28);
  --line-invert:  rgba(248,249,250,0.20);

  /* Stavy */
  --focus:        var(--bordo);
  --error:        #96263A;
  --error-bg:     #FBEEF0;
  --success:      #4F6B4A;

  /* Typografie */
  --f-display: 'EB Garamond', Georgia, 'Times New Roman', serif;
  --f-body:    'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;

  /* Základní text 17–18 px: drobné šedé odstavce působily jako
     podmínky pojistky, ne jako prémiová značka. --fs-sm zůstává
     jen pro meta údaje (ceny, popisky, tlačítka), ne pro obsah. */
  --fs-xs:   0.78rem;
  --fs-sm:   0.94rem;
  --fs-base: clamp(1.0625rem, 1.03rem + 0.18vw, 1.125rem);
  --fs-lg:   clamp(1.05rem, 0.98rem + 0.35vw, 1.2rem);
  --fs-xl:   clamp(1.3rem,  1.15rem + 0.7vw,  1.6rem);
  /* Jedna velikost pro všechny sekční nadpisy — sjednoceno na
     větší škálu (dřív měly „Jak fungují" a manifest vlastní,
     větší clampy a zbytek působil vedle nich opatrně). */
  --fs-2xl:  clamp(2.2rem,  1.55rem + 2.9vw,  3.6rem);
  --fs-3xl:  clamp(2.5rem,  1.8rem  + 3.2vw,  4.4rem);

  /* Rozestupy */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;
  --space-16: 64px;
  --space-24: 96px;
  /* Vzduch mezi sekcemi zhruba zdvojnásoben proti původnímu
     clamp(72px, 9vw, 132px) — luxus žije z ticha kolem obsahu.
     --section-y-lg je pro manifestové pauzy (sekce Situace),
     aby rytmus stránky nebyl uniformní. */
  --section-y: clamp(104px, 13vw, 208px);
  --section-y-lg: clamp(140px, 17vw, 260px);
  /* Maximální délka řádku běžného textu. */
  --measure: 62ch;

  /* Layout */
  --container: 1180px;
  --container-wide: 1360px;   /* jen horní pruh, hlavička a hero */
  --container-narrow: 720px;
  --gutter: clamp(20px, 5vw, 40px);
  /* horní pruh 40 + hlavička 72 + její spodní linka 1.
     Bez té linky hero přetékalo o pixel pod okraj okna. */
  --header-total: 113px;
  /* Jen ukotvená hlavička — horní pruh se při rolování odroluje,
     takže přišpendlené hero se musí zastavit až o 40 px výš. */
  --header-sticky: 73px;
  --topbar-h: 40px;

  /* UI */
  --radius-sm: 3px;
  --radius-md: 8px;
  --radius-lg: 16px;
  --radius-card: 14px;      /* zaoblení skutečné karty */
  --shadow-sm: 0 2px 10px rgba(43,34,41,0.06);
  --shadow-md: 0 18px 40px -18px rgba(43,34,41,0.28);
  --shadow-lg: 0 34px 70px -28px rgba(43,34,41,0.38);
  --t-fast: .16s ease;
  --t-normal: .28s ease;

  /* Poměr stran skutečné karty (na šířku) */
  --card-ratio: 8 / 5;
}

/* ---------------------------------------------------------
   1b. ULOŽENÉ TÉMA — TEPLÁ KRÉMOVÁ

   Původní paleta odvozená z papíru karet. Návrat k ní:
   odkomentovat blok níže a v pravidle pro `body` zaměnit
   dva řádky se zálohou za  background:var(--page-bg);
   Kontrast byl u této varianty ověřen stejně jako u šedé.
   --------------------------------------------------------- */
/*
:root{
  --bordo-tint:     #F3E9EA;
  --page-bg:        #F7F2EB;
  --header-bg:      rgba(247,242,235,0.92);
  --cream:          #F7F2EB;
  --cream-deep:     #EFE7DC;
  --ink-invert:     #F7F2EB;
  --on-dark:        rgba(247,242,235,0.90);
  --on-dark-muted:  rgba(247,242,235,0.80);
  --on-dark-faint:  rgba(247,242,235,0.66);
  --on-dark-subtle: rgba(247,242,235,0.55);
  --line-invert:    rgba(247,242,235,0.20);
}
*/

/* ---------------------------------------------------------
   2. RESET A ZÁKLAD
   --------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}

html{-webkit-text-size-adjust:100%;}

body{
  margin:0;
  /* Literál je záměrný: záloha pro prohlížeče bez proměnných. */
  background:#F7F7F7;
  background:var(--page-bg);
  color:var(--ink);
  font-family:var(--f-body);
  font-size:var(--fs-base);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  /* clip, ne hidden: hidden by z těla udělalo posuvný kontejner
     a přišpendlené hero by přestalo držet. Starší prohlížeče
     spadnou na hidden a přijdou jen o ten efekt. */
  overflow-x:hidden;
  overflow-x:clip;
}

/* Atribut hidden musí přebít i vlastní display v CSS. Bez tohohle
   by se prvky s display:grid nebo :flex zobrazovaly i skryté —
   týká se výzvy u zkušební karty i formuláře na pokladně. */
[hidden]{display:none !important;}

img{max-width:100%;height:auto;display:block;}
a{color:inherit;}
button{font-family:inherit;font-size:inherit;cursor:pointer;}
ul,ol{margin:0;padding:0;}
p{margin:0;}

h1,h2,h3,h4{
  font-family:var(--f-display);
  font-weight:500;
  margin:0;
  color:var(--ink);
  letter-spacing:-0.012em;
  text-wrap:balance;
}
h1{font-size:var(--fs-3xl);line-height:1.04;}
h2{font-size:var(--fs-2xl);line-height:1.1;}
h3{font-size:var(--fs-xl);line-height:1.2;}
h4{font-size:var(--fs-lg);line-height:1.3;}

em{font-style:italic;}

/* Přístupnost */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid var(--focus);
  outline-offset:3px;
  border-radius:2px;
}

.visually-hidden{
  position:absolute;width:1px;height:1px;
  padding:0;margin:-1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;border:0;
}

.skip-link{
  position:absolute;top:-100px;left:var(--gutter);z-index:200;
  background:var(--bordo);color:var(--ink-invert);
  padding:12px 20px;border-radius:var(--radius-sm);
  text-decoration:none;font-weight:600;font-size:var(--fs-sm);
  transition:top var(--t-fast);
}
.skip-link:focus{top:16px;}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}

/* ---------------------------------------------------------
   3. LAYOUT
   --------------------------------------------------------- */
.wrap{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.wrap--narrow{max-width:var(--container-narrow);}

.section{padding-block:var(--section-y);}
/* Předěl dělá jemný posun odstínu přes celou sekci, ne linka —
   ta na jednolitém pozadí působila jako šev. */
.section--tint{background:var(--grey-tint);}
.section--bordo{background:var(--bordo);color:var(--ink-invert);}
/* Nadpisy mají barvu nastavenou přímo, jinak by na tmavém podkladu
   zůstaly tmavé — přímé pravidlo vždy přebije dědění. */
.section--bordo :is(h1,h2,h3,h4){color:var(--ink-invert);}
.section--line{border-top:1px solid var(--line);}

.section-head{max-width:640px;margin-bottom:clamp(56px,7vw,88px);}
.section-head > * + *{margin-top:var(--space-4);}
.section-head p{color:var(--ink-soft);font-size:var(--fs-lg);}

/* Nadřazený štítek nad nadpisem */
.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--f-body);
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--bordo);
}
.eyebrow::before{
  content:"";width:22px;height:1px;background:var(--gold);
}
.section--bordo .eyebrow{color:var(--gold-soft);}
.section--bordo .eyebrow::before{background:var(--gold-soft);}

.lede{
  font-size:var(--fs-lg);
  color:var(--ink-soft);
  line-height:1.65;
}

/* ---------------------------------------------------------
   4. TLAČÍTKA A ODKAZY
   --------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:48px;
  padding:14px 30px;
  border:1px solid transparent;
  border-radius:var(--radius-sm);
  font-weight:600;
  font-size:var(--fs-sm);
  letter-spacing:.02em;
  text-decoration:none;
  text-align:center;
  transition:background var(--t-fast),color var(--t-fast),
             border-color var(--t-fast),transform var(--t-fast);
}
.btn:hover{transform:translateY(-1px);}
.btn:active{transform:translateY(0);}
.btn-primary{background:var(--bordo);color:var(--ink-invert);}
.btn-primary:hover{background:var(--bordo-deep);}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-strong);}
.btn-ghost:hover{border-color:var(--ink);background:rgba(43,34,41,0.03);}
.btn-invert{background:var(--cream);color:var(--bordo);}
.btn-invert:hover{background:#fff;}
.btn-block{width:100%;}
.btn[disabled],.btn[aria-disabled="true"]{
  opacity:.55;cursor:not-allowed;transform:none;
}

.tlink{
  color:var(--bordo);
  text-decoration-color:var(--gold);
  text-underline-offset:4px;
  transition:color var(--t-fast);
}
.tlink:hover{color:var(--bordo-deep);}

/* ---------------------------------------------------------
   5. KARTA (vizuál odpovídá skutečnému produktu)
   Světlá levandulová plocha, růžově zlatý pruh,
   kategorie psaná kurzívou, otázka serifem.
   --------------------------------------------------------- */
.qcard{
  position:relative;
  aspect-ratio:var(--card-ratio);
  border-radius:var(--radius-card);
  padding:clamp(18px,3vw,28px);
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:var(--space-4);
  text-align:center;
  overflow:hidden;
  background:
    linear-gradient(118deg,
      #F4F0F5 0%,
      var(--lavender) 38%,
      #EFE6E8 62%,
      #F6F2F1 100%);
  box-shadow:var(--shadow-md);
  color:var(--ink);
}
/* jemný zlatý pruh, který má skutečná karta při pravém okraji */
.qcard::after{
  content:"";
  position:absolute;
  top:-12%;right:14%;
  width:clamp(10px,2.4vw,22px);height:124%;
  background:linear-gradient(180deg,
    transparent,
    var(--gold-soft) 22%,
    rgba(180,133,90,.55) 48%,
    var(--gold-soft) 74%,
    transparent);
  filter:blur(1px);
  opacity:.6;
  transform:rotate(9deg);
  pointer-events:none;
}
.qcard__topic{
  font-family:var(--f-display);
  font-style:italic;
  font-size:clamp(.85rem,1.5vw,1rem);
  letter-spacing:.06em;
  color:var(--gold-text);
}
.qcard__q{
  position:relative;z-index:1;
  font-family:var(--f-display);
  font-weight:600;
  font-size:clamp(1.05rem,2.1vw,1.5rem);
  line-height:1.28;
  max-width:26ch;
}
.qcard--lg .qcard__q{font-size:clamp(1.2rem,2.6vw,1.85rem);}

/* ---------------------------------------------------------
   6. HORNÍ PRUH
   --------------------------------------------------------- */
.topbar{
  background:var(--ink-deep);
  color:var(--on-dark-muted);
}
.topbar .wrap{
  max-width:var(--container-wide);
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:var(--space-4);
  min-height:40px;
}
.topbar__message{
  grid-column:2;
  text-align:center;
  font-size:11px;
  font-weight:500;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.topbar__social{
  grid-column:3;
  justify-self:end;
  display:flex;align-items:center;gap:2px;
  list-style:none;
}
.topbar__social a{
  display:grid;place-items:center;
  /* 34 px drží dotykový cíl nad minimem WCAG 2.2 (2.5.8). */
  width:34px;height:34px;
  color:var(--on-dark-muted);
  transition:color var(--t-fast);
}
.topbar__social a:hover{color:var(--ink-invert);}
.topbar__social a:focus-visible{outline-color:var(--gold-soft);}

@media (max-width:700px){
  .topbar .wrap{grid-template-columns:minmax(0,1fr) auto;}
  .topbar__message{
    grid-column:1;
    text-align:left;
    font-size:10px;letter-spacing:.06em;
  }
  .topbar__social{grid-column:2;}
}

/* ---------------------------------------------------------
   7. HLAVIČKA
   Navigace vlevo, značka na střed, akce vpravo.
   --------------------------------------------------------- */
/* Hlavička je matné sklo: rozostří a lehce dosytí to, co pod ní
   projíždí. Dosycení je tam schválně — samotné rozostření udělá
   z fotografie pod hlavičkou šedý flek. Vlasová světlá linka nahoře
   uvnitř dává hraně skla lesk, tmavá dole ji odděluje od obsahu. */
.site-header{
  position:sticky;top:0;z-index:60;
  background:var(--header-bg);
  -webkit-backdrop-filter:blur(20px) saturate(150%);
  backdrop-filter:blur(20px) saturate(150%);
  border-bottom:1px solid rgba(43,34,41,.09);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65),
             0 10px 30px -24px rgba(43,34,41,.55);
}
/* Prohlížeč bez podpory rozostření by nechal text ležet na skoro
   průhledné ploše — dostane plnou barvu. */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .site-header{background:var(--grey);}
}
.site-header .wrap{
  max-width:var(--container-wide);
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:var(--space-4);
  min-height:72px;
}

.logo{
  grid-column:2;grid-row:1;
  justify-self:center;
  font-family:var(--f-display);
  font-size:1.3rem;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  text-decoration:none;
  color:var(--ink);
  white-space:nowrap;
}
.logo span{color:var(--bordo);}

.site-nav{grid-column:1;grid-row:1;justify-self:start;}
.nav-links{
  display:flex;align-items:center;gap:clamp(14px,1.8vw,26px);
  list-style:none;
}
.nav-links a{
  display:block;
  padding-block:8px;
  font-size:11px;
  font-weight:500;
  letter-spacing:.12em;
  text-transform:uppercase;
  white-space:nowrap;
  text-decoration:none;
  /* Plná tmavá, ne měkčí varianta: odkazy leží na skle, pod kterým
     může projíždět tmavá plocha. Se sytější barvou drží kontrast
     i v tom nejhorším místě stránky. */
  color:var(--ink);
  border-bottom:1px solid transparent;
  transition:color var(--t-fast),border-color var(--t-fast);
}
.nav-links a:hover{color:var(--bordo);border-bottom-color:var(--gold);}

.header-actions{
  grid-column:3;grid-row:1;
  justify-self:end;
  display:flex;align-items:center;gap:var(--space-3);
}

/* Trvalé CTA v hlavičce. Nižší a užší než tlačítka v obsahu —
   v pruhu vysokém 72 px nesmí přebít značku uprostřed. */
.header-cta{
  min-height:40px;
  padding:10px 20px;
  font-size:var(--fs-xs);
  letter-spacing:.1em;
  text-transform:uppercase;
}
/* Tlačítko v rozbaleném menu se ukazuje jen tam, kde není v hlavičce. */
.nav-cta{display:none;}

.icon-btn{
  position:relative;
  display:flex;align-items:center;justify-content:center;
  width:46px;height:46px;
  background:none;border:1px solid var(--line);border-radius:50%;
  color:var(--ink);
  transition:border-color var(--t-fast),background var(--t-fast);
}
.icon-btn:hover{border-color:var(--ink);background:rgba(43,34,41,.03);}

.cart-count{
  position:absolute;top:-3px;right:-3px;
  min-width:20px;height:20px;padding:0 5px;
  background:var(--bordo);color:#fff;
  border-radius:999px;
  font-size:11px;font-weight:600;line-height:20px;
  text-align:center;
  opacity:0;transform:scale(.5);
  transition:opacity var(--t-fast),transform var(--t-fast);
}
.cart-count.is-visible{opacity:1;transform:scale(1);}

.nav-toggle{display:none;grid-column:1;grid-row:1;justify-self:start;}

/* Mobilní navigace — košík vlevo, značka na středu, hamburger vpravo.
   Panel je pozicovaný vůči hlavičce, takže se drží i při scrollu.

   Pořadí v HTML zůstává tlačítko → panel, aby na sebe pro čtečku
   obrazovky navazovaly, i když je vizuálně tlačítko až vpravo. */
@media (max-width:1000px){
  .nav-toggle{
    display:flex;
    grid-column:3;grid-row:1;
    justify-self:end;
  }
  .header-actions{
    grid-column:1;grid-row:1;
    justify-self:start;
  }
  .site-nav{
    position:absolute;top:100%;left:0;right:0;
    /* Bez tohohle by desktopové justify-self:start smrštilo panel
       na šířku obsahu, i když má nastavené left i right. */
    justify-self:stretch;
    /* Stejné sklo jako hlavička, jen hutnější — pod panelem leží
       celé odstavce a ty nesmí prosvítat mezi odkazy. */
    background:rgba(250,250,250,.86);
    -webkit-backdrop-filter:blur(20px) saturate(150%);
    backdrop-filter:blur(20px) saturate(150%);
    border-bottom:1px solid var(--line);
    box-shadow:var(--shadow-md);
    padding:var(--space-2) var(--gutter) var(--space-6);
    transform:translateY(-8px);
    opacity:0;visibility:hidden;
    transition:opacity var(--t-fast),transform var(--t-fast),visibility var(--t-fast);
  }
  .site-nav[data-open="true"]{opacity:1;visibility:visible;transform:translateY(0);}
  .nav-links{
    flex-direction:column;align-items:stretch;gap:0;
    max-width:var(--container);margin-inline:auto;
  }
  .nav-links a{
    padding-block:16px;
    font-size:var(--fs-sm);letter-spacing:.1em;
    border-bottom:1px solid var(--line);
  }
  .nav-links li:last-child a{border-bottom:0;}

  /* Na úzkých displejích by se tlačítko do hlavičky nevešlo mezi
     košík a hamburger — přesouvá se na konec rozbaleného menu. */
  .header-cta{display:none;}
  .nav-cta{display:block;margin-top:var(--space-4);}
  .nav-cta a{
    border-bottom:0;
    padding-block:14px;
    font-size:var(--fs-sm);
    letter-spacing:.02em;
    text-transform:none;
    /* BAREVNOST TLAČÍTKA SE MUSÍ VRÁTIT VÝSLOVNĚ.

       `.nav-links a` je specifičtější než `.btn-primary` (třída
       + prvek proti samotné třídě), takže mu přebíjela bílou barvu
       tmavou `--ink`. Tlačítko pak mělo tmavý text na tmavém bordó —
       kontrast 1,41 : 1 místo požadovaných 4,5 : 1, tedy prakticky
       nečitelné. A byla to jediná výzva k nákupu v rozbaleném menu
       na mobilu, tedy tam, kde chodí většina návštěvníků. */
    color:var(--ink-invert);
  }
  .nav-cta a:hover{color:var(--ink-invert);}

  /* Pokladna má jediný odkaz — nepotřebuje rozbalovací panel. */
  .site-nav--static{
    position:static;
    padding:0;background:none;border:0;box-shadow:none;
    opacity:1;visibility:visible;transform:none;
  }
  .site-nav--static .nav-links a{border-bottom:0;padding-block:8px;}
}

/* Na úzkých displejích už se značka v původní velikosti nevejde
   mezi obě tlačítka a hamburger vyjížděl za okraj. */
@media (max-width:420px){
  .site-header .wrap{gap:var(--space-2);}
  .logo{font-size:1rem;letter-spacing:.1em;}
}

/* ---------------------------------------------------------
   8. HERO
   --------------------------------------------------------- */
/* Fotografie vyplní celou první obrazovku, sazba leží v neprůhledném
   panelu u spodního okraje.

   Závoj přes fotografii jsme zkoušeli a změřili: text zóna má
   95. percentil jasu 200, takže bílý text potřebuje ztmavení kolem
   0.72 — při něm ale bordó krabička ztmavne do hnědočerné. Panel
   řeší obojí: fotka si všude drží barvu a text má plný kontrast.
   Nikdy z něj nedělat poloprůhledný. */
/* Hero vyplní přesně první obrazovku a sazba leží na fotografii.

   Fotka tím dostane celou výšku okna místo dvou třetin, takže se
   ořezává mnohem míň (rám kolem 1,8:1 místo 2,6:1) a produkt
   zůstane celý.

   Plošné ztmavení jsme zkoušeli a změřili: text zóna má 95. percentil
   jasu 200, bílý text by potřeboval ztmavení kolem 0,72 a při něm
   bordó krabička zčerná. Řešení je jinde — sazba mění polaritu podle
   snímku (data-tone) a závoj je jen úzký, u levého okraje, kde
   produkt není. Nikdy z něj nedělat plošný. */
/* Hero zůstane přišpendlené pod hlavičkou a obsah po něm přejede
   jako opona (scroll reveal). Drží to jen sticky pozicování, žádný
   skript — při výpadku CDN se nic nerozbije, hero se prostě odroluje. */
/* Fotografie zajíždí pod hlavičku, aby bylo vidět matné sklo —
   záporný horní okraj ji vytáhne přesně o výšku hlavičky nahoru.
   Sazba i tečky sedí u spodní hrany, takže je hlavička nepřekryje. */
.hero{
  position:sticky;
  top:0;
  z-index:0;
  margin-top:calc(-1 * var(--header-sticky));
  height:calc(100vh - var(--topbar-h));
  height:calc(100dvh - var(--topbar-h));
  min-height:540px;
}

/* Vrstva, která hero překrývá. Bez neprůhledného pozadí by skrz
   ni fotografie prosvítala — sekce samotné jsou průhledné a barvu
   drží až pozadí stránky. */
.page-flow{
  position:relative;
  z-index:1;
  background:#F6F8F9;
  background:var(--page-bg);
}

/* Sazba sedí u spodní hrany. Změřeno: krabička končí nejpozději
   na 70 % výšky rámu, takže na text dole nikdy nepadne — a tmavý
   text na tmavém bordó by byl nečitelný. Pod sazbou je vždy jen
   podložka nebo vějíř karet, obojí světlé. */
.hero-copy{
  position:absolute;inset:0;z-index:1;
  display:flex;align-items:flex-end;
  /* Horní odsazení počítá s hlavičkou, která teď leží na fotografii —
     bez toho by se vysoká sazba schovala pod sklo. */
  padding-block:calc(var(--header-sticky) + clamp(16px,3vh,40px)) clamp(56px,9vh,96px);
  /* Hero se od zbytku stránky záměrně odlišuje: sazba jde k okraji
     okna, ne na svislici kontejneru. Jinak by se do levé třetiny
     nevešla — a širší být nesmí, viz níž. */
  padding-inline:var(--gutter);
  /* Aby zůstaly tečky pod sazbou klikatelné. */
  pointer-events:none;
}
.hero-copy__inner{pointer-events:auto;}
/* Sazba se musí vejít do levé třetiny okna. Změřeno: krabička
   začíná nejdřív na 33 % šířky (snímek s vějířem), takže širší
   text by na ni padl — a tmavý text na tmavém bordó je nečitelný.
   Tohle číslo neměnit bez přeměření snímků. */
.hero-copy__inner{
  display:block;
  width:100%;
  max-width:min(28rem,calc(33% - var(--gutter)));
}
.hero-copy h1{
  font-size:clamp(2.3rem,1.35rem + 3.1vw,4rem);
  line-height:1.02;
}
.hero-copy h1 em{color:var(--bordo);}
.hero-copy .lede{
  font-size:var(--fs-base);line-height:1.55;
  max-width:34ch;
}
.hero-copy__lead > * + *{margin-top:var(--space-3);}
.hero-copy__aside{margin-top:var(--space-6);}
.hero-copy__aside > * + *{margin-top:var(--space-4);}

/* Závoj jen u levého okraje, kde leží text. Vyhasne dřív, než
   dosáhne na produkt (krabička začíná nejdřív na 33 % šířky). */
.hero__media::after{
  content:"";
  position:absolute;inset:0;z-index:1;
  pointer-events:none;
  transition:background var(--t-normal);
}
/* Dva pruhy: zleva a odspodu. Sazba leží v jejich průsečíku, takže
   je podložená z obou stran, a přitom oba vyhasnou dřív, než sáhnou
   na krabičku (ta začíná na 33 % šířky a končí na 70 % výšky). */
.hero[data-tone="light"] .hero__media::after{
  background:
    linear-gradient(to top,
      rgba(250,250,250,.94) 0%,
      rgba(250,250,250,.62) 16%,
      rgba(250,250,250,0) 34%),
    linear-gradient(95deg,
      rgba(250,250,250,.96) 0%,
      rgba(250,250,250,.78) 14%,
      rgba(250,250,250,.34) 26%,
      rgba(250,250,250,0) 36%);
}
/* Snímek s rozloženými kartami je po celé ploše popsaný, takže sám
   jas nestačí — sazba se v textu na kartách ztrácela. Pod textovou
   zónou proto navíc rozostříme podklad; maska drží rozostření
   v témže rohu jako závoj, aby nikde nevznikla viditelná hrana. */
.hero[data-busy="true"] .hero__media::after{
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
  -webkit-mask-image:radial-gradient(120% 95% at 0% 100%,#000 0%,#000 28%,transparent 62%);
  mask-image:radial-gradient(120% 95% at 0% 100%,#000 0%,#000 28%,transparent 62%);
}
.hero[data-tone="dark"] .hero__media::after{
  background:
    linear-gradient(to top,
      rgba(26,17,21,.8) 0%,
      rgba(26,17,21,.42) 14%,
      rgba(26,17,21,0) 30%),
    linear-gradient(95deg,
      rgba(26,17,21,.82) 0%,
      rgba(26,17,21,.5) 16%,
      rgba(26,17,21,0) 32%);
}

/* Polarita sazby podle snímku. */
.hero[data-tone="dark"] .hero-copy{color:var(--on-dark);}
.hero[data-tone="dark"] .hero-copy h1{color:var(--ink-invert);}
.hero[data-tone="dark"] .hero-copy h1 em{color:var(--gold-soft);}
.hero[data-tone="dark"] .hero-copy .eyebrow{color:var(--gold-soft);}
.hero[data-tone="dark"] .hero-copy .eyebrow::before{background:var(--gold-soft);}
.hero[data-tone="dark"] .hero-copy .lede{color:var(--on-dark-muted);}
.hero[data-tone="dark"] .hero-price{color:var(--on-dark-muted);}
.hero[data-tone="dark"] .hero-price b{color:var(--ink-invert);}

/* Tlačítko a cena na jednom řádku — v panelu není místo na to,
   aby každý údaj zabíral vlastní pás. */
.hero-cta{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);
  margin-top:var(--space-4);
}
.hero-price{
  display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-3);
  font-size:var(--fs-sm);color:var(--ink-soft);
}
.hero-price b{
  font-family:var(--f-display);
  font-size:1.45rem;font-weight:600;
  color:var(--ink);line-height:1;
}

/* Výška NESMÍ vycházet z okna. Zdrojové fotografie mají poměr
   kolem 3:2 a produkt na nich zabírá svisle 12–98 % výšky
   (krabička 12–53 %, vějíř karet 50–98 %). Formát odvozený
   z výšky okna vycházel až 2,17:1, což ukáže jen 46 % výšky
   snímku — krabička se ořízla. Proto pevný poměr stran:

   16:9 nechá viditelných 87,5 % výšky zdroje, ořez 12,5 %.
   Při object-position 35 % padne 4,4 % nahoru a 8,1 % dolů,
   takže je vidět pás 4,4–91,9 % — krabička celá, z vějíře se
   ubere jen spodní okraj, který stejně vybíhá z fotky.
   Strop 92 dvh drží fotku na výšku okna i na velkých displejích;
   ověřeno, že ani při něm ořez na krabičku nedosáhne. */
/* Fotka vyplňuje celou plochu hera. Zdrojové snímky mají poměr
   kolem 3:2 a produkt na nich zabírá svisle 12–98 % výšky
   (krabička 12–53 %, vějíř karet 50–98 %), proto ořez odvozený
   z výšky okna dřív krabičku usekával. Řeší to object-position
   níž — viz výpočet u .hero__slide img. */
.hero__media{
  position:absolute;inset:0;
  overflow:hidden;
  background:var(--lavender);
}
/* Snímky leží přes sebe a prolínají se. Aktivní je vždy jeden;
   první má třídu už v HTML, takže je vidět i bez JavaScriptu. */
.hero__slide{
  position:absolute;inset:0;
  display:block;
  opacity:0;
  transition:opacity 1.2s ease;
}
.hero__slide.is-active{opacity:1;}
.hero__slide img{
  width:100%;height:100%;
  object-fit:cover;
  /* Ořez drží u horní hrany: nahoře je krabička (od 12 % výšky
     zdroje), dole plocha podložky a výběh vějíře, který snese
     useknutí. Při běžném okně (poměr kolem 1,8:1) padne nahoru
     jen 3 % výšky, takže krabička zůstane celá i na širokém
     monitoru, kde je ořez největší. */
  object-position:center 22%;
}

/* Tečky leží na fotografii, která je jednou světlá a jindy tmavá —
   proto mají tenký tmavý lem a stín, aby byly čitelné na obojím.
   Tlačítko je 30 px kvůli dotykovému cíli, samotná tečka menší. */
.hero__dots{
  position:absolute;z-index:2;
  left:0;right:0;bottom:clamp(18px,2.6vw,30px);
  display:flex;justify-content:center;gap:4px;
}
.hero__dot{
  width:30px;height:30px;
  display:grid;place-items:center;
  padding:0;background:none;border:0;
}
.hero__dot::before{
  content:"";
  width:8px;height:8px;border-radius:50%;
  background:rgba(248,249,250,.38);
  /* Lem a stín drží tečku čitelnou i na světlém záběru — samotná
     průhledná výplň by na něm zanikla. */
  box-shadow:0 0 0 1px rgba(18,12,16,.26), 0 1px 3px rgba(18,12,16,.28);
  transition:background var(--t-fast),transform var(--t-fast);
}
.hero__dot:hover::before{background:rgba(248,249,250,.72);}
.hero__dot[aria-current="true"]::before{
  background:rgba(248,249,250,.85);
  transform:scale(1.3);
}
.hero__dot:focus-visible{outline:2px solid var(--cream);outline-offset:-4px;border-radius:50%;}

/* Nízké okno: nadpis v původní velikosti by sazbu vytlačil nad horní
   hranu hera (na 1280×720 zbývalo 30 px). Zmenšuje se až tady, aby
   na běžných displejích zůstal co největší. */
@media (min-width:901px) and (max-height:760px){
  .hero-copy h1{font-size:clamp(2rem,1.2rem + 2.4vw,3rem);}
  .hero-copy .lede{font-size:var(--fs-sm);}
  .hero-copy{padding-block:clamp(20px,4vh,48px) clamp(40px,7vh,72px);}
}

@media (max-width:900px){
  /* Na úzkém displeji by sazba na fotce zabrala celý snímek —
     rozvržení se proto rozpadne pod sebe: fotka v poměru zdroje
     a sazba pod ní na ploše stránky, bez závoje. Hero je tu vyšší
     než okno, takže se ani nešpendlí — jinak by se text pod fotkou
     nedal dorolovat. */
  /* Na mobilu fotka pod hlavičku nezajíždí — je nižší a přišla by
     o horní třetinu záběru. */
  .hero{position:static;display:block;height:auto;min-height:0;margin-top:0;}
  .hero__media{position:relative;aspect-ratio:3/2;}
  .hero__media::after{display:none;}
  .hero-copy{
    position:static;display:block;
    padding-block:var(--space-12) var(--space-16);
    padding-inline:var(--gutter);
  }
  .hero-copy__inner{max-width:none;}
  .hero-copy h1{max-width:none;}
  /* Sazba je pod fotkou na ploše stránky — vždy tmavá. */
  .hero[data-tone="dark"] .hero-copy,
  .hero[data-tone="dark"] .hero-copy h1{color:var(--ink);}
  .hero[data-tone="dark"] .hero-copy h1 em{color:var(--bordo);}
  .hero[data-tone="dark"] .hero-copy .eyebrow{color:var(--bordo);}
  .hero[data-tone="dark"] .hero-copy .eyebrow::before{background:var(--gold);}
  .hero[data-tone="dark"] .hero-copy .lede,
  .hero[data-tone="dark"] .hero-price{color:var(--ink-soft);}
  .hero[data-tone="dark"] .hero-price b{color:var(--ink);}
}

/* ---------------------------------------------------------
   9. PRODUKT V ČÍSLECH
   --------------------------------------------------------- */
.stats{
  padding-block:clamp(52px,6vw,84px);
  border-bottom:1px solid var(--line);
}
.stats-grid{
  display:grid;
  /* Čtyři položky se na širokém rozvržení vejdou do jedné řady,
     takže nevznikne useknutá poslední řada. */
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:clamp(32px,4vw,56px);
  list-style:none;
}
.stat__icon{
  display:block;
  margin-bottom:var(--space-6);
  color:var(--gold-text);
}
.stat__value{
  display:block;
  font-family:var(--f-display);
  font-size:clamp(2.6rem,4.6vw,3.5rem);
  font-weight:400;
  line-height:1;
  letter-spacing:-.02em;
  font-variant-numeric:lining-nums;
}
.stat__label{
  margin-top:var(--space-4);
  font-weight:600;
  font-size:var(--fs-base);
}
.stat > p:last-child{
  margin-top:var(--space-2);
  color:var(--ink-soft);
  font-size:var(--fs-base);
  line-height:1.65;
}

/* ---------------------------------------------------------
   9b. ÚVODNÍ BLOK: MANIFEST + FAKTA
   Sloučení „Produktu v číslech" a „Situace zákazníka" podle
   referenčního vzoru: vlevo štítek a velký nadpis, vpravo text
   a pod ním pás faktů oddělených tenkými linkami.
   --------------------------------------------------------- */
.manifest__grid{
  display:grid;
  /* 40/60 — širší pravý sloupec nechá text lépe dýchat. */
  grid-template-columns:minmax(0,2fr) minmax(0,3fr);
  gap:clamp(40px,6vw,96px);
  align-items:start;
}
.manifest .eyebrow{margin-bottom:var(--space-6);}
.manifest h2{line-height:1.08;}
.manifest__body p{color:var(--ink-soft);max-width:var(--measure);}
.manifest__body p + p{margin-top:var(--space-4);}

/* Čtyři samostatné dlaždice pod nadpisem i textem, přes celou šířku.
   Vzor: světlá plocha, jemné zaoblení, obsah na středu. */
.manifest__facts{
  margin-top:clamp(56px,7vw,88px);
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:clamp(12px,1.4vw,20px);
  list-style:none;
}
.manifest__facts li{
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:var(--space-2);
  min-height:clamp(150px,16vw,200px);
  padding:var(--space-6) var(--space-4);
  text-align:center;
  /* Dlaždice na pozadí stránky — odliší je vlastní odstín, ne linka. */
  background:var(--grey-deep);
  border-radius:var(--radius-md);
}
/* Musí přebít pravidlo pro popisek níž — ikona je taky span. */
.manifest__facts .manifest__icon{
  display:block;
  margin-bottom:var(--space-2);
  color:var(--gold-text);
}
.manifest__facts b{
  font-family:var(--f-display);
  font-size:clamp(2rem,1.5rem + 1.4vw,2.9rem);
  font-weight:400;
  line-height:1;
  letter-spacing:-.02em;
  font-variant-numeric:lining-nums;
}
.manifest__facts span:not(.manifest__icon){
  font-size:var(--fs-xs);
  font-weight:600;
  letter-spacing:.11em;
  text-transform:uppercase;
  color:var(--ink-soft);
}

@media (max-width:900px){
  .manifest__grid{grid-template-columns:1fr;gap:var(--space-12);}
  /* Čtyři dlaždice vedle sebe by na tabletu zúžily popisky pod
     čitelnou šířku — mřížka 2 × 2. */
  .manifest__facts{grid-template-columns:1fr 1fr;}
}
@media (max-width:560px){
  /* V úzké dlaždici se delší popisky lámaly na tři řádky. */
  .manifest__facts li{padding-inline:var(--space-2);}
  .manifest__facts span:not(.manifest__icon){letter-spacing:.06em;font-size:0.72rem;}
}
/* Bez vlastního podkladu — sekce sedí přímo na pozadí stránky.
   Je to manifest: největší pauza na stránce a písmo nad úrovní
   běžného h2, aby otázka fungovala jako zastavení, ne jako
   další sekce v řadě. */
.situation{padding-block:var(--section-y-lg);}
.situation .wrap{max-width:860px;text-align:center;}
.situation h2{
  font-style:italic;
  font-size:var(--fs-2xl);
  line-height:1.12;
  margin-bottom:var(--space-12);
}
.situation p + p{margin-top:var(--space-4);}
.situation p{
  color:var(--ink-soft);font-size:var(--fs-lg);
  max-width:var(--measure);margin-inline:auto;
}

/* ---------------------------------------------------------
   11. HODNOTOVÁ SEKCE
   --------------------------------------------------------- */
.values-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(232px,1fr));
  gap:var(--space-8);
}
.value{
  padding-top:var(--space-6);
  border-top:1px solid var(--line-strong);
}
.value h3{
  font-size:var(--fs-lg);font-weight:600;
  margin-bottom:var(--space-3);
}
.value p{color:var(--ink-soft);font-size:var(--fs-base);line-height:1.7;}

/* ---- Přišpendlený výklad (pinned scroll) ----
   Výchozí stav je bez skriptu: fotografie nahoře, pod ní všechny
   čtyři body pod sebou. Krokový režim zapíná až třída .is-stepped,
   kterou přidá skript teprve tehdy, když GSAP běží. Při výpadku CDN
   tak zůstane celý obsah čitelný. */
.steps__layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(32px,5vw,80px);
  align-items:center;
}
/* Poměr rámu je PŘESNĚ poměr dodaných souborů (1414/2000), ne 4/3
   ani 3/4.

   Důvod: snímky ke krokům mají vlastní světlý rámeček vypálený
   v grafice. Jakýkoli ořez ho ukrojí nesymetricky — nahoře zůstane,
   dole zmizí — a vypadá to jako chyba sazby, ne jako záměr. Při
   shodném poměru nemá object-fit:cover co oříznout.

   Když se sem někdy vrátí fotografie s jiným poměrem, musí se
   změnit i tohle číslo. */
.steps__media{
  position:relative;
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:var(--shadow-md);
  background:var(--cream-deep);
  aspect-ratio:1414/2000;
}
.steps__shot{display:block;}
.steps__shot img{width:100%;height:100%;object-fit:cover;}

.steps__list{list-style:none;display:grid;gap:var(--space-8);}
.steps__no{
  display:block;
  font-family:var(--f-display);
  font-size:1.1rem;font-style:italic;
  color:var(--gold-text);
  margin-bottom:var(--space-2);
}
.steps__item h3{font-size:var(--fs-xl);font-weight:600;}
.steps__item p{
  margin-top:var(--space-3);
  color:var(--ink-soft);
  line-height:1.7;
  max-width:44ch;
}
.steps__rail{display:none;}
.steps .values-note{margin-top:var(--space-12);}

/* --- Krokový režim (zapíná skript) ---
   Přišpendlená sekce se musí vejít do okna, jinak zůstane spodek
   useknutý za jeho hranou. Výška je proto odvozená od okna a obsah
   se v ní centruje; fotografie se řídí výškou, ne šířkou sloupce. */
.steps.is-stepped{
  min-height:calc(100vh - var(--header-sticky));
  min-height:calc(100dvh - var(--header-sticky));
  display:grid;align-items:center;
  padding-block:clamp(28px,4vh,56px);
}
/* Týž poměr jako mimo krokový režim — viz zdůvodnění u .steps__media. */
.steps.is-stepped .steps__media{
  aspect-ratio:1414/2000;
  height:min(58vh,560px);
  width:auto;max-width:100%;
  justify-self:center;
}
.steps.is-stepped .steps__shot{
  position:absolute;inset:0;
  opacity:0;
  transition:opacity .55s ease;
}
.steps.is-stepped .steps__shot.is-active{opacity:1;}

/* Body leží přes sebe; výšku drží nejvyšší z nich, aby sazba
   při přepínání neposkakovala. */
.steps.is-stepped .steps__list{
  position:relative;
  display:grid;
  gap:0;
}
.steps.is-stepped .steps__item{
  grid-area:1 / 1;
  opacity:0;
  transform:translateY(14px);
  transition:opacity .45s ease,transform .45s ease;
  pointer-events:none;
}
.steps.is-stepped .steps__item.is-active{
  opacity:1;transform:none;pointer-events:auto;
}
.steps.is-stepped .steps__item h3{font-size:clamp(1.5rem,1.1rem + 1.3vw,2.2rem);}
.steps.is-stepped .steps__item p{font-size:var(--fs-lg);}

/* Ukazatel postupu — čtyři čárky, aktivní je bordó. */
.steps.is-stepped .steps__rail{
  display:flex;gap:var(--space-2);
  margin-top:var(--space-8);
}
.steps__tick{
  width:34px;height:2px;
  background:rgba(43,34,41,.16);
  transition:background var(--t-normal);
}
.steps__tick.is-active{background:var(--bordo);}

/* V krokovém režimu je uzavírací řádek jen doprovod — nesmí ukrojit
   výšku, kterou potřebuje střídaný obsah. */
.steps.is-stepped .section-head{margin-bottom:clamp(28px,4vh,48px);}
.steps.is-stepped .values-note{
  margin-top:clamp(24px,3.5vh,40px);
  font-size:var(--fs-sm);
}

@media (prefers-reduced-motion: reduce){
  .steps.is-stepped .steps__item{transition:none;}
  .steps.is-stepped .steps__shot{transition:none;}
}

@media (max-width:900px){
  .steps__layout{grid-template-columns:1fr;}
  /* Poměr souborů i tady — jiná hodnota by grafiku ořízla.
     Krokový režim se pod 901 px stejně nezapíná. */
  .steps.is-stepped .steps__media{aspect-ratio:1414/2000;}
  /* Přes celou šířku by portrét na mobilu zabral skoro dvě
     obrazovky; omezíme ho výškou a vycentrujeme. */
  .steps__media{
    height:min(62vh,520px);
    width:auto;max-width:100%;
    justify-self:center;
  }
}

/* Jeden řádek „pro koho" — shrnutí skrytých sekcí Kdy se hodí
   a Proč nejde o společenskou hru. */
.values-note{
  margin-top:var(--space-12);
  max-width:var(--measure);
  font-size:var(--fs-lg);
  color:var(--ink-soft);
}

/* ---------------------------------------------------------
   12. JAK KARTY FUNGUJÍ
   --------------------------------------------------------- */
.how{position:relative;overflow:clip;}
/* Soustředné kruhy na pozadí odstraněny na pokyn (2026-08) — na
   světlém podkladu působily jako nechtěná skvrna. Pro návrat stačí
   blok odkomentovat i s pravidlem v mediální dotazu níž.
.how::before{
  content:"";position:absolute;
  left:-24vw;top:60px;
  width:min(76vw,1000px);aspect-ratio:1;
  border:1px solid rgba(107,36,50,.06);
  border-radius:50%;
  box-shadow:0 0 0 88px rgba(107,36,50,.026),
             0 0 0 176px rgba(107,36,50,.018);
  pointer-events:none;
}
*/
.how .wrap{position:relative;z-index:1;}
.how-layout{
  display:grid;
  grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);
  gap:clamp(48px,8vw,130px);
  align-items:start;
}
.how-intro{position:sticky;top:120px;align-self:start;}
.how-intro h2{font-size:var(--fs-2xl);line-height:1.03;}
.how-intro .eyebrow{margin-bottom:var(--space-6);}
.how-intro__note{
  margin-top:var(--space-4);
  font-size:var(--fs-lg);
  color:var(--ink-soft);
}

/* Úvod pravého sloupce — vypadá jako nadpis kroku, ale číslo nemá,
   takže je jasné, že jde o úvodní poznámku, ne o první krok. */
.how-lead{margin-bottom:clamp(40px,5vw,64px);}
.how-lead h3{
  font-family:var(--f-display);font-style:italic;
  /* Stejná velikost i řez jako nadpisy kroků — je to nadpis
     stejné úrovně, jen bez čísla. */
  font-size:clamp(1.4rem,2vw,1.9rem);
  font-weight:500;
}
.how-lead p{
  margin-top:var(--space-4);
  color:var(--ink-soft);line-height:1.75;
  max-width:56ch;
}

/* Kroky bez dělicích linek — drží je pohromadě mezera a kolečko
   s číslem, čáry z nich dělaly tabulku. */
.how-steps{list-style:none;display:grid;gap:clamp(40px,5vw,64px);}
.how-step{padding-block:0;}
.how-step__head{
  display:flex;align-items:center;gap:var(--space-6);
  margin-bottom:var(--space-4);
}
/* Číslo v tenkém kolečku — jediná kruhová forma na stránce,
   proto krokům dodá rytmus i bez linek. */
.how-step__no{
  flex-shrink:0;
  display:grid;place-items:center;
  width:clamp(52px,5vw,64px);aspect-ratio:1;
  border:1px solid var(--line-strong);
  border-radius:50%;
  font-family:var(--f-display);
  font-size:clamp(1.05rem,1.5vw,1.25rem);
  font-style:italic;font-weight:500;
  color:var(--ink);
  letter-spacing:.02em;
}
.how-step h3{font-style:italic;font-size:clamp(1.4rem,2vw,1.9rem);font-weight:500;}
.how-step p{
  max-width:56ch;
  color:var(--ink-soft);line-height:1.75;
}

.how-notes{
  margin-top:var(--space-12);
  padding:var(--space-8);
  background:var(--bordo-tint);
  border-radius:var(--radius-md);
  list-style:none;
  display:grid;gap:var(--space-3);
}
.how-notes li{
  position:relative;padding-left:26px;
  font-size:var(--fs-base);color:var(--ink-soft);
}
.how-notes li::before{
  content:"";position:absolute;left:0;top:.62em;
  width:12px;height:1px;background:var(--gold);
}

@media (max-width:900px){
  /* .how::before{left:-56vw;top:24px;width:132vw;}  — viz výš */
  .how-layout{grid-template-columns:1fr;gap:var(--space-12);}
  .how-intro{position:static;}
}
@media (max-width:560px){
  .how-step__head{gap:var(--space-4);}
}

/* ---------------------------------------------------------
   13. PĚT TEMATICKÝCH OBLASTÍ
   --------------------------------------------------------- */
/* Řádkový seznam, ne mřížka boxů. Pěti položkám by třísloupcová
   mřížka nechala prázdné okno a rámečky kolem každé oblasti
   zbytečně přidávaly linky navíc. */
.topics{border-top:1px solid var(--line);}
.topic{
  display:grid;
  grid-template-columns:56px minmax(0,.85fr) minmax(0,1.35fr);
  align-items:baseline;
  gap:var(--space-6);
  padding-block:var(--space-8);
  border-bottom:1px solid var(--line);
}
.topic__no{
  font-family:var(--f-display);
  font-size:1.1rem;font-style:italic;
  color:var(--gold-text);
  line-height:1;
}
.topic h3{font-size:var(--fs-lg);font-weight:600;}
.topic p{color:var(--ink-soft);font-size:var(--fs-base);line-height:1.7;}

@media (max-width:760px){
  .topic{
    grid-template-columns:40px minmax(0,1fr);
    gap:var(--space-2) var(--space-4);
    padding-block:var(--space-6);
  }
  .topic h3{grid-column:2;}
  .topic p{grid-column:2;}
}

/* ---------------------------------------------------------
   14. FOTOGRAFICKÝ PÁS (parallax)
   Text sedí ve spodní třetině nad tmavým přechodem,
   aby nepřekrýval produkt ani jeho logo.
   --------------------------------------------------------- */
.photoband{
  position:relative;
  /* Přes celou šířku okna; zúžená je jen výška. */
  width:100%;
  margin:0;
  /* Vyšší pás = poměr rámu blíž poměru fotografie, takže je z ní
     vidět víc a působí méně přiblíženě. */
  height:clamp(380px,56vh,620px);
  overflow:hidden;
  background:var(--bordo-deep);
  isolation:isolate;
}

/* Fotografie je pozadí ukotvené k oknu (background-attachment:fixed).
   Díky tomu se roztahuje přes výšku okna, ne přes výšku pásu — proto
   je z kompozice vidět víc a působí vzdáleněji než ořez v <img>. */
.photoband__media{
  position:absolute;inset:0;z-index:0;
  background-repeat:no-repeat;
  background-position:center;
  background-size:cover;
  background-attachment:fixed;
}

/* Zdroje po velikostech — CSS pozadí neumí srcset, takže výběr
   řešíme dotazy na šířku, aby mobil netahal velkou fotografii.
   První deklarace je záloha pro prohlížeče bez image-set(). */
.photoband--box .photoband__media{
  background-image:url('assets/product/box-on-cards-1600.jpg');
  background-image:image-set(
    url('assets/product/box-on-cards-1600.webp') type('image/webp'),
    url('assets/product/box-on-cards-1600.jpg')  type('image/jpeg'));
}
.photoband--cards .photoband__media{
  background-image:url('assets/product/cards-spread-1600.jpg');
  background-image:image-set(
    url('assets/product/cards-spread-1600.webp') type('image/webp'),
    url('assets/product/cards-spread-1600.jpg')  type('image/jpeg'));
}

@media (max-width:800px){
  .photoband--box .photoband__media{
    background-image:url('assets/product/box-on-cards-800.jpg');
    background-image:image-set(
      url('assets/product/box-on-cards-800.webp') type('image/webp'),
      url('assets/product/box-on-cards-800.jpg')  type('image/jpeg'));
  }
  .photoband--cards .photoband__media{
    background-image:url('assets/product/cards-spread-800.jpg');
    background-image:image-set(
      url('assets/product/cards-spread-800.webp') type('image/webp'),
      url('assets/product/cards-spread-800.jpg')  type('image/jpeg'));
  }
}

@media (min-width:1300px){
  .photoband--box .photoband__media{
    background-image:url('assets/product/box-on-cards-2400.jpg');
    background-image:image-set(
      url('assets/product/box-on-cards-2400.webp') type('image/webp'),
      url('assets/product/box-on-cards-2400.jpg')  type('image/jpeg'));
  }
  .photoband--cards .photoband__media{
    background-image:url('assets/product/cards-spread-2400.jpg');
    background-image:image-set(
      url('assets/product/cards-spread-2400.webp') type('image/webp'),
      url('assets/product/cards-spread-2400.jpg')  type('image/jpeg'));
  }
}

/* iOS Safari ukotvené pozadí nepodporuje a na dotykových zařízeních
   bývá trhané — tam se vrátíme k běžnému posouvání s obrazem. */
@media (hover:none),(max-width:800px){
  .photoband__media{background-attachment:scroll;}
}

/* Dvě vrstvy: rovnoměrný černý přeliv přes celou fotografii
   a k tomu ztmavení u spodní hrany kvůli čitelnosti citátu. */
.photoband::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(180deg,
      rgba(0,0,0,.18) 0%,
      rgba(0,0,0,.04) 34%,
      rgba(0,0,0,.46) 76%,
      rgba(0,0,0,.72) 100%),
    rgba(0,0,0,.16);
}

.photoband__copy{
  position:absolute;z-index:2;
  /* Text drží stejnou svislici jako obsah v .wrap. */
  left:max(var(--gutter),calc((100% - var(--container)) / 2 + var(--gutter)));
  right:max(var(--gutter),calc((100% - var(--container)) / 2 + var(--gutter)));
  /* Spodní odsazení určuje, kolik prostoru má text na pohyb —
     script.js si z něj dopočítá rozsah, aby nevyjel z rámu. */
  bottom:clamp(40px,5vw,60px);
  max-width:min(680px,86%);
  margin:0;color:#fff;
  will-change:transform;
}
.photoband__copy blockquote{
  margin:0;
  font-family:var(--f-display);
  font-size:clamp(1.35rem,2.7vw,2.25rem);
  font-weight:500;font-style:italic;
  line-height:1.18;
  letter-spacing:-.015em;
  text-wrap:balance;
  text-shadow:0 2px 20px rgba(43,34,41,.55);
}
.photoband--right .photoband__copy{
  margin-left:auto;text-align:right;
}

@media (prefers-reduced-motion: reduce){
  .photoband__media{background-attachment:scroll;background-position:center;}
  .photoband__copy{transform:none;will-change:auto;}
}

/* ---------------------------------------------------------
   15. UKÁZKA OTÁZEK — ZÁLOHA BEZ JAVASCRIPTU
   --------------------------------------------------------- */
.samples-fallback{
  display:grid;gap:var(--space-6);
  max-width:var(--container-narrow);
  margin:var(--space-12) auto 0;
  list-style:none;
}
.samples-fallback li{
  padding-top:var(--space-4);
  border-top:1px solid var(--line);
  font-family:var(--f-display);
  font-size:var(--fs-lg);
}
.samples-fallback span{
  display:block;margin-bottom:var(--space-2);
  font-family:var(--f-body);
  font-size:var(--fs-xs);font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold-text);
}

/* ---------------------------------------------------------
   16. UKÁZKA OTÁZEK — OTÁČECÍ KARTA
   Otočení karty je jen odhalení — obsah je v HTML od začátku,
   takže funguje i bez JavaScriptu.
   --------------------------------------------------------- */
.trycard .section-head{margin-inline:auto;text-align:center;}

/* Tři karty vedle sebe; tři položky ve třech sloupcích, takže
   nevznikne useknutá poslední řada. */
.trycard__row{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:var(--space-6);
  list-style:none;
}

.trycard__flip{
  display:block;width:100%;
  padding:0;background:none;border:0;
  perspective:1200px;
}
.trycard__flip:focus-visible{outline-offset:6px;}

.trycard__scene{
  position:relative;display:block;
  aspect-ratio:var(--card-ratio);
  transform-style:preserve-3d;
  transition:transform .85s cubic-bezier(.2,.75,.2,1);
}
.trycard__flip[data-flipped="true"] .trycard__scene{transform:rotateY(180deg);}

.trycard__face{
  position:absolute;inset:0;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:var(--space-4);
  padding:clamp(22px,4vw,40px);
  text-align:center;
  border-radius:var(--radius-card);
  backface-visibility:hidden;
  box-shadow:var(--shadow-md);
  background:
    linear-gradient(118deg,#F4F0F5 0%,var(--lavender) 38%,#EFE6E8 62%,#F6F2F1 100%);
}
.trycard__face--question{transform:rotateY(180deg);}

.trycard__brand,
.trycard__tagline{
  font-family:var(--f-display);
  font-style:italic;
  color:var(--gold-text);
}
.trycard__brand{font-size:clamp(1rem,1.8vw,1.15rem);letter-spacing:.04em;}
.trycard__tagline{font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.3;max-width:22ch;}
.trycard__hint{
  margin-top:var(--space-4);
  padding:9px 20px;
  border:1px solid var(--line-strong);border-radius:999px;
  font-size:var(--fs-xs);font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-soft);
  transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast);
}
.trycard__flip:hover .trycard__hint{
  background:var(--bordo);border-color:var(--bordo);color:var(--ink-invert);
}

.trycard__topic{
  font-family:var(--f-display);font-style:italic;
  font-size:clamp(.9rem,1.6vw,1.05rem);
  letter-spacing:.06em;
  color:var(--gold-text);
}
.trycard__q{
  font-family:var(--f-display);
  font-weight:600;
  font-size:clamp(1.15rem,2.4vw,1.7rem);
  line-height:1.28;
  max-width:26ch;
  color:var(--ink);
  text-wrap:balance;
}

.trycard__after{
  display:grid;justify-items:center;
  margin-top:var(--space-12);
}
.trycard__prompt{
  font-family:var(--f-display);font-style:italic;
  font-size:var(--fs-xl);
  color:var(--ink);
  text-align:center;
}
.trycard__rest{
  margin-top:var(--space-6);
  font-size:var(--fs-sm);color:var(--ink-soft);
  text-align:center;
}

/* ---- Sloučená sekce Pět oblastí + ukázky otázek ----
   Karta za každou oblast. Na širokém displeji řada 3 + 2 na střed:
   pět stejně širokých sloupců by otázku stlačilo pod čitelnou šířku
   a nepravidelnost drží rytmus stránky. */
@media (min-width:1000px){
  .trycard__row--five{grid-template-columns:repeat(6,1fr);}
  .trycard__row--five > li{grid-column:span 2;}
  .trycard__row--five > li:nth-child(4){grid-column:2 / span 2;}
}

/* Karta bez doložené otázky — stejný vzhled, žádné otáčení.
   Jakmile bude otázka potvrzená, prvek se převede na tlačítko
   se stejnou strukturou jako otočné karty. */
.trycard__static{display:block;width:100%;}
.trycard__static .trycard__scene{transform:none;}

.trycard__no{
  font-family:var(--f-display);font-style:italic;
  font-size:1.1rem;
  color:var(--gold-text);
}
.trycard__area{
  font-family:var(--f-display);
  font-size:clamp(1.25rem,2vw,1.5rem);
  line-height:1.2;
  color:var(--ink);
}
.trycard__desc{
  font-size:var(--fs-sm);
  line-height:1.55;
  color:var(--ink-soft);
  max-width:26ch;
}

/* Bez 3D otáčení, jen prolnutí. */
@media (prefers-reduced-motion: reduce){
  .trycard__scene{transition:none;}
  .trycard__flip[data-flipped="true"] .trycard__scene{transform:none;}
  .trycard__face{backface-visibility:visible;transition:opacity .2s ease;}
  .trycard__face--question{transform:none;opacity:0;}
  .trycard__flip[data-flipped="true"] .trycard__face--cover{opacity:0;}
  .trycard__flip[data-flipped="true"] .trycard__face--question{opacity:1;z-index:1;}
}

/* ---------------------------------------------------------
   16b. PĚT OBLASTÍ — BALÍČEK S VÝBĚREM
   Řada pěti tlačítek s oblastmi, pod nimi jedna karta, ze které
   se otázka vytáhne. Nahradilo mřížku pěti otáčecích karet
   (2026-08, na pokyn: „čistší"). Styly mřížky zůstávají v sekci 16,
   protože je pořád používá skrytá #oblasti-karty-puvodni.

   Barvy nejsou nahodilé: rub karty je bordó jako skutečná krabička,
   líc s otázkou má tentýž levandulový přechod jako otáčecí karty,
   tedy jako skutečné karty v sadě.

   VÝCHOZÍ STAV JE BEZ SKRIPTU ČITELNÝ — pět oblastí i s otázkami
   pod sebou. Kartu z toho dělá až třída .is-deck, kterou přidává
   script.js. Stejný princip jako .is-stepped u sekce „Čtyři věci".
   --------------------------------------------------------- */
.deck .section-head{margin-inline:auto;text-align:center;}

/* ---- Volba oblasti ---- */
.deck__areas{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:var(--space-4);
  list-style:none;
  margin:clamp(40px,5vw,64px) 0 0;padding:0;
}
/* Dlaždice nesou tentýž levandulově růžový přechod jako líc karty
   a jako skutečné karty v sadě — bílé působily vedle nich cize.
   Je to stejný předpis jako u .deck__list níž; při změně palety
   měnit obě místa. */
.deck__area{
  display:flex;flex-direction:column;align-items:center;
  gap:var(--space-3);
  height:100%;
  padding:var(--space-6) var(--space-4);
  background:
    linear-gradient(118deg,#F4F0F5 0%,var(--lavender) 38%,#EFE6E8 62%,#F6F2F1 100%);
  border:1px solid var(--line);
  border-radius:var(--radius-md);
  color:var(--ink);
  text-align:center;text-decoration:none;
  transition:filter var(--t-fast),border-color var(--t-fast),color var(--t-fast);
}
/* Na barevné ploše nejde zvýraznit prohloubením pozadí bez míchání
   dalšího odstínu — proto jemné ztmavení celé dlaždice. */
.deck__area:hover{border-color:var(--line-strong);filter:brightness(.975);}
/* Kolečko pod ikonou musí být světlejší než podklad, ne šedé —
   šedá na levandulové zbytní do špinava. */
.deck__icon{
  display:grid;place-items:center;
  width:42px;height:42px;
  border-radius:50%;
  background:rgba(255,255,255,0.62);
  color:var(--ink-soft);
  transition:background var(--t-fast),color var(--t-fast);
}
.deck__label{
  font-size:var(--fs-sm);font-weight:500;
  line-height:1.35;
  text-wrap:balance;
}

/* Vybraná oblast: plná bordó jako tlačítko, ne jen linka —
   při pěti dlaždicích vedle sebe je slabé zvýraznění k nepoznání. */
.deck__area[aria-pressed="true"]{
  background:var(--bordo);
  border-color:var(--bordo);
  color:var(--ink-invert);
}
.deck__area[aria-pressed="true"] .deck__icon{
  background:rgba(248,249,250,0.14);
  color:var(--ink-invert);
}

/* Na užších displejích ikona vlevo vedle názvu, ne nad ním.
   Pět dlaždic se svislým rozvržením zabralo 444 px a s kartou
   se pak na menší telefon nevešla ani jedna obrazovka — a smysl
   celé sekce je vidět tlačítka i kartu naráz. Řádkové rozvržení
   je zkrátí zhruba na polovinu. */
@media (max-width:900px){
  .deck__areas{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);}
  .deck__area{
    flex-direction:row;align-items:center;
    gap:var(--space-3);
    padding:var(--space-3) var(--space-4);
    text-align:left;
  }
  .deck__icon{width:34px;height:34px;flex:0 0 auto;}
  .deck__icon svg{width:17px;height:17px;}
}
@media (max-width:560px){
  .deck__areas{grid-template-columns:1fr;}
  /* Mezera mezi tlačítky a kartou se na malém displeji krátí —
     rozhoduje, jestli se obojí vejde na jednu obrazovku. */
  .deck__stage{margin-top:var(--space-6);}
}

/* ---- Karta ---- */
.deck__stage{
  position:relative;
  width:min(100%,420px);
  margin:clamp(40px,5vw,64px) auto 0;
}

/* Stín pod kartou. Dvě vrstvy místo jedné: úzká těsně pod hranou
   kartu „postaví" na plochu, široká a měkká jí dá výšku. Jednolitý
   --shadow-md působil na fotografii karty ploše.

   Fotografie jsou ořezané DOVNITŘ karty (bez bílého lemu a bez
   zaobleného rohu), takže roh dělá až tohle zaoblení — bez něj by
   karta měla ostré rohy, které skutečná karta nemá. */
:root{
  --stin-karty:
    0 1px 3px rgba(43,34,41,.07),
    0 10px 28px -8px rgba(43,34,41,.20);
}

/* Rub karty je fotografie skutečné karty, ne kreslená napodobenina
   (2026-08). Bordó rub s ražbou, který tu byl předtím, vypadal dobře,
   ale sliboval něco jiného, než zákazník dostane. */
.deck__back{
  position:relative;
  display:grid;
  place-items:center;
  aspect-ratio:1200/757;
  border-radius:var(--radius-card);
  overflow:hidden;
  box-shadow:var(--stin-karty);
}
.deck__back img{
  grid-area:1 / 1;
  display:block;width:100%;height:100%;
  object-fit:cover;
}
/* Ovládání pod kartou, ne na ní. Tlačítko položené na rubu
   překrývalo vytištěný text a působilo nalepeně. */
.deck__ovladani{
  display:grid;
  justify-items:center;
  margin-top:var(--space-8);
}

/* ---- Seznam otázek ----
   Bez .is-deck je to obyčejný seznam: pět oblastí i s otázkami
   pod sebou, plně čitelný a bez jediného skriptu. */
.deck__list{
  list-style:none;
  max-width:var(--container-narrow);
  margin:clamp(32px,4vw,48px) auto 0;padding:0;
  display:grid;gap:var(--space-4);
}
/* Bez skriptu: pět karet pod sebou jako obyčejné obrázky. Otázka je
   vytištěná na kartě, takže seznam zůstane čitelný i bez sazby. */
.deck__slide{
  display:block;
  border-radius:var(--radius-card);
  overflow:hidden;
  box-shadow:var(--stin-karty);
}
.deck__slide img{
  display:block;width:100%;height:auto;
}
.deck__no{
  font-family:var(--f-display);font-style:italic;
  font-size:1.1rem;color:var(--gold-text);
}
.deck__topic{
  font-family:var(--f-display);font-style:italic;
  font-size:clamp(.9rem,1.6vw,1.05rem);
  letter-spacing:.06em;
  color:var(--gold-text);
}
.deck__q{
  font-family:var(--f-display);font-weight:600;
  font-size:clamp(1.15rem,2.4vw,1.6rem);
  line-height:1.28;
  color:var(--ink);
  text-wrap:balance;
}

/* ---- Interaktivní režim (třídu přidává script.js) ----

   Rub a líc leží na sobě přes mřížku, ne přes position:absolute.
   Důvod: rub má poměr 8/5 jako skutečná karta, ale jeho obsah
   (ražba, značka, tlačítko) je při úzké kartě vyšší — absolutní
   pozicování ho nechalo přerůst líc o 18 px a karta měla dvě
   různé výšky. V jedné buňce mřížky si obě strany vezmou výšku
   té vyšší.

   Poměr 8/5 drží neviditelná rozpěra ve stejné buňce, ne samotné
   strany karty: kdyby ho měly ony, dopočítal by se z natažené
   výšky zpátky šířka 450 px a karta by ze scény vylezla o 30 px.
   Rozpěra tak funguje jako spodní mez, obsah smí přerůst. */
/* minmax(0,1fr), ne auto: automatický sloupec se nafoukl podle
   rozpěry (poměr × natažená výška = 450 px) a karta přerostla
   scénu. Pevná šířka sloupce ten kruh přetne. */
.deck.is-deck .deck__stage{display:grid;grid-template-columns:minmax(0,1fr);}
.deck.is-deck .deck__stage > *{grid-area:1 / 1;}
.deck.is-deck .deck__stage::before{
  content:"";
  grid-area:1 / 1;
  width:100%;
  /* Poměr skutečné karty, ne token --card-ratio: fotografie mají
     1200/757 a rozpěra jim musí odpovídat, jinak by ořez ukrojil
     text vytištěný na kartě. */
  aspect-ratio:1200/757;
}

.deck.is-deck .deck__list{
  position:relative;
  max-width:none;margin:0;
  display:block;
  aspect-ratio:auto;
  border-radius:var(--radius-card);
  box-shadow:var(--stin-karty);
  overflow:hidden;
  /* Podklad už nedělá levandulový přechod — líc je fotografie
     skutečné karty. Barva zůstává jen jako podklad, než se
     obrázek načte. */
  background:var(--lavender);
}
/* Přechod mezi otázkami je křížové prolnutí s jemným nadzvednutím.
   Klíčová je `visibility 0s linear .5s` u odcházející otázky:
   bez zpožděné změny viditelnosti zmizí skokem hned na začátku
   a prolnutí není vidět — nová otázka se jen objeví do prázdna.
   Křivka je stejná jako u otáčení karet v sekci 16, aby pohyb
   na stránce působil jako jedna rodina. */
.deck.is-deck .deck__slide{
  position:absolute;inset:0;
  display:block;
  padding:0;
  background:none;border:0;border-radius:0;box-shadow:none;
  opacity:0;visibility:hidden;
  transform:translateY(10px) scale(.985);
  transition:
    opacity .5s ease,
    transform .5s cubic-bezier(.2,.75,.2,1),
    visibility 0s linear .5s;
}
.deck.is-deck .deck__slide.is-active{
  opacity:1;visibility:visible;
  transform:none;
  transition:
    opacity .5s ease,
    transform .5s cubic-bezier(.2,.75,.2,1),
    visibility 0s;
}
.deck.is-deck .deck__slide:focus-visible{outline-offset:-6px;}

/* Rub leží na líci a při vytažení se odkryje. */
.deck.is-deck .deck__back{
  z-index:2;
  aspect-ratio:auto;
  transition:
    opacity .5s ease,
    transform .5s cubic-bezier(.2,.75,.2,1),
    visibility 0s;
}
/* Táž zpožděná viditelnost jako u otázek — jinak rub zmizí skokem
   a odkrytí karty ztratí plynulost. */
.deck.is-deck[data-drawn="true"] .deck__back{
  opacity:0;visibility:hidden;pointer-events:none;
  transform:scale(.965);
  transition:
    opacity .5s ease,
    transform .5s cubic-bezier(.2,.75,.2,1),
    visibility 0s linear .5s;
}

.deck__reset{
  display:block;
  padding:0;background:none;border:0;
  font-size:var(--fs-sm);color:var(--ink-soft);
  text-decoration:underline;text-underline-offset:3px;
  cursor:pointer;
}
.deck__reset:hover{color:var(--bordo);}

.deck__rest{
  margin-top:var(--space-8);
  font-size:var(--fs-sm);color:var(--ink-soft);
  text-align:center;
}

@media (prefers-reduced-motion: reduce){
  .deck.is-deck .deck__slide,
  .deck.is-deck .deck__slide.is-active,
  .deck.is-deck .deck__back,
  .deck.is-deck[data-drawn="true"] .deck__back{transition:none;transform:none;}
}

/* ---------------------------------------------------------
   17. PRODUKT
   --------------------------------------------------------- */
/* Stejný princip jako u tónovaných sekcí — odstín místo linky. */
.product{background:var(--grey-tint);}

/* Galerie je nejdůležitější obrazovka před nákupem, proto dostává
   širší kontejner i větší podíl sloupce než textová část. */
.product .wrap{
  max-width:var(--container-wide);
  display:grid;
  grid-template-columns:minmax(0,1.58fr) minmax(0,1fr);
  gap:clamp(36px,4.5vw,64px);
  align-items:start;
}

/* Náhledy ve svislém sloupci vlevo, hlavní fotografie vpravo.
   Oba prvky mají řádek určený napevno — jinak by je automatické
   umisťování gridu poslalo pod sebe, protože v HTML je hlavní
   fotografie první, ale patří do druhého sloupce. */
.gallery{
  display:grid;
  grid-template-columns:clamp(64px,6vw,88px) minmax(0,1fr);
  gap:var(--space-3);
  align-items:start;
}
.gallery-main{
  grid-column:2;grid-row:1;
  position:relative;
  border-radius:var(--radius-md);
  overflow:hidden;
  background:var(--surface);
  box-shadow:var(--shadow-md);
}
.gallery-main img{width:100%;aspect-ratio:1/1;object-fit:cover;}

/* Šipky vyjedou při najetí myší — a stejně tak při focusu,
   aby ovládání nebylo dostupné pouze hoverem (protokol §14).
   Světlý podklad je tu kvůli fotkám na tmavém bordó pozadí,
   kde by samotná tenká šipka zanikla. */
.gallery-arrow{
  position:absolute;top:50%;z-index:2;
  display:grid;place-items:center;
  width:44px;height:44px;
  border:0;border-radius:50%;
  background:rgba(248,249,250,.86);
  backdrop-filter:blur(6px);
  color:var(--ink);
  opacity:0;
  transform:translateY(-50%) scale(.94);
  transition:opacity var(--t-fast),transform var(--t-fast),background var(--t-fast);
}
.gallery-arrow--prev{left:12px;}
.gallery-arrow--next{right:12px;}
.gallery-main:hover .gallery-arrow,
.gallery-main:focus-within .gallery-arrow{
  opacity:1;
  transform:translateY(-50%) scale(1);
}
.gallery-arrow:hover{background:#fff;}
.gallery-arrow:focus-visible{opacity:1;transform:translateY(-50%) scale(1);}

/* Na dotykových zařízeních není hover — šipky nechme vidět. */
@media (hover:none){
  .gallery-arrow{opacity:1;transform:translateY(-50%) scale(1);}
}

.gallery-thumbs{
  grid-column:1;grid-row:1;
  display:flex;flex-direction:column;gap:var(--space-3);
  list-style:none;
}
.gallery-thumbs button{
  display:block;width:100%;padding:0;overflow:hidden;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  opacity:.6;
  transition:opacity var(--t-fast),border-color var(--t-fast);
}
.gallery-thumbs button:hover{opacity:.9;}
.gallery-thumbs button[aria-current="true"]{opacity:1;border-color:var(--bordo);}
.gallery-thumbs img{width:100%;aspect-ratio:1;object-fit:cover;}

.product-info > * + *{margin-top:var(--space-6);}
.price-row{display:flex;align-items:baseline;gap:var(--space-4);flex-wrap:wrap;}
.price{
  font-family:var(--f-display);
  font-size:2.4rem;font-weight:600;line-height:1;
}
.price-note{font-size:var(--fs-sm);color:var(--ink-soft);}

/* Popisek nad parametry — pojmenuje, co je to za výčet. */
.specs__label{
  margin-bottom:var(--space-3);
  font-size:var(--fs-xs);font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;
  color:var(--gold-text);
}
.specs{list-style:none;border-top:1px solid var(--line);}
.specs li{
  display:flex;justify-content:space-between;gap:var(--space-4);
  padding-block:14px;
  border-bottom:1px solid var(--line);
  font-size:var(--fs-sm);
}
.specs li > span:first-child{color:var(--ink-soft);}
.specs li > span:last-child{font-weight:500;text-align:right;}

/* Jistoty pod tlačítkem — drobná sazba, ikona ve zlaté, jeden
   řádek na položku. Mají uklidnit, ne křičet. */
.assurances{
  list-style:none;
  margin-top:var(--space-8);
  padding-top:var(--space-6);
  border-top:1px solid var(--line);
  display:grid;gap:var(--space-4);
}
.assurances li{
  display:grid;
  grid-template-columns:20px minmax(0,1fr);
  gap:var(--space-4);
  align-items:start;
  font-size:var(--fs-sm);
  line-height:1.55;
  color:var(--ink-soft);
}
.assurances__icon{color:var(--gold-text);margin-top:1px;}
.assurances b{color:var(--ink);font-weight:600;}
.assurances a{color:var(--bordo);text-underline-offset:3px;}

.buy-row{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;}
.qty{
  display:flex;align-items:center;
  border:1px solid var(--line-strong);border-radius:var(--radius-sm);
}
.qty button{
  width:46px;height:48px;
  background:none;border:0;color:var(--ink);
  font-size:1.15rem;line-height:1;
}
.qty button:hover:not([disabled]){background:rgba(43,34,41,.05);}
.qty button[disabled]{opacity:.35;cursor:not-allowed;}
.qty output{
  min-width:40px;text-align:center;
  font-weight:600;font-variant-numeric:tabular-nums;
}
.buy-row .btn-primary{flex:1;min-width:200px;}

.availability{
  display:flex;align-items:center;gap:10px;
  font-size:var(--fs-sm);color:var(--ink-soft);
}
.availability::before{
  content:"";width:8px;height:8px;border-radius:50%;
  background:var(--gold);flex-shrink:0;
}
/* Docházející zásoba a vyprodáno. Barvu nese jen tečka a sytost
   textu — celý řádek červeně by u nákupního bloku působil jako
   chybová hláška, ne jako informace o dostupnosti. */
.availability--low{color:var(--ink);}
.availability--low::before{background:var(--bordo);}
.availability--out{color:var(--ink);}
.availability--out::before{background:var(--error);}

@media (max-width:900px){
  .product .wrap{grid-template-columns:1fr;}
}

/* Na úzké obrazovce by svislý sloupec ubral hlavní fotografii
   příliš šířky — náhledy proto přejdou pod ni do řádku. */
@media (max-width:620px){
  .gallery{grid-template-columns:minmax(0,1fr);}
  .gallery-main{grid-column:1;grid-row:1;}
  .gallery-thumbs{
    grid-column:1;grid-row:2;
    flex-direction:row;
  }
  .gallery-thumbs li{flex:1;}
}

/* ---------------------------------------------------------
   18. PRO KOHO / PROČ JSOU JINÉ
   --------------------------------------------------------- */
.checklist{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:var(--space-6) var(--space-12);
  list-style:none;
}
.checklist li{
  position:relative;padding-left:34px;
  color:var(--ink-soft);line-height:1.7;
}
.checklist li::before{
  content:"";position:absolute;left:0;top:.55em;
  width:18px;height:1px;background:var(--gold);
}
.checklist li b{color:var(--ink);font-weight:600;}

/* ---------------------------------------------------------
   19. PŘÍBĚH ZNAČKY
   --------------------------------------------------------- */
.story .wrap{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:clamp(40px,6vw,80px);
  align-items:center;
}
/* Rám drží zaoblení a stín; popisek leží pod fotkou uvnitř rámu,
   proto overflow:hidden zůstává. */
.story figure{
  margin:0;
  border-radius:var(--radius-lg);
  overflow:hidden;
  box-shadow:var(--shadow-md);
  background:var(--surface);
}
/* Bez ořezu na 3/4. Původně proto, že dodaná fotografie měla dole
   ručně psaný podpis, který by ořez usekl. Podpis byl mezitím
   odstraněn (jméno nese popisek pod fotkou), ale poměr 884/1250
   sedí v obou rozvrženích lépe než ořez, tak zůstal. Kdyby se
   někdy vracel ořez na 3/4, je to teď bezpečné — jen přidat
   object-position s posunem k hlavě, ať se nezkrátí čelo. */
.story figure img{
  display:block;
  width:100%;height:auto;
}
.story__caption{
  padding:var(--space-4) var(--space-6) var(--space-6);
  font-family:var(--f-display);
  font-size:var(--fs-lg);
  color:var(--ink);
  text-align:center;
}
/* Role na vlastním řádku, drobná — jméno má zůstat hlavní. */
.story__caption span{
  display:block;
  margin-top:2px;
  font-family:var(--f-body);
  font-size:var(--fs-xs);
  letter-spacing:.11em;text-transform:uppercase;
  color:var(--gold-text);
}
.story-copy > * + *{margin-top:var(--space-6);}
.story-link{margin-top:var(--space-8);}
.story-copy p{color:var(--ink-soft);max-width:var(--measure);}
@media (max-width:860px){
  .story .wrap{grid-template-columns:1fr;}
}

/* ---------------------------------------------------------
   19b. KOMU DAROVAT — typografický blok s vsazenými fotkami
   Slova tečou jako jeden odstavec a fotografie jsou jeho součástí,
   ne ozdoba vedle. Proto jsou vsazené jako inline prvky s výškou
   odvozenou od velikosti písma (em), aby držely s řádkem i při
   změně velikosti sazby.
   --------------------------------------------------------- */
.lifeline .wrap{max-width:1040px;text-align:center;}
.lifeline__eyebrow{display:inline-flex;}
.lifeline h2{margin-top:var(--space-4);}
.lifeline__list{
  margin-top:clamp(36px,4.5vw,64px);
  font-family:var(--f-display);
  font-weight:600;
  color:var(--ink);
  letter-spacing:-.02em;
  /* Stejná velikost jako nadpisy kroků v sekci „Jak fungují“. */
  font-size:clamp(1.5rem,2.2vw,2.1rem);
  line-height:1.35;
  text-wrap:balance;
}
/* Příležitosti jako oválky pod výčtem — konkrétní vodítko, kdy
   karty koupit, pro toho, kdo si to sám nepřebere. */
.occasions{
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:var(--space-3);
  list-style:none;
  margin-top:clamp(36px,4.5vw,56px);
}
.occasions li{
  padding:9px 20px;
  border:1px solid rgba(107,36,50,.22);
  border-radius:999px;
  font-size:var(--fs-sm);
  color:var(--bordo);
}
.lifeline__shot{
  display:inline-block;
  vertical-align:middle;
  width:1.85em;height:.86em;
  margin-inline:.16em;
  /* Posun nahoru srovná optický střed obrázku s dotažnicí písma —
     bez něj fotka na účaří „padá“ pod řádek. */
  transform:translateY(-.06em);
  border-radius:999px;
  overflow:hidden;
  background:var(--cream-deep);
}
.lifeline__shot img{
  width:100%;height:100%;
  object-fit:cover;
}
.lifeline__note{
  margin-top:clamp(32px,4vw,56px);
  margin-inline:auto;
  max-width:52ch;
  color:var(--ink-soft);
  font-size:var(--fs-lg);
}

@media (max-width:560px){
  /* Na úzkém displeji by pilulky roztrhaly řádky na jednotlivá
     slova — zůstávají, ale užší a s menším odsazením. */
  .lifeline__shot{width:1.5em;margin-inline:.1em;}
}

/* ---------------------------------------------------------
   20. DÁREK
   --------------------------------------------------------- */
.gift .wrap{max-width:var(--container-narrow);text-align:center;}
.gift h2{font-style:italic;}
.gift .lede{margin-top:var(--space-6);color:var(--on-dark-muted);}
.gift-occasions{
  display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3);
  list-style:none;margin-top:var(--space-8);
}
.gift-occasions li{
  padding:8px 18px;
  border:1px solid var(--line-invert);
  border-radius:999px;
  font-size:var(--fs-sm);
  color:var(--on-dark);
}

/* ---------------------------------------------------------
   21. FOTOGRAFIE KARET (karusel)
   --------------------------------------------------------- */
.carousel{position:relative;}
.carousel__viewport{
  display:flex;gap:var(--space-6);
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  padding-bottom:var(--space-4);
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.carousel__item{
  flex:0 0 min(460px,82%);
  scroll-snap-align:center;
  margin:0;
}
.carousel__item img{
  width:100%;aspect-ratio:3/2;object-fit:cover;
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-md);
}
.carousel__item figcaption{
  margin-top:var(--space-3);
  font-family:var(--f-display);font-style:italic;
  font-size:var(--fs-base);
  color:var(--gold-text);
}
.carousel__nav{
  display:flex;gap:var(--space-3);
  margin-top:var(--space-6);
}
.carousel__nav button{
  width:48px;height:48px;
  display:grid;place-items:center;
  background:var(--surface);
  border:1px solid var(--line-strong);border-radius:50%;
  color:var(--ink);
  transition:background var(--t-fast),border-color var(--t-fast);
}
.carousel__nav button:hover{background:var(--bordo);color:var(--ink-invert);border-color:var(--bordo);}

/* Celoplošná varianta: pás jede skutečně od hrany k hraně okna,
   bez bočního odsazení — na širokém monitoru nesmí vlevo zůstat
   prázdný pruh. Šipky zůstávají zarovnané s obsahem stránky.

   Posuvník je skrytý (posun obstarává animace, šipky a dotyk)
   a scroll-snap vypnutý — přiskakování by s rovnoměrným během
   bojovalo o pozici. */
.carousel--full .carousel__viewport{
  padding-inline:0;
  padding-bottom:0;
  scroll-snap-type:none;
  scrollbar-width:none;
  /* Přiřazení scrollLeft respektuje scroll-behavior — plynulý běh
     i neviditelný přeskok mezi sadami vyžadují okamžitý posun.
     Šipky si říkají o smooth explicitně ve skriptu. */
  scroll-behavior:auto;
}
.carousel--full .carousel__viewport::-webkit-scrollbar{display:none;}
.carousel--full .carousel__item{flex:0 0 min(560px,86vw);}

/* Třídu carousel--marquee přidává skript: snímky přesune do pásu
   .carousel__track posouvaného přes transform (subpixelově hladký
   běh po kompozitoru). Bez JavaScriptu třída nevznikne a viewport
   zůstane obyčejně posuvný, takže obsah je dostupný vždy. */
.carousel--marquee .carousel__viewport{
  display:block;
  overflow:hidden;
  /* Vodorovný posun řeší tažení ve skriptu, svislé rolování
     stránky zůstává prohlížeči. */
  touch-action:pan-y;
  cursor:grab;
}
.carousel--marquee .carousel__viewport:active{cursor:grabbing;}
.carousel--marquee .carousel__track{
  display:flex;
  gap:var(--space-6);
  width:max-content;
  will-change:transform;
}
.carousel--marquee .carousel__item img{
  user-select:none;
  -webkit-user-drag:none;
}
.carousel--full .carousel__nav{
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

@media (prefers-reduced-motion: reduce){
  .carousel__viewport{scroll-behavior:auto;}
}

/* ---------------------------------------------------------
   22. STOH KARET (reference / náhled)
   Tři karty přes sebe, prostřední aktivní. Bez GSAPu se
   rozloží vedle sebe, takže obsah zůstane dostupný vždy.
   --------------------------------------------------------- */
.stack{position:relative;display:grid;place-items:center;}
.stack__viewport{
  position:relative;
  width:min(460px,80vw);
  aspect-ratio:3/2;
  transform-style:preserve-3d;
}
.stack__card{
  position:absolute;inset:0;
  padding:14px 14px 46px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-md);
  transform-origin:50% 85%;
  will-change:transform;
}
.stack__card img{
  width:100%;height:100%;object-fit:cover;
  border-radius:var(--radius-sm);
  background:var(--lavender);
}

/* Karta s referencí místo fotografie. */
.stack__card--quote{
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:var(--space-6);
  padding:clamp(24px,4vw,40px);
  text-align:center;
}
.stack__card--quote blockquote{
  margin:0;
  font-family:var(--f-display);
  font-size:clamp(1.1rem,2vw,1.4rem);
  font-style:italic;line-height:1.35;
  color:var(--ink);
  text-wrap:balance;
}
.stack__card--quote cite{
  font-style:normal;
  font-size:var(--fs-xs);
  letter-spacing:.1em;text-transform:uppercase;
  color:var(--gold-text);
}

/* ---- Reference jako hotové obrázky ----

   Ohlasy dodala majitelka jako hotovou grafiku (text, jméno
   i hvězdičky jsou vypálené v obrázku). Karta je proto celá
   obrázek — bez bílého rámu a bez spodního pruhu na popisek,
   které slouží fotografiím produktu.

   Poměr stohu se srovnává na 1000/707 podle dodaných souborů.
   Při 3/2 by object-fit:cover ukrojil kus grafiky u okraje,
   a protože je v ní text, uřízl by konce řádků. */
.reference .stack__viewport{aspect-ratio:1000/707;}
/* Bez rámečku i bílého podkladu: grafika má vlastní pozadí až do
   kraje, takže vlasová linka kolem ní působila jako bílý lem
   nalepený na fotku. Stín zůstává — ten kartu z plochy zvedá. */
.stack__card--image{
  padding:0;
  overflow:hidden;
  border:0;
  background:none;
}
.stack__card--image img{
  display:block;
  width:100%;height:100%;
  object-fit:cover;
  border-radius:var(--radius-md);
  background:var(--lavender);
}
/* POZOR: závoj neaktivních karet (::after) se NASTAVUJE NÍŽ, až
   za základním pravidlem .stack__card::after — sem ho dávat nelze.
   Obě pravidla mají stejnou specificitu, takže rozhoduje pořadí
   v souboru, a tenhle blok stojí nad ním. */

/* Pravidlo .reference__verify tu bylo pro zákonnou informaci
   o ověřování recenzí, když stála pod stohem. Od 2026-08 stojí
   jako úvodní řádek sekce a bere styl z .section-head p, takže
   vlastní pravidlo už nepotřebuje. */
.stack__card::after{
  content:"";position:absolute;inset:14px 14px 46px;z-index:1;
  pointer-events:none;background:rgba(43,34,41,.28);
  /* Kopíruje zaoblení fotografie, jinak by ztmavení přečnívalo přes rohy. */
  border-radius:var(--radius-sm);
  opacity:0;transition:opacity var(--t-normal);
}
/* U textové karty není uvnitř rámu co ztmavovat — závoj proto
   pokrývá celou kartu a je světlý, aby text jen ustoupil do pozadí.
   Musí stát až za základním pravidlem, jinak by ho nepřebilo. */
.stack__card--quote::after{
  inset:0;
  border-radius:var(--radius-md);
  background:rgba(248,249,250,.74);
}

/* Obrázkové karty s ohlasy: závoj SVĚTLÝ, ne tmavý.

   Základní pravidlo výš ztmavuje o 28 % černé — to je počítané
   na produktové fotografie, kde tmavší podklad opravdu vypadá
   jako hloubka. Ohlasy mají ale podklad světlý a jemný, takže
   z nich černý závoj udělal špinavé šedé obdélníky, ne karty
   ležící vzadu.

   Světlý závoj v barvě stránky funguje obráceně: zadní karty se
   do pozadí vytratí, místo aby zšedly. Krytí 0,5 je hranice —
   níž je rozdíl mezi přední a zadní kartou k nepoznání, výš
   z ohlasu zbyde skoro prázdná plocha.

   Musí stát ZA základním pravidlem, jinak ho nepřebije: stejná
   specificita, rozhoduje pořadí. Závoj jde přes celou plochu,
   ne jen přes vnitřní rám — ten tu žádný není. */
.stack__card--image::after{
  inset:0;
  border-radius:var(--radius-md);
  background:rgba(247,247,247,.5);
}

.stack__card[data-position=left]::after,
.stack__card[data-position=right]::after{opacity:1;}
.stack__card[data-position=active]{z-index:3;}
.stack__card[data-position=right]{z-index:2;}
.stack__card[data-position=left]{z-index:1;}
.stack__caption{
  position:absolute;left:14px;right:14px;bottom:16px;
  text-align:center;
  font-family:var(--f-display);font-style:italic;
  font-size:var(--fs-base);color:var(--gold-text);
}
.stack__arrow{
  position:absolute;z-index:5;top:50%;transform:translateY(-50%);
  width:48px;height:48px;
  display:grid;place-items:center;
  background:var(--surface);color:var(--ink);
  border:1px solid var(--line-strong);border-radius:50%;
  transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast);
}
.stack__arrow:hover{background:var(--bordo);color:var(--ink-invert);border-color:var(--bordo);}
.stack__arrow--prev{left:0;}
.stack__arrow--next{right:0;}
@media (max-width:620px){
  .stack__arrow{top:auto;bottom:-26px;transform:none;width:44px;height:44px;}
  .stack__arrow--prev{left:calc(50% - 54px);}
  .stack__arrow--next{right:calc(50% - 54px);}
  .stack{padding-bottom:var(--space-12);}
}

/* ---------------------------------------------------------
   23. FAQ
   --------------------------------------------------------- */
/* Dvousloupcové rozvržení: vlevo nadpis s výzvou ke kontaktu,
   vpravo dotazy jako samostatné dlaždice. */
.faq__layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);
  gap:clamp(40px,6vw,96px);
  align-items:start;
}
.faq__intro{position:sticky;top:calc(var(--header-sticky) + 32px);}
.faq__intro .section-head{margin-bottom:var(--space-6);}
.faq__intro p{
  color:var(--ink-soft);
  max-width:34ch;
  margin-bottom:var(--space-6);
}

.faq-list{list-style:none;display:grid;gap:var(--space-3);}
/* Dlaždice je o odstín tmavší než pozadí stránky — jediné místo,
   kde se plocha používá místo linky, aby seznam dotazů držel tvar. */
.faq-item{
  background:var(--grey-deep);
  border-radius:var(--radius-md);
  transition:background var(--t-fast);
}
.faq-item:hover{background:var(--grey-deeper);}
.faq-q{
  width:100%;
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  padding:18px clamp(18px,2vw,26px);
  background:none;border:0;
  text-align:left;
  font-weight:600;font-size:var(--fs-base);color:var(--ink);
}
.faq-q:hover{color:var(--bordo);}
.faq-arrow{
  display:grid;place-items:center;
  flex-shrink:0;
  color:var(--bordo);
  transition:transform var(--t-normal);
}
.faq-q[aria-expanded="true"] .faq-arrow{transform:rotate(180deg);}
.faq-a{
  display:grid;grid-template-rows:0fr;
  transition:grid-template-rows var(--t-normal);
}
.faq-a[data-open="true"]{grid-template-rows:1fr;}
.faq-a > div{overflow:hidden;}
.faq-a p{
  padding:0 clamp(18px,2vw,26px) 20px;
  color:var(--ink-soft);font-size:var(--fs-base);line-height:1.75;
}
.faq-a p + p{margin-top:-8px;}

@media (max-width:860px){
  .faq__layout{grid-template-columns:1fr;gap:var(--space-12);}
  .faq__intro{position:static;}
}

/* ---------------------------------------------------------
   24. ZÁVĚREČNÉ CTA
   --------------------------------------------------------- */
.final .wrap{max-width:var(--container-narrow);text-align:center;}
.final h2{font-style:italic;margin-bottom:var(--space-8);}
.final .btn{margin-top:var(--space-4);}
.final .price-note{display:block;margin-top:var(--space-4);}

/* ---------------------------------------------------------
   24e. PRÁVNÍ STRÁNKY
   Dlouhý souvislý text — úzké zrcadlo, výrazná hierarchie
   nadpisů a klidná sazba. Žádné ozdoby.
   --------------------------------------------------------- */
.legal .wrap{max-width:var(--container-narrow);}
.legal h1{margin-top:var(--space-4);}
.legal__meta{
  margin-top:var(--space-4);
  font-size:var(--fs-sm);color:var(--ink-soft);
}
.legal__draft{margin-bottom:var(--space-12);}

.legal__nav{
  display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-6);
  margin-top:var(--space-8);
  padding-block:var(--space-6);
  border-block:1px solid var(--line);
}
.legal__nav a{
  font-size:var(--fs-sm);color:var(--ink-soft);
  text-decoration:none;
  padding-block:4px;
}
.legal__nav a:hover{color:var(--bordo);text-decoration:underline;text-underline-offset:3px;}

.legal__body{margin-top:var(--space-12);}
.legal__body h2{
  font-size:var(--fs-xl);
  margin-top:clamp(40px,5vw,64px);
  margin-bottom:var(--space-4);
}
.legal__body h2:first-child{margin-top:0;}
.legal__body p{color:var(--ink-soft);}
.legal__body p + p{margin-top:var(--space-4);}
.legal__body ul,
.legal__body ol{
  margin-top:var(--space-4);
  padding-left:var(--space-6);
  color:var(--ink-soft);
  display:grid;gap:var(--space-2);
}
.legal__body li{padding-left:var(--space-2);}
.legal__body b{color:var(--ink);}
.legal__body code{
  font-size:.9em;
  padding:2px 6px;
  background:var(--grey-deep);
  border-radius:var(--radius-sm);
}

/* Nedoplněné údaje musí být na první pohled vidět, aby nikdo
   nespustil web s polotovarem místo právního dokumentu. */
.legal__todo{
  display:inline-block;
  padding:2px 8px;
  background:var(--error-bg);
  border:1px dashed var(--error);
  border-radius:var(--radius-sm);
  font-size:var(--fs-xs);font-weight:600;
  letter-spacing:.04em;
  color:var(--error);
}

/* ---- Odstoupení od smlouvy a reklamace ----
   Obojí je právní formulář na právní stránce a vypadá stejně;
   `.claim-form` je proto jen druhé jméno pro tentýž vzhled, ne
   druhá sada pravidel, která by se časem rozešla. */
.withdraw-form,
.claim-form{margin-top:var(--space-8);}
.withdraw-form .btn,
.claim-form .btn{margin-top:var(--space-6);}
.withdraw-form__optional{font-weight:400;text-transform:none;letter-spacing:0;}
/* Vzorový formulář pro odstoupení. Vypadá jako dokument, ne jako
   část stránky — má se dát vytisknout nebo opsat na papír, takže
   patková sazba a tečkované řádky k vyplnění. */
.vzor-formulare{
  margin-top:var(--space-6);
  padding:clamp(24px,4vw,36px);
  background:var(--surface);
  border:1px solid var(--line-strong);
  border-radius:var(--radius-sm);
  font-family:var(--f-display);
  font-size:var(--fs-base);
  line-height:1.8;
}
.vzor-formulare p{margin:0 0 var(--space-4);}
.vzor-formulare p:last-child{margin-bottom:0;}
.vzor-formulare__radek{
  color:var(--ink-soft);
  letter-spacing:.04em;
  overflow-wrap:anywhere;
}

/* Řádek s tlačítkem k tisku. Bez něj nikdo nepozná, že se dá
   vytisknout jen formulář — a vytiskne si celou stránku i s
   navigací a hláškou „Koncept". */
.vzor-tisk{
  display:flex;align-items:center;gap:var(--space-4);
  flex-wrap:wrap;margin-top:var(--space-6);
}
.vzor-tisk__pozn{
  font-size:var(--fs-sm);color:var(--ink-soft);
  line-height:1.6;max-width:38ch;
}

@media print{
  /* NA PAPÍR PATŘÍ JEN VZOROVÝ FORMULÁŘ.

     Je to dokument, který spotřebitel podepíše a pošle poštou.
     Cokoli dalšího na tom listu — navigace mezi dokumenty, hláška
     „Koncept", interaktivní formulář, patička — z něj dělá výtisk
     webové stránky, ne podání.

     SKRÝVÁ SE `display:none`, NE `visibility:hidden`. Neviditelný
     prvek totiž pořád zabírá své místo, takže formulář sice vyšel
     sám, ale za ním zůstal prázdný list (a u delší stránky klidně
     dva). `display:none` z toku vyřadí i to místo.

     Postupuje se po patrech odshora dolů: v každém patře se skryjí
     všichni sourozenci a pustí se dál jen ten, ve kterém formulář
     leží. Vyjmenovaná je tedy CESTA k formuláři, ne seznam toho,
     co se nemá tisknout — nová sekce na stránce se proto do tisku
     nedostane sama od sebe. */
  body{background:#fff;}

  body > *          {display:none !important;}
  body > main       {display:block !important;}

  main > *          {display:none !important;}
  main > .wrap      {display:block !important;}

  .wrap > *         {display:none !important;}
  .wrap > .legal__body{display:block !important;}

  .legal__body > *  {display:none !important;}
  .legal__body > .vzor-formulare{display:block !important;}

  .vzor-formulare{
    border:0;padding:0;margin:0;
    /* Body, ne pixely — tiskárna „px" nezná. */
    font-size:12pt;line-height:1.9;
    color:#000;
  }

  /* Tečkované řádky k vyplnění musí být na papíře znát. */
  .vzor-formulare__radek{color:#000;}

  /* Odstavec se nesmí rozlomit doprostřed podpisu. */
  .vzor-formulare p{page-break-inside:avoid;break-inside:avoid;}

  @page{margin:20mm;}
}

.withdraw-form textarea,
.claim-form textarea{
  width:100%;padding:12px 14px;
  background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  font-family:var(--f-body);font-size:var(--fs-base);color:var(--ink);
  resize:vertical;
}
.withdraw-form textarea:focus,
.claim-form textarea:focus{border-color:var(--bordo);}

.withdraw-summary{
  margin:var(--space-8) 0 0;
  padding:var(--space-6);
  background:var(--grey-deep);
  border-radius:var(--radius-md);
  display:grid;gap:var(--space-4);
}
.withdraw-summary > div{
  display:grid;
  grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);
  gap:var(--space-4);
}
.withdraw-summary dt{
  font-size:var(--fs-xs);font-weight:600;
  letter-spacing:.11em;text-transform:uppercase;
  color:var(--ink-soft);
}
.withdraw-summary dd{margin:0;font-size:var(--fs-sm);color:var(--ink);}

.withdraw-note{
  margin-top:var(--space-6);
  font-size:var(--fs-sm);color:var(--ink-soft);
}
.withdraw-actions{
  display:flex;flex-wrap:wrap;gap:var(--space-3);
  margin-top:var(--space-8);
}

@media (max-width:560px){
  .withdraw-summary > div{grid-template-columns:1fr;gap:var(--space-1);}
  .withdraw-actions .btn{width:100%;}
}

.legal__table{
  width:100%;
  margin-top:var(--space-6);
  border-collapse:collapse;
  font-size:var(--fs-sm);
}
.legal__table th,
.legal__table td{
  padding:var(--space-3) var(--space-4);
  border-bottom:1px solid var(--line);
  text-align:left;
  vertical-align:top;
  color:var(--ink-soft);
}
.legal__table th{
  color:var(--ink);
  font-size:var(--fs-xs);font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;
}
/* Široká tabulka se na mobilu posouvá uvnitř svého rámu,
   ne celou stránkou. */
@media (max-width:640px){
  .legal__table{display:block;overflow-x:auto;white-space:nowrap;}
}

/* Zkrácená patička pro právní stránky — je to rovnou ten tmavý pás. */
.site-footer--slim{background:var(--ink-deep);padding-block:var(--space-4);}
.site-footer--slim a{color:var(--on-dark-muted);}

/* ---------------------------------------------------------
   24d. STRÁNKA O ZNAČCE
   --------------------------------------------------------- */
.about-hero__layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,.85fr);
  gap:clamp(40px,6vw,88px);
  align-items:center;
}
.about-hero__layout > div > * + *{margin-top:var(--space-6);}
.about-hero .lede{max-width:44ch;}
.about-hero__figure{
  margin:0;border-radius:var(--radius-lg);overflow:hidden;
  box-shadow:var(--shadow-md);
  background:var(--surface);
}
/* Portrét zakladatelky si drží vlastní poměr 884/1250, stejně jako
   v sekci .story na hlavní stránce. Ořez na 4/5 by ubral skoro
   třetinu výšky. Popisek pod fotkou leží uvnitř rámu, proto
   overflow:hidden a plné pozadí. */
.about-hero__figure img{
  display:block;
  width:100%;height:auto;
}

.about-text .wrap{max-width:var(--container-narrow);}
.about-text p{color:var(--ink-soft);}
.about-text p + p{margin-top:var(--space-6);}
.about-text .section-head{margin-bottom:var(--space-8);}

/* Zásady jako číslovaný seznam — číslo nese displejové písmo,
   stejně jako u kroků v sekci „Jak fungují“. */
.about-principles{
  list-style:none;
  counter-reset:zasada;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:clamp(32px,4vw,56px);
}
.about-principles li{counter-increment:zasada;}
.about-principles li::before{
  content:"0" counter(zasada);
  display:block;
  margin-bottom:var(--space-3);
  font-family:var(--f-display);font-style:italic;
  font-size:1.1rem;color:var(--gold-text);
}
.about-principles h3{font-size:var(--fs-lg);font-weight:600;}
.about-principles p{
  margin-top:var(--space-3);
  color:var(--ink-soft);line-height:1.7;
}

.about-founder__layout{
  display:grid;
  grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);
  gap:clamp(40px,6vw,80px);
  align-items:center;
}
.about-founder figure{margin:0;border-radius:var(--radius-lg);overflow:hidden;}
/* Bez ořezu na 4/5. Původně proto, že fotografie měla dole ručně
   psaný podpis; ten už v souboru není, ale ořez do 4/5 by pořád
   ubral skoro třetinu výšky portrétu. Snímek si drží vlastní
   poměr 884/1250, stejně jako v sekci .story na hlavní stránce. */
.about-founder figure img{
  display:block;
  width:100%;height:auto;
}
.about-founder__layout > div > * + *{margin-top:var(--space-6);}

/* Nadpis sekce zarovnaný vlevo. Používá ho skrytá sekce s příběhem
   zakladatelky v o-nas.html — vystředěný nadpis by v jednosloupcovém
   textovém bloku plaval mimo sazbu.

   Pravidlo původně stálo v sekci 24h (Pro firmy). Při jejím
   odstranění 2026-08 odešlo s ní, ačkoliv s B2B nesouviselo;
   vráceno sem, kde má svého skutečného konzumenta. */
.section-head--left{margin-inline:0;text-align:left;}

/* Role pod jménem — drobná, ve zlatém textovém odstínu, aby jméno
   zůstalo hlavní. */
.about-founder__role{
  font-size:var(--fs-xs);
  letter-spacing:.11em;text-transform:uppercase;
  color:var(--gold-text);
}
.about-founder__layout > div > .about-founder__role{margin-top:var(--space-3);}

@media (max-width:900px){
  .about-hero__layout,
  .about-founder__layout{grid-template-columns:1fr;}
}

/* ---------------------------------------------------------
   24c. KONTAKTNÍ STRÁNKA
   --------------------------------------------------------- */
.contact__layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
  gap:clamp(40px,6vw,96px);
  align-items:start;
}
.contact__intro .section-head{margin-bottom:var(--space-6);}
.contact__intro .lede{max-width:38ch;}

.contact__details{
  margin-top:clamp(32px,4vw,48px);
  display:grid;gap:var(--space-6);
}
.contact__details dt{
  font-size:var(--fs-xs);font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink-soft);
  margin-bottom:var(--space-2);
}
.contact__details dd{margin:0;font-size:var(--fs-lg);}

.contact__form .notice{margin-bottom:var(--space-8);}
.contact .field textarea{
  width:100%;padding:12px 14px;
  background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  font-family:var(--f-body);font-size:var(--fs-base);color:var(--ink);
  resize:vertical;
}
.contact .field textarea:focus{border-color:var(--bordo);}
.contact .field textarea:user-invalid{border-color:var(--error);}

.contact__consent{
  margin-block:var(--space-6);
  font-size:var(--fs-sm);color:var(--ink-soft);
  max-width:52ch;
}
.contact__status{
  margin-top:var(--space-4);
  font-size:var(--fs-sm);color:var(--ink-soft);
  max-width:52ch;
}
.contact__status.is-error{color:var(--error);}

@media (max-width:880px){
  .contact__layout{grid-template-columns:1fr;}
}

/* ---------------------------------------------------------
   24g. NEJČASTĚJŠÍ OBAVA — NEPOUŽÍVANÉ

   POZOR: sekce byla na pokyn odebrána z index.html (2026-08).
   Tyhle styly teď nemá co používat. Ponechány záměrně stejně
   jako .qcard — čekají na rozhodnutí, jestli text najde místo
   jinde, nebo se odstraní.

   Rozvržení: dvousloupcové jako FAQ — vlevo námitka vyslovená
   nahlas, vpravo odpověď. Body pod sebou, ne v mřížce dlaždic:
   stránka jich má dost a další mřížka by z odpovědi na obavu
   udělala katalog.
   --------------------------------------------------------- */
.objection__layout{
  display:grid;
  grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
  gap:clamp(40px,7vw,104px);
  align-items:start;
}

/* Námitka je citace, ne nadpis sekce — proto kurzíva. Uvozovky
   jsou v HTML, aby zůstaly i bez CSS. */
.objection__head h2{
  margin-top:var(--space-4);
  font-style:italic;
}
/* Na širokém displeji zůstane námitka v zorném poli po celou
   dobu čtení odpovědi. */
@media (min-width:901px){
  .objection__head{position:sticky;top:calc(var(--header-sticky) + var(--space-8));}
}

.objection__body .lede{max-width:var(--measure);}

.objection__points{
  list-style:none;margin:clamp(32px,4vw,48px) 0 0;padding:0;
  display:grid;gap:var(--space-8);
}
.objection__points li{
  padding-top:var(--space-8);
  border-top:1px solid var(--line);
}
.objection__points li:first-child{padding-top:0;border-top:0;}
.objection__points h3{font-size:var(--fs-lg);}
.objection__points p{
  margin-top:var(--space-3);
  color:var(--ink-soft);
  max-width:var(--measure);
}

@media (max-width:900px){
  .objection__layout{grid-template-columns:1fr;}
}

/* ---------------------------------------------------------
   25. PATIČKA
   --------------------------------------------------------- */
/* Patička má stejnou černou jako horní pruh — stránku to nahoře
   i dole uzavře stejnou barvou. */
.site-footer{
  background:var(--ink-deep);color:var(--ink-invert);
  padding-block:var(--space-16) var(--space-8);
}
/* Patička dýchá víc než obsah — je to poslední obrazovka a nemá
   působit jako sešitý seznam odkazů. Proto širší kontejner. */
.site-footer .wrap{max-width:var(--container-wide);}
.footer-grid{
  display:grid;
  grid-template-columns:1.6fr 1fr 1fr 1.1fr;
  gap:clamp(40px,5vw,72px) clamp(32px,4vw,64px);
  padding-bottom:clamp(56px,7vw,88px);
}
.footer-brand .logo{color:var(--ink-invert);}
.footer-brand .logo span{color:var(--gold-soft);}
.footer-brand p{
  margin-top:var(--space-4);max-width:32ch;
  font-size:var(--fs-sm);color:var(--on-dark-faint);
}
/* ---- Odběr novinek v patičce ----
   Světlé pole na tmavém podkladu, tlačítko se šipkou uvnitř rámu.
   Vstup má vlastní světlé pozadí, ne průhledné — na tmavé patičce
   by průhledné pole splynulo s okolím. */
.subscribe{margin-top:var(--space-8);max-width:24rem;}
.subscribe__row{
  display:flex;align-items:center;
  background:var(--cream);
  border-radius:999px;
  padding:4px 4px 4px 18px;
}
.subscribe input{
  flex:1;min-width:0;
  min-height:44px;
  background:none;border:0;
  font-family:var(--f-body);font-size:var(--fs-sm);color:var(--ink);
}
.subscribe input::placeholder{color:var(--ink-soft);}
.subscribe input:focus{outline:none;}
/* Fokus se kreslí kolem celého pole, ne kolem holého vstupu. */
.subscribe__row:focus-within{outline:2px solid var(--gold-soft);outline-offset:2px;}
.subscribe button{
  flex-shrink:0;
  width:40px;height:40px;
  display:grid;place-items:center;
  background:var(--bordo);color:var(--ink-invert);
  border:0;border-radius:50%;
  transition:background var(--t-fast);
}
.subscribe button:hover{background:var(--bordo-deep);}
.subscribe__note{
  margin-top:var(--space-3);
  font-size:var(--fs-xs);
  color:var(--on-dark-faint);
  max-width:34ch;
}
.subscribe__status{
  margin-top:var(--space-2);
  font-size:var(--fs-xs);
  color:var(--on-dark);
  max-width:34ch;
}

.footer-col h2{
  font-family:var(--f-body);
  font-size:var(--fs-xs);font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold-soft);
  margin-bottom:var(--space-4);
}
.footer-col ul{list-style:none;display:grid;gap:2px;}
/* Druhý nadpis ve sloupci — odsazený, aby se nepletl s prvním. */
.footer-col__sub{margin-top:var(--space-8);}

/* Právní odkazy jsou v patičce drobnější než navigační — jsou
   povinné, ale nemají soutěžit s obsahem. Vlastní pruh nad patou,
   aby nenafukovaly navigační sloupec. */
.footer-legal{
  display:flex;flex-wrap:wrap;
  gap:var(--space-2) var(--space-6);
  list-style:none;
  padding-block:var(--space-6);
  border-top:1px solid var(--line-invert);
}
.footer-legal a{
  font-size:var(--fs-xs);
  color:var(--on-dark-subtle);
  text-decoration:none;
  padding-block:4px;
}
.footer-legal a:hover{color:var(--on-dark);text-decoration:underline;text-underline-offset:3px;}
/* Odkazy na sítě nesou ikonu i název, samotná ikona bez textu
   se u paty stránky špatně trefuje a hůř se čte. */
.footer-social a{display:inline-flex;align-items:center;gap:10px;}
.footer-social svg{flex-shrink:0;color:var(--gold-soft);}
.footer-col a{
  display:inline-block;
  /* Svislý padding drží dotykový cíl nad 24 px podle WCAG 2.2 (2.5.8). */
  padding-block:6px;
  font-size:var(--fs-sm);
  color:var(--on-dark-muted);
  text-decoration:none;
}
.footer-col a:hover{color:var(--ink-invert);text-decoration:underline;text-underline-offset:3px;}
/* Pata je odlišená jen vlasovou linkou, ne barvou — celá patička
   má jednotnou černou. */
.footer-bar{border-top:1px solid var(--line-invert);}
.footer-bottom{
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4);
  min-height:60px;align-items:center;
  padding-block:var(--space-4);
  font-size:var(--fs-xs);color:var(--on-dark-subtle);
  letter-spacing:.04em;
}
/* Heslo značky je podpis, ne další drobný text — proto displejové
   písmo kurzívou ve zlaté, stejně jako se podepisuje na kartách. */
.footer-bottom__claim{
  font-family:var(--f-display);
  font-style:italic;
  font-size:var(--fs-base);
  letter-spacing:.02em;
  color:var(--gold-soft);
}
.footer-bottom a{color:var(--on-dark-subtle);text-decoration:none;}
.footer-bottom a:hover{color:var(--on-dark);}
@media (max-width:820px){
  .footer-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:480px){
  .footer-grid{grid-template-columns:1fr;gap:var(--space-8);}
}

/* ---------------------------------------------------------
   25b. OBJEDNÁVKOVÉ OKNO
   Celá objednávka v jednom kroku. Na širokém displeji okno
   uprostřed, na mobilu přes celou obrazovku — dlouhý formulář
   v malém okně se špatně vyplňuje.
   --------------------------------------------------------- */
.order-modal{
  position:fixed;z-index:100;
  top:50%;left:50%;
  transform:translate(-50%,-48%);
  width:min(560px,calc(100vw - 2 * var(--gutter)));
  max-height:min(880px,calc(100dvh - 2 * var(--space-8)));
  display:flex;flex-direction:column;
  background:var(--cream);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);
  opacity:0;visibility:hidden;
  transition:opacity var(--t-normal),transform var(--t-normal),visibility var(--t-normal);
}
.order-modal[data-open="true"]{
  opacity:1;visibility:visible;
  transform:translate(-50%,-50%);
}

.order-modal__head{
  display:flex;align-items:center;justify-content:space-between;
  gap:var(--space-4);
  padding:var(--space-6) var(--space-6) var(--space-4);
  border-bottom:1px solid var(--line);
}
.order-modal__head h2{font-size:var(--fs-xl);font-style:italic;}
.order-modal__body{
  overflow-y:auto;
  padding:var(--space-6);
  -webkit-overflow-scrolling:touch;
}
.order-modal .notice{margin-bottom:var(--space-6);}

.order-item{
  display:grid;
  grid-template-columns:64px minmax(0,1fr) auto;
  gap:var(--space-4);
  align-items:center;
  padding-bottom:var(--space-6);
  border-bottom:1px solid var(--line);
  margin-bottom:var(--space-6);
}
.order-item img{width:64px;height:64px;object-fit:cover;border-radius:var(--radius-sm);}
.order-item__info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.order-item__info b{font-size:var(--fs-sm);}
.order-item__info span{font-size:var(--fs-sm);color:var(--ink-soft);}
.order-item__note{font-size:var(--fs-xs) !important;}

.order-modal fieldset{border:0;padding:0;margin:0 0 var(--space-8);}
.order-modal legend{
  font-family:var(--f-display);font-style:italic;
  font-size:var(--fs-lg);
  margin-bottom:var(--space-4);padding:0;
}
.pay-option__price{margin-left:auto;font-size:var(--fs-sm);color:var(--ink-soft);}

.order-summary-box{
  padding:var(--space-4) var(--space-6);
  background:var(--grey-deep);
  border-radius:var(--radius-md);
  margin-bottom:var(--space-6);
}
.order-summary-box .summary-row{padding-block:6px;}
.order-summary-box .summary-total{margin-top:var(--space-2);}
/* Poznámka o dopravě zdarma. Drobná a v bordó — je to pobídka,
   ne další položka souhrnu, takže nesmí soupeřit s částkami. */
.summary-note{
  margin:0;padding-block:2px;
  font-size:var(--fs-xs);color:var(--bordo);
}

/* Textové pole pro poznámku. Stejný tvar jako ostatní vstupy okna,
   jen povolené svislé roztažení — vodorovné by rozbilo mřížku. */
#orderForm textarea{
  width:100%;
  padding:12px var(--space-4);
  font:inherit;font-size:var(--fs-sm);
  color:var(--ink);background:var(--surface);
  border:1px solid var(--line-strong);
  border-radius:var(--radius-sm);
  resize:vertical;min-height:76px;
}
#orderForm textarea:focus-visible{
  outline:2px solid var(--focus);outline-offset:1px;
}

/* Nástraha na roboty. Nesmí použít display:none ani hidden —
   část automatů skryté prvky vynechá a past by nesklapla.
   Proto se odsune mimo obraz, ale pro prohlížeč zůstává vyplnitelná. */
.hp{
  position:absolute;
  left:-9999px;
  width:1px;height:1px;
  overflow:hidden;
}

.order-consent{
  display:grid;grid-template-columns:auto minmax(0,1fr);
  gap:var(--space-3);
  align-items:start;
  margin-bottom:var(--space-6);
  font-size:var(--fs-sm);color:var(--ink-soft);
  line-height:1.55;
}
.order-consent input{width:18px;height:18px;margin-top:2px;accent-color:var(--bordo);}
.order-consent a{color:var(--bordo);}

.order-status{
  margin-top:var(--space-4);
  font-size:var(--fs-sm);color:var(--ink-soft);
}
.order-status.is-error{color:var(--error);}

/* Chyba u konkrétního pole. Bez ní by dlouhý formulář hlásil jen
   „zkontrolujte údaje" a člověk by hledal, které pole zlobí. */
.field-error{
  margin:var(--space-2) 0 0;
  font-size:var(--fs-xs);color:var(--error);
}
#orderForm [aria-invalid="true"]{
  border-color:var(--error);
}

/* Poděkování po odeslání. Nahradí obsah okna — v tu chvíli už není
   co vyplňovat a formulář by jen mátl. */
.order-done{
  padding:var(--space-8) 0 var(--space-4);
  text-align:center;
}
.order-done h3{
  font-family:var(--f-display);
  font-size:var(--fs-xl);
  font-style:italic;
}
.order-done__cislo{
  margin-top:var(--space-3);
  font-size:var(--fs-sm);
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-soft);
}
.order-done p:not(.order-done__cislo){
  margin-top:var(--space-4);
  color:var(--ink-soft);
  max-width:44ch;margin-inline:auto;
  line-height:1.65;
}
.order-done .btn{margin-top:var(--space-8);}

@media (max-width:640px){
  /* Přes celou obrazovku — dlouhý formulář potřebuje místo. */
  .order-modal{
    top:0;left:0;transform:none;
    width:100%;max-width:none;
    height:100dvh;max-height:none;
    border-radius:0;
  }
  .order-modal[data-open="true"]{transform:none;}
}

@media (prefers-reduced-motion: reduce){
  .order-modal{transition:none;}
}

/* ---------------------------------------------------------
   26. KOŠÍK
   --------------------------------------------------------- */
.overlay{
  position:fixed;inset:0;z-index:90;
  background:rgba(43,34,41,.45);
  opacity:0;visibility:hidden;
  transition:opacity var(--t-normal),visibility var(--t-normal);
}
.overlay[data-open="true"]{opacity:1;visibility:visible;}

.cart-drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:91;
  width:min(420px,100%);
  display:flex;flex-direction:column;
  background:var(--cream);
  box-shadow:-24px 0 60px rgba(43,34,41,.2);
  transform:translateX(100%);
  visibility:hidden;
  transition:transform var(--t-normal),visibility var(--t-normal);
}
.cart-drawer[data-open="true"]{transform:translateX(0);visibility:visible;}
.cart-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:var(--space-6);
  border-bottom:1px solid var(--line);
}
.cart-head h2{font-size:var(--fs-xl);font-style:italic;}
.cart-items{
  flex:1;overflow-y:auto;
  padding:var(--space-6);
  display:flex;flex-direction:column;gap:var(--space-6);
}
.cart-item{display:flex;gap:var(--space-4);align-items:flex-start;}
.cart-item img{
  width:64px;height:64px;flex-shrink:0;
  object-fit:cover;border-radius:var(--radius-sm);
}
.cart-item__info{flex:1;min-width:0;}
.cart-item__name{font-weight:600;font-size:var(--fs-sm);}
.cart-item__price{font-size:var(--fs-sm);color:var(--ink-soft);margin-top:2px;}
.cart-item__remove{
  margin-top:6px;padding:0;
  background:none;border:0;
  font-size:var(--fs-xs);color:var(--bordo);
  text-decoration:underline;text-underline-offset:3px;
}
.cart-empty{
  margin:auto;text-align:center;
  color:var(--ink-soft);font-size:var(--fs-sm);
}
.cart-foot{padding:var(--space-6);border-top:1px solid var(--line);}
.cart-subtotal{
  display:flex;justify-content:space-between;align-items:baseline;
  margin-bottom:var(--space-4);
}
.cart-subtotal b{font-family:var(--f-display);font-size:1.35rem;font-weight:600;}
.cart-foot small{
  display:block;margin-top:var(--space-3);
  font-size:var(--fs-xs);color:var(--ink-soft);text-align:center;
}

/* ---------------------------------------------------------
   27. TOAST
   --------------------------------------------------------- */
.toast{
  position:fixed;left:50%;bottom:28px;z-index:120;
  display:flex;align-items:center;gap:10px;
  padding:14px 22px;
  background:var(--ink);color:var(--ink-invert);
  border-radius:var(--radius-md);
  font-size:var(--fs-sm);
  opacity:0;pointer-events:none;
  transform:translateX(-50%) translateY(16px);
  transition:opacity var(--t-fast),transform var(--t-fast);
}
.toast[data-open="true"]{opacity:1;transform:translateX(-50%) translateY(0);}
.toast::before{content:"✓";color:var(--gold-soft);font-weight:700;}

/* ---------------------------------------------------------
   28. POKLADNA
   --------------------------------------------------------- */
.checkout{padding-block:var(--space-12) var(--section-y);}
.checkout-back{
  display:inline-flex;align-items:center;gap:8px;
  margin-bottom:var(--space-8);
  font-size:var(--fs-sm);color:var(--ink-soft);text-decoration:none;
}
.checkout-back:hover{color:var(--bordo);}

.checkout-grid{
  display:grid;
  grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);
  gap:clamp(40px,5vw,64px);
  align-items:start;
}
@media (max-width:880px){
  .checkout-grid{grid-template-columns:1fr;}
}

.checkout fieldset{border:0;padding:0;margin:0 0 var(--space-12);}
.checkout legend{
  font-family:var(--f-display);font-style:italic;
  font-size:var(--fs-xl);
  margin-bottom:var(--space-6);padding:0;
}

.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);}
.field.full{grid-column:1/-1;}
@media (max-width:560px){
  .field-grid{grid-template-columns:1fr;}
}

.field label{
  display:block;margin-bottom:6px;
  font-size:var(--fs-sm);font-weight:500;color:var(--ink-soft);
}
.field input,
.field select{
  width:100%;min-height:48px;padding:12px 14px;
  background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  font-family:var(--f-body);font-size:var(--fs-base);color:var(--ink);
}
.field input:focus,
.field select:focus{border-color:var(--bordo);}
.field input:user-invalid,
.field select:user-invalid{border-color:var(--error);}

.pay-options{display:grid;gap:var(--space-3);}
.pay-option{
  display:flex;align-items:center;gap:var(--space-4);
  padding:16px 18px;
  border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  cursor:pointer;
  transition:border-color var(--t-fast),background var(--t-fast);
}
.pay-option:hover{border-color:var(--ink);}
.pay-option:has(input:checked){border-color:var(--bordo);background:var(--bordo-tint);}
.pay-option:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:3px;}
.pay-option input{width:20px;height:20px;accent-color:var(--bordo);flex-shrink:0;}
.pay-option__name{font-weight:600;font-size:var(--fs-sm);}
.pay-option__note{font-size:var(--fs-xs);color:var(--ink-soft);}

/* Výběr výdejního místa. Sedí pod nabídkou dopravy a objeví se
   jen u té, která místo vyžaduje — proto odsazení shora, aby se
   po zobrazení neslepil s poslední možností.

   Vybrané místo má rámeček v barvě značky jako zaškrtnutá doprava:
   zákazník tak na první pohled vidí, že tenhle krok má hotový. */
.vydejni-misto{margin-top:var(--space-3);}
.vydejni-misto__vybrano{
  margin:var(--space-3) 0 0;
  padding:12px 16px;
  border:1px solid var(--bordo);border-radius:var(--radius-sm);
  background:var(--bordo-tint);
  font-size:var(--fs-sm);line-height:1.5;
}
.vydejni-misto__chyba{
  margin:var(--space-2) 0 0;
  font-size:var(--fs-xs);color:var(--bordo);font-weight:600;
}

.order-summary{
  position:sticky;top:96px;
  padding:var(--space-8);
  background:var(--cream-deep);
  border:1px solid var(--line);border-radius:var(--radius-md);
}
.order-summary h2{font-size:var(--fs-xl);margin-bottom:var(--space-6);}
.summary-item{
  display:flex;justify-content:space-between;gap:var(--space-4);
  padding-block:12px;border-bottom:1px solid var(--line);
  font-size:var(--fs-sm);
}
.summary-item small{display:block;color:var(--ink-soft);font-size:var(--fs-xs);}
.summary-row{
  display:flex;justify-content:space-between;
  padding-block:12px;
  font-size:var(--fs-sm);color:var(--ink-soft);
}
.summary-total{
  display:flex;justify-content:space-between;align-items:baseline;
  margin-top:var(--space-2);padding-top:var(--space-4);
  border-top:1px solid var(--line-strong);
}
.summary-total b{font-family:var(--f-display);font-size:1.6rem;font-weight:600;}

.notice{
  padding:var(--space-4) var(--space-6);
  border-left:2px solid var(--gold);
  background:var(--bordo-tint);
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;
  font-size:var(--fs-sm);color:var(--ink-soft);
}
.notice--error{
  border-left-color:var(--error);
  background:var(--error-bg);
  color:var(--error);
  margin-bottom:var(--space-6);
}

.state-box{
  max-width:520px;margin-inline:auto;
  padding-block:var(--space-24);
  text-align:center;
}
.state-box > * + *{margin-top:var(--space-6);}
.state-box__icon{
  width:64px;height:64px;margin-inline:auto;
  display:grid;place-items:center;
  background:var(--bordo);border-radius:50%;color:var(--ink-invert);
}

/* ---------------------------------------------------------
   29. ODHALOVÁNÍ PŘI SCROLLU

   Obsah je viditelný ve výchozím stavu. Skrytí zapíná až
   GSAP v okamžiku, kdy se prokazatelně načetl — jinak by
   výpadek CDN nechal část stránky trvale neviditelnou.
   --------------------------------------------------------- */
[data-reveal]{will-change:opacity,transform;}
[data-reveal].is-revealed{will-change:auto;}

/* ---- Hlídací pes „až bude skladem" (sekce 16c) ----
   Ukáže se jen při vyprodání a jen se skriptem. Sazba je tlumená:
   je to náhradní cesta, ne nabídka, a nesmí vypadat jako nákupní
   blok, který právě nahradila. */
.stock-watch{
  margin-top:var(--space-4);
  padding:var(--space-5);
  background:var(--grey-tint);
  border:1px solid var(--line);
  border-radius:var(--radius-md);
}
.stock-watch__uvod{
  margin:0 0 var(--space-3);
  font-size:var(--fs-sm);color:var(--ink);
}
.stock-watch__form{display:flex;gap:var(--space-3);flex-wrap:wrap;}
.stock-watch__form input{
  flex:1;min-width:200px;padding:12px 14px;
  background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  font-family:var(--f-body);font-size:var(--fs-base);color:var(--ink);
}
.stock-watch__form input:focus{border-color:var(--bordo);}
.stock-watch__form .btn{flex:0 0 auto;}
.stock-watch__stav{
  margin:var(--space-3) 0 0;
  font-size:var(--fs-sm);color:var(--bordo);
}
.stock-watch__pozn{
  margin:var(--space-3) 0 0;
  font-size:var(--fs-xs);color:var(--ink-soft);line-height:1.6;
}
