/* ============================================================
   ADVENTS GIVEAWAY — Design System
   Brutalist Editorial · Merson Yellow/Black
   ============================================================ */

/* ---------- 1. TOKENS ---------- */
:root{
  /* Farben (aus dem bestehenden Build übernommen) */
  --yellow:#FFD400;
  --yellow-soft:#FFE45C;
  --black:#0D0D0D;
  --ink:#1A1A1A;
  --paper:#FFF9E8;
  --white:#FFFFFF;
  --red:#E63329;
  --gray:#6B6B6B;

  /* Typo */
  --f-display:"Anton",'Arial Narrow',sans-serif;
  --f-body:"Space Grotesk",system-ui,-apple-system,sans-serif;
  --f-mono:"Space Mono",ui-monospace,"SFMono-Regular",monospace;
  --f-hand:"Caveat",cursive;

  /* Fluid Type Scale */
  --t-hero:clamp(2.75rem,11vw,8rem);
  --t-h2:clamp(1.9rem,5.2vw,4rem);
  --t-h3:clamp(1.35rem,3vw,2.25rem);
  --t-body:clamp(1.0625rem,1.05vw,1.1875rem);
  --t-label:clamp(.6875rem,.85vw,.8125rem);

  /* Spacing */
  --gap:clamp(1rem,2.5vw,2rem);
  --section-y:clamp(4rem,9vw,8rem);
  --shell:min(1240px,92vw);

  /* Brutalist Chrome */
  --bd:3px solid var(--black);
  --bd-thick:4px solid var(--black);
  --shadow:6px 6px 0 var(--black);
  --shadow-lg:10px 10px 0 var(--black);
  --header-h:64px;
}

/* ---------- 2. RESET ---------- */
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--header-h) + 12px);
}
/* FIX: killt den horizontalen Overflow (alter Build: 12px Wackeln auf Mobile).
   NUR auf body — `overflow-x` am <html> setzt dessen scrollHeight auf 0 und
   bricht damit jede Viewport-Messung (IntersectionObserver, Reveal, Count-Up).
   `clip` statt `hidden`, damit position:sticky am Header weiter funktioniert. */
body{overflow-x:clip}
body{
  font-family:var(--f-body);
  font-size:var(--t-body);
  line-height:1.6;
  color:var(--black);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img,svg,video{display:block;max-width:100%;height:auto}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:none;padding:0}
a{color:inherit;text-decoration:none}
:focus-visible{outline:3px solid var(--red);outline-offset:3px}

/* ---------- 3. TYPO-PRIMITIVES ---------- */
.display{
  font-family:var(--f-display);
  text-transform:uppercase;
  line-height:.88;
  letter-spacing:-.01em;
  /* Anton braucht Luft oben, sonst clippen die Umlautpunkte */
  padding-top:.08em;
}
.h1{font-size:var(--t-hero)}
.h2{font-size:var(--t-h2)}
.h3{font-size:var(--t-h3)}
.hand{font-family:var(--f-hand);font-size:clamp(1.5rem,3.2vw,2.4rem);line-height:1.15;transform:rotate(-1.5deg)}
.mono{font-family:var(--f-mono);text-transform:uppercase;letter-spacing:.14em;font-size:var(--t-label)}
.lead{font-size:clamp(1.125rem,1.6vw,1.375rem);line-height:1.55;max-width:62ch}
.measure{max-width:68ch}

/* FIX: "[ CASES ]" brach im alten Build um — die ] landete auf Zeile 2 */
/* nowrap haelt die Klammern beim Text — bei kurzen Chips genau richtig.
   Lange Saetze in .bracket sprengen damit aber schmale Schirme, deshalb
   dort normaler Umbruch. */
.bracket{white-space:nowrap}
@media (max-width:760px){
  .bracket{white-space:normal}
}
.bracket::before{content:"[ "}
.bracket::after{content:" ]"}

/* ---------- 4. LAYOUT ---------- */
.shell{width:var(--shell);margin-inline:auto}
.section{padding-block:var(--section-y);position:relative}
.section--dark{background:var(--black);color:var(--paper)}
.section--yellow{background:var(--yellow)}
.stack>*+*{margin-top:var(--gap)}
.cluster{display:flex;flex-wrap:wrap;gap:var(--gap);align-items:center}

