/* Honour "reduce motion", on every surface.
 *
 * The portal pages and the public site each run two or three infinite CSS
 * animations -- a 20s gradient drift on the body, a shimmer on the card
 * edge, a pulse on a status dot -- and none of them asked whether the
 * visitor wanted animation. An animation that never ends also never stops
 * waking the compositor, so this is a battery setting as much as an
 * accessibility one.
 *
 * The particle canvas is handled separately in js/particle-field.js, which
 * refuses to start at all under the same preference.
 *
 * Near-zero rather than `none`: an animation that ends immediately still
 * lands on its final keyframe, so anything that animates itself into view
 * stays visible instead of disappearing.
 */
@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;
  }
}
