# GAB-359 · MotivationLearningTeamEncouragement — « Encourager une équipe »

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

## Pack (structure officielle par-GAB)
```
GAB-359/
  renderer.html            ← moteur encouragement d'équipe (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` · `team_encouragement_id` · `messages[]{id, emoji, tone, text, feedback, feedback_kind}` · `solo_fallback{emoji, label, feedback, feedback_kind}`

Optionnels : `intro_notice`, `pick_prompt`, `primary_cta{label, action}`, `use_when[]`, `do_not_use_when[]`, `accessibility`, `child_safety`, `_note_dev`.

## Ce qui vient du JSON vs HTML
- **JSON** : texte de chaque message, son `tone` (ok/bad), ses feedbacks, le libellé solo, l'intro notice, le libellé du bouton CTA.
- **HTML** : grille de messages, icônes colorées par tone, panel de feedback, bouton CTA structurel, layout, fallback BLOCKED.

## Garde-fous (child_safety)
- **Modération obligatoire** : tout message `tone='bad'` est présenté comme bloqué — il illustre le principe de modération, jamais passé tel quel.
- **Pas de classement humiliant** : `no_humiliating_ranking:true` est un champ structurel, jamais omis.
- **Solo toujours disponible** : `solo_fallback` est un champ **requis** — l'apprenant peut refuser le mode équipe sans pénalité ni message négatif.
- **BLOCKED** si `messages` vide / `team_encouragement_id` absent / `solo_fallback` absent.

## QA à vérifier
1. Modifier `text` ou `feedback` d'un message → rendu change sans toucher au HTML (critère d'or).
2. `messages:[]` → BLOCKED propre.
3. `solo_fallback` absent → BLOCKED propre.
4. Clic message `tone='ok'` → panel vert, CTA activé.
5. Clic message `tone='bad'` → panel rouge (modération bloquée), CTA activé.
6. Clic solo → panel note, CTA désactivé.
7. Responsive 375/768/1024.

## Source
`INDEX-300-motivationlearning-GAB-356-360-PLAYABLE.html` (stage `data-tpl="359"`, handlers `d359Pick`, `d359Solo`).
