/* ==========================================================================
   Bulldog Gym Heidelberg — Site Styles
   Aufbau: 1 Fonts · 2 Tokens · 3 Base · 4 Typo · 5 Komponenten · 6 Sektionen
           7 Dialoge · 8 Motion · 9 Unterseiten
   ========================================================================== */

/* 1 ─ Fonts (lokal gehostet, variable Achsen: Breite 62–125 %, Stärke 100–900) */
@font-face {
  font-family: "Archivo";
  src: url("../fonts/archivo-latin.woff2") format("woff2");
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Archivo";
  src: url("../fonts/archivo-latin-ext.woff2") format("woff2");
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* 2 ─ Tokens */
:root {
  /* Farbe — abgeleitet aus Logo (Gold #E0B048) und Halle (Schwarz, Weiß, Anthrazit) */
  --ink: #0c0c0d;
  --ink-2: #131315;
  --ink-3: #1c1c1f;
  --paper: #f0ede6;
  --paper-2: #e6e2d8;
  --paper-3: #faf8f4;
  --bone: #f5f2eb;
  --gold: #e0b04a;
  --gold-2: #f0c566;
  --gold-ink: #7a5c1c;          /* Gold als Text auf hellem Grund (≥ 4.5:1) */
  --on-dark: var(--bone);
  --on-dark-2: rgba(245, 242, 235, .74);
  --on-dark-3: rgba(245, 242, 235, .52);
  --on-light: #121213;
  --on-light-2: #4c4a45;
  --line-dark: rgba(245, 242, 235, .14);
  --line-light: rgba(18, 18, 19, .14);
  --ok: #2e7a55;

  /* Kursplan-Farbfamilien — gedeckt, auf hellem und dunklem Grund lesbar */
  --c-bjj: #3b6ea5;
  --c-boxen: #b5432c;
  --c-kick: #2e7a55;
  --c-mma: #2b2b30;
  --c-sparring: #a97b1f;
  --c-youth: #6d5a9e;

  /* Typografie */
  --font: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --display: "Archivo", "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --fs-hero: clamp(3.4rem, min(.6rem + 14.4vw, 20vh), 13.5rem);
  --fs-h2: clamp(2.75rem, 1.1rem + 6.4vw, 7.5rem);
  --fs-h3: clamp(2rem, 1.1rem + 2.6vw, 3.75rem);
  --fs-xl: clamp(1.5rem, 1.1rem + 1.2vw, 2.25rem);
  --fs-lead: clamp(1.125rem, 1.02rem + .35vw, 1.375rem);
  --fs-body: 1.0625rem;
  --fs-sm: .9375rem;
  --fs-xs: .8125rem;
  --fs-label: .75rem;

  /* Raster & Abstände */
  --container: 1440px;
  --gutter: clamp(20px, 4.2vw, 64px);
  --gap: clamp(16px, 2.2vw, 32px);
  --section-y: clamp(88px, 11vw, 176px);
  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px; --s-5: 24px;
  --s-6: 32px; --s-7: 48px; --s-8: 64px; --s-9: 96px; --s-10: 128px;
  --nav-h: 72px;
  --radius: 0;
  --radius-sm: 2px;

  /* Motion */
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-io: cubic-bezier(.76, 0, .24, 1);
  --ease-ui: cubic-bezier(.3, .7, .2, 1);
  --dur-micro: 180ms;
  --dur-ui: 320ms;
  --dur-reveal: 750ms;
  --dur-story: 1150ms;
}
@media (max-width: 1023px) { :root { --nav-h: 64px; } }

/* 3 ─ Base */
*, *::before, *::after { box-sizing: border-box; }
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: calc(var(--nav-h) + 12px);
  background: var(--ink);
}
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
html.is-locked { overflow: hidden; }
body {
  margin: 0;
  font-family: var(--font);
  font-size: var(--fs-body);
  line-height: 1.65;
  color: var(--on-light);
  background: var(--ink);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}
img, svg, picture { display: block; max-width: 100%; }
img { height: auto; background-color: var(--ph, transparent); }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
ul, ol { list-style: none; margin: 0; padding: 0; }
h1, h2, h3, h4, p, figure, blockquote, dl, dd { margin: 0; }
address { font-style: normal; }
table { border-collapse: collapse; }
[hidden] { display: none !important; }
::selection { background: var(--gold); color: var(--ink); }

:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
.theme-light :focus-visible { outline-color: var(--on-light); }

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.skip {
  position: fixed; left: var(--s-4); top: var(--s-4); z-index: 1000;
  padding: 12px 18px; background: var(--gold); color: var(--ink); font-weight: 700;
  transform: translateY(-160%); transition: transform var(--dur-ui) var(--ease-out);
}
.skip:focus { transform: none; }

.container {
  width: 100%;
  max-width: calc(var(--container) + 2 * var(--gutter));
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.section { padding-block: var(--section-y); }
.theme-dark { background: var(--ink); color: var(--on-dark); }
.theme-light { background: var(--paper); color: var(--on-light); }

.icon { width: 1.25em; height: 1.25em; flex: none; }

/* Filmkorn — statisch, nur auf dunklen Flächen */
.grain { position: relative; isolation: isolate; }
.grain::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: .06;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* 4 ─ Typografie */
.display {
  font-family: var(--display);
  font-stretch: 62%;
  font-weight: 800;
  text-transform: uppercase;
  line-height: .88;
  letter-spacing: -.004em;
  font-kerning: normal;
}
.display em { font-style: normal; }
.theme-dark .display em { color: var(--gold); }
.theme-light .display em { position: relative; }
.theme-light .display em::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: .02em; height: .085em;
  background: var(--gold); transform-origin: left center;
}
.line { display: block; overflow: hidden; padding: .1em 0 .05em; margin: -.1em 0 -.05em; }
.line > span { display: inline-block; }

.h2 { font-size: var(--fs-h2); }
.label {
  font-family: var(--font);
  font-stretch: 87.5%;
  font-weight: 600;
  font-size: var(--fs-label);
  line-height: 1.3;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.label__dot {
  display: inline-block; width: 7px; height: 7px; margin-right: 12px; vertical-align: .08em;
  background: var(--gold); transform: rotate(45deg);
}
.lead { font-size: var(--fs-lead); line-height: 1.55; max-width: 36em; }
.theme-dark .lead { color: var(--on-dark-2); }
.theme-light .lead { color: var(--on-light); }

.sec-index {
  display: flex; align-items: center;
  font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label);
  letter-spacing: .16em; text-transform: uppercase;
  margin-bottom: clamp(20px, 2.4vw, 36px);
}
.theme-dark .sec-index { color: var(--on-dark-2); }
.theme-light .sec-index { color: var(--on-light-2); }
.sec-index span { display: inline-flex; align-items: center; font-variant-numeric: tabular-nums; }
.theme-dark .sec-index span { color: var(--gold); }
.theme-light .sec-index span { color: var(--gold-ink); }
.sec-index span::after {
  content: ""; width: clamp(28px, 3.4vw, 56px); height: 1px; margin-inline: 14px; background: currentColor; opacity: .7;
}

.sec-head { display: grid; gap: clamp(20px, 2.4vw, 32px); margin-bottom: clamp(48px, 6vw, 96px); }
.sec-head .sec-index { margin-bottom: 0; }
.sec-head__lead { max-width: 34em; }
@media (min-width: 1024px) {
  .sec-head { grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); }
  .sec-head > * { grid-column: 1 / -1; }
  .sec-head .sec-head__lead { grid-column: 1 / 8; }
  .sec-head--row { align-items: end; }
  .sec-head--row > div { grid-column: 1 / 8; }
  .sec-head--row .sec-head__lead { grid-column: 8 / 13; }
}

/* Unterstrichene Links */
.link {
  display: inline-flex; align-items: center; gap: .5em;
  background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat;
  padding-bottom: 2px;
  transition: background-size var(--dur-ui) var(--ease-out), color var(--dur-micro) linear;
}
.link:hover { background-size: 0 1px; background-position: 100% 100%; }
.link .icon { width: 1.1em; height: 1.1em; transition: transform var(--dur-ui) var(--ease-out); }
.link:hover .icon { transform: translateX(4px); }

