/* =========================================================
   widerHall — Stylesheet
   Warmes Editorial: Ivory, Champagner, Taupe, Charcoal.
   Farben und Schriften zentral in :root ändern.
   ========================================================= */

:root{
  /* ── Palette ────────────────────────────────────────────────────────
     Anteile ungefähr: 50 % Ivory, 20 % Champagne Mist, 10 % Champagne,
     8 % Taupe, 8 % Charcoal, 3 % Terracotta, 1 % Espresso. */
  --ivory:#F7F1E8;           /* Hauptgrund */
  --mist:#F1E5D3;            /* große Sekundärflächen */
  --blush:#F4EADD;           /* Zwischenton, nur in den Verläufen */
  --champagne:#E7D4B5;       /* Knöpfe, feine Linien, Details */
  --taupe:#A99B8A;           /* Meta, Linien, Schrift auf Dunkel */
  --taupe-ink:#70665B;       /* Taupe vertieft — trägt als Schrift auf Hell
                                (5,0:1 auf Ivory). #A99B8A käme nur auf 2,4:1. */
  --charcoal:#292622;        /* Fließtext, Überschriften, Navigation */
  --espresso:#181614;        /* sehr sparsam: Fuß, Overlays */
  --terracotta:#A96858;      /* einzige Akzentfarbe, dekorativ */
  --terracotta-ink:#91594C;  /* Terracotta vertieft — für kleine Labels
                                (5,0:1 auf Ivory statt 3,9:1). */

  /* ── Rollen ─────────────────────────────────────────────────────── */
  --page:var(--ivory);
  --band:var(--mist);
  --sink:var(--champagne);
  --ink:var(--charcoal);
  --ink-dim:var(--taupe-ink);
  --accent:var(--terracotta-ink);
  --accent-soft:var(--terracotta);
  --hair:rgba(41,38,34,.14);

  /* Dunkle Flächen: Bühne über dem Foto, Fußzeile, Leuchtkasten */
  --dark:var(--espresso);
  --on-dark:var(--ivory);
  --on-dark-dim:rgba(247,241,232,.62);
  --champagne-dark:#DCC7A2;

  /* Typografie */
  --display:"Bodoni Moda","Didot","Playfair Display",Georgia,serif;
  --body:"Karla","Helvetica Neue",Arial,sans-serif;

  /* Layout */
  --measure:62ch;
  --gutter:clamp(1.25rem,5vw,4.5rem);
  --wrap:1180px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}

body{
  margin:0;
  background:var(--page);
  color:var(--ink);
  font-family:var(--body);
  font-weight:300;
  font-size:clamp(1rem,.94rem + .25vw,1.1rem);
  line-height:1.7;
  overflow-x:hidden;
}

img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px}

/* Filmkorn über allem — gibt der Fläche Textur statt flachem Schwarz */
body::after{
  content:"";position:fixed;inset:0;z-index:60;pointer-events:none;
  opacity:.14;mix-blend-mode:multiply;
  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='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E");
}

h1,h2,h3{font-family:var(--display);font-weight:400;margin:0;line-height:1.05}
p{margin:0 0 1.1em}

/* =========================================================
   GRUNDBAUSTEINE
   ========================================================= */
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gutter)}
.band{padding-block:clamp(4.5rem,9vw,8.5rem);position:relative}
/* Jeder Abschnitt hat eine klare Mitte — Ivory oder Mist — und läuft an
   beiden Rändern nach Blush aus. Dadurch stoßen zwei Abschnitte immer auf
   demselben Ton aneinander (keine Kante), während die Mitten sich deutlich
   unterscheiden. Einfach abwechselnd vergeben. */
