- Shipped
- A new light theme drew its focus ring in the lime --accent token. The dark theme uses the same value. The fault affected every focusable element on every page, in the theme that had just shipped.
- Caught by
- Verify stage, after merge
- Root cause
- Every focusable element on every page drew its focus indicator in the lime --accent token. That token has 17:1 contrast on the dark theme. It has 1.08:1 on the new paper-colored light theme. In light mode, no focusable element on any page had a visible indicator.
- Guard added
- A new --focus-ring token keeps the lime on dark. On light it uses a darker olive, tuned to clear 3:1 against every surface. verify-theme.mjs now enforces a non-text 3:1 contrast floor. It also runs a grep that rejects var(--accent) inside any :focus rule. Axe-core does not check focus-ring contrast.