/* 5 ─ Komponenten */

/* Buttons: Füllung gleitet von links herein, Pfeil bewegt sich */
.btn {
  --btn-bg: transparent; --btn-fg: currentColor; --btn-fill: var(--bone); --btn-fg-hover: var(--ink); --btn-border: transparent;
  position: relative; isolation: isolate; overflow: hidden;
  display: inline-flex; align-items: center; justify-content: space-between; gap: 18px;
  min-height: 54px; padding: 0 20px 0 24px;
  font-stretch: 87.5%; font-weight: 700; font-size: var(--fs-xs); letter-spacing: .14em; text-transform: uppercase; line-height: 1.2;
  color: var(--btn-fg); background: var(--btn-bg);
  border: 1px solid var(--btn-border); border-radius: var(--radius);
  transition: color var(--dur-ui) var(--ease-ui), border-color var(--dur-ui) var(--ease-ui);
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
}
.btn::before {
  content: ""; position: absolute; inset: -1px; z-index: -1; background: var(--btn-fill);
  transform: scaleX(0); transform-origin: right center;
  transition: transform var(--dur-ui) var(--ease-io);
}
.btn .icon { width: 20px; height: 20px; transition: transform var(--dur-ui) var(--ease-out); }
.btn > span { transition: transform var(--dur-ui) var(--ease-out); }
@media (hover: hover) {
  .btn:hover { color: var(--btn-fg-hover); border-color: var(--btn-fill); }
  .btn:hover::before { transform: scaleX(1); transform-origin: left center; }
  .btn:hover .icon { transform: translateX(4px); }
  .btn:hover > span { transform: translateX(2px); }
}
.btn:active { transform: translateY(1px); }
.btn--gold { --btn-bg: var(--gold); --btn-fg: var(--ink); --btn-fill: var(--bone); --btn-fg-hover: var(--ink); }
.btn--ghost { --btn-fg: var(--bone); --btn-border: rgba(245, 242, 235, .38); --btn-fill: var(--bone); --btn-fg-hover: var(--ink); }
.btn--ink { --btn-bg: var(--ink); --btn-fg: var(--bone); --btn-fill: var(--gold); --btn-fg-hover: var(--ink); }
.btn--line { --btn-fg: var(--on-light); --btn-border: rgba(18, 18, 19, .4); --btn-fill: var(--ink); --btn-fg-hover: var(--bone); }
.btn--sm { min-height: 44px; padding: 0 14px 0 18px; gap: 12px; }
.btn--sm .icon { width: 18px; height: 18px; }
.btn--block { width: 100%; }

/* Kontakt-Aktionen (Probetraining) */
.action {
  --a-bg: var(--paper-3); --a-fg: var(--on-light); --a-sub: var(--on-light-2); --a-border: var(--line-light); --a-fill: var(--ink); --a-fg-hover: var(--bone);
  position: relative; isolation: isolate; overflow: hidden;
  display: grid; grid-template-columns: 48px 1fr 22px; align-items: center; gap: 18px;
  padding: 18px 22px 18px 18px;
  background: var(--a-bg); color: var(--a-fg); border: 1px solid var(--a-border);
  transition: color var(--dur-ui) var(--ease-ui), border-color var(--dur-ui) var(--ease-ui);
}
.action::before {
  content: ""; position: absolute; inset: -1px; z-index: -1; background: var(--a-fill);
  transform: scaleX(0); transform-origin: right center; transition: transform var(--dur-ui) var(--ease-io);
}
.action__icon { display: grid; place-items: center; width: 48px; height: 48px; background: var(--ink); color: var(--gold); transition: background var(--dur-ui) var(--ease-ui), color var(--dur-ui) var(--ease-ui); }
.action__icon .icon { width: 22px; height: 22px; }
.action__body { display: grid; gap: 4px; min-width: 0; }
.action__label { font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label); letter-spacing: .16em; text-transform: uppercase; color: var(--a-sub); transition: color var(--dur-ui) var(--ease-ui); }
.action__value { font-stretch: 75%; font-weight: 700; font-size: clamp(1.1875rem, 1rem + .6vw, 1.5rem); line-height: 1.15; overflow-wrap: anywhere; }
.action__arrow { width: 22px; height: 22px; transition: transform var(--dur-ui) var(--ease-out); }
@media (hover: hover) {
  .action:hover { color: var(--a-fg-hover); border-color: var(--a-fill); }
  .action:hover::before { transform: scaleX(1); transform-origin: left center; }
  .action:hover .action__label { color: inherit; opacity: .7; }
  .action:hover .action__icon { background: var(--gold); color: var(--ink); }
  .action:hover .action__arrow { transform: translateX(5px); }
}
.action:active { transform: translateY(1px); }
.action--xl { --a-bg: rgba(12, 12, 13, .72); --a-fg: var(--bone); --a-sub: var(--on-dark-2); --a-border: var(--line-dark); --a-fill: var(--gold); --a-fg-hover: var(--ink); padding: 22px 26px 22px 22px; }
.action--xl .action__icon { background: var(--gold); color: var(--ink); }
.action--xl .action__value { font-size: clamp(1.25rem, 1rem + .7vw, 1.75rem); }
@media (hover: hover) { .action--xl:hover .action__icon { background: var(--ink); color: var(--gold); } }

/* Filter-Chips */
.chip {
  display: inline-flex; align-items: center; gap: 10px; flex: none;
  min-height: 42px; padding: 0 16px;
  font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-xs); letter-spacing: .06em;
  border: 1px solid var(--line-light); background: transparent; color: var(--on-light);
  transition: background var(--dur-micro) linear, color var(--dur-micro) linear, border-color var(--dur-micro) linear;
}
.chip i { width: 10px; height: 10px; background: var(--cat, var(--ink)); flex: none; }
@media (hover: hover) { .chip:hover { border-color: var(--on-light); } }
.chip.is-active { background: var(--ink); color: var(--bone); border-color: var(--ink); }
.chip.is-active i { box-shadow: 0 0 0 2px var(--ink), 0 0 0 3px rgba(245, 242, 235, .5); }

[data-group="bjj"] { --cat: var(--c-bjj); }
[data-group="boxen"] { --cat: var(--c-boxen); }
[data-group="kick"] { --cat: var(--c-kick); }
[data-group="mma"] { --cat: var(--c-mma); }
[data-group="sparring"] { --cat: var(--c-sparring); }
[data-group="youth"] { --cat: var(--c-youth); }

/* Rotierendes Siegel */
.seal { position: relative; width: 148px; aspect-ratio: 1; }
.seal__ring { position: absolute; inset: 0; width: 100%; height: 100%; animation: spin 38s linear infinite; }
.seal__ring text { font-family: var(--font); font-stretch: 87.5%; font-weight: 700; font-size: 14.5px; letter-spacing: .08em; fill: var(--bone); }
.seal img { position: absolute; inset: 21%; width: 58%; height: 58%; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ==========================================================================
   6 ─ Sektionen
   ========================================================================== */

/* ── Navigation ─────────────────────────────────────────────── */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 100;
  height: var(--nav-h); color: var(--bone);
  transition: transform var(--dur-ui) var(--ease-out), background-color var(--dur-ui) linear, height var(--dur-ui) var(--ease-out);
}
.nav::after {
  content: ""; position: absolute; inset: auto 0 0 0; height: 1px; background: var(--line-dark);
  transform: scaleX(0); transform-origin: left; transition: transform 600ms var(--ease-out);
}
.nav.is-scrolled { background: rgba(12, 12, 13, .9); -webkit-backdrop-filter: saturate(140%) blur(14px); backdrop-filter: saturate(140%) blur(14px); }
.nav.is-scrolled::after { transform: scaleX(1); }
.nav.is-hidden { transform: translateY(-100%); }
@media (min-width: 1024px) { .nav.is-scrolled { height: 64px; } }
.nav__inner { height: 100%; display: flex; align-items: center; gap: var(--s-6); }
.nav__brand { display: inline-flex; align-items: center; gap: 12px; flex: none; }
.nav__brand img { width: 44px; height: 44px; transition: transform var(--dur-ui) var(--ease-out); }
@media (hover: hover) { .nav__brand:hover img { transform: rotate(-8deg); } }
.nav__word { display: grid; line-height: 1; }
.nav__word b { font-stretch: 62%; font-weight: 800; font-size: 1.1875rem; text-transform: uppercase; letter-spacing: .01em; }
.nav__word span { font-stretch: 87.5%; font-weight: 600; font-size: .625rem; letter-spacing: .34em; text-transform: uppercase; color: var(--gold); margin-top: 4px; }

