/* ==========================================================================
   Komponenten — apr training (Look 2.0)
   Mobile-first: Basis-Regeln gelten für Mobilgeräte, min-width Media Queries
   schalten Desktop-Verbesserungen dazu. Nutzt ausschließlich Tokens aus
   tokens.css (siehe Variablen --color-*, --glass-*, --glow-*, --space-*,
   --fs-*, --radius-*).

   Die fünf Stil-Entscheidungen von Look 2.0, damit sie beim Ändern nicht
   versehentlich zurückgedreht werden:

   1. Aurora  — fixe Ebene mit drei diagonalen Teal-Lichtbahnen direkt nach
                <body>, dazu Hero-Kuppel und Fuß-Glow im body-Hintergrund.
                Kein Punkt-Glow, keine Flecken.
   2. Glas    — jede Box ist dieselbe Milchglas-Linse: --glass-bg,
                --glass-line, --glass-shadow, Blur 26px. Kein Verlauf,
                kein Box-Glow. Hervorgehobene Karten nur mit Teal-Rand.
   3. Header  — Pille, max 1260px, 17px Polster, Teal-Rand, Leuchtlinie an
                der Unterkante, Teal-Schatten nach unten.
   4. Buttons — durchgehend Ghost-Teal: Tönung, Teal-Rand, Teal-Text; erst
                im Hover füllt die Fläche auf und ein dezenter Glow kommt
                dazu. Keine gefüllten Teal-Flächen mehr.
   5. Icons   — freie Linien-SVGs (Strich 1.8, currentColor) mit Neon-
                Doppel-Drop-Shadow. Keine Kästchen, keine Emojis.
   ========================================================================== */

/* ---------- Reset & Basis ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-sans);
  /* Kuppel über dem Hero + Glow am Fuß. Muss auf <body> stehen: ein
     Wrapper mit eigenem Hintergrund würde die Aurora darunter zudecken. */
  background: var(--bg-seite);
  color: var(--color-text);
  line-height: 1.6;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--color-teal-400); text-decoration: none; }
a:hover { color: var(--color-teal-500); }
img { max-width: 100%; display: block; }

/* ---------- Aurora ----------
   Drei weiche Lichtbahnen, diagonal über die ganze Seite. Fix positioniert,
   damit sie beim Scrollen stehen bleiben und der Inhalt darüber hinweg
   läuft — das ist der Unterschied zu einem mitlaufenden Verlauf.
   z-index: -1 hält sie hinter allem, was im normalen Fluss liegt; darum
   darf kein Seiten-Wrapper einen eigenen deckenden Hintergrund haben.
   Auf Mobilgeräten kostet ein 100px-Blur über die halbe Seite spürbar
   Leistung — dort sind alle drei Bahnen deutlich schwächer geblurrt. */
.aurora { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; }
.aurora i { position: absolute; display: block; }
.aurora .a1 {
  top: 4%; left: -45%; width: 160%; height: 48%;
  background: linear-gradient(100deg, transparent 10%, rgba(32, 173, 172, 0.34) 38%, rgba(94, 207, 206, 0.16) 56%, transparent 80%);
  transform: rotate(-22deg); filter: blur(70px);
}
.aurora .a2 {
  top: 32%; left: -35%; width: 150%; height: 42%;
  background: linear-gradient(100deg, transparent 14%, rgba(32, 173, 172, 0.2) 44%, rgba(94, 207, 206, 0.08) 60%, transparent 78%);
  transform: rotate(-17deg); filter: blur(90px);
}
.aurora .a3 {
  bottom: -14%; right: -40%; width: 130%; height: 44%;
  background: linear-gradient(80deg, transparent 18%, rgba(32, 173, 172, 0.16) 50%, transparent 82%);
  transform: rotate(-24deg); filter: blur(100px);
}
@media (max-width: 760px) {
  .aurora .a1 { filter: blur(46px); }
  .aurora .a2 { filter: blur(56px); }
  .aurora .a3 { filter: blur(60px); }
}

/* Der Seiten-Wrapper trägt keinen eigenen Hintergrund mehr — er würde die
   Aurora verdecken. .page--herofull und .page--preise bleiben als Haken für
   Seiten mit vollflächigem Hero bestehen (siehe Page-Hero weiter unten). */
.page { background: none; position: relative; }

/* ---------- Glas ----------
   Eine Oberfläche für alle Boxen. Wer eine neue Karte baut, nimmt diese
   Klasse (oder trägt den Selektor hier ein) und erfindet nichts dazu —
   kein zusätzlicher Verlauf, kein Glow um die Box. */
.glas,
.stats-bar__grid, .program-card, .team-card, .quote-card, .point-item,
.result-card, .step-card, .testi-card, .contact-form, .service-card,
.showcase-card, .faq-item, .promo-banner, .pricing-card, .info-box,
.compare-wrap, .stat-panel, .feature-card, .package-card, .legal-card,
.option-card, .scale-btn, .kurs-karte, .vertrag-summary, .vertrag-mandat,
.kuendigung-beleg, .kurs-danke__box, .kurs-daten, .kurs-finder,
.analyse-block, .analyse-cta,
.analyse-video, .node, .ebook-bridge, .quiz-result-teaser, .metric,
.statbar__box, .final-cta-card, .contact-panel {
  background: var(--glass-bg);
  border: 1px solid var(--glass-line);
  box-shadow: var(--glass-shadow);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
}
@media (max-width: 760px) {
  .glas,
  .stats-bar__grid, .program-card, .team-card, .quote-card, .point-item,
  .result-card, .step-card, .testi-card, .contact-form, .service-card,
  .showcase-card, .faq-item, .promo-banner, .pricing-card, .info-box,
  .compare-wrap, .stat-panel, .feature-card, .package-card, .legal-card,
  .option-card, .scale-btn, .kurs-karte, .vertrag-summary, .vertrag-mandat,
  .kuendigung-beleg, .kurs-danke__box, .kurs-daten, .kurs-finder,
  .analyse-block, .analyse-cta,
  .analyse-video, .node, .ebook-bridge, .quiz-result-teaser, .metric,
  .statbar__box, .final-cta-card, .contact-panel {
    backdrop-filter: var(--glass-blur-mobil);
    -webkit-backdrop-filter: var(--glass-blur-mobil);
  }
}

/* ---------- Bodenglow ----------
   Ausnahme zur Regel „Boxen leuchten nie": eine haarfeine Lichtlinie auf der
   Unterkante und darunter ein weicher Schein, der die Karte vom Grund abhebt.
   Der Schein liegt per z-index hinter dem Karteninhalt und wird von
   overflow:hidden auf die Karte beschnitten — er tritt also nicht seitlich
   aus. Nur für Kartenreihen gedacht, die als Block gelesen werden sollen
   (Corporate: Angebote, Kennzahlen). Nicht auf einzelne Karten setzen. */
.bodenglow { position: relative; overflow: hidden; isolation: isolate; }
.bodenglow::before {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(94, 207, 206, 0.75), transparent);
}
.bodenglow::after {
  content: ''; position: absolute; left: 8%; right: 8%; bottom: -46px; height: 110px; z-index: -1;
  background: radial-gradient(60% 100% at 50% 100%, rgba(94, 207, 206, 0.5), rgba(32, 173, 172, 0.22) 45%, transparent 75%);
  filter: blur(14px);
}

/* ---------- Icons ----------
   Konvention: Icons sind freie Linien-SVGs, nie Emojis und nie in einem
   Kästchen. Jedes Icon nutzt dasselbe Raster (viewBox 0 0 24 24), dieselbe
   Strichstärke (1.8) und runde Enden. Die Farbe kommt über
   stroke="currentColor" — deshalb setzen die Icon-Felder hier Türkis. Der
   Neon-Doppelschatten (--glow-icon) ersetzt die frühere Kästchen-Fläche:
   das Icon leuchtet, statt in einem Rahmen zu sitzen. */
.service-card__icon,
.showcase-card__icon,
.info-box__icon,
.right-icon,
.notice-icon,
.point-icon,
.contact-item__icon,
.feature-card__icon,
.program-card__icon,
.pricing-card__icon,
.step-icon {
  display: flex; align-items: center; justify-content: center;
  background: none; border: 0; border-radius: 0; padding: 0;
  color: var(--color-teal-400);
  filter: var(--glow-icon);
}
.service-card__icon svg,
.showcase-card__icon svg,
.info-box__icon svg,
.right-icon svg,
.notice-icon svg,
.point-icon svg,
.contact-item__icon svg,
.feature-card__icon svg,
.program-card__icon svg,
.pricing-card__icon svg,
.step-icon svg { display: block; width: 24px; height: 24px; }

.service-card__icon, .showcase-card__icon, .feature-card__icon,
.program-card__icon, .pricing-card__icon, .info-box__icon { width: 38px; height: 38px; flex-shrink: 0; }
.program-card__icon svg, .pricing-card__icon svg, .info-box__icon svg { width: 22px; height: 22px; }
.right-icon, .point-icon, .contact-item__icon { width: 36px; height: 36px; flex-shrink: 0; }
/* In Hinweiszeilen steht das Icon neben Fließtext: nicht schrumpfen und
   an der ersten Zeile ausrichten, nicht an der Blockmitte. */
.notice-icon { width: auto; height: auto; flex-shrink: 0; margin-top: 2px; }
.notice-icon svg { width: 18px; height: 18px; }

/* ---------- Topbar ---------- */
.topbar {
  background: none;
  color: var(--color-text-45);
  text-align: center;
  font-size: var(--fs-sm);
  letter-spacing: normal;
  text-transform: none;
  padding: var(--space-3) var(--space-4);
}
.topbar b { color: var(--color-teal-400); font-weight: var(--fw-semibold); }

/* ---------- Navbar (Header D) ----------
   Eine Pille, die auf dem Inhalt schwebt: halbtransparenter Grund mit
   Blur, Teal-Rand bei 22 %, darunter ein Teal-Schatten und an der
   Unterkante eine Leuchtlinie (::after), die zu beiden Seiten ausläuft. */
.navbar-wrap { padding: var(--space-4) var(--space-4) 0; position: sticky; top: 0; z-index: 100; }
.navbar {
  position: relative;
  max-width: 1260px; margin: 0 auto;
  background: var(--color-surface-strong);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border: 1px solid var(--color-linie-header);
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-header);
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);
  padding: 17px 18px 17px 28px;
}
.navbar::after {
  content: ''; position: absolute; left: 13%; right: 13%; bottom: -1px; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(94, 207, 206, 0.55), transparent);
}
/* flex-shrink: 0 — ohne das quetscht die nowrap-CTA das Logo auf schmalen
   Viewports (<=430px) auf 0px Breite, es war dort schlicht unsichtbar. */
.nav-logo { display: flex; align-items: center; flex-shrink: 0; }
.nav-logo img { height: 34px; width: auto; }
/* Header D ist eine schlanke Pille: die Bildmarke sitzt darin als Zeichen
   auf Zeilenhöhe. Ein 70px-Logo wie im alten Header würde die Leiste auf
   über 100px aufblähen und die Pillenform zerstören. */
.nav-logo--mark img { height: 38px; }
.nav-links {
  display: none;
  list-style: none;
  align-items: center;
  gap: 2px;
  font-size: 13.5px;
  font-weight: var(--fw-medium);
  letter-spacing: normal;
  text-transform: none;
}
.nav-links a { color: var(--color-text-55); padding: 8px 13px; border-radius: 9px; display: block; }
.nav-links a:hover { color: var(--color-white); background: rgba(255, 255, 255, 0.05); }
.nav-links a.active { color: var(--color-teal-400); }
.nav-cta {
  display: inline-flex; align-items: center; gap: 7px;
  background: var(--color-surface-tint);
  border: 1px solid var(--color-linie-teal);
  color: var(--color-teal-400) !important;
  padding: 10px 20px;
  border-radius: var(--radius-pill);
  font-size: 13px;
  font-weight: var(--fw-bold);
  letter-spacing: normal;
  text-transform: none;
  white-space: nowrap;
  transition: all 0.15s ease;
}
.nav-cta:hover {
  background: var(--color-surface-tint-stark);
  color: var(--color-white) !important;
  box-shadow: var(--glow-taste);
}
.hamburger {
  display: flex; flex-direction: column; gap: 5px;
  background: none; border: none; cursor: pointer; padding: 6px;
}
.hamburger span { display: block; width: 22px; height: 2px; background: var(--color-white); border-radius: 2px; transition: 0.3s; }
/* Dropdown hängt an der Navbar statt an einem festen Pixelwert —
   so rutscht es automatisch mit, wenn die Leiste höher wird. */
.nav-links.open {
  display: grid; gap: 4px;
  position: absolute; top: calc(100% + 10px); left: 8px; right: 8px;
  background: rgba(10, 14, 14, 0.97);
  border: 1px solid rgba(94, 207, 206, 0.25);
  border-radius: var(--radius-lg);
  padding: 12px 16px 16px;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5);
  z-index: 99;
}
.nav-links.open a { padding: 11px 12px; font-size: 15px; }

/* Schmale Phones: Logo, CTA und Hamburger müssen nebeneinander passen. */
@media (max-width: 559px) {
  .navbar { gap: var(--space-2); padding: 13px 14px 13px 18px; }
  .nav-cta { font-size: var(--fs-xs); padding: 9px 14px; }
}
/* Im Hamburger-Layout sitzt die CTA sonst per space-between mittig in der
   Leiste — auf breiten Viewports (bis 1023px) wirkt das verloren.
   margin-left: auto schiebt sie an den rechten Rand neben das Menü-Icon. */
@media (max-width: 1023px) {
  .nav-cta { margin-left: auto; }
}
@media (max-width: 359px) {
  .navbar { padding-left: var(--space-3); }
  .nav-cta { padding: 9px 12px; }
}

/* Desktop-Navigation erst ab 1024px — darunter bleibt das Hamburger-Layout,
   das Logo und CTA sauber nebeneinander zeigt. */
@media (min-width: 1024px) {
  .nav-links { display: flex; }
  .hamburger { display: none; }
}

/* ---------- Buttons (Ghost-Teal) ----------
   Alle Primär-Buttons sind getönt statt gefüllt: Fläche rgba(teal,.1),
   Rand rgba(teal,.5), Text in Teal-hell. Erst der Hover füllt auf .2 und
   legt einen dezenten Glow dazu. Gefüllte Teal-Flächen mit starkem Schein
   gibt es in Look 2.0 nicht mehr. */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  padding: 13px 24px;
  border-radius: var(--radius-sm);
  font-weight: var(--fw-bold);
  font-size: var(--fs-base);
  letter-spacing: normal;
  text-transform: none;
  background: none;
  border: 1px solid transparent;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.15s ease;
}
.btn--primary {
  background: var(--color-surface-tint);
  color: var(--color-teal-400);
  border-color: var(--color-linie-teal);
}
.btn--primary:hover {
  background: var(--color-surface-tint-stark);
  color: var(--color-white);
  box-shadow: var(--glow-taste);
}
.btn--outline {
  background: var(--color-surface-feld);
  border-color: var(--color-border);
  color: var(--color-white);
}
.btn--outline:hover { border-color: var(--color-linie-teal); color: var(--color-white); }
/* Karten-CTA — der Button am Fuß einer Service-, Programm-, Preis- oder
   Tarifkarte. Regel für alle Seiten: so ein CTA ist immer ein echter Button
   über die volle Kartenbreite, nie ein Textlink. Neutral getönt, damit die
   Karten ruhig nebeneinander stehen; das Ghost-Teal (.btn--primary) trägt
   nur die hervorgehobene Karte.
   Entwurf: .price .btn / .price.featured .btn in index.html. */
.btn--karte {
  background: var(--color-surface-karte);
  border-color: var(--color-border);
  color: var(--color-white);
  box-shadow: none;
}
.btn--karte:hover { border-color: var(--color-linie-teal); }
.btn--block { width: 100%; }
.btn--sm { padding: 10px 18px; font-size: var(--fs-sm); }
.btn:disabled { opacity: 0.4; cursor: not-allowed; box-shadow: none; }

/* ---------- Hero ---------- */
.hero {
  padding: var(--space-11) var(--space-5) var(--space-9);
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: var(--space-6);
}
.hero__title {
  font-size: var(--fs-4xl); line-height: 1.05; font-weight: var(--fw-extrabold);
  letter-spacing: -0.03em; text-transform: none; max-width: 18ch;
}
/* Titel bekommen keinen Schein — nur der Teal-Teil einen Hauch. */
.hero__title em { font-style: normal; color: var(--color-teal-400); text-shadow: 0 0 24px rgba(94, 207, 206, 0.25); }
.hero__lead { max-width: 52ch; font-size: var(--fs-md); line-height: 1.7; color: var(--color-text-55); }
.hero__actions { display: flex; flex-direction: column; gap: var(--space-3); width: 100%; max-width: 340px; }
.hero__meta {
  display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3) var(--space-5);
  font-size: var(--fs-sm); letter-spacing: normal; text-transform: none; color: var(--color-text-55);
}
.hero__meta b { color: var(--color-text-85); font-weight: var(--fw-bold); }
.hero__meta .stars { color: var(--color-teal-400); letter-spacing: 1px; }

@media (min-width: 560px) {
  /* max-width darf hier nicht stehen bleiben: sonst quetscht die 340px-Spalte
     die beiden Buttons nebeneinander und der Text bricht um. */
  .hero__actions { flex-direction: row; width: auto; max-width: none; }
}
@media (min-width: 780px) {
  .hero { padding: var(--space-12) var(--space-9) var(--space-11); }
  .hero__title { font-size: 3.9rem; }
}

/* ---------- Hero (Media-Variante, vollflächiges Video) ----------
   Das Video blendet oben und unten per Maske aus, statt an einer harten
   Kante zu enden — so gibt es weder zum Header noch zur Aurora einen
   sichtbaren Schnitt. Der Veil darüber ist an beiden Enden transparent
   und dunkelt nur die Mitte ab, damit der Text lesbar bleibt. */
.hero--media {
  position: relative;
  overflow: hidden;
  text-align: center;
  align-items: center;
  padding: 120px var(--space-5) 140px;
}
.hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  /* Kein Dimmer: der Entwurf laesst das Video ungedimmt und traegt den Text
     allein ueber den Veil (--veil-hero-video). */
  -webkit-mask-image: var(--maske-hero);
  mask-image: var(--maske-hero);
}
.hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: var(--veil-hero-video);
}
.hero__content {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-5);
  max-width: 900px;
  width: 100%;
}
.hero--media .hero__title { text-align: center; margin: 0 auto; }
.hero--media .hero__lead { margin: 0 auto; }
.hero--media .hero__meta { justify-content: center; }

@media (prefers-reduced-motion: reduce) {
  .hero__video { display: none; }
}
@media (min-width: 780px) {
  .hero--media { padding: 150px var(--space-6) 170px; }
}

/* ---------- Stats bar ----------
   Auf der Startseite eine Milchglas-Leiste, die in den Hero hineinragt
   (--overlap). Auf Seiten ohne Hero darüber steht sie normal im Fluss. */
.stats-bar { padding: 0 var(--space-5); position: relative; z-index: 3; }
.stats-bar--overlap { margin-top: -56px; }
.stats-bar__grid {
  max-width: 1120px; margin: 0 auto;
  display: grid; grid-template-columns: repeat(2, 1fr);
  border-radius: var(--radius-lg);
  padding: var(--space-7) var(--space-3);
  text-align: center;
}
.stats-bar__grid > * { border-right: 1px solid var(--color-border-soft); }
.stats-bar__grid > *:nth-child(2), .stats-bar__grid > *:last-child { border-right: none; }
.stat__num { font-size: var(--fs-2xl); font-weight: var(--fw-extrabold); color: var(--color-white); letter-spacing: -0.02em; }
.stat__num em { font-style: normal; color: var(--color-teal-400); text-shadow: var(--glow-zahl-klein); }
.stat__label { font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--color-text-45); text-transform: none; letter-spacing: normal; margin-top: var(--space-1); }

@media (min-width: 640px) {
  .stats-bar__grid { grid-template-columns: repeat(4, 1fr); }
  .stats-bar__grid > *:nth-child(2) { border-right: 1px solid var(--color-border-soft); }
  .stat__num { font-size: 2rem; }
}

/* ---------- Section shell ----------
   Keine Trennlinien mehr zwischen den Sektionen: Look 2.0 trennt über
   Abstand und die durchlaufende Aurora, nicht über Kanten. */
.section { padding: var(--space-10) var(--space-5); }
.section--tight { padding-bottom: var(--space-9); }
.section__inner { max-width: 1120px; margin: 0 auto; }
.section__head { text-align: center; margin-bottom: var(--space-9); display: flex; flex-direction: column; gap: var(--space-3); align-items: center; }
.section__head--split { text-align: left; align-items: flex-start; }
.section__head--tight { margin-bottom: var(--space-7); }

/* Der Kicker ist in Look 2.0 eine Pille mit Kippschalter statt eines
   gesperrten Versal-Worts. Der Schalter entsteht per ::after (ein
   Teal-Balken mit weißem Punkt), damit im HTML kein zusätzliches
   Element nötig ist. */
