Two inherited-custom-property transitions were forcing a full style
recalculation on every animation frame during a theme switch:
- html transitioned --color-ice/--page-accent-glow (inherits: true),
both read by dozens of selectors site-wide (buttons, links, glows,
color-mix() gradients) -- animating them recomputed style for every
element that references them, across the whole page, not just the
swatch that was clicked.
- .lv-gui (the ClickGui replica used in ThemeStrip, HudPlayground, the
login backdrop and the theme editor panel) transitioned 21 inherited
custom properties at once, including per-row/per-tab ones
(--gui-row-*, --gui-tab-*, --gui-menu-*) -- with a long module list
that's the same cost multiplied by every row/tab in the tree.
Both now snap instantly instead of transitioning; .lv-gui keeps a
300ms cross-fade but only on the ~8 properties that read as "the
theme" (window/header/stroke/text/accent/panel), not per-row state.
Claude-Session: https://claude.ai/code/session_01F1M1Jic1wTSn4igUENynmZ