/* ════════════════════════════════════════════════════════════════════════════════
   Oldtimer-Club München — „KEIN MUSEUM. EIN KLUB."
   Cinematische Heritage-Optik: Racing Green · Antikgold · Tabakbraun.
   Design-first, vanilla, self-hosted. Subtile Effekte, klare Hierarchie.
   ════════════════════════════════════════════════════════════════════════════════ */

/* Self-hosted Fonts (DSGVO, keine externen Requests). Display: Cormorant · Body/UI: Geist.
   Inline statt separater fonts.css → eine render-blockende Anfrage weniger in der kritischen Kette. */
@font-face{font-family:"Cormorant";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/cormorant-400.woff2") format("woff2")}
@font-face{font-family:"Cormorant";font-style:italic;font-weight:400;font-display:swap;src:url("assets/fonts/cormorant-400-italic.woff2") format("woff2")}
@font-face{font-family:"Cormorant";font-style:normal;font-weight:500;font-display:swap;src:url("assets/fonts/cormorant-500.woff2") format("woff2")}
@font-face{font-family:"Cormorant";font-style:italic;font-weight:500;font-display:swap;src:url("assets/fonts/cormorant-500-italic.woff2") format("woff2")}
@font-face{font-family:"Cormorant";font-style:normal;font-weight:600;font-display:swap;src:url("assets/fonts/cormorant-600.woff2") format("woff2")}
@font-face{font-family:"Cormorant";font-style:italic;font-weight:600;font-display:swap;src:url("assets/fonts/cormorant-600-italic.woff2") format("woff2")}
@font-face{font-family:"Geist";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/geist-400.woff2") format("woff2")}
@font-face{font-family:"Geist";font-style:normal;font-weight:500;font-display:swap;src:url("assets/fonts/geist-500.woff2") format("woff2")}
@font-face{font-family:"Geist";font-style:normal;font-weight:600;font-display:swap;src:url("assets/fonts/geist-600.woff2") format("woff2")}

:root{
  /* Canvas — Dark Mode: tiefer Petrol/Anthrazit statt Elfenbein (gleiche Palette, nur dunkel) */
  --bg:#0e161a; --bg-2:#131e23;
  /* Blau (aus dem Logo) — Akzent; --blue-deep im Dark Mode AUFGEHELLT (Labels/Eyebrows lesbar auf Dunkel) */
  --blue:#3f7e98; --blue-deep:#82adbf;
  /* Gold (Hex + RGB-Kanäle für alpha-fähige Verläufe/Linien). Dark Mode: gold-ink/gold-text AUFGEHELLT,
     damit die Gold-Akzent-/Kursivwörter auf dunklem Grund lesbar bleiben. */
  --gold:#c6a052; --gold-soft:#dcc086; --gold-ink:#cba869;
  --gold-text:#dcc086;   /* helles Akzent-Gold für KLEINEN Text auf Dunkel (gut lesbar) */
  --gold-rgb:198 160 82; --gold-soft-rgb:220 192 134; --gold-ink-rgb:154 122 47;
  /* Dunkle Kino-Bühnen-Palette (Petrol) — für Hero-Medien, Film, Galerie */
  --media-bg:#0e110c; --film-backdrop:#0a151c;   /* dunkler Petrol-Grund hinterm Film (Hue wie die Nachbarsektionen, kein Schwarz) */
  --ink-1:#173a46; --ink-2:#102a33; --ink-3:#0a1920; --ink-4:#0c2027;
  /* Text — Dark Mode: hell (war im Light Mode tiefes Petrol-Navy). Gleiche Rollen, invertierte Helligkeit. */
  --cream:#e9eff0; --cream-2:#aebcc1; --sage:#7f939b;
  --ink:#0f2630;   /* bleibt dunkel — ist die Schrift AUF den Gold-Buttons */
  /* Schrift auf blauen Plates/Hero-Asset (hell) */
  --on-media:#eef4f5; --on-media-dim:rgba(233,242,244,.72);
  /* Linien — Dark Mode: Haarlinien hell statt dunkel */
  --line:rgb(var(--gold-soft-rgb)/.28); --line-soft:rgba(233,242,244,.12); --line-strong:rgba(130,173,191,.42);
  /* System */
  --display:"Cormorant",ui-serif,Georgia,"Times New Roman",serif;
  --sans:"Geist",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --wrap:1280px; --pad:clamp(20px,5vw,72px);
  /* EINE vertikale Rhythmus-Einheit für ALLE Sektionen (vorher 6 verschiedene vh-Werte → inkonsistente Lücken).
     Sektions-Padding symmetrisch = --sec-y → jede Inhalt-zu-Inhalt-Lücke ist gleich (2·--sec-y). */
  --sec-y:clamp(76px,10vh,124px);
  --ease:cubic-bezier(.22,.61,.36,1); --ease-out:cubic-bezier(.16,1,.3,1);
  /* Tracking-Skala für gesperrte Uppercase-Labels (zwei Stufen statt sechs Ad-hoc-Werte) */
  --track-label:.22em; --track-label-tight:.18em;
  /* Radius-Skala */
  --r-xs:2px; --r-sm:3px; --r-lg:9px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--cream);font-family:var(--sans);
  font-size:clamp(1rem,.55vw + .9rem,1.12rem);line-height:1.65;font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip;
  font-feature-settings:"liga","kern";letter-spacing:.005em}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:var(--gold);color:var(--ink)}
/* Fokus-Ring untergrund-unabhängig: dunkler Outline (sichtbar auf hellem Canvas) + heller Halo
   (sichtbar auf den dunklen Film-/Galerie-Bühnen, wo Blau allein <3:1 wäre). */
:focus-visible{outline:2px solid var(--blue-deep);outline-offset:2px;
  box-shadow:0 0 0 4px rgba(238,244,245,.55);border-radius:var(--r-sm)}

/* ── Atmosphäre: Korn + Vignette + Lichtschein ─────────────────────────────── */
.grain,.vign{position:fixed;inset:0;pointer-events:none;z-index:9}
.grain{z-index:60;opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.vign{background:radial-gradient(135% 105% at 50% -8%,transparent 58%,rgba(21,50,62,.06) 100%)}
@media (prefers-reduced-motion:reduce){.grain{display:none}}

.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad)}
em{font-style:italic}

/* Kicker — Gold-Kapitälchen mit Strich */
.kicker{display:inline-flex;align-items:center;gap:.7em;font-size:.72rem;font-weight:600;
  letter-spacing:var(--track-label);text-transform:uppercase;color:var(--blue-deep)}
.kicker::before{content:"";width:26px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}

/* Roman / Sektionsziffer */
.numeral{font-family:var(--display);font-weight:500;font-style:italic;color:var(--gold-ink);
  font-size:clamp(1.9rem,2.8vw,2.9rem);line-height:1}

/* ── Buttons ───────────────────────────────────────────────────────────────── */
.btn{position:relative;display:inline-flex;align-items:center;gap:.6em;font-weight:600;
  font-size:.94rem;letter-spacing:.01em;padding:.92em 1.5em;border-radius:var(--r-xs);
  transition:transform .35s var(--ease-out),background .3s,color .3s,box-shadow .3s}
.btn svg{width:17px;height:17px;transition:transform .35s var(--ease-out)}
.btn:hover svg{transform:translateX(4px)}
.btn--gold{background:linear-gradient(180deg,var(--gold-soft),var(--gold));color:var(--ink);
  box-shadow:0 1px 0 rgba(255,245,220,.4) inset,0 14px 30px -14px rgb(var(--gold-rgb)/.6)}
.btn--gold:hover{transform:translateY(-2px);box-shadow:0 1px 0 rgba(255,245,220,.5) inset,0 20px 40px -14px rgb(var(--gold-rgb)/.7)}
.btn--ghost{color:var(--cream);box-shadow:inset 0 0 0 1px var(--line-strong)}
.btn--ghost:hover{color:var(--blue-deep);box-shadow:inset 0 0 0 1px var(--blue);transform:translateY(-2px)}
/* box-shadow ist nicht additiv über Regeln — den Fokus-Halo zusammen mit dem Eigen-Schatten neu stapeln,
   sonst überschreiben .btn--gold/.btn--ghost den globalen :focus-visible-Halo (sichtbar nur der schwache Outline). */
