Scroll progress bar (sticky)

↓ scroll down

Scroll-driven animations use zero event listeners.

Motion.scroll() links progress directly to scroll position.

Each section fades and rises as it enters the viewport.

Performance: animations run on the compositor thread.

Works with any scrollable container — not just the page.