/* HQ's motion, one set (D263 a, motion-fixes 2026-10-12; teaching/reports/design-feel-critique-2026-10-12.md section 3).
   Loaded before hq.css, grade.css and oh.css, which use these names and no durations of their own. Plain CSS transitions, no
   library (no Lenis, no GSAP).
     --m-instant  0 ms     grading keys, typing, anything in a keyboard flow
     --m-fast     120 ms   press, hover, focus, a menu opening, a pending area dimmed
     --m-base     180 ms   a card or page fading in, the card stack's change of card, a toast
     --m-slow     260 ms   a value moving on a bar or a gauge, a sheet coming in
     --m-mark     1400 ms  the one-time tint on a row or value that changed (never loops)
     --m-loop     1400 ms  the only looping motion: an indeterminate loading bar
     --m-out      everything that enters or settles;  --m-in  the rare exit that moves
   What may animate: opacity, transform, and colours for states. Never width, left, top or height on a bar or in a loop.
   Under reduced motion every duration but --m-mark is 0 (a mark becomes a still tint) and nothing loops. */
:root{
  --m-instant:0ms; --m-fast:120ms; --m-base:180ms; --m-slow:260ms; --m-mark:1400ms; --m-loop:1400ms;
  --m-out:cubic-bezier(.2,0,0,1); --m-in:cubic-bezier(.3,0,1,1);
}
/* reduced motion: one rule for every page that loads this file */
@media (prefers-reduced-motion:reduce){
  :root{--m-fast:0ms; --m-base:0ms; --m-slow:0ms; --m-loop:0ms}
  html,*{scroll-behavior:auto!important}
}