.band.light{
  background:linear-gradient(180deg,
    var(--blush) 0%, var(--ivory) 15%, var(--ivory) 85%, var(--blush) 100%);
}
.band.tinted{
  background:linear-gradient(180deg,
    var(--blush) 0%, var(--mist) 15%, var(--mist) 85%, var(--blush) 100%);
}
/* Seitenkopf der Unterseiten: getönt, damit er sich vom Inhalt darunter absetzt */
.band.page-top{
  padding-block:0 clamp(2.5rem,5vw,4rem);
  background:linear-gradient(180deg,var(--mist) 0%,var(--mist) 78%,var(--blush) 100%);
}
.band.page-top .page-header{padding-top:clamp(3rem,6vw,5rem)}
/* Kopf und Inhalt gehören zusammen (z. B. Vorverkauf direkt über dem Spielplan):
   knapper Abstand statt zweier voller Abschnittspolster */
.band.page-top.tight{padding-bottom:clamp(1.5rem,3vw,2.5rem)}
.band.page-top.tight + .band{padding-top:clamp(2.5rem,5vw,4rem)}

.section-head{
  display:flex;align-items:baseline;gap:1.5rem;flex-wrap:wrap;
  margin-bottom:clamp(2rem,4vw,3.5rem);
}
.section-head h2{font-size:clamp(2rem,1.3rem + 2.6vw,3.4rem);letter-spacing:-.015em}
.section-head span{
  font-family:var(--body);font-size:.78rem;letter-spacing:.14em;
  color:var(--accent);flex:0 0 auto;padding-bottom:.35em;
}

.btn{
  display:inline-block;
  font-family:var(--body);font-size:.88rem;letter-spacing:.05em;
  padding:.85em 1.6em;text-decoration:none;border:1px solid var(--champagne);
  color:var(--charcoal);background:transparent;cursor:pointer;
  transition:background .3s,border-color .3s;
}
.btn:hover,.btn:focus-visible{background:var(--champagne)}
.btn.solid{background:var(--champagne);color:var(--charcoal);border-color:var(--ink-dim)}
.btn.solid:hover,.btn.solid:focus-visible{background:var(--champagne-dark);border-color:var(--ink-dim)}


/* =========================================================
   KOPFZEILE
   ========================================================= */
.topbar{
  position:relative;z-index:3;
  display:flex;justify-content:space-between;align-items:center;gap:1rem 1.5rem;flex-wrap:wrap;
  padding:clamp(1.1rem,2.4vw,1.9rem) var(--gutter) 0;
  font-size:.94rem;letter-spacing:.06em;
}
.topbar .home{
  display:flex;align-items:center;gap:.7rem;
  color:var(--ink);font-family:var(--display);font-size:1.05rem;
  letter-spacing:.02em;text-decoration:none;
}
.topbar .home img{height:30px;width:auto}
.topbar-right{display:flex;align-items:center;gap:clamp(.9rem,2.4vw,2rem);flex-wrap:wrap}
.topbar nav{display:flex;gap:clamp(.9rem,2.4vw,2rem);flex-wrap:wrap}
.topbar a{color:var(--ink-dim);text-decoration:none;padding:.35em 0;transition:color .25s}
.topbar nav a:hover,.topbar nav a:focus-visible{color:var(--accent-soft)}
.topbar nav a[aria-current="page"]{color:var(--accent-soft)}

.lang{display:flex;align-items:center;gap:.45rem;color:var(--ink-dim);letter-spacing:.1em}
.lang .on{color:var(--accent)}
.lang .sep{opacity:.4}

/* Kopfzeile auf Unterseiten: dünne Linie darunter statt Bühne */
.subpage-head{
  background:var(--page);
  border-bottom:1px solid var(--hair);
  padding-bottom:clamp(1.1rem,2.4vw,1.9rem);
}

/* =========================================================
   BÜHNE / HERO
   ========================================================= */