.nav__links { margin-left: auto; display: none; }
.nav__links ul { display: flex; gap: clamp(18px, 2vw, 34px); }
.nav__links a {
  position: relative; display: block; padding-block: 10px;
  font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-xs); letter-spacing: .12em; text-transform: uppercase;
  color: var(--on-dark-2); transition: color var(--dur-micro) linear;
}
.nav__links a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 4px; height: 1px; background: var(--gold);
  transform: scaleX(0); transform-origin: right; transition: transform var(--dur-ui) var(--ease-out);
}
.nav__links a:hover, .nav__links a.is-current { color: var(--bone); }
.nav__links a:hover::after, .nav__links a.is-current::after { transform: scaleX(1); transform-origin: left; }

.nav__actions { margin-left: auto; display: flex; align-items: center; gap: var(--s-4); }
.nav__phone {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-width: 44px; min-height: 44px;
  font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-xs); letter-spacing: .08em; color: var(--on-dark-2);
  transition: color var(--dur-micro) linear;
}
.nav__phone:hover { color: var(--gold); }
.nav__phone .icon { width: 18px; height: 18px; }
.nav__phone > span { display: none; }
.nav__toggle {
  display: inline-flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 2px 0 8px;
  font-stretch: 87.5%; font-weight: 700; font-size: var(--fs-xs); letter-spacing: .14em; text-transform: uppercase;
}
.nav__toggle-bars { display: grid; gap: 6px; width: 26px; }
.nav__toggle-bars i { display: block; height: 1.5px; background: currentColor; transition: transform var(--dur-ui) var(--ease-out); }
.nav__toggle-bars i:last-child { width: 62%; justify-self: end; }
@media (hover: hover) { .nav__toggle:hover .nav__toggle-bars i:last-child { transform: scaleX(1.6); transform-origin: right; } }

@media (min-width: 1140px) {
  .nav__links { display: block; }
  .nav__actions { margin-left: var(--s-6); }
  .nav__toggle { display: none; }
}
@media (min-width: 1360px) { .nav__phone > span { display: inline; } }

/* Mobiles Menü */
.menu {
  position: fixed; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0;
  background: var(--ink); color: var(--bone); overflow-y: auto; overscroll-behavior: contain;
  display: none; flex-direction: column;
  padding-bottom: env(safe-area-inset-bottom);
}
.menu[open] { display: flex; }
.menu::backdrop { background: transparent; }
.menu__top { height: var(--nav-h); display: flex; align-items: center; justify-content: space-between; flex: none; border-bottom: 1px solid var(--line-dark); }
.menu__close { display: inline-flex; align-items: center; gap: 12px; min-height: 44px; font-stretch: 87.5%; font-weight: 700; font-size: var(--fs-xs); letter-spacing: .14em; text-transform: uppercase; }
.menu__close .icon { width: 26px; height: 26px; }
.menu__nav { flex: 1; display: flex; align-items: center; padding-block: clamp(24px, 6vh, 64px); }
.menu__nav ol { width: 100%; }
.menu__nav li { border-bottom: 1px solid var(--line-dark); overflow: hidden; }
.menu__nav a {
  display: flex; align-items: baseline; gap: 18px; padding-block: clamp(8px, 1.6vh, 16px);
  font-stretch: 62%; font-weight: 800; font-size: clamp(2.5rem, 1.2rem + 7vw, 4.5rem); line-height: .95; text-transform: uppercase;
  transition: color var(--dur-micro) linear, transform var(--dur-ui) var(--ease-out);
}
.menu__nav a:hover { color: var(--gold); transform: translateX(8px); }
.menu__num { font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label); letter-spacing: .16em; color: var(--gold); transform: translateY(-.9em); }
.menu__foot { display: grid; gap: var(--s-5); padding-block: var(--s-5) var(--s-6); flex: none; }
.menu__contact { display: grid; gap: 6px; font-size: var(--fs-sm); color: var(--on-dark-2); }
.menu__contact a { padding-block: 6px; }
.menu__contact a:hover { color: var(--gold); }

/* ── Hero ───────────────────────────────────────────────────── */
.hero {
  position: relative; isolation: isolate; overflow: hidden;
  display: flex; flex-direction: column; justify-content: flex-end;
  min-height: 100vh; min-height: 100svh;
  padding-top: calc(var(--nav-h) + 40px);
}
.hero__media { position: absolute; inset: 0; z-index: -2; display: grid; grid-template-columns: 1fr; gap: 2px; background: var(--ink); }
.hero__panel { position: relative; overflow: hidden; }
.hero__panel picture { position: absolute; inset: -6% 0; transform: translate3d(0, var(--py, 0px), 0); }
.hero__panel img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.7) contrast(1.05) brightness(.66); }
.hero__panel--b, .hero__panel--c { display: none; }
.hero__shade {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background:
    linear-gradient(180deg, rgba(12,12,13,.72) 0%, rgba(12,12,13,.16) 20%, rgba(12,12,13,.5) 36%, rgba(12,12,13,.84) 56%, var(--ink) 92%),
    linear-gradient(90deg, rgba(12,12,13,.35), rgba(12,12,13,0) 60%);
}
.hero__seal { position: absolute; right: var(--gutter); top: calc(var(--nav-h) + 4vh); display: none; }

.hero__content { position: relative; }
.hero__eyebrow { color: var(--bone); margin-bottom: clamp(16px, 2vw, 28px); }
.hero__title { font-size: var(--fs-hero); line-height: .84; margin-left: -.04em; }
.hero__title .line--gold { color: var(--gold); }
.hero__bottom { max-width: 36rem; margin-top: clamp(24px, 3vw, 40px); }
.hero__sub { font-size: var(--fs-lead); line-height: 1.5; color: var(--bone); text-shadow: 0 1px 12px rgba(0,0,0,.55); }
.hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: var(--s-5); }

.hero__facts {
  display: grid; grid-template-columns: 1fr 1fr;
  margin-top: clamp(28px, 4.5vh, 56px); padding-block: 18px 22px;
  border-top: 1px solid var(--line-dark);
  font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label); letter-spacing: .14em; text-transform: uppercase; color: var(--on-dark-2);
  row-gap: 10px;
}
.hero__facts b { color: var(--gold); font-weight: 800; margin-right: 6px; }

@media (max-width: 599px) {
  .hero__actions .btn { width: 100%; }
}
@media (min-width: 768px) {
  .hero__media { grid-template-columns: 56fr 44fr; }
  .hero__panel--b { display: block; }
  .hero__facts { grid-template-columns: repeat(4, auto); justify-content: space-between; }
}
@media (min-width: 1024px) {
  .hero { padding-top: calc(var(--nav-h) + 6vh); }
  .hero__media { grid-template-columns: 42fr 33fr 25fr; }
  .hero__panel--c { display: block; }
  .hero__shade {
    background:
      linear-gradient(180deg, rgba(12,12,13,.6) 0%, rgba(12,12,13,0) 22%, rgba(12,12,13,0) 55%, rgba(12,12,13,.7) 85%, var(--ink) 100%),
      linear-gradient(90deg, rgba(12,12,13,.9) 0%, rgba(12,12,13,.72) 38%, rgba(12,12,13,.25) 62%, rgba(12,12,13,0) 80%);
  }
  .hero__actions { margin-top: var(--s-6); }
}
@media (min-width: 1280px) and (min-height: 761px) {
  .hero__seal { display: block; }
}

