What I was adding

Three DHSeaDev project pages — Dota Companion, Annoying Dino, CaptureTools — were due for scroll animation. Nothing exotic: GSAP 3.12.5 plus ScrollTrigger, cards fading up as they enter the viewport, a screenshot strip that parallaxes on scroll. GSAP went fully free for every plugin at some point this year, which is the only reason this was worth doing at all.

The site has no build step and no staging environment. Every page is a single WordPress Custom HTML block, and every edit is a raw REST write against the live URL. That constraint is what made the next two hours interesting.

The pin that would not hold still

Before touching a real page, I ran a spike on a private draft: pin a card in place while the user scrolls past it, the standard ScrollTrigger pin: true pattern. It failed in a specific way — the pinned element didn't stay pinned. It drifted, about 1,260px over the course of the scroll, like the browser was measuring its position against the wrong coordinate space.