.eyebrow {
  display: inline-flex; align-items: center; gap: var(--space-2);
  background: rgba(16, 21, 21, 0.55);
  border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-pill);
  padding: 6px 6px 6px 16px;
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  letter-spacing: normal;
  text-transform: none;
  color: var(--color-text-65);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  align-self: center;
}
.eyebrow::after {
  content: ''; flex-shrink: 0;
  width: 26px; height: 14px; border-radius: var(--radius-pill);
  background:
    radial-gradient(circle at 19px 7px, #fff 0 5px, transparent 5.5px),
    var(--color-teal-500);
}
.section__head--split .eyebrow, .page-hero--split .eyebrow,
.contact-info .eyebrow, .einblicke-titelblock .eyebrow { align-self: flex-start; }

/* Innerhalb einer Karte ist der Kicker kein Sektionskopf, sondern ein Etikett
   an einem Objekt — dort verliert die Pille den Kippschalter und wird zur
   kleinen Teal-Marke, wie die Tags auf den Leistungs- und Ergebniskarten. */
.showcase-card .eyebrow, .package-card .eyebrow, .legal-card > .eyebrow,
.kurs-karte .eyebrow, .pricing-card .eyebrow {
  align-self: flex-start;
  background: var(--color-surface-tint);
  border-color: var(--color-border-teal);
  color: var(--color-teal-400);
  padding: 4px 11px;
  font-size: 11px; font-weight: var(--fw-bold);
  text-transform: uppercase; letter-spacing: 0.1em;
  backdrop-filter: none; -webkit-backdrop-filter: none;
}
.showcase-card .eyebrow::after, .package-card .eyebrow::after,
.legal-card > .eyebrow::after, .kurs-karte .eyebrow::after,
.pricing-card .eyebrow::after { display: none; }

.section-title { font-size: var(--fs-2xl); font-weight: var(--fw-bold); letter-spacing: -0.025em; line-height: 1.15; color: var(--color-white); }
/* Der hervorgehobene Teil des Titels wird nicht türkis, sondern gedimmt —
   so bleibt der Titel ruhig und die Farbe den Zahlen und Icons vorbehalten. */
.section-title em { font-style: normal; color: var(--color-text-45); }
.section-sub { font-size: var(--fs-base); color: var(--color-text-55); max-width: 56ch; line-height: 1.7; }

@media (min-width: 780px) {
  .section { padding: var(--space-10) var(--space-9); }
  .section__head { flex-direction: row; justify-content: space-between; align-items: flex-end; text-align: left; }
  .section__head .section-sub { text-align: right; margin-left: auto; }
  .section-title { font-size: var(--fs-3xl); }
  .section__head--center { flex-direction: column; justify-content: center; align-items: center; text-align: center; }
  .section__head--center .section-sub { text-align: center; margin: 0 auto; }
}

/* ---------- CTA-Banner (wiederkehrender Abschluss-Block) ---------- */
.cta-banner-wrap { text-align: center; }
.cta-banner-inner { max-width: 680px; }
.cta-banner-title { margin: var(--space-3) auto var(--space-4); }
.cta-banner-sub { margin: 0 auto var(--space-8); }
.cta-banner-actions { justify-content: center; margin: 0 auto; }

/* ---------- Preise-Seite: wiederkehrende Abstands-Varianten ---------- */
.pricing-tier-group { margin-bottom: var(--space-10); }
.section-sub--tier { margin: var(--space-2) auto 0; }
.pricing-single-wrap { display: flex; justify-content: center; }
.pricing-card--single { max-width: 380px; width: 100%; }
/* Doppelte Klasse ist nötig: .promo-banner setzt weiter unten `margin: 0 auto`
   und hätte bei gleicher Spezifität als spätere Regel gewonnen. */
.promo-banner.promo-banner--spaced { margin-top: var(--space-11); }
.section-block--spaced-top { margin-top: var(--space-11); }
.final-cta { text-align: center; margin-top: var(--space-11); }
.final-cta-title { margin: 0 auto var(--space-4); }
/* Der Abschluss ist eine eigene Glaskarte mit Teal-Rand, kein randloser
   Textblock — sonst verliert er sich zwischen Sektion und Footer. */
.final-cta-card {
  border-radius: var(--radius-xl);
  border-color: var(--color-border-teal);
  padding: 46px var(--space-9);
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: var(--space-2);
}
.final-cta-card .section-title { font-size: clamp(1.5rem, 2.8vw, 2rem); margin: var(--space-3) 0 var(--space-2); }
.final-cta-card .section-sub { font-size: var(--fs-base); margin: 0 0 22px; text-align: center; }
.final-cta-card__actions { display: flex; gap: var(--space-3); justify-content: center; flex-wrap: wrap; }

/* ---------- Package-Card / Contact-Form Einzel-Varianten ---------- */
.package-card--single { max-width: 620px; margin: 0 auto; }

/* ---------- Program cards (Leistungen + Preise vereint) ---------- */
.program-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-4); }
/* Kopfzeile wie im Entwurf: Icon, Titel und Abzeichen stehen in EINER Zeile,
   darunter der Preis. Das Abzeichen schwebt nicht mehr in der Ecke, es ist
   Teil der Zeile — dadurch fluchten die Titel aller drei Karten. */
.program-card {
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  text-align: left;
  display: flex; flex-direction: column;
  position: relative;
}
/* Hervorgehoben heißt: Teal-Rand. Kein Verlauf, kein Schein um die Karte. */
.program-card--featured { border-color: var(--color-border-teal-strong); }
.program-card__top { display: flex; align-items: center; gap: 11px; margin-bottom: var(--space-4); }
.program-card__badge {
  margin-left: auto;
  background: var(--color-surface-tint-weich);
  border: 1px solid rgba(32, 173, 172, 0.35);
  color: var(--color-teal-400);
  font-size: 10.5px; font-weight: var(--fw-bold); letter-spacing: normal;
  text-transform: none; padding: 4px 9px; border-radius: 8px;
  white-space: nowrap;
}
.program-card__title { font-size: 16px; font-weight: var(--fw-bold); color: var(--color-white); text-transform: none; letter-spacing: normal; line-height: 1.25; }
.program-card__rule { border: 0; border-top: 1px dashed rgba(255, 255, 255, 0.12); width: 100%; height: 0; background: none; margin: 0 0 var(--space-4); }
.program-card__desc { font-size: 13px; line-height: 1.6; color: var(--color-text-55); margin: var(--space-2) 0 var(--space-4); }
.program-card__price { font-size: 34px; font-weight: var(--fw-extrabold); color: var(--color-white); letter-spacing: -0.02em; line-height: 1.1; }
.program-card__price-old { font-size: var(--fs-base); color: var(--color-text-45); text-decoration: line-through; font-weight: var(--fw-medium); }
.program-card__period { font-size: 12.5px; font-weight: var(--fw-regular); color: var(--color-text-55); margin-left: 4px; }
.program-card__features { list-style: none; display: grid; gap: 10px; text-align: left; font-size: 13px; color: var(--color-text-65); margin-bottom: var(--space-5); }
.program-card__features li { display: flex; align-items: flex-start; gap: 9px; }
/* Der Haken sitzt in einem dünnen Teal-Ring — das ist kein Icon-Kästchen,
   sondern die Aufzählungsmarke der Liste. */
.program-card__features li::before {
  content: '✓'; flex-shrink: 0;
  width: 17px; height: 17px; border-radius: 50%;
  border: 1px solid var(--color-linie-teal); color: var(--color-teal-400);
  font-size: 10px; display: flex; align-items: center; justify-content: center; margin-top: 1px;
}
.program-card .btn { margin-top: auto; }

/* ---------- Team ---------- */
.team-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-4); }
/* Der Headcoach steht frei: kein Glas, kein Rand, nur das radial maskierte
   Portrait über einem Teal-Schein. Er ist die Bühne der Sektion, nicht eine
   Karte unter zweien (Entwurf .team-lead). */
.team-lead { display: flex; flex-direction: column; justify-content: flex-end; position: relative; }
.team-lead .team-avatar--photo { margin-bottom: -4px; }
.team-lead h3 { font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-2); }
.team-lead p { font-size: 13.5px; color: var(--color-text-55); line-height: 1.7; }
.team-card {
  border-radius: var(--radius-lg); padding: var(--space-6);
  position: relative; overflow: hidden;
}
.team-card--lead { border-color: var(--color-border-teal-strong); }
.team-card--open { border-style: dashed; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; }
.team-card--open .btn { margin-top: var(--space-5); }
.team-avatar {
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--color-bg-800); border: 1px solid var(--color-border);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--color-text-45);
  margin-bottom: var(--space-4);
}
/* Das Porträt steht frei, nicht in einem Kreis: es blendet per Maske weich
   aus, darunter liegt ein Teal-Schein. So wirkt der Headcoach als Bühne
   der Karte statt als Avatar in einer Liste. */
.team-avatar--photo {
  width: min(440px, 94%); height: auto;
  margin: 0 auto var(--space-4); border: 0; border-radius: 0;
  background: none; overflow: visible; position: relative; display: block;
}
.team-avatar--photo::before {
  content: ''; position: absolute; left: 50%; top: 26%; transform: translate(-50%, -50%);
  width: 420px; height: 340px; max-width: 130%;
  background: radial-gradient(closest-side, rgba(32, 173, 172, 0.22), transparent);
  pointer-events: none;
}
.team-avatar--photo img {
  width: 100%; height: auto; display: block; position: relative;
  -webkit-mask-image: radial-gradient(66% 70% at 50% 40%, #000 38%, transparent 67%);
  mask-image: radial-gradient(66% 70% at 50% 40%, #000 38%, transparent 67%);
}
.team-avatar--muted { background: rgba(255, 255, 255, 0.04); border-color: var(--color-border-soft); color: var(--color-text-55); }
/* Textspalte der Team-Sektion auf der Startseite (seit 29.08. im
   philo-split-Aufbau von ueber-apr, Feedback n1'). */
.team-lead-name { font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-2); }
.team-lead-text { font-size: 13.5px; color: var(--color-text-55); line-height: 1.7; max-width: 46ch; }
/* K1 (31.08.): die Sektion hat jetzt zwei Absätze */
.team-lead-text + .team-lead-text { margin-top: 10px; }
.team-lead-btn { margin-top: var(--space-5); }
.team-role { font-size: 11px; font-weight: var(--fw-bold); color: var(--color-teal-400); text-transform: uppercase; letter-spacing: 0.16em; margin-bottom: var(--space-2); }
.team-role--muted { color: var(--color-text-45); }
.team-card h3 { font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-2); }
.team-card h3.muted { color: var(--color-text-55); }
.team-card p { font-size: 13.5px; color: var(--color-text-55); line-height: 1.7; }

@media (min-width: 780px) {
  .team-grid { grid-template-columns: 1.3fr 1fr; max-width: 900px; margin: 0 auto; }
  .team-grid--3 { grid-template-columns: repeat(3, 1fr); max-width: 1100px; }
}

/* ---------- Warum apr (Zitat-Karte + Punkte + Vernetzungs-Diagramm) ---------- */
.why-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-9); }
.quote-card {
  border-radius: var(--radius-lg); padding: var(--space-7);
  border-color: var(--color-border-teal);
  position: relative; overflow: hidden;
}
.quote-card__marks { font-size: 56px; line-height: 0.5; color: var(--color-teal-400); font-weight: var(--fw-extrabold); text-shadow: 0 0 18px rgba(94, 207, 206, 0.25); margin-bottom: var(--space-5); }
.quote-card__text { font-size: 21px; font-weight: var(--fw-bold); color: var(--color-white); letter-spacing: -0.02em; line-height: 1.3; position: relative; z-index: 1; }
.quote-card__text em { font-style: normal; color: var(--color-teal-400); }
.quote-card__author { margin-top: var(--space-4); font-size: 12.5px; color: var(--color-text-45); }
.points-list { display: grid; gap: var(--space-3); margin-top: var(--space-8); }
.point-item {
  display: flex; gap: var(--space-4); align-items: flex-start;
  border-radius: var(--radius-md); padding: var(--space-4) var(--space-5);
  transition: border-color 0.15s ease;
}
.point-item:hover { border-color: var(--color-border-teal-strong); }
.point-text h4 { font-size: 14.5px; font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: 3px; }
.point-text p { font-size: var(--fs-sm); color: var(--color-text-55); line-height: 1.6; }

@media (min-width: 1080px) {
  .why-grid { grid-template-columns: 1fr 1fr; align-items: center; gap: var(--space-11); }
}

/* Vernetzungs-Diagramm: der Kern in der Mitte, vier Knoten drum herum,
   dazwischen dünne Teal-Linien. Unter 1024px fällt die Anordnung in sich
   zusammen und wird zu einer normalen Kartenliste — Kreise mit absoluter
   Position sind auf einem Phone weder lesbar noch treffsicher. */
.net { position: relative; height: 560px; margin-top: var(--space-9); }
.net-lines { position: absolute; inset: 0; width: 100%; height: 100%; }
.net-lines line { stroke: rgba(94, 207, 206, 0.35); stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.node {
  position: absolute; transform: translate(-50%, -50%);
  border-radius: 50%;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; padding: 24px;
}
.node h4 { margin: 8px 0 4px; font-size: 13.5px; font-weight: var(--fw-bold); }
.node p { margin: 0; font-size: 10.5px; color: var(--color-text-55); line-height: 1.45; max-width: 22ch; hyphens: manual; overflow-wrap: break-word; }
.node .nico { color: var(--color-teal-400); filter: var(--glow-icon); }
.node .nico svg { display: block; width: 22px; height: 22px; }
.node.core { left: 50%; top: 50%; width: 214px; height: 214px; border-color: var(--color-border-teal-strong); }
.node.core img { width: 46px; height: 46px; margin-bottom: 8px; }
.node.core b { font-size: 16px; font-weight: var(--fw-extrabold); }
.node.core p { font-size: 11px; max-width: 20ch; }
.node.n1 { left: 18%; top: 20%; width: 182px; height: 182px; }
.node.n2 { left: 82%; top: 24%; width: 172px; height: 172px; }
.node.n3 { left: 16%; top: 78%; width: 176px; height: 176px; }
.node.n4 { left: 83%; top: 76%; width: 186px; height: 186px; }
.net .dot { position: absolute; border-radius: 50%; background: rgba(32, 173, 172, 0.3); filter: blur(1px); }
@media (max-width: 860px) {
  .net { height: auto; display: grid; gap: var(--space-3); }
  .net-lines, .net .dot { display: none; }
  .node { position: static; transform: none; width: auto; height: auto; border-radius: var(--radius-lg); padding: var(--space-6); }
  .node p, .node.core p { max-width: none; font-size: var(--fs-sm); }
  .node.core { width: auto; height: auto; }
}

/* ---------- Ergebnisse ---------- */
.results-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--space-4); }
.result-card { border-radius: var(--radius-lg); padding: var(--space-7); }
.result-stat { font-size: 40px; font-weight: var(--fw-extrabold); color: var(--color-teal-400); letter-spacing: -0.03em; line-height: 1; text-shadow: var(--glow-zahl); }
.result-desc { font-size: 15.5px; color: var(--color-white); font-weight: var(--fw-bold); margin: 6px 0; }
.result-detail { font-size: var(--fs-sm); color: var(--color-text-55); line-height: 1.6; margin-bottom: var(--space-3); }
.result-tag {
  display: inline-block; background: var(--color-surface-tint); border: 1px solid var(--color-border-teal);
  color: var(--color-teal-400); font-size: 10.5px; font-weight: var(--fw-bold); text-transform: uppercase;
  letter-spacing: 0.1em; padding: 4px 11px; border-radius: var(--radius-pill);
}

/* Ergebnis-Visualisierungen: Balken, Kurve, Ring. Sie stehen über der
   Zahl und zeigen dieselbe Aussage noch einmal als Bild. */
.result-viz { width: 100%; height: 60px; margin-bottom: var(--space-3); }
.result-ring { width: 88px; height: 88px; margin: 0 auto var(--space-3); display: block; }
.viz-glow { filter: drop-shadow(0 0 6px rgba(32, 173, 172, 0.45)); }
.viz-bars { margin-bottom: var(--space-2); }
.viz-bar { display: flex; align-items: center; gap: 9px; font-size: 10.5px; color: var(--color-text-45); margin-bottom: 9px; }
.viz-bar span { width: 44px; flex-shrink: 0; }
.viz-bar b { --w: 0%; flex: 1; position: relative; height: 9px; }
.viz-bar b::after { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: var(--w); border-radius: 5px; background: rgba(255, 255, 255, 0.12); }
.viz-bar--teal b::after { background: linear-gradient(90deg, #20adac, #5ecfce); box-shadow: 0 0 12px rgba(32, 173, 172, 0.5); }

/* ---------- Ablauf ---------- */
.steps-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); position: relative; }
.step-card { border-radius: var(--radius-lg); padding: var(--space-6) var(--space-5); text-align: center; }
.step-number {
  width: 44px; height: 44px;
  background: var(--color-surface-feld); border: 0;
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: var(--fs-base); font-weight: var(--fw-extrabold); color: var(--color-teal-400);
  margin: 0 auto var(--space-4); filter: var(--glow-icon);
}
.step-card h4 { font-size: 15px; font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: 6px; }
.step-card p { font-size: 12.5px; color: var(--color-text-55); line-height: 1.6; }

@media (min-width: 780px) {
  .steps-grid { grid-template-columns: repeat(4, 1fr); }
}

/* ---------- Ablauf als Icon-Stepper ----------
   Keine Karten: die vier Schritte stehen frei auf der Aurora und werden von
   einer durchgehenden Leuchtlinie auf Höhe der Kreismitte verbunden. Der
   Kreis ist keine Fläche mit Rand, sondern ein dunkler Grund, aus dem das
   Icon leuchtet (Entwurf .steps / .step in index.html). */
.steps-grid--stepper { grid-template-columns: 1fr 1fr; gap: 22px; }
.steps-grid--stepper .step-card {
  background: none; border: 0; border-radius: 0; box-shadow: none;
  backdrop-filter: none; -webkit-backdrop-filter: none;
  padding: 0 14px; position: relative;
}
.steps-grid--stepper .step-icon {
  width: 60px; height: 60px; border-radius: 50%;
  background: var(--color-surface-feld);
  color: var(--color-teal-400);
  margin: 0 auto 14px;
  position: relative; z-index: 2;
  filter: var(--glow-icon);
}
.steps-grid--stepper .step-icon svg { width: 24px; height: 24px; }
/* Die Schrittnummer steht unter dem Icon — sie ordnet die vier Schritte,
   ohne dass das Icon dafuer Platz abgibt (Entwurf .step .no). */
.steps-grid--stepper .step-no { display: block; font-size: 11.5px; font-weight: var(--fw-extrabold); color: var(--color-teal-400); letter-spacing: 0.1em; }
.steps-grid--stepper .step-card h4 { margin: 4px 0 6px; }

/* .steps-grid--karten entfernt am 31.08.2026: praventionskurse.html ist auf
   den Startseiten-Stepper umgestellt (Feedback K2), danach benutzte keine
   HTML-Datei die Variante mehr. */

/* .steps-grid--nummern entfernt am 29.08.2026: corporate.html ist auf den
   Startseiten-Stepper (.steps-grid--stepper) umgestellt, danach benutzte
   keine HTML-Datei die Variante mehr. */

@media (min-width: 780px) {
  .steps-grid--stepper { grid-template-columns: repeat(4, 1fr); gap: 0; }
  /* Die Verbindungslinie liegt hinter den Kreisen (z-index 1 gegen 2) und
     läuft von der Mitte des vorherigen Schritts zur Mitte des eigenen —
     daher left: -50% bei voller Spaltenbreite. Die Kreismitte sitzt 30px
     unter der Oberkante. Mobil stehen die Schritte im Zweierraster, dort
     gibt es keine Linie. */
  .steps-grid--stepper .step-card::before {
    content: ''; position: absolute; z-index: 1;
    top: 30px; left: -50%; width: 100%; height: 1.5px;
    background: linear-gradient(90deg, transparent, rgba(32, 173, 172, 0.45), transparent);
  }
  .steps-grid--stepper .step-card:first-child::before { display: none; }
}


/* ---------- Kundenstimmen als zwei versetzte Bänder ----------
   Kein Karussell mehr: zwei Reihen stehen still, gegeneinander versetzt und
   über die Seitenränder hinausgeschoben. Die jeweils erste und letzte Karte
   einer Reihe blendet per Maske aus, statt an der Kante abzureißen. Die
   gedimmten Karten treten zurück, damit der Blick in der Mitte bleibt. */
