/* ==========================================================================
   Stars of the Galaxy — Design-System
   Dunkel, cineastisch, HUD-inspiriert. Nur transform/opacity animieren.
   ========================================================================== */

/* ---------- Fonts (lokal, variable) ---------- */
@font-face {
  font-family: 'Orbitron';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/assets/fonts/orbitron-latin.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/assets/fonts/inter-latin.woff2') format('woff2');
}

/* ---------- Tokens ---------- */
:root {
  --bg-0: #05060f;
  --bg-1: #0a0e1f;
  --bg-2: #121831;
  --ink: #e8e9f0;
  --ink-dim: #aab0c8;
  --amber: #ff8c1f;
  --amber-deep: #d86000;
  --amber-ink: #1c1303;
  --cyan: #4de3ff;
  --cyan-soft: rgba(77, 227, 255, .55);
  --red: #ff4d5e;
  --line: rgba(77, 227, 255, .18);
  --line-soft: rgba(77, 227, 255, .09);
  --glass: rgba(13, 18, 38, .58);
  --glass-solid: #0d1226;
  --shadow: 0 18px 50px rgba(0, 0, 0, .55);
  --font-display: 'Orbitron', 'Inter', 'Avenir Next', sans-serif;
  --font-body: 'Inter', system-ui, -apple-system, sans-serif;
  --wrap: 1180px;
  --bevel: polygon(14px 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%, 0 14px);
  --bevel-sm: polygon(9px 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%, 0 9px);
  --header-h: 76px;
}

/* ---------- Reset / Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0;
  background: var(--bg-0);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.65;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: var(--cyan); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: #8deeff; }
p { margin: 0 0 1em; }
strong { color: #fff; }
:focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; border-radius: 2px; }
::selection { background: rgba(255, 140, 31, .85); color: #140d00; }

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.14;
  letter-spacing: .015em;
  margin: 0 0 .5em;
  color: #fff;
  text-wrap: balance;
}
/* Kundenwunsch 06.11.2026: alles eine Stufe größer (Basis 17 px statt 16 px) */
html { font-size: 106.25%; }
h1 { font-size: clamp(1.9rem, 1.1rem + 3.6vw, 3.6rem); }
h2 { font-size: clamp(1.45rem, 1rem + 2vw, 2.3rem); }
h3 { font-size: clamp(1.1rem, .95rem + .7vw, 1.4rem); }
h4 { font-size: 1.05rem; }

.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 300;
  background: var(--amber); color: var(--amber-ink);
  padding: .7rem 1.2rem; font-weight: 700; text-decoration: none;
}
.skip-link:focus { left: 12px; top: 12px; }

/* ---------- Hintergrund-Layer ---------- */
#starfield {
  position: fixed; inset: 0; z-index: -2;
  width: 100%; height: 100%;
  background: radial-gradient(120% 90% at 50% 0%, var(--bg-1) 0%, var(--bg-0) 62%);
}

/* Warp-Veil für Seitenübergänge */
.warp-veil {
  position: fixed; inset: 0; z-index: 240; pointer-events: none;
  background: var(--bg-0); opacity: 0;
  transition: opacity .3s ease;
}
body.warping .warp-veil { opacity: 1; pointer-events: auto; }

/* ---------- Layout ---------- */
.wrap { width: min(var(--wrap), 100% - 2.5rem); margin-inline: auto; }
main { display: block; }
.section { padding-block: clamp(3.2rem, 2rem + 4vw, 6rem); position: relative; }
.section--tight { padding-block: clamp(2.2rem, 1.5rem + 2.5vw, 3.6rem); }

.hud-label {
  font-family: var(--font-display);
  font-size: .8rem; font-weight: 600;
  letter-spacing: .32em; text-transform: uppercase;
  color: var(--cyan);
  display: flex; align-items: center; gap: .8rem;
  margin-bottom: 1.1rem;
}
.hud-label::before { content: ''; width: 26px; height: 1px; background: var(--cyan); flex: none; }
.section-head { max-width: 760px; margin-bottom: clamp(1.6rem, 1rem + 2vw, 2.8rem); }
.section-head .lead, .lead { font-size: clamp(1.05rem, 1rem + .4vw, 1.22rem); color: var(--ink-dim); text-wrap: pretty; }

/* Energie-Trennlinie: zündet per ScrollTrigger (scaleX) */
.divider-beam {
  height: 2px; margin-block: .4rem 2rem; border: 0;
  background: linear-gradient(90deg, var(--amber), var(--cyan) 65%, transparent);
  transform-origin: left center; transform: scaleX(0);
  box-shadow: 0 0 14px rgba(255, 140, 31, .4);
}
.no-js .divider-beam, .beam-on { transform: scaleX(1); transition: transform .9s cubic-bezier(.2, .7, .2, 1); }

/* Reveal-Grundzustand (GSAP setzt Endzustand; ohne JS sichtbar) */
.js [data-reveal] { opacity: 0; transform: translateY(28px); will-change: transform, opacity; }
.js [data-reveal].revealed, .no-js [data-reveal] { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .js [data-reveal] { opacity: 1; transform: none; }
}

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 200;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  background: rgba(5, 6, 15, .72);
  border-bottom: 1px solid var(--line-soft);
  transition: background .3s ease;
}
.site-header .wrap { width: min(1400px, 100% - 2.5rem); }
.site-header__bar {
  display: flex; align-items: center; gap: 1rem;
  height: var(--header-h);
  transition: height .3s ease;
}
.site-header.is-compact .site-header__bar { height: 58px; }
.site-header__logo { flex: none; display: flex; align-items: center; }
.site-header__logo img { height: 38px; width: auto; transition: height .3s ease; }
.site-header.is-compact .site-header__logo img { height: 32px; }

.site-nav { display: flex; align-items: center; gap: .1rem; margin-left: auto; }
.site-nav a {
  font-family: var(--font-display); font-size: .74rem; font-weight: 600;
  letter-spacing: .06em; text-transform: uppercase; text-decoration: none;
  color: var(--ink); padding: .5rem .5rem; position: relative; white-space: nowrap;
}
.site-nav a::after {
  content: ''; position: absolute; left: .55rem; right: .55rem; bottom: .2rem;
  height: 1px; background: var(--cyan);
  transform: scaleX(0); transform-origin: left; transition: transform .25s ease;
}
.site-nav a:hover, .site-nav a:focus-visible { color: var(--cyan); }
.site-nav a:hover::after, .site-nav a[aria-current="page"]::after { transform: scaleX(1); }
.site-nav a[aria-current="page"] { color: var(--cyan); }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .site-nav a:hover { animation: holo-flicker .5s steps(2, jump-none) 1; }
}
@keyframes holo-flicker {
  0% { opacity: 1; } 30% { opacity: .68; } 45% { opacity: 1; } 60% { opacity: .85; } 100% { opacity: 1; }
}

/* Status-Chip (Öffnungszeiten) */
.status-chip {
  display: inline-flex; align-items: center; gap: .5rem;
  font-family: var(--font-display); font-size: .74rem; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--ink-dim);
  border: 1px solid var(--line); clip-path: var(--bevel-sm);
  padding: .42rem .8rem; background: rgba(77, 227, 255, .05);
  white-space: nowrap;
}
.status-chip::before {
  content: ''; width: 7px; height: 7px; border-radius: 50%;
  background: var(--ink-dim); flex: none;
}
.status-chip.is-open { color: #9ff3c4; border-color: rgba(96, 240, 160, .35); }
.status-chip.is-open::before { background: #4be08a; box-shadow: 0 0 8px #4be08a; }
.status-chip.is-closed { color: var(--ink-dim); }
.status-chip.is-closed::before { background: var(--red); }
.site-header .status-chip { display: none; }
/* Status-Chip im Kopf erst, wenn wirklich Platz ist (sonst schob er bei 1600 bis 2100 px
   Menü und Flaggen aus dem Bild, je nach Sprache unterschiedlich weit) */
@media (min-width: 2200px) { .site-header .status-chip { display: inline-flex; } }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .55rem;
  font-family: var(--font-display); font-size: .86rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; text-decoration: none;
  padding: .95rem 1.7rem; cursor: pointer; border: 0;
  clip-path: var(--bevel-sm);
  position: relative; overflow: hidden;
  transition: transform .2s ease;
}
.btn:active { transform: translateY(1px) scale(.99); }
.btn--primary { background: var(--amber); color: var(--amber-ink); }
.btn--primary::after { /* Energie-Ladebalken beim Hover */
  content: ''; position: absolute; left: 0; bottom: 0; height: 3px; width: 100%;
  background: #fff; opacity: .85;
  transform: scaleX(0); transform-origin: left;
}
.btn--primary:hover::after, .btn--primary:focus-visible::after { transform: scaleX(1); transition: transform .35s cubic-bezier(.2, .8, .3, 1); }
@media (prefers-reduced-motion: no-preference) {
  .btn--primary { animation: pulse-glow 3.2s ease-in-out infinite; }
}
@keyframes pulse-glow {
  0%, 100% { box-shadow: 0 0 0 rgba(255, 140, 31, 0); }
  50% { box-shadow: 0 0 26px rgba(255, 140, 31, .45); }
}
.btn--ghost {
  background: rgba(77, 227, 255, .06); color: var(--cyan);
  box-shadow: inset 0 0 0 1px var(--cyan-soft);
}
.btn--ghost:hover { background: rgba(77, 227, 255, .14); }
.btn--sm { padding: .7rem 1.2rem; font-size: .8rem; }
.header-cta { flex: none; }
@media (max-width: 1023px) { .header-cta { display: none; } }

/* ---------- Mobile Nav ---------- */
.nav-toggle {
  display: none; flex: none; margin-left: auto;
  width: 46px; height: 46px; padding: 0;
  background: none; border: 1px solid var(--line); clip-path: var(--bevel-sm);
  cursor: pointer; position: relative; z-index: 230;
}
.nav-toggle span {
  display: block; width: 20px; height: 2px; background: var(--cyan);
  margin: 4px auto; transition: transform .3s ease, opacity .3s ease;
}
.nav-open .nav-toggle span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
.nav-open .nav-toggle span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
@media (max-width: 1439px) {
  .nav-toggle { display: block; }
  .site-nav {
    position: fixed; inset: 0; z-index: 220;
    flex-direction: column; justify-content: center; gap: .6rem;
    background: rgba(5, 6, 15, .96);
    backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
    opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility .3s ease;
  }
  .nav-open .site-nav { opacity: 1; visibility: visible; }
  .site-nav a { font-size: 1.05rem; padding: .8rem 1.4rem; }
  .site-nav .btn { margin-top: 1.2rem; }
}
body.nav-open { overflow: hidden; }
/* Wichtig: backdrop-filter macht den Header zum Containing Block für
   position:fixed-Nachfahren — im offenen Menü deshalb deaktivieren,
   damit das Overlay wirklich den ganzen Viewport füllt. */
body.nav-open .site-header {
  backdrop-filter: none; -webkit-backdrop-filter: none;
  background: rgba(5, 6, 15, .96);
}
body.nav-open .sticky-cta, body.nav-open .pick-summary { display: none; }

/* ---------- Hero ---------- */
.hero {
  position: relative; display: grid; align-items: end;
  min-height: min(88vh, 860px); padding-block: 7rem 3.4rem;
  isolation: isolate;
}
.hero--sub { min-height: min(62vh, 620px); padding-top: 5.5rem; }
.hero__media { position: absolute; inset: 0; z-index: -1; overflow: hidden; }
.hero__media img {
  width: 100%; height: 100%; object-fit: cover;
  filter: brightness(.62) saturate(1.05);
  will-change: transform;
}
.hero__media::after {
  content: ''; position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(5, 6, 15, .78) 0%, rgba(5, 6, 15, .18) 34%, rgba(5, 6, 15, .32) 62%, var(--bg-0) 100%),
    radial-gradient(90% 60% at 50% 100%, rgba(10, 14, 31, .5), transparent);
}
.hero__inner { max-width: 820px; }
.hero__kicker { margin-bottom: 1rem; }
.hero .lead { max-width: 620px; }
.hero__actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: 1.8rem; align-items: center; }
.hero__status { margin-top: 1.6rem; }

