wcag.*Accessibility
WCAG 2.1 contrast audit for all core color pairs. Use the checker below to test any custom combination. Target AA for all text, AAA for critical content.
WCAG 2.1 standards
Minimum for all production UI. Required for normal text and UI components.
Enhanced standard. Target for editorial content, long-form reading contexts.
Focus indicators must have at least 3:1 contrast against adjacent colors.
"Large text" means 18px+ regular weight or 14px+ bold. "UI components" includes focus rings, borders on active inputs, and icon-only controls.
Dark mode — color pair audit
text-1 / bgtext-1 / surface-1text-1 / surface-2text-2 / bgtext-2 / surface-1signal / bgsignal / surface-1ink / signalgreen / bgred / bgpurple / bgamber / bgLight mode — color pair audit
ink / paperink / surface-1ink / surface-2text-2 / papertext-2 / surface-1signal-text / papersignal-text / surface-1ink / signalgreen / paperred / paper--signal-text resolves to #C4321A (not #FF4725) to achieve 4.76:1 contrast on cream and 4.63:1 on white — meeting WCAG AA. The raw signal orange (#FF4725) is only 3.0:1 on white and should not be used as text color in light mode.Interactive contrast checker
System accessibility features
:focus-visibleAll interactive elements receive a 2px signal-colored focus ring via :focus-visible. Mouse users are unaffected. Keyboard users always see clear focus indicators.
ThemeProviderSystem preference (prefers-color-scheme) is respected on first visit. User preference is persisted in localStorage. The data-theme attribute on <html> drives all color tokens.
prefers-reduced-motionAll CSS transitions use the motion token system. Components should respect prefers-reduced-motion. Target: zero motion for users with vestibular disorders when they opt out.
ARIA landmarksLandmark roles (main, nav, aside, section) are used throughout. Headings follow a logical hierarchy. Interactive elements use native <button> and <a> tags, not divs.
WCAG 1.4.1Status indicators (success, error, warning) use both color and icon/text. No information is conveyed by color alone. Content-type badges use both color and text label.
WCAG 2.5.5All interactive controls meet the 44×44px minimum touch target recommendation. Navigation items, buttons, and form controls are sized for reliable activation.