Physics per particle
Spring k = 120, damping c = 13, repulsion power 620. Integration is scaled by dt, so the same field feels identical on 60Hz and 144Hz screens.
A quiet grid of points wakes up as you pass: pushed aside, tinted with the accent colour, then springing back to their posts.
Each particle stores a "home" position. The cursor exerts a repulsive impulse within a 130px radius; a spring constant pulls it back, and exponential damping settles the jitter.
Spring k = 120, damping c = 13, repulsion power 620. Integration is scaled by dt, so the same field feels identical on 60Hz and 144Hz screens.
Particles near the cursor grow, brighten and tint with the accent colour. A faint radial glow hugs the pointer for a little extra depth.
Hundreds of particles, one canvas — zero per-frame layout reads.