/* ==========================================================================
   LBRT MOTORSPORTS — Design System
   Konzept "KREIDE": Die Fahrzeugfarbe des 991.2 GT3 RS ist das Fundament.
   Helle Kreideflaechen wechseln mit tiefschwarzen Bildstrecken.
   ========================================================================== */

/* ---------- 1. Tokens ---------------------------------------------------- */
:root{
  --ink:        #0B0B0C;
  --ink-2:      #131316;
  --ink-3:      #1C1C20;
  --chalk:      #EFECE4;
  --chalk-2:    #E2DED4;
  --signal:     #FF3D00;
  --caliper:    #E0A800;

  --fg:         #0B0B0C;
  --fg-soft:    #55554F;
  --fg-mute:    #86867E;
  --rule:       rgba(11,11,12,.14);
  --bg:         var(--chalk);
  --bg-raise:   #F6F4EE;

  --display: "Archivo", "Arial Narrow", system-ui, sans-serif;
  --body:    "Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;
  --tech:    "Chakra Petch", "Archivo", system-ui, sans-serif;
  /* Wortmarke: Blackletter aus dem Logo — bleibt unveraendert */
  --logo:    "Pirata One", "UnifrakturMaguntia", serif;

  --pad:   clamp(20px, 5vw, 72px);
  --maxw:  1560px;
  --gap:   clamp(16px, 2.2vw, 30px);

  --ease:     cubic-bezier(.22,.61,.24,1);
  --ease-out: cubic-bezier(.16,1,.3,1);
}

/* Dunkle Sektionen invertieren die semantischen Farben */
.inv,.hero{
  --fg:      var(--chalk);
  --fg-soft: #A9A79F;
  --fg-mute: #74736D;
  --rule:    rgba(239,236,228,.16);
  --bg:      var(--ink);
  --bg-raise:var(--ink-2);
  color: var(--fg);
  background: var(--bg);
}

/* ---------- 2. Reset ----------------------------------------------------- */
*,*::before,*::after{ box-sizing:border-box }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:80px }
body{
  margin:0; background:var(--chalk); color:var(--ink);
  font-family:var(--body); font-size:16px; line-height:1.55;
  font-synthesis-weight:none; -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg,video,iframe{ display:block; max-width:100% }
img{ height:auto }
a{ color:inherit; text-decoration:none }
button,input,textarea,select{ font:inherit; color:inherit }
button{ background:none; border:0; cursor:pointer }
h1,h2,h3,h4,p,figure,blockquote{ margin:0 }
ul,ol{ margin:0; padding:0; list-style:none }
::selection{ background:var(--signal); color:#fff }
:focus-visible{ outline:2px solid var(--signal); outline-offset:3px }

/* ---------- 3. Typo-Bausteine -------------------------------------------- */
.display{
  font-family:var(--display); font-weight:800;
  font-variation-settings:"wdth" 112;
  line-height:.86; letter-spacing:-.022em; text-transform:uppercase;
  text-wrap:balance; margin:0;
}
.d-xxl{ font-size:clamp(40px, 7.4vw, 122px) }
.d-xl { font-size:clamp(36px, 6.4vw, 104px) }
.d-l  { font-size:clamp(29px, 4.2vw, 64px) }
.d-m  { font-size:clamp(23px, 2.6vw, 39px) }

.stroke{ color:transparent; -webkit-text-stroke:.026em var(--fg); paint-order:stroke fill }
@supports not (-webkit-text-stroke: 1px black){ .stroke{ color:var(--fg) } }

.tech{ font-family:var(--tech); font-size:11.5px; font-weight:600; letter-spacing:.17em;
  text-transform:uppercase; line-height:1.4; font-variant-numeric:tabular-nums }
.tech-s{ font-family:var(--tech); font-size:10.5px; font-weight:500; letter-spacing:.19em;
  text-transform:uppercase; font-variant-numeric:tabular-nums }
.lead{ font-size:clamp(17px, 1.35vw, 21px); line-height:1.5; color:var(--fg-soft); text-wrap:pretty }
.body{ font-size:clamp(15px, 1.05vw, 17px); line-height:1.62; color:var(--fg-soft); text-wrap:pretty }

/* ---------- 4. Layout ---------------------------------------------------- */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad) }
.section{ position:relative; padding-block:clamp(62px, 8.5vw, 130px) }

.shead{ display:grid; gap:clamp(18px,2.4vw,30px); align-items:end; margin-bottom:clamp(30px,4vw,56px) }
@media (min-width:900px){ .shead{ grid-template-columns:minmax(0,1fr) minmax(240px,32%) } }
.eyebrow{ display:flex; align-items:center; gap:14px; color:var(--fg-mute) }
.eyebrow b{ color:var(--signal); font-weight:500 }
.eyebrow .rule{ display:block; flex:1; max-width:70px; height:1px; background:var(--rule) }