.testi-band { position: relative; }
.testi-row { display: flex; gap: var(--space-4); margin-bottom: var(--space-4); }
.testi-row--1 { margin-left: -160px; margin-right: -70px; }
.testi-row--2 { margin-left: -90px; margin-right: -140px; }
.testi-row > .testi-card:first-child {
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 75%);
  mask-image: linear-gradient(90deg, transparent 0, #000 75%);
}
.testi-row > .testi-card:last-child {
  -webkit-mask-image: linear-gradient(90deg, #000 25%, transparent 100%);
  mask-image: linear-gradient(90deg, #000 25%, transparent 100%);
}
.testi-card--dimmed { opacity: 0.55; }
.testi-card { flex: 1 1 340px; min-width: 0; border-radius: 16px; padding: 22px; }
.testi-card__head { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-3); }
.testi-card__google { margin-left: auto; flex-shrink: 0; }
.testi-avatar {
  width: 38px; height: 38px; border-radius: 50%; background: rgba(32, 173, 172, 0.16);
  border: 1px solid var(--color-border-teal); display: flex; align-items: center; justify-content: center;
  font-size: 12.5px; font-weight: var(--fw-bold); color: var(--color-teal-400); flex-shrink: 0;
}
.testi-name { font-size: 13.5px; font-weight: var(--fw-bold); color: var(--color-white); }
.testi-stars { color: var(--color-teal-400); font-size: var(--fs-sm); letter-spacing: 2px; }
.testi-text { font-size: 13px; color: var(--color-text-65); line-height: 1.7; }
.testi-meta { font-size: 11.5px; color: var(--color-text-45); margin-top: var(--space-3); }

/* Auf schmalen Viewports stapeln die Bänder: kein Versatz, keine Maske.
   Das Dimmen entfällt ebenfalls — ohne den Bandeffekt, der es rechtfertigt,
   wäre es nur eine schlechter lesbare Bewertung. Sichtbar bleiben alle. */
@media (max-width: 760px) {
  .testi-row { flex-wrap: wrap; margin-left: 0; margin-right: 0; }
  .testi-card { flex: 1 1 100%; }
  .testi-card--dimmed { opacity: 1; }
  .testi-row > .testi-card:first-child, .testi-row > .testi-card:last-child {
    -webkit-mask-image: none; mask-image: none;
  }
}

/* Kopf der Sektion: Titel links, Einordnung und Google-Marke rechts. */
.testi-head { display: grid; grid-template-columns: 1fr; gap: var(--space-5); align-items: end; margin-bottom: var(--space-9); }
.testi-head__right { max-width: 360px; font-size: 13px; color: var(--color-text-55); line-height: 1.7; }
.g-badge {
  display: inline-flex; align-items: center; gap: var(--space-2); margin-top: var(--space-3);
  border: 1px solid var(--color-border-soft); border-radius: var(--radius-pill);
  padding: 7px 14px; font-size: 13px; color: var(--color-text-65);
  background: rgba(16, 21, 21, 0.55);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.g-badge strong { font-size: var(--fs-base); color: var(--color-white); }
@media (min-width: 780px) {
  .testi-head { grid-template-columns: 1fr auto; gap: var(--space-9); }
}
.spotlight-link { display: block; text-align: center; margin-top: var(--space-8); }
.spotlight-link a {
  display: inline-flex; align-items: center; gap: var(--space-2);
  background: var(--color-surface-tint); border: 1px solid var(--color-linie-teal);
  color: var(--color-teal-400); font-size: var(--fs-base); font-weight: var(--fw-bold);
  padding: 13px 24px; border-radius: var(--radius-pill); transition: all 0.15s ease;
}
.spotlight-link a:hover { background: var(--color-surface-tint-stark); color: var(--color-white); box-shadow: var(--glow-taste); }

/* ---------- Kontakt ----------
   Ein einziges Glas-Panel statt zweier Blöcke nebeneinander: links die
   Erreichbarkeit, rechts das Formular. Chip und Titel stehen zentriert
   darüber, nicht in der linken Spalte (Entwurf .contact). */
.contact-panel {
  display: grid; grid-template-columns: 1fr; gap: var(--space-8);
  border-radius: var(--radius-xl); padding: 34px;
}
.contact-panel .contact-form { background: none; border: 0; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; padding: 0; border-radius: 0; }
.contact-panel .contact-info p:first-child { margin-top: 0; }
@media (min-width: 820px) {
  .contact-panel { grid-template-columns: 1fr 1.15fr; gap: var(--space-8); }
}
.contact-info p { font-size: var(--fs-base); color: var(--color-text-55); line-height: 1.7; margin: var(--space-4) 0 var(--space-6); }
.contact-details { display: flex; flex-direction: column; gap: var(--space-1); }
.contact-item { display: flex; align-items: center; gap: var(--space-3); font-size: var(--fs-base); color: var(--color-text-65); padding: 7px 0; }
.contact-item a { color: var(--color-text-65); }
.contact-item a:hover { color: var(--color-teal-400); }
/* WhatsApp behält sein Grün — es ist eine Fremdmarke, kein Akzent der Seite. */
/* K10 (31.08.): nicht mehr volle Kastenbreite (inline-flex statt width:100%)
   und mehr Abstand zu den Kontaktzeilen darüber. Gilt auch für den gleichen
   Button auf der Startseite. */
.whatsapp-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-3);
  margin-top: var(--space-7); padding: 13px 24px; border-radius: var(--radius-sm);
  background: rgba(37, 211, 102, 0.1); border: 1px solid rgba(37, 211, 102, 0.3);
  color: #25d366; font-weight: var(--fw-bold); font-size: var(--fs-base);
  transition: background 0.2s;
}
.whatsapp-btn:hover { background: rgba(37, 211, 102, 0.18); color: #25d366; }

.contact-form { border-radius: var(--radius-xl); padding: var(--space-7); }
/* Entwurf .form-card: schmaler, mit Teal-Rand und mehr Luft — die
   Formularkarte ist der Abschluss der Seite, nicht eine Karte unter vielen. */
.contact-form--narrow {
  max-width: 760px; margin: 0 auto;
  border-color: var(--color-border-teal);
  padding: 36px;
}
.form-honeypot { position: absolute; left: -9999px; }

/* ---------- Formulare ----------
   Feld dunkel, Rand dünn, Fokus mit Teal-Rand und dezentem Glow.
   Platzhalter sind gedimmt; bei Selects übernimmt das :invalid, solange
   die leere Option gewählt ist — deshalb steht dort immer ein
   `<option value="" disabled selected>` und ein `required` am Select.
   :has() fängt zusätzlich die freiwilligen Selects ab, bei denen :invalid
   nie greifen kann. */
.form-group { margin-bottom: var(--space-4); }
.form-group label {
  display: block; font-size: 12.5px; font-weight: var(--fw-semibold);
  color: var(--color-text-65); text-transform: none; letter-spacing: normal;
  margin-bottom: 6px;
}
.form-group input, .form-group select, .form-group textarea {
  width: 100%; background: var(--color-surface-feld); border: 1px solid var(--color-border);
  border-radius: var(--radius-sm); padding: 12px 14px; color: var(--color-text);
  font-family: inherit; font-size: 14px; transition: all 0.15s ease; outline: none;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
  border-color: var(--color-teal-500);
  box-shadow: var(--glow-feld);
}
.form-group select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235ecfce' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right var(--space-4) center;
}
.form-group select:invalid,
.form-group select:has(option[value=""]:checked) { color: rgba(255, 255, 255, 0.3); }
.form-group select option { color: var(--color-text); background: var(--color-bg-900); }
.form-group textarea { resize: vertical; min-height: 100px; }
.form-group input.has-error { border-color: var(--color-white); }
::placeholder { color: rgba(255, 255, 255, 0.3); }
.field-hint { font-size: var(--fs-xs); color: var(--color-text-55); line-height: 1.6; margin-top: var(--space-2); }
.field-hint a { color: var(--color-text-55); text-decoration: underline; }
.field-hint a:hover { color: var(--color-teal-400); }
.field-error { display: none; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--color-white); margin-top: var(--space-2); }
.field-error.visible { display: flex; }
.form-row { display: grid; grid-template-columns: 1fr; gap: var(--space-3); }
/* Der Absende-Button ist derselbe Ghost-Teal wie .btn--primary. */
.form-submit {
  width: 100%; background: var(--color-surface-tint); color: var(--color-teal-400);
  border: 1px solid var(--color-linie-teal);
  border-radius: var(--radius-sm); padding: 13px 24px; font-size: var(--fs-base);
  font-weight: var(--fw-bold); font-family: inherit; cursor: pointer;
  transition: all 0.15s ease;
}
.form-submit:hover { background: var(--color-surface-tint-stark); color: var(--color-white); box-shadow: var(--glow-taste); }
.form-submit:disabled { opacity: 0.4; cursor: not-allowed; box-shadow: none; }

@media (min-width: 1080px) {
  .form-row { grid-template-columns: 1fr 1fr; }
}

/* ---------- CTA-Banner ----------
   Kein eigener Hintergrund und keine Trennlinie mehr: der Banner liegt
   auf der Aurora wie jede Sektion. */
.cta-banner { color: var(--color-white); padding: var(--space-10) var(--space-5); }
.cta-banner__inner {
  max-width: 1120px; margin: 0 auto;
  display: flex; flex-direction: column; gap: var(--space-6); align-items: flex-start;
}
.cta-banner__title { font-size: var(--fs-2xl); font-weight: var(--fw-bold); text-transform: none; letter-spacing: -0.025em; line-height: 1.15; }
.cta-banner__title span { color: var(--color-teal-400); }

@media (min-width: 780px) {
  .cta-banner { padding: var(--space-10) var(--space-9); }
  .cta-banner__inner { flex-direction: row; justify-content: space-between; align-items: center; }
  .cta-banner__title { font-size: var(--fs-3xl); }
}

/* ---------- Footer ---------- */
.site-footer { background: none; border-top: 1px solid var(--color-border-soft); margin-top: var(--space-11); padding: var(--space-10) var(--space-5) var(--space-6); }
.footer__inner { max-width: 1120px; margin: 0 auto; }
.footer__top { display: flex; flex-direction: column; gap: var(--space-8); margin-bottom: var(--space-9); }
.footer-brand .nav-logo img { height: 48px; }
.footer-brand p { font-size: 13px; color: var(--color-text-55); margin-top: var(--space-3); max-width: 260px; line-height: 1.7; }
.footer-brand__address { font-size: 12.5px; color: var(--color-text-45); margin-top: var(--space-4); line-height: 1.7; }
.footer-links h5 { font-size: 12px; font-weight: var(--fw-bold); color: var(--color-text-45); text-transform: uppercase; letter-spacing: 0.14em; margin-bottom: var(--space-3); }
.footer-links ul { list-style: none; display: grid; gap: var(--space-2); }
.footer-links a { font-size: 13px; color: var(--color-text-55); }
.footer-links a:hover { color: var(--color-teal-400); }
.footer__bottom {
  border-top: 1px solid var(--color-border-soft); padding-top: var(--space-5);
  display: flex; flex-direction: column; gap: var(--space-3);
  font-size: 12px; letter-spacing: normal; text-transform: none; color: var(--color-text-45);
}
.footer-heart-icon { vertical-align: -1px; }

@media (min-width: 780px) {
  .footer__top { flex-direction: row; justify-content: space-between; }
  .footer__bottom { flex-direction: row; justify-content: space-between; align-items: center; }
}

/* ---------- Service-Card (Kernleistungen) ---------- */
.service-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: var(--space-4); }
.service-card { border-radius: var(--radius-lg); padding: var(--space-6); display: flex; flex-direction: column; transition: border-color 0.15s ease; }
.service-card:hover { border-color: var(--color-border-teal-strong); }
.service-card__icon { margin-bottom: var(--space-3); }
.service-card__tag {
  display: inline-block; align-self: flex-start;
  font-size: 11px; font-weight: var(--fw-bold); color: var(--color-teal-400);
  text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: var(--space-3);
  background: var(--color-surface-tint); border: 1px solid var(--color-border-teal);
  padding: 4px 11px; border-radius: var(--radius-pill);
}
.service-card h3 { font-size: 18px; font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: 6px; line-height: 1.25; }
.service-card > p { font-size: 13px; color: var(--color-text-55); line-height: 1.65; margin-bottom: 14px; }
/* Gestrichelte Linie zwischen Beschreibung und Liste — dieselbe Marke, die
   auch die Programm- und Preiskarten teilt. */
.service-card__rule { border: 0; border-top: 1px dashed rgba(255, 255, 255, 0.12); width: 100%; height: 0; background: none; margin: 0 0 14px; }
.service-card__features { list-style: none; display: grid; gap: 9px; flex: 1; margin-bottom: 18px; font-size: 13px; color: var(--color-text-65); }
.service-card__features li { display: flex; align-items: flex-start; gap: 9px; line-height: 1.5; }
.service-card__features li .check {
  flex-shrink: 0; width: 16px; height: 16px; border-radius: 50%;
  border: 1px solid var(--color-linie-teal); color: var(--color-teal-400);
  font-size: 9px; display: flex; align-items: center; justify-content: center; margin-top: 2px;
}
/* Der CTA sitzt am Kartenfuß und füllt die Karte in der Breite aus —
   siehe .btn--karte. Alle drei Karten stehen dadurch gleich schwer. */
.service-card .btn { margin-top: auto; }

/* ---------- Showcase-Card (Spezialprogramme) ---------- */
.showcase-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-4); }
.showcase-card { border-radius: var(--radius-lg); padding: var(--space-6); position: relative; overflow: hidden; transition: border-color 0.15s ease; }
.showcase-card:hover { border-color: var(--color-border-teal-strong); }
.showcase-card--featured { border-color: var(--color-border-teal-strong); }
/* Der frühere Eck-Schein ist entfallen: Karten leuchten in Look 2.0 nicht. */
.showcase-card__accent { display: none; }
/* Icon, Titel und Abzeichen stehen in einer Zeile — die frühere doppelte
   Titel-Pille darüber ist entfallen. */
.showcase-card__top { display: flex; align-items: center; gap: 11px; margin-bottom: var(--space-3); }
.showcase-card__top h3 { flex: 1; margin: 0; }
.showcase-card__icon { flex-shrink: 0; }
/* Das Highlight-Abzeichen ist getönt statt gefüllt — wie alle Marken in Look 2.0. */
.showcase-badge {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--color-surface-tint-weich); border: 1px solid rgba(32, 173, 172, 0.35);
  color: var(--color-teal-400);
  font-size: 10.5px; font-weight: var(--fw-bold); text-transform: none; letter-spacing: normal;
  padding: 4px 9px; border-radius: 8px; white-space: nowrap;
}
.showcase-card h3 { font-size: 17px; font-weight: var(--fw-bold); color: var(--color-white); margin: var(--space-2) 0 6px; line-height: 1.25; }
.showcase-card__target { font-size: 12.5px; color: var(--color-teal-400); font-style: normal; font-weight: var(--fw-semibold); margin-bottom: var(--space-2); }
.showcase-card__desc { font-size: 13px; color: var(--color-text-55); line-height: 1.7; margin-bottom: var(--space-4); }
.showcase-features { list-style: none; display: grid; grid-template-columns: 1fr; gap: 8px 14px; margin-bottom: var(--space-4); padding-left: 0; }
.showcase-badge { margin-left: auto; }
.showcase-features li { font-size: 12.5px; color: var(--color-text-65); display: flex; align-items: flex-start; gap: 8px; line-height: 1.5; }
.showcase-features li .check {
  flex-shrink: 0; width: 15px; height: 15px; border-radius: 50%;
  border: 1px solid var(--color-linie-teal); color: var(--color-teal-400);
  font-size: 9px; display: flex; align-items: center; justify-content: center; margin-top: 2px;
}
.showcase-tags-label { font-size: 11px; font-weight: var(--fw-bold); color: var(--color-text-45); text-transform: uppercase; letter-spacing: 0.12em; margin-bottom: var(--space-2); }
.showcase-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: var(--space-3); }
.showcase-tag { display: inline-block; background: none; border: 1px solid var(--color-border); color: var(--color-text-55); font-size: 11px; font-weight: var(--fw-medium); padding: 4px 10px; border-radius: var(--radius-pill); }
.showcase-notice {
  background: rgba(32, 173, 172, 0.07); border: 1px solid var(--color-border-teal);
  border-radius: var(--radius-sm); padding: 11px 13px; font-size: 12.5px;
  color: var(--color-text-65); line-height: 1.6;
  display: flex; align-items: flex-start; gap: 9px; margin-top: var(--space-3);
}
.showcase-notice strong { color: var(--color-teal-400); }
.showcase-optional-badge {
  display: inline-block; background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--color-border); color: var(--color-text-55);
  font-size: 10.5px; font-weight: var(--fw-bold); text-transform: none; letter-spacing: normal;
  padding: 4px 9px; border-radius: 8px; white-space: nowrap;
}

@media (min-width: 560px) {
  /* Alle vier Spezialkarten tragen ihre Liste zweispaltig (Entwurf .special ul). */
  .showcase-features { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1080px) {
  .showcase-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Bento für die Spezialprogramme: 13-Spalten-Raster, schmal+breit über
   breit+schmal (5/8/8/5). Innen entsteht ein Versatz, außen bleibt ein
   sauberes Rechteck.
   ACHTUNG: Die Spans hängen an nth-child - wer die Karten im HTML umsortiert,
   ändert das Layout. Reihenfolge ist Athletik, Sporttherapie, Prävention,
   Leistungsdiagnostik.
   Der Umbruchpunkt ist 820px und NICHT die 780px von .feature-grid--bento:
   diese Karten tragen deutlich mehr Text, bei 780px quetscht die schmale
   Spalte. Unterhalb fällt alles auf eine Spalte, die Spans gelten dann nicht.
   Die --bento-Regeln stehen NACH der 1080px-Regel oben, damit sie diese
   überschreiben - sonst gewönne dort repeat(2, 1fr). */
@media (min-width: 820px) {
  .showcase-grid--bento { grid-template-columns: repeat(13, 1fr); gap: 22px; }
  .showcase-grid--bento > *:nth-child(1) { grid-column: span 5; }
  .showcase-grid--bento > *:nth-child(2) { grid-column: span 8; }
  .showcase-grid--bento > *:nth-child(3) { grid-column: span 8; }
  .showcase-grid--bento > *:nth-child(4) { grid-column: span 5; }
  /* In den schmalen Karten bleibt die Merkmalliste einspaltig. */
  .showcase-grid--bento > *:nth-child(1) .showcase-features,
  .showcase-grid--bento > *:nth-child(4) .showcase-features { grid-template-columns: 1fr; }
}

/* ---------- FAQ-Akkordeon ---------- */
.faq-list { max-width: 720px; margin: 0 auto; display: grid; gap: var(--space-3); }
.faq-all-link { max-width: 720px; margin: var(--space-5) auto 0; text-align: center; font-size: 13.5px; font-weight: var(--fw-bold); }
.faq-item { border-radius: var(--radius-md); overflow: hidden; transition: border-color 0.15s ease; }
.faq-item.open { border-color: var(--color-border-teal-strong); }
.faq-question {
  width: 100%; background: none; border: none; padding: 16px 18px;
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);
  cursor: pointer; text-align: left; font-family: inherit; color: inherit;
}
.faq-question span { font-size: 14.5px; font-weight: var(--fw-semibold); color: var(--color-white); line-height: 1.4; flex: 1; }
/* Der Chevron ist ein freies Zeichen, kein Kästchen — er dreht sich beim
   Öffnen und leuchtet dann wie die übrigen Icons. */
.faq-chevron {
  width: 20px; height: 20px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: none; border: 0; border-radius: 0;
  color: var(--color-text-45); transition: transform 0.25s ease, color 0.25s ease;
}
.faq-item.open .faq-chevron { transform: rotate(180deg); color: var(--color-teal-400); filter: var(--glow-icon); }
.faq-chevron svg { width: 14px; height: 14px; stroke: currentColor; fill: none; display: block; }
.faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.4s ease; }
/* 320px reichten für die längsten Antworten auf schmalen Viewports nicht
   (bis ~365px nötig) — der Rest wurde von overflow: hidden abgeschnitten. */
.faq-item.open .faq-answer { max-height: 520px; }
.faq-answer-inner { padding: 0 18px 16px; font-size: 13.5px; color: var(--color-text-55); line-height: 1.8; }

/* Native <details>-Variante (leistungen, preise): kein Skript nötig, die
   Frage traegt ihre Nummer in Teal, das Plus kippt beim Oeffnen um 45°.
   Die aeltere Button-Variante darueber bleibt fuer faq.html bestehen. */
.faq-list--details { gap: 10px; }
details.faq-item > summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; gap: 14px;
  padding: 16px 18px; font-size: 14.5px; font-weight: var(--fw-semibold); color: var(--color-white);
}
details.faq-item > summary::-webkit-details-marker { display: none; }
details.faq-item > summary::marker { content: ''; }
.faq-no { color: var(--color-teal-400); font-size: 12.5px; font-weight: var(--fw-bold); flex-shrink: 0; }
.faq-plus { margin-left: auto; color: var(--color-text-45); transition: transform 0.2s ease, color 0.2s ease; flex-shrink: 0; }
.faq-plus svg { display: block; width: 14px; height: 14px; }
details.faq-item[open] .faq-plus { transform: rotate(45deg); color: var(--color-teal-400); }
details.faq-item[open] { border-color: var(--color-border-teal-strong); }
.faq-a { padding: 0 18px 16px 46px; font-size: 13.5px; color: var(--color-text-55); line-height: 1.8; }