.btn--gold:focus-visible{box-shadow:0 1px 0 rgba(255,245,220,.4) inset,0 14px 30px -14px rgb(var(--gold-rgb)/.6),0 0 0 4px rgba(238,244,245,.55)}
.btn--ghost:focus-visible{box-shadow:inset 0 0 0 1px var(--line-strong),0 0 0 4px rgba(238,244,245,.55)}

/* ── Header ────────────────────────────────────────────────────────────────── */
.hdr{position:fixed;inset:0 0 auto 0;z-index:50;transition:background .4s,box-shadow .4s}
.hdr.scrolled{background:rgba(14,22,26,.82);backdrop-filter:blur(14px) saturate(1.2);
  box-shadow:0 1px 0 var(--line-soft)}
.hdr__in{max-width:var(--wrap);margin-inline:auto;padding:clamp(14px,1.6vw,20px) var(--pad);
  display:flex;align-items:center;gap:24px}
.brand{display:inline-flex;align-items:center;gap:12px}
.brand__logo{width:48px;height:48px;display:block;flex:0 0 auto}
.brand__name{font-family:var(--sans);font-weight:600;font-size:1.02rem;letter-spacing:.01em;color:var(--cream);white-space:nowrap}
.nav{display:flex;gap:30px;margin-left:auto}
.nav a{font-size:.82rem;font-weight:500;letter-spacing:.04em;color:var(--cream-2);position:relative;padding:6px 0}
.nav a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--blue);transition:width .35s var(--ease-out)}
.nav a:hover{color:var(--cream)}.nav a:hover::after{width:100%}
.hdr .btn{margin-left:4px}
.burger{display:none;width:44px;height:44px;margin-left:auto;flex-direction:column;justify-content:center;gap:5px;align-items:center}
.burger span{width:23px;height:1.6px;background:var(--cream);transition:transform .35s var(--ease),opacity .25s}
.hdr.menu-open .burger span:nth-child(1){transform:translateY(6.6px) rotate(45deg)}
.hdr.menu-open .burger span:nth-child(2){opacity:0}
.hdr.menu-open .burger span:nth-child(3){transform:translateY(-6.6px) rotate(-45deg)}
.mnav{position:fixed;inset:0;z-index:49;background:rgba(12,19,23,.97);backdrop-filter:blur(8px);
  display:flex;flex-direction:column;justify-content:center;gap:6px;padding:var(--pad);
  opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s}
.hdr.menu-open ~ .mnav,.mnav.open{opacity:1;visibility:visible}
.mnav a{font-family:var(--display);font-size:clamp(2rem,9vw,3.2rem);font-weight:600;line-height:1.08;padding:.18em 0;
  border-bottom:1px solid var(--line-soft);color:var(--cream);
  opacity:0;transform:translateY(16px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}
.mnav a .i{font-family:var(--display);font-style:italic;color:var(--gold-ink);font-size:.5em;margin-right:.5em}
/* Gestaffelter Auftritt der Menü-Einträge beim Öffnen */
.mnav.open a{opacity:1;transform:none}
.mnav.open a:nth-child(1){transition-delay:.07s}.mnav.open a:nth-child(2){transition-delay:.13s}
.mnav.open a:nth-child(3){transition-delay:.19s}.mnav.open a:nth-child(4){transition-delay:.25s}
@media (prefers-reduced-motion:reduce){.mnav a{opacity:1;transform:none;transition:none}}

/* ── Skip ──────────────────────────────────────────────────────────────────── */
.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--gold);color:var(--ink);padding:10px 16px;font-weight:600}
.skip:focus{left:12px;top:12px}
main:focus{outline:none}   /* Skip-Link fokussiert <main tabindex=-1>: keinen Block-Outline zeigen */

/* ── HERO · contained Standbild im Seitenraster (kein full-bleed mehr — volle Breite wirkte „zu wide").
   Bild zentriert auf max. Inhaltsbreite (--wrap), dunkler Rand seitlich; Breite zusätzlich höhen-gedeckelt
   (calc(svh*16/9)) → der 16:9-Rahmen wird auf keinem Schirm zu groß/fullscreen. Header liegt jetzt überm
   dunklen Rand statt überm Bild → kein Top-Scrim nötig. Leiser, einmaliger Einlauf beim Laden (heroIn). ── */
.hero{position:relative;padding-block:clamp(100px,13vh,148px) var(--sec-y)}
/* Breite = GENAU die Inhalts-Spalte (wrap minus pad) → Hero-Rahmen fluchtet links/rechts mit Text/Header/Film.
   Höhe ist durch die Spaltenbreite gedeckelt (16:9 → max ~640px), daher kein svh-Cap mehr nötig. */
.hero__stage{position:relative;width:min(100% - var(--pad)*2, calc(var(--wrap) - var(--pad)*2));margin-inline:auto}
.hero__frame{position:relative;width:100%;aspect-ratio:16/9;margin:0;overflow:hidden;border-radius:var(--r-lg);
  background:var(--media-bg);isolation:isolate;transform-origin:50% 50%;box-shadow:0 44px 100px -54px rgba(0,0,0,.72)}
/* Bewusst statisch: das Standbild ruht. Nur ein leiser, EINMALIGER Einlauf beim Laden (orchestrierter Page-Load). */
.js .hero__frame{opacity:0;animation:heroIn 1.2s var(--ease-out) .12s forwards}
@keyframes heroIn{from{opacity:0;transform:scale(1.035)}to{opacity:1;transform:none}}
.hero__media{position:absolute;inset:0;z-index:0;background:var(--media-bg)}
.hero__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* Film-Korn über dem Hero-Standbild. Korn ist bereits ins Poster gebacken (ffmpeg-Grade) — CSS-Layer nur dezent. */
.hero__grain{position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:overlay;opacity:.12}
.hero__grain::before{content:"";position:absolute;inset:-150px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='170' height='170'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");
  background-size:170px 170px;animation:grain .5s steps(4) infinite}
@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(-55px,32px)}50%{transform:translate(42px,-44px)}75%{transform:translate(-32px,54px)}100%{transform:translate(0,0)}}
/* Top-Scrim entfällt: der Header liegt im contained Layout überm dunklen Rand, nicht mehr überm Bild. */
.hero__grad{display:none}
/* deutlich leichteres Bottom-Overlay — das Bild bleibt sichtbar; Lesbarkeit der Copy via text-shadow */
/* Kleiner Horizontal-Einzug: Padding 0 würde die KURSIVEN Unterlängen (das „g" in gefahren) an der Rahmenkante
   abschneiden (frame hat overflow:hidden). Dezent (≈12–20px statt der alten 48px) → fast bündig mit der Spalte,
   aber nichts wird mehr gekappt/gequetscht. Vertikales Padding (Verlaufsrampe) bleibt. */
.hero__copy{position:absolute;z-index:3;left:0;right:0;bottom:0;
  padding:clamp(40px,8vh,86px) clamp(12px,1.2vw,20px) clamp(22px,3.2vw,44px);
  background:linear-gradient(0deg,rgba(6,9,11,.82) 0%,rgba(6,9,11,.5) 26%,rgba(6,9,11,.18) 46%,transparent 64%)}
.hero__loc{margin:0;font-size:.7rem;letter-spacing:var(--track-label);text-transform:uppercase;color:var(--blue-deep);font-weight:600;
  text-shadow:0 1px 14px rgba(0,0,0,.7)}
.hero__h{font-family:var(--display);font-weight:600;letter-spacing:0;line-height:1.04;
  font-size:clamp(1.9rem,5.6vw,3.7rem);margin:clamp(10px,1.4vw,16px) 0 0;overflow-wrap:break-word;
  text-wrap:balance;max-width:16ch;color:var(--cream);text-shadow:0 2px 26px rgba(0,0,0,.82)}