/* ---------- 5. Buttons --------------------------------------------------- */
.btn{
  --btn-bg:var(--fg); --btn-fg:var(--bg);
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:52px; padding:0 26px; border:1px solid transparent;
  background:var(--btn-bg); color:var(--btn-fg);
  font-family:var(--tech); font-size:11px; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  overflow:hidden; isolation:isolate; transition:color .35s var(--ease), border-color .35s var(--ease);
}
.btn::after{ content:""; position:absolute; inset:0; z-index:-1; background:var(--signal); transform:translateY(101%); transition:transform .42s var(--ease-out) }
.btn:hover::after,.btn:focus-visible::after{ transform:translateY(0) }
.btn:hover,.btn:focus-visible{ color:#fff }
.btn--ghost{ --btn-bg:transparent; --btn-fg:var(--fg); border-color:var(--rule) }
.btn--ghost:hover,.btn--ghost:focus-visible{ border-color:var(--signal) }
.btn--signal{ --btn-bg:var(--signal); --btn-fg:#fff }
.btn--signal::after{ background:var(--fg) }
.btn--sm{ min-height:42px; padding:0 18px; font-size:10px }
.btn .ar{ transition:transform .42s var(--ease-out) }
.btn:hover .ar{ transform:translateX(4px) }

.tlink{
  display:inline-flex; align-items:center; gap:9px; position:relative;
  font-family:var(--tech); font-size:11px; letter-spacing:.18em; text-transform:uppercase; padding-bottom:4px;
}
.tlink::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:currentColor; transform-origin:right; transform:scaleX(1); transition:transform .4s var(--ease) }
.tlink:hover::after{ transform-origin:left; transform:scaleX(0) }
.tlink:hover{ color:var(--signal) }

/* ---------- 6. Kopfzeile ------------------------------------------------- */
.hdr{ position:fixed; inset:0 0 auto; z-index:80; border-bottom:1px solid transparent;
  transition:background .45s var(--ease), border-color .45s var(--ease) }
.hdr__in{ display:flex; align-items:center; justify-content:space-between; gap:20px; height:68px }
.hdr.is-stuck{ background:rgba(11,11,12,.82); backdrop-filter:blur(14px) saturate(140%); border-bottom-color:rgba(239,236,228,.12) }
.hdr.is-light.is-stuck{ background:rgba(239,236,228,.88); border-bottom-color:rgba(11,11,12,.12) }

/* Wortmarke — unveraendertes Logo: Blackletter, darunter Ort und Gruendungsjahr.
   Die Blackletter bleibt der Marke vorbehalten; als Fliesstext waere sie unlesbar. */
.wordmark{ display:flex; flex-direction:column; gap:2px; flex:none; line-height:1; color:var(--chalk) }
.hdr.is-light .wordmark,.hdr.is-light .nav,.hdr.is-light .hdr__tools{ color:var(--ink) }
.wordmark__a{ font-family:var(--logo); font-weight:400; font-size:24px; line-height:.95; letter-spacing:.01em }
.wordmark__b{ display:flex; align-items:center; gap:8px; font-family:var(--tech); font-size:8px;
  letter-spacing:.3em; text-transform:uppercase; color:var(--signal) }
.wordmark__b span{ color:var(--fg-mute); letter-spacing:.16em }
.wordmark__rule{ flex:1; height:1px; background:currentColor; opacity:.35; min-width:14px }
.hdr .wordmark__rule{ background:rgba(239,236,228,.3); opacity:1 }
.hdr.is-light .wordmark__rule{ background:rgba(11,11,12,.22) }
.foot .wordmark{ margin-bottom:18px }
.wordmark--lg .wordmark__a{ font-size:clamp(28px,2.6vw,34px) }

.nav{ display:none; align-items:center; gap:clamp(15px,1.9vw,28px); color:var(--chalk) }
.nav a{ position:relative; font-family:var(--tech); font-size:10.5px; letter-spacing:.16em; text-transform:uppercase; opacity:.78; padding:6px 0; transition:opacity .3s }
.nav a::after{ content:""; position:absolute; left:0; bottom:0; width:100%; height:1px; background:var(--signal); transform:scaleX(0); transform-origin:right; transition:transform .38s var(--ease) }
.nav a:hover{ opacity:1 }
.nav a:hover::after,.nav a.is-active::after{ transform:scaleX(1); transform-origin:left }
@media (min-width:1060px){ .nav{ display:flex } }

.hdr__tools{ display:flex; align-items:center; gap:8px; color:var(--chalk) }
.lang{ display:flex; align-items:center; gap:2px; font-family:var(--tech); font-size:10px; letter-spacing:.14em }
.lang a{ padding:8px 7px; opacity:.55; transition:opacity .25s }
.lang a[aria-current="true"]{ opacity:1; color:var(--signal) }
.lang a:hover{ opacity:1 }
.lang i{ width:1px; height:11px; background:currentColor; opacity:.3 }
.hdr .btn{ display:none }
@media (min-width:760px){ .hdr .btn{ display:inline-flex } }

.burger{ width:44px; height:44px; display:grid; place-content:center; gap:5px; margin-right:-10px }
@media (min-width:1060px){ .burger{ display:none } }
.burger span{ display:block; width:20px; height:1.5px; background:currentColor; transition:transform .38s var(--ease), opacity .2s }
body.menu-open .burger span:nth-child(1){ transform:translateY(6.5px) rotate(45deg) }
body.menu-open .burger span:nth-child(2){ opacity:0 }
body.menu-open .burger span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg) }

