/* ============================================================
   SETTINGS · MOTION
   Mechanical things move with weight or not at all.
   No bouncy easings. Sharp engagement, considered settle.
   ============================================================ */

:root {
  /* Master motion lever — every duration multiplies through it, so a single
     token can scale (or kill) all motion. Default 1 == full motion; unchanged
     from the previous fixed values (calc(60ms * 1) == 60ms, etc). */
  --motion-scale: 1;

  --dur-instant:  calc(60ms   * var(--motion-scale));   /* hover, focus */
  --dur-fast:     calc(120ms  * var(--motion-scale));   /* toggle engage */
  --dur-medium:   calc(240ms  * var(--motion-scale));   /* panel open */
  --dur-slow:     calc(480ms  * var(--motion-scale));   /* boot, transition */
  --dur-glacial:  calc(1200ms * var(--motion-scale));   /* sweep, pulse */

  --ease-snap:    cubic-bezier(0.2, 0.0, 0.0, 1.0);   /* mechanical click */
  --ease-settle:  cubic-bezier(0.4, 0.0, 0.2, 1.0);   /* smooth land */
  --ease-pulse:   cubic-bezier(0.4, 0.0, 0.6, 1.0);   /* breathing */
}

/* Global reduced-motion guard (the settings/tools strategy 13 inherits).
   Two levers: (1) --motion-scale → 0 collapses every token-driven transition;
   (2) a blanket clamp settles infinite DECORATIVE loops to ONE run at their
   end-state (animation-iteration-count: 1) instead of freezing them mid-frame
   — the audit's caveat (a naive 0.001ms blanket freezes the marquee mid-scroll
   and hides text). NOTE for chunk 13: TRANSFORM-based loops (marquee,
   scanline-sweep, radar-sweep) end translated away, so their components must
   add an explicit `animation: none` + static-position opt-out under this query
   — a blanket guard cannot safely settle a translate loop. */
@media (prefers-reduced-motion: reduce) {
  :root { --motion-scale: 0; }

  *, *::before, *::after {
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 1ms !important;
    scroll-behavior: auto !important;
  }
}
