/* =========================================================
   Story of Prague — prodejní stránka vstupenek (TEST)
   Branding dle Brand_Manual_simple.pdf (Montserrat + paleta),
   vizuálně konzistentní s landing page (sekce „Tickets").
   ========================================================= */

/* ---------- Tokens ---------- */
:root{
  /* primární */
  --navy:#211551;
  --magenta:#E41C79;
  --yellow:#FCCC00;
  --white:#FFFFFF;
  /* sekundární */
  --orange:#FFA300;
  --blue:#00AEEF;
  --purple:#9476DD;
  --sky:#D7E8F2;
  /* odvozené */
  --navy-card:#2c2070;
  --navy-deep:#1a1142;
  --ink:#211551;
  --muted:#6f6a8c;
  --line:#e7e4f0;
  /* systém */
  --maxw:1180px;
  --radius:20px;
  --radius-sm:12px;
  --flag-tan:0.33155;     /* tan(18.34°) — konstantní úhel vlajky z flag.svg */
  --ease:cubic-bezier(.22,.61,.36,1);
  --shadow:0 18px 50px -20px rgba(33,21,81,.35);
  --shadow-lg:0 30px 70px -25px rgba(33,21,81,.45);
  --green:#17a673;
  --font:'Montserrat',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px;-webkit-text-size-adjust:100%}