/* ---------- Promo-Banner (z.B. Quiz-Teaser) ---------- */
.promo-banner {
  max-width: 1120px; margin: 0 auto;
  border-color: var(--color-border-teal); border-radius: var(--radius-xl);
  padding: var(--space-8); display: flex; flex-direction: column; gap: var(--space-8);
  align-items: flex-start; position: relative; overflow: hidden;
}
.promo-banner__text { flex: 1; }
.promo-banner__tag {
  display: inline-block; background: var(--color-surface-tint); color: var(--color-teal-400);
  border: 1px solid var(--color-border-teal);
  border-radius: var(--radius-pill); padding: 4px 11px; font-size: 11px;
  font-weight: var(--fw-bold); text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: var(--space-3);
}
.promo-banner h3 { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); letter-spacing: -0.02em; margin-bottom: var(--space-2); }
.promo-banner h3 em { font-style: normal; color: var(--color-text-45); }
.promo-banner p { font-size: 13.5px; color: var(--color-text-55); line-height: 1.7; margin-bottom: var(--space-5); max-width: 44ch; }
.promo-banner__steps { display: grid; gap: var(--space-3); flex-shrink: 0; }
.promo-step {
  display: flex; align-items: center; gap: var(--space-3); font-size: 13.5px; color: var(--color-text-65);
  background: var(--color-surface-feld); border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-md); padding: 12px 14px;
}
.promo-step__num {
  width: 26px; height: 26px; border-radius: 50%;
  background: var(--color-surface-tint); border: 1px solid var(--color-linie-teal);
  color: var(--color-teal-400);
  font-size: 12px; font-weight: var(--fw-bold);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}

@media (min-width: 780px) {
  .promo-banner { flex-direction: row; align-items: center; justify-content: space-between; padding: var(--space-9); }
}

/* ---------- Quiz-Teaser „Variante E" (leistungen.html) ----------
   Nachfolger von .promo-banner: kein Kasten mehr, sondern drei freistehende
   Spalten - Text, Quizkarte-Attrappe, 3D-eBook. Zusammengehalten wird das nur
   von einem weichen Lichtschein hinter der rechten Hälfte.
   .promo-banner ist seit dem 29.08. (Feedback n7') auch auf preise.html
   ersetzt - es hängt nur noch an leistungen-2.html (alte Entwurfsseite).
   Fliegt die -2-Seite vom Server, kann .promo-banner/.promo-step mit weg.
   Quizkarte und eBook sind Attrappen: keine Eingabefelder, keine Links, kein
   Skript. Im HTML tragen sie aria-hidden. */
/* max-width und margin sind PFLICHT: .promo sitzt - wie vorher .promo-banner -
   direkt in der Sektion, ohne .section__inner. Ohne die Breitenbegrenzung
   läuft der Teaser auf grossen Bildschirmen über die ganze Seite (live
   gemessen: 1968px statt 1120px). */
.promo { position: relative; max-width: 1120px; margin: 0 auto; display: grid; grid-template-columns: 1fr; gap: var(--space-8); align-items: center; padding: var(--space-7) var(--space-2); }
/* Der Lichtschein bleibt seitlich BEI NULL. Der Entwurf hatte hier -80px;
   das ergibt zusammen mit der Breitenbegrenzung eine Seite, die 80px breiter
   ist als das Fenster - waagerechte Scrollleiste auf jeder Bildschirmgrösse.
   Der Verlauf ist weich genug, dass der Wegfall nicht auffällt.
   Beim Ändern gegenprüfen: document.documentElement.scrollWidth darf nie
   grösser sein als clientWidth. */
.promo::before {
  content: ''; position: absolute; inset: -40px 0; z-index: -1;
  /* K3 (31.08.): Lichtschein von 72% auf die Mitte - passend zum jetzt
     symmetrischen Drei-Spalten-Aufbau. */
  background: radial-gradient(50% 60% at 50% 50%, rgba(32, 173, 172, 0.14), transparent 70%);
}
.promo h3 { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); letter-spacing: -0.02em; margin: var(--space-2) 0 var(--space-2); }
.promo h3 em { font-style: normal; color: var(--color-text-45); }
.promo p { font-size: 13.5px; color: var(--color-text-55); line-height: 1.7; margin-bottom: var(--space-5); max-width: 44ch; }

@media (min-width: 860px) {
  .promo { grid-template-columns: 1fr 1fr; gap: var(--space-9); }
}
/* K3/K5 (31.08.): symmetrischer ausrichten - drei GLEICHE Spalten, gleicher
   Abstand, jedes Element mittig in seiner Spalte. Ersetzt die asymmetrische
   Feinjustierung aus n4'-n6' (1.05/0.85/0.9 + padding-left der Textspalte). */
@media (min-width: 1020px) {
  .promo { grid-template-columns: repeat(3, 1fr); gap: 40px; }
}

/* Quizkarte-Attrappe: leicht gekippt, damit sie als Requisite lesbar ist
   und nicht mit einem echten Formular verwechselt wird. */
.quizcard {
  border-radius: var(--radius-md); padding: 20px 20px 18px;
  background: linear-gradient(180deg, #1a2120, #131918);
  border: 1px solid var(--color-border);
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.4);
  transform: rotate(-1.2deg); align-self: center;
  /* n4': kleiner und zentrierter - Breite gedeckelt, Karte mittig in ihrer
     Spalte statt volle Spaltenbreite. */
  max-width: 320px; justify-self: center; width: 100%;
}
.quizcard__head {
  display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-4);
  font-size: 12.5px; color: var(--color-text-55); letter-spacing: 0.08em;
  text-transform: uppercase; font-weight: var(--fw-bold);
}
.quizcard__head i { color: var(--color-teal-400); font-style: normal; }
.quizcard h4 { margin: 0 0 var(--space-4); font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-white); }
.quizcard__opt { display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px; }
.quizcard__opt div { border: 1px solid var(--color-border); border-radius: var(--radius-sm); padding: 9px 14px; font-size: 13.5px; color: var(--color-text-65); }
.quizcard__opt div.on {
  border-color: var(--color-teal-400); color: var(--color-white);
  background: var(--color-surface-tint); box-shadow: 0 0 14px rgba(32, 173, 172, 0.25);
}
.quizcard__dots { display: flex; gap: 6px; }
.quizcard__dots i { width: 22px; height: 4px; border-radius: 2px; background: rgba(255, 255, 255, 0.12); }
.quizcard__dots i.on { background: var(--color-teal-400); }

/* 3D-eBook: gekippter Quader mit Buchrücken links und Seitenschnitt rechts.
   K3 (31.08.): wieder mittig in der Spalte (symmetrisch zur Quizkarte) -
   die Linksbündigkeit aus n5' ist damit zurückgenommen. */
.ebook-stage { display: grid; place-items: center; perspective: 1100px; }
/* min-height statt height: der Entwurf hatte feste 410px, aber die Schrift
   im Repo läuft minimal höher - die Fusszeile „eBook · PDF · kostenlos" hing
   dadurch live 24px unter dem Buchdeckel. Mit min-height wächst der Deckel
   mit, das Bild bleibt gleich. */
.ebook {
  /* n5': von 300x410 auf 270x370 verkleinert. */
  width: 270px; min-height: 370px; border-radius: 8px 16px 16px 8px; position: relative;
  transform: rotateY(-20deg) rotateX(5deg) rotate(1deg); transform-style: preserve-3d;
  background: linear-gradient(150deg, #182726 0%, #0e1716 55%, #0b1211 100%);
  border: 1px solid rgba(94, 207, 206, 0.4);
  box-shadow: -30px 40px 70px rgba(0, 0, 0, 0.6), 0 0 60px rgba(32, 173, 172, 0.22),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
  padding: 26px 24px; display: flex; flex-direction: column; gap: var(--space-4);
}
.ebook::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 9px; border-radius: 8px 0 0 8px;
  background: linear-gradient(180deg, var(--color-teal-400), var(--color-teal-600));
}
.ebook::after {
  content: ''; position: absolute; right: -6px; top: 8px; bottom: 8px; width: 6px; border-radius: 0 3px 3px 0;
  background: repeating-linear-gradient(180deg, #e8e8e4 0 2px, #c9c9c4 2px 3px); transform: translateZ(-8px);
}
.ebook__free {
  position: absolute; right: -14px; top: -14px; background: var(--color-teal-500); color: #06201f;
  font-weight: var(--fw-extrabold); font-size: 12px; border-radius: var(--radius-pill); padding: 7px 14px;
  transform: rotate(8deg); box-shadow: 0 8px 22px rgba(32, 173, 172, 0.4);
}
.ebook__top { display: flex; align-items: center; gap: 10px; }
/* K4 (31.08.): .ebook__logo ist jetzt ein <img> mit dem echten Logo-Mark
   (logo_mark.png, teal auf transparent) statt der Buchstaben-Kachel. */
.ebook__logo { width: 30px; height: auto; flex: none; display: block; }
.ebook__top span { font-size: 10.5px; letter-spacing: 0.15em; color: var(--color-teal-400); font-weight: var(--fw-bold); text-transform: uppercase; }
.ebook h5 { margin: 2px 0 0; font-size: 22px; line-height: 1.22; font-weight: var(--fw-extrabold); color: var(--color-white); }
.ebook h5 em { font-style: normal; color: var(--color-text-55); }
.ebook__card { border-radius: var(--radius-sm); background: rgba(255, 255, 255, 0.045); border: 1px solid var(--color-border-soft); padding: 13px 14px; }
.ebook__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ebook__label { font-size: 10.5px; letter-spacing: 0.1em; color: var(--color-text-45); text-transform: uppercase; font-weight: var(--fw-bold); margin-bottom: 8px; }
.ebook__big { font-size: 24px; font-weight: var(--fw-extrabold); line-height: 1; color: var(--color-white); }
.ebook__big small { font-size: 12px; color: var(--color-text-55); font-weight: var(--fw-semibold); }
.ebook__ring {
  width: 52px; height: 52px; border-radius: 50%; flex: none; display: grid; place-items: center;
  background: conic-gradient(var(--color-teal-400) 0 75%, rgba(255, 255, 255, 0.1) 75% 100%); position: relative;
}
.ebook__ring::before { content: ''; position: absolute; inset: 5px; border-radius: 50%; background: #101917; }
.ebook__ring b { position: relative; font-size: 12.5px; color: var(--color-teal-400); }
.ebook__wave { display: block; width: 100%; height: 26px; margin-top: 6px; }
.ebook__plan { display: flex; flex-direction: column; gap: 7px; }
.ebook__plan div { display: flex; align-items: center; gap: 9px; font-size: 12.5px; color: var(--color-text-65); }
.ebook__plan i { width: 15px; height: 15px; border-radius: 50%; flex: none; font-style: normal; border: 1.3px solid rgba(94, 207, 206, 0.6); }
.ebook__plan div.done i { background: var(--color-teal-500); border-color: var(--color-teal-400); }
.ebook__plan div.done { color: var(--color-white); }
.ebook__foot { margin-top: auto; font-size: 11px; color: var(--color-text-45); }

/* Unter 380px passt der eBook-Quader nicht mehr ins Bild. */
@media (max-width: 380px) {
  .ebook { width: 260px; min-height: 356px; }
}

/* ---------- Pricing-Card (Preise-Seite, detaillierte Pakete) ---------- */
.pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-4); margin-bottom: var(--space-10); }
.pricing-card { border-radius: var(--radius-lg); padding: var(--space-6); position: relative; overflow: hidden; display: flex; flex-direction: column; }
.pricing-card--featured { border-color: var(--color-border-teal-strong); }
/* Kopfzeile wie im Entwurf: Icon, Name und Abzeichen in einer Zeile. */
.pricing-card__top { display: flex; align-items: center; gap: 11px; margin-bottom: var(--space-4); }
.pricing-badge {
  margin-left: auto;
  background: var(--color-surface-tint-weich); border: 1px solid rgba(32, 173, 172, 0.35);
  color: var(--color-teal-400);
  font-size: 10.5px; font-weight: var(--fw-bold); text-transform: none; letter-spacing: normal;
  padding: 4px 9px; border-radius: 8px; white-space: nowrap;
}
.pricing-name { font-size: 16px; font-weight: var(--fw-bold); color: var(--color-white); text-transform: none; letter-spacing: normal; line-height: 1.25; }
.pricing-price { font-size: 34px; font-weight: var(--fw-extrabold); color: var(--color-white); letter-spacing: -0.02em; line-height: 1.1; }
.pricing-price span { font-size: 12.5px; font-weight: var(--fw-regular); color: var(--color-text-55); margin-left: 4px; }
.pricing-note { font-size: 13px; color: var(--color-text-55); margin: var(--space-2) 0 var(--space-4); line-height: 1.6; }
.pricing-divider { border: 0; border-top: 1px dashed rgba(255, 255, 255, 0.12); height: 0; background: none; margin: 0 0 var(--space-4); }
/* align-content: start — ohne das zieht flex:1 die Zeilen der kürzeren
   Karten auseinander, statt die Liste oben zu halten. */
.pricing-features { list-style: none; display: grid; align-content: start; gap: 10px; margin-bottom: var(--space-5); flex: 1; }
.pricing-features li { font-size: var(--fs-sm); color: var(--color-text-65); display: flex; align-items: flex-start; gap: 9px; }
.pricing-features li .check {
  flex-shrink: 0; width: 17px; height: 17px; border-radius: 50%;
  border: 1px solid var(--color-linie-teal); color: var(--color-teal-400);
  font-size: 10px; display: flex; align-items: center; justify-content: center; margin-top: 1px;
}
.pricing-card .btn { margin-top: auto; }

/* ---------- Info-Box (Hinweiskarten) ---------- */
.info-box { border-radius: var(--radius-lg); padding: 22px; margin-bottom: var(--space-8); display: flex; gap: 14px; align-items: flex-start; }
/* Zwei Hinweiskarten nebeneinander statt untereinander (Entwurf .infos).
   Der Außenabstand hängt am Raster, nicht mehr an der einzelnen Karte —
   sonst reißt zwischen den Spalten eine Lücke auf. */
.info-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-4); margin: var(--space-11) 0 var(--space-8); }
.info-grid .info-box { margin-bottom: 0; }
@media (min-width: 780px) {
  .info-grid { grid-template-columns: 1fr 1fr; }
}
.info-box h4 { font-size: 15px; font-weight: var(--fw-bold); color: var(--color-white); margin: 2px 0 var(--space-2); }
.info-box p { font-size: 13px; color: var(--color-text-55); line-height: 1.7; }
.info-box strong { color: var(--color-text-65); font-weight: var(--fw-semibold); }

/* ---------- Vergleichstabelle ---------- */
.compare-hint { display: block; text-align: center; font-size: 12px; color: var(--color-text-45); margin-bottom: var(--space-2); }
.compare-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: var(--radius-lg); }
.compare-table { width: 100%; border-collapse: collapse; background: none; min-width: 640px; font-size: 13.5px; }
.compare-table th, .compare-table td { padding: 13px 18px; text-align: center; border-bottom: 1px solid var(--color-border-soft); }
.compare-table th:first-child, .compare-table td:first-child { text-align: left; color: var(--color-text-65); }
.compare-table thead th { font-size: 12px; font-weight: var(--fw-bold); letter-spacing: 0.06em; text-transform: uppercase; color: var(--color-text-45); padding-top: 18px; }
.compare-table th.col-highlight { color: var(--color-teal-400); }
.compare-table tbody tr:last-child td { border-bottom: none; font-weight: var(--fw-bold); }
.compare-table .tick { color: var(--color-teal-400); }
.compare-table .cross { color: var(--color-text-45); }
.compare-table td.col-highlight { background: rgba(32, 173, 172, 0.06); }
.compare-table .price-highlight { color: var(--color-teal-400); font-weight: var(--fw-bold); }

@media (min-width: 700px) {
  .compare-hint { display: none; }
}

/* ---------- Page-Hero (Unterseiten) ----------
   Das Hintergrundbild blendet oben (bis 16 %) ein und unten (ab 55 %)
   aus, der Veil ist an beiden Enden transparent. Dadurch geht der Hero
   ohne Kante in Header und Aurora über. */
.page-hero { position: relative; overflow: hidden; padding: 110px var(--space-5) 100px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: var(--space-3); }
.page-hero__bg {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0;
  filter: var(--dimmer-hero);
  -webkit-mask-image: var(--maske-hero);
  mask-image: var(--maske-hero);
}
.page-hero__veil { position: absolute; inset: 0; z-index: 1; background: var(--veil-hero); }
.page-hero > *:not(.page-hero__bg):not(.page-hero__veil) { position: relative; z-index: 2; }
.page-hero .section-title { margin: 0 auto; max-width: 20ch; font-size: var(--fs-2xl); }
.page-hero .section-title em { color: var(--color-teal-400); text-shadow: 0 0 24px rgba(94, 207, 206, 0.25); }
.page-hero .section-sub { margin: 0 auto; text-align: center; }

/* Pillen unter der Hero-Zeile (Preise, Präventionskurse). */
.hero-pills { display: flex; gap: var(--space-2); justify-content: center; flex-wrap: wrap; margin-top: var(--space-5); position: relative; z-index: 2; }
.hero-pill {
  font-size: 12px; font-weight: var(--fw-semibold); color: var(--color-text-65);
  border: 1px solid var(--color-border); background: var(--color-surface-feld);
  border-radius: var(--radius-pill); padding: 6px 14px;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}

/* Split-Variante: linksbündiger Text + seitliches Panel (z.B. Corporate-Hero) */
.page-hero--split { text-align: left; align-items: flex-start; gap: var(--space-6); }
.page-hero--split .section-title, .page-hero--split .section-sub { margin: 0; text-align: left; }
.page-hero--split .section-sub { max-width: 520px; margin-bottom: var(--space-2); }
.page-hero__main { width: 100%; }
.page-hero__aside { width: 100%; }

@media (min-width: 780px) {
  .page-hero { padding: 130px var(--space-6) 120px; }
  .page-hero .section-title { font-size: 3.4rem; letter-spacing: -0.03em; line-height: 1.07; }
}
@media (min-width: 1080px) {
  .page-hero--split { flex-direction: row; align-items: center; justify-content: space-between; }
  .page-hero__aside { width: 380px; flex-shrink: 0; }
}

/* ---------- Hero (vollflächiges Foto) ----------
   Zentriert wie der Entwurf: schmale Textspalte (820px) mittig auf dem Bild,
   Badge-Zeile darunter ebenfalls zentriert. Das Bild bleibt ungedimmt —
   die Maske und der Veil tragen den Text. */
.hero-full {
  position: relative;
  overflow: hidden;
  padding: 130px var(--space-6) 120px;
  display: flex;
  align-items: center;
  text-align: center;
}
.hero-full__bg {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  -webkit-mask-image: var(--maske-hero);
  mask-image: var(--maske-hero);
}
.hero-full__overlay { position: absolute; inset: 0; background: var(--veil-hero); }
.hero-full__inner {
  position: relative; z-index: 2;
  max-width: 820px; margin: 0 auto; width: 100%;
  display: flex; flex-direction: column; gap: var(--space-4); align-items: center;
}
.hero-full .section-title { font-size: clamp(2.2rem, 4.8vw, 3.4rem); font-weight: var(--fw-extrabold); letter-spacing: -0.03em; line-height: 1.07; }
.hero-full .section-title em { color: var(--color-teal-400); text-shadow: 0 0 24px rgba(94, 207, 206, 0.25); }
.hero-full .section-sub { max-width: 52ch; color: var(--color-text-65); margin: 0 auto; text-align: center; }
.hero-full__badges { display: flex; flex-wrap: wrap; gap: var(--space-2); justify-content: center; }
/* Corporate: der Hero traegt darunter die ueberlappende Statbar und
   braucht dafuer mehr Fuss (Entwurf: 150px). */
.hero-full--statbar { padding-bottom: 150px; }
.hero-badge-pill {
  border: 1px solid var(--color-border);
  background: var(--color-surface-feld);
  color: var(--color-text-65);
  font-size: 12px;
  font-weight: var(--fw-semibold);
  letter-spacing: normal;
  text-transform: none;
  padding: 6px 14px;
  border-radius: var(--radius-pill);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
@media (min-width: 780px) {
  .hero-full { padding-left: var(--space-9); padding-right: var(--space-9); }
}

/* Seiten mit vollflächigem Hero brauchen keinen eigenen Hintergrund mehr —
   die Aurora läuft durch. Die Haken bleiben, damit die Seiten sie weiter
   setzen können, ohne dass etwas kippt. */
.page--preise, .page--herofull { background: none; }
.page--preise .page-main--wide, .page--herofull .page-main--wide { padding-top: var(--space-6); }

/* ---------- Corporate Statbar ----------
   Keine Fußleiste im Hero mehr, sondern eine eigenständige Milchglas-Karte,
   die von unten 70px in den Hero hineinragt (Entwurf .statbar). */
.statbar { position: relative; z-index: 3; max-width: 1072px; margin: -70px auto 0; padding: 0 var(--space-6); }
.statbar__box {
  border-radius: var(--radius-lg);
  display: grid; grid-template-columns: 1fr; gap: var(--space-6);
  align-items: center; padding: 22px 28px;
}
.statbar__label { font-size: 11px; font-weight: var(--fw-bold); color: var(--color-text-45); text-transform: uppercase; letter-spacing: 0.12em; max-width: 130px; }
.statbar__stat .stat-panel__number { font-size: 30px; margin-bottom: var(--space-1); }
@media (min-width: 560px) {
  .statbar__box { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 900px) {
  .statbar__box { grid-template-columns: auto 1fr 1fr 1fr; gap: var(--space-6); }
}

/* ---------- Über apr (Media-Hero, Philosophie-Split) ---------- */
.media-frame {
  border-radius: var(--radius-xl); overflow: hidden;
  border: 1px solid var(--color-border);
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.6);
  position: relative;
}
.media-frame img { width: 100%; height: 100%; object-fit: cover; display: block; }

.hero-bleed-wrap { position: relative; overflow: hidden; }
.hero-media { position: absolute; inset: 0; }
.hero-media img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  filter: var(--dimmer-hero);
  -webkit-mask-image: var(--maske-hero);
  mask-image: var(--maske-hero);
}
.hero-scrim { position: absolute; inset: 0; pointer-events: none; background: var(--veil-hero); }
.page-hero--airy { padding-top: 120px; padding-bottom: 120px; gap: var(--space-5); }
.page-hero--airy .section-sub { max-width: 480px; }
.hero-bleed-wrap .page-hero--airy { position: relative; z-index: 1; }