.menu{
  position:fixed; inset:0; z-index:70; background:var(--ink); color:var(--chalk);
  display:flex; flex-direction:column; justify-content:space-between;
  padding:96px var(--pad) calc(26px + env(safe-area-inset-bottom));
  clip-path:inset(0 0 100% 0); transition:clip-path .62s var(--ease-out); visibility:hidden;
}
body.menu-open .menu{ clip-path:inset(0 0 0 0); visibility:visible }
body.menu-open{ overflow:hidden }
.menu__nav{ display:flex; flex-direction:column; overflow-y:auto }
.menu__nav a{
  display:flex; align-items:baseline; gap:16px; padding:clamp(8px,1.5vw,12px) 0;
  border-bottom:1px solid rgba(239,236,228,.1);
  opacity:0; transform:translateY(18px);
  transition:opacity .5s var(--ease), transform .5s var(--ease), color .25s;
}
body.menu-open .menu__nav a{ opacity:1; transform:none }
.menu__nav a:hover{ color:var(--signal) }
.menu__nav .n{ font-family:var(--tech); font-size:10px; letter-spacing:.2em; color:#74736D; flex:none }
.menu__nav .t{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 112; font-size:clamp(27px,7.4vw,44px); text-transform:uppercase; line-height:1 }
.menu__foot{ display:flex; flex-wrap:wrap; gap:14px 26px; align-items:center; justify-content:space-between; padding-top:20px; border-top:1px solid rgba(239,236,228,.12); color:#A9A79F }

/* ---------- 7. Hero ------------------------------------------------------ */
.hero{ position:relative; min-height:100svh; display:flex; flex-direction:column; justify-content:flex-end; overflow:hidden }
.hero__media{ position:absolute; inset:-3% -2%; z-index:0; animation:heroZoom 26s var(--ease) infinite alternate }
.hero__media img,.hero__media video{ width:100%; height:100%; object-fit:cover; object-position:50% 58% }
.hero__grade{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background:
    linear-gradient(180deg, rgba(11,11,12,.86) 0%, rgba(11,11,12,.24) 27%, rgba(11,11,12,.58) 63%, var(--ink) 100%),
    linear-gradient(90deg, rgba(11,11,12,.8) 0%, rgba(11,11,12,.1) 62%, rgba(11,11,12,.4) 100%);
}
.hero__scan{ position:absolute; inset:0; z-index:1; pointer-events:none; opacity:.3; mix-blend-mode:overlay;
  background-image:repeating-linear-gradient(0deg, rgba(255,255,255,.06) 0 1px, transparent 1px 3px) }
.hero__in{ position:relative; z-index:2; padding-top:118px; padding-bottom:clamp(46px,7vw,92px) }
.hero__grid{ display:grid; align-items:end }
.hero__col{ max-width:min(100%, 62ch) }
.hero h1{ margin:.2em 0 0 }
.hero h1 .l{ display:block; white-space:nowrap }
.hero__sub{ max-width:54ch; margin-top:clamp(14px,1.5vw,22px); color:#BEBCB4; font-size:clamp(15px,1.2vw,19px) }
.hero__cta{ display:flex; flex-wrap:wrap; gap:12px; margin-top:clamp(20px,2.4vw,32px) }
.hero .btn{ --btn-bg:var(--chalk); --btn-fg:var(--ink) }
.hero .btn--ghost{ --btn-bg:transparent; --btn-fg:var(--chalk); border-color:rgba(239,236,228,.34); backdrop-filter:blur(6px) }

.live{ display:inline-flex; align-items:center; gap:10px; color:var(--caliper) }
.live .dot{ width:7px; height:7px; border-radius:50%; background:var(--signal); position:relative; flex:none }
.live .dot::after{ content:""; position:absolute; inset:-4px; border-radius:50%; border:1px solid var(--signal); animation:ping 2.2s var(--ease-out) infinite }



.scrollcue{ position:absolute; left:var(--pad); bottom:calc(52px + 1.2vw); z-index:2; display:none; align-items:center; gap:12px; color:#8E8D86 }
@media (min-width:1000px){ .scrollcue{ display:flex } }
.scrollcue .bar{ width:38px; height:1px; background:currentColor; position:relative; overflow:hidden }
.scrollcue .bar::after{ content:""; position:absolute; inset:0; background:var(--signal); animation:slide 2.6s var(--ease) infinite }

/* ---------- 8. Kennzahlen ------------------------------------------------ */
.figs{ display:grid; grid-template-columns:repeat(2,1fr); border-top:1px solid var(--rule) }
@media (min-width:820px){ .figs{ grid-template-columns:repeat(4,1fr) } }
.figs > div{ padding:clamp(20px,2.6vw,32px) clamp(14px,1.6vw,24px) clamp(20px,2.6vw,30px) 0; border-bottom:1px solid var(--rule) }
@media (min-width:820px){ .figs > div{ border-bottom:0 } }
.figs .v{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 106; font-size:clamp(29px,3.6vw,52px); line-height:.92; letter-spacing:-.02em }
.figs .v em{ font-style:normal; color:var(--signal) }
.figs .k{ margin-top:9px; color:var(--fg-mute) }

/* ---------- 9. Leistungen ------------------------------------------------ */
.svc{ display:grid; gap:1px; background:var(--rule); border-block:1px solid var(--rule) }
@media (min-width:700px){ .svc{ grid-template-columns:repeat(2,1fr) } }
@media (min-width:1120px){ .svc{ grid-template-columns:repeat(3,1fr) } }
.svc__i{ position:relative; background:var(--bg); padding:clamp(24px,2.6vw,38px);
  display:flex; flex-direction:column; gap:14px; min-height:clamp(226px,21vw,292px);
  transition:background .4s var(--ease); overflow:hidden }
.svc__i::before{ content:""; position:absolute; left:0; right:0; top:0; height:2px; background:var(--signal); transform:scaleX(0); transform-origin:left; transition:transform .5s var(--ease-out) }
.svc__i:hover::before{ transform:scaleX(1) }
.svc__i:hover{ background:var(--bg-raise) }
.svc__n{ color:var(--fg-mute) }
.svc__t{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 108; font-size:clamp(19px,1.8vw,26px); line-height:1.04; text-transform:uppercase; letter-spacing:-.01em }
.svc__d{ font-size:15px; line-height:1.6; color:var(--fg-soft); margin-top:auto }

/* ---------- 10. Garage --------------------------------------------------- */
.garage__switch{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:clamp(22px,2.6vw,34px) }
.chip{ position:relative; display:inline-flex; align-items:center; gap:10px; min-height:44px; padding:0 18px;
  border:1px solid var(--rule); font-family:var(--tech); font-size:10.5px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--fg-mute); transition:color .3s, border-color .3s }
.chip[aria-selected="true"]{ color:var(--fg); border-color:var(--fg) }
.chip[aria-selected="true"]::before{ content:""; width:6px; height:6px; background:var(--signal) }
.chip:hover{ color:var(--fg); border-color:var(--fg-mute) }

.car{ display:none; gap:var(--gap) }
.car.is-on{ display:grid; animation:fadeup .5s var(--ease-out) }
@media (min-width:1000px){ .car{ grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr) } }
.car__shot{ position:relative; overflow:hidden; background:var(--ink-2); aspect-ratio:16/9 }
.car__shot img{ width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease-out) }
.car__shot:hover img{ transform:scale(1.035) }
.car__badge{ position:absolute; left:16px; top:16px; display:flex; gap:6px; flex-wrap:wrap }
.tagline{ display:inline-flex; align-items:center; gap:7px; padding:6px 10px; background:rgba(11,11,12,.72); border:1px solid rgba(239,236,228,.22); backdrop-filter:blur(6px); font-family:var(--tech); font-size:9px; letter-spacing:.18em; text-transform:uppercase; color:var(--chalk) }
.tagline--signal{ background:var(--signal); border-color:var(--signal); color:#fff }
.car__side{ display:flex; flex-direction:column; gap:clamp(15px,1.8vw,22px) }
.car__title{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 110; font-size:clamp(27px,3.2vw,48px); line-height:.92; text-transform:uppercase; letter-spacing:-.02em }
.car__paint{ display:inline-flex; align-items:center; gap:10px; font-family:var(--tech); font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--fg-mute) }
.car__paint .sw{ width:15px; height:15px; border:1px solid var(--rule); flex:none }
.spec{ display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--rule); border:1px solid var(--rule) }
.spec > div{ background:var(--bg); padding:14px 15px }
.spec .v{ font-family:var(--display); font-weight:700; font-variation-settings:"wdth" 104; font-size:clamp(17px,1.5vw,22px); line-height:1.1; letter-spacing:-.01em }
.spec .k{ margin-top:5px; font-family:var(--tech); font-size:9.5px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--fg-mute) }
.car__strip{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--rule); margin-top:1px }
.car__strip a{ overflow:hidden; display:block; background:var(--ink-2) }
.car__strip img{ width:100%; aspect-ratio:1/1; object-fit:cover; filter:grayscale(.2); transition:filter .5s var(--ease), transform .8s var(--ease-out) }
.car__strip a:hover img{ filter:none; transform:scale(1.05) }

