# História 05 — Preferências de acessibilidade

- **Spec:** `tests/05-preferencias-a11y.spec.ts`
- **Camadas:** E2E (Playwright) + PHPUnit (`A11yPreferences`)
- **Dono:** Layout (`Layout\Engine\A11yPreferences` + `Assets/js/a11y.js` + `@layer a11y`)
- **Status:** ativa

## Jornada
Usuário liga contraste, imagens em P&B, espaçamento, dislexia, movimento reduzido e aumenta a fonte; a escolha
persiste entre páginas e sessões.

## Critérios de aceite
1. Cada controle da barra alterna o atributo correspondente no `<html>`
   (`data-a11y-contrast=high`, `-grayscale=true`, `-spacing=wide`, `-dyslexia=true`, `-motion=reduced`) e reflete
   o estado em `aria-pressed`.
2. A escolha **persiste** entre navegações (cookie, sem sessão).
3. As preferências chegam **prontas do servidor** (SSR): o HTML da resposta já contém
   `data-a11y-*` — sem “flash” de estilo no primeiro paint.
4. O efeito é **real** no CSS computado, não só um atributo: alto contraste muda
   `background-color`/`color`; a escala de fonte muda o `font-size` do `<html>`.
5. Nenhuma preferência altera a **marcação** (mesmos landmarks e mesmo DOM de conteúdo — ADR-016).
6. O **alto contraste mantém AA**: axe sem violação nas páginas com texto civic e botões daisyUI
   (`btn-primary`) — o par `--color-*-content`/`--civic-*` acompanha o fundo preto/amarelo (ADR-025).

## Fora de escopo (dono · fase)
- Preferências por conta autenticada (CMS) — F4.I1.
- `prefers-color-scheme` (tema escuro) — decisão de design pendente.

## Evidência
`make check E2E=1` verde + `LayoutEngineTest`/`A11yFontScale` no PHPUnit.