/* Sektions-Label: [ BEST CASES 2025 ] */
.eyebrow{
  display:inline-block;
  font-family:var(--f-mono);
  text-transform:uppercase;
  letter-spacing:.18em;
  font-size:var(--t-label);
  white-space:nowrap;
  background:var(--black);
  color:var(--yellow);
  padding:.5em .9em;
  margin-bottom:1.2rem;
}
.section--dark .eyebrow{background:var(--yellow);color:var(--black)}

/* ---------- 5. BUTTONS ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  font-family:var(--f-display);text-transform:uppercase;
  font-size:clamp(.95rem,1.5vw,1.15rem);letter-spacing:.02em;
  padding:.85em 1.5em;
  border:var(--bd);
  background:var(--yellow);color:var(--black);
  box-shadow:var(--shadow);
  transition:transform .12s ease,box-shadow .12s ease;
  white-space:nowrap;
  min-height:48px; /* Touch-Target */
}
.btn:hover{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--black)}
.btn:active{transform:translate(3px,3px);box-shadow:2px 2px 0 var(--black)}
.btn--dark{background:var(--black);color:var(--yellow)}
.btn--ghost{background:transparent;box-shadow:none}
.section--dark .btn--ghost{border-color:var(--paper);color:var(--paper)}
.btn--sm{padding:.6em 1em;font-size:.9rem;box-shadow:4px 4px 0 var(--black);min-height:40px}

/* ---------- 6. HEADER ---------- */
.header{
  position:sticky;top:0;z-index:100;
  background:var(--black);color:var(--paper);
  border-bottom:var(--bd);
  height:var(--header-h);
}
.header__inner{
  width:var(--shell);margin-inline:auto;height:100%;
  display:flex;align-items:center;gap:clamp(.75rem,2vw,2rem);
}
/* FIX: Logo brach 2-zeilig */
.logo{
  font-family:var(--f-display);text-transform:uppercase;
  font-size:clamp(.95rem,1.7vw,1.3rem);letter-spacing:.01em;
  white-space:nowrap;color:var(--yellow);
  display:flex;align-items:center;gap:.45em;flex-shrink:0;
}
.logo__star{color:var(--red);font-size:.85em}
.nav{display:flex;gap:clamp(.5rem,1.4vw,1.4rem);margin-inline:auto}
.nav a{
  font-family:var(--f-mono);text-transform:uppercase;
  letter-spacing:.1em;font-size:.72rem;
  white-space:nowrap;padding:.5em .2em;
  color:var(--paper);opacity:.85;
  border-bottom:2px solid transparent;
  transition:opacity .15s,border-color .15s;
}
.nav a:hover,.nav a[aria-current="true"]{opacity:1;border-bottom-color:var(--yellow)}

/* FIX: Countdown zeigte "NOCH 2069:36:06" — 2069 Stunden, unlesbar */
.hdr-count{
  display:flex;align-items:baseline;gap:.45em;
  font-family:var(--f-mono);white-space:nowrap;flex-shrink:0;
  border:2px solid var(--red);padding:.35em .7em;
}
.hdr-count__lbl{font-size:.6rem;letter-spacing:.12em;color:var(--red);text-transform:uppercase}
.hdr-count__d{font-family:var(--f-display);font-size:1.05rem;color:var(--yellow);line-height:1}
.hdr-count__t{font-size:.72rem;color:var(--paper);opacity:.75;font-variant-numeric:tabular-nums}

.burger{display:none;width:44px;height:44px;border:2px solid var(--yellow);flex-direction:column;
  gap:5px;align-items:center;justify-content:center;flex-shrink:0;margin-left:auto}
