## Barrierefreiheit (verbindlich, ADR 0017) Jede UI-Änderung wird von Anfang an barrierefrei entwickelt (WCAG 2.1 AA) — nicht nachträglich. Kurzfassung; Details und Begründung in `docs/architecture/adr/0017-accessibility-by-default.md`: - **Bausteine wiederverwenden:** `IconButton` (erzwungener Name), `Field` (Label + Fehler-Verdrahtung), `useModalFocus` für Dialoge (Trap/Initialfokus/Rückgabe + `aria-labelledby`). Keine Parallelbauten. - **Tastatur zuerst:** alles erreichbar/bedienbar, Fokus sichtbar, Escape schließt, kein Fokusverlust; Einzeltasten-Shortcuts respektieren `lib/single-key-shortcuts.ts`. - **Name/Rolle/Wert:** korrekte Rollen, lokalisierte (de+en) Labels, Zustände via aria-*; dekorative Icons `aria-hidden`. - **BEIDE Renderpfade:** Editor-/NodeView-Pfad UND docToHtml/Server-Pfad gleichwertig behandeln (Cache rollt lazy aus). - **Kontrast/Farbe:** Tokens nutzen (Text ≥ 4,5:1, UI ≥ 3:1; `--color-border-input` für Feldränder; `--color-favorite` nur Icons); Farbe nie als einziges Merkmal. - **Reflow:** kein seitenweites Horizontal-Scrollen bei 320 px (`min-width: 0` an Flex-/Grid-Kindern nicht vergessen). - **Bewegung/Zeit:** `prefers-reduced-motion` respektieren, keine zu kurzen Auto-Dismiss-Zeiten. - **CI-Pack pflegen:** neue Kern-Screens in `apps/web/e2e/a11y.spec.ts` aufnehmen; die Allowlist bleibt leer bzw. nur mit Begründung. - Neue aria-Labels können bestehende `getByLabel`-e2e-Locator mehrdeutig machen — betroffene Specs mit anpassen (scopen), nicht das Label opfern. Verstöße gelten in Review und Abnahme als Funktionsfehler. ## graphify This project has a knowledge graph at graphify-out/ with god nodes, community structure, and cross-file relationships. Rules: - For codebase questions, first run `graphify query ""` when graphify-out/graph.json exists. Use `graphify path "" ""` for relationships and `graphify explain ""` for focused concepts. These return a scoped subgraph, usually much smaller than GRAPH_REPORT.md or raw grep output. - If graphify-out/wiki/index.md exists, use it for broad navigation instead of raw source browsing. - Read graphify-out/GRAPH_REPORT.md only for broad architecture review or when query/path/explain do not surface enough context. - After modifying code, run `graphify update .` to keep the graph current (AST-only, no API cost).