/* ---------- Karten ---------- */
.card {
  background: var(--glass);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid var(--line);
  clip-path: var(--bevel);
  padding: 1.6rem;
  position: relative;
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
a.card { display: block; color: inherit; text-decoration: none; }
a.card.tile { display: flex; flex-direction: column; } /* CTA-Links bündig am Kartenboden */
.card:hover { transform: translateY(-5px); border-color: var(--cyan-soft); box-shadow: 0 14px 40px rgba(0, 0, 0, .5), 0 0 24px rgba(77, 227, 255, .12); }
@media (prefers-reduced-motion: reduce) { .card:hover { transform: none; } }
.card--flat:hover { transform: none; box-shadow: none; border-color: var(--line); }

.card-grid { display: grid; gap: 1.3rem; }
.card-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); }
.card-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); }
.card-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); }

/* Foto-Karte (Highlights, Weichen) */
.tile { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.tile__media { aspect-ratio: 3 / 2; overflow: hidden; position: relative; }
.tile__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.tile:hover .tile__media img { transform: scale(1.05); }
@media (prefers-reduced-motion: reduce) { .tile:hover .tile__media img { transform: none; } }
.tile__media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(5, 6, 15, .65)); }
.tile__body { padding: 1.25rem 1.4rem 1.5rem; display: flex; flex-direction: column; gap: .4rem; flex: 1; }
.tile__body h3 { margin: 0; }
.tile__body p { color: var(--ink-dim); margin: 0; font-size: 1rem; }
.tile__cta {
  margin-top: auto; padding-top: .8rem;
  font-family: var(--font-display); font-size: .74rem; font-weight: 600;
  letter-spacing: .18em; text-transform: uppercase; color: var(--amber);
}
.tile__cta::after { content: ' →'; }

/* ---------- Zahlen / Stats ---------- */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr)); gap: 1.3rem; text-align: center; }
.stat { padding: 1.8rem .7rem; }
.stat__value {
  font-family: var(--font-display); font-weight: 800;
  font-size: clamp(1.8rem, 1.2rem + 1.9vw, 2.5rem);
  color: var(--amber); line-height: 1;
  display: block; white-space: nowrap;
}
.stat__value .unit { font-size: .55em; color: var(--cyan); margin-left: .1em; }
.stat__label { display: block; margin-top: .55rem; color: var(--ink-dim); font-size: .98rem; }

/* ---------- Preis-/Paketkarten ---------- */
.price-card { display: flex; flex-direction: column; gap: .9rem; padding: 1.9rem 1.7rem; }
.price-card--featured {
  border-color: var(--amber);
  box-shadow: 0 0 34px rgba(255, 140, 31, .14);
  background: linear-gradient(180deg, rgba(255, 140, 31, .07), var(--glass) 42%);
}
.price-card__badge {
  position: absolute; top: 0; right: 14px;
  background: var(--amber); color: var(--amber-ink);
  font-family: var(--font-display); font-size: .7rem; font-weight: 700;
  letter-spacing: .16em; text-transform: uppercase;
  padding: .35rem .7rem; clip-path: polygon(0 0, 100% 0, 100% 100%, 50% calc(100% - 6px), 0 100%);
}
.price-card__price {
  font-family: var(--font-display); font-weight: 800;
  font-size: 2.4rem; color: #fff; line-height: 1; margin: 0;
}
.price-card__price .unit { font-size: .45em; color: var(--cyan); font-weight: 600; }
.price-card__meta { color: var(--ink-dim); font-size: .98rem; margin: 0; }
.price-card ul { margin: 0; padding: 0; list-style: none; display: grid; gap: .5rem; font-size: 1rem; }
.price-card ul li { padding-left: 1.5rem; position: relative; }
.price-card ul li::before {
  content: ''; position: absolute; left: 0; top: .52em;
  width: 12px; height: 4px; background: var(--cyan);
  clip-path: polygon(0 0, 100% 50%, 0 100%);
}
.price-card .btn { margin-top: auto; }
.price-card__save { color: #9ff3c4; font-size: .95rem; font-weight: 600; }

/* ---------- Info-Panel (HUD) ---------- */
.hud-panel { padding: 1.9rem; }
.hud-panel h3 { display: flex; align-items: flex-start; hyphens: manual; gap: .7rem; font-size: 1.02rem; letter-spacing: .1em; text-transform: uppercase; color: var(--cyan); }
.hud-panel h3::before { content: ''; margin-top: calc(.6em - 4px); width: 8px; height: 8px; background: var(--amber); clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); flex: none; }
.info-table { width: 100%; border-collapse: collapse; font-size: .98rem; }
.info-table th, .info-table td { text-align: left; padding: .55rem 0; border-bottom: 1px solid var(--line-soft); vertical-align: top; }
.info-table th { font-weight: 600; color: var(--ink); white-space: nowrap; padding-right: 1.4rem; }
.info-table td { color: var(--ink-dim); }
.info-table tr:last-child th, .info-table tr:last-child td { border-bottom: 0; }
.info-table .is-today th, .info-table .is-today td { color: var(--amber); }

/* ---------- Galerie + Lightbox ---------- */
.gallery { display: grid; gap: .9rem; grid-template-columns: repeat(auto-fill, minmax(min(230px, 100%), 1fr)); }
.gallery a {
  display: block; overflow: hidden; clip-path: var(--bevel-sm);
  border: 1px solid var(--line-soft); aspect-ratio: 4 / 3; background: var(--bg-2);
}
.gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease, opacity .3s ease; }
.gallery a:hover img { transform: scale(1.06); }
@media (prefers-reduced-motion: reduce) { .gallery a:hover img { transform: none; } }

.lightbox { border: 0; padding: 0; background: transparent; max-width: min(94vw, 1200px); }
.lightbox::backdrop { background: rgba(3, 4, 10, .92); backdrop-filter: blur(6px); }
.lightbox img { max-height: 82vh; width: auto; max-width: 100%; margin-inline: auto; border: 1px solid var(--line); }
.lightbox figcaption { color: var(--ink-dim); text-align: center; padding: .8rem; font-size: .92rem; }
.lightbox__close {
  position: fixed; top: 18px; right: 18px;
  background: var(--glass-solid); color: var(--ink); border: 1px solid var(--line);
  width: 44px; height: 44px; font-size: 1.3rem; cursor: pointer; clip-path: var(--bevel-sm);
}

/* ---------- FAQ (details/summary) ---------- */
.faq { display: grid; gap: .8rem; max-width: 820px; }
.faq details { background: var(--glass); border: 1px solid var(--line); clip-path: var(--bevel-sm); }
.faq summary {
  cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  padding: 1.05rem 1.3rem; font-weight: 600; color: var(--ink); font-size: 1rem;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: '+'; font-family: var(--font-display); color: var(--cyan);
  font-size: 1.2rem; line-height: 1; transition: transform .25s ease; flex: none;
}
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details > div { padding: 0 1.3rem 1.2rem; color: var(--ink-dim); }
.faq details > div p:last-child { margin-bottom: 0; }

/* ---------- Timeline (JGA) ---------- */
.timeline { display: grid; gap: 0; max-width: 780px; position: relative; padding-left: 2rem; }
.timeline::before {
  content: ''; position: absolute; left: 7px; top: 10px; bottom: 10px; width: 2px;
  background: linear-gradient(180deg, var(--amber), var(--cyan));
  opacity: .55;
}
.timeline__step { position: relative; padding: 0 0 2.2rem 1.2rem; }
.timeline__step:last-child { padding-bottom: 0; }
.timeline__step::before {
  content: ''; position: absolute; left: -2rem; top: 6px;
  width: 16px; height: 16px; background: var(--bg-0);
  border: 2px solid var(--amber); clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
}
.timeline__step h3 { margin-bottom: .3rem; }
.timeline__step p { color: var(--ink-dim); margin: 0; }