.stage{
  position:relative;min-height:100svh;
  display:grid;grid-template-rows:auto 1fr auto;
  background:var(--dark);
  isolation:isolate;overflow:hidden;
}
/* Ensemblefoto als Bühnenbild — tief abgedunkelt, damit der Name trägt */
.stage-photo{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:50% 32%;
  z-index:0;opacity:1;filter:saturate(.92) contrast(1.02);
}
.stage-veil{ /* Samtschleier über dem Foto */
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  /* Espresso statt Schwarz, 50–65 % — die Terrakotta-Dächer und die warmen
     Töne des Fotos bleiben sichtbar. */
  background:linear-gradient(180deg,
    rgba(24,22,20,.52) 0%,
    rgba(24,22,20,.44) 38%,
    rgba(24,22,20,.66) 100%);
}
.stage::before{ /* der Lichtkegel */
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:radial-gradient(
    circle var(--beam,34vmax) at var(--mx,50%) var(--my,56%),
    rgba(231,212,181,.24) 0%,
    rgba(220,199,162,.10) 38%,
    rgba(220,199,162,0) 72%);
  transition:opacity .6s ease;
}
.stage::after{ /* Bretter — Abdunklung zum Bühnenrand */
  content:"";position:absolute;left:0;right:0;bottom:0;height:16vh;z-index:2;
  background:linear-gradient(to top, rgba(24,22,20,.42), transparent);
}
.stage .topbar{z-index:4}