.philo-split { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8); align-items: stretch; }
@media (max-width: 900px) { .philo-split { grid-template-columns: 1fr; } }
.philo-split .media-frame { margin: 0; max-width: none; min-height: 480px; height: 100%; }
.philo-split-quote { margin-top: var(--space-6); padding-top: var(--space-5); border-top: 1px solid var(--color-border-soft); font-style: italic; color: var(--color-white); font-size: 1.05rem; line-height: 1.6; }
.philo-split-quote em { font-style: italic; color: var(--color-teal-400); }
.philo-split-quote .quote-card__author { margin-top: var(--space-3); font-style: normal; }
.point-icon--line { color: var(--color-teal-400); }

/* Freigestelltes Porträt: kein Rahmen, kein Kasten - läuft in den Seitengrund aus.
   n8' (29.08.): max-width 480px - vorher füllte das Bild die halbe Seitenbreite
   (~550px) und wirkte zu wuchtig. Glow von 640x560 auf 560x500 mitgeschrumpft. */
.philo-portrait { position: relative; align-self: center; max-width: 480px; margin: 0 auto; }
.philo-portrait::after {
  content: ''; position: absolute; left: 50%; top: 44%;
  width: 560px; height: 500px; transform: translate(-50%, -50%);
  background:
    radial-gradient(40% 34% at 50% 52%, rgba(94, 207, 206, 0.6), transparent 70%),
    radial-gradient(70% 60% at 50% 55%, rgba(32, 173, 172, 0.28), transparent 78%);
  filter: blur(20px);
  -webkit-mask-image: linear-gradient(180deg, #000 55%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 55%, transparent 100%);
  z-index: 0; pointer-events: none;
}
.philo-portrait img {
  position: relative; z-index: 1;
  display: block; width: 100%; height: auto;
  filter: contrast(1.22) brightness(1.06) saturate(1.04);
  -webkit-mask-image:
    linear-gradient(180deg, #000 62%, transparent 97%),
    radial-gradient(85% 90% at 50% 40%, #000 55%, transparent 98%);
  mask-image:
    linear-gradient(180deg, #000 62%, transparent 97%),
    radial-gradient(85% 90% at 50% 40%, #000 55%, transparent 98%);
  -webkit-mask-composite: source-in;
  mask-composite: intersect;
}
.philo-portrait__quote {
  position: absolute; right: -4%; bottom: 8%; z-index: 2; max-width: 280px;
  background: rgba(18, 24, 23, 0.82);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 14px; padding: var(--space-5);
  box-shadow: 0 20px 44px rgba(0, 0, 0, 0.5);
  font-style: italic; color: var(--color-white); font-size: 0.95rem; line-height: 1.6;
}
.philo-portrait__quote em { font-style: italic; color: var(--color-teal-400); }
.philo-portrait__quote .quote-card__author { margin-top: var(--space-3); font-style: normal; }
@media (max-width: 900px) {
  .philo-portrait { max-width: 460px; margin: 0 auto; }
  /* Glow an die Bildbreite koppeln, sonst ragt er seitlich aus der Seite */
  .philo-portrait::after { width: 100%; height: 100%; }
  .philo-portrait__quote { right: 0; }
}
@media (max-width: 560px) {
  .philo-portrait__quote { position: static; max-width: none; margin-top: calc(var(--space-5) * -1); }
}

.section--airy { padding-top: var(--space-12); padding-bottom: var(--space-12); }
.accent-strip { height: 220px; max-width: 720px; margin: var(--space-10) auto 0; }

/* ---------- Stat-Panel ---------- */
.stat-panel { border-radius: var(--radius-lg); padding: var(--space-7); position: relative; overflow: hidden; }
.stat-panel__label { font-size: 11px; font-weight: var(--fw-bold); color: var(--color-text-45); text-transform: uppercase; letter-spacing: 0.12em; margin-bottom: var(--space-6); }
.stat-panel__item { margin-bottom: var(--space-6); }
.stat-panel__item:last-child { margin-bottom: 0; }
.stat-panel__number { font-size: 30px; font-weight: var(--fw-extrabold); color: var(--color-teal-400); letter-spacing: -0.02em; line-height: 1; margin-bottom: var(--space-1); text-shadow: var(--glow-zahl-klein); }
.stat-panel__number span { color: var(--color-teal-400); }
.stat-panel__desc { font-size: 12px; color: var(--color-text-55); line-height: 1.5; }
.stat-panel__divider { height: 0; border-top: 1px dashed rgba(255, 255, 255, 0.12); background: none; margin: var(--space-5) 0; }

/* ---------- Feature-Card ---------- */
.feature-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--space-4); }
.feature-card { border-radius: var(--radius-lg); padding: var(--space-6); transition: border-color 0.15s ease; }
.feature-card:hover { border-color: var(--color-border-teal-strong); }
.feature-card__icon { margin-bottom: var(--space-3); }
.feature-card__icon--plain { width: auto; height: auto; justify-content: flex-start; }
.feature-card h3 { font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: 6px; }
.feature-card p { font-size: 13px; color: var(--color-text-55); line-height: 1.7; }

@media (min-width: 1080px) {
  .feature-grid--3 { grid-template-columns: repeat(3, 1fr); }
}
/* .feature-grid--zwei entfernt am 29.08.2026: corporate.html trägt seit dem
   Bento-Umbau .feature-grid--bento, danach benutzte keine HTML-Datei die
   Zwei-Spalten-Variante mehr. */

/* Bento: vier Karten in einem 13-Spalten-Raster, schmal+breit über
   breit+schmal. Innen entsteht ein Versatz, außen bleibt ein sauberes
   Rechteck. Unter 780px fällt das Raster auf eine Spalte zurück, die Spans
   gelten dann nicht mehr. */
.feature-grid--bento { grid-template-columns: 1fr; gap: 22px; }
@media (min-width: 780px) {
  .feature-grid--bento { grid-template-columns: repeat(13, 1fr); }
  .feature-grid--bento > *:nth-child(1) { grid-column: span 5; }
  .feature-grid--bento > *:nth-child(2) { grid-column: span 8; }
  .feature-grid--bento > *:nth-child(3) { grid-column: span 8; }
  .feature-grid--bento > *:nth-child(4) { grid-column: span 5; }
}

/* ---------- Team-Tags ---------- */
.team-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: var(--space-4); }
.team-tag { background: none; border: 1px solid var(--color-border); color: var(--color-text-55); font-size: 11px; font-weight: var(--fw-medium); padding: 4px 10px; border-radius: var(--radius-pill); }

/* ---------- Timeline ---------- */
.timeline { display: flex; flex-direction: column; gap: 0; margin-top: var(--space-10); position: relative; }
.timeline::before { content: ''; position: absolute; left: 23px; top: 0; bottom: 0; width: 1px; background: linear-gradient(180deg, var(--color-teal-500), transparent); opacity: 0.35; }
.timeline-item { display: flex; gap: var(--space-5); align-items: flex-start; padding: var(--space-7) 0; border-bottom: 1px solid var(--color-border-soft); position: relative; }
.timeline-item:last-child { border-bottom: none; }
.timeline-dot {
  width: 48px; height: 48px; flex-shrink: 0;
  background: var(--color-surface-feld); border: 1px solid var(--color-linie-teal);
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: var(--fs-sm); font-weight: var(--fw-bold); color: var(--color-teal-400); letter-spacing: -0.02em;
  position: relative; z-index: 1;
}
.timeline-body { flex: 1; padding-top: var(--space-1); }
.timeline-body h4 { font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-2); }
.timeline-body p { font-size: var(--fs-base); color: var(--color-text-55); line-height: 1.7; max-width: 600px; }

@media (min-width: 780px) {
  .timeline::before { left: 29px; }
  .timeline-dot { width: 58px; height: 58px; font-size: var(--fs-base); }
  .timeline-item { gap: var(--space-8); }
}

/* ---------- Timeline zentral (Über apr) ----------
   Linie in der Mitte, Einträge wechseln die Seite, Studiofoto als Abschluss.
   Eigene Klassen: die .timeline-* oben tragen noch ueber-apr-2.html. */
.tl-center { position: relative; padding: 20px 0; margin-top: var(--space-10); }
/* K9 (31.08.): Die Mittellinie lief als ein durchgehendes .tl-center::before
   bis ganz unten - also mitten durch das Studiofoto (dessen Maske läuft an
   den Rändern transparent aus, die Linie schien durch). Jetzt zeichnet jede
   Reihe AUSSER der Schlussreihe ihr eigenes Linienstück und überbrückt mit
   bottom:-74px den Reihenabstand - die Linie endet damit exakt im Knoten
   der Schlussreihe. Beim Ändern des Reihenabstands (margin-bottom) den
   negativen bottom-Wert mitziehen. */
.tl-row { position: relative; display: grid; grid-template-columns: 1fr 1fr; margin-bottom: 74px; }
.tl-row:last-child { margin-bottom: 0; }
.tl-row:not(.tl-row--end)::before {
  content: ''; position: absolute; left: 50%; top: 0; bottom: -74px; width: 1.5px;
  transform: translateX(-50%); background: rgba(94, 207, 206, 0.4);
}
.tl-row:first-child::before {
  background: linear-gradient(180deg, transparent, rgba(94, 207, 206, 0.4) 40%);
}
.tl-node {
  position: absolute; left: 50%; top: 0; transform: translate(-50%, -6px);
  width: 52px; height: 52px; border-radius: 50%;
  border: 2px solid var(--color-teal-400); background: var(--color-bg-950);
  display: grid; place-items: center; z-index: 1;
  box-shadow: 0 0 22px rgba(32, 173, 172, 0.35);
}
.tl-node i { width: 16px; height: 16px; border-radius: 50%; background: var(--color-teal-400); }
.tl-year {
  position: absolute; top: 2px; font-size: 42px; line-height: 1;
  font-weight: var(--fw-extrabold); letter-spacing: 0.02em; color: var(--color-teal-400);
}
/* K6/K7 (31.08.): Der Verbinder war 120px lang und lief mitsamt Endpunkt
   HINTER der Jahreszahl durch. Jetzt ein kurzer Stummel, der VOR der Zahl
   endet - der Punkt sitzt zwischen Linie und Zahl statt hinter den Ziffern.
   Gilt für die ganze Timeline (beide Seiten). */
.tl-conn { position: absolute; top: 19px; width: 24px; height: 1.5px; background: rgba(94, 207, 206, 0.4); }
.tl-conn::after {
  content: ''; position: absolute; top: 50%; width: 12px; height: 12px;
  border-radius: 50%; background: var(--color-teal-400); transform: translateY(-50%);
}
.tl-body h4 { font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-2); }
.tl-body p { font-size: var(--fs-base); color: var(--color-text-65); line-height: 1.7; max-width: 46ch; }
.tl-body .result-tag { margin-top: var(--space-3); }

/* rechte Einträge */
.tl-row--r .tl-body { grid-column: 2; padding: 64px 0 0 60px; }
.tl-row--r .tl-year { left: calc(50% + 60px); }
.tl-row--r .tl-conn { left: calc(50% + 28px); }
.tl-row--r .tl-conn::after { right: -4px; }

/* linke Einträge, rechtsbündig */
.tl-row--l .tl-body { grid-column: 1; padding: 64px 60px 0 0; text-align: right; justify-self: end; }
.tl-row--l .tl-body p { margin-left: auto; }
.tl-row--l .tl-year { right: calc(50% + 60px); }
.tl-row--l .tl-conn { right: calc(50% + 28px); }
.tl-row--l .tl-conn::after { left: -4px; }

/* Studiofoto als Abschluss: kein Rahmen, Ränder laufen aus, Glow dahinter */
.tl-row--end .tl-body { grid-column: 1 / -1; padding-top: 70px; text-align: center; }
.tl-studio { position: relative; width: min(620px, 90%); margin: 0 auto; aspect-ratio: 16 / 9; isolation: isolate; }
.tl-studio::before {
  content: ''; position: absolute; left: 50%; top: 50%; width: 150%; height: 170%;
  transform: translate(-50%, -50%); z-index: -1; pointer-events: none;
  background: radial-gradient(50% 50% at 50% 50%, rgba(94, 207, 206, 0.7), rgba(32, 173, 172, 0.3) 50%, transparent 80%);
  filter: blur(34px);
}
.tl-studio img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  filter: contrast(1.1) saturate(0.92) brightness(0.92);
  -webkit-mask-image: radial-gradient(ellipse 48% 58% at 50% 50%, #000 25%, rgba(0, 0, 0, 0.55) 50%, transparent 72%);
  mask-image: radial-gradient(ellipse 48% 58% at 50% 50%, #000 25%, rgba(0, 0, 0, 0.55) 50%, transparent 72%);
}
/* K8 (31.08.): Bildunterschrift als Milchglas-Blase wie die Zitatkarte am
   Porträt (.philo-portrait__quote) - gleiche Glaswerte, sitzt auf dem Bild. */
.tl-studio__cap {
  position: absolute; left: 50%; bottom: 14px; transform: translateX(-50%); z-index: 1;
  font-size: var(--fs-base); color: var(--color-text-65); white-space: nowrap;
  background: rgba(18, 24, 23, 0.82);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 14px; padding: 10px 18px;
  box-shadow: 0 20px 44px rgba(0, 0, 0, 0.5);
}
.tl-studio__cap b { color: var(--color-white); }

@media (max-width: 760px) {
  /* K9: Linienstücke folgen der Linie nach links; Reihenabstand ist hier
     52px, also auch der Überbrückungswert. */
  .tl-row:not(.tl-row--end)::before { left: 26px; bottom: -52px; }
  .tl-row { grid-template-columns: 1fr; margin-bottom: 52px; }
  .tl-node { left: 26px; transform: translate(-50%, -4px); width: 40px; height: 40px; }
  .tl-node i { width: 12px; height: 12px; }
  .tl-row--r .tl-body, .tl-row--l .tl-body { grid-column: 1; padding: 0 0 0 64px; text-align: left; justify-self: start; }
  .tl-row--l .tl-body p { margin-left: 0; }
  .tl-year { position: static; display: block; font-size: 30px; padding-left: 64px; margin-bottom: var(--space-2); }
  .tl-conn { display: none; }
  /* Glow an die Bildbreite koppeln, sonst ragt er seitlich aus der Seite */
  .tl-studio::before { width: 120%; height: 150%; }
}

/* ---------- Metrics-Banner (Kennzahlen-Leiste) ----------
   Aus der durchgehenden Leiste sind einzelne Milchglas-Karten geworden:
   in Look 2.0 gibt es keine randlosen Bänder mehr. Die Glas-Optik selbst
   kommt aus dem Sammel-Selektor ganz oben. */
.metrics-banner { background: none; border: 0; padding: 0 var(--space-5); }
.metrics-grid { max-width: 1120px; margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--space-4); }
.metric { text-align: center; padding: var(--space-7) var(--space-6); border-radius: var(--radius-lg); }
.metric__num { font-size: 38px; font-weight: var(--fw-extrabold); color: var(--color-teal-400); letter-spacing: -0.02em; line-height: 1.1; text-shadow: var(--glow-zahl); }
/* „bis zu" ist keine Zahl — es steht als ruhige Kleinzeile darüber, ohne
   Glow, damit die eigentliche Kennzahl allein leuchtet. */
.metric__num small { display: block; font-size: 13px; font-weight: var(--fw-semibold); color: var(--color-text-55); letter-spacing: normal; text-shadow: none; margin-bottom: 2px; }
.metric__desc { font-size: 13px; color: var(--color-text-55); line-height: 1.6; max-width: 200px; margin: var(--space-2) auto 0; }
.metrics-source { text-align: center; font-size: var(--fs-xs); color: var(--color-text-45); padding: var(--space-4) var(--space-6) 0; }

@media (min-width: 1080px) {
  .metrics-grid.metrics-grid--3 { grid-template-columns: repeat(3, 1fr); }
}

/* ---------- Kennzahlen als Grafik ----------
   Statt vier gleich aussehender Zahlen bekommt jede Kennzahl die Form, die
   sie erklärt: ein Ring für Anteile, ein Balkenpaar für das Verhältnis, ein
   Wochenraster für die Dauer. Alle Grafiken sind gleich hoch, damit die
   Beschreibungen darunter auf einer Linie stehen. */
.metric__viz { height: 110px; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 12px; }
.metric__big { font-size: 26px; font-weight: var(--fw-extrabold); color: var(--color-teal-400); line-height: 1; text-shadow: var(--glow-zahl-klein); }

/* Ring: der gefüllte Anteil kommt aus dem conic-gradient, die Mitte wird von
   einem Kreis in Kartenfarbe ausgestanzt. */
.metric__ring { width: 110px; height: 110px; border-radius: 50%; display: grid; place-items: center; position: relative; }
.metric__ring::before { content: ''; position: absolute; inset: 9px; border-radius: 50%; background: var(--color-bg-900); }
.metric__ring b { position: relative; font-size: 26px; font-weight: var(--fw-extrabold); color: var(--color-teal-400); text-shadow: var(--glow-zahl-klein); }
.metric__ring--67 { background: conic-gradient(var(--color-teal-400) 0 67%, rgba(255, 255, 255, 0.09) 67% 100%); }
.metric__ring--89 { background: conic-gradient(var(--color-teal-400) 0 89%, rgba(255, 255, 255, 0.09) 89% 100%); }

/* Balkenpaar: nutzt .viz-bar aus dem Vorher/Heute-Vergleich, hier nur enger
   gestellt und linksbündig, weil die Karte sonst mittig zentriert. */
.metric__viz--roi { align-items: stretch; gap: 0; padding: 0 6px; }
.metric__viz--roi .viz-bar { margin-bottom: 0; }
.metric__viz--roi .viz-bar + .viz-bar { margin-top: 12px; }

/* Wochenraster: elf Wochen laufen mit, die zwölfte ist das Ziel und leuchtet
   heller — die Zahl darüber nennt den Zeitraum. */
.metric__wochen { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; }
.metric__wochen i { width: 16px; height: 16px; border-radius: 5px; background: rgba(255, 255, 255, 0.09); }
.metric__wochen i.ist-voll { background: var(--color-teal-500); box-shadow: 0 0 10px rgba(32, 173, 172, 0.5); }
.metric__wochen i.ist-ziel { background: var(--color-teal-400); box-shadow: 0 0 14px rgba(94, 207, 206, 0.8); }

/* ---------- Package-Card (Kurspakete) ---------- */
.package-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-4); }
.package-card { border-radius: var(--radius-lg); overflow: hidden; position: relative; transition: border-color 0.15s ease; display: flex; flex-direction: column; }
.package-card:hover { border-color: var(--color-border-teal-strong); }
.package-card--upcoming { opacity: 0.85; }
.package-card__badge {
  position: absolute; top: var(--space-5); right: var(--space-5);
  background: var(--color-surface-tint-weich); border: 1px solid rgba(32, 173, 172, 0.35); color: var(--color-teal-400);
  font-size: 10.5px; font-weight: var(--fw-bold); letter-spacing: normal; text-transform: none;
  padding: 4px 9px; border-radius: 8px;
}
.package-card__top { padding: var(--space-6) var(--space-6) var(--space-5); position: relative; }
.package-card h3 { font-size: 18px; font-weight: var(--fw-bold); color: var(--color-white); line-height: 1.25; margin: 0 0 var(--space-3); }
/* Preis als EIN Block — das Eurozeichen war abgesetzt und kleiner, was den
   Betrag zerriss (Entwurf .kurs .amount). */
.package-card__price { font-size: 34px; font-weight: var(--fw-extrabold); color: var(--color-teal-400); letter-spacing: -0.02em; line-height: 1; text-shadow: var(--glow-zahl-klein); margin-bottom: 6px; }
.package-card__kk { display: flex; align-items: center; gap: var(--space-2); font-size: 12px; color: var(--color-text-55); font-weight: var(--fw-medium); }
.package-card__features { padding: var(--space-5) var(--space-6) var(--space-6); flex: 1; border-top: 1px dashed rgba(255, 255, 255, 0.12); }
.package-feature { display: flex; align-items: flex-start; gap: 9px; padding: 5px 0; }
/* Der Haken ist wie in den Feature-Listen ein dünner Teal-Ring. */
.package-feature__check {
  width: 17px; height: 17px; border-radius: 50%;
  border: 1px solid var(--color-linie-teal); background: none;
  color: var(--color-teal-400);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; margin-top: 2px;
}
.package-feature__check svg { width: 9px; height: 9px; display: block; }
.package-feature__text { font-size: 13px; color: var(--color-text-65); line-height: 1.5; }
.package-feature__text strong { color: var(--color-white); font-weight: var(--fw-semibold); }
/* Starttermin auf den Paketkarten — sitzt zwischen Kurstitel und Preis. */
.package-card__start { display: inline-flex; align-items: baseline; gap: var(--space-2); font-size: 13px; font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-4); }
.package-card__start span { color: var(--color-text-55); font-weight: var(--fw-medium); }
.package-card__cta { padding: 0 var(--space-6) var(--space-6); }