/* ── Intro / Über uns ───────────────────────────────────────── */
.intro__title { font-size: var(--fs-h2); }
.intro__grid { display: grid; gap: clamp(40px, 6vw, 96px); margin-top: clamp(40px, 6vw, 88px); }
.intro__img { position: relative; overflow: hidden; aspect-ratio: 4 / 3; }
.intro__img img { width: 100%; height: 100%; object-fit: cover; }
.intro__text { display: grid; gap: var(--s-5); align-content: center; }
.intro__text > p:not(.lead) { color: var(--on-light-2); max-width: 36em; }
@media (min-width: 1024px) {
  .intro__grid { grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); }
  .intro__img { grid-column: 1 / 7; aspect-ratio: 5 / 4; }
  .intro__text { grid-column: 8 / 13; }
}

/* ── Laufband ───────────────────────────────────────────────── */
.band { overflow: hidden; border-block: 1px solid var(--line-dark); padding-block: clamp(18px, 2.4vw, 32px); }
.band__track { display: flex; width: max-content; animation: marquee 48s linear infinite; }
.band p {
  display: flex; align-items: center; gap: .45em; padding-right: .45em; white-space: nowrap;
  font-stretch: 62%; font-weight: 800; font-size: clamp(2.5rem, 1.6rem + 4vw, 6rem); line-height: 1; text-transform: uppercase;
}
.band span { color: transparent; -webkit-text-stroke: 1px rgba(245, 242, 235, .42); }
.band .band__solid { color: var(--gold); -webkit-text-stroke: 0; }
.band i { width: .16em; height: .16em; background: var(--gold); transform: rotate(45deg); flex: none; }
@keyframes marquee { to { transform: translate3d(-50%, 0, 0); } }

/* ── Sportarten ─────────────────────────────────────────────── */
.sports__list { counter-reset: sport; border-bottom: 1px solid var(--line-dark); }
.sport {
  position: relative; display: grid; grid-template-columns: 1fr; gap: 0 var(--s-5);
  padding-block: clamp(28px, 3vw, 40px);
  border-top: 1px solid var(--line-dark);
}
.sport__thumb { position: relative; overflow: hidden; aspect-ratio: 16 / 10; margin-bottom: var(--s-5); }
.sport__thumb img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.8); }
.sport__num { font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label); letter-spacing: .16em; color: var(--gold); padding-top: .5em; font-variant-numeric: tabular-nums; }
.sport__main { display: grid; gap: 12px; }
.sport__kind { color: var(--on-dark-3); }
.sport__name { font-size: var(--fs-h3); color: var(--bone); transition: transform var(--dur-ui) var(--ease-out), color var(--dur-ui) linear; }
.sport__text { color: var(--on-dark-2); max-width: 34em; }
.sport__link {
  justify-self: start; margin-top: 6px; min-height: 44px;
  font-stretch: 87.5%; font-weight: 700; font-size: var(--fs-xs); letter-spacing: .12em; text-transform: uppercase; color: var(--bone);
  background-position: 0 calc(100% - 10px); padding-bottom: 0;
}
.sport__link:hover { color: var(--gold); background-position: 100% calc(100% - 10px); }
.sport::before {
  content: ""; position: absolute; left: 0; top: -1px; height: 1px; width: 100%; background: var(--gold);
  transform: scaleX(0); transform-origin: left; transition: transform 700ms var(--ease-out);
}
.sports__stage { display: none; }
@media (min-width: 600px) and (max-width: 1023px) {
  .sport { grid-template-columns: minmax(200px, 38%) 1fr; }
  .sport__thumb { grid-row: 1 / 3; margin: 0; aspect-ratio: 4 / 5; }
  .sport__num { grid-column: 2; }
  .sport__main { grid-column: 2; }
}
@media (min-width: 1024px) {
  .sports__layout { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); align-items: start; }
  .sports__list { grid-column: 1 / 8; }
  .sport { grid-template-columns: 64px 1fr; padding-block: 36px 40px; cursor: default; }
  .sport__thumb { display: none; }
  .sport__name { color: var(--on-dark-3); }
  .sport.is-active .sport__name { color: var(--bone); transform: translateX(10px); }
  .sport.is-active::before { transform: scaleX(1); }
  .sport__text, .sport__link { transition: transform var(--dur-ui) var(--ease-out); }
  .sport.is-active .sport__text, .sport.is-active .sport__link { transform: translateX(10px); }
  .sports__stage { display: block; grid-column: 8 / 13; position: sticky; top: calc(64px + 32px); }
  .sports__frame { position: relative; aspect-ratio: 4 / 5; max-height: calc(100vh - 64px - 64px); margin-left: auto; overflow: hidden; background: var(--ink-3); }
  .sports__img { position: absolute; inset: 0; clip-path: inset(100% 0 0 0); transition: clip-path 900ms var(--ease-io); }
  .sports__img picture { height: 100%; transform: scale(1.12); transition: transform 1400ms var(--ease-out); }
  .sports__img img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.8) contrast(1.05); }
  .sports__img.is-active { clip-path: inset(0); z-index: 1; }
  .sports__img.is-active picture { transform: scale(1); }
  .sports__img.is-leaving { clip-path: inset(0); z-index: 0; }
  .sports__caption {
    position: absolute; inset: auto 0 0 0; z-index: 2; display: flex; justify-content: space-between; gap: var(--s-4);
    padding: 48px 20px 18px; color: var(--bone);
    background: linear-gradient(180deg, transparent, rgba(12,12,13,.75));
  }
}

/* ── Kursplan ───────────────────────────────────────────────── */
.plan__head { display: grid; gap: var(--s-6); margin-bottom: clamp(36px, 4vw, 56px); }
.plan__intro { display: grid; gap: var(--s-5); align-content: end; color: var(--on-light-2); font-size: var(--fs-lead); line-height: 1.5; }
.plan__intro .btn { justify-self: start; }
@media (min-width: 1024px) {
  .plan__head { grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); align-items: end; }
  .plan__head > div:first-child { grid-column: 1 / 8; }
  .plan__intro { grid-column: 8 / 13; }
}

.plan__filters {
  display: flex; gap: 8px; margin-bottom: clamp(24px, 3vw, 40px);
  overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
  margin-inline: calc(-1 * var(--gutter)); padding-inline: var(--gutter);
  scroll-padding-inline: var(--gutter);
}
.plan__filters::-webkit-scrollbar { display: none; }
@media (min-width: 1024px) { .plan__filters { flex-wrap: wrap; overflow: visible; margin-inline: 0; padding-inline: 0; } }

.slot { transition: opacity var(--dur-ui) linear, transform var(--dur-ui) var(--ease-out); }
.slot__title { display: block; font-stretch: 87.5%; font-weight: 700; line-height: 1.2; }
.slot__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 6px; }
.slot__time { font-size: var(--fs-xs); font-variant-numeric: tabular-nums; color: var(--on-light-2); }
.slot__age, .slot__cat {
  font-stretch: 87.5%; font-weight: 700; font-size: .6875rem; letter-spacing: .12em; text-transform: uppercase;
}
.slot__age { padding: 2px 7px; border: 1px solid currentColor; color: var(--c-youth); }
.slot__cat { color: var(--on-light-2); }
.slot.is-dim { opacity: .2; }