/* ---------- 11. Termine -------------------------------------------------- */
.cal{ border-top:1px solid var(--rule) }
.evt{ display:grid; grid-template-columns:auto 1fr auto; gap:clamp(14px,2vw,30px); align-items:center;
  padding:clamp(18px,2.2vw,26px) 0; border-bottom:1px solid var(--rule);
  transition:padding-inline .45s var(--ease), background .45s var(--ease) }
@media (hover:hover){ .evt:hover{ padding-inline:clamp(8px,1.4vw,20px); background:var(--bg-raise) } }
.evt__date{ display:flex; flex-direction:column; align-items:flex-start; min-width:70px }
.evt__day{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 100; font-size:clamp(27px,3.4vw,44px); line-height:.9; letter-spacing:-.03em; font-variant-numeric:tabular-nums }
.evt__mon{ font-family:var(--tech); font-size:10px; letter-spacing:.2em; color:var(--signal); text-transform:uppercase; margin-top:4px }
.evt__main{ min-width:0 }
.evt__name{ font-family:var(--display); font-weight:700; font-variation-settings:"wdth" 106; font-size:clamp(17px,1.9vw,26px); line-height:1.06; text-transform:uppercase; letter-spacing:-.01em }
.evt__meta{ display:flex; flex-wrap:wrap; gap:6px 16px; margin-top:8px; font-family:var(--tech); font-size:10.5px; font-weight:500; letter-spacing:.11em; text-transform:uppercase; color:var(--fg-mute); font-variant-numeric:tabular-nums }
.evt__side{ display:flex; align-items:center; gap:10px; flex:none }
.status{ display:inline-flex; align-items:center; gap:7px; padding:6px 10px; border:1px solid var(--rule); font-family:var(--tech); font-size:9.5px; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--fg-mute); white-space:nowrap }
.status--open{ color:var(--fg); border-color:currentColor }
.status--open::before{ content:""; width:5px; height:5px; border-radius:50%; background:#3FA34D }
.status--soon::before{ content:""; width:5px; height:5px; border-radius:50%; background:var(--caliper) }
.evt__ics{ display:none; width:42px; height:42px; border:1px solid var(--rule); place-content:center; transition:border-color .3s, color .3s }
.evt__ics:hover{ border-color:var(--signal); color:var(--signal) }
@media (min-width:760px){ .evt__ics{ display:grid } }
@media (max-width:600px){
  .evt{ grid-template-columns:auto 1fr; row-gap:12px }
  .evt__side{ grid-column:1/-1 }
}

/* ---------- 12. Strecke & Drohne ----------------------------------------- */
.trk{ display:grid; gap:1px; background:var(--rule); border:1px solid var(--rule) }
@media (min-width:960px){ .trk{ grid-template-columns:minmax(300px,34%) minmax(0,1fr) } }
.trk__list{ background:var(--bg); display:flex; flex-direction:column }
.trk__btn{ position:relative; text-align:left; width:100%; padding:clamp(16px,1.8vw,24px);
  border-bottom:1px solid var(--rule); display:flex; flex-direction:column; gap:7px;
  transition:background .35s var(--ease), padding-left .35s var(--ease) }
.trk__btn::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--signal); transform:scaleY(0); transform-origin:bottom; transition:transform .4s var(--ease-out) }
.trk__btn[aria-pressed="true"]::before{ transform:scaleY(1); transform-origin:top }
.trk__btn[aria-pressed="true"]{ background:var(--bg-raise) }
.trk__btn:hover{ padding-left:calc(clamp(16px,1.8vw,24px) + 6px) }
.trk__n{ display:flex; align-items:baseline; justify-content:space-between; gap:12px }
.trk__name{ font-family:var(--display); font-weight:700; font-variation-settings:"wdth" 106; font-size:clamp(16px,1.6vw,22px); text-transform:uppercase; line-height:1.04 }
.trk__km{ font-family:var(--tech); font-size:10px; letter-spacing:.14em; color:var(--fg-mute); white-space:nowrap }
.trk__desc{ font-size:14px; line-height:1.55; color:var(--fg-soft) }
.trk__foot{ flex:1; display:flex; align-items:flex-end; padding:clamp(16px,1.8vw,24px); color:var(--fg-mute) }
.trk__stage{ position:relative; overflow:hidden; background:var(--ink); min-height:clamp(480px,62vw,780px) }
.trk__pane{ position:absolute; inset:0; opacity:0; visibility:hidden; transition:opacity .55s var(--ease) }
.trk__pane.is-on{ opacity:1; visibility:visible }
.trk__pane img{ width:100%; height:100%; object-fit:cover }
.trk__tabs{ position:absolute; left:14px; top:14px; z-index:5; display:flex; gap:6px }
.trk__tab{ padding:9px 12px; background:rgba(11,11,12,.74); border:1px solid rgba(239,236,228,.2); backdrop-filter:blur(6px); font-family:var(--tech); font-size:9px; letter-spacing:.16em; text-transform:uppercase; color:#A9A79F; transition:color .3s, border-color .3s }
.trk__tab[aria-selected="true"]{ color:var(--chalk); border-color:var(--chalk) }
.trk__note{ position:absolute; right:14px; bottom:14px; z-index:5; max-width:min(340px,74%); padding:12px 14px; background:rgba(11,11,12,.8); border:1px solid rgba(239,236,228,.18); backdrop-filter:blur(8px); color:#BEBCB4; font-size:13px; line-height:1.5 }
.trk__note b{ display:block; font-family:var(--tech); font-size:9px; letter-spacing:.2em; text-transform:uppercase; color:var(--caliper); margin-bottom:6px; font-weight:500 }

/* ---------- 13. Team ----------------------------------------------------- */
.team{ display:grid; gap:1px; background:var(--rule); border:1px solid var(--rule) }
@media (min-width:760px){ .team{ grid-template-columns:repeat(3,1fr) } }
.tcard{ background:var(--bg); display:flex; flex-direction:column; overflow:hidden }
.tcard__ph{ position:relative; aspect-ratio:3/4; overflow:hidden; background:var(--ink-2) }
.tcard__ph img{ width:100%; height:100%; object-fit:cover; filter:grayscale(1) contrast(1.05);
  transition:filter .6s var(--ease), transform .9s var(--ease-out) }
.tcard:hover .tcard__ph img{ filter:grayscale(0); transform:scale(1.04) }
.tcard__body{ padding:clamp(18px,1.8vw,24px); display:flex; flex-direction:column; gap:7px; flex:1 }
.tcard__name{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 108;
  font-size:clamp(20px,1.9vw,26px); text-transform:uppercase; line-height:1 }
.tcard__role{ font-family:var(--tech); font-size:10.5px; font-weight:500; letter-spacing:.15em;
  text-transform:uppercase; color:var(--fg-mute) }
.tcard__bio{ font-size:14.5px; line-height:1.58; color:var(--fg-soft); margin-top:4px }

/* Dritte Kachel: der Aufruf, als dunkler Gegenpol zu den beiden Portraets */
.tcard--join{ background:var(--fg); color:var(--bg); position:relative; overflow:hidden }
.tcard--join::after{ content:""; position:absolute; right:-14%; top:-22%; width:62%; aspect-ratio:1;
  border:1px solid currentColor; border-radius:50%; opacity:.16; pointer-events:none }
.tcard--join .tcard__body{ gap:18px; justify-content:space-between;
  padding:clamp(22px,2.4vw,34px); min-height:clamp(280px,26vw,380px) }
.tcard--join .tcard__role{ color:currentColor; opacity:.62 }
.join__big{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 112;
  font-size:clamp(25px,2.9vw,40px); line-height:.94; text-transform:uppercase; letter-spacing:-.02em }
.join__txt{ font-size:14.5px; line-height:1.58; opacity:.72 }
.tcard--join .btn{ --btn-bg:var(--bg); --btn-fg:var(--fg) }

/* ---------- 14. Partner -------------------------------------------------- */
.plogos{ position:relative; overflow:hidden; border-block:1px solid var(--rule); padding-block:clamp(22px,2.6vw,34px) }
.plogos__track{ display:flex; width:max-content; align-items:center; animation:marq 38s linear infinite }
.plogos__track:hover{ animation-play-state:paused }
/* Jeder Satz ist mindestens fensterbreit. Damit sind zwei Saetze immer breiter
   als der Ausschnitt und der Sprung um -50% faellt auf einen identischen Punkt —
   das Band hat kein sichtbares Ende, egal wie viele Logos drin sind. */
.plogos__set{ display:flex; align-items:center; min-width:100vw; justify-content:space-around }
.plogo{ display:grid; place-content:center; padding-inline:clamp(24px,4vw,58px); opacity:.6; transition:opacity .35s var(--ease), transform .35s var(--ease) }
.plogo:hover{ opacity:1; transform:translateY(-2px) }
.plogo img{ height:clamp(21px,2.3vw,30px); width:auto; object-fit:contain }
.plogo--gls img{ height:clamp(25px,2.8vw,37px) }


/* ---------- 15. Formular ------------------------------------------------- */
.form{ display:grid; gap:14px }
@media (min-width:640px){ .form{ grid-template-columns:repeat(2,1fr) } .form .f--wide{ grid-column:1/-1 } }
.field{ display:flex; flex-direction:column; gap:7px }
.field label{ font-family:var(--tech); font-size:10px; font-weight:600; letter-spacing:.15em; text-transform:uppercase; color:var(--fg-mute) }
.field input,.field textarea,.field select{
  width:100%; min-height:50px; padding:14px 15px; background:transparent; border:1px solid var(--rule);
  color:var(--fg); font-size:15.5px; border-radius:0; -webkit-appearance:none; appearance:none;
  transition:border-color .3s var(--ease), background .3s;
}
.field select{ background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%); background-position:calc(100% - 18px) 22px,calc(100% - 13px) 22px; background-size:5px 5px,5px 5px; background-repeat:no-repeat; padding-right:44px }
.field select option{ background:var(--ink); color:var(--chalk) }
.field textarea{ min-height:118px; resize:vertical }
.field input:focus,.field textarea:focus,.field select:focus{ outline:none; border-color:var(--signal); background:var(--bg-raise) }
.field input::placeholder,.field textarea::placeholder{ color:var(--fg-mute); opacity:.7 }
.form__foot{ grid-column:1/-1; display:flex; flex-wrap:wrap; gap:16px; align-items:center; justify-content:space-between }
.consent{ display:flex; gap:11px; align-items:flex-start; font-size:12.5px; line-height:1.5; color:var(--fg-mute); max-width:54ch }
.consent input{ min-height:0; width:17px; height:17px; margin-top:2px; flex:none; accent-color:var(--signal) }
.consent a{ text-decoration:underline; text-underline-offset:2px }
.formmsg{ grid-column:1/-1; padding:14px 16px; border:1px solid var(--rule); font-family:var(--tech); font-size:11px; letter-spacing:.08em; line-height:1.6; display:none }
.formmsg.is-ok{ display:block; border-color:#3FA34D; color:#3FA34D }
.formmsg.is-err{ display:block; border-color:var(--signal); color:var(--signal) }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden }

/* ---------- 16. CTA + Footer --------------------------------------------- */
.cta__grid{ display:grid; gap:clamp(24px,3vw,48px); align-items:center }
@media (min-width:940px){ .cta__grid{ grid-template-columns:minmax(0,1fr) minmax(300px,44%) } }
.btnrow{ display:flex; flex-wrap:wrap; gap:12px; margin-top:26px }
.mailbig{ display:inline-flex; align-items:center; gap:14px; font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 100; font-size:clamp(19px,2.7vw,40px); letter-spacing:-.02em; line-height:1.06; word-break:break-word }
.mailbig:hover{ color:var(--signal) }

.foot{ padding-top:clamp(44px,5vw,74px); padding-bottom:calc(22px + env(safe-area-inset-bottom)) }
.foot__grid{ display:grid; gap:clamp(26px,3vw,44px); padding-bottom:clamp(34px,4vw,56px) }
@media (min-width:760px){ .foot__grid{ grid-template-columns:repeat(2,1fr) } }
@media (min-width:1060px){ .foot__grid{ grid-template-columns:1.5fr 1fr 1fr 1.3fr } }
.foot h4{ font-family:var(--tech); font-size:10px; letter-spacing:.19em; text-transform:uppercase; color:var(--fg-mute); font-weight:600; margin-bottom:16px }
.foot ul{ display:flex; flex-direction:column; gap:11px }
.foot li a{ font-size:14.5px; color:var(--fg-soft); transition:color .25s }
.foot li a:hover{ color:var(--signal) }
.foot__bar{ display:flex; flex-wrap:wrap; gap:12px 26px; align-items:center; justify-content:space-between; padding-top:22px; border-top:1px solid var(--rule); color:var(--fg-mute) }
.foot__bar nav{ display:flex; flex-wrap:wrap; gap:12px 22px }

/* ---------- 17. Rechtsseiten --------------------------------------------- */
.legal{ padding-top:clamp(112px,12vw,168px) }
.legal__grid{ display:grid; gap:clamp(26px,4vw,64px) }
@media (min-width:920px){ .legal__grid{ grid-template-columns:minmax(250px,32%) minmax(0,1fr) } }
/* „Datenschutz" ist ein Wort und laesst sich nicht umbrechen — die Schrift muss
   also in die Spalte passen, und als Sicherung darf sie notfalls brechen. */
.legal__grid > *{ min-width:0 }
.legal h1{ font-size:clamp(27px,3.3vw,46px); overflow-wrap:break-word; hyphens:auto }
.prose{ max-width:74ch }
.prose h2{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 108; font-size:clamp(18px,1.8vw,24px); text-transform:uppercase; letter-spacing:-.01em; margin:clamp(30px,3.4vw,44px) 0 12px }
.prose h2:first-child{ margin-top:0 }
.prose p{ font-size:15.5px; line-height:1.68; color:var(--fg-soft); margin-bottom:14px }
.prose a{ color:var(--signal); text-decoration:underline; text-underline-offset:3px }
.prose address{ font-style:normal; font-size:15.5px; line-height:1.8; color:var(--fg-soft) }
.err{ min-height:100svh; display:grid; place-content:center; text-align:center; gap:22px; padding:var(--pad) }

/* ---------- 18. Reveals & Keyframes -------------------------------------- */
[data-rev]{ opacity:0; transform:translateY(22px); transition:opacity .8s var(--ease-out), transform .8s var(--ease-out) }
[data-rev].is-in{ opacity:1; transform:none }

@keyframes marq{ from{ transform:translate3d(0,0,0) } to{ transform:translate3d(-50%,0,0) } }
@keyframes ping{ 0%{ transform:scale(.6); opacity:1 } 100%{ transform:scale(1.9); opacity:0 } }
@keyframes slide{ 0%{ transform:translateX(-100%) } 60%,100%{ transform:translateX(100%) } }
@keyframes fadeup{ from{ opacity:0; transform:translateY(14px) } to{ opacity:1; transform:none } }
@keyframes heroZoom{ from{ transform:scale(1.02) } to{ transform:scale(1.11) } }

/* ---------- 18b. Mobile-Feinschliff -------------------------------------- */
@media (max-width:560px){
  .hero__cta,.btnrow{ flex-direction:column; align-items:stretch }
  .hero__cta .btn,.btnrow .btn{ width:100% }
  .garage__switch .chip{ width:100%; justify-content:flex-start }
  .form__foot{ flex-direction:column; align-items:stretch }
  .form__foot .btn{ width:100% }
  .mailbig{ font-size:clamp(17px,5.4vw,26px) }
}
/* Grosse Displays: Zeilenlaenge begrenzen */
@media (min-width:1800px){ :root{ --maxw:1680px } }

/* ---------- 19. Zugaenglichkeit ------------------------------------------ */
.skip{ position:fixed; left:12px; top:-100px; z-index:200; background:var(--signal); color:#fff; padding:12px 18px; font-family:var(--tech); font-size:11px; letter-spacing:.14em; transition:top .2s }
.skip:focus{ top:12px }
.vh{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0 }

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto }
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important }
  [data-rev]{ opacity:1 !important; transform:none !important }
}

