Accessibility preview
The contract: motion is optional, meaning is never motion-only. Under
prefers-reduced-motion: reduce the engine freezes the simulation (dt = 0)
— but the field's state still reads, because it lives in CSS variables, not in travel.
mass
particles travel; the headline pulses
mass
no travel — the lit state still reads
Reduced-motion fallbacks
| Full mode | Reduced mode |
|---|---|
| particles travel | particles freeze or fade |
| sparks | static highlight |
| fieldflow ribbons | static field lines |
| heat trails | soft wash |
| body motion | CSS state only |
| turbulence | contour snapshot |