# P26 — Acessibilidade, mapa do site e Radar

| Campo | Valor |
|---|---|
| Programa | F7+ — operação, estrutura e conteúdo |
| Status | `planejado` |
| Depende de | P1, P3, P5 |
| Habilita | P29 |
| Tamanho | **M** (2–3 sessões) |
| ADRs | ADR-010, ADR-016, ADR-022, ADR-025, ADR-036, ADR-043 |

## 1. Objetivo

Fechar os critérios visuais/institucionais do PNTP que o layout já quase atende: símbolo de
acessibilidade, breadcrumb em todas as páginas, alto contraste, redimensionamento de texto, mapa
do site, botão do Radar e link de transparência na capa. O `@layer a11y` já existe; falta o
controle visível e a prova em todas as rotas.

**Resultado observável:** o cidadão vê o símbolo e os controles no header, navega por breadcrumb em
qualquer página, ativa alto contraste/A+ sem JS, abre `/mapa-do-site` e encontra o Radar e a
Transparência sem rolar a home.

## 2. Escopo fechado

### S1 — Símbolo, controles e link de transparência

- Componente `A11ySymbol` no shell do portal (não em cada módulo), com `aria-label` traduzido e
  link para `/acessibilidade`.
- Barra de acessibilidade visível: alto contraste, A+/A−, espaçamento, dislexia, imagens em cinza,
  redução de movimento; estado em cookie/render server-side; sem FOUC.
- Link “Transparência” no header/home, 1 clique, sem scroll; se o menu for editável (P1), item é
  dado; fallback no shell.
- Radar da Transparência no header/footer: link externo `https`, `rel="noopener noreferrer"`, sem
  iframe/asset.

### S2 — Breadcrumb e mapa do site

- Auditar todas as views de módulo: usar `breadcrumbs` no `<x-layout::portal>`; não criar segundo
  breadcrumb visual.
- `/mapa-do-site`: lista agrupada de todas as páginas públicas, derivada do manifest/sitemap +
  páginas curadas; links internos com locale; HTML semântico; link no rodapé.
- `SitemapSource` XML continua separado; o mapa é para humanos.
- Estado vazio/erro não quebra; sem link morto (`Route::has`).

### S3 — Testes e fechamento

- axe zero A/AA em desktop/mobile; teclado; foco visível; contraste alto; fonte aumentada.
- E2E: símbolo, controles, breadcrumb, mapa, Radar, link de transparência.
- `make check` 2× + `E2E=1`; `SNIFF_A11Y_STRICT=1`; cobertura; 4 locales.

## 3. Fora de escopo

- VLibras (já existe, on-demand; ADR-002).
- Redesenho do layout/tema; aqui é controle e componente.
- Mapa interativo/iframe de terceiro.

## 4. Fatias de sessão

| Sessão | Entrega | Prova | Depende |
|---|---|---|---|
| **P26.S1** | símbolo + controles + transparência + Radar | visível; sem JS; cookie; axe | P1/P5 |
| **P26.S2** | breadcrumb + `/mapa-do-site` | todas as rotas; sem link morto; locale | S1 |
| **P26.S3** | E2E/sniff/docs | 2× check; a11y estrito | S1–S2 |

## 5. Contratos e dados

- **Componentes:** `A11ySymbol`, `A11yBar` (se ainda não visível), `Breadcrumb`, `SiteMap`.
- **Settings:** `institution.radar_url` (default oficial), `institution.transparency_url` (default
  `/transparencia`).
- **Rotas:** `mapa-do-site`, `acessibilidade`.
- **Portas:** `SitemapSource`/manifest para o mapa.

## 6. DoD

- [ ] 13.1 símbolo em destaque; 13.2 breadcrumb em todas as páginas.
- [ ] 13.3 alto contraste; 13.4 A+/A−; estado server-side.
- [ ] 13.5 mapa do site; 2.9 Radar; 1.3 link de transparência.
- [ ] axe zero; teclado; sem JS; 4 locales.
- [ ] `make check` 2× + `E2E=1`; `SNIFF_A11Y_STRICT=1`; cobertura.

## Fechamento — ficha de revisão

> **Obrigatório antes de fechar:** criar `_to_revision/P26-acessibilidade-mapa.md` e seguir
> `_to_revision/README.md` + `_to_revision/PROTOCOLO.md` (v2.0). A ficha não é gate de build; é a
> entrada da fila de revisão profunda.

- Cabeçalho: fase, `kd` épico/tasks/slices, âncoras (este arquivo, ADRs e código) e status
  `⬜ pendente` → `🟡 em revisão` → `✅ revisado` / `🔧 com correções`.
- Conteúdo: o que foi implementado, arquivos/superfícies a revisar, checklist D1–D14 aplicável,
  riscos e observações.
- Fechamento: preencher “Notas da revisão” com data/revisor/resultado e achados (`kd write
  --anchor`), atualizar a fila em `_to_revision/README.md` e `_to_revision/_inventario.md`.
- Achado com correção exige teste vermelho→verde; a fase só é `closed` no `kd` com a ficha
  registrada.

## 7. Riscos

| Risco | Mitigação |
|---|---|
| Controle só via JS | estado server-side/cookie; baseline sem JS |
| Mapa manual desatualizado | derivar do manifest/sitemap |
| Breadcrumb duplicado | um por página, no shell |
| Radar como request | link externo, sem iframe/asset |
| Contraste quebrar tema | `@layer a11y` por último; axe |

## 8. Retomada

```bash
kd prime
kd ask "PNTP acessibilidade símbolo contraste fonte mapa Radar"
kd task list --ready
```

Ler: `wiki/backlog/pntp-2026/13-acessibilidade.md` → `PNTP.md` §4 (dim. 13) → `src/layout/**`.
