/* ============================================================
   RANDORI PRO · Datenschutz v2 „High End"
   Additiv zu tokens.css + standort.css + standort-v3.css.
   Ruhige Leseseite — Motion bewusst zurückhaltender als auf
   den Marketing-Seiten. Aktiv ausschließlich unter body.v3.
   ============================================================ */

.v3 .ds-toc__nav { position: relative; }

/* TOC-Links · weicher Farbwechsel (immer aktiv) */
.v3 .ds-toc__nav a { transition: color 260ms var(--ease-standard), border-color 260ms var(--ease-standard); }

/* ============================================================
   MOTION — nur bei prefers-reduced-motion: no-preference
   (Keyframes v3-rise / v3-fade kommen aus standort-v3.css)
   ============================================================ */
@media (prefers-reduced-motion: no-preference) {

  /* Hero-Entrance · gestaffelt, kompakt */
  .v3 .ds-hero .s-kicker { animation: v3-rise 900ms var(--v3-ease) 150ms backwards; }
  .v3 .ds-hero__h1 { animation: v3-rise 1000ms var(--v3-ease) 280ms backwards; }
  .v3 .ds-hero__lede { animation: v3-rise 1000ms var(--v3-ease) 430ms backwards; }
  .v3 .ds-hero__stand { animation: v3-fade 900ms var(--ease-standard) 650ms backwards; }
  .v3 .ds-toc { animation: v3-fade 1000ms var(--ease-standard) 250ms backwards; }
  .v3 .ds-toc-m { animation: v3-fade 1000ms var(--ease-standard) 250ms backwards; }

  /* Lese-Abschnitte · sanfterer Reveal als auf Marketing-Seiten */
  .v3 .ds-sec[data-rv] { transform: translateY(18px); }

  /* ── AKZENT · Lese-Fortschritt im Inhaltsverzeichnis ───────
     JS setzt --read (0..1) auf .ds-toc__nav. Die Leiste füllt
     sich in Akzentrot, während man die Erklärung durchliest.
     Ohne JS (kein .js-motion) bleibt die Leiste neutral. */
  .v3.js-motion .ds-toc__nav::before { content: ""; position: absolute; left: -1px; top: 0; bottom: 0; width: 2px; background: var(--rp-rot-akzent); opacity: 0.45; transform-origin: 50% 0; transform: scaleY(var(--read, 0)); pointer-events: none; }
}