/* Wochenansicht */
.week { display: none; }
.week__table { width: 100%; table-layout: fixed; }
.week__table th, .week__table td { vertical-align: top; text-align: left; }
.week__table thead th { padding: 0 6px 16px; border-bottom: 2px solid var(--on-light); }
.week__corner { width: 84px; color: var(--on-light-2); }
.week__day { display: block; font-stretch: 62%; font-weight: 800; font-size: clamp(1.25rem, 1rem + .6vw, 1.625rem); text-transform: uppercase; line-height: 1; }
.week__today { display: none; margin-top: 8px; color: var(--gold-ink); }
.week__table tbody th, .week__table tbody td { padding: 10px 5px; border-bottom: 1px solid var(--line-light); }
.week__time { font-stretch: 62%; font-weight: 800; font-size: 1.625rem; line-height: 1; font-variant-numeric: tabular-nums; padding-top: 16px !important; }
.week .slots { display: grid; gap: 6px; }
.week .slot {
  position: relative; padding: 12px 12px 12px 15px; background: var(--paper-3);
  box-shadow: inset 3px 0 0 var(--cat, var(--ink));
  transition: opacity var(--dur-ui) linear, box-shadow var(--dur-ui) var(--ease-out), transform var(--dur-ui) var(--ease-out);
}
.week .slot__title { font-size: .9375rem; }
@media (hover: hover) { .week .slot:hover { box-shadow: inset 6px 0 0 var(--cat, var(--ink)), 0 10px 24px -14px rgba(0,0,0,.35); transform: translateY(-2px); } }
.week [data-day].is-today { background: rgba(224, 176, 74, .13); }
.week th.is-today .week__today { display: block; }
.week thead th.is-today { border-bottom-color: var(--gold-ink); }
@media (min-width: 1024px) { .week { display: block; } .daily { display: none; } }

/* Tagesansicht */
.daily__tabs {
  position: sticky; top: var(--nav-h); z-index: 5;
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px;
  margin-inline: calc(-1 * var(--gutter)); padding: 8px var(--gutter);
  background: var(--paper); border-bottom: 1px solid var(--line-light);
  transition: top var(--dur-ui) var(--ease-out);
}
html.nav-hidden .daily__tabs { top: 0; }
.daily__tab {
  position: relative; display: grid; justify-items: center; gap: 2px; min-height: 58px; padding: 8px 0 6px;
  border: 1px solid var(--line-light); background: var(--paper-3);
  transition: background var(--dur-micro) linear, color var(--dur-micro) linear, border-color var(--dur-micro) linear;
}
.daily__abbr { font-stretch: 62%; font-weight: 800; font-size: 1.5rem; line-height: 1; text-transform: uppercase; }
.daily__count { font-size: .6875rem; font-weight: 600; letter-spacing: .08em; color: var(--on-light-2); font-variant-numeric: tabular-nums; }
.daily__tab.is-today::after { content: ""; position: absolute; top: 6px; right: 6px; width: 6px; height: 6px; background: var(--gold); transform: rotate(45deg); }
.daily__tab.is-active { background: var(--ink); color: var(--bone); border-color: var(--ink); }
.daily__tab.is-active .daily__count { color: var(--on-dark-2); }
.daily__tab.is-empty:not(.is-active) { opacity: .45; }
.daily__day { display: none; padding-top: var(--s-5); }
.daily__day.is-active { display: block; animation: dayIn var(--dur-ui) var(--ease-out); }
@keyframes dayIn { from { opacity: 0; transform: translateY(8px); } }
.daily__title { display: flex; align-items: baseline; gap: 14px; font-stretch: 62%; font-weight: 800; font-size: 2.25rem; line-height: 1; text-transform: uppercase; margin-bottom: var(--s-4); }
.daily__title .week__today { margin: 0; }
.daily__day.is-today .week__today { display: inline-block; }
.daily__list { border-top: 2px solid var(--on-light); }
.dslot { display: grid; grid-template-columns: 88px 1fr; gap: var(--s-4); padding: 18px 0; border-bottom: 1px solid var(--line-light); }
.dslot.is-dim { display: none; }
.dslot__time { display: grid; align-content: start; gap: 2px; }
.dslot__time b { font-stretch: 62%; font-weight: 800; font-size: 1.75rem; line-height: 1; font-variant-numeric: tabular-nums; }
.dslot__time span { font-size: var(--fs-xs); color: var(--on-light-2); font-variant-numeric: tabular-nums; }
.dslot__body { padding-left: 14px; box-shadow: inset 3px 0 0 var(--cat, var(--ink)); }
.dslot .slot__title { font-size: 1.125rem; }
.daily__empty, .daily__sunday { padding: 18px 0; color: var(--on-light-2); }
.daily__sunday { padding: 12px 0 0; font-size: var(--fs-sm); }

.plan__note { margin-top: clamp(28px, 3vw, 44px); font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label); letter-spacing: .16em; text-transform: uppercase; color: var(--on-light-2); }

/* ── Trainer ────────────────────────────────────────────────── */
.trainers__stage { display: none; }
.trainer { display: grid; gap: var(--s-6); padding-block: clamp(40px, 5vw, 64px); border-top: 1px solid var(--line-dark); }
.trainer__photo { position: relative; overflow: hidden; aspect-ratio: 4 / 5; max-height: 78vh; background: var(--ink-3); }
.trainer__photo img, .trainers__img img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.06); }
.trainer__photo-num { position: absolute; left: 18px; bottom: 12px; font-size: clamp(3.5rem, 12vw, 6rem); color: var(--bone); mix-blend-mode: difference; }
.trainer__body { display: grid; gap: var(--s-4); align-content: start; }
.trainer__role { display: flex; align-items: center; gap: 14px; color: var(--gold); }
.trainer__num { display: none; }
.trainer__name { font-size: var(--fs-h3); color: var(--bone); }
.trainer__tags { display: flex; flex-wrap: wrap; row-gap: 6px; margin-bottom: var(--s-2); font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label); letter-spacing: .14em; text-transform: uppercase; color: var(--on-dark-2); }
.trainer__tags li + li::before { content: "/"; margin-inline: 10px; color: var(--on-dark-3); }
.trainer__body > p:not(.trainer__role) { color: var(--on-dark-2); max-width: 36em; }
.trainer__wins { margin-top: var(--s-3); border-top: 1px solid var(--line-dark); }
.trainer__wins li { display: grid; grid-template-columns: 72px 1fr; gap: var(--s-4); padding-block: 13px; border-bottom: 1px solid var(--line-dark); color: var(--bone); font-size: var(--fs-sm); line-height: 1.45; }
.trainer__year { font-stretch: 62%; font-weight: 800; font-size: 1.375rem; line-height: 1; color: var(--gold); font-variant-numeric: tabular-nums; }

@media (min-width: 600px) and (max-width: 1023px) {
  .trainer { grid-template-columns: minmax(220px, 42%) 1fr; align-items: start; }
  .trainer__photo { position: sticky; top: calc(var(--nav-h) + 24px); }
}
@media (min-width: 1024px) {
  .trainers__layout { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); align-items: start; }
  .trainers__stage { display: block; grid-column: 1 / 6; position: sticky; top: calc(64px + 32px); }
  .trainers__frame { position: relative; aspect-ratio: 4 / 5; max-height: calc(100vh - 64px - 64px); overflow: hidden; background: var(--ink-3); }
  .trainers__img { position: absolute; inset: 0; clip-path: inset(0 0 100% 0); transition: clip-path 1000ms var(--ease-io); }
  .trainers__img picture { height: 100%; transform: scale(1.1); transition: transform 1500ms var(--ease-out); }
  .trainers__img.is-active { clip-path: inset(0); z-index: 1; }
  .trainers__img.is-active picture { transform: none; }
  .trainers__img.is-leaving { clip-path: inset(0); z-index: 0; }
  @media (hover: hover) { .trainers__frame:hover .trainers__img.is-active img { filter: grayscale(0) contrast(1.02); } }
  .trainers__img img { transition: filter 900ms var(--ease-out); }
  .trainers__counter {
    position: absolute; left: 22px; bottom: 16px; z-index: 2; display: flex; align-items: baseline; gap: 10px;
    font-size: clamp(4rem, 6vw, 6.5rem); color: var(--bone); mix-blend-mode: difference;
  }
  .trainers__counter small { font-size: .3em; letter-spacing: .06em; }
  .trainers__list { grid-column: 7 / 13; }
  .trainer { min-height: min(78vh, 760px); align-content: center; padding-block: 64px; }
  .trainer:first-child { border-top: 0; padding-top: 0; min-height: min(70vh, 700px); align-content: start; }
  .trainer__photo { display: none; }
  .trainer__num { display: inline; color: var(--on-dark-3); }
  .trainer__num::after { content: ""; display: inline-block; width: 28px; height: 1px; margin-left: 14px; vertical-align: middle; background: currentColor; }
}

