/* ============================================================================
   core/motion.css — the reduced-motion policy (Motion Policy spec v1.1, 2026-09-02)

   Defined ONCE. Linked LAST in <head> by every top-level layout: Pages/Shared/_Layout,
   Areas/Admin _LayoutAdmin, Areas/Identity _AuthLayout, Areas/Client _LayoutClient,
   Areas/SystemAdmin _Layout. (It used to be copied into eight stylesheets, none of
   which could exempt anything, so components fought it with !important.)

   Under prefers-reduced-motion every animation and transition is effectively disabled,
   EXCEPT:
     1. elements that declare their motion essential with data-motion="essential" —
        the motion carries information (a timer advancing, a face fading in), is
        discrete or brief, and is registered in MotionPolicy_ExemptionRegistry
        (NavRailContractTests). Declared in markup, never from JS.
     2. the two design-system loading indicators, which SLOW to Bootstrap's own
        reduced-motion value instead of stopping — a frozen spinner reads as a hang.
   Essential never means decoration.

   Specificity is deliberate: *:not(…) is (0,1,0), so this rule ties with any
   single-class !important animation and wins by loading last. Nothing outside this
   file may put !important on an animation or transition (P-05) — the accidental
   escapes that relied on that are gone.

   Guidance: WCAG 2.3.3 ("unless the animation is essential"); Apple HIG Reduce Motion;
   Material and Fluent reduced-motion guidance.
   ============================================================================ */
@media (prefers-reduced-motion: reduce) {
    *:not([data-motion="essential"]):not(.spinner-border):not(.spinner-grow),
    *:not([data-motion="essential"]):not(.spinner-border):not(.spinner-grow)::before,
    *:not([data-motion="essential"]):not(.spinner-border):not(.spinner-grow)::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    /* system-utility allowlist: loading indicators slow, they do not stop */
    .spinner-border, .spinner-grow { animation-duration: 1.5s !important; }
}