/* ---------- Formulare ---------- */
.form-grid { display: grid; gap: 1rem; }
@media (min-width: 640px) { .form-grid--2 { grid-template-columns: 1fr 1fr; } .form-grid--2 .span-2 { grid-column: span 2; } }
label { display: block; font-family: var(--font-display); font-size: .78rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--cyan); margin-bottom: .45rem; }
input[type="text"], input[type="email"], input[type="tel"], input[type="date"], select, textarea {
  width: 100%; padding: .85rem 1rem;
  background: rgba(77, 227, 255, .05); color: var(--ink);
  border: 1px solid var(--line); clip-path: var(--bevel-sm);
  font: inherit; font-size: 1rem;
}
input:focus, select:focus, textarea:focus { outline: none; }
input:focus-visible, select:focus-visible, textarea:focus-visible { border-color: var(--cyan); box-shadow: 0 0 0 1px var(--cyan-soft), 0 0 18px rgba(77, 227, 255, .12); outline: none; }
textarea { min-height: 160px; resize: vertical; }
.hp-field { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.form-note { color: var(--ink-dim); font-size: .95rem; }

/* Funkspruch-Erfolgsmeldung */
.transmission {
  border: 1px solid rgba(96, 240, 160, .4); clip-path: var(--bevel-sm);
  background: rgba(30, 60, 45, .35); padding: 1.3rem 1.5rem;
  font-family: var(--font-display); font-size: .92rem; letter-spacing: .06em;
  color: #9ff3c4;
}
.transmission strong { color: #d9ffe9; display: block; margin-bottom: .3rem; letter-spacing: .18em; }
.transmission.is-error { border-color: rgba(255, 77, 94, .5); background: rgba(70, 25, 32, .35); color: #ffb9c0; }
.transmission.is-error strong { color: #ffdde1; }
@media (prefers-reduced-motion: no-preference) {
  .transmission[data-typing] strong { overflow: hidden; white-space: nowrap; animation: type-in 1s steps(24) both; }
}
@keyframes type-in { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }

/* ---------- Abschluss-CTA ---------- */
.cta-final { text-align: center; padding-block: clamp(4rem, 3rem + 5vw, 7.5rem); position: relative; overflow: clip; }
.cta-final h2 { font-size: clamp(1.7rem, 1.1rem + 2.8vw, 3rem); }
.cta-final .btn { margin-top: 1.4rem; }
.cta-final::before {
  content: ''; position: absolute; inset: 0; z-index: -1;
  background: radial-gradient(60% 70% at 50% 100%, rgba(77, 227, 255, .12), transparent 70%);
}

/* ---------- Footer ---------- */
.site-footer { border-top: 1px solid var(--line-soft); background: rgba(5, 6, 15, .8); margin-top: 2rem; font-size: 1rem; }
.site-footer__grid {
  display: grid; gap: 2.2rem; padding-block: 3rem 2.2rem;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
}
.site-footer h4 { font-size: .84rem; letter-spacing: .24em; text-transform: uppercase; color: var(--cyan); margin-bottom: 1rem; }
.site-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.site-footer a { color: var(--ink-dim); text-decoration: none; }
.site-footer a:hover { color: var(--cyan); }
.site-footer address { font-style: normal; color: var(--ink-dim); line-height: 1.8; }
.site-footer__legal {
  border-top: 1px solid var(--line-soft); padding-block: 1.4rem 5.4rem;
  display: grid; gap: .8rem; color: var(--ink-dim); font-size: .9rem;
}
@media (min-width: 1024px) { .site-footer__legal { padding-bottom: 1.4rem; } }
.site-footer__legal nav { display: flex; gap: 1.4rem; }
.disclaimer { max-width: 860px; opacity: .8; }

/* ---------- Sticky Mobile CTA ---------- */
.sticky-cta {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 210;
  display: none; padding: .7rem .9rem calc(.7rem + env(safe-area-inset-bottom));
  background: rgba(5, 6, 15, .88); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border-top: 1px solid var(--line);
}
.sticky-cta .btn { width: 100%; }
@media (max-width: 1023px) { .sticky-cta { display: block; } }

/* ---------- Easter Egg: Droide ---------- */
.droid-run {
  position: fixed; bottom: 8px; left: -140px; z-index: 250; pointer-events: none;
  width: 110px; will-change: transform;
}
.droid-run .wheel { transform-origin: center; }
@media (prefers-reduced-motion: no-preference) {
  .droid-run.rolling { animation: droid-roll 5s linear forwards; }
  .droid-run.rolling .wheel { animation: droid-spin .5s linear infinite; }
}
@keyframes droid-roll { to { transform: translateX(calc(100vw + 280px)); } }
@keyframes droid-spin { to { transform: rotate(360deg); } }

/* ---------- Utilities ---------- */
.text-center { text-align: center; }
.grid-2 { display: grid; gap: 2.4rem; align-items: center; }
@media (min-width: 860px) { .grid-2 { grid-template-columns: 1fr 1fr; } .grid-2--wide-media { grid-template-columns: 1.15fr 1fr; } }
.media-frame { clip-path: var(--bevel); border: 1px solid var(--line); overflow: hidden; }
.media-frame img { width: 100%; height: 100%; object-fit: cover; }
.checklist { list-style: none; margin: 0 0 1.2rem; padding: 0; display: grid; gap: .6rem; }
.checklist li { padding-left: 1.7rem; position: relative; }
.checklist li::before {
  content: ''; position: absolute; left: 0; top: .42em;
  width: 14px; height: 8px;
  border-left: 2px solid var(--amber); border-bottom: 2px solid var(--amber);
  transform: rotate(-45deg);
}
.note-cold {
  display: flex; gap: 1rem; align-items: flex-start;
  border: 1px solid var(--line); clip-path: var(--bevel-sm);
  background: rgba(77, 227, 255, .05); padding: 1.2rem 1.4rem; color: var(--ink-dim);
}
.note-cold svg { flex: none; width: 30px; height: 30px; margin-top: .15rem; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* Print: dunkles Design nicht drucken */
@media print {
  body { background: #fff; color: #111; }
  #starfield, .sticky-cta, .warp-veil, .nav-toggle { display: none !important; }
}

/* ==========================================================================
   Erweiterungen November 2026 (Kundenfeedback)
   ========================================================================== */

/* ---------- Partner-Chips (gemischte Logos auf hellem Grund) ---------- */
.partner-row { display: flex; flex-wrap: wrap; gap: .8rem; align-items: stretch; }
.site-footer h4.partner-title { margin: 1.8rem 0 .8rem; }
.partner-chip {
  display: flex; align-items: center; justify-content: center;
  background: #fff; clip-path: var(--bevel-sm);
  padding: .55rem .9rem; min-height: 56px;
  opacity: 1; transition: opacity .25s ease, transform .25s ease;
}
.partner-chip:hover { opacity: 1; transform: translateY(-2px); }
.partner-chip img { height: 34px; width: auto; max-width: 150px; object-fit: contain; filter: none; opacity: 1; }

/* ---------- News-Popup (vom Betreiber pflegbar) ---------- */
.news-popup {
  border: 1px solid var(--amber); background: var(--glass-solid); color: var(--ink);
  clip-path: var(--bevel); padding: 0; max-width: min(92vw, 520px);
}
.news-popup::backdrop { background: rgba(3, 4, 10, .7); backdrop-filter: blur(4px); }
.news-popup__inner { padding: 1.8rem 1.9rem 1.6rem; }
.news-popup .hud-label { margin-bottom: .8rem; color: var(--amber); }
.news-popup .hud-label::before { background: var(--amber); }
.news-popup h2 { font-size: 1.3rem; margin-bottom: .5rem; }
.news-popup p { color: var(--ink-dim); margin-bottom: 1.2rem; }
.news-popup__actions { display: flex; flex-wrap: wrap; gap: .7rem; }
.news-popup__close {
  position: absolute; top: 10px; right: 10px;
  background: none; border: 1px solid var(--line); clip-path: var(--bevel-sm);
  color: var(--ink); width: 38px; height: 38px; font-size: 1.15rem; cursor: pointer;
}
.news-popup__close:hover { border-color: var(--cyan); color: var(--cyan); }

/* ---------- Bewertungs-Laufband ---------- */
.ti-band {
  overflow: hidden; padding-block: .4rem;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}
/* Abstand als margin-right statt gap: nur so trifft der -50%-Loop exakt die Naht */
.ti-track { display: flex; width: max-content; will-change: transform; }
.ti-track .ti-card { margin: 0 1.2rem 0 0; }
@media (prefers-reduced-motion: no-preference) {
  .ti-track { animation: ti-scroll var(--ti-dur, 70s) linear infinite; }
  .ti-band:hover .ti-track, .ti-band:focus-within .ti-track { animation-play-state: paused; }
}
@keyframes ti-scroll { to { transform: translateX(-50%); } }
.ti-card {
  width: min(340px, 82vw); flex: none;
  background: var(--glass); border: 1px solid var(--line); clip-path: var(--bevel-sm);
  padding: 1.2rem 1.35rem; display: flex; flex-direction: column; gap: .5rem;
}
.ti-card__stars { color: var(--amber); letter-spacing: .2em; font-size: .95rem; }
.ti-card__text { color: var(--ink); font-size: 1rem; line-height: 1.6; margin: 0; }
.ti-card__name { color: var(--ink-dim); font-size: .9rem; margin: 0; }
@media (prefers-reduced-motion: reduce) {
  .ti-band { -webkit-mask-image: none; mask-image: none; }
  .ti-track { flex-wrap: wrap; width: auto; }
  .ti-card--dup { display: none; }
}

/* ---------- Auswahl-Chips (Vermietungs-Anfrage) ---------- */
.pick-grid { display: flex; flex-wrap: wrap; gap: .55rem; }
.pick-chip { position: relative; }
.pick-chip input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.pick-chip span {
  display: inline-flex; align-items: center; gap: .45rem;
  border: 1px solid var(--line); clip-path: var(--bevel-sm);
  background: rgba(77, 227, 255, .05);
  padding: .5rem .85rem; font-size: .92rem; color: var(--ink);
  transition: background .2s ease, border-color .2s ease;
}
.pick-chip span::before { content: '+'; color: var(--cyan); font-family: var(--font-display); font-weight: 700; }
.pick-chip input:checked + span { background: rgba(255, 140, 31, .16); border-color: var(--amber); }
.pick-chip input:checked + span::before { content: '✓'; color: var(--amber); }
.pick-chip input:focus-visible + span { outline: 2px solid var(--cyan); outline-offset: 2px; }
.pick-chip:hover span { border-color: var(--cyan-soft); }

.pick-summary {
  position: fixed; right: 16px; bottom: calc(96px + env(safe-area-inset-bottom, 0px)); z-index: 205;
  display: none;
}
.pick-summary.is-visible { display: block; }
@media (min-width: 1024px) { .pick-summary { bottom: 24px; } }

/* ---------- Video-Facade (YouTube erst nach Klick) ---------- */
.video-facade {
  position: relative; aspect-ratio: 16 / 9; width: 100%;
  clip-path: var(--bevel); border: 1px solid var(--line);
  background:
    radial-gradient(80% 90% at 70% 20%, rgba(77, 227, 255, .14), transparent 60%),
    linear-gradient(160deg, var(--bg-2), var(--bg-0));
  display: grid; place-items: center; cursor: pointer; padding: 0;
}
.video-facade:hover .video-facade__play { background: var(--amber); transform: scale(1.05); }
.video-facade__play {
  width: 74px; height: 74px; clip-path: var(--bevel-sm);
  background: var(--amber-deep); display: grid; place-items: center;
  transition: transform .25s ease, background .25s ease;
}
.video-facade__play::after {
  content: ''; width: 0; height: 0; margin-left: 4px;
  border: 14px solid transparent; border-left: 22px solid var(--amber-ink);
}
.video-facade__hint {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: .8rem 1.1rem; font-size: .85rem; color: var(--ink-dim);
  background: linear-gradient(180deg, transparent, rgba(5, 6, 15, .85));
  text-align: left;
}
.video-facade iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Footer: Sprachlinks des Ausstellungs-Führers unterstreichen (A11y) */

/* Status-Chip: außerhalb des Headers umbrechen lassen statt Container zu sprengen */
.status-chip { max-width: 100%; }
.card .status-chip, .hud-panel .status-chip, .hero__status .status-chip {
  white-space: normal; text-align: left; line-height: 1.6;
}
/* Pause-Taste des Bewertungs-Laufbands */
.ti-band__pause { margin: 1rem auto 0; display: block; }

/* Galerie-Varianten: freigestellte Katalogbilder ganz zeigen statt anschneiden */
.gallery--square a { aspect-ratio: 1 / 1; }
.gallery--contain a { padding: 6%; }
.gallery--contain img { object-fit: contain; }
.gallery--contain a:hover img { transform: scale(1.03); }
.gallery--light a { background: #eef1f8; }
.gallery--compact { grid-template-columns: repeat(auto-fill, minmax(min(180px, 100%), 1fr)); gap: .7rem; }

/* Vermietung: Bereichs-Navigation + einklappbare Auswahl */
.bereich-nav a { display: grid; gap: .3rem; padding: 1.1rem 1.3rem; text-decoration: none; color: var(--ink); }
.bereich-nav a:hover { border-color: var(--cyan-soft); }
.bereich-nav strong { font-family: var(--font-display); font-size: 1.02rem; color: #fff; }
.pick-fold { border: 1px solid var(--line); clip-path: var(--bevel-sm); background: var(--glass); padding: 0; margin-top: 1.4rem; }
.pick-fold summary {
  cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  padding: 1rem 1.3rem; font-family: var(--font-display); font-weight: 600; color: var(--cyan); font-size: .95rem;
}
.pick-fold summary::-webkit-details-marker { display: none; }
.pick-fold summary::after { content: '+'; font-size: 1.25rem; transition: transform .25s ease; }
.pick-fold[open] summary::after { transform: rotate(45deg); }
.pick-fold > *:not(summary) { margin-left: 1.3rem; margin-right: 1.3rem; }
.pick-fold > .pick-grid { margin-bottom: 1.3rem; }

/* Mobile-Robustheit: Grid-Blowout durch lange Select-Optionen verhindern,
   lange Wörter/URLs umbrechen statt die Seite zu sprengen */
.form-grid > * { min-width: 0; }
.grid-2 > *, .card-grid > * { min-width: 0; }
select { min-width: 0; }
p, li, a, td, summary { overflow-wrap: break-word; }
h1, h2, h3 { overflow-wrap: break-word; hyphens: auto; hyphenate-limit-chars: 13 6 6; -webkit-hyphenate-limit-before: 6; -webkit-hyphenate-limit-after: 6; }

/* ---------- Cookie-Consent-Banner (Aufbau wie Cookiebot, Design der Site) ---------- */
.consent {
  border: 1px solid var(--line);
  background: var(--glass-solid);
  color: var(--ink);
  clip-path: var(--bevel);
  padding: 0;
  max-width: 560px;
  width: calc(100vw - 32px);
  margin: auto auto 24px;              /* unten mittig */
  box-shadow: var(--shadow);
}
.consent::backdrop { background: rgba(3, 4, 10, .62); backdrop-filter: blur(3px); }
.consent__inner { padding: 1.5rem 1.6rem 1.4rem; }
.consent__title {
  font-family: var(--font-display);
  font-size: 1.02rem;
  letter-spacing: .06em;
  margin: 0 0 .9rem;
}
.consent__tabs {
  display: flex;
  gap: .25rem;
  border-bottom: 1px solid var(--line);
  margin-bottom: .95rem;
}
.consent__tab {
  appearance: none;
  background: none;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--ink-dim);
  font: inherit;
  font-size: .86rem;
  padding: .45rem .6rem;
  cursor: pointer;
}
.consent__tab.is-active { color: var(--cyan); border-bottom-color: var(--cyan); }
.consent__panel { font-size: .95rem; color: var(--ink-dim); max-height: 46vh; overflow-y: auto; }
.consent__panel p { margin: 0 0 .7rem; }
.consent__panel a { color: var(--cyan); }
.consent__cat { border-top: 1px solid var(--line-soft); padding: .75rem 0 .35rem; }
.consent__cat:first-child { border-top: 0; padding-top: 0; }
.consent__cat-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  color: var(--ink);
}
.consent__cat p { font-size: .9rem; margin-top: .35rem; }
.consent__switch { position: relative; display: inline-block; flex: 0 0 auto; }
.consent__switch input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.consent__slider {
  display: block;
  width: 42px; height: 22px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: var(--bg-1);
  transition: background .2s;
}
.consent__slider::before {
  content: "";
  position: absolute;
  top: 3px; left: 4px;
  width: 16px; height: 16px;
  border-radius: 50%;
  background: var(--ink-dim);
  transition: transform .2s, background .2s;
}
.consent__switch input:checked + .consent__slider { background: rgba(255, 140, 31, .25); border-color: var(--amber); }
.consent__switch input:checked + .consent__slider::before { transform: translateX(19px); background: var(--amber); }
.consent__switch input:disabled + .consent__slider { opacity: .55; }
.consent__switch input:focus-visible + .consent__slider { outline: 2px solid var(--cyan); outline-offset: 2px; }
.consent__actions {
  display: grid;
  grid-template-columns: repeat(3, 1fr);  /* drei gleich große Buttons */
  gap: .55rem;
  margin-top: 1.1rem;
}
.consent__actions .btn { padding: .7rem .5rem; font-size: .74rem; white-space: nowrap; }
@media (max-width: 560px) {
  .consent__actions { grid-template-columns: 1fr; }
  .consent { margin-bottom: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .consent__slider, .consent__slider::before { transition: none; }
}

/* ---------- Mehrsprachigkeit (DE / EN / NL) ---------- */
.lang-switch { display: flex; align-items: center; gap: 0; margin-left: .5rem; padding-left: .5rem; border-left: 1px solid var(--line); }
.site-nav .lang-switch a { color: var(--ink-dim); padding: .5rem .32rem; }
.site-nav .lang-switch a::after { display: none; }
.site-nav .lang-switch a:hover, .site-nav .lang-switch a:focus-visible { color: var(--cyan); }
.site-nav .lang-switch a[aria-current="true"] { color: var(--amber); }
@media (max-width: 1439px) {
  .lang-switch { margin: 1.4rem 0 0; padding: 0 12px; border: 0; gap: .4rem; flex-wrap: wrap; justify-content: center; max-width: 100%; }
  .site-nav .lang-switch a { font-size: .95rem; padding: .65rem .75rem; border: 1px solid var(--line); clip-path: var(--bevel-sm); }
  .site-nav .lang-switch a[aria-current="true"] { border-color: var(--amber); }
}
.footer-langs { display: flex; flex-wrap: wrap; gap: .3rem 1.2rem; margin-bottom: .9rem; font-size: .95rem; }
.footer-langs a { color: var(--ink-dim); text-decoration: none; }
.footer-langs a:hover, .footer-langs a:focus-visible { color: var(--cyan); text-decoration: underline; }
.footer-langs a[aria-current="true"] { color: var(--amber); }
.lang-hint {
  position: relative; z-index: 1; /* unter Header + Mobilmenü (z 200) */
  display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: .3rem 1rem;
  padding: .55rem 3.2rem .55rem 1rem; text-align: center;
  background: rgba(77, 227, 255, .08); border-bottom: 1px solid var(--line);
  font-size: .92rem; color: var(--ink);
}
.lang-hint a { color: var(--amber); font-weight: 600; }
.lang-hint__close {
  position: absolute; right: .4rem; top: 50%; transform: translateY(-50%);
  width: 44px; height: 44px; background: none; border: 0; cursor: pointer;
  color: var(--ink-dim); font-size: 1.5rem; line-height: 1;
}
.lang-hint__close:hover, .lang-hint__close:focus-visible { color: var(--cyan); }
/* Flaggen im Sprachumschalter (Kundenwunsch 06.11.2026) */
.lang-switch a, .footer-langs a { display: inline-flex; align-items: center; gap: .4rem; }
.flag { display: block; flex: none; border-radius: 2px; box-shadow: 0 0 0 1px rgba(232, 233, 240, .28); }
.lang-switch a[aria-current="true"] .flag, .footer-langs a[aria-current="true"] .flag { box-shadow: 0 0 0 2px var(--amber); }
.lang-switch a:not([aria-current="true"]) .flag { opacity: .85; }
.lang-switch a:hover .flag, .lang-switch a:focus-visible .flag { opacity: 1; }
/* Desktop: nur Flaggen (Kürzel bleibt für Screenreader), damit die Navigation einzeilig bleibt */
@media (min-width: 1440px) {
  .site-nav a { padding: .5rem .4rem; letter-spacing: .04em; }
  .site-nav a::after { left: .4rem; right: .4rem; }
  .lang-switch { margin-left: .3rem; padding-left: .3rem; }
  .lang-switch a span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .site-nav .lang-switch a { padding: .5rem .28rem; }
}

/* ---------- Bewertungen: stehende Karten mit Wechsel (statt Laufband) ---------- */
.ti-band.rv-on { -webkit-mask-image: none; mask-image: none; overflow: visible; }
.rv-stage {
  display: grid; gap: 1.2rem; grid-template-columns: repeat(var(--rv-cols, 1), minmax(0, 1fr));
  width: min(1180px, 100% - 2.5rem); margin-inline: auto; transition: opacity .38s ease;
}
.rv-stage.is-fading { opacity: 0; }
.rv-stage .ti-card { width: auto; margin: 0; } /* figure hat sonst 40 px Browser-Rand je Seite */
.rv-stage .ti-card__name { margin-top: auto; }
.rv-score { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .7rem; margin: 1rem 0 0; font-size: 1.05rem; color: var(--ink); }
.rv-score__stars { color: var(--amber); letter-spacing: .18em; font-size: 1.15rem; }
.rv-score strong { color: var(--ink); }
.rv-controls { display: flex; justify-content: center; align-items: center; gap: .8rem; flex-wrap: wrap; margin-top: 1.5rem; }
.rv-btn { min-width: 52px; min-height: 52px; padding: .5rem 1rem; font-size: 1.35rem; line-height: 1; }
.rv-btn--pause { font-size: 1rem; letter-spacing: 0; }
.rv-count { min-width: 4.5ch; text-align: center; color: var(--ink-dim); font-family: var(--font-display); font-size: .9rem; letter-spacing: .08em; }

#shiplayer { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; }
#shiplayer > * { position: absolute; will-change: transform; opacity: 0; }
/* Mini-Schiffe: freigestellte Fotos der eigenen Modelle, realistisch eingefärbt */
.mini-ship { position: absolute; }
.mini-ship img {
  display: block; width: 100%; height: 100%; position: relative; z-index: 1;
  filter: brightness(var(--ms-b, .8)) saturate(.78) contrast(1.06) blur(var(--ms-blur, 0px))
          drop-shadow(0 0 6px rgba(120, 170, 255, .3));
}
.mini-ship__engine {
  position: absolute; z-index: 2; transform: translate(-50%, -50%); border-radius: 50%;
  background: radial-gradient(circle, rgba(235, 248, 255, .95) 0 10%, rgba(110, 200, 255, .8) 28%, rgba(60, 120, 255, .28) 52%, transparent 70%);
  mix-blend-mode: screen; animation: engine-flicker .22s ease-in-out infinite alternate;
}
@keyframes engine-flicker {
  from { opacity: .7; transform: translate(-50%, -50%) scale(.9); }
  to { opacity: 1; transform: translate(-50%, -50%) scale(1.06); }
}
@media print { #shiplayer { display: none !important; } }

/* ---------- Kenny, der Museumsroboter (FAQ-Chat, Kundenwunsch 06.11.2026) ---------- */
.kenny-svg { display: block; width: 100%; height: 100%; object-fit: contain; }
.kenny-launcher {
  position: fixed; right: 18px; bottom: 18px; z-index: 150;
  display: inline-flex; align-items: center; gap: .55rem;
  padding: .45rem 1.1rem .45rem .5rem; cursor: pointer;
  background: rgba(10, 14, 31, .92); color: var(--ink);
  border: 1px solid var(--cyan-soft); clip-path: var(--bevel-sm);
  font-family: var(--font-display); font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  box-shadow: 0 8px 30px rgba(0, 0, 0, .45);
}
.kenny-launcher .kenny-svg { width: 38px; height: 44px; }
.kenny-launcher:hover, .kenny-launcher:focus-visible { border-color: var(--cyan); color: var(--cyan); }
@media (max-width: 1023px) { .kenny-launcher { bottom: 86px; right: 12px; padding-right: .5rem; } .kenny-launcher span { display: none; } }
@media (prefers-reduced-motion: no-preference) {
  .kenny-launcher.is-waving .kenny-svg { animation: kenny-hop 1.6s ease-in-out 2; }
  .kenny-eye { animation: kenny-blink 5s infinite; transform-origin: center; transform-box: fill-box; }
}
@keyframes kenny-hop { 0%, 100% { transform: translateY(0); } 30% { transform: translateY(-6px) rotate(-4deg); } 60% { transform: translateY(0) rotate(3deg); } }
@keyframes kenny-blink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(.1); } }
.kenny-open .kenny-launcher { display: none; }

.kenny-panel {
  position: fixed; right: 18px; bottom: 18px; z-index: 260;
  width: min(390px, calc(100vw - 24px)); max-height: min(620px, calc(100vh - 110px));
  display: flex; flex-direction: column;
  background: rgba(8, 11, 24, .97); border: 1px solid var(--line); clip-path: var(--bevel-sm);
  box-shadow: 0 18px 60px rgba(0, 0, 0, .6);
}
.kenny-panel[hidden] { display: none; }
@media (max-width: 1023px) { .kenny-panel { right: 12px; bottom: 12px; max-height: calc(100vh - 90px); } }
.kenny-head { display: flex; align-items: center; gap: .7rem; padding: .8rem 1rem; border-bottom: 1px solid var(--line-soft); }
.kenny-head__av { width: 40px; height: 46px; flex: none; }
.kenny-head strong { display: block; font-family: var(--font-display); color: #fff; letter-spacing: .06em; }
.kenny-head span { display: block; color: var(--ink-dim); font-size: .85rem; }
.kenny-close { margin-left: auto; width: 44px; height: 44px; background: none; border: 1px solid var(--line); color: var(--ink); font-size: 1.4rem; cursor: pointer; clip-path: var(--bevel-sm); }
.kenny-close:hover, .kenny-close:focus-visible { color: var(--cyan); border-color: var(--cyan); }
.kenny-log { flex: 1; overflow-y: auto; padding: 1rem; display: flex; flex-direction: column; gap: .8rem; min-height: 140px; }
.kenny-msg { display: flex; gap: .5rem; align-items: flex-end; max-width: 100%; }
.kenny-msg__av { width: 28px; height: 33px; flex: none; }
.kenny-msg__body { padding: .65rem .85rem; font-size: .95rem; line-height: 1.5; border: 1px solid var(--line-soft); background: rgba(77, 227, 255, .06); }
.kenny-msg--user { justify-content: flex-end; }
.kenny-msg--user .kenny-msg__body { background: rgba(255, 140, 31, .12); border-color: rgba(255, 140, 31, .35); }
.kenny-msg__link { color: var(--amber); font-weight: 600; }
.kenny-chips { display: flex; flex-wrap: wrap; gap: .4rem; padding: 0 1rem .6rem; }
.kenny-chips__label { width: 100%; color: var(--ink-dim); font-size: .8rem; }
.kenny-chip { background: rgba(77, 227, 255, .07); color: var(--cyan); border: 1px solid var(--cyan-soft); padding: .45rem .7rem; font: inherit; font-size: .85rem; cursor: pointer; text-align: left; }
.kenny-chip:hover, .kenny-chip:focus-visible { background: rgba(77, 227, 255, .16); }
.kenny-form { display: flex; gap: .5rem; padding: .7rem 1rem; border-top: 1px solid var(--line-soft); }
.kenny-form input { flex: 1; min-width: 0; font: inherit; font-size: 1rem; padding: .6rem .7rem; background: rgba(5, 6, 15, .7); color: var(--ink); border: 1px solid var(--line); }
.kenny-form input:focus { outline: 2px solid var(--cyan); outline-offset: 0; }
.kenny-note { margin: 0; padding: 0 1rem .8rem; color: var(--ink-dim); font-size: .78rem; }
.kenny-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Kenny läuft einmal über den Funkspruch (News-Popup) */
.news-popup .kenny-walk { position: absolute; top: 6px; left: 0; width: 34px; height: 40px; pointer-events: none; opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
  .news-popup[open] .kenny-walk { animation: kenny-walk 4.2s ease-in-out .3s 1 both; }
}
@keyframes kenny-walk {
  0% { opacity: 0; left: 0; transform: rotate(0); }
  8% { opacity: 1; }
  25% { transform: translateY(-3px) rotate(3deg); }
  50% { transform: translateY(0) rotate(-3deg); }
  75% { transform: translateY(-3px) rotate(3deg); }
  92% { opacity: 1; }
  100% { opacity: 0; left: calc(100% - 34px); transform: rotate(0); }
}

/* ---------- Interaktiver Lageplan (Ausstellung) ---------- */
.lageplan { position: relative; }
.lageplan__stage { position: relative; border: 1px solid var(--line); clip-path: var(--bevel-sm); overflow: hidden; background: #bfcbcf; }
.lageplan__stage img { display: block; width: 100%; height: auto; }
.lageplan__pin {
  position: absolute; transform: translate(-50%, -50%);
  width: 22px; height: 22px; border-radius: 50%; padding: 0; cursor: pointer;
  background: var(--cyan); border: 2px solid #05060f; box-shadow: 0 0 0 2px var(--cyan), 0 0 14px rgba(77, 227, 255, .8);
}
.lageplan__pin--foto { background: var(--amber); box-shadow: 0 0 0 2px var(--amber), 0 0 14px rgba(255, 140, 31, .8); }
.lageplan__pin::after { content: '+'; display: block; color: #05060f; font: 700 14px/18px var(--font-display); text-align: center; }
.lageplan__pin::before { content: ''; position: absolute; inset: -11px; }  /* größere Klickfläche (44 px) */
.lageplan__pin[aria-expanded="true"]::after { content: '−'; }
.lageplan__pin:hover, .lageplan__pin:focus-visible { transform: translate(-50%, -50%) scale(1.15); outline: none; }
@media (prefers-reduced-motion: no-preference) {
  .lageplan__pin { animation: pin-pulse 2.6s ease-in-out infinite; }
}
@keyframes pin-pulse { 0%, 100% { box-shadow: 0 0 0 2px var(--cyan), 0 0 6px rgba(77, 227, 255, .5); } 50% { box-shadow: 0 0 0 2px var(--cyan), 0 0 20px rgba(77, 227, 255, .95); } }
.lageplan__pin--foto { animation-name: pin-pulse-foto; }
@keyframes pin-pulse-foto { 0%, 100% { box-shadow: 0 0 0 2px var(--amber), 0 0 6px rgba(255, 140, 31, .5); } 50% { box-shadow: 0 0 0 2px var(--amber), 0 0 20px rgba(255, 140, 31, .95); } }
@media (max-width: 640px) { .lageplan__pin { width: 18px; height: 18px; } .lageplan__pin::after { font-size: 12px; line-height: 14px; } }
.lageplan__card {
  position: absolute; z-index: 5; width: min(320px, 86%);
  background: rgba(8, 11, 24, .97); border: 1px solid var(--cyan-soft); clip-path: var(--bevel-sm);
  box-shadow: 0 16px 50px rgba(0, 0, 0, .6);
}
.lageplan__card[hidden] { display: none; }
.lageplan__card img { display: block; width: 100%; height: 170px; object-fit: cover; }
.lageplan__card-body { padding: .9rem 1rem 1rem; }
.lageplan__card h3 { font-size: 1.1rem; margin: 0 0 .25rem; }
.lageplan__meta { color: var(--cyan); font-family: var(--font-display); font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; margin: 0 0 .5rem; }
.lageplan__card-body p:last-child { margin: 0; color: var(--ink-dim); font-size: .95rem; }
.lageplan__close {
  position: absolute; top: 6px; right: 6px; z-index: 1; width: 40px; height: 40px;
  background: rgba(5, 6, 15, .8); color: #fff; border: 1px solid var(--line); font-size: 1.3rem; cursor: pointer;
}
@media (max-width: 640px) {
  .lageplan__card { position: static; width: auto; margin-top: .8rem; }
}
.lageplan__legend { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; margin-top: .9rem; color: var(--ink-dim); font-size: .92rem; }
.lageplan__legend span::before { content: ''; display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: .45rem; vertical-align: -1px; }
.lageplan__legend .lg-info::before { background: var(--cyan); }
.lageplan__legend .lg-foto::before { background: var(--amber); }

/* ---------- Eigene Videos (Besuch, WDR) ---------- */
.video-pair { display: grid; gap: 1.5rem; align-items: start; }
@media (min-width: 860px) { .video-pair { grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr); } }
.video-facade--portrait { aspect-ratio: 9 / 16; max-width: 380px; margin-inline: auto; }
.video-facade--wide { aspect-ratio: 16 / 9; }
.video-facade--portrait img, .video-facade--wide img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.video-caption { color: var(--ink-dim); font-size: .95rem; margin-top: .6rem; text-align: center; }
.video-single { max-width: 960px; margin-inline: auto; }

/* Sehr kleine Handys (320 px): Footer-Zeilen umbrechen, lange Button-Texte (Mailadressen) umbrechen */
.site-footer__legal { grid-template-columns: minmax(0, 1fr); }
.site-footer__legal nav { flex-wrap: wrap; row-gap: .5rem; }
.btn { max-width: 100%; text-align: center; overflow-wrap: anywhere; }
@media (max-width: 360px) {
  .site-nav a { white-space: normal; text-align: center; font-size: .95rem; letter-spacing: .03em; }
}
h1, h2, h3 { overflow-wrap: break-word; hyphens: auto; hyphenate-limit-chars: 13 6 6; -webkit-hyphenate-limit-before: 6; -webkit-hyphenate-limit-after: 6; }
@media (max-width: 360px) { .hero h1 span[style] { white-space: normal !important; } }
@media (max-width: 360px) {
  .hud-label { letter-spacing: .12em; overflow-wrap: anywhere; flex-wrap: wrap; }
  .status-chip { white-space: normal; letter-spacing: .08em; }
}

/* Sprach-Hinweis als schwebende Karte unten links: verschiebt keinen Inhalt (kein Layout-Sprung) */
.lang-hint {
  position: fixed; left: 18px; bottom: 18px; z-index: 140;
  width: auto; max-width: min(420px, calc(100vw - 110px));
  justify-content: flex-start; text-align: left;
  padding: .75rem 3rem .75rem 1rem;
  background: rgba(8, 11, 24, .95); border: 1px solid var(--cyan-soft); clip-path: var(--bevel-sm);
  box-shadow: 0 10px 30px rgba(0, 0, 0, .5);
}
@media (max-width: 1023px) { .lang-hint { left: 12px; bottom: 86px; } }

/* ---------- Kontakt: Karte als direkter Google-Maps-Link ---------- */
.map-link {
  position: relative; display: grid; justify-items: center; align-content: center; gap: .55rem;
  min-height: 300px; margin-top: 1.2rem; padding: 2rem 1.5rem; text-align: center;
  color: var(--ink); text-decoration: none; border: 1px solid var(--line);
  background:
    radial-gradient(circle at 50% 42%, rgba(255, 150, 40, .16), transparent 42%),
    repeating-linear-gradient(0deg, rgba(120, 200, 255, .07) 0 1px, transparent 1px 38px),
    repeating-linear-gradient(90deg, rgba(120, 200, 255, .07) 0 1px, transparent 1px 38px),
    rgba(10, 14, 31, .55);
  transition: border-color .2s ease, box-shadow .2s ease;
}
.map-link:hover, .map-link:focus-visible { border-color: var(--amber); box-shadow: 0 0 0 1px var(--amber), 0 0 28px rgba(255, 150, 40, .18); }
.map-link .map-coords { margin: 0; }
.map-link__pin { width: 46px; height: 46px; color: var(--amber); filter: drop-shadow(0 0 10px rgba(255, 150, 40, .55)); }
.map-link__addr { margin: 0; color: var(--ink-dim); }
.map-link .btn { pointer-events: none; margin-top: .4rem; }
.map-link__note { margin: .2rem 0 0; }

/* Bildkarten in Kapitel 03 der Ausstellung (neue Fotos 06.11.) */
.card > .card__media { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; margin: 0 0 1rem; border: 1px solid var(--line-soft); }

/* Galerien ohne leere Plätze auf breiten Bildschirmen:
   6 Bilder als 3 x 2, 7 Bilder mit breitem ersten Bild als 4 x 2, 3 Bilder als 3 x 1 */
@media (min-width: 1100px) {
  .gallery:not(.gallery--compact) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .gallery:has(> :nth-child(6):last-child),
  .gallery:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gallery:has(> :nth-child(7):last-child) > :first-child { grid-column: span 2; aspect-ratio: auto; position: relative; }
  .gallery:has(> :nth-child(7):last-child) > :first-child img { position: absolute; inset: 0; } /* Höhe kommt von der Reihe */
}
@media (min-width: 1100px) {
  .gallery--compact:has(> :nth-child(8):last-child) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ===== QA-Runde 07.11.2026 (Desktop und Handy) ===== */
@media (min-width: 768px) { h1, h2, h3 { hyphens: manual; } }
.tile__body h3, .cta-final h2 { hyphens: manual; }
a[href^="tel:"] { white-space: nowrap; }
figure.card { margin: 0; }
.card-grid + .note-cold, .card-grid + .form-note { margin-top: 1.3rem; }
.grid-2.buchung-grid, .grid-2.anfrage-grid { align-items: start; }
@media (min-width: 640px) { .form-grid--2 { align-items: end; } }
/* SnoopIT-Video: Play-Knopf nicht über Kennys Gesicht */
.video-facade--portrait .video-facade__play { align-self: start; margin-top: 18%; }
/* Zentrierte Abschluss-Kicker: Zierstrich auf dem Handy weg, sonst hängt er links */
@media (max-width: 600px) {
  .cta-final .hud-label { text-align: center; letter-spacing: .2em; }
  .cta-final .hud-label::before { display: none; }
}
@media (max-width: 480px) { .hud-label { letter-spacing: .2em; } }
/* Erster Bildschirm Handy: Sticky-Leiste und Kenny erst, wenn die Hero-Knöpfe weg sind */
@media (max-width: 1023px) {
  body.hero-cta-visible .sticky-cta { display: none; }
  body.hero-cta-visible .kenny-launcher { display: none; }
}
/* Desktop: Kenny beim Laden nur als Symbol, Text erst nach dem ersten Scrollen */
@media (min-width: 1024px) {
  body.hero-cta-visible .kenny-launcher { padding-right: .55rem; }
  body.hero-cta-visible .kenny-launcher span { display: none; }
}
/* Galerien auf dem Handy zweispaltig statt meterlanger Einzelbilder */
@media (max-width: 699px) {
  .gallery, .gallery--square { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem; }
}
@media (max-width: 859px) {
  .gallery--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
  #modelle .gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; }
}
@media (min-width: 700px) {
  .gallery:not(.gallery--compact):has(> :nth-child(6):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 860px) {
  .gallery--compact:has(> :nth-child(8):last-child) { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .gallery:has(> :nth-child(3):last-child) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
/* Missionsdaten der Ausstellung als 2 x 2 */
@media (min-width: 900px) { .card-grid--2x2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* Lageplan auf dem Handy waagerecht wischbar, damit die Beschriftung lesbar bleibt */
@media (max-width: 640px) {
  .lageplan { overflow-x: auto; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
  .lageplan__stage { min-width: 720px; }
}
.lageplan__swipe { display: none; color: var(--ink-dim); font-size: .9rem; margin: .6rem 0 0; }
@media (max-width: 640px) { .lageplan__swipe { display: block; } }
/* Führer: leerer Rahmen nicht bildschirmhoch */
.guide-frame:has(#guide-empty) { height: auto; min-height: 240px; }
/* Kontakt-Hero: Einleitung über dem hellen Fassadenschild lesbar */
body[data-page="kontakt"] .hero--sub .lead { color: var(--ink); text-shadow: 0 1px 2px rgba(5, 6, 15, .9), 0 0 18px rgba(5, 6, 15, .85); }
/* Führer-Sprachknöpfe in der Ausstellung gleichmäßig (QA 07.11.) */
#guide .pick-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
#guide .pick-grid .btn { width: 100%; }
/* Kennzahlen auf dem Handy als 2 x 2 statt vier bildschirmbreiter Kacheln */
@media (max-width: 599px) {
  .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
  .stats .stat { padding: 1.2rem .5rem; }
  .stats .stat__value { font-size: min(1.8rem, 5.8vw); }
  .stats .stat p, .stats .stat__label { font-size: .85rem; }
}

/* ===== QA-Nachkontrolle 07.11.2026 ===== */
.nowrap { white-space: nowrap; }
.btn > .btn__label { display: block; } /* Text plus geschützter Teil bleibt ein Flex-Element */
@media (max-width: 480px) { .hud-label { letter-spacing: .14em; } }
@media (max-width: 480px) { #guide .pick-grid .btn { padding-inline: .5rem; letter-spacing: .06em; overflow-wrap: normal; } }
@media (max-width: 380px) { #guide .pick-grid { grid-template-columns: 1fr; } }
@media (max-width: 699px) { .gallery:not(:has(> :nth-child(3):last-child)) > :last-child:nth-child(odd) { grid-column: 1 / -1; aspect-ratio: 2 / 1; } }
@media (max-width: 1023px) { .hero--sub { padding-top: 2rem; } .hero__actions { margin-top: 1.4rem; } .hero__status { margin-top: 1rem; } }
.partner-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: .8rem; }
.partner-chip { min-height: 64px; }
.partner-chip img { height: auto; max-height: 40px; max-width: 100%; }
input[type="text"], input[type="email"], input[type="tel"], input[type="date"], input[type="number"], select { box-sizing: border-box; height: 3.4rem; }
/* Sehr schmale Handys: lange Panel-Titel dürfen trennen, Knöpfe etwas kompakter */
@media (max-width: 400px) {
  .hud-panel h3, .tile__body h3 { hyphens: auto; }
  .btn { padding-inline: .95rem; letter-spacing: .08em; }
}
@media (max-width: 420px) { #guide .pick-grid { grid-template-columns: 1fr; } }

/* ===== Feedback Thomas 12.11.2026 ===== */
@media (min-width: 860px) { .grid-2--wide-media.grid-2--media-right { grid-template-columns: 1fr 1.15fr; } }
/* Partnerlogos hell auf dunklem Grund */
.partner-row { display: flex; flex-wrap: wrap; align-items: center; gap: 1.1rem 1.8rem; }
.partner-chip { background: none; border: 0; clip-path: none; padding: 0; min-height: 0; opacity: .88; }
.partner-chip:hover { opacity: 1; }
.partner-chip img { height: 46px; max-height: none; width: auto; max-width: 210px; }
.partner-chip img[src*="steinedorf"] { height: 76px; }
/* Vermietung: hohe Bilder für XXL-Exponate */
.card > .card__media--tall { aspect-ratio: 4 / 5; object-position: 50% 30%; }
/* Ticketseite: Hinweis auf die JGA-Tour */
.jga-hint { margin-top: 1.4rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .8rem 1.4rem; }
.jga-hint p { margin: 0; flex: 1 1 26rem; color: var(--ink-dim); }
/* Lageplan: groß öffnen, Stationen mit Fotos */
.lageplan-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem 1.4rem; margin-top: .9rem; }
.lageplan-tools .lageplan__legend { margin-top: 0; }
.lageplan__stage { cursor: zoom-in; }
.lageplan-dialog .lageplan__stage { cursor: default; }
.lageplan-dialog {
  width: 100vw; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0;
  background: rgba(5, 6, 15, .98); color: var(--ink); overflow: hidden;
}
.lageplan-dialog::backdrop { background: rgba(3, 4, 10, .9); }
.lageplan-dialog__bar {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .7rem 1rem; border-bottom: 1px solid var(--line); background: rgba(8, 11, 24, .98);
}
.lageplan-dialog__bar strong { font-family: var(--font-display); letter-spacing: .08em; text-transform: uppercase; font-size: .95rem; }
.lageplan-dialog__close { width: 44px; height: 44px; background: transparent; color: #fff; border: 1px solid var(--line); font-size: 1.5rem; cursor: pointer; }
.lageplan-dialog__body { height: calc(100dvh - 62px); overflow: auto; padding: 1rem; -webkit-overflow-scrolling: touch; }
.lageplan-dialog .lageplan { width: min(100%, calc((100dvh - 110px) * 1.405)); margin: 0 auto; overflow: visible; }
.lageplan-dialog .lageplan__card img { height: 220px; }
@media (max-width: 900px) {
  .lageplan-dialog .lageplan { width: auto; overflow-x: auto; }
  .lageplan-dialog .lageplan__stage { min-width: 880px; }
  .lageplan-dialog .lageplan__card { position: fixed; left: 50%; right: auto !important; top: auto !important; bottom: 1rem; transform: translateX(-50%); width: min(420px, calc(100vw - 2rem)); margin: 0; }
  .lageplan-dialog .lageplan__card img { height: 180px; }
}
.lageplan__stations { margin-top: 2.2rem; }
.lageplan__stations h3 { font-size: 1.05rem; margin: 0 0 .9rem; }
.lageplan__stations-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: .8rem; }
.lageplan__station {
  display: block; padding: 0; text-align: left; cursor: pointer; color: var(--ink);
  background: rgba(8, 11, 24, .9); border: 1px solid var(--line); clip-path: var(--bevel-sm); overflow: hidden;
  transition: border-color .2s ease, transform .2s ease;
}
.lageplan__station:hover, .lageplan__station:focus-visible { border-color: var(--cyan); transform: translateY(-2px); outline: none; }
.lageplan__station img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.lageplan__station span { display: flex; align-items: center; gap: .45rem; padding: .55rem .7rem .65rem; font-size: .92rem; line-height: 1.3; }
.lageplan__station span::before { content: ''; flex: none; width: 9px; height: 9px; border-radius: 50%; background: var(--cyan); }
.lageplan__station--foto span::before { background: var(--amber); }
@media (max-width: 640px) {
  .lageplan__stations-grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: .7rem; padding-bottom: .5rem; -webkit-overflow-scrolling: touch; }
  .lageplan__station { flex: 0 0 62%; scroll-snap-align: start; }
}
.tile__cta--info { color: var(--ink-dim); }
.tile__cta--info::after { content: none; }
/* Hall of Fame: drei kleinere Kostümfotos unter dem Hauptbild (12.11.2026) */
.gallery.gallery--hof { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .6rem; margin-top: .7rem; }
.gallery--hof a { aspect-ratio: 3 / 4; }
.gallery--hof > :last-child:nth-child(odd) { grid-column: auto; aspect-ratio: 3 / 4; }
section[aria-labelledby="k6-h"] .grid-2 { align-items: start; }
/* Lageplan-Karten (13.11.2026, Feedback Thomas): Fotos ganz zeigen statt beschneiden,
   auf dem Handy im Vollbild-Plan als Leiste am unteren Rand */
.lageplan__card img, .lageplan-dialog .lageplan__card img {
  width: 100%; height: auto; max-height: 240px; object-fit: contain; background: #05060f;
}
.lageplan-dialog > .lageplan__card--sheet {
  position: fixed; left: 0 !important; right: 0 !important; bottom: 0; top: auto !important; z-index: 10;
  width: auto; max-height: 72dvh; overflow-y: auto; overscroll-behavior: contain;
  margin: 0; transform: none; clip-path: none; border-width: 1px 0 0; background: #080b18;
  padding-bottom: env(safe-area-inset-bottom, 0);
}
.lageplan-dialog > .lageplan__card--sheet img { max-height: min(34dvh, 340px); }
.lageplan-dialog > .lageplan__card--sheet .lageplan__card-body { padding: 1rem 1.1rem 1.2rem; }
.lageplan-dialog > .lageplan__card--sheet .lageplan__close { position: sticky; display: block; top: 8px; margin: 8px 8px -48px auto; }
/* Kenny als echte Grafik (13.11.2026): beim Hüpfen winkt er kurz */
.kenny-launcher .kenny-wave { display: none; }
.kenny-launcher.is-waving .kenny-wave { display: block; }
.kenny-launcher.is-waving .kenny-front { display: none; }
.kenny-launcher .kenny-svg, .kenny-head__av, .kenny-msg__av, .kenny-walk { filter: drop-shadow(0 0 6px rgba(120, 200, 255, .35)); }
/* Geburtstag: jede Prüfung mit Foto (13.11.2026, neue Fotos von Thomas) */
.timeline--media { max-width: 1040px; }
.timeline--media .timeline__step { display: grid; grid-template-columns: minmax(0, 1fr) 280px; grid-template-rows: auto 1fr; column-gap: 2rem; align-items: start; }
.timeline--media .timeline__step > h3, .timeline--media .timeline__step > p { grid-column: 1; }
.timeline__img {
  grid-column: 2; grid-row: 1 / span 2; display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover;
  border: 1px solid var(--line); clip-path: var(--bevel-sm); background: #0a0e1f;
}
@media (max-width: 759px) {
  .timeline--media .timeline__step { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
  .timeline__img { grid-column: 1; grid-row: auto; margin-top: .9rem; max-width: 460px; }
}
/* Kenny mit Lichtschwert neben den Prüfungen (schwarzer Videogrund verschwindet per screen) */
section[aria-labelledby="missionen-h"] > .wrap { position: relative; }
.kenny-jedi { position: absolute; right: 3%; top: -1.5rem; width: 200px; height: auto; mix-blend-mode: screen; pointer-events: none; }
@media (max-width: 1099px), (prefers-reduced-motion: reduce) { .kenny-jedi { display: none; } }
/* QA 13.11.: sichtbarer Fokus auf den Lageplan-Punkten */
.lageplan__pin:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
/* QA 13.11.: Hero-Text sofort sichtbar (kein Aufblitzen und Wiedereinblenden beim Laden) */
.js .hero [data-reveal] { opacity: 1; transform: none; }

/* ===== QA-Layout 13.11.2026 (Audit vor dem Livegang) ===== */
/* Hero-Einleitung auf Fotos lesbar (wie Kontaktseite) */
.hero .lead { color: var(--ink); text-shadow: 0 1px 2px rgba(5, 6, 15, .9), 0 0 18px rgba(5, 6, 15, .85); }
.hero__media::after {
  background:
    linear-gradient(180deg, rgba(5, 6, 15, .78) 0%, rgba(5, 6, 15, .3) 34%, rgba(5, 6, 15, .45) 62%, var(--bg-0) 100%),
    radial-gradient(90% 60% at 50% 100%, rgba(10, 14, 31, .5), transparent);
}
/* H1 nur an gesetzten Stellen trennen */
h1 { hyphens: manual; -webkit-hyphens: manual; }
/* Lange Wörter in Kennzahlen, Stationen und Panels trennen statt abschneiden */
.stat__label, .lageplan__station span, .hud-panel h3 { hyphens: auto; -webkit-hyphens: auto; overflow-wrap: break-word; }
/* Keine einzelne Kachel allein in der letzten Zeile */
@media (min-width: 700px) and (max-width: 1279px) { .card-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 600px) and (max-width: 959px) {
  .card-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .card-grid--3 > :last-child:nth-child(odd) { grid-column: 1 / -1; justify-self: center; width: calc(50% - .65rem); }
  .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 641px) {
  .lageplan__stations-grid { display: flex; flex-wrap: wrap; justify-content: center; }
  .lageplan__station { flex: 0 1 180px; }
}
/* Führer-Sprachknöpfe: Wort nicht mitten durchbrechen */
#guide .pick-grid .btn { overflow-wrap: normal; padding-inline: .8rem; letter-spacing: .08em; }
@media (max-width: 520px) { #guide .pick-grid { grid-template-columns: 1fr; } }
/* HUD-Label: Linie bleibt neben dem Text */
@media (max-width: 360px) { .hud-label { flex-wrap: nowrap; } }
/* Mobil: Footer-Ende nicht unter Kenny und Sprachhinweis */
@media (max-width: 1023px) { .site-footer { padding-bottom: calc(110px + env(safe-area-inset-bottom, 0px)); } }
/* Kenny-Chat: deckend, auf kleinen Handys vollständig sichtbar */
.kenny-panel { background: #080b18; }
.kenny-log { min-height: 0; }
.kenny-form, .kenny-note, .kenny-head { flex: none; }
.kenny-chips { flex: none; flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; padding-bottom: .7rem; }
.kenny-chips__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } /* bleibt für Screenreader */
.kenny-chip { flex: none; white-space: nowrap; }
@media (max-width: 1023px) { .kenny-panel { max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); } }
/* Lageplan-Leiste: feste Bildhöhe, damit der Abstand sofort stimmt; kurze Handys kleiner */
.lageplan-dialog > .lageplan__card--sheet img { height: min(34dvh, 340px); max-height: none; }
@media (max-height: 700px) { .lageplan-dialog > .lageplan__card--sheet img { height: 26dvh; } }
/* Lightbox: Vor/Zurück (Knöpfe erzeugt main.js, QA 13.11.) */
.lightbox__nav {
  position: fixed; top: 50%; transform: translateY(-50%); z-index: 1;
  display: grid; place-items: center;
  width: 48px; height: 64px; padding: 0;
  background: var(--glass-solid); color: var(--ink); border: 1px solid var(--line);
  font-size: 2rem; line-height: 1; cursor: pointer; clip-path: var(--bevel-sm);
}
.lightbox__nav--prev { left: 18px; }
.lightbox__nav--next { right: 18px; }
.lightbox__nav[hidden] { display: none; }
.lightbox__nav:hover, .lightbox__nav:focus-visible,
.lightbox__close:hover, .lightbox__close:focus-visible { color: var(--cyan); border-color: var(--cyan); }
@media (max-width: 640px) {
  .lightbox__nav { width: 40px; height: 56px; font-size: 1.7rem; background: rgba(5, 6, 15, .72); }
  .lightbox__nav--prev { left: 6px; }
  .lightbox__nav--next { right: 6px; }
}
/* Kenny: auf dem Handy bekommt das Panel den Fokus statt des Eingabefelds */
.kenny-panel:focus { outline: none; }
/* Kenny am Desktop: Fragen umbrechen statt waagerecht wischen (Maus) */
@media (min-width: 1024px) and (min-height: 760px) { .kenny-chips { flex-wrap: wrap; overflow-x: visible; } }

/* ===== Go-live 13.11.2026 (Sichtprüfung aller Seiten) ===== */
/* Das ß von Orbitron sieht aus wie ein „B“ (lebensgroB, MaBstab): ß/ẞ aus Inter nehmen */
@font-face {
  font-family: 'Orbitron';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/assets/fonts/inter-latin.woff2') format('woff2');
  unicode-range: U+00DF, U+1E9E;
}
/* Formularfelder deckend, damit nichts durchschimmert; Kalender-Symbol hell */
input[type="text"], input[type="email"], input[type="tel"], input[type="date"], input[type="number"], select, textarea {
  background-color: #08101c; color-scheme: dark;
}
input[type="date"]:required:invalid:not(:focus) { color: var(--ink-dim); }
/* Ausgewogene Umbrüche: kein einzelnes Wort allein in der letzten Zeile */
h1, h2, h3, .hud-label, .btn, .stat__label, .status-chip, .lageplan__station span { text-wrap: balance; }
p, li, dd, .lead, .form-note { text-wrap: pretty; }
/* Lageplan-Vorschau auf dem Handy: ganzer Plan, Punkte erst im Vollbild */
@media (max-width: 640px) {
  .lageplan:not(.lageplan-dialog .lageplan) { overflow: visible; }
  .lageplan:not(.lageplan-dialog .lageplan) .lageplan__stage { min-width: 0; }
  .lageplan:not(.lageplan-dialog .lageplan) .lageplan__pin { display: none; }
}
/* Go-live 13.11. b: Sprachknöpfe des Führers brechen in schmalen Spalten nicht mehr aus */
#guide .pick-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); }
#guide .pick-grid .btn { min-width: 0; letter-spacing: .06em; }

/* ===== Consent DSGVO 13.11.2026 ===== */
/* Hintergrund gesperrt, solange keine Wahl getroffen ist */
html.consent-lock, html.consent-lock body { overflow: hidden !important; overscroll-behavior: none; }
html.consent-lock body { touch-action: none; }
.consent { max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); overflow-y: auto; overscroll-behavior: contain; touch-action: pan-y; }
.consent[open] { display: block; }
/* Knöpfe: gleich gewichtet, nie abgeschnitten */
.consent__actions { grid-template-columns: repeat(auto-fit, minmax(min(100%, 9.5rem), 1fr)); }
.consent__actions .btn { white-space: normal; text-wrap: balance; letter-spacing: .06em; line-height: 1.25; min-height: 46px; padding: .6rem .5rem; overflow-wrap: normal; }
.consent__legal { margin: .9rem 0 0; font-size: .82rem; color: var(--ink-dim); text-align: center; }
.consent__legal a { color: var(--ink-dim); text-decoration: underline; text-underline-offset: 2px; }
.consent__legal a:hover, .consent__legal a:focus-visible { color: var(--cyan); }
/* Auf Impressum/Datenschutz: nicht blockierend unten eingeblendet */
.consent--inline { position: fixed; inset: auto 0 12px; margin: 0 auto; z-index: 300; }
