/* /akademie/stimmen — Stimmen-Seite.
   Vier Register: Grußwort + Zertifikatsübergabe als Auftakt auf dem orangen
   Markenband (Kern-Zitat, Attribution, „Grußwort lesen" öffnet das Lesefenster),
   rotierendes Verbandszitat (geteiltes Carousel der Startseite), dunkles
   Praxis-Modul mit nummerierten Zeilen, Videoreihe mit Zwei-Klick-Gate. */

.stv-h2 {
  font-size: clamp(36px, 4.4vw, 60px);
  margin: 12px 0 0;
}

.stv-intro {
  margin: 20px 0 0;
  max-width: 62ch;
  font-family: 'Univers', Ebrima, sans-serif;
  font-size: 17px;
  line-height: 1.65;
  color: var(--dakby-ink-700, #4a4a4a);
}

/* ── 1 · Verbandsstatements — Rotation ──────────────────────────────────── */

.stv-verbaende {
  background: #fff;
  padding-top: 96px;
}

.stv-verbaende .stv-band-head {
  padding-bottom: 8px;
}

/* The shared carousel brings its own generous padding; trim it so the band
   header and the quote read as ONE section. */
.stv-rotation > .wrap {
  padding-top: 40px !important;
  padding-bottom: 88px !important;
}

/* ── 2 · Erfahrungen aus der Praxis — gestapelte, gepinnte Flächen ──────────
   Grundzustand (Mobil, reduced motion, alte Browser): normale dunkle Zeilen im
   Dokumentfluss. Die Scroll-Choreografie lebt AUSSCHLIESSLICH in der
   Media-Query weiter unten: Desktop-Viewports mit voller Bewegungspräferenz
   pinnen jede Fläche (`top: min(0, 100vh − Höhe)`, gemessen von der Seite als
   `--stv-stick`), lassen den Text durchlaufen und schieben die nächste Fläche
   von unten darüber; der linke Anker (Nummer · Portrait · Attribution) ruht
   dabei per innerem sticky. `overflow: clip` statt `hidden`, weil ein
   Scroll-Container als Vorfahr jedes position:sticky im Innern lahmlegt. */

.stv-praxis {
  position: relative;
  background: #111;
  color: #fff;
  padding: 104px 0 0;
  overflow: clip;
}

.stv-praxis .stv-h2 {
  color: #fff;
}

.stv-praxis .stv-intro {
  color: #c5c5c4;
}

.stv-praxis-mark {
  position: absolute;
  top: -0.08em;
  right: -0.06em;
  font-family: 'Univers Condensed', Univers, serif;
  font-weight: 700;
  font-size: clamp(320px, 34vw, 620px);
  line-height: 0.7;
  color: #f08300;
  opacity: 0.16;
  pointer-events: none;
  user-select: none;
}

.stv-praxis-head {
  max-width: 880px;
  padding-bottom: 72px;
}

.stv-praxis-list {
  list-style: none;
  margin: 0;
  padding: 0;
  position: relative;
  z-index: 1;
}

.stv-praxis-panel {
  background: #111;
  padding: 56px 0 64px;
  border-top: 1px solid rgba(255, 255, 255, 0.16);
}

.stv-praxis-panel:last-child {
  padding-bottom: 112px;
}

.stv-praxis-row {
  display: grid;
  grid-template-columns: minmax(240px, 320px) 1fr;
  gap: clamp(32px, 5vw, 88px);
  align-items: stretch;
}

.stv-praxis-anchor-inner {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.stv-praxis-num {
  font-family: 'Univers', Ebrima, sans-serif;
  font-weight: 700;
  font-size: clamp(40px, 4.4vw, 72px);
  line-height: 0.9;
  letter-spacing: -0.03em;
  color: #f08300;
}

.stv-praxis-media {
  max-width: 300px;
}

.stv-praxis-media img {
  display: block;
  width: 100%;
  border-radius: 14px;
  object-fit: cover;
}

.stv-praxis-quote {
  margin: 0;
  font-family: 'Univers Condensed', Univers, sans-serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(20px, 1.9vw, 27px);
  line-height: 1.42;
  letter-spacing: -0.008em;
  color: #fff;
  max-width: 62ch;
  /* Umbrüche der Redaktion sind hier die Gliederung (siehe lib/absaetze.ts). */
  white-space: pre-line;
}

.stv-praxis-attr {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-family: 'Univers', Ebrima, sans-serif;
  padding-left: 18px;
  border-left: 3px solid #f08300;
}

.stv-praxis-name {
  font-size: 15px;
  font-weight: 700;
  color: #fff;
}

.stv-praxis-org {
  font-size: 14px;
  line-height: 1.45;
  color: #9d9d9c;
}

/* ── Scroll-Choreografie der Praxis-Flächen (nur Desktop, volle Motion) ──── */

@media (min-width: 881px) and (prefers-reduced-motion: no-preference) {
  .stv-praxis-panel {
    /* --stv-stick = min(0, 100vh − Flächenhöhe), von der Seite gemessen:
       die Fläche läuft im normalen Fluss (der Text „läuft weiter"), bis ihr
       Ende den unteren Viewportrand erreicht — dann pinnt sie, und die
       nächste Fläche schiebt sich von unten darüber. */
    position: sticky;
    top: var(--stv-stick, 0px);
    min-height: 100vh;
    display: grid;
    align-content: center;
    padding: 104px 0 120px;
    box-shadow: 0 -56px 96px -48px rgba(0, 0, 0, 0.9);
  }

  /* Leicht abgestufte Dunkeltöne, damit die übereinandergleitenden Flächen
     als eigene Ebenen lesbar sind. */
  .stv-praxis-panel:nth-child(3n + 2) {
    background: #171614;
  }

  .stv-praxis-panel:nth-child(3n) {
    background: #1d1b18;
  }

  .stv-praxis-panel:last-child {
    padding-bottom: 120px;
  }

  /* Der ruhende Anker: Nummer, Portrait und Attribution bleiben im Bild
     stehen, während der Statement-Text daneben vorbeiläuft. */
  .stv-praxis-anchor {
    position: relative;
  }

  .stv-praxis-anchor-inner {
    position: sticky;
    top: clamp(88px, 16vh, 180px);
  }

  /* Ende des Stapels: KEIN Halte-Takt mehr. Die letzte Fläche (03) ist zwar
     wie ihre Geschwister sticky, aber ohne Raum unter ihr im Listen-Container
     greift das Pinnen nie — nach ihrem Durchlauf schiebt die Videoreihe sie
     ganz normal im Dokumentfluss hoch (Entscheidung 18.08.). */
}

/* ── 3 · Videostatements — eine Reihe, klar als Video erkennbar ─────────── */

.stv-videos {
  background: var(--dakby-bg-soft, #f7f7f6);
  padding: 96px 0 104px;
}

.stv-videos-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--dakby-line, #e3e3e2);
}

.stv-videos-count {
  font-family: 'IBM Plex Mono', 'Courier New', monospace;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #f08300;
}

.stv-video-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  margin-top: 40px;
}

.stv-video {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* Smaller tiles ⇒ tighter consent facade than on seminar pages. The button sits
   in the lower half so the name block above stays clear. */
.stv-video-frame {
  background: linear-gradient(135deg, #1c1c1b 0%, #0d0d0c 55%, #241503 100%);
}

.stv-video-frame .sd-consent-inner {
  padding: 16px;
}

.stv-video-frame .sd-consent-btn {
  padding: 10px 18px;
  font-size: 14px;
}

.stv-video-frame .sd-consent-note {
  font-size: 10.5px;
  max-width: 34ch;
  margin-left: auto;
  margin-right: auto;
}

/* Branded facade layer on the unplayed tile. Hidden as soon as the consent gate
   is gone (= the visitor started the video). */
.stv-video-overlay {
  display: none;
  position: absolute;
  inset: 0;
  padding: 16px 18px;
  pointer-events: none;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start;
  font-family: 'Univers', Ebrima, sans-serif;
}

.stv-video-frame:has(.sd-consent) .stv-video-overlay {
  display: flex;
}

.stv-video-frame:has(.sd-consent) .sd-consent-inner {
  margin-top: 40px;
}

.stv-video-tag {
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #f08300;
}

.stv-video-id {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.stv-video-name {
  font-size: 17px;
  font-weight: 700;
  color: #fff;
  letter-spacing: -0.01em;
}

.stv-video-org {
  font-size: 12.5px;
  color: #b1b1b0;
}

.stv-video-caption {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-family: 'Univers', Ebrima, sans-serif;
  padding-left: 18px;
  border-left: 3px solid #f08300;
}

.stv-video-cap-name {
  font-size: 15px;
  font-weight: 700;
  color: #111;
}

.stv-video-quote {
  font-size: 13px;
  line-height: 1.5;
  color: var(--dakby-ink-500, #6e6e6d);
  /* Umbrüche der Redaktion sind hier die Gliederung (siehe lib/absaetze.ts). */
  white-space: pre-line;
}

/* Presse-/Verweiszeilen unter der Videoreihe */
.stv-press {
  margin-top: 56px;
}

.stv-press-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: 22px 0;
  border-top: 1px solid var(--dakby-line, #e3e3e2);
  text-decoration: none;
  font-family: 'Univers', Ebrima, sans-serif;
}

.stv-press-row:last-child {
  border-bottom: 1px solid var(--dakby-line, #e3e3e2);
}

.stv-press-body {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.stv-press-quote {
  font-size: 17px;
  font-weight: 700;
  color: #111;
  line-height: 1.4;
  /* Umbrüche der Redaktion sind hier die Gliederung (siehe lib/absaetze.ts). */
  white-space: pre-line;
}

.stv-press-meta {
  font-size: 14px;
  color: var(--dakby-ink-500, #6e6e6d);
}

.stv-press-label {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 700;
  color: #f08300;
  white-space: nowrap;
}

.stv-press-row:hover .stv-press-quote {
  color: #f08300;
}

/* ── 1 · Grußwort + Zertifikatsübergabe — oranges Markenband, Auftakt ─────
   Bewusst kompakt (Feedback 18.08.: „darf ruhig deutlich kleiner sein"):
   das Band ist der Auftakt, nicht der Hauptdarsteller — auf 1440 bleibt es
   deutlich unter einer Viewport-Höhe und teasert die Verbände-Rotation an. */

.stv-gruss {
  position: relative;
  background: var(--dakby-orange-100, #f08300);
  color: #fff;
  padding: 56px 0 64px;
  overflow: hidden;
}

.stv-gruss-watermark {
  position: absolute;
  right: -6%;
  top: 50%;
  transform: translateY(-50%);
  height: 130%;
  width: auto;
  opacity: 0.12;
  pointer-events: none;
  user-select: none;
}

.stv-gruss-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
  gap: clamp(40px, 6vw, 96px);
  align-items: center;
}

.stv-gruss-grid.no-cert {
  grid-template-columns: minmax(0, 1fr);
}

.stv-gruss-grid.no-cert .stv-gruss-text {
  max-width: 72ch;
}

.stv-gruss-text .stv-h2 {
  color: #fff;
}

/* Das Kern-Zitat — die eine Aussage des Bandes, kompakt gesetzt. */
.stv-gruss-zitat {
  margin: 14px 0 0;
  font-family: 'Univers Condensed', Univers, sans-serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(19px, 1.7vw, 25px);
  line-height: 1.4;
  letter-spacing: -0.008em;
  color: #fff;
  max-width: 52ch;
  /* Umbrüche der Redaktion sind hier die Gliederung (siehe lib/absaetze.ts). */
  white-space: pre-line;
}

.stv-gruss-zitat-mark {
  display: block;
  font-family: 'Univers Condensed', Univers, serif;
  font-style: normal;
  font-weight: 700;
  font-size: clamp(44px, 4vw, 64px);
  line-height: 0.5;
  margin-bottom: 8px;
  color: rgba(255, 255, 255, 0.85);
  user-select: none;
}

.stv-gruss-read {
  margin-top: 24px;
}

.stv-gruss-sign {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, 0.35);
  font-family: 'Univers', Ebrima, sans-serif;
}

.stv-gruss-sign-lines {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.stv-gruss-name {
  font-size: 17px;
  font-weight: 700;
  color: #fff;
}

.stv-gruss-role {
  font-size: 14px;
  line-height: 1.4;
  color: rgba(255, 255, 255, 0.88);
}

/* Das große Porträt — trägt die rechte Bandhälfte, immer und unbeschnitten
   („es ist wichtig, dass er zur Geltung kommt"): natürliches Hochformat,
   Breite gedeckelt, damit das Band kompakt bleibt und kein Gesicht je in
   einen Beschnitt gerät. */
.stv-gruss-portrait-col {
  margin: 0;
  max-width: 340px;
  justify-self: end;
  width: 100%;
}

.stv-gruss-portrait-frame {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  background: rgba(0, 0, 0, 0.12);
  box-shadow: 0 24px 48px -28px rgba(0, 0, 0, 0.45);
}

.stv-gruss-portrait-frame img {
  display: block;
  width: 100%;
  height: auto;
}

/* ── 1b · Zertifikatsübergabe — ruhige Fußnote unter dem Band ────────────
   Schmale Bild+Text-Zeile auf Weiß mit Hairline: das Band führt, die
   Übergabe ordnet sich unter. Erscheint erst mit gepflegtem certImage oder
   certCaption. */

.stv-cert {
  background: #fff;
  border-bottom: 1px solid rgba(17, 17, 17, 0.12);
}

.stv-cert-row {
  display: flex;
  align-items: center;
  gap: clamp(24px, 4vw, 48px);
  padding-top: 36px;
  padding-bottom: 36px;
}

.stv-cert-media {
  position: relative;
  flex: 0 0 min(280px, 38vw);
  border-radius: 12px;
  overflow: hidden;
}

.stv-cert-media img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.stv-cert-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}

.stv-cert-caption {
  margin: 0;
  font-family: 'Univers', Ebrima, sans-serif;
  font-size: 16px;
  line-height: 1.55;
  color: var(--dakby-ink-700, #4a4a4a);
  max-width: 62ch;
}

.stv-cert-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  font-family: 'Univers', Ebrima, sans-serif;
  font-size: 14px;
  font-weight: 700;
  color: #f08300;
  text-decoration: none;
}

.stv-cert-link:hover {
  text-decoration: underline;
}

/* Lesefenster mit dem vollständigen Grußwort — Rahmen liefert modal.css,
   hier nur der Lesetext in angenehmer Zeilenlänge (kein Porträt im Kopf:
   das Band daneben trägt es bereits groß). */
.stv-gruss-modal-title {
  font-size: clamp(28px, 3.4vw, 42px);
  line-height: 1.08;
  margin: 10px 0 0;
  max-width: 20ch;
}

.stv-gruss-modal-p {
  margin: 20px 0 0;
  font-family: 'Univers', Ebrima, sans-serif;
  font-size: 17px;
  line-height: 1.75;
  color: #2b2b2a;
  max-width: 62ch;
  /* Einzelne Zeilenumbrüche (z. B. die Signatur) bleiben Umbrüche. */
  white-space: pre-line;
}

.stv-gruss-modal-p:first-of-type {
  margin-top: 28px;
}

/* ── 5 · Themen-Newsletter — nummerierte dunkle Liste ───────────────────── */

.stv-newsletter {
  background: #111;
  padding: 96px 0;
}

.stv-newsletter .stv-h2 {
  color: #fff;
}

.stv-newsletter .stv-intro {
  color: #c5c5c4;
}

.stv-edition-list {
  list-style: none;
  margin: 48px 0 0;
  padding: 0;
}

.stv-edition-row {
  display: grid;
  grid-template-columns: 56px 1fr auto auto;
  align-items: center;
  gap: 20px;
  padding: 20px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.14);
  text-decoration: none;
  color: #fff;
  font-family: 'Univers', Ebrima, sans-serif;
}

.stv-edition-index {
  font-size: 15px;
  font-weight: 700;
  color: #f08300;
  letter-spacing: 0.04em;
}

.stv-edition-label {
  font-size: 17px;
  font-weight: 700;
}

a.stv-edition-row:hover .stv-edition-label {
  color: #f08300;
}

.stv-edition-meta {
  font-size: 14px;
  color: #9d9d9c;
  white-space: nowrap;
}

.stv-edition-arrow {
  display: inline-flex;
  color: #f08300;
}

/* ── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 1080px) {
  .stv-praxis-row {
    grid-template-columns: minmax(200px, 250px) 1fr;
  }
}

@media (max-width: 880px) {
  /* Einspaltig im normalen Dokumentfluss (keine Choreografie): der Anker löst
     sich auf, seine Kinder ordnen sich als Zeilen — Nummer, Portrait, Zitat,
     Attribution. Visuelle Reihenfolge; die DOM-Reihenfolge bleibt unverändert. */
  .stv-praxis-row {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .stv-praxis-panel {
    padding: 44px 0;
  }

  .stv-praxis-anchor,
  .stv-praxis-anchor-inner {
    display: contents;
  }

  .stv-praxis-num {
    order: 0;
    font-size: 40px;
  }

  .stv-praxis-media {
    order: 1;
    max-width: 440px;
  }

  .stv-praxis-quote {
    order: 2;
  }

  .stv-praxis-attr {
    order: 3;
  }

  .stv-video-grid {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  /* On narrow tiles the facade name would collide with the consent note; the
     caption below the tile already carries name + context. */
  .stv-video-id {
    display: none;
  }

  .stv-video-frame:has(.sd-consent) .sd-consent-inner {
    margin-top: 0;
  }

  .stv-gruss-grid {
    grid-template-columns: 1fr;
  }

  /* Einspaltig rückt das Porträt unter den Text und an den linken Rand. */
  .stv-gruss-portrait-col {
    justify-self: start;
    max-width: 320px;
  }

  .stv-press-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }

  /* Carousel des geteilten Testimonials: einspaltig stapeln. */
  .stv-rotation > .wrap {
    grid-template-columns: 1fr !important;
    gap: 32px !important;
    padding: 32px 16px 72px !important;
  }

  .stv-rotation .t-frame {
    max-width: 340px;
  }
}

@media (max-width: 640px) {
  .stv-edition-row {
    grid-template-columns: 40px 1fr auto;
  }

  .stv-edition-meta {
    display: none;
  }

  .stv-verbaende {
    padding-top: 72px;
  }

  .stv-videos,
  .stv-newsletter {
    padding-top: 72px;
    padding-bottom: 80px;
  }

  /* Der kompakte Auftakt bleibt auch mobil flach. */
  .stv-gruss {
    padding-top: 48px;
    padding-bottom: 56px;
  }

  /* Die Praxis-Sektion trägt ihren unteren Abstand auf der letzten Fläche. */
  .stv-praxis {
    padding-top: 72px;
  }

  /* Zertifikats-Fußnote mobil: Bild und Text stapeln. */
  .stv-cert-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 18px;
  }

  .stv-cert-media {
    flex-basis: auto;
    width: 100%;
    max-width: 360px;
  }

  .stv-praxis-panel:last-child {
    padding-bottom: 80px;
  }
}