/* ---------- 20. Bildband ------------------------------------------------- */
.band{ position:relative; overflow:hidden }
.band figure{ position:relative; margin:0 }
.band img{ width:100%; aspect-ratio:21/9; object-fit:cover; display:block }
.band figcaption{ position:absolute; left:var(--pad); bottom:clamp(14px,1.8vw,24px); color:#BEBCB4;
  background:rgba(11,11,12,.62); border:1px solid rgba(239,236,228,.16); padding:7px 11px; backdrop-filter:blur(6px) }
@media (max-width:640px){ .band img{ aspect-ratio:3/2 } }
.hero__media picture{ display:contents }

/* ---------- 21. Anzeigenslot (MCANISM Smart Overlay) ---------------------
   Das Overlay-Skript haengt ein fixiertes Banner an <body>. app.js holt es in
   diesen Slot, damit es im Seitenfluss liegt statt ueber dem Inhalt zu kleben. */
.adslot{ display:flex; flex-direction:column; gap:10px; align-items:stretch;
  width:fit-content; max-width:100%; margin:0 auto clamp(26px,3.4vw,44px);
  padding:clamp(14px,1.6vw,20px); border:1px solid var(--rule); background:var(--bg-raise) }
.adslot__label{ color:var(--fg-mute) }
/* Der Schliessen-Knopf des Overlays sitzt in der oberen rechten Ecke —
   der Kasten darf ihn nicht abschneiden. */