.marquee{
  position:relative;z-index:3;
  display:grid;justify-items:center;align-content:end;
  padding:clamp(2rem,6vh,5rem) var(--gutter) clamp(4rem,15vh,10rem);
  text-align:center;
}
.namewrap{position:relative;display:inline-block}
.name{
  font-family:var(--display);font-weight:400;
  font-size:clamp(3.1rem,1rem + 12.2vw,10.5rem);
  line-height:.9;letter-spacing:-.02em;margin:0;
}
.name-dim{color:rgba(247,241,232,.5)}
.name-lit{
  position:absolute;inset:-.75em;padding:.75em;color:var(--ivory);
  text-shadow:0 0 34px rgba(231,212,181,.55),0 0 70px rgba(220,199,162,.25);
  -webkit-mask-image:radial-gradient(circle var(--lit,26vmax) at var(--mx,50%) var(--my,56%),#000 0%,rgba(0,0,0,.85) 42%,transparent 68%);
  mask-image:radial-gradient(circle var(--lit,26vmax) at var(--mx,50%) var(--my,56%),#000 0%,rgba(0,0,0,.85) 42%,transparent 68%);
  pointer-events:none;
}
.tagline{
  font-size:clamp(1rem,.95rem + .35vw,1.25rem);
  color:var(--accent-soft);margin:.9rem 0 0;font-style:italic;font-family:var(--display);
}
.hint{font-size:.74rem;letter-spacing:.16em;color:var(--on-dark-dim);margin:.9rem 0 0}

.stagefoot{
  position:relative;z-index:3;
  display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1.5rem;
  padding:0 var(--gutter) clamp(1.6rem,4vh,3rem);
}
.nextup{font-size:.9rem;line-height:1.5;margin:0}
.nextup b{font-family:var(--display);font-weight:500;font-size:1.15rem;display:block;color:var(--accent-soft)}
.nextup span{color:var(--ink-dim)}
.actions{display:flex;gap:.75rem;flex-wrap:wrap}

/* =========================================================
   SEITENKOPF (Unterseiten)
   ========================================================= */
.page-header{padding-block:clamp(3.5rem,7vw,6rem) 0;text-align:left}
.page-title{
  font-size:clamp(2.6rem,1.6rem + 4.4vw,5.5rem);letter-spacing:-.02em;
  color:var(--ink);
}
.page-subtitle{
  font-family:var(--display);font-style:italic;color:var(--accent);
  font-size:clamp(1.05rem,1rem + .4vw,1.35rem);margin:.7rem 0 0;
}

/* =========================================================
   ÜBER UNS
   ========================================================= */
.about-grid{display:grid;gap:clamp(2rem,5vw,4.5rem);grid-template-columns:1fr;align-items:start}
.about-body{max-width:var(--measure)}
/* Initial über zwei Zeilen. Eigenes Element, damit es exakt vermessbar
   ist. „widerHall" beginnt klein — bemessen wird also die x-Höhe des w
   (Bodoni .47 em), nicht die Versalhöhe. Aus der Messung gerechnet:
   Oberkante des w auf der Oberlänge der ersten Zeile, Unterkante auf der
   Grundlinie der zweiten. Die enge Zeilenhöhe hält den Kasten so, dass
   genau zwei Zeilen umfließen. */
.about-body .dropcap{
  float:left;font-family:var(--display);font-weight:400;
  font-size:5.064em;line-height:.409;
  color:var(--accent);padding-right:.06em;
}
.about-logo{width:100%;max-width:300px;margin:0 0 2rem;opacity:.92}
.aside{
  font-size:.92rem;color:var(--ink-dim);
  border-left:1px solid var(--hair);padding-left:1.4rem;
}
.aside p{margin:0 0 1.1em}
.aside b{color:var(--ink);font-weight:400;font-family:var(--display);font-size:1.05rem}

/* Ensemblefoto im Messingrahmen */
.about-photo{margin:clamp(2.5rem,5vw,4rem) 0 0;padding:0}
.about-photo img{width:100%;height:auto;border:1px solid var(--hair)}

/* Video im Messingrahmen — sitzt unter den Namensschildern */
.intro-video{margin:clamp(2.5rem,5vw,4rem) 0 0;padding:0;position:relative}

/* Auflage: macht kenntlich, dass hier ein Video liegt und nicht noch einmal
   dasselbe Foto. Verschwindet beim Abspielen (js/video.js). */
.video-cover{
  position:absolute;inset:0;z-index:2;
  display:grid;place-content:center;justify-items:center;gap:1.1rem;
  border:0;cursor:pointer;font:inherit;color:var(--accent-soft);
  background:linear-gradient(180deg,rgba(41,38,34,.3),rgba(41,38,34,.68));
  transition:background .3s;
}
.video-cover[hidden]{display:none}
.video-cover:hover,.video-cover:focus-visible{background:linear-gradient(180deg,rgba(41,38,34,.22),rgba(41,38,34,.58))}

.video-play{
  width:clamp(3.6rem,7vw,5rem);aspect-ratio:1;border-radius:50%;
  border:1px solid var(--champagne);background:rgba(41,38,34,.5);
  display:grid;place-items:center;transition:background .3s,border-color .3s;
}
.video-play::after{ /* Abspiel-Dreieck */
  content:"";display:block;
  border-style:solid;border-width:.55em 0 .55em .95em;
  border-color:transparent transparent transparent var(--accent-soft);
  margin-left:.22em;font-size:clamp(1rem,1.6vw,1.25rem);
  transition:border-color .3s;
}
.video-cover:hover .video-play,.video-cover:focus-visible .video-play{background:var(--accent);border-color:var(--accent)}
.video-cover:hover .video-play::after,.video-cover:focus-visible .video-play::after{border-left-color:var(--page)}

.video-label{
  font-family:var(--body);font-size:.8rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--on-dark);
  text-shadow:0 1px 12px rgba(0,0,0,.6);
}
.intro-video video{
  display:block;width:100%;height:auto;
  border:1px solid var(--hair);background:#000;
}
.intro-video figcaption{
  font-size:.78rem;letter-spacing:.12em;color:var(--accent);margin-top:.9rem;
}

/* =========================================================
   BESETZUNG
   ========================================================= */
.people{
  display:grid;gap:clamp(1.6rem,3.5vw,2.8rem);
  grid-template-columns:1fr;
}
.person{text-align:center}
/* Bilderrahmen im Hochformat — leer wirkt er wie ein Rahmen, der auf sein
   Foto wartet. 3:4 ist zugleich das Format, das Porträts später brauchen:
   dann ersetzt ein <img> das Initial und füllt den Rahmen. */
.plate{
  position:relative;aspect-ratio:3/4;margin-bottom:1.1rem;overflow:hidden;
  border:1px solid var(--hair);
  background:linear-gradient(180deg,var(--champagne),var(--sink));
  display:grid;place-items:center;
}
.plate::before{               /* Passepartout */
  content:"";position:absolute;inset:9px;pointer-events:none;
  border:1px solid rgba(145,89,76,.22);
}
.plate img{width:100%;height:100%;object-fit:cover}
.plate span{
  font-family:var(--display);font-size:clamp(3rem,7vw,4.6rem);
  color:rgba(112,102,91,.5);line-height:1;
}
.person h3{font-size:1.35rem;margin-bottom:.2rem}
.person .role{font-size:.78rem;letter-spacing:.12em;color:var(--accent);display:block;margin-bottom:.7rem;font-style:normal}
.person p{font-size:.9rem;color:var(--ink-dim);margin:0;text-align:left}

/* =========================================================
   HÄUFIGE FRAGEN
   ========================================================= */
.faq{border-top:1px solid var(--hair);margin-top:0}
.faq-item{border-bottom:1px solid var(--hair)}
.faq-item summary{
  list-style:none;cursor:pointer;
  display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;
  padding:1.35rem .25rem;
  font-family:var(--display);font-size:clamp(1.1rem,1rem + .5vw,1.4rem);
  transition:color .25s;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{
  content:"+";font-family:var(--body);font-size:1.1rem;color:var(--accent);
  flex:0 0 auto;transition:transform .3s;
}
.faq-item[open] summary{color:var(--charcoal)}
.faq-item[open] summary::after{content:"–"}
.faq-item summary:hover{color:var(--accent-soft)}
.faq-answer{padding:0 .25rem 1.6rem;max-width:52ch;color:var(--ink-dim);font-size:.95rem}
.faq-answer p{margin:0 0 .8em}
.faq-answer p:last-child{margin-bottom:0}
.faq-answer a{color:var(--accent-soft);text-decoration:none;border-bottom:1px solid var(--hair)}
.faq-answer a:hover{color:var(--ink);border-color:var(--accent)}

/* =========================================================
   SPIELPLAN / TERMINE
   ========================================================= */
.run-head{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem 1.5rem;
  padding-bottom:1.2rem;margin-bottom:0;
}
.run-head h2{font-size:clamp(1.6rem,1.2rem + 1.6vw,2.4rem)}
.run-head .where{color:var(--ink-dim);font-size:.95rem}
.run-note{color:var(--ink-dim);font-size:.9rem;margin:0 0 2rem;max-width:52ch}

/* Vorverkauf — der einzige Weg zu Karten, deshalb vor der Liste und nicht in ihr */
.presale{
  display:flex;flex-wrap:wrap;align-items:center;gap:1.25rem 2rem;
  border:1px solid var(--hair);
  background:linear-gradient(180deg,var(--sink),transparent);
  padding:clamp(1.25rem,3vw,1.9rem);margin:0;
}
.presale p{margin:0;font-size:.95rem;color:var(--ink-dim);max-width:46ch}
.presale strong{color:var(--ink);font-weight:400}
.presale-hours{
  display:block;margin-top:.6rem;
  font-size:.8rem;letter-spacing:.08em;color:var(--accent-soft);
}
.presale .btn{flex:0 0 auto;text-align:center}
.page-header + .presale{margin-top:clamp(2rem,4vw,3rem)}

.dates{list-style:none;margin:0;padding:0;border-top:1px solid var(--hair)}
.dates > li{border-bottom:1px solid var(--hair)}
.date-row{
  display:grid;gap:.4rem 1.5rem;align-items:baseline;
  grid-template-columns:6.5rem 1fr;
  padding:1.35rem .25rem;
}
.d-day{font-family:var(--display);font-size:1.5rem;line-height:1;letter-spacing:.01em}
.d-day small{
  display:block;font-family:var(--body);font-size:.72rem;letter-spacing:.1em;
  color:var(--ink-dim);margin-top:.35rem;
}
.d-where{font-size:1.05rem}
.d-where em{display:block;font-size:.85rem;color:var(--ink-dim);font-style:normal}

.month-head{
  font-family:var(--body);font-size:.78rem;letter-spacing:.14em;
  color:var(--accent);margin:2.6rem 0 .9rem;
}
.dates + .month-head{margin-top:3rem}

/* =========================================================
   GALLERIE — ein Jahrgang je Block: Plakat links, Bildstrecke rechts
   ========================================================= */
.gal-lede{
  max-width:46ch;color:var(--ink-dim);
  margin:clamp(1.2rem,2.5vw,1.8rem) 0 clamp(2rem,4vw,3rem);
}

/* Jahrgangs-Navigation, bleibt beim Blättern oben stehen */
/* Die Leiste selbst ist nur der Kasten — das Kleben übernimmt der Dock
   eine Ebene darüber, dessen Elternelement die ganze Seite umfasst.
   Säße position:sticky am Kasten, würde er nur innerhalb des Abschnitts
   kleben, in dem er steht. */
.years-dock{
  position:sticky;top:0;z-index:30;
  background:var(--ivory);            /* durchgehend von Rand zu Rand */
  padding-block:.9rem;
}
/* Beschriftung links, Jahreszahlen als eigener Block daneben — sonst
   bricht die zweite Zeile bis unter „Jahrgang" um. */
.years{display:flex;gap:.9rem;align-items:baseline;padding:0;border:0;background:transparent}
.years-list{display:flex;gap:.4rem;flex-wrap:wrap;align-items:baseline;flex:1 1 auto;min-width:0}
.years .lbl{font-size:.76rem;letter-spacing:.14em;color:var(--accent);flex:0 0 auto}
.years a{
  text-decoration:none;font-family:var(--display);font-size:1.05rem;
  color:var(--ink-dim);padding:.3em .8em;border:1px solid transparent;
  transition:color .25s,border-color .25s;
}
.years a:hover,.years a:focus-visible{color:var(--ink);border-color:var(--hair)}
.years a.here{color:var(--accent)}

.jahrgang{
  padding-block:clamp(2.6rem,5vw,4.5rem);
  border-bottom:1px solid var(--hair);scroll-margin-top:9rem;
}
.jahrgang:last-of-type{border-bottom:0}

.jhead{
  display:flex;align-items:baseline;gap:clamp(1rem,2.5vw,2rem);
  margin-bottom:clamp(1.4rem,3vw,2.2rem);flex-wrap:wrap;
}
.jyear{
  font-family:var(--display);font-size:clamp(2.6rem,1.4rem + 4.4vw,5rem);
  line-height:.9;letter-spacing:-.02em;color:var(--taupe-ink);margin:0;
}
.jtitle{flex:1 1 14ch;min-width:0}
.jtitle h2{font-size:clamp(1.25rem,1.05rem + .8vw,1.85rem);font-style:italic}

.jbody{display:grid;gap:clamp(1.4rem,3vw,2.6rem);grid-template-columns:1fr;align-items:start}

/* Plakat */
.poster{
  position:relative;display:block;width:100%;padding:0;cursor:zoom-in;
  aspect-ratio:1/1.414;border:1px solid var(--hair);background:var(--band);
  color:inherit;font:inherit;overflow:hidden;transition:border-color .25s;
}
.poster img{width:100%;height:100%;object-fit:contain}
.poster:hover,.poster:focus-visible{border-color:var(--accent)}
.pcap{margin-top:.8rem;font-size:.8rem;color:var(--ink-dim);line-height:1.5}

/* Bildstrecke */
.lane-wrap{min-width:0}
.lane-head{display:flex;align-items:center;gap:.9rem;margin-bottom:.9rem}
.lane-head > span:first-child{font-size:.76rem;letter-spacing:.14em;color:var(--accent);flex:0 0 auto}
.lane-head hr{flex:1;border:0;height:1px;background:var(--hair);margin:0}
.arrows{display:flex;gap:.4rem;flex:0 0 auto}
.arrow{
  font:inherit;font-size:1rem;cursor:pointer;background:transparent;
  border:1px solid var(--hair);color:var(--accent-soft);
  width:2.2rem;height:2.2rem;display:grid;place-items:center;
  transition:background .25s,color .25s;
}
.arrow:hover,.arrow:focus-visible{background:var(--accent);color:var(--page)}
.arrow[disabled]{opacity:.28;cursor:default;background:transparent;color:var(--ink-dim)}

.lane{
  display:flex;gap:clamp(.7rem,1.6vw,1.2rem);
  overflow-x:auto;scroll-snap-type:x proximity;
  list-style:none;margin:0;padding:0 0 1rem;
  scrollbar-width:thin;scrollbar-color:rgba(145,89,76,.45) transparent;
  overscroll-behavior-x:contain;
}
.lane::-webkit-scrollbar{height:5px}
.lane::-webkit-scrollbar-track{background:rgba(145,89,76,.14)}
.lane::-webkit-scrollbar-thumb{background:rgba(145,89,76,.5)}
.lane > li{flex:0 0 clamp(215px,25vw,310px);scroll-snap-align:start;min-width:0}

.frame{
  position:relative;display:block;width:100%;padding:0;cursor:zoom-in;
  aspect-ratio:3/2;border:1px solid var(--hair);background:var(--band);
  overflow:hidden;transition:border-color .25s;
}
.frame img{width:100%;height:100%;object-fit:cover;filter:saturate(.82);transition:filter .3s}
.frame:hover,.frame:focus-visible{border-color:var(--accent)}
.frame:hover img{filter:saturate(1)}

/* Jahrgänge ohne Fotos: nur das Plakat */
.jahrgang.poster-only .poster-wrap{max-width:340px}

/* =========================================================
   LEUCHTKASTEN
   ========================================================= */
.lb{
  position:fixed;inset:0;z-index:70;display:none;
  background:rgba(41,38,34,.96);padding:clamp(1rem,3vw,2.5rem);
}
.lb.open{display:grid;grid-template-rows:auto 1fr auto;gap:1rem}
.lb-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;font-size:.82rem;color:var(--ink-dim)}
.lb-stage{display:grid;place-items:center;min-height:0}
.lb-img{max-width:100%;max-height:100%;object-fit:contain;border:1px solid var(--hair)}
.lb-bottom{display:flex;flex-wrap:wrap;gap:1rem 2rem;align-items:flex-end;justify-content:space-between}
.lb-cap{max-width:52ch}
.lb-cap h2{font-size:clamp(1.2rem,1.05rem + .7vw,1.7rem);margin-bottom:.35rem}
.lb-cap p{margin:0;font-size:.86rem;color:var(--ink-dim)}
.lb-nav{display:flex;gap:.5rem}
.icon{
  font:inherit;font-size:1.1rem;cursor:pointer;background:transparent;
  border:1px solid var(--hair);color:var(--accent-soft);
  width:2.4rem;height:2.4rem;display:grid;place-items:center;
  transition:background .25s,color .25s;
}
.icon:hover,.icon:focus-visible{background:var(--accent);color:var(--page)}

/* =========================================================
   RECHTSTEXTE
   ========================================================= */
.legal-content{max-width:var(--measure);padding-block:clamp(2.5rem,5vw,4rem)}
.legal-content h2{
  font-size:clamp(1.3rem,1.1rem + .9vw,1.7rem);
  margin:2.6rem 0 .9rem;color:var(--charcoal);
}
.legal-content h2:first-child{margin-top:0}
.legal-content p,.legal-content li{color:var(--ink-dim);font-size:.95rem}
.legal-content a{color:var(--accent-soft);text-decoration:none;border-bottom:1px solid var(--hair);word-break:break-word}
.legal-content a:hover{color:var(--ink);border-color:var(--accent)}
.legal-content ol,.legal-content ul{padding-left:1.2rem}
.legal-content li{margin-bottom:.4rem}

/* =========================================================
   FUSSZEILE
   ========================================================= */
footer.site{
  background:var(--dark);border-top:1px solid var(--hair);
  padding-block:clamp(2.5rem,5vw,4rem);
  font-size:.85rem;color:var(--ink-dim);
}
.footgrid{display:flex;flex-wrap:wrap;gap:2rem 3rem;justify-content:space-between;align-items:flex-start}
.footgrid h3{
  font-family:var(--body);font-size:.75rem;letter-spacing:.14em;
  color:var(--accent);margin-bottom:.7rem;font-weight:400;
}
.footgrid a{text-decoration:none;color:var(--ink-dim);transition:color .25s}
.footgrid a:hover,.footgrid a:focus-visible{color:var(--accent-soft)}
.footgrid address{font-style:normal;line-height:1.7}
.footgrid address strong{color:var(--ink);font-weight:400}
.footgrid ul{list-style:none;margin:0;padding:0}
.footgrid li{margin-bottom:.35rem}
.footgrid p{margin:0 0 .35em}
.sign{font-family:var(--display);font-style:italic;color:var(--accent);font-size:1.15rem;margin-bottom:.6rem}
.footer-bottom{
  max-width:var(--wrap);margin:clamp(2rem,4vw,3rem) auto 0;padding-inline:var(--gutter);
  padding-top:1.5rem;border-top:1px solid var(--hair);
  font-size:.78rem;letter-spacing:.06em;color:rgba(247,241,232,.4);
}

/* =========================================================
   DUNKLE FLÄCHEN
   Bühne, Fußzeile und Leuchtkasten liegen auf dunklem Grund bzw. über
   Bildern. Dort gilt die helle Champagnerfarbe statt der abgedunkelten.
   ========================================================= */

/* ── Bühne ── */
.stage .topbar .home{color:var(--on-dark)}
.stage .topbar a{color:var(--on-dark-dim)}
.stage .topbar nav a:hover,
.stage .topbar nav a:focus-visible,
.stage .topbar nav a[aria-current="page"]{color:var(--champagne)}
.stage .lang{color:var(--on-dark-dim)}
.stage .lang .on{color:var(--champagne)}

.tagline{color:var(--champagne)}
.nextup b{color:var(--champagne)}
.nextup span{color:var(--on-dark-dim)}

.stage .btn{border-color:var(--champagne);color:var(--champagne)}
.stage .btn:hover,.stage .btn:focus-visible{background:var(--champagne);color:var(--dark)}
.stage .btn.solid{background:var(--champagne);color:var(--dark)}
.stage .btn.solid:hover,.stage .btn.solid:focus-visible{background:var(--champagne-dark);border-color:var(--champagne-dark)}

/* ── Fußzeile ── */
footer.site{color:var(--on-dark-dim);border-top-color:rgba(247,241,232,.16)}
.footgrid h3{color:var(--champagne)}
.footgrid a{color:var(--on-dark-dim)}
.footgrid a:hover,.footgrid a:focus-visible{color:var(--champagne)}
.footgrid address strong{color:var(--on-dark)}
.sign{color:var(--champagne)}
.footer-bottom{border-top-color:rgba(247,241,232,.16)}

/* ── Video-Auflage ── */
.video-cover{color:var(--champagne)}
.video-play{border-color:var(--champagne)}
.video-play::after{border-left-color:var(--champagne)}
.video-cover:hover .video-play,
.video-cover:focus-visible .video-play{background:var(--champagne);border-color:var(--champagne)}
.video-cover:hover .video-play::after,
.video-cover:focus-visible .video-play::after{border-left-color:var(--dark)}

/* ── Leuchtkasten ── */
.lb-top{color:var(--on-dark-dim)}
.lb-cap h2{color:var(--on-dark)}
.lb-cap p{color:var(--on-dark-dim)}
.lb-img{border-color:rgba(247,241,232,.25)}
.icon{border-color:rgba(247,241,232,.3);color:var(--champagne)}
.icon:hover,.icon:focus-visible{background:var(--champagne);color:var(--dark)}

/* =========================================================
   BREITE BILDSCHIRME
   ========================================================= */
@media (min-width:601px){
  .people{grid-template-columns:repeat(2,1fr)}
  .tagline{font-size:clamp(1.25rem,1rem + .6vw,1.6rem)}
  .hint{font-size:.92rem}
}
@media (min-width:760px){
  .about-grid{grid-template-columns:1.15fr .85fr}
}
@media (min-width:1024px){
  .people{grid-template-columns:repeat(4,1fr)}
}
@media (min-width:820px){
  .jbody{grid-template-columns:minmax(200px,clamp(200px,22vw,300px)) 1fr}
}
@media (max-width:819px){
  .poster-wrap{max-width:340px}
  .arrows{display:none}
}

/* =========================================================
   SCHMALE BILDSCHIRME
   ========================================================= */
@media (max-width:600px){
  .date-row{grid-template-columns:4.5rem 1fr}
  .topbar{font-size:.78rem}
  .topbar .home span{display:none}
}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
}
