/* Back-to-top: erscheint nach ~1,5 Viewporthöhen Scrolltiefe. Sanftes Scrollen kommt aus dem CSS (scroll-behavior + reduced-motion-Kill-Switch); JS übernimmt Sichtbarkeit und Fokus-Management. Ohne JS bleibt der Button hidden. */ (function () { 'use strict'; var button = document.querySelector('.back-to-top'); var main = document.getElementById('main'); if (!button || !main) { return; } button.hidden = false; var ticking = false; function update() { button.classList.toggle('is-visible', window.scrollY > window.innerHeight * 1.5); ticking = false; } window.addEventListener('scroll', function () { if (!ticking) { ticking = true; window.requestAnimationFrame(update); } }, { passive: true }); update(); // Deep-Link-Einstiege (#anker): Sprung passiert teils vor dem Listener-Setup. window.addEventListener('load', update); button.addEventListener('click', function (event) { event.preventDefault(); var reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches; window.scrollTo({ top: 0, behavior: reduced ? 'auto' : 'smooth' }); // Fokus an den Seitenanfang mitnehmen (Tastatur/Screenreader). main.focus({ preventScroll: true }); }); })();