/* HORO-BEAT sim theme: PERFORMANCE MODE (body.hb-perf, stamped before first paint by the inline script at the top of
   <body>; toggled in Settings; ?perf=1 forces it). Deliberately UNLAYERED: an unlayered rule beats every layered one,
   so nothing in a lane's @layer can undo it. It never depends on prefers-reduced-motion (EBM's PC and headless Chrome
   report reduce). What it does (DESIGN.md §7):
   - every texture / pattern token is emptied (--tex-*, --pat-*), the lantern glow is zeroed;
   - durations to 0, elevations flat (a 1px ink ring; "0 0 0 1px", never `none`, so shadow lists stay valid);
   - every animation and transition off, except the progress spinner;
   - the decorative layer (fx.css) is already scoped to body:not(.hb-perf); .deco DOM (the night city, toast cords)
     and the FX overlays are hidden; the banner plate loses its glow (.hb-banner__halo) and its tone layer.
   What it keeps: card art and colours, cost discs, used / down rotations, the battle-line and target outlines (static),
   focus rings, selection, legality, the spinner, the washi text box (flat, with its colour edge). A banner still shows
   its sumi stroke (a flat colour through the stroke mask, static) and its words, so the game stays readable. */

body.hb-perf {
  --tex-grain: none; --tex-sumi: none; --tex-fibre: none;
  --pat-aka: none; --pat-midori: none; --pat-ao: none; --pat-hishi: none; --pat-seigaiha: none;
  --glow-lantern: 0 0 0 transparent;
  --hb-dur-press: 0ms; --hb-dur-hover: 0ms; --hb-dur-move: 0ms; --hb-dur-land: 0ms; --hb-dur-banner: 0ms;
  --hb-dur-1: 0ms; --hb-dur-2: 0ms; --hb-dur-3: 0ms; --hb-dur-4: 0ms;
  --hb-e1: 0 0 0 1px var(--hb-ink-0);
  --hb-e2: 0 0 0 1px var(--hb-ink-0);
  --hb-e3: 0 0 0 1px var(--hb-ink-0);
  background-image: none;
}
body.hb-perf *, body.hb-perf *::before, body.hb-perf *::after { animation: none !important; transition: none !important; }
body.hb-perf .hb-spin { animation: hb-spin .8s linear infinite !important; }
body.hb-perf .deco, body.hb-perf .hb-shine, body.hb-perf .hb-ghost, body.hb-perf .hb-ripple, body.hb-perf .hb-px, body.hb-perf .hb-float, body.hb-perf .hb-flash, body.hb-perf .hb-fl { display: none !important; }
/* the banner plate: the stroke stays (it carries the words), its glow goes */
body.hb-perf .hb-banner__halo { display: none; }
/* flat stand-ins for decorative paint that also carries meaning */
body.hb-perf .hb-rar--sr, body.hb-perf .hb-rar--dr { background: #e2c06a; }
body.hb-perf .hb-toast { filter: none; }
body.hb-perf .hb-toast__in { padding-top: 18px; }
