Reduced Motion Means Off, Not Faster
Shortening an animation for someone with vestibular sensitivity misses the point entirely.
The most common implementation of prefers-reduced-motion is to cut durations to something like 0.01 seconds. It ships, it satisfies a lint rule, and it does not help the people the setting exists for.
What the Setting Actually Signals
Someone has told their operating system that movement on screen causes them a problem — nausea, dizziness, migraine. The duration is not what triggers that. Motion is. A fast animation is still motion, and a fast unexpected one can be worse.
Return Early, Do Not Adjust
Every effect in Kinetic checks the media query at the top of its initialiser and returns before attaching any listener. Nothing is registered, nothing is queued, and the content is left in its final visible state. The pointer-driven effects never bind at all.
The Trap in Scroll Reveals
Scroll reveals are usually implemented by setting opacity: 0 in CSS and removing it with JavaScript. If the reduced-motion branch skips the JavaScript, the content stays invisible forever. We set the hidden state from JavaScript rather than CSS specifically so that the reduced-motion path leaves everything visible by default.
Test It Properly
On macOS it is Settings, Accessibility, Display, Reduce Motion. Turn it on, hard reload, and read the whole page. Nothing should move and nothing should be missing. If a section is blank, you have the trap above.