.burger span{display:block;width:22px;height:2.5px;background:var(--yellow);transition:transform .2s,opacity .2s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

/* ---------- 7. MARQUEE (gekapselt → kein Overflow) ---------- */
.marquee{
  overflow:hidden;              /* clippt die überbreite Spur */
  background:var(--black);
  border-block:var(--bd);
  padding-block:.55em;
  --speed:38s;
}
.marquee__track{display:flex;width:max-content;animation:marquee var(--speed) linear infinite}
.marquee__group{display:flex;align-items:center;flex-shrink:0}
.marquee__item{
  font-family:var(--f-display);text-transform:uppercase;
  font-size:clamp(1rem,1.9vw,1.5rem);color:var(--yellow);
  white-space:nowrap;padding-inline:.7em;
  display:inline-flex;align-items:center;gap:.7em;
}
.marquee__item::after{content:"★";color:var(--red);font-size:.75em}
@keyframes marquee{to{transform:translateX(-50%)}}
.marquee:hover .marquee__track{animation-play-state:paused}

/* ---------- 8. REVEAL ---------- */
/* FIX: Im alten Build blieb der Hero-Text auf opacity:0 stecken.
   Hier: nichts ist per Default versteckt — .reveal wird erst per JS
   scharf geschaltet (Klasse .js-reveal am <html>). Ohne JS = alles sichtbar. */
.js-reveal .reveal{opacity:0;transform:translateY(18px);
  transition:opacity .5s ease-out,transform .5s ease-out}
.js-reveal .reveal.is-in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
  .js-reveal .reveal{opacity:1!important;transform:none!important}
}

/* ---------- 9. HERO ---------- */
.hero{
  background:var(--yellow);
  border-bottom:var(--bd);
  position:relative;overflow:hidden;
  padding-block:clamp(1.5rem,4vw,3.5rem) clamp(2.5rem,5vw,4.5rem);
}
.hero__dots{
  position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(var(--black) 1px,transparent 1px);
  background-size:22px 22px;
}
.hero__inner{position:relative;z-index:1}
.hero__badge{
  display:inline-block;background:var(--paper);border:var(--bd);
  box-shadow:4px 4px 0 var(--black);padding:.55em .9em;margin-bottom:1.4rem;
}
.hero h1{margin-bottom:1rem}
.hero h1 .line-mark{
  background:var(--paper);border:var(--bd);
  display:inline-block;padding:.02em .18em;transform:rotate(-1.2deg);
  box-shadow:5px 5px 0 var(--black);
}
.hero__lead{margin-bottom:1.6rem;font-weight:500}

/* Countdown im Hero */
.countdown{display:flex;gap:.5rem;flex-wrap:wrap}
.count-cell{
  background:var(--black);color:var(--yellow);
  border:var(--bd);box-shadow:var(--shadow);
  padding:.5em .75em;min-width:72px;text-align:center;
}
.count-cell__n{font-family:var(--f-display);font-size:clamp(1.6rem,4vw,2.6rem);line-height:1;
  font-variant-numeric:tabular-nums;display:block}
.count-cell__l{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.14em;opacity:.8;margin-top:.3em;display:block}

.hero__cta{display:flex;flex-wrap:wrap;gap:.85rem;align-items:center;margin-top:1.6rem}
.hero__stats{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.8rem}
.stat-chip{
  font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;
  border:2px solid var(--black);padding:.45em .8em;background:var(--paper);white-space:nowrap;
}

/* ---------- 10. MOBILE ---------- */
@media (max-width:900px){
  .nav{
    position:fixed;inset:var(--header-h) 0 auto 0;
    background:var(--black);border-bottom:var(--bd);
    flex-direction:column;gap:0;margin:0;
    padding:.5rem var(--gap) 1.25rem;
    transform:translateY(-120%);transition:transform .25s ease;
    max-height:calc(100dvh - var(--header-h));overflow-y:auto;
  }
  .nav[data-open="true"]{transform:translateY(0)}
  .nav a{font-size:.95rem;padding:.9em 0;border-bottom:1px solid rgba(255,249,232,.18)}
  .nav .btn{margin-top:1rem;width:100%}
  .burger{display:flex}
  /* Header-Countdown auf Mobile: nur die Tage, Rest wäre zu eng */
  .hdr-count{padding:.3em .5em;margin-left:auto}
  .hdr-count__t,.hdr-count__lbl{display:none}
  .hdr-count__d::after{content:" TAGE";font-size:.6em;letter-spacing:.1em}
}
@media (max-width:560px){
  .count-cell{min-width:0;flex:1 1 calc(25% - .5rem);padding:.45em .3em}
  .hero__cta .btn{width:100%}
  .btn{font-size:1rem}
}

/* ---------- 11. SKIP-LINK ---------- */
.skip{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--black);color:var(--yellow);
  padding:.8em 1.2em;font-family:var(--f-mono);font-size:.8rem;
}
.skip:focus{left:.5rem;top:.5rem}
/* Countdown abgelaufen */
[data-over="true"]{opacity:.55}