.adslot__box{ display:flex; justify-content:center; overflow:visible }
.adslot__box > *{ position:relative !important; inset:auto !important; z-index:auto !important;
  max-width:100% !important; height:auto !important; margin:0 !important; transform:none !important }
.adslot__box img{ width:100% !important; height:auto !important; object-fit:contain }

/* ---------- 22. Streckenverlauf als Vektorgrafik -------------------------
   Anmutung: technische Zeichnung mit Telemetrie — Raster, Massstab, Nordpfeil,
   Gelaende aus OSM, Fahrtrichtung, beschriftete Abschnitte, Hoehenprofil und
   eine Lichtspur, die die Runde faehrt. */
.tmap__wrap{ position:absolute; inset:0 }
.trk__pane[data-map]{ position:absolute; inset:0; display:flex; flex-direction:column;
  padding:clamp(46px,4.6vw,58px) clamp(10px,1.2vw,18px) clamp(12px,1.4vw,18px) }
.tmap__stage{ flex:1; min-height:0; display:flex }
.tmap{ display:block; width:100%; height:100%; cursor:crosshair; color:var(--chalk) }

/* Hintergrund: Raster und weiches Licht in der Mitte */
.tmap__bg{ opacity:.72; transition:opacity .6s var(--ease) }
.tmap__bg rect:last-child{ opacity:.2 }
.trk__pane:hover .tmap__bg{ opacity:.92 }

