# GAB-019 · SessionFastModePrompt — « Proposition de mode rapide »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechPlayEngine
**Tag :** V1_X · S · P1 — optionnel, enrichissant.
**Critère validé :** changer le JSON change la card (titre, corps, CTAs, effets) sans modifier le HTML.

## Pack (structure officielle par-GAB)
```
GAB-019/
  renderer.html            ← moteur mode rapide (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` · `prompt_id` · `title` · `body` · `primary_cta{label,action}` · `secondary_cta{label,action}`

Optionnels : `toggle_label`, `effects[]{icon,label}`, `accessibility{toggle_aria_label}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre de la proposition, corps explicatif, libellé du toggle, libellés des deux CTAs, liste des effets du mode rapide (icône + texte).
- **HTML** : layout card gold, toggle mécanique, rendu des effets, états `.active`, fallback erreur BLOCKED.

## Archétype / comportement
Le GAB affiche une proposition de basculement vers un mode rapide à l'élève qui maîtrise déjà le sujet.
- Un **toggle** contrôle visuellement l'activation (fond gold / knob animé / effets `.active`).
- Le **CTA primaire** active officiellement le mode (action `enable_fast_mode`).
- Le **CTA secondaire** maintient le mode standard (action `dismiss_fast_mode`).
- Si `effects` est fourni, chaque item devient une ligne activée/grisée selon l'état du toggle.

## Garde-fous (child_safety)
- **BLOCKED** si `title`, `body`, `primary_cta` ou `secondary_cta` est absent.
- Aucun texte en dur dans le renderer — tout vient de l'instance.
- `aria-pressed` reflète l'état réel du toggle (accessibilité lecteur d'écran).
- `prefers-reduced-motion` : animations/transitions raccourcies à 0.12s.

## QA à vérifier
1. Modifier `title` / `body` → rendu change sans toucher au HTML (critère d'or).
2. `primary_cta` absent → BLOCKED propre.
3. Clic toggle → effets `.active`, fond gold.
4. Clic CTA primaire → panneau mint + toggle passe ON.
5. Clic CTA secondaire → panneau mint + toggle reste/passe OFF.
6. `effects:[]` → rendu sans liste, pas d'erreur.
7. Responsive 375/768/1024.

## Source
`INDEX-300-playengine-GAB-016-020-PLAYABLE.html` (stage `data-tpl="19"`, handler `fastFlip()`).

## external_refs / dependencies
Aucune dépendance hors-lot. Ce GAB est autonome.
- Référence croisée dans la source HTML : `use_when` mentionne GAB-017 (saut d'une seule étape).
- `do_not_use_when` : redirige vers GAB-017 pour saut d'étape unique.