.hero__h em{font-style:italic;font-weight:500;color:var(--gold-ink)}
.hero__sub{max-width:52ch;margin:clamp(10px,1.2vw,14px) 0 0;font-size:clamp(.96rem,1.05vw,1.12rem);
  line-height:1.55;color:var(--cream-2);text-shadow:0 1px 16px rgba(0,0,0,.78)}
.hero__cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(16px,1.8vw,24px)}
.scrollcue{position:absolute;z-index:3;right:clamp(20px,5vw,72px);bottom:clamp(20px,3vh,36px);
  display:inline-flex;align-items:center;gap:11px;
  font-size:.7rem;letter-spacing:var(--track-label);text-transform:uppercase;color:var(--on-media-dim);
  text-shadow:0 1px 12px rgba(0,0,0,.7)}
.scrollcue i{width:30px;height:1px;background:var(--gold);transform-origin:left;animation:cue 2.6s var(--ease) infinite}
@keyframes cue{0%,100%{transform:scaleX(.4);opacity:.5}50%{transform:scaleX(1);opacity:1}}
@media (prefers-reduced-motion:reduce){
  .scrollcue i,.hero__grain::before,.film__grain::before{animation:none}
  .js .hero__frame{opacity:1;animation:none}
}
/* ── Page-Load-Choreografie: above-the-fold gestaffelt einblenden (smooth, aber zügig nacheinander) ──
   Header → Hero-Rahmen (heroIn) → Headline → Cue. Nur mit JS + ohne reduced-motion. */
@keyframes loadUp{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:no-preference){
  .js .brand{opacity:0;animation:loadUp .6s var(--ease-out) .06s both}
  .js .nav a,.js .burger{opacity:0;animation:loadUp .55s var(--ease-out) both}
  .js .nav a:nth-child(1){animation-delay:.16s} .js .burger{animation-delay:.16s}
  .js .nav a:nth-child(2){animation-delay:.23s}
  .js .nav a:nth-child(3){animation-delay:.3s}
  .js .hero__h{opacity:0;animation:loadUp .8s var(--ease-out) .5s both}
  .js .scrollcue{opacity:0;animation:loadUp .7s var(--ease-out) .82s both}
}
/* Mobile: contained mit Seitenrand bringt auf schmalen Schirmen nichts → Rahmen near-full-width (nur --pad
   Luft) + Hochformat (4:5) zeigt mehr vom Auto. Breite zusätzlich höhen-gedeckelt. */
@media (max-width:600px){
  .hero{padding-block:clamp(78px,11vh,104px) var(--sec-y)}
  .hero__stage{width:min(100% - var(--pad)*2, calc(var(--wrap) - var(--pad)*2))}
  .hero__frame{aspect-ratio:4/5;border-radius:var(--r-sm)}
  .scrollcue{display:none}  /* schmaler Hochformat-Rahmen: Cue würde die Headline bedrängen; Laufband lugt eh drunter */
}

/* ── Marken-Laufband ───────────────────────────────────────────────────────── */
.marquee{position:relative;overflow:hidden;border-block:1px solid var(--line-soft);
  padding-block:clamp(16px,2vw,22px);background:var(--bg-2);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee__track{display:flex;gap:0;width:max-content;animation:scroll 38s linear infinite}
.marquee:hover .marquee__track{animation-play-state:paused}
.marquee__item{display:inline-flex;align-items:center;gap:clamp(26px,3.4vw,52px);padding-inline:clamp(13px,1.7vw,26px);
  font-family:var(--display);font-weight:400;font-style:italic;font-size:clamp(1.1rem,1.7vw,1.55rem);
  color:var(--cream-2);white-space:nowrap}
.marquee__item::after{content:"✦";font-style:normal;font-size:.6em;color:var(--gold-ink)}
@keyframes scroll{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.marquee__track{animation:none}}   /* kein overflow-x:auto → kein Scrollbalken mit Dubletten-Inhalt */

/* ── Manifest ──────────────────────────────────────────────────────────────── */
.manifest{padding-block:var(--sec-y);position:relative}
.manifest__q{font-family:var(--display);font-weight:400;line-height:1.1;letter-spacing:0;
  font-size:clamp(2rem,5vw,4rem);max-width:22ch;margin:0;text-wrap:balance}
.manifest__q em{color:var(--gold-ink)}
.manifest__by{margin-top:clamp(26px,4vh,40px);display:inline-flex;align-items:center;gap:14px;
  font-size:.76rem;letter-spacing:var(--track-label);text-transform:uppercase;color:var(--sage)}
.manifest__by i{width:36px;height:1px;background:var(--gold)}

/* ── Geschichte · Gründungserzählung (Standfirst-Zitat + Fließtext) ─────────── */
.lore{max-width:66ch}
.lore__lead{font-family:var(--display);font-style:italic;font-weight:500;letter-spacing:0;
  font-size:clamp(1.5rem,2.6vw,2.2rem);line-height:1.32;color:var(--cream);margin:0;text-wrap:balance}
.lore__p{margin:clamp(22px,2.6vw,34px) 0 0;color:var(--cream-2);
  font-size:clamp(1.02rem,1.1vw,1.16rem);line-height:1.72}

/* ── Sektion-Grundgerüst ───────────────────────────────────────────────────── */
.sec{padding-block:var(--sec-y);position:relative}
.sec--alt{background:linear-gradient(180deg,var(--bg),var(--bg-2),var(--bg))}
.sec__head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;
  padding-bottom:clamp(34px,5vh,60px);border-bottom:1px solid var(--line-soft);margin-bottom:clamp(40px,6vh,72px)}
.sec__head-l{max-width:60ch}
.sec__no{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.sec__h{font-family:var(--display);font-weight:600;letter-spacing:0;line-height:1.04;
  font-size:clamp(2.3rem,5.6vw,4.4rem);margin:10px 0 0;overflow-wrap:break-word}
.sec__h em{font-weight:400;color:var(--gold-ink)}
.sec__p{margin:18px 0 0;color:var(--cream-2);max-width:48ch}

/* ── Sammlung = DUNKLES Kapitel (Chiaroscuro-Trennung vom hellen Manifest) ────
   Die Hell→Dunkel-Kante IST die visuelle Trennung; Kicker/Titel/Intro sitzen auf Dunkel
   und fließen nahtlos in die dunkle Galerie-Bühne darunter. */
/* Kein Sektions-Polster + keine Gold-Naht mehr (Header sitzt im Pin) → kein heller Teal-Trennbalken
   ober-/unterhalb des Zeitstrahls. Der Pin füllt die Sektion und faded selbst weich in die Nachbarn. */
#sammlung{background:linear-gradient(180deg,var(--film-backdrop) 0%,var(--ink-3) 50%,var(--bg) 100%);padding-block:0}
#sammlung .sec__head{border-bottom-color:rgb(var(--gold-soft-rgb)/.22);
  padding-bottom:clamp(26px,3.6vh,44px);margin-bottom:clamp(28px,4vh,52px)}
#sammlung .numeral{color:var(--gold-soft)}
#sammlung .kicker{color:var(--on-media-dim)}
#sammlung .kicker::before{background:linear-gradient(90deg,transparent,var(--gold-soft))}
#sammlung .sec__h{color:var(--on-media)}
#sammlung .sec__h em{color:var(--gold-soft)}
#sammlung .sec__p{color:var(--on-media-dim)}

/* ── 01 Sammlung — Cinematic „Lichtspur": scroll-gepinnte Baujahr-Galerie ─────
   Dunkle Petrol-Bühne (Chiaroscuro-Intermission). Fahrzeuge fahren per vertikalem Scroll
   horizontal durch; ein riesiges Gold-Jahr (Megatype-Signatur) liest das Baujahr unter dem
   Playhead, ein Maßband-Lineal läuft synchron mit, das Auto in der Mitte LEUCHTET AUF
   (is-current → voll Farbe + Gold-Rahmen), die anderen treten gedämpft zurück.
   BASIS (kein JS / reduced-motion) = lesbarer Foto-Streifen auf derselben dunklen Bühne. */
