Parallax, autoplaying carousels and long transitions cause genuine nausea for some people, and the operating system already knows who they are.
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
The near-zero duration rather than none is deliberate: animations that rely on a completion event still fire, so nothing breaks. This is a blunt instrument and that is fine as a baseline — a considered version keeps motion that conveys meaning, like a spinner, and removes motion that is decorative. Support arrived in Safari in 2017 and Firefox in 2018, and it degrades to no rule at all elsewhere, which costs nothing.