/* ── Galerie ────────────────────────────────────────────────── */
.gallery__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(8px, 1vw, 14px); }
.gallery__item { position: relative; overflow: hidden; aspect-ratio: 4 / 5; background: var(--ink-3); }
.gallery__item:nth-child(3n + 1), .gallery__item:last-child { grid-column: span 2; aspect-ratio: 3 / 2; }
.gallery__btn { position: absolute; inset: 0; display: block; width: 100%; height: 100%; text-align: left; cursor: zoom-in; }
.gallery__btn picture { height: 100%; }
.gallery__btn img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.85) contrast(1.04); transition: transform 900ms var(--ease-out), filter 900ms var(--ease-out); }
.gallery__cap {
  position: absolute; inset: auto 0 0 0; display: flex; align-items: center; gap: 12px;
  padding: 36px 16px 14px; color: var(--bone);
  font-stretch: 87.5%; font-weight: 600; font-size: .6875rem; letter-spacing: .14em; text-transform: uppercase;
  background: linear-gradient(180deg, transparent, rgba(12,12,13,.7));
}
.gallery__num { color: var(--gold); }
.gallery__cap .icon { margin-left: auto; width: 18px; height: 18px; }
@media (hover: hover) {
  .gallery__cap { opacity: 0; transform: translateY(10px); transition: opacity var(--dur-ui) linear, transform var(--dur-ui) var(--ease-out); }
  .gallery__btn:hover img, .gallery__btn:focus-visible img { transform: scale(1.035); filter: saturate(1) contrast(1.04); }
  .gallery__btn:hover .gallery__cap, .gallery__btn:focus-visible .gallery__cap { opacity: 1; transform: none; }
}
.gallery__btn:focus-visible { outline-offset: -4px; }

@media (min-width: 1024px) {
  .gallery__grid { grid-template-columns: repeat(12, 1fr); grid-auto-rows: clamp(84px, 8.2vw, 150px); }
  .gallery__item, .gallery__item:nth-child(3n + 1), .gallery__item:last-child { aspect-ratio: auto; grid-column: auto; }
  .gallery__grid .gallery__item--1 { grid-column: 1 / 6;  grid-row: 1 / 5; }
  .gallery__grid .gallery__item--2 { grid-column: 6 / 13; grid-row: 1 / 3; }
  .gallery__grid .gallery__item--3 { grid-column: 6 / 9;  grid-row: 3 / 5; }
  .gallery__grid .gallery__item--4 { grid-column: 9 / 13; grid-row: 3 / 5; }
  .gallery__grid .gallery__item--5 { grid-column: 1 / 5;  grid-row: 5 / 7; }
  .gallery__grid .gallery__item--6 { grid-column: 1 / 5;  grid-row: 7 / 9; }
  .gallery__grid .gallery__item--7 { grid-column: 5 / 10; grid-row: 5 / 9; }
  .gallery__grid .gallery__item--8 { grid-column: 10 / 13; grid-row: 5 / 9; }
  .gallery__grid .gallery__item--9 { grid-column: 1 / 4;  grid-row: 9 / 11; }
  .gallery__grid .gallery__item--10 { grid-column: 4 / 10; grid-row: 9 / 11; }
  .gallery__grid .gallery__item--11 { grid-column: 10 / 13; grid-row: 9 / 11; }
  .gallery__grid .gallery__item--2 img { object-position: 50% 62%; }
  .gallery__grid .gallery__item--4 img { object-position: 50% 30%; }
  .gallery__grid .gallery__item--5 img { object-position: 50% 45%; }
  .gallery__grid .gallery__item--6 img { object-position: 50% 40%; }
  .gallery__grid .gallery__item--10 img { object-position: 50% 55%; }
}

/* ── Probetraining (CTA-Sektion) ───────────────────────────── */
.cta { position: relative; isolation: isolate; overflow: hidden; padding-block: clamp(96px, 13vw, 200px); }
.cta__bg { position: absolute; inset: 0; z-index: -1; }
.cta__bg picture { height: 100%; }
.cta__bg img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.1) brightness(.42); }
.cta__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(12,12,13,.9) 0%, rgba(12,12,13,.55) 60%, rgba(12,12,13,.75) 100%); }
.cta__inner { display: grid; gap: clamp(40px, 5vw, 72px); }
.cta__title { font-size: clamp(3.25rem, 1rem + 6.6vw, 8.5rem); line-height: .84; }
.cta__text { margin-top: var(--s-5); max-width: 30em; font-size: var(--fs-lead); line-height: 1.5; color: var(--on-dark-2); }
.cta__actions { display: grid; gap: 12px; align-content: end; }
.cta__hours { margin-top: var(--s-3); color: var(--on-dark-2); line-height: 1.8; }
.sec-index--light { color: var(--on-dark-2); }
@media (min-width: 1024px) {
  .cta__inner { grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); align-items: end; }
  .cta__copy { grid-column: 1 / 8; }
  .cta__actions { grid-column: 8 / 13; }
}

/* ── Kontakt ───────────────────────────────────────────────── */
.contact__grid { display: grid; gap: clamp(40px, 5vw, 64px); }
.hours__status { display: flex; align-items: center; gap: 12px; margin-bottom: var(--s-5); font-stretch: 87.5%; font-weight: 700; font-size: var(--fs-sm); letter-spacing: .02em; }
.hours__dot { position: relative; width: 10px; height: 10px; border-radius: 50%; background: var(--on-light-2); }
.hours__status.is-open .hours__dot { background: var(--ok); }
.hours__status.is-open .hours__dot::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 1px solid var(--ok); animation: pulse 2.4s var(--ease-out) infinite; }
@keyframes pulse { from { transform: scale(.6); opacity: 1; } to { transform: scale(1.6); opacity: 0; } }
.hours__table { width: 100%; border-top: 2px solid var(--on-light); }
.hours__table th, .hours__table td { padding: 14px 0; border-bottom: 1px solid var(--line-light); text-align: left; font-weight: 500; }
.hours__table th { font-stretch: 87.5%; font-weight: 700; }
.hours__table td { text-align: right; font-variant-numeric: tabular-nums; }
.hours__table .is-closed td { color: var(--on-light-2); }
.hours__table .week__today { display: none; margin: 0 0 0 12px; }
.hours__table tr.is-today th, .hours__table tr.is-today td { box-shadow: inset 0 -2px 0 var(--gold); }
.hours__table tr.is-today .week__today { display: inline-block; }

.contact__list { display: grid; gap: var(--s-5); }
.contact__list dt { color: var(--on-light-2); margin-bottom: 6px; }
.contact__big { font-stretch: 75%; font-weight: 700; font-size: clamp(1.375rem, 1.1rem + .9vw, 1.875rem); line-height: 1.2; overflow-wrap: anywhere; display: inline; background-size: 100% 1px; }
.contact__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: var(--s-6); }

.map { position: relative; min-height: 360px; background: var(--ink); color: var(--bone); overflow: hidden; }
.map::before {
  content: ""; position: absolute; inset: 0; opacity: .5;
  background:
    repeating-linear-gradient(0deg, transparent 0 47px, rgba(245,242,235,.08) 47px 48px),
    repeating-linear-gradient(90deg, transparent 0 47px, rgba(245,242,235,.08) 47px 48px);
}
.map__consent { position: relative; height: 100%; display: grid; align-content: end; justify-items: start; gap: var(--s-4); padding: clamp(24px, 3vw, 36px); }
.map__icon { width: 36px; height: 36px; color: var(--gold); margin-bottom: auto; }
.map__title { font-size: clamp(1.625rem, .8rem + 1.4vw, 2.5rem); overflow-wrap: anywhere; }
.map__text { font-size: var(--fs-xs); color: var(--on-dark-2); max-width: 34em; }
.map__text .link { color: var(--bone); }
.map .btn--line { --btn-fg: var(--bone); --btn-border: rgba(245,242,235,.4); --btn-fill: var(--gold); --btn-fg-hover: var(--ink); }
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; filter: grayscale(.6) contrast(1.05); }