.gal{position:relative;--v:0;--vs:1}
/* Sektions-Header IM Zeitstrahl (oben-links, auf Inhaltsspalte) statt als eigener Block davor — fusioniert
   die „Die Sammlung"-Überschrift mit dem Pin (kompakt, keine tote Lücke). */
.gal__head{width:min(100% - var(--pad)*2, calc(var(--wrap) - var(--pad)*2));margin:0 auto clamp(22px,3.4vh,40px)}
.gal__title{font-family:var(--display);font-weight:600;line-height:1.06;letter-spacing:0;
  font-size:clamp(1.5rem,2.6vw,2.2rem);margin:9px 0 0;color:var(--on-media);max-width:15ch}
.gal__title em{font-style:italic;font-weight:500;color:var(--gold-soft)}
.gal__pin{position:relative;isolation:isolate;color:var(--on-media);
  /* Ränder matchen die Nachbarn (oben = Film-Petrol, unten = Seiten-BG) → nahtloser Übergang, kein Trennbalken;
     der Teal-Hue ist als zentrierter „Bühnen"-Schein in der Mitte (hinter den Autos). */
  background:
    radial-gradient(115% 66% at 50% 46%, rgba(91,147,168,.17), transparent 60%),
    linear-gradient(180deg, var(--film-backdrop) 0%, var(--ink-2) 46%, var(--ink-3) 72%, var(--bg) 100%)}
/* Filmkorn + Vignette über der Bühne, UNTER den Karten */
.gal__pin::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;mix-blend-mode:overlay;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.gal__pin::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(120% 96% at 50% 40%, transparent 52%, rgba(0,0,0,.55))}

/* Foto-Streifen (Basis/Fallback) */
.gal__row{position:relative;z-index:2;display:flex;gap:clamp(16px,2.2vw,30px);overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x proximity;padding:clamp(18px,3vh,40px) var(--pad) clamp(20px,3vw,34px);
  -webkit-overflow-scrolling:touch;scrollbar-width:thin}
.gal__card{position:relative;flex:0 0 auto;width:clamp(232px,64vw,320px);scroll-snap-align:center}
.gal__img{position:relative;aspect-ratio:3/2;overflow:hidden;border-radius:var(--r-sm);background:var(--ink-3);
  box-shadow:0 34px 60px -32px rgba(0,0,0,.72), inset 0 0 0 1px rgb(var(--gold-soft-rgb)/.20)}
.gal__img img{width:100%;height:100%;object-fit:cover}
/* Gold-Eckwinkel — erscheinen wenn aktiv/hover */
.gal__img::before,.gal__img::after{content:"";position:absolute;width:16px;height:16px;border:1.4px solid var(--gold-soft);
  opacity:0;transition:opacity .5s var(--ease-out);z-index:2;pointer-events:none}
