Compositor-driven infinite marquee (Web Animations API, iterations: Infinity,
duplicated content, transform-only). Zero per-frame and per-wrap JavaScript — a busy main
thread cannot stall the scroll.
Query params on both pages:
?speed=0.1..2.0 — portal slider range, px/sec = speed × 60 (default 1.0)?jank=1 — block the main thread 600ms every 3s (simulates a heavy PBI zone); scroll must stay smooth?hud=1 — main-thread FPS chip (dips during jank blocks while the scroll keeps moving)Decisive on-device test: /page-1/?jank=1 in a split-screen next to a Power BI zone.