body{
  margin:0;font-family:var(--font);color:var(--ink);background:var(--navy);
  font-size:17px;line-height:1.6;font-weight:400;-webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
input{font-family:inherit}
h1,h2,h3,h4{margin:0;line-height:1.1;font-weight:800;letter-spacing:-.01em}
p{margin:0}

/* ---------- Helpers ---------- */
.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 24px}
.section{padding:clamp(56px,7vw,104px) 0;position:relative}
.ic{width:1em;height:1em;flex:0 0 auto;vertical-align:middle}
.eyebrow{
  display:inline-flex;align-items:center;gap:.5em;
  font-size:.82rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--yellow);margin:0 0 16px;
}
.eyebrow .ic{font-size:1.2em}
.h-sec{font-size:clamp(1.8rem,4.2vw,2.9rem);text-transform:uppercase;color:var(--white);max-width:18ch}
.lead{font-size:clamp(1.02rem,1.5vw,1.18rem);color:#cfc9e6;max-width:62ch;margin-top:16px}
.center{text-align:center}
.center .h-sec,.center .lead{margin-left:auto;margin-right:auto}

/* ---------- Spray (sprejový kruh dle manuálu — ZRNITÝ, ne hladká bublina) ----------
   Maska = radiální dopad (hustý střed → mizí k okraji) ∩ jemný šum (zrno spreje). */
.spray{position:absolute;pointer-events:none;z-index:0;
  -webkit-mask-image:
    radial-gradient(circle, #000 0%, rgba(0,0,0,.5) 36%, transparent 74%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='130' height='130'%3E%3Cfilter id='s'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 -7'/%3E%3C/filter%3E%3Crect width='130' height='130' filter='url(%23s)'/%3E%3C/svg%3E");
  -webkit-mask-repeat:no-repeat,repeat;-webkit-mask-size:100% 100%,130px 130px;
  -webkit-mask-position:center,center;-webkit-mask-composite:source-in;
  mask-image:
    radial-gradient(circle, #000 0%, rgba(0,0,0,.5) 36%, transparent 74%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='130' height='130'%3E%3Cfilter id='s'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 -7'/%3E%3C/filter%3E%3Crect width='130' height='130' filter='url(%23s)'/%3E%3C/svg%3E");
  mask-repeat:no-repeat,repeat;mask-size:100% 100%,130px 130px;
  mask-position:center,center;mask-composite:intersect;
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  font-weight:800;font-size:1.02rem;letter-spacing:.005em;
  padding:1.05em 1.8em;border:none;border-radius:999px;cursor:pointer;
  transition:transform .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease),opacity .2s;
  text-align:center;line-height:1.15;min-height:48px;
}
.btn .ic{font-size:1.25em}
.btn--yellow{background:var(--yellow);color:var(--navy);box-shadow:0 12px 28px -10px rgba(252,204,0,.7)}
.btn--yellow:hover{transform:translateY(-3px);box-shadow:0 18px 34px -10px rgba(252,204,0,.85)}
.btn--navy{background:var(--navy);color:#fff}
.btn--navy:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.btn:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
.btn--lg{font-size:1.1rem;padding:1.12em 2em}

/* ---------- Header ---------- */
.site-header{
  position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;
  transition:background .25s var(--ease),box-shadow .25s var(--ease),padding .25s var(--ease);
  padding:14px 0;background:transparent;
}
.site-header.scrolled{background:var(--navy);box-shadow:0 10px 30px -15px rgba(0,0,0,.6);padding:10px 0}
.site-header .container{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px}
/* velké logo → po scrollu přečuhuje pod header; obrys přes drop-shadow halo (jako LP) */
.site-header .logo{height:116px;width:auto;
  transition:height .25s var(--ease),margin .25s var(--ease);
  filter:drop-shadow(0 0 3px rgba(33,21,81,.38)) drop-shadow(0 10px 18px rgba(33,21,81,.15))}
.site-header.scrolled .logo{height:100px;margin-bottom:-50px}

/* Pravá skupina headeru: nav + jazyky + hamburger */
.site-header__right{display:flex;align-items:center;gap:clamp(12px,2vw,22px)}

/* Přepínač jazyků (dropdown) */
.langsw{position:relative;flex:0 0 auto}
.langsw__toggle{display:inline-flex;align-items:center;gap:.4em;cursor:pointer;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:999px;
  padding:.5em .7em .5em .8em;color:#fff;font-weight:800;font-size:.8rem;letter-spacing:.03em;line-height:1;
  transition:background .2s}
.langsw__toggle:hover{background:rgba(255,255,255,.16)}
.langsw__toggle:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.langsw__globe{font-size:1.15em;color:var(--yellow)}
.langsw__code{margin-top:1px}
.langsw__caret{font-size:.95em;opacity:.7;transition:transform .2s}
.langsw.open .langsw__caret{transform:rotate(180deg)}
.langsw__menu{position:absolute;top:calc(100% + 8px);right:0;min-width:120px;z-index:60;
  display:flex;flex-direction:column;gap:2px;padding:6px;background:var(--navy);
  border:1px solid rgba(255,255,255,.16);border-radius:12px;box-shadow:0 24px 50px -18px rgba(0,0,0,.6)}
.langsw__menu[hidden]{display:none}
.langsw__item{padding:.55em .8em;border-radius:8px;color:#fff;font-weight:700;font-size:.9rem;
  transition:background .15s,color .15s}
.langsw__item:hover{background:rgba(255,255,255,.09);color:var(--yellow)}
.langsw__item.is-active{background:rgba(255,255,255,.12);color:var(--yellow)}
.langsw__item:focus-visible{outline:3px solid var(--blue);outline-offset:-2px}

/* Navigace */
.nav{display:flex;align-items:center;gap:clamp(14px,1.9vw,30px)}
.nav a{position:relative;color:#fff;font-weight:600;font-size:.96rem;white-space:nowrap;
  padding:.35em 0;transition:color .2s}
.nav a:hover{color:var(--yellow)}
.nav a.is-active{color:var(--yellow)}
.nav a.is-active::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;
  background:var(--yellow);border-radius:2px}
.nav a:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:3px}

/* Hamburger (jen mobil) */
.nav-toggle{display:none;width:46px;height:46px;border:none;border-radius:12px;cursor:pointer;
  background:rgba(255,255,255,.1);flex-direction:column;align-items:center;justify-content:center;gap:5px}
.nav-toggle span{display:block;width:22px;height:2px;background:#fff;border-radius:2px;
  transition:transform .22s var(--ease),opacity .2s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.nav-toggle:focus-visible{outline:3px solid var(--blue);outline-offset:3px}

@media(max-width:860px){
  .nav-toggle{display:flex}
  .nav{position:absolute;top:calc(100% + 8px);right:0;left:auto;min-width:220px;
    flex-direction:column;align-items:stretch;gap:2px;padding:10px;
    background:var(--navy);border:1px solid rgba(255,255,255,.16);border-radius:14px;
    box-shadow:0 24px 50px -18px rgba(0,0,0,.6);display:none}
  .nav.open{display:flex}
  .nav a{padding:.72em .85em;border-radius:9px;font-size:1rem}
  .nav a:hover,.nav a.is-active{background:rgba(255,255,255,.09);color:var(--yellow)}
  .nav a.is-active::after{display:none}
}
@media(max-width:760px){
  .site-header .logo{height:74px}
  .site-header.scrolled .logo{height:70px;margin-bottom:-32px}
}
@media(max-width:520px){
  .site-header .logo{height:58px}
  .site-header.scrolled .logo{height:54px;margin-bottom:-24px}
}

/* ---------- Intro (kompaktní pruh nad nákupem) ---------- */
.intro{position:relative;background:var(--navy);color:#fff;overflow:hidden;
  padding:clamp(132px,17vh,176px) 0 clamp(10px,2vw,22px)}
.intro .container{position:relative;z-index:1}
.intro__eyebrow{display:inline-flex;align-items:center;gap:.5em;color:var(--yellow);
  font-weight:800;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px}
.intro__eyebrow .ic{font-size:1.2em}
.intro__title{font-size:clamp(1.85rem,5.4vw,3rem);text-transform:uppercase;line-height:1.05;
  overflow-wrap:break-word}
.intro__sub{font-size:clamp(1.02rem,1.6vw,1.2rem);color:#cfc9e6;margin-top:14px;max-width:62ch}
.intro__sub strong{color:var(--yellow)}
.intro__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:16px 30px;margin-top:24px}
.intro__trust{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:12px 22px}
.intro__trust li{display:flex;align-items:center;gap:.5em;font-weight:600;font-size:.95rem;color:#eceaf6}
.intro__trust .yes{color:var(--yellow);font-size:1.25em}
/* přesahy jen do stran / za header (tam je ořez mimo obraz nebo schovaný),
   NIKDY přes spodní hranu sekce — tam by se to oříznulo viditelnou čarou */
.intro .spray.s-intro{width:320px;height:320px;background:var(--magenta);top:-40px;right:-80px;opacity:.5}
.intro .spray.s-intro2{width:220px;height:220px;background:var(--blue);top:24px;left:-90px;opacity:.32}
.hero-badges{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.hero-badges img{height:50px;width:auto;mix-blend-mode:screen}

/* ---------- Order section ---------- */
/* pozn.: ŽÁDNÝ overflow:hidden — rozbil by position:sticky u souhrnu */
.order{background:var(--navy);padding:clamp(28px,4vw,44px) 0 clamp(56px,7vw,104px)}
.order__head{max-width:680px;margin-bottom:26px}
.order__head.center{margin-left:auto;margin-right:auto}
.order .container{position:relative;z-index:1}

/* Přepínač měny */
.curswitch{display:inline-flex;gap:4px;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:4px;margin-bottom:30px}
.curswitch__btn{border:none;background:transparent;color:#cfc9e6;font-weight:800;
  padding:.5em 1.2em;border-radius:999px;cursor:pointer;min-width:54px;min-height:40px;
  transition:background .2s,color .2s}
.curswitch__btn.is-active{background:var(--yellow);color:var(--navy)}
.curswitch__btn:focus-visible{outline:3px solid var(--blue);outline-offset:2px}

/* Layout objednávky */
.buy__grid{display:grid;grid-template-columns:1fr 380px;gap:26px;align-items:start}
.buy__main{display:flex;flex-direction:column;gap:22px;min-width:0}

/* Bílé panely na navy */
.panel{background:#fff;color:var(--ink);border-radius:var(--radius);
  padding:clamp(22px,3vw,32px);box-shadow:var(--shadow-lg)}
.panel__title{display:flex;align-items:center;gap:.6em;font-size:1.25rem;
  text-transform:uppercase;margin-bottom:22px}
.panel__title .step{display:inline-flex;align-items:center;justify-content:center;
  width:1.7em;height:1.7em;border-radius:50%;background:var(--navy);color:#fff;
  font-size:.92rem;font-weight:800;flex:0 0 auto}
.panel__title .ic{color:var(--magenta);font-size:1.2em}

/* Řádky vstupenek */
.tk-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.tk-row{position:relative;display:grid;
  grid-template-columns:1fr auto auto;align-items:center;gap:14px 18px;
  padding:16px 18px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  transition:border-color .2s,box-shadow .2s,background .2s}
.tk-row.is-active{border-color:var(--navy);background:#faf9ff}
.tk-row.is-featured{border-color:var(--yellow);background:#fffdf2}
.tk-row.is-featured.is-active{box-shadow:0 0 0 1.5px var(--yellow)}
.tk-row__flag{position:absolute;top:-11px;left:16px;background:var(--magenta);color:#fff;
  font-weight:800;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;
  padding:.32em .7em;border-radius:6px;box-shadow:0 8px 18px -8px rgba(228,28,121,.8)}
.tk-row__info{display:flex;flex-direction:column;gap:2px;min-width:0}
.tk-row__name{font-weight:800;font-size:1.06rem}
.tk-row__age{font-size:.84rem;color:var(--muted);font-weight:500}
.tk-row__price{text-align:right;display:flex;flex-direction:column;line-height:1.1}
.tk-row__now{font-weight:800;font-size:1.06rem;color:var(--navy);white-space:nowrap}
.tk-row__was{font-size:.8rem;color:var(--muted);text-decoration:line-through;white-space:nowrap}

/* Stepper */
.stepper{display:inline-flex;align-items:center;gap:2px;border:1.5px solid var(--line);
  border-radius:999px;padding:3px;background:#fff}
.stepper__btn{width:38px;height:38px;border:none;border-radius:50%;background:#f3f1fa;
  color:var(--navy);font-size:1.35rem;font-weight:800;line-height:1;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;transition:background .15s,transform .1s}
.stepper__btn:hover{background:var(--sky)}
.stepper__btn:active{transform:scale(.92)}
.stepper__btn:disabled{opacity:.35;cursor:not-allowed}
.stepper__btn:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.stepper__val{width:34px;text-align:center;border:none;background:transparent;
  font-weight:800;font-size:1.05rem;color:var(--navy);padding:0}
.stepper__val:focus-visible{outline:none}

/* Formulář */
.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:flex;flex-direction:column;gap:6px}
.field--full{grid-column:1 / -1}
.field__label{font-weight:700;font-size:.9rem;color:var(--navy)}
.field__hint{font-weight:500;color:var(--muted);font-size:.82rem}
.field input[type=text],.field input[type=email]{
  border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:.85em 1em;
  font-size:1rem;color:var(--ink);background:#fff;min-height:48px;transition:border-color .2s,box-shadow .2s}
.field input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(33,21,81,.12)}
.field input.invalid{border-color:var(--magenta);box-shadow:0 0 0 3px rgba(228,28,121,.12)}
.check{flex-direction:row;align-items:flex-start;gap:10px;font-size:.95rem;line-height:1.45;color:var(--ink)}
.check input{width:17px;height:17px;flex:0 0 auto;margin-top:.15em;accent-color:var(--magenta);cursor:pointer}
/* marketingový opt-in — benefit, vizuálně zvýrazněný (nudge), nepovinný */
.check--promo{background:#fff8e6;border:1.5px solid #ffdf8f;border-radius:var(--radius-sm);padding:11px 13px}
.check--promo input{accent-color:var(--orange)}
.check--promo span{font-size:.85rem;color:var(--ink)}
.check--promo strong{color:var(--navy)}
.check--promo .ic{display:inline-block;color:var(--orange);font-size:1.3em;vertical-align:-.22em;margin-right:.12em}
.check a{color:var(--magenta);font-weight:700;text-decoration:underline}

/* ---------- Sticky sumář ---------- */
.buy__side{position:sticky;top:84px}
.summary{background:#fff;color:var(--ink);border-radius:var(--radius);
  padding:26px;box-shadow:var(--shadow-lg);border-top:5px solid var(--yellow)}
.summary__title{font-size:1.18rem;text-transform:uppercase;margin-bottom:18px}
.summary__items{list-style:none;margin:0 0 16px;padding:0 0 16px;border-bottom:1.5px solid var(--line);
  display:flex;flex-direction:column;gap:10px;min-height:40px}
.summary__empty{color:var(--muted);font-size:.95rem}
.summary__item{display:flex;justify-content:space-between;gap:12px;font-size:.96rem}
.summary__item-name{font-weight:600}
.summary__item-name b{font-weight:800}
.summary__item-val{font-weight:700;white-space:nowrap}
/* Slevový kód */
.promo{display:flex;gap:8px;margin:0 0 14px}
.promo input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:.7em .9em;font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;min-height:46px;
  background:#fff;color:var(--ink);transition:border-color .2s,box-shadow .2s}
.promo input::placeholder{text-transform:none;letter-spacing:normal;color:var(--muted)}
.promo input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(33,21,81,.12)}
.promo__btn{flex:0 0 auto;border:none;border-radius:var(--radius-sm);background:var(--navy);color:#fff;
  font-weight:800;font-size:.9rem;padding:0 1.15em;min-height:46px;cursor:pointer;
  transition:background .2s,transform .1s}
.promo__btn:hover{background:#2c2070}
.promo__btn:active{transform:scale(.97)}
.promo__btn:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.promo__msg{margin:-6px 0 14px;font-size:.85rem;font-weight:700;line-height:1.4}
.promo__msg.is-ok{color:var(--green)}
.promo__msg.is-err{color:var(--magenta)}
.summary__lines{display:flex;flex-direction:column;gap:10px}
.summary__line{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:.98rem}
.summary__line[hidden]{display:none}   /* jinak by display:flex přebil atribut hidden */
.summary__line>span:first-child{display:inline-flex;align-items:center;gap:.45em}
.summary__line--save{color:var(--green);font-weight:700}
.summary__line--save .ic{font-size:1.15em}
.summary__total{margin-top:6px;padding-top:14px;border-top:1.5px solid var(--line);
  font-size:1.35rem;font-weight:800;color:var(--navy)}
/* Kontakt v souhrnu (kam poslat vstupenku) */
.summary__contact{margin-top:18px;padding-top:18px;border-top:1.5px solid var(--line);
  display:flex;flex-direction:column;gap:12px}
.check.is-invalid{color:var(--magenta)}
.check.is-invalid input{outline:2px solid var(--magenta);outline-offset:2px;border-radius:3px}
.form-error{display:flex;align-items:flex-start;gap:.4em;margin:-4px 0 0;
  font-size:.84rem;font-weight:700;color:var(--magenta);line-height:1.4}
.form-error[hidden]{display:none}   /* jinak by display:flex přebil atribut hidden */
.form-error .ic{font-size:1.1em;margin-top:.05em;flex:0 0 auto}
.summary__contact .check{font-size:.85rem}
.summary__pay{width:100%;margin-top:18px;white-space:nowrap}
.summary__test{display:flex;align-items:flex-start;gap:.5em;margin-top:14px;
  font-size:.82rem;color:var(--muted);line-height:1.4}
.summary__test .ic{color:var(--orange);font-size:1.1em;margin-top:.1em;flex:0 0 auto}
.summary__trust{list-style:none;margin:16px 0 0;padding:14px 0 0;border-top:1.5px solid var(--line);
  display:flex;flex-direction:column;gap:8px}
.summary__trust li{display:flex;align-items:center;gap:.55em;font-size:.9rem;font-weight:600;color:var(--navy)}
.summary__trust .yes{color:var(--green)}
.summary__trust .ic{font-size:1.2em}

/* ---------- Compare (walk-in vs online) ---------- */
.compare{background:var(--navy-deep)}
.compare-grid{display:grid;grid-template-columns:repeat(2,minmax(0,380px));gap:24px;
  justify-content:center;margin:36px auto 0}
.tk{position:relative;border-radius:var(--radius);padding:36px 30px;display:flex;flex-direction:column;gap:8px}
.tk--walkin{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);color:#fff}
.tk--online{background:#fff;color:var(--navy);box-shadow:var(--shadow-lg);border:3px solid var(--yellow)}
.tk__label{font-size:.8rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#bcb4dd;margin-bottom:6px}
.tk--online .tk__label{color:var(--magenta)}
.tk__title{font-size:1.45rem;margin-bottom:16px}
.tk__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.tk__list li{display:flex;align-items:flex-start;gap:.7em;font-weight:600;font-size:1rem}
.tk__list .ic{font-size:1.35em;margin-top:.05em}
.tk--walkin .ic{color:#8f86b8}
.tk--online .yes{color:var(--green)}
.tk__flag{position:absolute;top:-15px;right:24px;background:var(--magenta);color:#fff;
  font-weight:800;font-size:.8rem;letter-spacing:.04em;padding:.55em 1.1em;border-radius:8px;
  box-shadow:0 10px 22px -10px rgba(228,28,121,.8)}

/* ---------- Footer ---------- */
.footer{background:var(--navy-deep);padding:46px 0;color:#fff}
.footer__inner{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
.footer__logo{height:52px;width:auto}
.footer__addr{display:flex;align-items:center;gap:.5em;color:#cfc9e6;font-size:.96rem}
.footer__addr .ic{color:var(--yellow);font-size:1.15em}
.footer__copy{color:#8f86b8;font-size:.85rem}

/* ---------- Mobilní sticky lišta s totalem ---------- */
.mbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;
  align-items:center;justify-content:space-between;gap:14px;
  padding:12px 18px calc(12px + env(safe-area-inset-bottom));
  background:#fff;box-shadow:0 -12px 30px -16px rgba(0,0,0,.5);
  transition:transform .25s var(--ease)}
.mbar.is-hidden{transform:translateY(130%)}
.mbar__total{display:flex;flex-direction:column;line-height:1.1}
.mbar__total span{font-size:.72rem;color:var(--muted);font-weight:600}
.mbar__total b{font-size:1.3rem;color:var(--navy)}
.mbar .btn{padding:.85em 1.5em}

/* ---------- Platební krok (mock, ready pro Stripe) ---------- */
/* align-items:flex-start + margin:auto = vystředí když je místo, jinak scroll od vrchu
   (align-items:center by u vysokého modalu odřízl nedostupný vršek) */
.paywall{position:fixed;inset:0;z-index:90;display:flex;align-items:flex-start;justify-content:center;
  padding:16px;background:rgba(26,17,66,.82);backdrop-filter:blur(4px);overflow-y:auto;-webkit-overflow-scrolling:touch}
.paywall[hidden]{display:none}
.paysheet{position:relative;margin:auto;background:#fff;color:var(--ink);border-radius:var(--radius);
  padding:clamp(22px,4vw,34px);max-width:440px;width:100%;box-shadow:var(--shadow-lg);
  animation:pop .35s var(--ease)}
.paysheet__close{position:absolute;top:14px;right:16px;width:38px;height:38px;border:none;
  background:#f3f1fa;color:var(--navy);font-size:1.5rem;line-height:1;border-radius:50%;
  cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}
.paysheet__close:hover{background:var(--sky)}
.paysheet__close:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.paysheet__title{display:flex;align-items:center;gap:.5em;font-size:1.3rem;text-transform:uppercase}
.paysheet__title .ic{color:var(--magenta)}
.paysheet__total{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  margin:18px 0 22px;padding:14px 16px;background:#faf9ff;border:1.5px solid var(--line);border-radius:var(--radius-sm)}
.paysheet__total span{color:var(--muted);font-weight:600;font-size:.92rem}
.paysheet__total b{font-size:1.5rem;color:var(--navy)}

/* Express / peněženky */
.express{display:flex;flex-direction:column;gap:10px}
.wbtn{display:flex;align-items:center;justify-content:center;gap:.5em;width:100%;
  min-height:50px;border:none;border-radius:10px;cursor:pointer;font-weight:700;
  font-size:1.08rem;transition:transform .15s,opacity .2s,box-shadow .2s}
.wbtn:hover{transform:translateY(-2px)}
.wbtn:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.wbtn__logo{height:1.3em;width:auto}
.wbtn--apple{background:#000;color:#fff}
.wbtn--apple .wbtn__logo{margin-top:-.12em}
.wbtn--gpay{background:#000;color:#fff}
.wbtn--gpay .wbtn__logo{height:1.45em;background:#fff;border-radius:3px;padding:2px}

/* Oddělovač */
.paydiv{display:flex;align-items:center;gap:14px;margin:20px 0;color:var(--muted);font-size:.85rem}
.paydiv::before,.paydiv::after{content:"";flex:1;height:1.5px;background:var(--line)}

/* Kartová pole */
.cardform{display:flex;flex-direction:column;gap:14px}
.cardrow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.cardform .field{min-width:0}
.cardinput{position:relative}
.cardinput input{width:100%;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:.85em 3.4em .85em 1em;font-size:1rem;letter-spacing:.04em;min-height:48px;
  background:#fff;color:var(--ink);transition:border-color .2s,box-shadow .2s}
.cardform .field input{width:100%;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:.85em 1em;font-size:1rem;min-height:48px;background:#fff;color:var(--ink);
  transition:border-color .2s,box-shadow .2s}
.cardform input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(33,21,81,.12)}
.cardform input.invalid{border-color:var(--magenta);box-shadow:0 0 0 3px rgba(228,28,121,.12)}
.cardbrand{position:absolute;right:12px;top:50%;transform:translateY(-50%);
  font-weight:800;font-style:italic;font-size:.92rem;color:#1A1F71;letter-spacing:.02em}
.cardbrand--mc{display:inline-flex}
.cardbrand--mc i{width:15px;height:15px;border-radius:50%;display:block}
.cardbrand--mc i:first-child{background:#EB001B}
.cardbrand--mc i:last-child{background:#F79E1B;margin-left:-7px;mix-blend-mode:multiply}
.cardbrand--amex{color:#2671B9}
.paysheet__pay{width:100%;margin-top:14px}
/* Stripe Elements kontejnery */
.pay-loading{display:flex;align-items:center;justify-content:center;gap:.5em;padding:26px 0;
  color:var(--muted);font-weight:600;font-size:.95rem}
.pay-loading[hidden]{display:none}   /* jinak by display:flex přebil atribut hidden */
.pay-loading .ic{color:var(--orange);font-size:1.2em}
#express-checkout{margin-bottom:4px}
#payment-element{margin:6px 0 2px}
.pay-error{margin-top:12px;padding:10px 13px;background:#fdecf2;border:1.5px solid #f6b8d0;
  border-radius:var(--radius-sm);color:var(--magenta);font-size:.87rem;font-weight:600;line-height:1.4}
.paysheet__secure{display:flex;align-items:flex-start;gap:.5em;margin-top:16px;
  font-size:.8rem;color:var(--muted);line-height:1.45;overflow-wrap:anywhere}
.paysheet__secure>span{min-width:0}
.paysheet__secure .ic{color:var(--orange);font-size:1.05em;margin-top:.1em;flex:0 0 auto}

/* Přijímané karty */
.paybrands{display:flex;align-items:center;gap:10px;margin-top:14px;padding-top:14px;
  border-top:1.5px solid var(--line)}
.pb{display:inline-flex;align-items:center;justify-content:center;height:24px;padding:0 7px;
  border:1.5px solid var(--line);border-radius:5px;font-size:.72rem;font-weight:800;
  font-style:italic;background:#fff}
.pb--visa{color:#1A1F71}
.pb--amex{color:#2671B9;font-style:normal}
.pb--mc{gap:0;padding:0 8px}
.pb--mc i{width:13px;height:13px;border-radius:50%;display:block}
.pb--mc i:first-child{background:#EB001B}
.pb--mc i:last-child{background:#F79E1B;margin-left:-6px;mix-blend-mode:multiply}

/* ---------- Potvrzení / e-vstupenka ---------- */
.confirm{position:fixed;inset:0;z-index:100;display:flex;align-items:flex-start;justify-content:center;
  padding:16px;background:rgba(26,17,66,.82);backdrop-filter:blur(4px);overflow-y:auto;-webkit-overflow-scrolling:touch}
.confirm[hidden]{display:none}
.confirm__box{position:relative;margin:auto;background:#fff;color:var(--ink);border-radius:var(--radius);
  padding:clamp(26px,4vw,40px);max-width:520px;width:100%;text-align:center;
  box-shadow:var(--shadow-lg);animation:pop .35s var(--ease)}
@keyframes pop{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:none}}
.confirm__check{width:74px;height:74px;margin:0 auto 16px;border-radius:50%;
  background:rgba(23,166,115,.12);display:flex;align-items:center;justify-content:center}
.confirm__check .ic{font-size:2.6rem;color:var(--green)}
.confirm__title{font-size:1.5rem;text-transform:uppercase}
.confirm__sub{color:var(--muted);margin-top:10px}

/* ---------- Vstupenky (carousel na potvrzení) ---------- */
.btn[hidden]{display:none}
.tickets{margin:20px 0 4px}
.tickets__loading{display:flex;align-items:center;justify-content:center;gap:.5em;
  padding:34px 0;color:var(--muted);font-weight:600;font-size:.95rem}
.tickets__loading[hidden]{display:none}
.tickets__loading .ic{color:var(--orange);font-size:1.2em}
.tickets__viewport{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;
  scrollbar-width:none;border-radius:16px}
.tickets__viewport[hidden]{display:none}
.tickets__viewport::-webkit-scrollbar{display:none}
.tickets__track{display:flex}
.tkcard{flex:0 0 100%;scroll-snap-align:center;box-sizing:border-box;position:relative;
  background:#fff;border:2px solid var(--navy);border-radius:16px;padding:26px 20px 18px;
  text-align:center;overflow:hidden}
.tkcard__bar{position:absolute;top:0;left:0;right:0;height:7px;background:var(--magenta)}
.tkcard__logo{width:150px;height:auto;margin:8px auto 10px;display:block}
.tkcard__type{font-size:1.35rem;font-weight:800;text-transform:uppercase;margin:2px 0 3px;color:var(--navy)}
.tkcard__addr{font-size:.78rem;color:var(--muted);margin-bottom:14px}
.tkcard__qr{width:190px;height:190px;display:block;margin:0 auto 8px;border-radius:8px}
.tkcard__id{font-size:.9rem;font-weight:700;letter-spacing:.05em;color:var(--navy)}
.tkcard__valid{font-size:.66rem;color:#8f86b8;line-height:1.4;margin-top:8px}
.tickets__nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:14px}
.tickets__nav[hidden]{display:none}
.tickets__arrow{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line);
  background:#fff;color:var(--navy);font-size:1.4rem;line-height:1;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;transition:background .15s}
.tickets__arrow:hover{background:var(--sky)}
.tickets__arrow:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.tickets__count{font-weight:800;color:var(--muted);min-width:56px;text-align:center;font-size:.95rem}
.confirm__pdf{width:100%;margin:16px 0 2px}
.confirm__pdf[hidden]{display:none}
.eticket{display:flex;gap:18px;align-items:stretch;text-align:left;margin:24px 0;
  border:2px dashed var(--line);border-radius:var(--radius-sm);overflow:hidden;background:#faf9ff}
.eticket__main{flex:1;display:flex;flex-direction:column;gap:5px;padding:18px;min-width:0}
.eticket__brand{display:flex;align-items:center;gap:.45em;font-weight:800;color:var(--navy);font-size:.92rem}
.eticket__brand .ic{color:var(--magenta);font-size:1.15em}
.eticket__name{font-weight:800;font-size:1.1rem;margin-top:4px}
.eticket__meta{font-size:.82rem;color:var(--muted)}
.eticket__total{margin-top:auto;font-weight:800;color:var(--navy);font-size:1.05rem}
.eticket__qr{display:flex;align-items:center;justify-content:center;padding:14px;
  background:#fff;border-left:2px dashed var(--line)}
.eticket__qr canvas{display:block;border-radius:6px}

/* ---------- Reveal animace ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ---------- Responsive ---------- */
@media(max-width:920px){
  .buy__grid{grid-template-columns:1fr}
  .buy__side{position:static;order:2}   /* souhrn až za výběr + údaje */
  .buy__main{order:1}
  .mbar{display:flex}                    /* sticky lišta s živým totalem (rychlý přístup) */
  body{padding-bottom:84px}
}
@media(max-width:620px){
  .compare-grid{grid-template-columns:1fr}
  .tk-row{grid-template-columns:1fr auto;grid-template-areas:"info price" "stepper stepper"}
  .tk-row__info{grid-area:info}
  .tk-row__price{grid-area:price}
  .tk-row .stepper{grid-area:stepper;justify-self:stretch;justify-content:space-between}
  .tk-row .stepper__val{flex:1}
  .fields{grid-template-columns:1fr}
  .eticket{flex-direction:column}
  .eticket__qr{border-left:none;border-top:2px dashed var(--line)}
}

/* ---------- Reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none;transition:none}
  .confirm__box{animation:none}
  .btn,.stepper__btn{transition:none}
}