.gal__img::before{top:9px;left:9px;border-right:0;border-bottom:0}
.gal__img::after{bottom:9px;right:9px;border-left:0;border-top:0}
.gal__card:hover .gal__img::before,.gal__card:hover .gal__img::after{opacity:.85}
/* Aperture-Platzhalter (Innocenti, kein Foto) */
.gal__img--ph{display:grid;place-items:center;background:radial-gradient(120% 150% at 50% 0,#2c5d6f,#0d222a 74%)}
.gal__img--ph::before{content:"";position:absolute;inset:0;opacity:.4;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.4}
.gal__ap{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--gold-soft);
  box-shadow:inset 0 0 0 1px rgb(var(--gold-soft-rgb)/.5);z-index:1}
.gal__ap svg{width:22px;height:22px}
.gal__phlbl{position:absolute;bottom:15px;left:0;right:0;text-align:center;font-size:.62rem;
  letter-spacing:var(--track-label);text-transform:uppercase;color:var(--on-media-dim);z-index:1}
/* Karten-Meta (hell auf Dunkel, zentriert unter dem mittigen Auto) */
.gal__meta{padding:16px 2px 0;text-align:center}
.gal__no{font-family:var(--display);font-style:italic;color:var(--gold-soft);font-size:.95rem}
.gal__name{font-family:var(--display);font-weight:600;line-height:1.08;margin:5px 0 0;color:var(--on-media);
  font-size:clamp(1.18rem,1.7vw,1.5rem)}
.gal__name b{font-weight:600}
.gal__yr{display:block;margin-top:7px;font-size:.64rem;letter-spacing:var(--track-label-tight);text-transform:uppercase;color:var(--on-media-dim)}

/* Maßband-Lineal — Tick-Hierarchie: Jahr · Lustrum (5) · Dekade (10, Gold + Jahreszahl) */
.gal__ruler{position:relative;z-index:2;height:50px;margin:0 var(--pad);border-top:1px solid rgb(var(--gold-soft-rgb)/.30)}
.gal__tick{position:absolute;top:0;width:1px;height:6px;background:rgba(238,244,245,.30);transform:translateX(-.5px)}
.gal__tick--lustrum{height:11px;background:rgba(238,244,245,.50)}
.gal__tick--dec{height:18px;background:var(--gold)}
.gal__tick--dec i{position:absolute;top:24px;left:0;transform:translateX(-50%);font-family:var(--display);
  font-style:italic;font-size:1.05rem;color:var(--gold-soft);font-variant-numeric:tabular-nums;white-space:nowrap}
.gal__bigyear,.gal__spot,.gal__playhead,.gal__axis,.gal__cue{display:none}

/* ════ ENHANCED · Pin + Scrub + Bühne — nur mit JS und wenn Motion ok ════════ */
@media (prefers-reduced-motion:no-preference){
  html.js .gal:not(.static) .gal__pin{position:sticky;top:0;height:100svh;overflow:hidden;
    /* Komposition als kompaktes, zentriertes Cluster um die Auto-Mitte (--cy) — Jahr darüber, Maßband darunter,
       feste Abstände → bläht auf hohen Viewports nicht mehr auf (vorher 12vh/58%/5.5vh → riesige Lücken). */
    --cy:53%;--gal-up:204px;--gal-down:198px;--gal-axis:172px;--gal-ph-top:158px;--gal-ph-h:356px}

  /* Header oben-links im Pin (auf Inhaltsspalte), blendet mit der Sektion ein */
  html.js .gal:not(.static) .gal__head{position:absolute;z-index:3;left:50%;transform:translateX(-50%);
    top:clamp(74px,10vh,108px);margin:0;pointer-events:none;opacity:0}
  html.js .gal:not(.static).is-in .gal__head{opacity:1;transition:opacity 1s var(--ease-out) .12s}

  /* Bühnenlicht hinter dem mittigen Auto */
  html.js .gal:not(.static) .gal__spot{display:block;position:absolute;z-index:1;left:50%;top:var(--cy);
    width:min(78vw,880px);aspect-ratio:1.5;transform:translate(-50%,-50%);pointer-events:none;
    background:radial-gradient(closest-side, rgb(var(--gold-soft-rgb)/.22), rgba(120,170,190,.09) 44%, transparent 70%)}

  /* Riesen-Baujahr (Megatype-Signatur) — zentral oben, liest das Jahr unterm Playhead */
  html.js .gal:not(.static) .gal__bigyear{display:block;position:absolute;z-index:1;left:50%;
    top:calc(var(--cy) - var(--gal-up) - .8em);
    transform:translateX(-50%);font-family:var(--display);font-style:italic;font-weight:500;
    font-variant-numeric:tabular-nums;font-size:clamp(5rem,min(19vw,21.5vh),15rem);line-height:.8;letter-spacing:.005em;
    color:transparent;background:linear-gradient(176deg,var(--gold-soft),var(--gold) 58%,var(--gold-ink));
    -webkit-background-clip:text;background-clip:text;pointer-events:none;white-space:nowrap;
    filter:drop-shadow(0 18px 40px rgb(var(--gold-rgb)/.22))}

  /* Row + Ruler: Breite & translate aus JS (gemeinsame Spur W) */
  html.js .gal:not(.static) .gal__row{position:absolute;left:0;top:0;height:100%;display:block;width:auto;z-index:2;
    overflow:visible;padding:0;gap:0;scroll-snap-type:none;will-change:transform;contain:layout paint}
  html.js .gal:not(.static) .gal__card{position:absolute;left:var(--x,0);top:var(--cy);transform:translate(-50%,-50%);
    width:clamp(244px,25vw,344px);scroll-snap-align:none;z-index:2;transition:transform .5s var(--ease-out)}
  html.js .gal:not(.static) .gal__card.is-current{transform:translate(-50%,-50%) scale(1.05);z-index:3}

  /* Foto: gedämpfter „Kontaktbogen"-Grade; Velocity-Skew NUR aufs Bild (Rahmen bleibt gerade) */
  html.js .gal:not(.static) .gal__img{transition:box-shadow .6s var(--ease-out)}
  html.js .gal:not(.static) .gal__img img{will-change:transform,filter;transform-origin:center;
    transform:skewX(calc(var(--v,0)*1deg)) scaleX(var(--vs,1));
    filter:saturate(.52) brightness(.64) contrast(1.06);transition:filter .6s var(--ease-out)}
  /* aktiv/hover: Auto blüht auf (voll Farbe + Helligkeit) + Gold-Rahmen + Eckwinkel */
  html.js .gal:not(.static) .gal__card.is-current .gal__img img,
  html.js .gal:not(.static) .gal__card:hover .gal__img img{filter:saturate(1.12) brightness(1.18) contrast(1.05)}
  html.js .gal:not(.static) .gal__card.is-current .gal__img,
  html.js .gal:not(.static) .gal__card:hover .gal__img{box-shadow:0 48px 84px -26px rgba(0,0,0,.82), inset 0 0 0 1px rgb(var(--gold-soft-rgb)/.72)}
  html.js .gal:not(.static) .gal__card.is-current .gal__img::before,
  html.js .gal:not(.static) .gal__card.is-current .gal__img::after{opacity:.85}
  /* Meta: dezent gedimmt, das aktive Auto bekommt vollen Kontrast */
  html.js .gal:not(.static) .gal__meta{opacity:.5;transition:opacity .5s var(--ease-out)}
  html.js .gal:not(.static) .gal__card.is-current .gal__meta,
  html.js .gal:not(.static) .gal__card:hover .gal__meta{opacity:1}
  /* Jahr/Herkunft fahren beim aktiven/Hover-Auto hoch (LOOKBACK-Signatur) */
  html.js .gal:not(.static) .gal__meta{overflow:hidden}
  html.js .gal:not(.static) .gal__yr{transform:translateY(118%);opacity:0;
    transition:transform .7s var(--ease-out),opacity .5s var(--ease-out)}
  html.js .gal:not(.static) .gal__card.is-current .gal__yr,
  html.js .gal:not(.static) .gal__card:hover .gal__yr,
  html.js .gal:not(.static) .gal__card:focus-within .gal__yr{transform:none;opacity:1}

  /* Maßband: volle Spur (JS), unten fixiert, läuft synchron mit */
  html.js .gal:not(.static) .gal__ruler{position:absolute;left:0;top:calc(var(--cy) + var(--gal-down));bottom:auto;margin:0;width:auto;
    height:54px;will-change:transform;contain:layout paint}
  /* Achsen-Label „Baujahr" (fix, links) */
  html.js .gal:not(.static) .gal__axis{display:block;position:absolute;z-index:3;left:var(--pad);
    top:calc(var(--cy) + var(--gal-axis));bottom:auto;font-size:.62rem;letter-spacing:var(--track-label);text-transform:uppercase;
    color:var(--on-media-dim)}
  /* Playhead: feste Mitte, von unter dem Riesen-Jahr bis zum Maßband, Gold-Punkt mit Glow */
  html.js .gal:not(.static) .gal__playhead{display:block;position:absolute;left:50%;
    top:calc(var(--cy) - var(--gal-ph-top));bottom:auto;height:var(--gal-ph-h);width:1px;transform:translateX(-.5px);z-index:1;
    background:linear-gradient(180deg,transparent,rgb(var(--gold-soft-rgb)/.45) 34%,var(--gold))}
  html.js .gal:not(.static) .gal__playhead i{position:absolute;left:50%;bottom:-4px;width:9px;height:9px;
    border-radius:50%;background:var(--gold);transform:translateX(-50%);box-shadow:0 0 16px 2px rgb(var(--gold-soft-rgb)/.55)}
  /* Scroll-Cue (rechts unten) */
  html.js .gal:not(.static) .gal__cue{display:inline-flex;align-items:center;gap:10px;position:absolute;z-index:3;
    right:var(--pad);bottom:clamp(28px,5.5vh,64px);font-size:.66rem;letter-spacing:var(--track-label);text-transform:uppercase;color:var(--on-media-dim)}
  html.js .gal:not(.static) .gal__cue i{width:26px;height:1px;background:var(--gold);transform-origin:left;animation:cue 2.6s var(--ease) infinite}

  /* ── Orchestrierter Auftritt (einmal, wenn die Sektion erscheint) ── */
  html.js .gal:not(.static) .gal__bigyear{opacity:0;transform:translateX(-50%) translateY(22px) scale(.97)}
  html.js .gal:not(.static).is-in .gal__bigyear{opacity:1;transform:translateX(-50%);
    transition:opacity 1.1s var(--ease-out) .08s,transform 1.1s var(--ease-out) .08s}
  html.js .gal:not(.static) .gal__img{opacity:0;transform:translateY(30px)}
  html.js .gal:not(.static).is-in .gal__img{opacity:1;transform:none;
    transition:opacity .9s var(--ease-out) calc(.18s + var(--n,0)*55ms),transform .9s var(--ease-out) calc(.18s + var(--n,0)*55ms),box-shadow .6s var(--ease-out)}
  html.js .gal:not(.static) .gal__ruler,html.js .gal:not(.static) .gal__playhead,
  html.js .gal:not(.static) .gal__axis,html.js .gal:not(.static) .gal__cue,html.js .gal:not(.static) .gal__spot{opacity:0}
  html.js .gal:not(.static).is-in .gal__ruler{opacity:1;transition:opacity 1s var(--ease-out) .4s}
  html.js .gal:not(.static).is-in .gal__playhead{opacity:1;transition:opacity .9s var(--ease-out) .6s}
  html.js .gal:not(.static).is-in .gal__axis,html.js .gal:not(.static).is-in .gal__cue{opacity:1;transition:opacity .9s var(--ease-out) .7s}
  html.js .gal:not(.static).is-in .gal__spot{opacity:1;transition:opacity 1.4s var(--ease-out) .3s}
}
@media (prefers-reduced-motion:no-preference) and (max-width:760px){
  html.js .gal:not(.static) .gal__pin{--cy:54%;--gal-up:150px;--gal-down:150px;--gal-axis:124px;--gal-ph-top:112px;--gal-ph-h:262px}
  html.js .gal:not(.static) .gal__card{width:clamp(206px,60vw,272px)}
  html.js .gal:not(.static) .gal__bigyear{font-size:clamp(4.2rem,min(26vw,20vh),9rem)}
  html.js .gal:not(.static) .gal__spot{width:86vw}
}

/* ── HERO-FILM · contained Cinema-Video auf Darkmode-Backdrop + Blurred-Mirror-Ambilight ───────
   Das Video läuft NICHT mehr full-bleed (das machte die begrenzte Auflösung sichtbar): es sitzt
   mittig und kleiner als gerahmtes Kino-Bild in einer vertikalen Spalte (Titel · Video · Scrubber).
   Die Ränder faden weich ins Schwarz (Feather-Maske auf .film__stage), dahinter ein live aus dem
   aktuellen Frame gespiegelter, weichgezeichneter Farb-Backdrop (JS-Canvas .film__amb) → die Hues
   laufen synchron zum Scrubben mit. --fp = Film-Fortschritt 0→1 (JS). BASIS/No-JS/reduced-motion =
   ruhiges contained Standbild (poster) auf dunklem Grund, kein Canvas. */
.film{position:relative;background:var(--film-backdrop);color:var(--on-media);--fp:0;
  --film-w:min(100%, calc(var(--wrap) - var(--pad)*2));  /* = Inhalts-Spalte (Pin liefert --pad schon selbst) → Film fluchtet mit Text/Hero */
  box-shadow:inset 0 1px 0 rgb(var(--gold-soft-rgb)/.20)}                     /* Gold-Naht ans helle Manifest */
.film__pin{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:clamp(14px,2.4vh,28px);padding:var(--sec-y) var(--pad);background:var(--film-backdrop)}
/* Sehr sanftes Edge-Overlay — nur die äußersten Ecken minimal nach Petrol-Dunkel, NICHT nach Schwarz; ober-/
   unterhalb vom Video bleibt der Petrol-Hue + Ambient-Glow stehen (User: „kein schwarzer Balken, Hue bleibt"). */
.film__pin::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(135% 118% at 50% 50%,transparent 52%,rgba(5,11,16,.34))}
/* Blurred-Mirror-Ambilight: JS-Canvas (winzige Live-Kopie des Frames), hochskaliert + weichgezeichnet,
   hinter allem. Blendet beim ersten Frame ein (.on). Nur vorhanden, wenn der JS-Scrub aktiv ist. */
