/* ═══════════════════════════════════════════════════════════════════════════
   nativ.css — natives Scrollen der Augenoptik-Seite (nur mit ?bv-nativ=1, 06.11.2026)
   ───────────────────────────────────────────────────────────────────────────
   Christopher, 06.11.2026 15:11: „the Page 'augenoptik' still has a very bad scroll function. Jumps up and down,
   doesn't stick, doesn't move, I'm using MacBook with touchpad … There is a free guidebook from Apple … learn from it."

   Gemessen auf apple.com (06.11.2026, macbook-pro und iphone-17-pro im Prüf-Chrome): kein Abfangen von Rad, Finger
   oder Taste — jeder Hörer passiv; scroll-snap-type auf der Seite: none, Rasten nur in Galerien; klebende Bühnen über
   position:sticky; Bewegung am Scrollweg. Apple Human Interface Guidelines, Scroll views: „Support default scrolling
   gestures and keyboard shortcuts. People are accustomed to the systemwide scrolling behavior and expect it to work
   everywhere." Motion: „Strive for realistic feedback motion that follows people's gestures." · „Let people cancel
   motion." Gestures: „avoid creating a unique gesture to perform a standard action like … scrolling a long view."

   Darum: der Browser scrollt, kein Skript greift in Rad, Finger oder Taste ein (folien-nativ.js füllt nur die Seiten
   auf Fensterhöhe und fährt Sprünge). Die Seiten rasten nativ (scroll-snap-type: y proximity): nahe einer Seitenkante
   zieht es dorthin, dazwischen bleibt die Seite, wo der Schwung endet. Jede Kante ist ein 1-px-Punkt (::before bzw.
   ::after) — nicht der Abschnitt selbst: ein Abschnitt, der höher als das Fenster ist, wäre als Rastfläche eine
   gültige Ruhelage an jeder Stelle. Gemessen 06.11.2026 (Prüf-Chrome 156, synthetische Seite): innere 1-px-Punkte
   rasten auch in einem hohen Abschnitt; Pseudo-Elemente rasten; ein end-Punkt im Fuß macht das Seitenende zur
   Ruhelage; die Nähe-Zone ist groß (ein Stoß 340 px hinter einem Punkt zog bei 900 px Fensterhöhe zurück).

   Gilt nur mit .bv-nativ am Artikel (leistung.php setzt sie mit dem Schalter). Ohne Schalter wirkt nichts.
   ═══════════════════════════════════════════════════════════════════════════ */

/* Das Rasten der Seite. folien.css (Zeile 19) schaltet es für .bv-folien aus, weil dort folien.js rastet; hier rastet
   der Browser. Spezifität (0,5,1) über (0,4,1) der Regel dort. html.lf-js-rasten setzt lauf.js nur mit eigenem
   Einrasten — das ist mit .bv-nativ aus (lauf.js, NATIV). html.bv-nativ-frei: ?bv-snap=0, gar kein Rasten. */
html:has(.leistung.bv-folien.bv-nativ):not(.lf-js-rasten):not(.bv-nativ-frei){ scroll-snap-type:y proximity; }

/* ── Die Kanten ────────────────────────────────────────────────────────────
   Je Seite ein unsichtbarer Punkt an der Oberkante. Sein Abstand ist derselbe, den ein Sprung zum Anker hält
   (scroll-margin-top des Abschnitts, teil-z8-leistung.css Zeile 158: Kopfpille + Luft + Leiste + 14 px) — so liegt
   die Ruhelage genau dort, wo bisher folien.js hinrollte (gemessen 06.11.2026, 1440×900: Anker 955, 5379, 6683 …). */
.bv-nativ .sammel-teil[id]::before,
.bv-nativ .meta-teil .lv-dunkel::before,
.bv-nativ .lf::before,
.bv-nativ .leistung-buehne::before,
.bv-nativ .folie-schluss::before,
html:has(.bv-nativ) footer.fuss::after{
  content:""; position:absolute; left:0; width:1px; height:1px; pointer-events:none;
}
/* scroll-snap-stop: always — eine Seite wird nie übersprungen: ein kräftiger Wisch hält an der nächsten Seitenkante
   (HIG, Scroll views: „Consider supporting page-by-page scrolling"). Gemessen 06.11.2026 ohne: bei 390 × 844 trug ein
   Wisch mit Schwung von den Brillenarten über die Gläser-Kante hinaus (1242 → 2399). Die Stufen der Läufe bleiben frei
   (kein always an .lf-rast) — ein Wisch darf dort mehrere Stufen nehmen. */
.bv-nativ .sammel-teil[id]::before,
.bv-nativ .meta-teil .lv-dunkel::before{
  top:0; scroll-snap-align:start; scroll-snap-stop:always;
  scroll-margin-top:calc(var(--kopf-unten) + var(--sprung-luft) + var(--sprung-hoehe) + 14px);
}
/* Die Läufe: der Abschnitt beginnt unter den Leisten (--lf-oben, teil-zzzzzz-lauf.css), die Stufen rasten an ihren
   eigenen Punkten (.lf-rast, proximity) — wie auf jeder Seite ohne Blättern. Der Abschnitt trägt den Abstand auch
   selbst, für einen Sprung ohne Skript (#gleitsicht in der Adresszeile). */
.bv-nativ .lf{ scroll-margin-top:var(--lf-oben); }
.bv-nativ .lf::before{ top:0; scroll-snap-align:start; scroll-snap-stop:always; scroll-margin-top:var(--lf-oben); }
/* Der Einstieg: die erste Seite beginnt bei 0. Sein Rand liegt bei 102 px (gemessen 06.11.2026, 1440×900 und
   390×844); ein Abstand darüber hinaus wird vom Browser auf 0 begrenzt (synthetisch gemessen). */
.bv-nativ .leistung-buehne::before{ top:0; scroll-snap-align:start; scroll-snap-stop:always; scroll-margin-top:calc(var(--kopf-unten, 86px) + 40px); }
/* Die Abschluss-Seite rastet an ihrer Oberkante; den Platz für die Kopfpille bringt sie selbst mit (folien.css). */
.bv-nativ .folie-schluss::before{ top:0; scroll-snap-align:start; scroll-snap-stop:always; scroll-margin-top:0; }
/* Der Fuß: seine Unterkante ist das Seitenende, und das ist eine Ruhelage — nichts zieht davon zurück
   (Christopher, 26.10.2026: „Der darf niemals verdeckt sein"). */
html:has(.bv-nativ) footer.fuss::after{ bottom:0; scroll-snap-align:end; scroll-margin-bottom:0; }
/* Die zwei Hüllen ohne eigene Lage (gemessen 06.11.2026: static) tragen ihren Punkt selbst. Ihre absolut gesetzten
   Kinder haben schon eigene Bezugsrahmen (teil-zu-sehhilfen.css Zeile 46, grund.css .aufruf). */
.bv-nativ .meta-teil .lv-dunkel,
html:has(.bv-nativ) footer.fuss{ position:relative; }

/* ?bv-rasten=0 — zum Vergleich: die Stufen der Läufe ohne Rastpunkte, nur der Scrollweg (folien-nativ.js setzt die
   Klasse). Die Seitenkanten rasten weiter. */
html.bv-ohne-lauf-rast .lf-an .lf-rast{ scroll-snap-align:none; }

/* „Bewegung reduzieren": normales Scrollen, nichts rastet (sein Maßstab vom 26.10.2026) */
@media (prefers-reduced-motion: reduce){
  html:has(.leistung.bv-folien.bv-nativ):not(.lf-js-rasten):not(.bv-nativ-frei){ scroll-snap-type:none; }
}