@media (min-width: 1024px) {
  .package-grid--drei { grid-template-columns: repeat(3, 1fr); }
}

/* ---------- Formular-Kopf & Hinweis ---------- */
.form-header { margin-bottom: var(--space-6); }
.form-header h2 { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); letter-spacing: -0.02em; margin-bottom: 6px; }
.form-header h2 em { font-style: normal; color: var(--color-text-45); }
.form-header p { font-size: 13.5px; color: var(--color-text-55); line-height: 1.7; }
.form-note { text-align: center; font-size: 12px; color: var(--color-text-45); margin-top: var(--space-4); line-height: 1.6; }

/* ---------- Page-Content-Wrapper (Unterseiten) ---------- */
.page-main { max-width: 860px; margin: 0 auto; padding: 0 var(--space-5) var(--space-11); }
.page-main--wide { max-width: 1120px; }

/* ---------- Legal-Card (Impressum/Datenschutz) ---------- */
.legal-card { border-radius: var(--radius-lg); padding: var(--space-7); margin-bottom: var(--space-4); position: relative; overflow: hidden; }
.legal-card h2 { font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-5); display: flex; align-items: center; gap: var(--space-3); }
.legal-card h2 span { color: var(--color-teal-400); }
.legal-card h3 { font-size: var(--fs-base); font-weight: var(--fw-bold); color: var(--color-white); margin: var(--space-5) 0 var(--space-2); }
.legal-card h3:first-of-type { margin-top: 0; }
.legal-card p { font-size: var(--fs-base); color: var(--color-text-55); line-height: 1.8; margin-bottom: var(--space-3); }
.legal-card p:last-child { margin-bottom: 0; }
.legal-card ul, .legal-card ol { color: var(--color-text-55); font-size: var(--fs-base); line-height: 1.8; padding-left: var(--space-6); margin-bottom: var(--space-3); }
.legal-card a { color: var(--color-teal-400); }
.legal-card a:hover { text-decoration: underline; }
.legal-card strong { color: var(--color-white); }
.legal-card > .eyebrow { margin-bottom: var(--space-3); align-self: flex-start; }
.address-block {
  background: var(--color-surface-feld); border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-md); padding: var(--space-5) var(--space-6);
  font-size: var(--fs-base); color: var(--color-text-65); line-height: 2;
}
.address-block strong { color: var(--color-white); }

/* Punktliste (Datenschutz-Aufzählungen) */
.dot-list { list-style: none; display: grid; gap: var(--space-2); margin-bottom: var(--space-3); padding-left: 0; }
.dot-list li { font-size: var(--fs-base); color: var(--color-text-55); line-height: 1.75; display: flex; align-items: flex-start; gap: var(--space-3); }
.dot-list li::before { content: ''; width: 5px; height: 5px; background: var(--color-teal-500); border-radius: 50%; flex-shrink: 0; margin-top: 9px; }

/* Inhaltsverzeichnis */
.toc-list { list-style: none; display: grid; gap: var(--space-3); padding-left: 0; }
.toc-list li { display: flex; align-items: center; gap: var(--space-3); }
.toc-list li::before { content: ''; width: 5px; height: 5px; background: var(--color-teal-500); border-radius: 50%; flex-shrink: 0; }
.toc-list a { font-size: var(--fs-base); color: var(--color-text-55); }
.toc-list a:hover { color: var(--color-teal-400); }

/* Hinweis-Box */
.highlight-box { background: rgba(32, 173, 172, 0.07); border: 1px solid var(--color-border-teal); border-radius: var(--radius-sm); padding: 11px 13px; margin: var(--space-4) 0; }
.highlight-box p { margin: 0; font-size: 12.5px; color: var(--color-text-65); }

/* Rechte-Grid (Datenschutz) */
.rights-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-3); margin-top: var(--space-3); }
.right-item { background: var(--color-surface-feld); border: 1px solid var(--color-border-soft); border-radius: var(--radius-md); padding: var(--space-5); }
.right-icon { margin-bottom: var(--space-3); }
.right-item h4 { font-size: var(--fs-base); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-2); }
.right-item p { font-size: var(--fs-sm); color: var(--color-text-55); line-height: 1.7; margin: 0; }
.rights-grid-followup { margin-top: var(--space-6); }

@media (min-width: 780px) {
  .rights-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ---------- WhatsApp FAB ---------- */
.wa-fab {
  position: fixed; bottom: var(--space-6); right: var(--space-6); z-index: 999;
  width: 56px; height: 56px; border-radius: 50%; background: #25d366;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 12px rgba(37, 211, 102, 0.22);
  opacity: 0; pointer-events: none; transform: scale(0.8);
  transition: opacity 0.3s, transform 0.3s, box-shadow 0.2s;
}
.wa-fab.visible { opacity: 1; pointer-events: all; transform: scale(1); }
.wa-fab:hover { transform: scale(1.08); box-shadow: 0 6px 16px rgba(37, 211, 102, 0.3); }

/* ---------- Scroll-Reveal ---------- */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
}

/* ---------- Fragebogen (Multi-Step Quiz) ---------- */
.quiz-progress-wrap { height: 3px; background: var(--color-border-soft); }
.quiz-progress-fill { height: 100%; background: linear-gradient(90deg, #20adac, #5ecfce); box-shadow: 0 0 12px rgba(32, 173, 172, 0.5); transition: width 0.4s ease; width: 0%; }

.quiz-main { display: flex; justify-content: center; padding: var(--space-8) var(--space-5) var(--space-11); }
.quiz-stage { width: 100%; max-width: 620px; }
.quiz-counter { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--color-text-45); text-align: right; margin-bottom: var(--space-4); }

.question-wrap { animation: quizSlideIn 0.35s ease both; }
@keyframes quizSlideIn {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}

.q-label { font-size: var(--fs-xs); font-weight: var(--fw-bold); color: var(--color-teal-400); text-transform: uppercase; letter-spacing: 0.14em; margin-bottom: var(--space-3); }
.q-text { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); line-height: 1.25; margin-bottom: var(--space-2); letter-spacing: -0.02em; }
.q-sub { font-size: var(--fs-sm); color: var(--color-text-55); margin-bottom: var(--space-6); line-height: 1.5; }
.q-optional { font-size: var(--fs-xs); color: var(--color-text-45); margin-bottom: var(--space-6); }

.options-grid { display: grid; gap: var(--space-3); margin-bottom: var(--space-6); }
.option-card {
  border-radius: var(--radius-md); padding: 14px 18px; cursor: pointer;
  font-family: inherit; font-size: var(--fs-base); font-weight: var(--fw-medium); color: var(--color-text-65);
  transition: all 0.15s ease;
  display: flex; align-items: center; gap: var(--space-3); text-align: left;
}
.option-card:hover { border-color: var(--color-border-teal-strong); color: var(--color-white); }
.option-card.selected { border-color: var(--color-linie-teal); color: var(--color-white); }
.option-card.selected .opt-check { opacity: 1; transform: scale(1); }
.opt-check {
  width: 20px; height: 20px; border-radius: 50%;
  border: 1px solid var(--color-linie-teal); color: var(--color-teal-400);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  opacity: 0; transform: scale(0.5); transition: opacity 0.15s, transform 0.15s;
}
.opt-check svg { width: 10px; height: 10px; }

.scale-grid { display: flex; gap: var(--space-3); margin-bottom: var(--space-6); flex-wrap: wrap; }
.scale-btn {
  flex: 1; min-width: 48px; aspect-ratio: 1;
  border-radius: var(--radius-md); cursor: pointer; font-family: inherit;
  font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--color-text-65);
  transition: all 0.15s ease;
  display: flex; align-items: center; justify-content: center;
}
.scale-btn:hover { border-color: var(--color-border-teal-strong); color: var(--color-white); }
.scale-btn.selected { border-color: var(--color-linie-teal); color: var(--color-white); }
.scale-labels { display: flex; justify-content: space-between; font-size: var(--fs-xs); color: var(--color-text-45); margin-top: calc(-1 * var(--space-4)); margin-bottom: var(--space-6); }

.quiz-btn-row { display: flex; gap: var(--space-3); align-items: center; }

.quiz-result-teaser { border-color: var(--color-border-teal); border-radius: var(--radius-lg); padding: var(--space-6); margin-bottom: var(--space-6); }
.quiz-result-teaser__text { font-size: var(--fs-md); color: var(--color-text-65); line-height: 1.6; }
.quiz-result-teaser__text strong { color: var(--color-teal-400); }

.contact-toggle { display: flex; gap: var(--space-2); margin-bottom: var(--space-5); }
.contact-toggle__btn {
  flex: 1; font-family: inherit; cursor: pointer; text-align: center;
  background: var(--color-surface-feld); border: 1px solid var(--color-border);
  border-radius: var(--radius-sm); padding: 12px 14px;
  font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--color-text-55);
  transition: all 0.15s ease;
}
.contact-toggle__btn.active { border-color: var(--color-linie-teal); background: var(--color-surface-tint); color: var(--color-teal-400); }

.quiz-danke { text-align: center; }
.quiz-danke__icon { color: var(--color-teal-400); margin-bottom: var(--space-5); filter: var(--glow-icon); }
.quiz-danke .q-text { margin-bottom: var(--space-3); }
.quiz-danke .section-sub { margin: 0 auto var(--space-6); }

@media (min-width: 780px) {
  .quiz-main { padding: var(--space-11) var(--space-9) var(--space-12); }
  .q-text { font-size: var(--fs-2xl); }
}

/* ---------- "Clay"-Button (weichere Optik für Lead-Magnet-CTAs) ---------- */
.btn--clay { border-radius: var(--radius-md); padding: var(--space-5) var(--space-8); }

/* ---------- Ebook-Download-Seite (Brücken-Block zum Fragebogen) ---------- */
.ebook-tag {
  display: inline-flex; align-items: center; gap: var(--space-2); align-self: flex-start;
  background: var(--color-surface-tint); border: 1px solid var(--color-border-teal); color: var(--color-teal-400);
  padding: 4px 11px; border-radius: var(--radius-pill);
  font-size: 11px; font-weight: var(--fw-bold); text-transform: uppercase; letter-spacing: 0.1em;
  margin-bottom: var(--space-5);
}
.ebook-bullets { list-style: none; display: grid; gap: var(--space-3); margin-bottom: var(--space-7); padding-left: 0; }
.ebook-bullets li { display: flex; align-items: flex-start; gap: 9px; font-size: var(--fs-base); line-height: 1.6; color: var(--color-text-65); }
.ebook-bullets li::before {
  content: '✓'; flex-shrink: 0; margin-top: 2px;
  width: 17px; height: 17px; border-radius: 50%;
  border: 1px solid var(--color-linie-teal); color: var(--color-teal-400);
  font-size: 10px; display: flex; align-items: center; justify-content: center;
}
.ebook-divider {
  display: flex; align-items: center; gap: var(--space-4); margin: var(--space-9) 0 var(--space-7);
  color: var(--color-text-45); font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: 0.1em;
}
.ebook-divider::before, .ebook-divider::after { content: ''; flex: 1; height: 1px; background: var(--color-border-soft); }
.ebook-bridge { border-color: var(--color-border-teal); border-radius: var(--radius-xl); padding: var(--space-7); text-align: center; }
/* Das Icon über der Brücke steht frei und leuchtet wie alle Icons. */
.ebook-bridge__icon { color: var(--color-teal-400); filter: var(--glow-icon); display: flex; justify-content: center; margin-bottom: var(--space-3); }
.ebook-bridge__icon svg { display: block; width: 32px; height: 32px; }
.ebook-bridge h2 { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-3); letter-spacing: -0.02em; }
.ebook-bridge p { font-size: var(--fs-base); color: var(--color-text-55); line-height: 1.7; margin-bottom: var(--space-6); }

/* ---------- Cal.com Inline-Embed (Danke-Screen Fragebogen) ----------
   Eigene, eindeutige Klassennamen (nicht ".cal-embed"): Cals embed.js injiziert
   selbst eine globale Regel ".cal-embed { min-height: 300px; ... }" — bei
   gleichem Klassennamen würde das unser min-height in der Kaskade überschreiben.
   height:auto + kein overflow-clip: embed.js resized den iframe auf die
   Inhaltshöhe der Monatsansicht, das darf hier nicht gekappt werden. */
.quiz-cal-wrap { border: 1px solid var(--color-border-teal); border-radius: var(--radius-lg); background: var(--color-surface-feld); margin-bottom: var(--space-5); height: auto; }
.quiz-cal-embed { width: 100%; min-height: 900px; }
.quiz-danke__wa-secondary { font-size: var(--fs-sm); color: var(--color-text-45); margin-top: var(--space-6); }
.quiz-danke__wa-secondary a { color: var(--color-teal-400); font-weight: var(--fw-semibold); }

@media (min-width: 780px) {
  .quiz-cal-embed { min-height: 720px; }
}

/* ---------- Funnel-Abschlussseiten (Danke- und eBook-Seiten) ----------
   danke.html, danke-plan.html, danke-individuell.html und die drei
   eBook-Seiten hatten je ein eigenes Stylesheet mit eigener Palette und
   eigener Schrift. Sie laufen jetzt auf denselben Tokens wie der Rest der
   Seite; hier steht nur das Wenige, was die anderen Bausteine nicht schon
   hergeben. Alle sind schmale Einspaltenseiten mit einem Ziel. */
.funnel-main { max-width: 560px; display: flex; flex-direction: column; justify-content: center; min-height: 60vh; padding-top: var(--space-9); }
.funnel-main--zentriert { text-align: center; align-items: center; }
/* Das Häkchen steht frei und leuchtet — kein Kreis mit Rand mehr. */
.funnel-icon {
  width: 64px; height: 64px; margin-bottom: var(--space-6);
  display: flex; align-items: center; justify-content: center;
  color: var(--color-teal-400); filter: var(--glow-icon);
}
.funnel-icon svg { display: block; width: 44px; height: 44px; }
.funnel-titel { font-size: clamp(1.7rem, 6vw, 2.4rem); font-weight: var(--fw-extrabold); line-height: 1.15; letter-spacing: -0.03em; color: var(--color-white); margin-bottom: var(--space-4); }
.funnel-titel em { font-style: normal; color: var(--color-teal-400); text-shadow: 0 0 24px rgba(94, 207, 206, 0.25); }
.funnel-lead { font-size: var(--fs-md); color: var(--color-text-55); line-height: 1.7; max-width: 46ch; margin-bottom: var(--space-8); }
.funnel-main--zentriert .funnel-lead { margin-left: auto; margin-right: auto; }
.funnel-schritte { display: grid; gap: var(--space-3); margin-bottom: var(--space-8); }
/* In der Schrittliste trägt die Zahl den Schritt — dieselbe Optik wie der
   Icon-Kreis im Ablauf, nur kleiner und links statt zentriert. */
.funnel-schritte .step-number { width: 32px; height: 32px; font-size: var(--fs-sm); margin: 0; }
/* Auf der zentrierten Danke-Seite erbt die Schrittliste text-align:center
   und die Zahl steht dann allein am linken Rand, der Text schwebt in der
   Mitte (gesehen 02.09. auf danke-kurs.html). Die Karten bleiben links-
   bündig, nur der Block selbst steht mittig. */
.funnel-main--zentriert .funnel-schritte { text-align: left; width: 100%; max-width: 640px; margin-left: auto; margin-right: auto; }
.funnel-aktion { margin-bottom: var(--space-6); }
.funnel-hilfe { font-size: var(--fs-sm); color: var(--color-text-45); text-align: center; line-height: 1.7; }
.funnel-hilfe a { color: var(--color-teal-400); font-weight: var(--fw-semibold); }
/* Schlanke Fußzeile: diese Seiten führen bewusst nur aufs Rechtliche. */
.funnel-fuss { border-top: 1px solid var(--color-border-soft); margin-top: var(--space-10); padding: var(--space-6) var(--space-5); text-align: center; }
.funnel-fuss a { font-size: var(--fs-xs); color: var(--color-text-45); margin: 0 var(--space-3); }
.funnel-fuss a:hover { color: var(--color-teal-400); }

/* ---------- Link-in-Bio (links.html) ---------- */
.linkbio-main { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--space-9) var(--space-5); }
.linkbio-card { width: 100%; max-width: 420px; text-align: center; }
.linkbio-avatar { width: 112px; height: 112px; border-radius: 50%; object-fit: cover; margin: 0 auto var(--space-5); border: 1px solid var(--color-linie-teal); }
.linkbio-name { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-2); }
.linkbio-tagline { font-size: var(--fs-base); color: var(--color-text-55); margin-bottom: var(--space-8); }
.linkbio-links { display: grid; gap: var(--space-3); }
.linkbio-btn-icon { width: 22px; height: 22px; }
.linkbio-footer { margin-top: var(--space-9); text-align: center; font-size: var(--fs-xs); color: var(--color-text-45); }
.linkbio-footer a { color: var(--color-text-55); }
.linkbio-footer a:hover { color: var(--color-teal-400); }

@media (min-width: 780px) {
  .linkbio-avatar { width: 132px; height: 132px; }
}

/* ---------- Vertrags-Funnel (vertrag.html) ----------
   Persönlicher Abschluss-Link: Zusammenfassung, Vertragstext, Danke-Screen.
   Die drei Zustände der Seite liegen als <section hidden> im HTML, das
   Skript blendet einen davon ein — darum hier keine eigene Sichtbarkeits-
   logik, [hidden] reicht. */
.vertrag-state[hidden] { display: none; }

.vertrag-summary { border-color: var(--color-border-teal); border-radius: var(--radius-xl); padding: var(--space-7); margin-bottom: var(--space-6); }
.vertrag-summary__eyebrow {
  display: block; font-size: var(--fs-xs); font-weight: var(--fw-bold);
  text-transform: uppercase; letter-spacing: 0.18em; color: var(--color-teal-400);
  margin-bottom: var(--space-3);
}
.vertrag-summary__name { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); letter-spacing: -0.02em; }
.vertrag-summary__desc { font-size: var(--fs-sm); color: var(--color-text-55); line-height: 1.7; margin-top: var(--space-2); }
.vertrag-summary__rows { margin-top: var(--space-6); border-top: 1px solid var(--color-border-soft); }
.vertrag-summary__row {
  display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4);
  justify-content: space-between; align-items: baseline;
  padding: var(--space-4) 0; border-bottom: 1px solid var(--color-border-soft);
}
.vertrag-summary__row:last-child { border-bottom: none; padding-bottom: 0; }
.vertrag-summary__row[hidden] { display: none; }
.vertrag-summary__row dt { font-size: var(--fs-xs); font-weight: var(--fw-bold); color: var(--color-text-45); text-transform: uppercase; letter-spacing: 0.08em; }
/* Links ausgerichtet, solange Wert und Label untereinander stehen — erst wenn
   beide nebeneinander passen, wandert der Wert nach rechts. */
.vertrag-summary__row dd { font-size: var(--fs-base); font-weight: var(--fw-semibold); color: var(--color-white); }

/* Vertragstext und Widerrufsbelehrung */
.vertrag-doc { background: var(--color-surface-feld); border: 1px solid var(--color-border-soft); border-radius: var(--radius-md); padding: var(--space-6); margin: var(--space-6) 0; }
.vertrag-doc__title { font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-white); text-transform: none; letter-spacing: normal; margin-bottom: var(--space-4); padding-bottom: var(--space-3); border-bottom: 1px solid var(--color-border-soft); }
.vertrag-doc__intro { font-size: var(--fs-sm); color: var(--color-text-55); line-height: 1.8; margin-bottom: var(--space-5); }
.vertrag-doc__para { margin-bottom: var(--space-5); }
.vertrag-doc__para:last-child { margin-bottom: 0; }
.vertrag-doc__para h4 { font-size: var(--fs-sm); font-weight: var(--fw-bold); color: var(--color-teal-400); letter-spacing: 0.04em; margin-bottom: var(--space-2); }
.vertrag-doc__para p { font-size: var(--fs-sm); color: var(--color-text-55); line-height: 1.8; }
.vertrag-doc__para p + p { margin-top: var(--space-3); }
.vertrag-doc strong { color: var(--color-white); }
.vertrag-doc a { color: var(--color-teal-400); text-decoration: underline; }

/* Sichtbare Platzhalter-Markierung: solange die hier steht, ist der
   Vertragstext nicht fertig — das soll beim Draufschauen auffallen und
   nicht erst dem Kunden. Vor dem Livegang müssen alle weg sein. */
.vertrag-doc__todo {
  font-size: var(--fs-xs) !important; font-weight: var(--fw-bold);
  color: var(--color-text-45) !important; text-transform: uppercase; letter-spacing: 0.06em;
  border: 1px dashed var(--color-border); border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
}

