
/* ==========================================================================
   5. REDUCED MOTION — the whole travel is skipped, not slowed. The frame a
   player who asked for this gets is the FINISHED one: the result on the
   track, coloured, controls live. Never a mid-roll pose and never the same
   motion at half speed.
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  #chip{transition:none}
  #cta,#chipv,#chipn,#dl{transition:none}
  /* wf-ui: the console's new movers arrive placed — the active tab's
     underline (a scaleX spring) and the money lock's dim are state
     changes like the others in this block. This is why 70-dock.css bans
     !important: these override by cascade order and would silently die
     under one. */
  #tabs button::after{transition:none}
  #stakefld,#tabs{transition:none}
  /* wf-anim F6: the bead is placed at the answer as a finished circle —
     no gather fade, no colour bleed. travel()'s own short-circuit already
     puts it there with the verdict; this makes the arrival instant. The
     starfield's 60s/120s drift is a decorative loop and "still and
     finished, never a slower version of the same motion" applies to it
     too — a sky that never stops moving is not a "still" picture. */
  #bead{transition:none}
  .st1,.st2{animation:none}
  .sp{transition:none}
  /* the bubble's rock and its pop-in are decorative loops/entrances like
     the starfield's drift — still and finished, never slower */
  .sp,.sp.pop{animation:none}
  /* task 9: the decay's fade is a transition like the others - the result
     still clears after the hold (the JS skips straight to the cleared
     frame), it just never shows a half-faded pose */
  #frame[data-resfade] #chip,#frame[data-resfade] #bead{transition:none}
  /* task (r2) 4: the sliding pill is a position change like the others in
     this block — still and finished at the new mode, never a slide. */
  #modes .segbg{transition:none}
  /* goo r6 task 2: the celebration is expanding light and thrown matter —
     exactly the category this setting suppresses. What remains is Plinko's
     own reduced-motion answer: still and finished, not absence — the line,
     blob, bead and figure all arrive gold together (the dot stagger goes
     with the motion), and the WON line is placed, not popped. */
  #frame[data-res="win"] .cel i{animation:none}
  /* fix round M1: the dot stagger is deleted from 40-track (the wave moved
     to the unfiltered .wig layer), so the transition-delay:0s override that
     stood here had nothing left to override. The wave was then SUPPRESSED
     here like the celebration; the win round supersedes that answer — the
     inverted wave has a real finished state and arrives PLACED instead
     (the block below) — and the landing mark still ARRIVES PLACED (its
     opacity transitions zeroed in every state, its settled .96 kept —
     .92 until the win round grew it).
     SPECIFICITY IS MATCHED, NOT ASSUMED (producer audit, fix round): the
     first cut wrote `.wig i[data-v]` and bare `#wigland` here and BOTH
     LOST — 40-track's own selectors carry :not(.off) / a second id-level
     compound, a media query adds nothing, and the wave played at full
     strength under the very setting that asks for none (measured: peak
     opacity 1.0). Every selector below ties its 40-track counterpart
     exactly and wins by cascade order, which is 70-dock's whole rule
     about this block ("override by cascade order — no !important"). */
  /* WIN ROUND: the wave is inverted (it crosses the DEAD zone on the .off
     twins now) and under reduced motion it arrives PLACED AT ITS PEAK, not
     suppressed — W5's spec: the wave's finished state is "the dead zone is
     lit", so the twins hold the peak's own .55 for the verdict, still. The
     residue arrives placed the same way (transition:none = the final level
     in one frame). SPECIFICITY IS MATCHED, NOT ASSUMED — this file has
     shipped two dead RM overrides already; every selector below ties its
     40-track counterpart exactly and wins by cascade order. */
  #frame[data-res="win"] .wig i[data-v].off{
    animation:none;opacity:.55;transform:translate(-50%,-50%) scale(1)}
  /* the twins' .18s yield fade is motion too — placed means the .55 is on
     the FIRST frame, not eased into (the landing mark's own rule, applied
     to the lamps; without this the placed opacity reads 0 mid-transition) */
  .wig i[data-v]{transition:none}
  .dots2 .tick{transition:none}
  #frame[data-res="win"] .dots2 .tick.dry{transition:none}
  #frame[data-res="win"] #wigland,
  #frame[data-resfade] #wigland,
  #wigland{transition:none}
  /* ember law: the bank and the ignition are colour MOTION — under reduced
     motion the whole line arrives already in the verdict tone, one frame,
     no bleed (the same rule the bead's own transition:none above states).
     The win round's FAST bank restates the win clock at id+attr
     specificity, so the bare-class overrides here stopped reaching it —
     the win-scoped twins below tie those selectors exactly. */
  .blob,.band,.dot{transition:none}
  #frame[data-res="win"] .band,#frame[data-res="win"] .dot,
  #frame[data-res="win"] .blob,#frame[data-res="win"] #bead{transition:none}
  #chip[data-r="win"] #chipw:not(:empty){animation:none}
  /* the win figure's .10s colour clock and its nlandwin spring are motion
     like the rest — matched against 40-track's own win-scoped rule */
  #chip[data-r="win"] #chipv{animation:none;transition:none}
  /* the tier-4 ring outranks the blanket .cel i suppression above
     ((1,3,0) vs (1,2,1)) and must be silenced at its own weight */
  #frame[data-res="win"][data-mag="4"] .celR4{animation:none}
  /* THE ROOM ARRIVES LIT AND STILL (W4): only the clocks are removed —
     every transform is a declarative end state, so with transition:none
     the room is simply at its answer in one frame. The tier-4 dim the
     same way. */
  #roomwarm,#roomlit,#roomsky,#roomdim,
  #frame[data-res="win"][data-mag="2"] #roomwarm,
  #frame[data-res="win"][data-mag="3"] #roomwarm,
  #frame[data-res="win"][data-mag="4"] #roomwarm,
  #frame[data-res="win"][data-mag="2"] #roomlit,
  #frame[data-res="win"][data-mag="3"] #roomlit,
  #frame[data-res="win"][data-mag="3"] #roomsky,
  #frame[data-res="win"][data-mag="4"] #roomdim,
  #frame[data-resfade] #roomwarm,
  #frame[data-resfade] #roomlit,
  #frame[data-resfade] #roomsky,
  #frame[data-resfade] #roomdim{transition:none}
  #roomsky i{animation:none}
  /* wf-anim F6: the whole settle suite is still and finished — the figure
     placed (no nland), the icons still (no wob), the newest pill still
     (no hin). The struck-dot kick is element.animate and gates on
     reducedMotion() in game.js's strikeDot(). */
  #chip[data-r="win"] #chipv,#chip[data-r="lose"] #chipv{animation:none}
  .ico.wob{animation:none}
  /* the S1 acknowledge pulse is a courtesy, not information — reduced
     motion drops it entirely (the fix round's own spec: "reduced-motion:
     none"), and the tap still safely does nothing */
  .ico.beck{animation:none}
  #frame[data-tiny] .ico.beck{animation:none}
  .rl.hinew{animation:none}
  /* collar round: the collar's dims and the figures' focus clocks are state
     changes like the others here, and the last-rolls pill's hin pop is the
     same entrance the door pill's rule above suppresses — placed, not
     popped. */
  .orb,.orb .otrk,.orw,.orw input,.mrm,.mrm input{transition:none}
  .hp[data-new]{animation:none}
}
