# GAB-161 · GameCalmMode — « Mode calme (accessibilité) »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechGameLearning
**Critère validé :** changer le JSON change l'écran sans modifier le HTML. check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-161/
  renderer.html            ← moteur mode calme (ne pas modifier par instance)
  instance.example.json    ← SOURCE DE VÉRITÉ (contenu réel, à plat)
  schema.contract.json     ← contrat de validation
  README-contract.md       ← ce fichier
```

## Champs requis (instance, à plat)
`gab_id` · `calm_mode_id` · `title` · `body` · `toggles[]{key,icon,label,description,default_on}` · `primary_cta{label,confirm_message}`
Optionnels : `icon`, `subtitle`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, corps, chaque toggle (libellé, icône, description, état initial), libellé et message de confirmation du bouton CTA.
- **HTML** : structure de la carte, switch CSS, layout, palette DS V2, moteur d'état toggle, message panel.

## Garde-fous (child_safety / accessibilité)
- Chaque toggle a `role="switch"` + `aria-checked` mis à jour dynamiquement.
- `prefers-reduced-motion` global : animations désactivées.
- `default_on:true` pour chrono et animations (cible : élève sensible à la pression, profil accessibilité).
- **BLOCKED** si `title`, `body`, `toggles` ou `primary_cta` absents.

## QA à vérifier
1. Modifier `title`/`body`/toggle `label` → rendu change sans toucher au HTML (critère d'or).
2. `toggles:[]` → BLOCKED propre.
3. `primary_cta` absent → BLOCKED propre.
4. Clic toggle → bascule visuelle on/off + `aria-checked`.
5. Clic CTA → affiche `confirm_message` dans panel vert.
6. `init(instanceExterne)` → rendu change (injection externe OK).
7. Responsive 375/768/1024.

## Source
`INDEX-300-gamelearning-GAB-161-165-PLAYABLE.html` (stage `data-tpl="161"`, handler `cmToggle`).

## Références externes (hors-lot)
- **GAB-133** : défi chrono explicite (do_not_use si chrono requis).
- **GAB-165** : mini-boss composite (do_not_use si combo de mécaniques).
