import streamlit.components.v1 as components # Animationslaenge 16,4 s + ~1 s Puffer fuers "Unpacking" der Bundler-Animation. INTRO_DURATION_MS = 17400 # Statische URL (Streamlit Static Serving). Beim Live-Test ggf. auf "./static/intro.html" # oder "/static/intro.html" korrigieren, falls "app/static/..." 404 liefert. _INTRO_SRC = "app/static/intro.html" _SEEN_KEY = "einrechnung_intro_seen" def render_intro_overlay(duration_ms: int = INTRO_DURATION_MS, intro_src: str = _INTRO_SRC, seen_key: str = _SEEN_KEY) -> None: """Injiziert ein einmaliges Intro-Overlay 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. Autoplay nur einmal pro Browser (localStorage), "Ueberspringen"-Button + Auto-Fade, Replay-Button oben rechts (aendert den "gesehen"-Merker nicht). Die Animation laeuft isoliert in einem inneren iframe (eigenes CSS/JS, keine Kollision mit Streamlit). """ html = f""" """ components.html(html, height=0)