Each animation is its own file in gen/<subject>/<action>.js; npm run gen
renders the missing ones to public/ as webp + gif. The homepage grid is
now generated at build time by a small Vite plugin.
First four: ghost/float, heart/beat, cloud/rain, coffee/steam.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>