.film__amb{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;pointer-events:none;
  filter:blur(50px) saturate(1.15) brightness(.82);transform:scale(1.22);opacity:0;transition:opacity 1.1s var(--ease-out)}
.film__amb.on{opacity:.34}   /* Dark Mode: deutlich dezenter als vorher (.62) */
/* Video-Frame: contained, 16:9, mittig; Ränder weich ins Schwarz (Feather-Maske über alle 4 Kanten) */
.film__stage{position:relative;z-index:2;flex:0 0 auto;width:var(--film-w);aspect-ratio:16/9;max-height:76svh;overflow:hidden;
  -webkit-mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent),linear-gradient(0deg,transparent,#000 8%,#000 92%,transparent);
  -webkit-mask-composite:source-in;
  mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent),linear-gradient(0deg,transparent,#000 8%,#000 92%,transparent);
  mask-composite:intersect}
.film__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
/* Filmkorn über dem Video — Korn ist bereits ins Video gebacken (ffmpeg), CSS nur ein Hauch animiertes Leben */
.film__grain{position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:overlay;opacity:.14}
/* Beim aktiven Scrub das CSS-Korn AUS: mix-blend-mode:overlay muss bei JEDEM Videoframe neu über den (sich
   ändernden) Frame komponiert werden → teuer/ruckelig. Korn ist ohnehin ins Video gebacken. (Static/No-JS behält es.) */
html.js .film:not(.static) .film__grain{display:none}
.film__grain::before{content:"";position:absolute;inset:-150px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='170' height='170'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");
  background-size:170px 170px;animation:grain .5s steps(4) infinite}
/* Titel ÜBER dem Frame (auf Frame-Breite, linksbündig); blendet beim Scrubben weg */
.film__copy{position:relative;z-index:3;width:var(--film-w)}
.film__copy .kicker{color:var(--on-media-dim)}
.film__copy .kicker::before{background:linear-gradient(90deg,transparent,var(--gold-soft))}
.film__h{font-family:var(--display);font-weight:600;line-height:1.04;letter-spacing:0;
  font-size:clamp(1.9rem,4vw,3.4rem);margin:13px 0 0;color:var(--on-media);text-shadow:0 2px 34px rgba(0,0,0,.55)}
.film__h em{font-style:italic;font-weight:500;color:var(--gold-soft)}
.film__lead{margin:11px 0 0;color:var(--on-media-dim);font-size:clamp(.96rem,1.1vw,1.12rem);max-width:46ch;
  line-height:1.55;text-shadow:0 1px 18px rgba(0,0,0,.55)}
/* HUD: Scrubber UNTER dem Frame (auf Frame-Breite). display:none in der Basis (No-JS/static = sauberes Standbild). */
.film__hud{position:relative;z-index:3;width:var(--film-w);display:none;align-items:center;gap:clamp(12px,1.4vw,18px)}
.film__tc{font-family:var(--display);font-style:italic;font-variant-numeric:tabular-nums;
  font-size:clamp(1rem,1.5vw,1.4rem);color:var(--gold-soft);min-width:3.4ch;white-space:nowrap}
.film__tc--end{color:var(--on-media-dim);text-align:right}
.film__bar{position:relative;flex:1;height:2px;background:rgba(238,244,245,.22);border-radius:var(--r-xs);overflow:hidden}
.film__bar i{position:absolute;inset:0;transform-origin:left;transform:scaleX(var(--fp,0));
  background:linear-gradient(90deg,var(--gold-soft),var(--gold))}
/* Scroll-Cue (absolute, unten rechts), blendet schnell weg sobald gescrubbt wird */
.film__cue{position:absolute;z-index:3;right:var(--pad);bottom:clamp(20px,4vh,40px);
  display:none;align-items:center;gap:10px;font-size:.66rem;letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--on-media-dim)}
.film__cue i{width:26px;height:1px;background:var(--gold);transform-origin:left;animation:cue 2.6s var(--ease) infinite}

@media (prefers-reduced-motion:no-preference){
  /* Sticky-zentrierter Cluster (Inhaltshöhe) — JS setzt top = (VH-Cluster)/2 für die Mitte.
     Reinscrollen → Scrub startet · kurz mittig fixiert (HOLD) · wischt nach oben raus. */
  html.js .film:not(.static) .film__pin{position:sticky;height:auto;overflow:hidden;
    padding-block:clamp(16px,2.4vh,34px)}
  /* Titel bleibt STATISCH/persistent über dem Frame (vorher fadete er beim Scrubben viel zu schnell weg —
     „zu flüchtig"). Nur die Scroll-Cue (reiner Hinweis) blendet weg, sobald gescrubbt wird. */
  html.js .film:not(.static) .film__cue{display:inline-flex;opacity:calc(1 - var(--fp,0)*4.5)}
  /* Orchestrierter Auftritt der HUD-Leiste, wenn die Sektion erscheint (nur im aktiven Scrub eingeblendet) */
  html.js .film:not(.static) .film__hud{display:flex;opacity:0}
  html.js .film:not(.static).is-in .film__hud{opacity:1;transition:opacity 1s var(--ease-out) .35s}
}
/* Mobile: art-directed 4:5-Hochkant-Ausschnitt — füllt den Portrait-Schirm deutlich besser (viel weniger
   Leerraum als 16:9), Auto + Straße + Tal bleiben mittig, nur die äußeren Bergkanten croppen. Contained
   + gefeathert + scharf (kein full-bleed). Tightere Gaps, damit Titel/Scrubber näher ans Bild rücken. */
@media (max-width:760px){
  .film{--film-w:min(100%, calc(var(--wrap) - var(--pad)*2))}
  .film__stage{aspect-ratio:4/5}
  .film__pin{gap:clamp(10px,1.6vh,18px)}
  .film__h{font-size:clamp(1.7rem,7vw,2.4rem)}
  .film__lead{font-size:clamp(.95rem,3.6vw,1.05rem)}
  html.js .film:not(.static) .film__cue{display:none}   /* Platz sparen; HUD trägt den Hinweis */
}

/* ── 02 Klubleben — Jahreszeiten ───────────────────────────────────────────── */
.seasons{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(22px,2.5vw,40px);counter-reset:s}
.season{position:relative;padding-top:30px}
.season::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--line-soft)}
.season::after{content:"";position:absolute;top:-4px;left:0;width:8px;height:8px;border-radius:50%;
  background:var(--gold);box-shadow:0 0 0 4px rgb(var(--gold-rgb)/.14)}
