/* Signature motion — all timing/keyframes live here; JS only toggles classes +
   custom props, so nothing animation-related is ever serialized into an SVG
   string (goldens stay byte-identical). Reduced-motion is gated in JS too; this
   !important block is the belt-and-braces CSS kill. */
/* Only authored ink/trace accents wait for visibility. Meaningful SVG content is
   never opacity-hidden, so labels and verdicts are readable on the first frame. */
.mo-draw{stroke-dasharray:var(--mo-len);stroke-dashoffset:var(--mo-len);
  stroke-width:calc(var(--mo-width) + 2px);opacity:.28;pointer-events:none;
  animation:mo-draw 240ms cubic-bezier(.4,.1,.2,1) forwards;animation-delay:calc(var(--mo-i)*5ms);
  animation-play-state:paused}
@keyframes mo-draw{to{stroke-dashoffset:0}}
.mo-go .mo-draw{animation-play-state:running}
.mo-flip{transition:transform 240ms cubic-bezier(.2,.8,.2,1)}
@media (prefers-reduced-motion:no-preference){
  svg .vfig{transition:fill 240ms ease-out}   /* the figure's ink→brand accent */
}
@media (prefers-reduced-motion:reduce){
  .mo-draw,.mo-flip{animation:none!important;transition:none!important;
    stroke-dasharray:none!important;stroke-dashoffset:0!important;opacity:1!important;transform:none!important}
}
