# GAB-162 · GameArcadeRewardScreen — « Écran récompense arcade »

**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-162/
  renderer.html            ← moteur écran récompense (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` · `reward_screen_id` · `title` · `subtitle` · `score_pills[]{icon,value,unit}` · `primary_cta{label,action}`

Optionnels : `banner_label`, `trophy_emoji`, `bonus_text`, `confetti_items[]`, `accessibility{...}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre du score, sous-titre du mini-jeu, chaque pilule de score, texte bonus, libellé du bouton CTA, emojis confettis.
- **HTML** : layout arcade (fond sombre dégradé), animations confettis, bounce trophée, pilules, zone bonus, bouton structurel CTA.

## Archétype
Écran de **célébration arcade locale** déclenché immédiatement après la fin d'un mini-jeu GameLearning. Il est **local** au jeu : il célèbre le score immédiat et débloque optionnellement un message pédagogique local (`bonus_text`). Il ne remplace **pas** la célébration officielle PlayKit (→ GAB-038).

## Garde-fous
- **BLOCKED** si `title`, `score_pills` (vide ou absent), ou `primary_cta` manquent.
- `bonus_text` absent → zone bonus masquée (`hidden`), reste du rendu intact.
- `confetti_items` absent → 4 emojis par défaut (🎉 ⭐ 🎊 ✨).
- Aucune ombre `rgba(0,0,0,…)` — ombres colorées uniquement (DS V2).
- Un seul bloc `<script>` sans attribut.

## QA à vérifier
1. Modifier `title` / `score_pills` / `bonus_text` → rendu change sans toucher au HTML (critère d'or).
2. `score_pills:[]` → BLOCKED propre.
3. `primary_cta` absent → BLOCKED propre.
4. `bonus_text` absent → zone bonus non rendue.
5. `init(ext)` avec instance externe → rendu change.
6. Responsive 375 / 768 / 1024 : pas de débordement horizontal.

## external_refs / dependencies
| Réf | Relation |
|---|---|
| GAB-038 (PlayKit CelebrationScreen) | NE PAS substituer — GAB-162 est LOCAL, GAB-038 est officiel PlayKit |
| GAB-155 (GameResultSober) | Alternative sobre sans célébration festive |
| GAB-160 (GamePlayKitBridge) | Pont validation PlayKit — suite naturelle après GAB-162 |
| GAB-163 (GameLearningDebrief) | Débrief pédagogique à afficher APRÈS GAB-162 |

## Source
`INDEX-300-gamelearning-GAB-161-165-PLAYABLE.html` (stage `data-tpl="162"`, classe `.ar-card`).