/* Checkbox- und Radio-Zeile */
.form-check { display: flex; align-items: flex-start; gap: var(--space-3); margin-top: var(--space-5); }
.form-check input[type="checkbox"], .form-check input[type="radio"] {
  flex-shrink: 0; width: 20px; height: 20px; margin-top: 2px;
  accent-color: var(--color-teal-500); cursor: pointer;
}
.form-check label {
  font-size: var(--fs-sm); color: var(--color-text-65); line-height: 1.6;
  cursor: pointer; text-transform: none; letter-spacing: normal; font-weight: var(--fw-regular);
}
.form-check label strong { color: var(--color-white); font-weight: var(--fw-bold); }

.vertrag-submit { margin-top: var(--space-7); }
.vertrag-error {
  margin-top: var(--space-4); padding: var(--space-4);
  border: 1px solid var(--color-border); border-radius: var(--radius-sm);
  font-size: var(--fs-sm); color: var(--color-white); line-height: 1.7;
}
.vertrag-error[hidden] { display: none; }

/* Danke-Screen */
.vertrag-danke__nr { font-size: var(--fs-sm); color: var(--color-text-45); margin-top: var(--space-2); }
.vertrag-danke__nr strong { color: var(--color-teal-400); letter-spacing: 0.05em; }
.vertrag-mandat { border-color: var(--color-border-teal); border-radius: var(--radius-xl); padding: var(--space-7); margin-bottom: var(--space-6); text-align: center; }
.vertrag-mandat[hidden] { display: none; }
.vertrag-mandat h3 { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-3); letter-spacing: -0.02em; }
.vertrag-mandat p { font-size: var(--fs-base); color: var(--color-text-55); line-height: 1.7; margin-bottom: var(--space-6); }
.info-box[hidden] { display: none; }
.vertrag-danke__next { text-align: center; font-size: var(--fs-sm); color: var(--color-text-45); line-height: 1.9; }
.vertrag-danke__next a { color: var(--color-teal-400); font-weight: var(--fw-semibold); }

@media (min-width: 560px) {
  .vertrag-summary__row dd { text-align: right; }
}
@media (min-width: 780px) {
  .vertrag-summary, .vertrag-mandat { padding: var(--space-8); }
  .vertrag-doc { padding: var(--space-7); }
}

/* ---------- Kündigungsseite (kuendigung.html) ----------
   Gesetzlicher Kündigungsbutton nach § 312k BGB. Nutzt die Bausteine des
   Vertrags-Funnels weiter; hier steht nur, was dort fehlt. */
.form-header--spaced { margin-top: var(--space-9); }
/* Sprungziel eines Ankers. Die Navigation klebt oben (.navbar-wrap ist
   sticky) und würde die Überschrift sonst verdecken. */
.form-header--anker { scroll-margin-top: 100px; }

/* Radiogruppe — Optik wie .form-check, plus Überschrift darüber */
.form-radio { margin-top: var(--space-6); }
.form-radio__legend { display: block; font-size: 12.5px; font-weight: var(--fw-semibold); color: var(--color-text-65); text-transform: none; letter-spacing: normal; }

/* Felder, die erst durch eine Auswahl auftauchen (Grund, Wunschdatum) */
.form-group--bedingt { margin-top: var(--space-5); }
.form-group--bedingt[hidden] { display: none; }

/* Der Beleg: das ist der Nachweis des Kunden über Datum und Uhrzeit.
   Bewusst nüchtern und dicht — er soll sich ausgedruckt wie ein Beleg
   lesen, nicht wie eine Marketingseite. */
.kuendigung-beleg { border-color: var(--color-border-teal); border-radius: var(--radius-xl); padding: var(--space-7); margin-bottom: var(--space-6); }
.kuendigung-beleg__kopf {
  display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4);
  justify-content: space-between; align-items: baseline;
  padding-bottom: var(--space-4); border-bottom: 1px solid var(--color-border-soft);
}
.kuendigung-beleg__label { font-size: var(--fs-xs); font-weight: var(--fw-bold); color: var(--color-teal-400); text-transform: uppercase; letter-spacing: 0.18em; }
.kuendigung-beleg__nr { font-size: var(--fs-sm); font-weight: var(--fw-bold); color: var(--color-white); letter-spacing: 0.05em; }
.kuendigung-beleg__zeit { display: flex; flex-direction: column; gap: var(--space-1); padding: var(--space-5) 0; border-bottom: 1px solid var(--color-border-soft); }
.kuendigung-beleg__zeit span { font-size: var(--fs-xs); font-weight: var(--fw-bold); color: var(--color-text-45); text-transform: uppercase; letter-spacing: 0.08em; }
.kuendigung-beleg__zeit strong { font-size: var(--fs-lg); font-weight: var(--fw-extrabold); color: var(--color-white); }
.kuendigung-beleg__row {
  display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4);
  justify-content: space-between; align-items: baseline;
  padding: var(--space-3) 0; border-bottom: 1px solid var(--color-border-soft);
}
.kuendigung-beleg__row dt { font-size: var(--fs-xs); font-weight: var(--fw-bold); color: var(--color-text-45); text-transform: uppercase; letter-spacing: 0.08em; }
.kuendigung-beleg__row dd {
  font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--color-white);
  white-space: pre-line;   /* Freitext behält seine Zeilenumbrüche */
}
.kuendigung-beleg__fuss { font-size: var(--fs-xs); color: var(--color-text-45); line-height: 1.7; margin-top: var(--space-5); }
.kuendigung-aktionen { text-align: center; margin-bottom: var(--space-9); }

@media (min-width: 560px) {
  .kuendigung-beleg__row dd { text-align: right; }
}
@media (min-width: 780px) {
  .kuendigung-beleg { padding: var(--space-8); }
}

/* ============================================================
   KURSANMELDUNG (kurs-anmeldung.html)
   Die Seite ist eine Anzeigen-Landeseite: ein Kurs wird per Klick
   gewählt, darunter stehen fünf Felder. Alles darüber hinaus baut
   auf .contact-form und .page-main auf.
   ============================================================ */
.kurs-wahl { display: grid; grid-template-columns: 1fr; gap: var(--space-3); margin-bottom: var(--space-7); }

/* Ein <label> um ein verstecktes Radio: der ganze Block ist klickbar,
   die Tastaturbedienung bleibt aber die des Radios. */
.kurs-karte { position: relative; display: block; cursor: pointer; border-radius: var(--radius-lg); padding: var(--space-6); transition: all 0.15s ease; }
.kurs-karte:hover { border-color: var(--color-border-teal-strong); }
/* Das Radio selbst wird nicht angezeigt, bleibt aber im Fluss und
   damit fokussierbar — display:none nähme es aus der Tab-Reihenfolge. */
.kurs-karte input[type="radio"] { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.kurs-karte:focus-within { border-color: var(--color-linie-teal); }
.kurs-karte--aktiv { border-color: var(--color-linie-teal); }

.kurs-karte__kopf { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); margin-bottom: var(--space-4); }
.kurs-karte__name { font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-white); line-height: 1.25; letter-spacing: -0.01em; }
/* Der Haken oben rechts — unsichtbar, bis die Karte gewählt ist. */
.kurs-karte__haken {
  width: 22px; height: 22px; border-radius: 50%;
  border: 1px solid var(--color-linie-teal); color: var(--color-teal-400);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  opacity: 0; transform: scale(0.5); transition: opacity 0.15s, transform 0.15s;
}
.kurs-karte__haken svg { width: 11px; height: 11px; }
.kurs-karte--aktiv .kurs-karte__haken { opacity: 1; transform: scale(1); }
.kurs-karte__start { display: flex; align-items: baseline; gap: var(--space-2); font-size: 13px; color: var(--color-white); font-weight: var(--fw-bold); margin-bottom: var(--space-2); }
.kurs-karte__start span { color: var(--color-text-55); font-weight: var(--fw-medium); }
.kurs-karte__meta { font-size: 13px; color: var(--color-text-55); line-height: 1.6; }
.kurs-karte__preis { margin-top: var(--space-4); padding-top: var(--space-4); border-top: 1px dashed rgba(255, 255, 255, 0.12); font-size: 13px; color: var(--color-text-55); }
.kurs-karte__preis strong { color: var(--color-white); font-weight: var(--fw-bold); }

/* Empfehlung des Kurs-Finders. Sie hebt die Karte hervor, wählt sie aber
   nicht — der Haken bleibt der Auswahl vorbehalten. Darum ein schwächerer
   Rand als bei --aktiv und die Reihenfolge hier: steht die empfohlene
   Karte auch auf gewählt, gewinnt --aktiv.
   Das Etikett nutzt .eyebrow, das in einer Karte ohnehin zur kleinen
   Teal-Marke wird (siehe .kurs-karte .eyebrow weiter oben). */
.kurs-karte--empfohlen { border-color: var(--color-border-teal-strong); }
.kurs-karte__empfohlen { margin-bottom: var(--space-3); }
/* .eyebrow setzt display:inline-flex und wuerde hidden sonst uebergehen. */
.kurs-karte__empfohlen[hidden] { display: none; }

@media (min-width: 780px) {
  .kurs-wahl { grid-template-columns: repeat(3, 1fr); }
}

/* ---------- Kurs-Finder ----------
   Zwei Fragen über der Kurswahl, die eine Karte hervorheben. Steht
   bewusst als eigene Karte NEBEN dem Formular, nicht darin: die
   Antworten dürfen nirgendwo mitgeschickt werden.
   Die Antwortknöpfe sind .option-card wie im Fragebogen — hier steht
   nur, was es dort nicht schon gibt. */
.kurs-finder { border-radius: var(--radius-xl); padding: var(--space-7); margin-bottom: var(--space-6); }

/* Eingeklappter Zustand: eine Zeile, die sich als Schalter zu erkennen
   gibt, ohne wie eine Handlungsaufforderung auszusehen. */
.kurs-finder__zeile {
  display: flex; align-items: center; gap: var(--space-3); width: 100%;
  background: none; border: 0; padding: 0; cursor: pointer; text-align: left;
  font-family: inherit; font-size: var(--fs-base); font-weight: var(--fw-semibold);
  color: var(--color-text-65); transition: color 0.15s ease;
}
.kurs-finder__zeile:hover { color: var(--color-white); }
.kurs-finder__zeile svg { width: 18px; height: 18px; flex-shrink: 0; color: var(--color-teal-400); filter: var(--glow-icon); }
.kurs-finder__zeile[hidden] { display: none; }
/* Der Pfeil am Zeilenende zeigt, dass sich hier etwas aufklappt. */
.kurs-finder__pfeil { margin-left: auto; color: var(--color-text-45); filter: none; }
.kurs-finder__inhalt[hidden] { display: none; }

.kurs-finder__frage { margin-bottom: var(--space-6); }
.kurs-finder__label { display: block; font-size: 13.5px; font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-3); }
.kurs-finder__optionen { display: grid; grid-template-columns: 1fr; gap: var(--space-2); }
.kurs-finder .option-card { padding: 12px 16px; font-size: 13.5px; }

/* Die Empfehlung. Getönt statt gefüllt, wie jeder andere Teal-Hinweis. */
.kurs-finder__ergebnis {
  display: grid; gap: var(--space-2);
  background: var(--color-surface-tint); border: 1px solid var(--color-border-teal);
  border-radius: var(--radius-md); padding: var(--space-4) var(--space-5);
  margin-bottom: var(--space-5);
}
.kurs-finder__ergebnis[hidden] { display: none; }
.kurs-finder__ergebnis p { font-size: 13px; color: var(--color-text-65); line-height: 1.7; }
.kurs-finder__ergebnis strong { color: var(--color-white); font-weight: var(--fw-bold); }
.kurs-finder__ergebnis p[hidden] { display: none; }

/* Der Ausstieg. Bewusst leise: der Finder ist nie Pflicht. */
.kurs-finder__skip { font-size: 12.5px; color: var(--color-text-45); }
.kurs-finder__skip a { color: var(--color-text-55); text-decoration: underline; text-underline-offset: 3px; }
.kurs-finder__skip a:hover { color: var(--color-white); }

@media (min-width: 560px) {
  .kurs-finder__optionen--kompakt { grid-template-columns: 1fr 1fr; }
}

/* .kurs-split* entfernt am 29.08.2026: seit dem Umbau des Betragskastens am
   25.08. (ein Block, 199 € groß) benutzte keine HTML-Datei diese Klassen mehr.
   Die Erwähnungen in den Glas-Sammellisten oben (Zeilen 89 und 106) sind
   ebenfalls raus. */

/* Danke-Zustand: der Zahlungsbutton ist hier das Einzige, was zählt. */
.kurs-danke__box { border-color: var(--color-border-teal); border-radius: var(--radius-lg); padding: var(--space-7); margin-bottom: var(--space-6); text-align: center; }
.kurs-danke__betrag { font-size: 40px; font-weight: var(--fw-extrabold); color: var(--color-teal-400); line-height: 1; letter-spacing: -0.03em; margin-bottom: var(--space-3); text-shadow: var(--glow-zahl); }
.kurs-danke__label { font-size: 13px; color: var(--color-text-55); line-height: 1.7; }
.kurs-danke__aktion { margin-top: var(--space-6); }
.kurs-danke__hinweis { font-size: 13px; color: var(--color-text-55); line-height: 1.7; margin-top: var(--space-4); }
.kurs-danke__hinweis strong { color: var(--color-white); }

/* Der freiwillig-Hinweis unter dem Krankenkassenfeld sitzt an einem
   Eingabefeld, nicht unter einem Button — darum linksbündig. */
.form-note--links { text-align: left; }

/* Zusammenfassung der Anmeldung — schlichte Zeilenliste. */
.kurs-daten { border-radius: var(--radius-lg); padding: var(--space-6); margin-bottom: var(--space-6); }
.kurs-daten__row { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4); justify-content: space-between; padding: var(--space-3) 0; border-bottom: 1px solid var(--color-border-soft); }
.kurs-daten__row:last-child { border-bottom: 0; }
.kurs-daten__row dt { font-size: 13px; color: var(--color-text-45); }
.kurs-daten__row dd { font-size: 13px; font-weight: var(--fw-bold); color: var(--color-white); }

/* ============================================================
   LEISTUNGSANALYSE (/analyse)
   Läuft auf demselben Gerüst wie der Fragebogen: .quiz-progress-wrap,
   .quiz-main, .quiz-stage, .q-label/.q-text, .options-grid/.option-card,
   .quiz-btn-row, .contact-form/.form-group, .quiz-danke. Hier stehen nur
   die Bausteine, die es dort noch nicht gab.

   Abstufungen (Einsteiger → Fortgeschritten, Ampel) entstehen über
   Füllung und Kontrast, nicht über zusätzliche Signalfarben: Türkis
   bleibt der einzige Akzent.
   ============================================================ */
.analyse-kopf { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-4); }
.analyse-kopf .q-label, .analyse-kopf .quiz-counter { margin-bottom: 0; }

/* Video-Rahmen. Feste 16:9-Box, damit die Seite beim Nachladen des
   YouTube-Iframes nicht springt. */
.analyse-video { position: relative; width: 100%; aspect-ratio: 16 / 9; margin-bottom: var(--space-5); overflow: hidden; border-radius: var(--radius-lg); }
.analyse-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.analyse-video__leer {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-3);
  color: var(--color-text-45); font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: 0.14em;
}
.analyse-video__leer svg { width: 30px; height: 30px; color: var(--color-teal-400); filter: var(--glow-icon); }

/* Ausführungs-Hinweis unter dem Video. */
.analyse-hinweis { display: flex; align-items: flex-start; gap: var(--space-3); font-size: var(--fs-sm); color: var(--color-text-55); line-height: 1.7; margin-bottom: var(--space-6); }
.analyse-hinweis svg { width: 16px; height: 16px; flex-shrink: 0; margin-top: 3px; color: var(--color-teal-400); filter: var(--glow-icon); }

/* Die eigentliche Frage über den Antwortkarten. */
.analyse-frage { font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: var(--space-4); }

/* Folgefrage, die erst durch eine Antwort auftaucht (Schmerz-Screening). */
.analyse-folgefrage { border-top: 1px solid var(--color-border-soft); padding-top: var(--space-6); margin-bottom: var(--space-2); }
.analyse-folgefrage[hidden] { display: none; }

/* Mehrfachauswahl als Kästchen-Raster — echte Checkboxen, damit
   Tastatur und Screenreader dieselbe Auswahl treffen wie die Maus. */
.analyse-regionen { display: grid; grid-template-columns: 1fr; gap: var(--space-2); margin-bottom: var(--space-6); }
.analyse-regionen .form-check {
  margin-top: 0; align-items: center;
  padding: var(--space-3) var(--space-4);
  background: var(--color-surface-feld); border: 1px solid var(--color-border-soft); border-radius: var(--radius-md);
}
.analyse-regionen .form-check:focus-within { border-color: var(--color-border-teal-strong); }
.analyse-regionen .form-check input[type="checkbox"] { margin-top: 0; }

/* Schrittleiste in der Fußzeile einer Frage: „Weiter" trägt die Breite. */
.quiz-btn-row--fuellend .btn--primary { flex: 1; }

/* ---------- Startbildschirm ---------- */
.analyse-start .section-title { margin-bottom: var(--space-4); }
.analyse-start .section-sub { margin-bottom: var(--space-6); max-width: none; }
.analyse-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-6); }

/* ---------- Ergebnis ---------- */
.analyse-ergebnis { text-align: center; margin-bottom: var(--space-8); }
.analyse-ergebnis__wert { font-size: var(--fs-2xl); font-weight: var(--fw-extrabold); color: var(--color-white); letter-spacing: -0.03em; line-height: 1.05; margin: var(--space-3) 0 var(--space-2); }
.analyse-ergebnis__pct { font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-teal-400); text-shadow: var(--glow-zahl-klein); }
.analyse-ergebnis__sub { font-size: var(--fs-sm); color: var(--color-text-45); margin-top: var(--space-2); }

.analyse-blocks { display: grid; gap: var(--space-3); margin-bottom: var(--space-8); }
.analyse-block { border-radius: var(--radius-lg); padding: var(--space-5); }
.analyse-block__kopf { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-4); }
.analyse-block__name { font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--color-white); line-height: 1.3; }
.analyse-block__name span { display: block; margin-top: var(--space-1); font-size: var(--fs-xs); font-weight: var(--fw-regular); color: var(--color-text-45); }
.analyse-balken { height: 9px; border-radius: 5px; background: rgba(255, 255, 255, 0.12); overflow: hidden; }
.analyse-balken__fuell { height: 100%; width: 0; border-radius: 5px; background: linear-gradient(90deg, #20adac, #5ecfce); box-shadow: 0 0 12px rgba(32, 173, 172, 0.5); transition: width 0.8s cubic-bezier(0.22, 0.61, 0.36, 1); }
.analyse-block__pct { text-align: right; font-size: var(--fs-xs); color: var(--color-text-45); margin-top: var(--space-2); }

/* Stufen-Abzeichen: neutral → getönt → Teal-Rand. */
.analyse-stufe {
  flex-shrink: 0; white-space: nowrap;
  padding: 4px 9px; border-radius: 8px;
  font-size: 10.5px; font-weight: var(--fw-bold); text-transform: none; letter-spacing: normal;
  background: rgba(255, 255, 255, 0.05); border: 1px solid var(--color-border); color: var(--color-text-55);
}
.analyse-stufe--mittel { background: var(--color-surface-tint); border-color: var(--color-border-teal); color: var(--color-teal-400); }
.analyse-stufe--hoch { background: var(--color-surface-tint-stark); border-color: var(--color-linie-teal); color: var(--color-teal-400); }

/* Ampel des Schmerz-Screenings — dieselbe Logik ohne zweite Signalfarbe. */
.analyse-ampel { text-align: center; margin-bottom: var(--space-8); }
.analyse-ampel__zeichen {
  width: 72px; height: 72px; margin: 0 auto var(--space-5); border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: var(--fs-xl); font-weight: var(--fw-extrabold);
  background: var(--color-surface-feld); border: 1px solid var(--color-border-soft); color: var(--color-text-55);
}
.analyse-ampel__zeichen--gut { border-color: var(--color-linie-teal); color: var(--color-teal-400); }
.analyse-ampel__zeichen--beobachten { background: var(--color-surface-tint); border-color: var(--color-border-teal); color: var(--color-teal-400); }
.analyse-ampel__zeichen--abklaeren { background: var(--color-surface-feld); border-color: var(--color-border); color: var(--color-white); }
.analyse-ampel__stufe { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); letter-spacing: -0.02em; margin-bottom: var(--space-3); }
.analyse-ampel__text { font-size: var(--fs-base); color: var(--color-text-55); line-height: 1.7; max-width: 46ch; margin: 0 auto; }

/* Warnkarte, wenn zuerst eine Fachperson schauen soll. Bewusst ohne
   Türkis: das ist kein Angebot, sondern ein Stoppschild. */
.analyse-warnung { background: var(--color-surface-feld); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-6); margin-bottom: var(--space-8); }
.analyse-warnung__kopf { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-3); font-size: var(--fs-sm); font-weight: var(--fw-bold); color: var(--color-white); }
.analyse-warnung__kopf svg { width: 18px; height: 18px; flex-shrink: 0; }
.analyse-warnung p { font-size: var(--fs-sm); color: var(--color-text-65); line-height: 1.8; }