/* ---------- 12. HERO-HEADLINE: Zeilen-Kollision ----------
   Bricht .line-mark auf Mobile mehrzeilig um, ueberlappten die
   Boxen bei line-height .88 die Nachbarzeilen. */
.hero h1{line-height:.95}
.hero h1 .line-mark{
  /* jede umgebrochene Zeile bekommt ihre eigene Box statt einer durchgehenden */
  -webkit-box-decoration-break:clone;
  box-decoration-break:clone;
  line-height:1.02;
}
@media (min-width:901px){
  .hero h1{line-height:.9}
}
@media (max-width:560px){
  .hero h1{line-height:1.0}
  .hero h1 .line-mark{box-shadow:4px 4px 0 var(--black);transform:rotate(-.8deg)}
  /* Punkteraster hinter dem Fliesstext beruhigen */
  .hero__dots{opacity:.28}
}

/* ---------- 13. BEST CASES ---------- */
.case-grid{
  display:grid;gap:clamp(1rem,2vw,1.75rem);margin-top:2.5rem;
  grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));
}
.case{background:var(--paper);color:var(--black);border:var(--bd);box-shadow:var(--shadow);display:flex;flex-direction:column}
.case__media{position:relative;display:block;aspect-ratio:9/16;overflow:hidden;border-bottom:var(--bd);background:var(--ink)}
.case__media img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.case:hover .case__media img{transform:scale(1.04)}
.case__num{
  position:absolute;top:0;left:0;background:var(--yellow);color:var(--black);
  font-family:var(--f-display);font-size:1.15rem;padding:.25em .55em;border-right:var(--bd);border-bottom:var(--bd);
}
.case__ratio{position:absolute;top:.5rem;right:.5rem;background:rgba(13,13,13,.82);color:var(--paper);
  padding:.3em .55em;font-size:.6rem;letter-spacing:.1em}
.case__play{
  position:absolute;left:0;right:0;bottom:0;background:var(--black);color:var(--yellow);
  font-family:var(--f-mono);font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;
  padding:.7em;text-align:center;transform:translateY(100%);transition:transform .2s ease;
}
.case__media:hover .case__play,.case__media:focus-visible .case__play{transform:none}
.case__body{padding:1rem;display:flex;flex-direction:column;gap:.55rem;flex:1}
.case__brand{font-size:1.05rem;line-height:1.05}
.case__sub{font-family:var(--f-mono);font-size:.6rem;letter-spacing:.1em;color:var(--gray)}
.case__views{display:flex;align-items:baseline;gap:.3em;flex-wrap:wrap;margin-top:auto}
.case__views-n,.case__views-k{font-family:var(--f-display);font-size:2rem;line-height:1;font-variant-numeric:tabular-nums}
.case__views-l{font-size:.55rem;color:var(--gray);letter-spacing:.1em}
.case__plats{display:flex;flex-wrap:wrap;gap:.35rem;padding-top:.6rem;border-top:2px solid var(--black)}
.case__plat{
  font-family:var(--f-mono);font-size:.62rem;letter-spacing:.05em;
  border:2px solid var(--black);padding:.4em .55em;background:var(--white);
  min-height:34px;display:inline-flex;align-items:center;gap:.25em;
  transition:background .15s,color .15s;
}
.case__plat:hover{background:var(--black);color:var(--yellow)}
.case__plat-n{font-weight:700}
.case-note{
  display:inline-block;margin-top:2.5rem;background:var(--yellow);color:var(--black);
  padding:.6em 1em;border:var(--bd);font-size:.7rem;white-space:normal;
}

/* ---------- 14. PREIS-KALKULATOR ---------- */
.calc{background:var(--white);border:var(--bd-thick);box-shadow:var(--shadow-lg);
  padding:clamp(1.25rem,3vw,2.5rem);margin-top:2.5rem}
.calc__value{display:block;font-size:clamp(2rem,6vw,3.5rem);line-height:1;margin-bottom:.6rem;
  font-variant-numeric:tabular-nums}