.season__k{font-size:.72rem;letter-spacing:var(--track-label);text-transform:uppercase;color:var(--blue-deep);font-weight:600}
.season__t{font-family:var(--display);font-weight:600;font-size:clamp(1.3rem,1.8vw,1.7rem);line-height:1.1;margin:12px 0 0;color:var(--cream)}
.season__t em{font-style:italic;color:var(--gold-ink)}
.season__p{margin:12px 0 0;font-size:.96rem;color:var(--cream-2);line-height:1.6}

/* ── 03 Aufnahme — Einladung ───────────────────────────────────────────────── */
.join{display:block}   /* einspaltig: nur noch Einladung + CTA (Werte-Liste entfernt) */
.join>*{min-width:0}  /* Grid-Kinder dürfen schrumpfen — sonst clippt body{overflow-x:clip} bei großen Schriften */
.join__h{font-family:var(--display);font-weight:600;line-height:1.02;letter-spacing:0;
  font-size:clamp(2.7rem,6.6vw,5.8rem);margin:16px 0 0;overflow-wrap:break-word}
.join__h em{font-weight:400;color:var(--gold-ink)}
.join__p{margin:24px 0 0;color:var(--cream-2);max-width:46ch;font-size:clamp(1.05rem,1.2vw,1.18rem);overflow-wrap:break-word}
.join__cta{margin-top:clamp(28px,4vh,38px);display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.join__mail{font-family:var(--display);font-style:italic;color:var(--gold-text);font-size:1.05rem;min-width:0;overflow-wrap:anywhere}
.values{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--line-soft)}
.value{display:grid;grid-template-columns:auto 1fr;gap:18px;padding:clamp(20px,2vw,26px) 0;border-bottom:1px solid var(--line-soft)}
.value>div{min-width:0}  /* Text-Spalte darf schrumpfen statt zu überlaufen */
.value__ic{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  color:var(--gold-ink);box-shadow:inset 0 0 0 1px var(--line);flex:0 0 auto}
.value__ic svg{width:20px;height:20px;display:block}
.value b{font-family:var(--display);font-weight:600;font-size:1.12rem;color:var(--cream);display:block;overflow-wrap:break-word}
.value span{display:block;margin-top:5px;font-size:.92rem;color:var(--cream-2);line-height:1.55;overflow-wrap:break-word}

/* ── Footer ────────────────────────────────────────────────────────────────── */
.foot{position:relative;border-top:1px solid var(--line-soft);padding-top:var(--sec-y);overflow:hidden}
.foot__in{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad);
  display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:36px}
.foot__brand b{font-family:var(--display);font-weight:600;font-size:1.3rem;display:block}
.foot__brand p{margin:12px 0 0;color:var(--sage);font-size:.92rem;max-width:34ch;line-height:1.6}
.foot__col h4{font-size:.7rem;letter-spacing:var(--track-label);text-transform:uppercase;color:var(--blue-deep);margin:0 0 16px;font-weight:600}
.foot__col a,.foot__col address{display:block;color:var(--cream-2);font-size:.94rem;font-style:normal;margin-bottom:9px;line-height:1.55}
.foot__col a:hover{color:var(--blue)}
/* Footer-Wortmarke „OCM" in der Marken-Sans (Geist) statt der Serif — auf Wunsch Frank (06/2026) */
.foot__word{margin-top:clamp(30px,5vh,56px);line-height:.8;text-align:center;
  font-family:var(--sans);font-weight:600;letter-spacing:-.015em;color:transparent;
  -webkit-text-stroke:1px rgb(var(--gold-ink-rgb)/.34);font-size:clamp(3.4rem,17vw,13rem);user-select:none;
  background:linear-gradient(180deg,rgb(var(--gold-ink-rgb)/.20),rgba(47,106,130,.05) 80%);-webkit-background-clip:text;background-clip:text}
.foot__legal{max-width:var(--wrap);margin:clamp(24px,4vh,44px) auto 0;padding:22px var(--pad) clamp(30px,5vh,48px);
  border-top:1px solid var(--line-soft);display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;
  font-size:.78rem;color:var(--cream-2)}                              /* WCAG AA: 6.68:1 statt --faint 2.34:1 */
.foot__legal a:hover{color:var(--blue)}

/* ── 03 Ausfahrten · Fahrtenbuch (.log) ──────────────────────────────────────── */
.log{max-width:var(--wrap);margin:0 auto}
.log__list{list-style:none;margin:0;padding:0}
.log__row{display:grid;grid-template-columns:150px 1fr;gap:clamp(18px,3vw,42px);align-items:start;
  padding:clamp(22px,3.2vh,34px) 0;border-top:1px solid var(--line-soft)}
.log__list:first-child .log__row:first-child{border-top:0}
.log__thumb{grid-column:1;margin:0;aspect-ratio:3/2;overflow:hidden;border-radius:var(--r-sm);
  background:var(--ink-3);border:1px solid var(--line-soft)}
.log__thumb img{width:100%;height:100%;object-fit:cover;display:block;
  filter:saturate(.94) brightness(.96);transition:transform .6s var(--ease-out),filter .6s}
.log__row:hover .log__thumb img{transform:scale(1.05);filter:saturate(1.05) brightness(1.02)}
.log__body{grid-column:2;min-width:0}
.log__date{font-family:var(--display);font-style:italic;color:var(--gold-ink);font-size:.95rem}
.log__title{font-family:var(--display);font-weight:600;font-size:clamp(1.15rem,2vw,1.5rem);
  line-height:1.15;margin:4px 0 8px;color:var(--cream)}
.log__text{margin:0;color:var(--cream-2);font-size:.96rem;line-height:1.6;max-width:64ch}
.log__more{display:none}
.log.is-open .log__more{display:block}
.log__toggle{margin-top:clamp(22px,3.4vh,36px)}
.log__chev{width:8px;height:8px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;
  transform:translateY(-2px) rotate(45deg);transition:transform .35s var(--ease-out)}
.log.is-open .log__chev{transform:translateY(1px) rotate(-135deg)}
@media (max-width:640px){
  .log__row{grid-template-columns:1fr}
  .log__thumb{max-width:min(100%,420px)}
  .log__body{grid-column:1}
}

/* ── Rechtsseiten (Impressum / Datenschutz) ─────────────────────────────────── */
.legal{padding:clamp(96px,14vh,150px) 0 clamp(60px,10vh,120px);min-height:72vh}
.legal .wrap{max-width:760px}   /* erbt margin-inline:auto + padding-inline von .wrap */
.legal__h{font-family:var(--display);font-weight:600;font-size:clamp(2.2rem,5vw,3.4rem);
  line-height:1.05;margin:.35em 0 .9em;color:var(--cream)}
.legal__body h2{font-family:var(--display);font-weight:600;font-size:clamp(1.15rem,2.4vw,1.5rem);
  color:var(--gold-ink);margin:1.8em 0 .5em}
.legal__body p{margin:0 0 1em;color:var(--cream-2);font-size:1rem;line-height:1.7;overflow-wrap:break-word}
.legal__body a{color:var(--gold-text)}
.legal__nav{margin-top:clamp(36px,6vh,64px);padding-top:22px;border-top:1px solid var(--line-soft);font-size:.95rem}
.legal__nav a{color:var(--cream);font-weight:500}
.legal__nav a:hover{color:var(--gold-text)}

/* ── Reveals ───────────────────────────────────────────────────────────────── */
.js [data-reveal]{opacity:0;transform:translateY(26px);will-change:opacity,transform}
.js [data-reveal].is-in{opacity:1;transform:none;
  transition:opacity 1s var(--ease-out),transform 1s var(--ease-out)}
[data-delay="1"]{transition-delay:.09s}[data-delay="2"]{transition-delay:.18s}
[data-delay="3"]{transition-delay:.27s}[data-delay="4"]{transition-delay:.36s}[data-delay="5"]{transition-delay:.45s}
@media (prefers-reduced-motion:reduce){.js [data-reveal]{opacity:1!important;transform:none!important;transition:none!important}}

