# GAB-007 · SessionPauseOverlay — « Pause propre et protégée »

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

## Pack (structure officielle par-GAB)
```
GAB-007/
  renderer.html            ← moteur overlay pause (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` · `pause_id` · `title` · `body` · `primary_cta` · `secondary_cta`

Optionnels : `icon`, `renderer_key`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre de la modal, message de réassurance, libellé du bouton primaire (Reprendre), libellé du bouton secondaire (Sortir…), icône.
- **HTML** : structure de l'overlay, backdrop, layout modal, bouton trigger "Remettre en pause", transitions.

## Archétype UX
Overlay bloquant affiché lors d'une **pause volontaire** de l'élève. Deux actions :
1. **primary_cta** — reprendre la session (efface l'overlay).
2. **secondary_cta** — sortir tout en conservant la progression sauvegardée (efface l'overlay).

Un bouton trigger "Remettre en pause" réapparaît après fermeture pour simuler le re-déclenchement.

## Garde-fous (child_safety)
- **BLOCKED** si `title`, `body`, `primary_cta` ou `secondary_cta` est absent.
- Overlay non bloquant si instance invalide : le moteur affiche un message d'erreur, pas l'overlay.
- Aucun contenu pédagogique inventé : `body` est toujours fourni par l'instance.

## Conditions d'usage (extraites du source)
**use_when** : l'élève demande une pause · perte de focus prolongée · sortie volontaire à protéger.
**do_not_use_when** : perte réseau (→ GAB-009) · erreur provider (→ GAB-011) · cooldown court (→ KIT-053).

## QA à vérifier
1. Modifier `title`/`body`/`primary_cta`/`secondary_cta` → rendu change sans toucher au HTML.
2. `primary_cta` absent → BLOCKED propre.
3. Clic primary_cta → overlay masqué, trigger visible.
4. Clic secondary_cta → overlay masqué, trigger visible.
5. Clic trigger → overlay réaffiché.
6. Responsive 375/768/1024 — modal centrée, pas de débordement.

## Source
`INDEX-300-playengine-GAB-006-010-PLAYABLE.html` (stage `data-tpl="7"`, handlers `pauseResume`, `pauseShow`).