.calc__range{
  -webkit-appearance:none;appearance:none;width:100%;height:16px;
  background:var(--paper);border:var(--bd);cursor:pointer;
}
.calc__range::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:34px;height:34px;
  background:var(--yellow);border:var(--bd);cursor:grab;box-shadow:3px 3px 0 var(--black);
}
.calc__range::-moz-range-thumb{
  width:34px;height:34px;background:var(--yellow);border:var(--bd);
  cursor:grab;box-shadow:3px 3px 0 var(--black);border-radius:0;
}
.calc__range:active::-webkit-slider-thumb{cursor:grabbing}
.calc__scale{display:flex;justify-content:space-between;font-size:.6rem;margin-top:.5rem;color:var(--gray)}
.calc__tier{display:inline-block;background:var(--black);color:var(--yellow);
  padding:.5em .9em;margin:1.4rem 0 1.2rem;font-size:.68rem}
.calc__out{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}
.calc__card{border:var(--bd);padding:1rem;background:var(--paper)}
.calc__card--duo{background:var(--yellow)}
.calc__price{font-size:clamp(1.6rem,4vw,2.4rem);line-height:1;margin-top:.4rem;font-variant-numeric:tabular-nums}
.calc__save{font-size:.65rem;color:var(--red);margin-top:.5rem;font-weight:700}
.calc__table{width:100%;border-collapse:collapse;margin-top:1.8rem;font-size:.9rem}
.calc__table caption{font-size:.65rem;text-align:left;padding-bottom:.6rem;color:var(--gray)}
.calc__table th,.calc__table td{border:2px solid var(--black);padding:.55em .7em;text-align:left;
  font-variant-numeric:tabular-nums}
.calc__table thead th{background:var(--black);color:var(--yellow);font-family:var(--f-mono);
  font-size:.62rem;letter-spacing:.08em;text-transform:uppercase}
.calc__table tbody th{font-weight:500}
.calc__table tr[data-active="true"]{background:var(--yellow)}
.calc__table tr[data-active="true"] th::after{
  content:" ← IHRE STUFE";font-family:var(--f-mono);font-size:.58rem;letter-spacing:.08em;white-space:nowrap;
}
.calc__disclaimer{font-size:.6rem;color:var(--gray);margin-top:1rem;line-height:1.6}
/* Tabelle auf Mobile horizontal scrollbar statt Seiten-Overflow */
@media (max-width:620px){
  .calc__table{display:block;overflow-x:auto;white-space:nowrap}
  .calc__table tr[data-active="true"] th::after{content:" ←"}
}

/* ---------- 15. PAKET-KARTEN ---------- */
.pkg-grid{display:grid;gap:clamp(1.25rem,2.5vw,2rem);margin-top:3rem;
  grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr))}
.pkg{background:var(--white);border:var(--bd-thick);box-shadow:var(--shadow);
  padding:clamp(1.25rem,2.5vw,2rem);display:flex;flex-direction:column;gap:.75rem;position:relative}
.pkg--feat{background:var(--yellow)}
.pkg__ribbon{background:var(--red);color:var(--white);font-size:.6rem;padding:.5em .8em;
  align-self:flex-start;letter-spacing:.08em;margin-bottom:.3rem}
.pkg__price{font-size:clamp(1.8rem,4.5vw,2.6rem);line-height:1}
.pkg__note{font-size:.62rem;color:var(--gray)}
.pkg--feat .pkg__note{color:var(--ink)}
.pkg__tag{font-size:.68rem;border-top:2px solid var(--black);border-bottom:2px solid var(--black);
  padding:.6em 0;margin-top:.4rem}
.pkg__list{list-style:none;padding:0;display:flex;flex-direction:column;gap:.6rem;font-size:.95rem;line-height:1.5}
.pkg__list li{padding-left:1.4em;position:relative}
.pkg__list li::before{content:"★";position:absolute;left:0;color:var(--red);font-size:.85em}
.pkg .btn{margin-top:auto;align-self:flex-start}