@media (min-width: 768px) and (max-width: 1023px) {
  .contact__grid { grid-template-columns: 1fr 1fr; }
  .map { grid-column: 1 / -1; min-height: 420px; }
}
@media (min-width: 1024px) {
  .contact__grid { grid-template-columns: repeat(12, 1fr); column-gap: var(--gap); }
  .hours { grid-column: 1 / 5; }
  .contact__info { grid-column: 5 / 9; padding-left: clamp(0px, 2vw, 32px); }
  .map { grid-column: 9 / 13; min-height: 0; aspect-ratio: 4 / 5; }
}

/* ── Footer ────────────────────────────────────────────────── */
.footer { padding-top: clamp(64px, 7vw, 104px); font-size: var(--fs-sm); color: var(--on-dark-2); }
.footer__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-7) var(--gap); padding-bottom: clamp(48px, 5vw, 72px); }
.footer__brand { grid-column: 1 / -1; display: grid; gap: var(--s-4); align-content: start; }
.footer__brand img { width: 56px; height: 56px; }
.footer__brand p { max-width: 28em; }
.footer__head { margin-bottom: var(--s-4); font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label); letter-spacing: .16em; text-transform: uppercase; color: var(--gold); }
.footer__col ul, .footer__col address { display: grid; gap: 2px; justify-items: start; }
.footer__col a { display: inline-block; max-width: 100%; padding-block: 5px; overflow-wrap: anywhere; transition: color var(--dur-micro) linear; }
.footer__grid > * { min-width: 0; }
@media (max-width: 479px) { .footer__grid { grid-template-columns: 1fr; } }
.footer__col a:hover { color: var(--bone); }
.footer__hours { display: grid; gap: 6px; }
.footer__hours div { display: grid; grid-template-columns: 4.5em auto; gap: 10px; }
.footer__hours dd { white-space: nowrap; }
.footer__hours dd { font-variant-numeric: tabular-nums; }
.footer__bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--s-3) var(--s-6);
  padding-block: var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom)); border-top: 1px solid var(--line-dark); font-size: var(--fs-xs); color: var(--on-dark-3);
}
.footer__bottom ul { display: flex; flex-wrap: wrap; align-items: center; gap: 0 var(--s-5); }
.footer__bottom a, .footer__admin { display: inline-block; padding-block: 12px; color: var(--on-dark-2); transition: color var(--dur-micro) linear; }
.footer__bottom a:hover, .footer__admin:hover { color: var(--bone); }
.footer__admin { font-size: var(--fs-xs); color: var(--on-dark-3); }
@media (min-width: 640px) { .footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) {
  .footer__grid { grid-template-columns: 1.5fr 1fr 1.3fr 1fr; }
  .footer__brand { grid-column: auto; padding-right: var(--s-6); }
}

/* ==========================================================================
   7 ─ Dialoge
   ========================================================================== */
dialog { color: inherit; }
dialog::backdrop { background: rgba(8, 8, 9, .66); }

/* Probetraining-Panel */
.trial {
  position: fixed; inset: 0 0 0 auto; margin: 0; padding: 0; border: 0;
  width: min(540px, 100%); height: 100%; max-width: none; max-height: none;
  background: var(--paper); color: var(--on-light);
  overflow-y: auto; overscroll-behavior: contain;
  transform: translateX(100%); transition: transform 560ms var(--ease-out);
}
.trial.is-open { transform: none; }
.trial::backdrop { opacity: 0; transition: opacity 400ms linear; }
.trial.is-open::backdrop { opacity: 1; }
.trial__panel { min-height: 100%; display: grid; align-content: start; gap: var(--s-5); padding: clamp(24px, 4vw, 44px); padding-bottom: calc(clamp(24px, 4vw, 44px) + env(safe-area-inset-bottom)); border-top: 4px solid var(--gold); }
.trial__head { display: flex; align-items: center; justify-content: space-between; }
.trial__head .label { color: var(--on-light-2); }
.trial__close { display: grid; place-items: center; width: 48px; height: 48px; margin-right: -10px; border: 1px solid transparent; transition: border-color var(--dur-micro) linear, transform var(--dur-ui) var(--ease-out); }
.trial__close .icon { width: 26px; height: 26px; }
.trial__close:hover { border-color: var(--line-light); transform: rotate(90deg); }
.trial__title { font-size: clamp(2.75rem, 1.6rem + 4.4vw, 4.75rem); margin-top: var(--s-4); }
.trial__text { color: var(--on-light-2); font-size: 1.0625rem; max-width: 30em; }
.trial__actions { display: grid; gap: 10px; margin-top: var(--s-2); }
.trial__meta { display: grid; gap: var(--s-4); margin-top: var(--s-3); padding-top: var(--s-5); border-top: 1px solid var(--line-light); font-size: var(--fs-sm); }
.trial__meta dt { font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-label); letter-spacing: .16em; text-transform: uppercase; color: var(--on-light-2); margin-bottom: 4px; }
.trial__meta dd span { display: block; }
.trial__meta b { font-weight: 600; font-variant-numeric: tabular-nums; }
.trial__plan { justify-self: start; margin-top: var(--s-2); font-stretch: 87.5%; font-weight: 700; font-size: var(--fs-xs); letter-spacing: .12em; text-transform: uppercase; }

@media (max-width: 599px) {
  .trial { inset: auto 0 0 0; width: 100%; height: auto; max-height: 94dvh; transform: translateY(100%); }
  .trial__panel { min-height: 0; }
}

/* Lightbox */
.lightbox {
  position: fixed; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0;
  background: rgba(8, 8, 9, .97); color: var(--bone); overflow: hidden;
  opacity: 0; transition: opacity 320ms linear;
}
.lightbox.is-open { opacity: 1; }
.lightbox::backdrop { background: transparent; }
.lightbox__inner { position: relative; height: 100%; display: grid; place-items: center; padding: 72px 88px 96px; touch-action: pan-y; }
.lightbox__figure { display: grid; justify-items: center; gap: 18px; max-width: 100%; max-height: 100%; }
.lightbox__img { max-width: min(100%, 1200px); max-height: calc(100vh - 72px - 96px - 40px); max-height: calc(100dvh - 72px - 96px - 40px); width: auto; height: auto; object-fit: contain; background: none; transition: opacity 260ms linear, transform 420ms var(--ease-out); }
.lightbox__img.is-loading { opacity: 0; transform: scale(.985); }
.lightbox__cap { display: flex; gap: 16px; align-items: baseline; font-stretch: 87.5%; font-weight: 600; font-size: var(--fs-sm); letter-spacing: .04em; }
.lightbox__cap .label { color: var(--gold); }
.lightbox__btn { position: absolute; display: grid; place-items: center; width: 52px; height: 52px; border: 1px solid var(--line-dark); background: rgba(12,12,13,.6); transition: border-color var(--dur-micro) linear, color var(--dur-micro) linear, background var(--dur-micro) linear; }
.lightbox__btn .icon { width: 24px; height: 24px; }
.lightbox__btn:hover { border-color: var(--gold); color: var(--gold); }
.lightbox__btn--close { top: 16px; right: 16px; }
.lightbox__btn--prev { left: 20px; top: 50%; transform: translateY(-50%); }
.lightbox__btn--next { right: 20px; top: 50%; transform: translateY(-50%); }
@media (max-width: 767px) {
  .lightbox__inner { padding: 64px 12px 100px; }
  .lightbox__img { max-height: calc(100dvh - 64px - 100px - 40px); }
  .lightbox__btn--prev, .lightbox__btn--next { top: auto; bottom: calc(24px + env(safe-area-inset-bottom)); transform: none; }
  .lightbox__btn--prev { left: calc(50% - 60px); }
  .lightbox__btn--next { right: calc(50% - 60px); }
}