/* Angebots-Karte am Ende der Auswertung. */
.analyse-cta { border-color: var(--color-border-teal); border-radius: var(--radius-lg); padding: var(--space-7); margin-bottom: var(--space-6); text-align: center; }
.analyse-cta h3 { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--color-white); letter-spacing: -0.02em; margin-bottom: var(--space-3); }
.analyse-cta p { font-size: var(--fs-base); color: var(--color-text-55); line-height: 1.7; margin-bottom: var(--space-6); }
.analyse-cta__hinweis { font-size: var(--fs-xs); color: var(--color-text-45); margin: 0 0 var(--space-5); }

.analyse-fussnote { max-width: 52ch; margin: 0 auto var(--space-6); text-align: center; font-size: var(--fs-xs); color: var(--color-text-45); line-height: 1.7; }
.analyse-neustart { text-align: center; }

/* Fehlermeldung des Ergebnis-Formulars (Absenden fehlgeschlagen). */
.analyse-formfehler { margin-top: var(--space-4); padding: var(--space-4); border: 1px solid var(--color-border); border-radius: var(--radius-sm); font-size: var(--fs-sm); color: var(--color-white); line-height: 1.7; }
.analyse-formfehler[hidden] { display: none; }
/* Die Bestätigung ersetzt den Formularinhalt in derselben Karte,
   damit darunter nichts nach oben rutscht. */
.analyse-danke { padding: var(--space-2) 0; }

@media (min-width: 560px) {
  .analyse-regionen { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 780px) {
  .analyse-ergebnis__wert { font-size: var(--fs-3xl); }
}
@media (prefers-reduced-motion: reduce) {
  .analyse-balken__fuell { transition: none; }
}

/* ==========================================================================
   SCHRITT-FUNNEL — kurs-anmeldung.html

   Ein Abschnitt pro Bildschirm statt einer langen Seite. Gedacht für
   Besucher aus Anzeigen: die springen ab, bevor sie unten ankommen.

   Das Ein- und Ausblenden macht ausschliesslich das Skript über das
   hidden-Attribut. Hier steht nur, dass hidden wirklich versteckt —
   ohne die Regel gewinnt das display der jeweiligen Komponente
   (.kurs-finder etwa ist ein Block mit eigenem Rahmen).

   Ohne JavaScript trägt kein Element hidden, dann stehen alle Schritte
   untereinander und die Seite ist wieder die lange Fassung.
   ========================================================================== */
.schritt[hidden],
.schritt__nav[hidden],
.funnel-fortschritt[hidden],
.funnel-uebersicht[hidden],
[data-nur-schritt][hidden] { display: none !important; }

/* Der sichtbare Schritt fährt kurz ein. Nur ein Hauch Bewegung: das soll
   den Wechsel begreiflich machen, nicht auffallen. */
.schritt:not([hidden]) { animation: schritt-ein 0.22s ease both; }
@keyframes schritt-ein {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}

/* ---------- Fortschritt ---------- */
.funnel-fortschritt { max-width: 760px; margin: 0 auto var(--space-7); padding: 0 var(--space-5); }
.funnel-fortschritt__kopf {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-4);
  margin-bottom: var(--space-3);
}
.funnel-fortschritt__zaehler {
  font-size: var(--fs-xs); font-weight: var(--fw-bold); letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--color-teal-400);
}
.funnel-fortschritt__titel {
  font-size: var(--fs-sm); color: var(--color-text-55); text-align: right;
}
.funnel-fortschritt__bahn {
  height: 4px; border-radius: 999px; overflow: hidden;
  background: rgba(255, 255, 255, 0.1);
}
.funnel-fortschritt__balken {
  display: block; height: 100%; width: 20%; border-radius: 999px;
  background: linear-gradient(90deg, var(--color-teal-500), var(--color-teal-400));
  box-shadow: 0 0 12px rgba(32, 173, 172, 0.5);
  transition: width 0.35s cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* ==========================================================================
   KURS-BUCHEN (kurs-buchen.html) — Stripe-Funnel, zwei Schritte
   --------------------------------------------------------------------------
   Die Seite benutzt fast durchweg, was es schon gibt: .kurs-karte für die
   Kurse UND die Zahlwege, .funnel-fortschritt für den Balken, .kurs-daten
   für die Bestellübersicht, .kurs-danke__box für den Preis, .glas für den
   Hilfe-Kasten. Hier steht nur, was es dafür noch nicht gab.
   ========================================================================== */

/* Vertrauenszeile über der Kurswahl: dieselbe Punktliste wie im
   Datenschutz, nur nebeneinander statt untereinander. Drei kurze
   Tatsachen für jemanden, der von einer Anzeige kommt und die Marke
   nicht kennt. */
.dot-list--reihe {
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: var(--space-2) var(--space-6);
  margin: 0 auto var(--space-8); max-width: 760px; padding: 0 var(--space-5);
}
.dot-list--reihe li { font-size: 13px; gap: var(--space-2); }
.dot-list--reihe li::before { margin-top: 7px; }

/* „Noch N Plätze frei" auf einer Kurskarte. Nutzt .eyebrow, das in einer
   Karte ohnehin zur kleinen Teal-Marke wird (siehe .kurs-karte .eyebrow);
   der Kippschalter ist dort schon abgeschaltet, hier kommt ein Punkt
   davor dazu. Der Chip erscheint NUR bei fünf oder weniger Plätzen —
   sonst ist er keine Information, sondern Druck. */
.kurs-karte__plaetze { margin-bottom: var(--space-3); }
/* .eyebrow setzt display:inline-flex und würde hidden sonst übergehen. */
.kurs-karte__plaetze[hidden] { display: none; }
.kurs-karte__plaetze::before {
  content: ''; flex-shrink: 0;
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--color-teal-400);
  box-shadow: 0 0 8px rgba(94, 207, 206, 0.6);
}

/* Ausgebucht. Die Karte bleibt stehen und lesbar — verschwinden würde
   die Auswahl unter dem Cursor verschieben —, ist aber nicht mehr
   anklickbar. Das Radio darin wird im Skript zusätzlich disabled,
   damit auch Tastatur und Vorlesegerät es nicht mehr erreichen. */
.kurs-karte--aus { opacity: 0.5; cursor: not-allowed; }
.kurs-karte--aus:hover { border-color: var(--glass-line); }
.kurs-karte--aus .kurs-karte__plaetze {
  background: rgba(255, 255, 255, 0.05);
  border-color: var(--color-border-soft);
  color: var(--color-text-45);
}
.kurs-karte--aus .kurs-karte__plaetze::before {
  background: var(--color-text-45); box-shadow: none;
}

/* Nebentür für Unentschlossene: ein Glaskasten mit zwei kleinen
   Knöpfen. Steht unter der Kurswahl, nicht darüber — wer weiß, was er
   will, soll nicht erst an einer Frage vorbei. */
.hilfe-box { border-radius: var(--radius-lg); padding: var(--space-6); margin-bottom: var(--space-8); }
.hilfe-box h3 { font-size: 15px; font-weight: var(--fw-bold); color: var(--color-white); margin-bottom: 6px; }
.hilfe-box p { font-size: 13px; color: var(--color-text-55); line-height: 1.7; margin-bottom: var(--space-4); }
.hilfe-box__knoepfe { display: flex; flex-wrap: wrap; gap: var(--space-3); }

/* Der Satz unter dem zahlungspflichtigen Knopf: wo die persönlichen
   Daten abgefragt werden. Ohne ihn wirkt der Knopf, als führe er ins
   Nichts — auf dieser Seite steht kein einziges Eingabefeld. */
.stripe-hinweis {
  display: flex; align-items: flex-start; gap: var(--space-2);
  font-size: 12px; color: var(--color-text-45); line-height: 1.6;
  margin-top: var(--space-4); justify-content: center; text-align: center;
}

/* ---------- Weiter / Zurück ---------- */
.schritt__nav {
  display: flex; gap: var(--space-3); align-items: center;
  margin-top: var(--space-8);
}
/* Weiter trägt den Weg und steht darum rechts und breit; Zurück ist die
   leise Nebentür und bekommt nur so viel Platz, wie es braucht. */
.schritt__weiter { flex: 1 1 auto; justify-content: center; }
.schritt__zurueck { flex: 0 0 auto; }
/* Im letzten Schritt steht Zurück allein unter dem Absende-Knopf — dort
   soll es nicht so aussehen, als gäbe es zwei gleichwertige Wege. */
.schritt__nav--zurueck { margin-top: var(--space-5); justify-content: flex-start; }

/* ---------- Bestellübersicht im letzten Schritt ---------- */
.funnel-uebersicht { margin-top: var(--space-7); margin-bottom: var(--space-6); }

/* ---------- Kurswahl im Schritt-Modus: drei Karten, ein Blick ----------
   Auf der langen Seite darf eine Kurskarte ausführlich sein - dort liest
   man sie nacheinander. Im Funnel ist die Kurswahl EINE Entscheidung, und
   die trifft man nur gut, wenn alle drei Karten gleichzeitig zu sehen
   sind. Also: Preiszeile raus (der Preis steht gross darüber und ist bei
   allen dreien gleich), Rhythmus raus (steht später in der Übersicht),
   Abstände enger. Übrig bleibt, was die Karten unterscheidet - Name,
   Starttermin, Inhalt. */
.js-schritte .kurs-wahl { gap: var(--space-2); margin-bottom: var(--space-5); }
.js-schritte .kurs-karte { padding: var(--space-4) var(--space-5); }
.js-schritte .kurs-karte__kopf { margin-bottom: var(--space-2); }
.js-schritte .kurs-karte__start { margin-bottom: 2px; }
.js-schritte .kurs-karte__meta { font-size: 12.5px; }
.js-schritte .kurs-karte__meta .js-rhythmus,
.js-schritte .kurs-karte__meta br,
.js-schritte .kurs-karte__preis { display: none; }
.js-schritte .kurs-karte__empfohlen { margin-bottom: var(--space-2); }

/* Der Preiskasten trägt im Funnel nur noch die Zahl und einen Satz -
   in voller Grösse schöbe er die Karten aus dem Bild. */
.js-schritte .kurs-danke__box { padding: var(--space-5); margin-bottom: var(--space-5); }
.js-schritte .kurs-danke__box .kurs-danke__betrag { font-size: var(--fs-2xl); }

/* Die Fragen stehen als oberstes auf dem Bildschirm - der Untertitel
   darunter ist Beiwerk und darf leiser sein als die Frage selbst. */
.form-header__klein { font-size: 12.5px; color: var(--color-text-45); }

/* ---------- Check & Train: Ablauf in einer Zeile ----------
   Analyse → 8 Wochen → Recheck. Bewusst eine schmale Zeile und keine drei
   Kacheln: Der Ablauf muss erkennbar sein, ohne die Wahl darunter aus dem
   Bild zu schieben. Auf schmalen Geräten stehen die Punkte untereinander,
   aber ohne Kartenrahmen - sie bleiben Beiwerk. */
.ct-ablauf {
  display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5);
  list-style: none; margin: 0 0 var(--space-5); padding: 0;
}
.ct-ablauf li {
  display: flex; align-items: center; gap: var(--space-2);
  font-size: 12.5px; color: var(--color-text-55);
}
.ct-ablauf strong {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 50%; flex-shrink: 0;
  font-size: 11px; font-weight: var(--fw-bold);
  background: var(--color-surface-tint); border: 1px solid var(--color-border-teal);
  color: var(--color-teal-400);
}

/* ---------- Zahlweg als Karten ----------
   Dieselbe Bauart wie die Kurswahl (.kurs-karte), damit der letzte Schritt
   aussieht wie der Schritt davor: eine Reihe Karten, eine davon markiert.
   Reihenfolge im Markup: Anzahlung, Frage, Vollzahlung. */
.zahlweg-wahl { margin-bottom: var(--space-6); }
/* Der Abstand über einer Überschrift trennt sie vom Abschnitt darüber.
   Im Funnel gibt es darüber nichts - dort ist es nur Leerraum, der die
   Entscheidung aus dem Bild schiebt. */
.js-schritte .schritt > .form-header--spaced { margin-top: 0; }
.zahlweg-wahl .form-radio__legend { margin-bottom: var(--space-1); }
.zahlweg-wahl .kurs-karte__meta { line-height: 1.55; }

/* Zwei Zahlwege statt drei (kurs-buchen.html — dort gibt es den Frage-Weg
   nicht mehr). Ohne das säße die Beschriftung im Dreierraster in einer
   eigenen Spalte neben den Karten. kurs-anmeldung.html bleibt unberührt. */
@media (min-width: 780px) {
  .zahlweg-wahl--zwei { grid-template-columns: repeat(2, 1fr); }
  .zahlweg-wahl--zwei .form-radio__legend { grid-column: 1 / -1; }
}

@media (max-width: 559px) {
  /* Auf dem Handy stehen die beiden Knöpfe untereinander, Weiter oben:
     der Daumen liegt dort, und Zurück soll man nicht aus Versehen treffen. */
  .schritt__nav { flex-direction: column-reverse; align-items: stretch; }
  .funnel-fortschritt__kopf { flex-direction: column; gap: var(--space-1); }
  .funnel-fortschritt__titel { text-align: left; }
}

@media (prefers-reduced-motion: reduce) {
  .schritt:not([hidden]) { animation: none; }
  .funnel-fortschritt__balken { transition: none; }
}

/* ============================================================
   EINBLICKE (index.html)

   Video-Sektion der Startseite: oben über die volle Breite das
   große Spotlight-Video, darunter die übrigen Videos als Raster
   aus gleich großen Kacheln, darüber die Kategorie-Pillen.
   Aufgebaut wird alles von js/einblicke.js — hier steht
   ausschließlich die Optik.

   Jede Kachel hat ein festes Seitenverhältnis (16:9, wie die
   YouTube-Vorschaubilder), damit beim Nachladen der Bilder und
   beim Wechsel des Spotlights nichts springt. Der Titel ist auf
   zwei Zeilen begrenzt, damit alle Kacheln einer Reihe exakt
   gleich hoch bleiben.
   ============================================================ */
.einblicke-titelblock { display: flex; flex-direction: column; gap: var(--space-3); align-items: flex-start; }

.einblicke-filter {
  display: flex; gap: var(--space-2); max-width: 100%;
  overflow-x: auto; padding-bottom: var(--space-2);
  scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.einblicke-filter::-webkit-scrollbar { display: none; }
.einblicke-pill {
  flex-shrink: 0; cursor: pointer; font-family: inherit;
  background: transparent; border: 1px solid var(--color-border);
  color: var(--color-text-55); border-radius: var(--radius-pill);
  padding: 6px 14px;
  font-size: 12px; font-weight: var(--fw-semibold);
  text-transform: none; letter-spacing: normal;
  transition: all 0.15s ease;
}
.einblicke-pill:hover { border-color: var(--color-border-teal-strong); color: var(--color-white); }
.einblicke-pill.is-aktiv { background: var(--color-surface-tint); border-color: var(--color-linie-teal); color: var(--color-teal-400); }

.einblicke-caro { display: flex; align-items: center; justify-content: center; gap: 6px; perspective: 1100px; }
.einblicke-vc {
  position: relative; flex: 0 0 210px; height: 280px;
  border-radius: 16px; overflow: hidden;
  border: 1px solid var(--glass-line); background: var(--color-bg-950);
  box-shadow: 0 20px 44px rgba(0, 0, 0, 0.45);
  padding: 0; font-family: inherit; color: inherit; text-align: left; cursor: pointer;
  transition: transform 0.25s ease, box-shadow 0.25s ease, opacity 0.25s ease;
}
.einblicke-vc[disabled] { cursor: default; }
.einblicke-vc .einblicke-bild { width: 100%; height: 100%; object-fit: cover; display: block; }
.einblicke-vc__veil { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10, 13, 13, 0.05) 40%, rgba(10, 13, 13, 0.82) 100%); }
.einblicke-vc__meta { position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 16px; display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; }
.einblicke-vc__titel { display: block; font-size: 13.5px; font-weight: var(--fw-bold); color: var(--color-white); line-height: 1.3; }
.einblicke-vc__sub { display: block; font-size: 11px; color: var(--color-text-55); margin-top: 2px; }
.einblicke-vc__badge {
  flex-shrink: 0; font-size: 10.5px; font-weight: var(--fw-bold); color: var(--color-white);
  background: var(--color-surface-feld); border: 1px solid var(--color-border);
  border-radius: 7px; padding: 3px 8px;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.einblicke-vc__play {
  position: absolute; left: 50%; top: 44%; transform: translate(-50%, -50%);
  width: 52px; height: 52px; border-radius: 50%;
  background: rgba(32, 173, 172, 0.9); color: #fff;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 0 22px rgba(32, 173, 172, 0.55);
}
.einblicke-vc__play svg { width: 20px; height: 20px; margin-left: 3px; display: block; }
/* Steht noch kein Video bereit, gibt es auch nichts abzuspielen — der
   Knopf würde sonst etwas versprechen, was der Klick nicht einlöst. */
.einblicke-vc[disabled] .einblicke-vc__play { display: none; }
.einblicke-vc.is-l2 { transform: rotateY(38deg) scale(0.86); opacity: 0.5; }
.einblicke-vc.is-l1 { transform: rotateY(28deg) scale(0.93); opacity: 0.8; z-index: 2; }
.einblicke-vc.is-c { flex: 0 0 290px; height: 350px; z-index: 3; border-color: rgba(94, 207, 206, 0.35); box-shadow: 0 30px 60px rgba(0, 0, 0, 0.55), 0 0 50px rgba(32, 173, 172, 0.22); }
.einblicke-vc.is-r1 { transform: rotateY(-28deg) scale(0.93); opacity: 0.8; z-index: 2; }
.einblicke-vc.is-r2 { transform: rotateY(-38deg) scale(0.86); opacity: 0.5; }
.einblicke-vc:hover { opacity: 1; }
.einblicke-vc.is-c:hover { transform: translateY(-6px); }
/* Das Iframe ersetzt die Mittelkachel und braucht ihre Maße. */
.einblicke-caro iframe { flex: 0 0 290px; height: 350px; border: 0; border-radius: 16px; z-index: 3; }
.einblicke-caro-cta { text-align: center; margin-top: var(--space-8); }

@media (max-width: 900px) {
  /* Der Selektor braucht die Kacheln-in-Buehne-Spezifitaet, sonst behalten
     .is-l2/.is-r2 hier ihre halbe Deckkraft und wirken wie Fehler. */
  .einblicke-caro { flex-wrap: wrap; perspective: none; gap: var(--space-3); }
  .einblicke-caro .einblicke-vc { flex: 1 1 40%; height: 200px; transform: none; opacity: 1; }
  .einblicke-caro .einblicke-vc.is-c { flex: 1 1 100%; height: 260px; order: -1; }
  .einblicke-caro iframe { flex: 1 1 100%; height: 260px; order: -1; }
}
@media (prefers-reduced-motion: reduce) {
  .einblicke-vc { transition: none; }
}

/* Kachel ohne echte Video-ID. */
.einblicke-leer {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--space-2); padding: var(--space-3); text-align: center;
  background: var(--color-surface-feld);
  color: var(--color-text-45);
  font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: 0.14em;
}
.einblicke-leer svg { width: 26px; height: 26px; color: var(--color-teal-400); filter: var(--glow-icon); }
/* Auf den gekippten Seitenkacheln ist weniger Platz als in der Mitte. */
.einblicke-vc:not(.is-c) .einblicke-leer svg { width: 20px; height: 20px; }

@media (prefers-reduced-motion: reduce) {
  .einblicke-pill { transition: none; }
}

/* Ausdruck: Der Beleg ist das Einzige, was aufs Papier gehört. Dunkler
   Hintergrund wird beim Drucken ohnehin meist weggelassen — darum hier
   ausdrücklich auf Schwarz-auf-Weiß umstellen, sonst kommt im Zweifel
   weiße Schrift auf weißem Papier heraus. */
@media print {
  .aurora, .topbar, .navbar-wrap, .site-footer, .kuendigung-aktionen,
  .vertrag-danke__next, .page-hero .eyebrow, .wa-fab { display: none !important; }

  body, .page { background: #fff !important; color: #000 !important; }
  .page-main { max-width: none; padding: 0; }
  .page-hero { padding: 0 0 var(--space-5); text-align: left; align-items: flex-start; }
  .page-hero .section-title, .page-hero .section-sub { color: #000 !important; text-align: left; margin: 0; }
  .section-title em { color: #000 !important; }

  .kuendigung-beleg {
    background: #fff !important; border: 1px solid #000; box-shadow: none;
    border-radius: 0; padding: 16px; margin: 0;
    backdrop-filter: none; -webkit-backdrop-filter: none;
  }
  .kuendigung-beleg__label, .kuendigung-beleg__nr,
  .kuendigung-beleg__zeit span, .kuendigung-beleg__zeit strong,
  .kuendigung-beleg__row dt, .kuendigung-beleg__row dd,
  .kuendigung-beleg__fuss { color: #000 !important; }
  .kuendigung-beleg__kopf, .kuendigung-beleg__zeit,
  .kuendigung-beleg__row { border-color: #999 !important; }
}