/* ---------- 16. FAQ (natives details/summary) ---------- */
.faq{margin-top:2.5rem;border-top:var(--bd)}
.faq__item{border-bottom:var(--bd)}
.faq__q{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  font-family:var(--f-display);text-transform:uppercase;
  font-size:clamp(1rem,2vw,1.35rem);line-height:1.2;
  padding:1.1rem .2rem;cursor:pointer;list-style:none;min-height:56px;
}
.faq__q::-webkit-details-marker{display:none}
.faq__q:hover{color:var(--red)}
.faq__ico{position:relative;width:20px;height:20px;flex-shrink:0}
.faq__ico::before,.faq__ico::after{
  content:"";position:absolute;background:currentColor;transition:transform .2s ease;
}
.faq__ico::before{inset:9px 0;height:2.5px}
.faq__ico::after{inset:0 9px;width:2.5px}
.faq__item[open] .faq__ico::after{transform:scaleY(0)}
.faq__a{padding:0 .2rem 1.3rem;max-width:70ch;line-height:1.65}

/* ---------- 17. KONTAKT-FORMULAR ---------- */
.kontakt-grid{
  display:grid;gap:clamp(1.25rem,3vw,2.5rem);margin-top:2.5rem;
  grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start;
}
@media (max-width:860px){.kontakt-grid{grid-template-columns:1fr}}

.form{background:var(--paper);color:var(--black);border:var(--bd-thick);
  box-shadow:var(--shadow-lg);padding:clamp(1.25rem,3vw,2rem);display:flex;flex-direction:column;gap:1.25rem}
.form__step{font-size:.65rem;letter-spacing:.14em;border-bottom:2px solid var(--black);padding-bottom:.6rem}
.field{display:flex;flex-direction:column;gap:.4rem;border:0;padding:0;margin:0;min-width:0}
.field label,.field legend{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}
.field .req{color:var(--red)}
.field .opt{color:var(--gray);text-transform:none;letter-spacing:0}
.field input[type=text],.field input[type=email],.field textarea{
  border:var(--bd);background:var(--white);padding:.75em .8em;
  font-size:1rem;min-height:48px;width:100%;
}
.field textarea{min-height:110px;resize:vertical}
.field input:focus,.field textarea:focus{outline:3px solid var(--red);outline-offset:2px}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"]{border-color:var(--red);background:#FFF0EF}
.field__err{color:var(--red);font-size:.78rem;font-weight:700}

.choice{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr))}
.choice__opt{cursor:pointer;display:block}
.choice__opt input{position:absolute;opacity:0;width:0;height:0}
.choice__box{
  display:flex;flex-direction:column;gap:.2rem;height:100%;
  border:var(--bd);padding:.8rem;background:var(--white);
  transition:background .15s,box-shadow .15s;min-height:80px;
}
.choice__opt:hover .choice__box{box-shadow:4px 4px 0 var(--black)}
.choice__opt input:checked + .choice__box{background:var(--yellow);box-shadow:4px 4px 0 var(--black)}
.choice__opt input:focus-visible + .choice__box{outline:3px solid var(--red);outline-offset:2px}
.choice__t{font-family:var(--f-display);font-size:1.05rem;line-height:1}
.choice__p{font-size:.85rem}
.choice__l{font-size:.55rem;color:var(--gray);margin-top:auto}
.choice__opt input:checked + .choice__box .choice__l{color:var(--ink)}
.form__hint{font-size:.62rem;color:var(--gray);line-height:1.6}
.form__hint[data-state="error"]{color:var(--red);font-weight:700}
.form__hint[data-state="ok"]{color:#1B7F3B;font-weight:700}

.kontakt-direct{border:var(--bd);border-color:var(--paper);padding:clamp(1rem,2.5vw,1.5rem);
  display:flex;flex-direction:column;gap:.9rem}
.kontakt-direct__hint{font-size:.9rem;line-height:1.55;opacity:.85}
.copy-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;
  border-bottom:1px solid rgba(255,249,232,.25);padding-bottom:.7rem}