/* ==========================================================================
   8 ─ Motion
   ========================================================================== */

/* Hero: Vorhang gibt die Bilder frei (Bild ist sofort gemalt → gutes LCP) */
.hero__panel::after {
  content: ""; position: absolute; inset: 0; background: var(--ink); transform-origin: 50% 0;
  animation: curtain var(--dur-story) var(--ease-io) both;
}
.hero__panel--a::after { animation-delay: 60ms; }
.hero__panel--b::after { animation-delay: 180ms; }
.hero__panel--c::after { animation-delay: 300ms; }
.hero__panel img { animation: settle 1800ms var(--ease-out) both; }
@keyframes curtain { from { transform: scaleY(1); } to { transform: scaleY(0); } }
@keyframes settle { from { transform: scale(1.14); } to { transform: none; } }

.hero__title .line > span { animation: rise 1000ms var(--ease-out) both; }
.hero__title .line:nth-child(1) > span { animation-delay: 280ms; }
.hero__title .line:nth-child(2) > span { animation-delay: 380ms; }
.hero__eyebrow, .hero__bottom, .hero__facts, .hero__seal { animation: fadeUp 900ms var(--ease-out) both; }
.hero__eyebrow { animation-delay: 200ms; }
.hero__bottom { animation-delay: 560ms; }
.hero__facts { animation-delay: 800ms; }
.hero__seal { animation-name: fadeIn; animation-delay: 900ms; }
@keyframes rise { from { transform: translate3d(0, 108%, 0); } to { transform: none; } }
@keyframes fadeUp { from { opacity: 0; transform: translate3d(0, 18px, 0); } to { opacity: 1; transform: none; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* Menü: Fläche blendet ein, Einträge steigen gestaffelt auf */
.menu { opacity: 0; transition: opacity 280ms linear; }
.menu.is-open { opacity: 1; }
.menu__nav a { translate: 0 105%; transition: translate 700ms var(--ease-out) calc(var(--i, 0) * 55ms + 60ms), color var(--dur-micro) linear, transform var(--dur-ui) var(--ease-out); }
.menu.is-open .menu__nav a { translate: 0 0; }
.menu__foot { opacity: 0; transition: opacity 500ms linear 380ms; }
.menu.is-open .menu__foot { opacity: 1; }

/* Scroll-Reveals (nur mit JS; ohne JS ist alles sichtbar) */
.js [data-reveal] {
  opacity: 0; transform: translate3d(0, 28px, 0);
  transition: opacity var(--dur-reveal) var(--ease-out) var(--d, 0ms), transform var(--dur-reveal) var(--ease-out) var(--d, 0ms);
}
.js [data-reveal].is-in { opacity: 1; transform: none; }

.js [data-reveal="lines"] { opacity: 1; transform: none; }
.js [data-reveal="lines"] .line > span { transform: translate3d(0, 108%, 0); transition: transform 1000ms var(--ease-out) calc(var(--d, 0ms) + var(--li, 0) * 90ms); }
.js [data-reveal="lines"] .line:nth-child(2) { --li: 1; }
.js [data-reveal="lines"] .line:nth-child(3) { --li: 2; }
.js [data-reveal="lines"].is-in .line > span { transform: none; }
.js .theme-light [data-reveal="lines"] em::after { transform: scaleX(0); transition: transform 900ms var(--ease-io) 550ms; }
.js .theme-light [data-reveal="lines"].is-in em::after { transform: none; }

.js [data-reveal="mask"] { opacity: 1; transform: none; }
.js [data-reveal="mask"] > picture {
  clip-path: inset(100% 0 0 0); transform: scale(1.14);
  transition: clip-path var(--dur-story) var(--ease-io) var(--d, 0ms), transform 1600ms var(--ease-out) var(--d, 0ms);
}
.js [data-reveal="mask"].is-in > picture { clip-path: inset(0 0 0 0); transform: none; }
.js .gallery__item[data-reveal="mask"] > .gallery__btn { clip-path: inset(100% 0 0 0); transition: clip-path var(--dur-story) var(--ease-io) var(--d, 0ms); }
.js .gallery__item[data-reveal="mask"] picture { transform: scale(1.14); transition: transform 1600ms var(--ease-out) var(--d, 0ms); }
.js .gallery__item[data-reveal="mask"].is-in > .gallery__btn { clip-path: inset(0 0 0 0); }
.js .gallery__item[data-reveal="mask"].is-in picture { transform: none; }
.js .cta__bg[data-reveal="mask"] > picture { clip-path: inset(8% 6% 8% 6%); transform: scale(1.06); }
.js .cta__bg[data-reveal="mask"].is-in > picture { clip-path: inset(0); transform: none; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-delay: 0ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; transition-delay: 0ms !important; }
  .band__track, .seal__ring { animation: none !important; }
  .js [data-reveal], .js [data-reveal] picture, .js [data-reveal] .gallery__btn, .js [data-reveal] .line > span { opacity: 1 !important; transform: none !important; clip-path: none !important; }
  .hero__panel picture { transform: none !important; }
}

/* ==========================================================================
   9 ─ Unterseite: Rechtliches
   ========================================================================== */
.legal { padding-top: calc(var(--nav-h) + clamp(56px, 8vw, 120px)); padding-bottom: var(--section-y); }
.legal__head { display: grid; gap: var(--s-5); margin-bottom: clamp(40px, 5vw, 72px); }
.legal__title { font-size: clamp(3rem, 1.4rem + 6vw, 7rem); }
.legal__tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.legal__body { max-width: 50rem; }
.legal__body section { padding-block: clamp(32px, 4vw, 56px); border-top: 2px solid var(--on-light); scroll-margin-top: calc(var(--nav-h) + 24px); }
.legal__body h2 { font-size: clamp(2.25rem, 1.4rem + 3vw, 3.75rem); margin-bottom: var(--s-6); }
.legal__body h3 { margin: var(--s-6) 0 var(--s-3); font-stretch: 87.5%; font-weight: 700; font-size: var(--fs-label); letter-spacing: .16em; text-transform: uppercase; color: var(--gold-ink); }
.legal__body p, .legal__body li { color: var(--on-light-2); }
.legal__body p + p { margin-top: var(--s-3); }
.legal__body ul { list-style: square; padding-left: 1.2em; margin: var(--s-3) 0; display: grid; gap: 6px; }
.legal__body a:not(.btn) { color: var(--on-light); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; overflow-wrap: anywhere; }
.legal__body a:not(.btn):hover { color: var(--gold-ink); }
.legal__body strong { color: var(--on-light); }
.legal .box { padding: 18px 22px; background: var(--paper-3); box-shadow: inset 3px 0 0 var(--gold); margin-bottom: var(--s-3); }
.legal .box p { margin: 0; color: var(--on-light); }
.legal .box p + p { margin-top: 2px; }
.legal .note { padding: 16px 20px; border: 1px dashed rgba(18,18,19,.3); font-size: var(--fs-sm); color: var(--on-light-2); margin-bottom: var(--s-6); }
.legal .ph { padding: 0 6px; background: rgba(224, 176, 74, .22); border: 1px dashed var(--gold-ink); color: var(--on-light); font-size: .92em; }
.legal .muted { color: var(--on-light-2); }
.page-legal .nav { background: rgba(12, 12, 13, .94); }
.page-legal .nav::after { transform: scaleX(1); }
@media (max-width: 399px) { .btn { white-space: normal; text-align: left; } }
@media (max-width: 599px) {
  .nav__inner { gap: 10px; }
  .nav__actions { gap: 4px; }
  .nav__phone { display: none; }
  .nav__cta { min-height: 40px; padding: 0 12px; gap: 8px; }
  .nav__cta .icon { display: none; }
  .nav__toggle-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .nav__toggle { padding-left: 8px; }
}
@media (max-width: 379px) { .nav__word { display: none; } }
.no-js .nav__toggle { display: none; }
