import streamlit.components.v1 as components # Sicherheitsnetz-Timer (ms): das Ausblenden geschieht primaer ueber das 'ended'-Event des # Videos (exakt am Ende). Dieser Timer greift nur, falls 'ended' mal nicht feuert # (z. B. Autoplay blockiert). Grosszuegig ueber der Videolaenge (~15,8 s) waehlen. INTRO_FALLBACK_MS = 20000 # Statische URL (Streamlit Static Serving). Beim Live-Test ggf. auf "./static/intro.mp4" # oder "/static/intro.mp4" korrigieren, falls "app/static/..." 404 liefert. _INTRO_SRC = "app/static/intro.mp4" _SEEN_KEY = "einrechnung_intro_seen" def render_intro_overlay(fallback_ms: int = INTRO_FALLBACK_MS, intro_src: str = _INTRO_SRC, seen_key: str = _SEEN_KEY) -> None: """Injiziert ein einmaliges Intro-Overlay (MP4) in die Streamlit-Elternseite (Ansatz A). Ein unsichtbarer components.html-Baustein (Hoehe 0) fuehrt JS aus, das ein position:fixed-Overlay in window.parent.document einfuegt - ein echtes Overlay ueber der Seite. Die Animation ist ein