/* ── Goldener Spotlight-Hue hinterm Cursor (JS erzeugt `.spotlight`, nur fine-pointer) ──────────
   mix-blend:soft-light → wärmt die Fläche unter dem Zeiger dezent, ohne Text zu überstrahlen.
   z-40: über den Sektionen, unter Header (z-50) → Wortmarke/Nav bleiben sauber. */
.spotlight{position:fixed;top:0;left:0;width:860px;height:860px;margin:-430px 0 0 -430px;z-index:40;
  pointer-events:none;opacity:0;transition:opacity 1.1s var(--ease-out);mix-blend-mode:screen;will-change:transform;
  background:radial-gradient(circle at center, rgb(var(--gold-rgb)/.30), rgb(var(--gold-rgb)/.08) 36%, transparent 66%)}
.spotlight.on{opacity:1}

/* ── Hand-gemachte Mikro-Interaktionen — dezent, „teuer" (nicht busy) ───────── */
/* Buttons: leiser Gold-Schimmer wandert beim Hover durch */
.btn{overflow:hidden}
.btn::after{content:"";position:absolute;inset:0;pointer-events:none;mix-blend-mode:soft-light;
  background:linear-gradient(110deg,transparent 32%,rgba(255,249,232,.55) 50%,transparent 68%);
  transform:translateX(-130%);transition:transform .8s var(--ease-out)}
.btn:hover::after{transform:translateX(130%)}
.btn--ghost::after{background:linear-gradient(110deg,transparent 34%,rgba(47,106,130,.22) 50%,transparent 66%)}

/* Kicker: die Gold-Haarlinie zeichnet sich beim Reveal von links */
.js [data-reveal] .kicker::before{transform-origin:left;transform:scaleX(.12);transition:transform .85s var(--ease-out) .15s}
.js [data-reveal].is-in .kicker::before{transform:scaleX(1)}

/* Galerie-Karte (Basis-Hover, dunkle Bühne): Gold-Rahmen an, NUR box-shadow (transform = Velocity-Skew) */
.gal__img{transition:box-shadow .55s var(--ease-out)}
.gal__card:hover .gal__img{box-shadow:0 44px 78px -28px rgba(0,0,0,.8), inset 0 0 0 1px rgb(var(--gold-soft-rgb)/.62)}
.gal__no{transition:color .35s}

/* Jahreszeiten: sanftes Anheben, Gold-Tick bekommt Halo */
.season{transition:transform .5s var(--ease-out)}
.season:hover{transform:translateY(-5px)}
.season::after{transition:box-shadow .5s var(--ease-out),transform .5s var(--ease-out)}
.season:hover::after{box-shadow:0 0 0 6px rgb(var(--gold-rgb)/.18);transform:scale(1.3)}
.season__t{transition:color .4s}
.season:hover .season__t{color:var(--blue-deep)}

/* Werte: Gold-Icon-Ring leuchtet auf, Icon kippt minimal */
.value__ic{transition:box-shadow .45s,color .45s,transform .55s var(--ease-out)}
.value:hover .value__ic{box-shadow:inset 0 0 0 1px var(--gold);color:var(--gold);transform:rotate(-7deg) scale(1.06)}
.value b{transition:color .35s}
.value:hover b{color:var(--blue-deep)}

/* Footer-Links: Gold-Unterstrich zeichnet sich von links */
.foot__col a{position:relative}
.foot__col a::after{content:"";position:absolute;left:0;bottom:-1px;width:100%;height:1px;background:var(--gold);
  transform:scaleX(0);transform-origin:right;transition:transform .42s var(--ease-out)}
.foot__col a:hover::after,.foot__col a:focus-visible::after{transform:scaleX(1);transform-origin:left}

/* Manifest: das Gold-Kursiv-Wort unterstreicht sich beim Reveal */
.manifest__q em{position:relative}
.manifest__q em::after{content:"";position:absolute;left:0;right:0;bottom:.04em;height:1.5px;background:var(--gold);
  opacity:.55;transform:scaleX(0);transform-origin:left;transition:transform 1.1s var(--ease-out) .45s}
.js .manifest__q.is-in em::after{transform:scaleX(1)}

/* :active — taktiles Press-Feedback (nur wenn Motion ok) */
@media (prefers-reduced-motion:no-preference){
  .btn:active{transform:translateY(0) scale(.985);transition-duration:.08s}
  .nav a:active,.mnav a:active,.foot__col a:active,.brand:active{opacity:.66}
  .burger:active{transform:scale(.92)}
}

@media (prefers-reduced-motion:reduce){
  .btn::after{display:none}
  .js [data-reveal] .kicker::before{transform:scaleX(1)}
  .manifest__q em::after{transform:scaleX(1)}
}

/* ── Responsive ────────────────────────────────────────────────────────────── */
@media (max-width:1024px){
  .join{grid-template-columns:1fr;gap:40px}
  .seasons{grid-template-columns:1fr 1fr}
  .foot__in{grid-template-columns:1fr 1fr;gap:32px 48px}   /* Tablet: Brand voll, Club/Kontakt zweispaltig */
  .foot__brand{grid-column:1 / -1}
}
/* Header-Burger erst ab 720px — seit der Gold-CTA raus ist (informativ statt werbend) passen Wortmarke + Nav
   bequem bis ~680px in eine Zeile (gemessen: Brand 242 + Nav 292 + Gap ≈ 574px < Viewport-2·pad), also zeigen
   Tablets die volle Nav. Eigener Header-Breakpoint (NICHT der 760er-Block, der Hero/Footer/Seasons trägt). */
@media (max-width:720px){
  .nav,.hdr .btn{display:none}
  .burger{display:flex}
  /* Ohne JS öffnet der Burger nicht → stattdessen die Nav-Links zeigen (umbrechend), Burger aus. */
  .no-js .nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px 18px}
  .no-js .burger{display:none}
}
@media (max-width:760px){
  .hero__h{font-size:clamp(1.9rem,7vw,2.7rem);max-width:20ch}
  .hero__sub{font-size:clamp(.95rem,3.4vw,1.05rem)}
  .foot__in{grid-template-columns:1fr;gap:30px}
  .seasons{grid-template-columns:1fr}
  .season{padding-top:24px}
}
@media (max-width:420px){
  .hero__h{font-size:clamp(1.7rem,7.6vw,2.2rem)}
}

/* ══ ARCHIV · Bildarchiv der alten Vereinsseite ══════════════════════════════
   Gruppen nach Anlass, darin ein ruhiges Raster. Bewusst schlicht: die Fotos
   sind Amateuraufnahmen aus 10 Jahren — sie tragen die Sektion, nicht der Rahmen. */
.arch__grp + .arch__grp{margin-top:clamp(34px,5vh,58px)}
.arch__head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
  padding-bottom:12px;border-bottom:1px solid var(--line-soft);margin-bottom:clamp(16px,2vh,24px)}
.arch__date{font-family:var(--display);font-style:italic;font-size:clamp(.95rem,1.5vw,1.1rem);
  color:var(--gold-text);letter-spacing:.01em}
.arch__title{font-family:var(--display);font-weight:500;font-size:clamp(1.15rem,2.2vw,1.6rem);
  color:var(--cream);letter-spacing:-.01em}
.arch__grid{display:grid;gap:clamp(8px,1.1vw,14px);
  grid-template-columns:repeat(auto-fill,minmax(clamp(140px,17vw,220px),1fr))}
.arch__cell{margin:0;position:relative;overflow:hidden;border-radius:3px;background:var(--ink-3);
  aspect-ratio:4/3;box-shadow:0 1px 0 rgb(var(--gold-soft-rgb)/.10)}
.arch__cell img{width:100%;height:100%;object-fit:cover;display:block;
  filter:saturate(.88) brightness(.94);transition:transform .7s var(--ease-out),filter .7s var(--ease-out)}
html.js .arch__cell:hover img{transform:scale(1.06);filter:saturate(1.06) brightness(1.04)}
@media (prefers-reduced-motion:reduce){.arch__cell img{transition:none}
  html.js .arch__cell:hover img{transform:none}}