.copy-row__val{font-family:var(--f-mono);font-size:.9rem;word-break:break-all;flex:1 1 auto}
.copy-row__val:hover{color:var(--yellow)}
.copy-btn{background:var(--yellow);color:var(--black);box-shadow:none;flex-shrink:0}
.copy-btn[data-copied="true"]{background:#1B7F3B;color:var(--white)}
.kontakt-direct__deadline{font-size:.65rem;color:var(--red);margin-top:.3rem}
.kontakt-direct__site{font-family:var(--f-display);font-size:1.1rem;color:var(--yellow)}

/* ---------- 18. FOOTER ---------- */
.footer{background:var(--black);color:var(--paper);border-top:var(--bd);
  padding-block:clamp(2.5rem,6vw,4.5rem)}
.footer__claim{font-size:clamp(1.8rem,6vw,4rem);line-height:.95;color:var(--yellow)}
.footer__cta{margin-top:1.5rem}
.footer__contact{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;
  margin-top:2rem;font-size:.72rem;padding-top:1.5rem;border-top:1px solid rgba(255,249,232,.22)}
.footer__contact a:hover{color:var(--yellow)}
.footer__nav,.footer__legal{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:1.2rem;font-size:.68rem}
.footer__nav a:hover,.footer__legal a:hover{color:var(--yellow)}
.footer__legal{padding-top:1.2rem;border-top:1px solid rgba(255,249,232,.22)}
.footer__legal a{text-decoration:underline;text-underline-offset:.25em;text-transform:none;letter-spacing:.04em}
.footer__copy{margin-top:1.5rem;font-size:.6rem;color:var(--gray);line-height:1.7}

/* ---------- 19. FIX: Nav-Regeln ueberschrieben den CTA-Button ----------
   `.nav a` ist spezifischer als `.btn` und faerbte den Button-Text auf
   Paper-Weiss — weiss auf Gelb ist praktisch unlesbar (~1.7:1).
   Ausserdem setzte es einen transparenten border-bottom auf den Rahmen. */
.nav a.btn{
  color:var(--black);
  opacity:1;
  border:var(--bd);
  padding:.6em 1em;
  letter-spacing:.02em;
  font-family:var(--f-display);
  font-size:.9rem;
}
.nav a.btn:hover{border-color:var(--black);color:var(--black)}
.nav a.btn[aria-current="true"]{border-color:var(--black)}

/* ---------- 20. FIX: Abstand nach Display-Headlines ----------
   line-height .88-.95 laesst Versalien optisch in den Folgetext ragen,
   wenn direkt danach ein Absatz steht. */
.h2 + p,.h2 + .lead,.h3 + p{margin-top:1.1rem}
.section .h2{margin-bottom:.2em}

/* ---------- 21. FIX: mehrzeilige Display-Headlines ----------
   .88 funktioniert nur bei einzeiligen Riesen-Headlines. Sobald eine
   H2/H3 umbricht, kollidieren Versalien und Umlaute der Zeilen. */
.h2{line-height:1.05}
.h3{line-height:1.08}

/* ---------- 22. HONEYPOT ----------
   Muss fuer Menschen unsichtbar sein, aber im DOM stehen und fuer Bots
   ausfuellbar wirken. display:none wuerde von manchen Bots erkannt. */
.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}

/* Erfolgs-/Fehlerzustand des Formulars */
.form__hint[data-state="senden"]{color:var(--gray)}
.form--ok{text-align:center;padding:2rem 1rem}
.form--ok .form__ok-title{font-family:var(--f-display);font-size:clamp(1.4rem,3vw,2rem);
  text-transform:uppercase;line-height:1.05;margin-bottom:.8rem}
.form__ok-icon{font-size:2.5rem;line-height:1;margin-bottom:.6rem}

