On your next layout
The mental model worth carrying away: scroll-driven and scroll-triggered animations are siblings, not twins. If you want a parallax-style scrub where every pixel of scroll moves the animation, you want animation-timeline. If you want "play this 300ms entrance once the element is mostly in view, then leave it alone", you want timeline-trigger.
This ships today in Chrome 146 and only Chrome 146, per the source. That makes it @supports (timeline-trigger: view()) territory in production β feature-detect, give non-supporting engines a no-animation or prefers-reduced-motion-style fallback, and treat the CSS path as the progressive enhancement on top of whatever you already had. The interesting thing is not that you can do this in CSS now. It is that the platform has finally split the "when" from the "how much". Those are two questions that have been tangled up in every scroll effect we have ever shipped.