10 · Acessibilidade
Padrão
WCAG 2.2 nível AA mínimo. AAA quando viável (texto principal sobre surface).
Princípios
- Contraste 4.5:1 texto normal, 3:1 texto large (≥18pt). Tokens
feedback.error.solidem red puro#DC2626foram escolhidos pra atingir AA mesmo sobre coral primary. - Focus ring 2px sempre visível em elementos interativos. Cor:
--color-border-focus(coral). - Touch ≥44px — botões e área tappable em mobile.
- Cor nunca sozinha — sempre acompanha texto, ícone ou padrão pra diferenciar status.
- Lang attribute —
<html lang="pt-BR">ou idioma do conteúdo. - Prefers-reduced-motion — animações desabilitadas. Veja Motion.
- Skip link — primeiro foco no body é “Pular para conteúdo”.
Auditoria automática
- axe-core roda em todas as stories do Storybook (addon-a11y bloqueante em CI).
- Storybook test-runner + Playwright valida fluxos completos (Fase 7).
Checklist por componente
- Tem label/aria-label?
- Atinge 4.5:1 em todos os estados (default/hover/active/focus/disabled)?
- É operável por teclado (Tab/Shift+Tab)?
- Focus visível?
- Funciona em modo dark?
- Respeita
prefers-reduced-motion?