/* ---------- 23. TERMIN-PICKER (Schritt 2 beim Beratungs-Call) ---------- */
.termin{border:var(--bd);padding:1rem;background:var(--white)}
.termin legend{padding-inline:.5em}
.termin__label{font-size:.62rem;color:var(--gray);margin:.9rem 0 .5rem}
.termin__label:first-of-type{margin-top:.3rem}
.termin__tage{display:grid;grid-template-columns:repeat(5,1fr);gap:.4rem}
.termin__zeiten{display:flex;flex-wrap:wrap;gap:.4rem}
.termin__opt{
  border:2px solid var(--black);background:var(--paper);
  padding:.5em .3em;min-height:48px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1em;
  font-family:var(--f-mono);font-size:.68rem;line-height:1.1;text-align:center;
  transition:background .12s,color .12s;
}
.termin__opt:hover{background:var(--yellow-soft)}
.termin__opt[aria-pressed="true"]{background:var(--black);color:var(--yellow)}
.termin__opt-tag{font-size:.55rem;opacity:.7;text-transform:uppercase;letter-spacing:.06em}
.termin__opt-num{font-family:var(--f-display);font-size:1rem}
.termin__zeiten .termin__opt{flex:0 0 auto;min-width:72px;padding-inline:.7em}
.termin__gewaehlt{font-size:.65rem;margin-top:.8rem;min-height:1.2em}
.termin__gewaehlt[data-gesetzt="true"]{color:#1B7F3B;font-weight:700}
@media (max-width:460px){
  .termin__tage{grid-template-columns:repeat(3,1fr)}
}

/* ---------- 24. EXIT-INTENT ---------- */
.exit{
  position:fixed;inset:0;z-index:200;
  background:rgba(13,13,13,.72);
  display:flex;align-items:center;justify-content:center;padding:var(--gap);
  animation:exitEin .18s ease-out;
}
.exit[hidden]{display:none}
@keyframes exitEin{from{opacity:0}to{opacity:1}}
.exit__box{
  position:relative;background:var(--yellow);color:var(--black);
  border:var(--bd-thick);box-shadow:var(--shadow-lg);
  padding:clamp(1.5rem,4vw,2.5rem);max-width:min(520px,100%);
}
.exit__box>*+*{margin-top:.9rem}
.exit__zu{
  position:absolute;top:.4rem;right:.6rem;
  font-size:1.8rem;line-height:1;width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
}
.exit__zu:hover{color:var(--red)}
.exit__cta{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.4rem}

/* ---------- 25. PHASEN-ZUSTAND ----------
   Die Seite laeuft durch drei Phasen: Anmeldung (bis 15.11.),
   Wartezeit (bis 27.11.) und Giveaway live (ab 27.11.). */
.live-stempel{
  display:inline-block;background:var(--paper);color:var(--black);
  border:var(--bd);box-shadow:4px 4px 0 var(--black);
  padding:.25em .7em;font-size:clamp(1.1rem,2.5vw,1.6rem);
  text-transform:uppercase;transform:rotate(-3deg);margin-bottom:.8rem;
}
.live-stempel[hidden]{display:none}
/* In der Live-Phase zaehlt kein Anmeldeschluss mehr herunter */
[data-phase="live"] .countdown,
[data-phase="live"] .hdr-count{display:none}

/* Social-Proof im Hero + Formular-Intro */
.hero__proof{margin-top:1.6rem;font-weight:500;max-width:52ch;font-size:1.02rem}
.form__intro{font-size:.95rem;line-height:1.5;color:var(--gray)}

/* ---------- 26. SANTA-STEVE ----------
   Die Comicfigur aus der ersten Fassung. Rein dekorativ, deshalb
   aria-hidden und ohne Alt-Text. */

/* Im Hero: rechts hinter dem Inhalt. Der Text bleibt oben (hero__inner
   hat z-index:1), die Figur darf sich also dahinterschieben. */
.hero__santa{
  position:absolute;
  /* Ganz im Bild lassen: angeschnittene Figuren wirken hier wie ein
     Fehler, nicht wie Absicht — der Geschenksack ragte sonst raus. */
  right:clamp(1rem,3vw,4rem);
  /* Auf Hoehe von Lead-Text und Countdown, rechts daneben. An den unteren
     Hero-Rand geheftet war er unter dem ersten Bildschirm — man musste
     scrollen, um ihn ueberhaupt zu sehen. */
  top:46%;
  width:clamp(180px,24vw,320px);
  height:auto;
  z-index:0;
  pointer-events:none;
}

/* Schmalere Schirme: kein absolutes Positionieren mehr — die Figur stellt
   sich als eigenes Element in den Fluss, rechts neben den Countdown-Bereich.
   So bleibt sie sichtbar, ohne Text zu überdecken. */
@media (max-width:900px){
  .hero__santa{
    position:static;
    display:block;
    width:clamp(150px,34vw,230px);
    margin:.5rem 0 0 auto;   /* rechtsbündig */
  }
}
/* Handy: etwas kleiner, aber weiterhin sichtbar — die Figur ist ein
   Markenelement, kein blosses Dekor. */
@media (max-width:560px){
  .hero__santa{
    width:clamp(130px,42vw,190px);
    margin-top:.25rem;
  }
}

/* Beim Anmeldeformular: freundlicher Abschluss der Infospalte */
.kontakt__santa{
  display:block;
  width:min(220px,60%);
  height:auto;
  margin-top:2rem;
  margin-inline:auto;
}
@media (max-width:760px){
  .kontakt__santa{width:min(160px,45%);margin-top:1.5rem}
}
