Dark is now the only theme, so every `.dark` selector matched
unconditionally while each non-dark branch was unreachable. That left
fourteen `.dark &` blocks sitting on top of token-based base rules and
silently overriding them with hardcoded grays from the previous palette
(#333333, #999999, #cccccc, #f2f2f2, #1f1f1f, #2a2a2a). Merged each value
down into its base rule and deleted the wrapper, then replaced fifteen
more legacy grays with the CYBER tokens.
Three bugs surfaced along the way:
- FileEditor read `documentElement.classList.contains('dark')`, but the
`dark` class is bound on `.app-root`, so Monaco always loaded the
light `vs` theme inside the dark editor surface.
- CodexLoginModal, CopilotLoginModal and NousLoginModal wrote
`border-color: var(--arcoblue-6, #165dff)` and VoiceApiFormModal wrote
`color: var(--primary-6, #18a058)`. Those Arco variables hold bare
RGB triplets, not colors, so each declaration was invalid and
discarded — the hover border and link color stayed stock Arco
blue/green instead of the cyan accent.
- JourneyView drew the pinned-node ring in amber, a leftover from the
old palette.
Rendering-layer only: no store logic, no /chat-run payload, no message
rendering path.