Scroll the grid below. Each tile trails the scroll by a different amount — columns and items lag out of step, so the grid shears and ripples like fabric, then springs elastically back to rest the instant you stop. Driven by per-cell gsap.quickTo with an elastic.out return.
Per-cell lag 0.6×…1.7× across columns · clamp y ±64px / skew ±14° · spring back 0.9s elastic.out(1,0.7)
On a phone (≤390px) or with reduced motion this is a plain, fully-tappable static grid — GSAP is never initialised and no rAF ever runs.