/* Gelaende: Wald und Wasser aus OpenStreetMap, bewusst zurueckhaltend. */
.tmap__terrain{ opacity:.85; transition:opacity .6s var(--ease) }
.trk__pane:hover .tmap__terrain{ opacity:1 }
.tmap__wood{ fill:#7C9A6E; fill-opacity:.12; stroke:#8FB07F; stroke-opacity:.09; stroke-width:1 }
.tmap__woodtex{ stroke:none }
.tmap__tree path{ fill:none; stroke:#A6C295; stroke-opacity:.24; stroke-width:1.2;
  stroke-linecap:round; stroke-linejoin:round }
.tmap__water{ fill:#6E93B5; fill-opacity:.2; stroke:#8FB2D0; stroke-opacity:.26; stroke-width:1 }

/* Uebriges Streckennetz — andere Varianten, Boxengassen, Ovale.
   Nur angedeutet, damit klar wird, wo der Kurs im Gelaende liegt. */
.tmap__extras{ opacity:.9; transition:opacity .6s var(--ease) }
.trk__pane:hover .tmap__extras{ opacity:1 }
.tmap__extra{ fill:none; stroke:var(--chalk); stroke-width:5.5; stroke-linecap:round;
  stroke-linejoin:round; opacity:.3 }

/* Eckwinkel wie auf einem Zeichnungsblatt */
.tmap__marks path{ fill:none; stroke:var(--chalk); stroke-width:1.2; opacity:.28 }

/* Fahrbahn */
.tmap__shadow{ fill:none; stroke:#000; stroke-width:19; stroke-linecap:round; stroke-linejoin:round;
  opacity:.5; transform:translate(2px,4px) }
.tmap__road{ fill:none; stroke:var(--chalk); stroke-width:13; stroke-linecap:round; stroke-linejoin:round;
  opacity:.32; transition:opacity .45s var(--ease) }
.trk__pane:hover .tmap__road{ opacity:.48 }
.tmap__line{ fill:none; stroke:var(--chalk); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:10 13; opacity:.5 }
.tmap__dir{ fill:none; stroke:var(--chalk); stroke-width:2.6; stroke-linecap:round; stroke-linejoin:round; opacity:.55 }

/* Aktiver Abschnitt */
.tmap__seg{ fill:none; stroke:var(--signal); stroke-width:17; stroke-linecap:round; stroke-linejoin:round;
  opacity:0; transition:opacity .3s var(--ease) }
.tmap__seg.is-on{ opacity:1 }
.tmap__hit{ fill:none; stroke:transparent; stroke-width:34; stroke-linecap:round;
  pointer-events:stroke; cursor:pointer }

/* Lichtspur, die die Runde faehrt */
.tmap__pace{ fill:none; stroke:var(--caliper); stroke-width:9; stroke-linecap:round;
  stroke-dasharray:52 calc(var(--len, 4000) - 52); stroke-dashoffset:0; opacity:0 }
.trk__pane[data-map].is-drawn .tmap__pace{ opacity:.95; animation:lap var(--lap,16s) linear infinite;
  transition:opacity .7s var(--ease) 1.5s }
@keyframes lap{ to{ stroke-dashoffset:calc(var(--len, 4000) * -1) } }

/* Start und Ziel */
.tmap__flag{ stroke:var(--ink); stroke-width:1 }

/* Beschriftete Abschnitte */
.tlab{ pointer-events:none; transform-box:fill-box; transform-origin:center }
.tlab__lead{ fill:none; stroke:var(--chalk); stroke-width:1; opacity:.3;
  transition:opacity .3s var(--ease), stroke .3s var(--ease) }
.tlab__knot{ fill:var(--chalk); opacity:.4; transition:fill .3s var(--ease), opacity .3s var(--ease) }
.tlab__t{ font-family:var(--tech); font-weight:600; font-size:16px; letter-spacing:.03em;
  fill:var(--chalk); opacity:.72; transition:opacity .3s var(--ease), fill .3s var(--ease) }
.tlab__n{ font-family:var(--tech); font-weight:600; font-size:14px; letter-spacing:.16em;
  fill:var(--caliper); opacity:.75; transition:opacity .3s var(--ease), fill .3s var(--ease) }
.tlab__t,.tlab__n{ transition:opacity .35s var(--ease), fill .35s var(--ease),
  letter-spacing .35s var(--ease) }
.tlab.is-on .tlab__lead{ opacity:1; stroke:var(--signal) }
.tlab.is-on .tlab__knot{ fill:var(--signal); opacity:1 }
.tlab.is-on .tlab__t{ opacity:1 }
.tlab.is-on .tlab__n{ fill:var(--signal); opacity:1; letter-spacing:.24em }
.tlab.is-on .tlab__knot{ animation:knot .5s var(--ease-out) }
@keyframes knot{ 0%{ r:2.4 } 45%{ r:5.4 } 100%{ r:2.4 } }

/* Punkte auf der Strecke */
.tpt{ cursor:pointer; outline:none }
.tpt__hit{ fill:transparent }
.tpt__ring{ fill:none; stroke:var(--caliper); stroke-width:1.4; opacity:0;
  transform-box:fill-box; transform-origin:center; transform:scale(.55);
  transition:opacity .3s var(--ease), transform .3s var(--ease-out) }
.tpt__dot{ fill:var(--caliper); stroke:var(--ink); stroke-width:1.5;
  transform-box:fill-box; transform-origin:center;
  transition:transform .3s var(--ease-out), fill .3s var(--ease) }
.tpt:hover .tpt__ring,.tpt:focus-visible .tpt__ring,.tpt.is-on .tpt__ring{ opacity:1; transform:scale(1) }
.tpt:hover .tpt__dot,.tpt:focus-visible .tpt__dot,.tpt.is-on .tpt__dot{ transform:scale(1.5); fill:var(--signal) }
.tpt:focus-visible .tpt__hit{ stroke:var(--signal); stroke-width:2; fill:rgba(255,61,0,.08) }

/* Massstab und Nordpfeil */
.tmap__scale path,.tmap__north path{ fill:none; stroke:var(--chalk); stroke-width:1.2; opacity:.45 }
.tmap__scale text,.tmap__north text{ font-family:var(--tech); font-weight:500; font-size:13px;
  letter-spacing:.16em; fill:var(--chalk); opacity:.5 }

/* Fussleiste: Ableser und Hoehenprofil */
.tmap__foot{ flex:none; display:flex; flex-direction:column; gap:8px; padding-top:10px }
.tmap__read{ display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 14px; min-height:26px }
.tmap__read b{ color:var(--caliper); font-weight:500 }
.tmap__read.is-live b{ font-family:var(--display); font-weight:800; font-variation-settings:"wdth" 108;
  font-size:clamp(17px,1.8vw,25px); letter-spacing:-.01em; text-transform:uppercase; color:var(--chalk) }
.tmap__read span{ font-family:var(--tech); font-weight:500; font-size:10.5px; letter-spacing:.15em;
  text-transform:uppercase; color:var(--fg-mute) }
.tmap__read em{ flex-basis:100%; font-style:normal; font-size:13.5px; line-height:1.5;
  letter-spacing:0; text-transform:none; color:var(--fg-soft); max-width:78ch }
/* Die Kindelemente werden bei jedem Wechsel neu gesetzt — dadurch startet die
   Animation von selbst wieder und der Text setzt sich weich, statt zu springen. */
@keyframes readIn{ from{ opacity:0; transform:translateY(7px) } to{ opacity:1; transform:none } }
.tmap__read.is-live > *{ animation:readIn .42s var(--ease-out) both }
.tmap__read.is-live > span{ animation-delay:.05s }
.tmap__read.is-live > em{ animation-delay:.1s }

.tprof{ position:relative; border-top:1px solid var(--rule); padding-top:8px }
.tprof__cap{ display:flex; justify-content:space-between; gap:12px; color:var(--fg-mute); margin-bottom:4px }
.tprof svg{ display:block; width:100%; height:clamp(46px,5.4vw,72px) }
.tprof__area{ fill:var(--chalk); fill-opacity:.07 }
.tprof__line{ fill:none; stroke:var(--chalk); stroke-width:1.4; opacity:.5;
  vector-effect:non-scaling-stroke; stroke-linejoin:round }
.tprof__tick{ stroke:var(--caliper); stroke-width:1; opacity:.45; vector-effect:non-scaling-stroke }
.tprof__cursor line{ stroke:var(--signal); stroke-width:1.4; vector-effect:non-scaling-stroke }
.tprof__cursor{ opacity:0; transition:opacity .3s var(--ease), transform .38s var(--ease-out) }
.tprof.is-live .tprof__cursor{ opacity:1 }

/* Einzeichnen beim Erscheinen.
   Ohne JavaScript bleibt die Linie sichtbar — erst .is-ready blendet sie aus. */
.trk__pane[data-map].is-ready .tmap__road,
.trk__pane[data-map].is-ready .tmap__shadow{ stroke-dasharray:var(--len); stroke-dashoffset:var(--len) }
.trk__pane[data-map].is-ready .tmap__line,
.trk__pane[data-map].is-ready .tmap__dirs,
.trk__pane[data-map].is-ready .tmap__start,
.trk__pane[data-map].is-ready .tlab,
.trk__pane[data-map].is-ready .tpt{ opacity:0 }
.trk__pane[data-map].is-drawn .tmap__road,
.trk__pane[data-map].is-drawn .tmap__shadow{ animation:draw 1.8s var(--ease-out) forwards }
.trk__pane[data-map].is-drawn .tmap__line{ opacity:.5; transition:opacity .8s var(--ease) .9s }
.trk__pane[data-map].is-drawn .tmap__dirs{ opacity:1; transition:opacity .7s var(--ease) 1.2s }
.trk__pane[data-map].is-drawn .tmap__start{ opacity:1; transition:opacity .5s var(--ease) 1.1s }
.trk__pane[data-map].is-drawn .tlab{ opacity:1;
  transition:opacity .7s var(--ease) calc(1.25s + var(--i,0) * .055s) }
.trk__pane[data-map].is-drawn .tpt{ opacity:1; transition:opacity .6s var(--ease) calc(1.4s + var(--i,0) * .04s) }
@keyframes draw{ to{ stroke-dashoffset:0 } }
@media (prefers-reduced-motion:reduce){
  .trk__pane[data-map].is-ready .tmap__road,
  .trk__pane[data-map].is-ready .tmap__shadow{ stroke-dasharray:none; stroke-dashoffset:0 }
  .trk__pane[data-map].is-ready .tmap__line{ opacity:.5 }
  .trk__pane[data-map].is-ready .tmap__dirs,
  .trk__pane[data-map].is-ready .tmap__start,
  .trk__pane[data-map].is-ready .tlab,
  .trk__pane[data-map].is-ready .tpt{ opacity:1 }
  .tmap__pace,.trk__pane[data-map].is-drawn .tmap__pace{ display:none; animation:none }
}
@media (max-width:900px){
  /* Klein reichen die Nummern — die Namen stehen im Ableser darunter */
  .tlab__t{ display:none }
  .tlab__n{ font-size:19px; opacity:.75 }
}
@media (max-width:600px){
  .tpt__hit{ r:38 }
  .tpt__dot{ r:8 }
  .tpt__ring{ r:19 }
  .tmap__road{ stroke-width:16; opacity:.34 }
  .tmap__shadow{ stroke-width:22 }
  .tmap__seg{ stroke-width:20 }
  .tmap__scale text,.tmap__north text{ font-size:17px }
  .tlab__n{ font-size:24px }
  .trk__stage{ min-height:min(150vw,690px) }
}
