# accessibility-settings.screen Accessibility configuration — VoiceOver depth, Dynamic Type, reduced motion, color/contrast preferences, audio descriptions. Implements [brief X](./X-accessibility.brief.md). Reached from settings-root.screen.md S6/S8 category (depending on brief X placement). Voice: plain. ## Layout (full-screen sheet) ``` ┌─────────────────────────────────────────────────┐ │ ◄ Settings Done │ 56pt ├─────────────────────────────────────────────────┤ │ Cocotte inherits iOS settings by default. │ reassurance │ Use this screen to override or specialize. │ │ │ │ ─── Display ─── │ │ ☑ Match iOS Dynamic Type │ │ Override font size: [ Default ▼ ] │ │ ☑ Match iOS Reduce Motion │ │ ☐ High contrast │ │ Color blindness: [ None ▼ ] │ protanopia / deuter / tritan │ Stakes-color override: [ Default ▼ ] │ alt palettes for color-blind │ │ │ ─── Voice & audio ─── │ │ ☑ VoiceOver-friendly action labels │ │ Speak action receipts: ○ Always ● High-stakes │ │ TTS voice: [ System default ▼ ] │ │ Voice prompts: ○ Off ● Hearth ○ Working ○ Plain │ register override │ │ │ ─── Interaction ─── │ │ ☐ Disable pinch gestures │ alt-input replacements │ ☑ Larger tap targets │ │ ☐ Single-tap approvals (no swipe) │ │ ☑ Reduce haptics │ │ │ │ ─── Content ─── │ │ ☑ Image descriptions in chat │ alt-text for AI-generated images │ ☑ Plain language toggle (suppress metaphor) │ forces working register everywhere │ │ └─────────────────────────────────────────────────┘ ``` ## Components | Component | Notes | |---|---| | Display | Type / motion / contrast / color-blind palettes. Stakes-color override changes [F §F1](./00-system-visual-system.md) low/medium/high palette. | | Voice & audio | VoiceOver labels, TTS preferences, register override (forces hearth/working/plain everywhere). | | Interaction | Replacements for gesture-based affordances (pinch, swipe). Single-tap approvals replace swipe-to-approve. | | Content | Image alt-text from `content-*` specialists; plain-language toggle suppresses culinary metaphor. | ## States 1. **Default (inherits iOS)** — all top-level toggles match iOS settings; explicit overrides clearly marked. 2. **Override active** — chip on overridden rows: "Override of iOS setting." 3. **Color-blind selected** — preview swatch of new stakes palette appears inline. 4. **Plain-language enforced** — banner: "All Cocotte copy is in plain register. Hearth + working registers are suppressed." 5. **Reduced haptics on** — confirmation chip "Cocotte uses one haptic per event, not two." 6. **VoiceOver** — section read in order; overrides explicitly announced. ## Interactions - **Tap any toggle** → commits immediately + recorded as audit row (per brief I — accessibility changes are auditable). - **Tap "Override font size"** → iOS-style size picker. - **Tap palette preview** → expands swatches comparison. ## Edge cases - **Color-blind palette conflicts with brand accent** (rose) — alt palette uses amber/blue for stakes, preserves brand accent elsewhere. - **Single-tap approvals on a multi-surface card** (per H §H4) — replaces per-surface checkboxes with toggle list, single tap on Approve commits all selected. - **VoiceOver with cook-mode requested** — cook-mode disables; VoiceOver gets primary audio. - **Reduced motion + streaming reply** — replaces token-fade with full-message snap-in. ## Related - [Brief X](./X-accessibility.brief.md) — parent (cross-cuts all briefs). - [Brief F](./00-system-visual-system.md) — stakes color palette source. - [Brief voice](./00-system-voice.md) — register suppression target. - [settings-root.screen.md](./settings-root.screen.md) — entry point. - [Brief I](./I-audit-trust-replay.brief.md) — every change audited. ## Out of scope - iOS-side accessibility settings (CocotteAI defers to system where possible). - Per-specialist accessibility overrides (single global config at P0).