# GAB-037 · HelpBlock — « Aide contextuelle »

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

## Pack (structure officielle par-GAB)
```
GAB-037/
  renderer.html            ← moteur HelpBlock (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` · `help_block_id` · `title` · `items[]{question, answer, open_by_default}`

Optionnels : `icon`, `cta{label, action}`

## Ce qui vient du JSON vs HTML
- **JSON** : titre de la carte, icône, chaque question, chaque réponse, état ouvert par défaut, bouton CTA (optionnel).
- **HTML** : structure accordéon, toggle open/close, layout, fallback BLOCKED.

## Garde-fous (child_safety)
- **Anti-invention** : aucune question/réponse hardcodée dans le HTML — seul `items[]` fournit le contenu.
- **BLOCKED** si `items` vide/absent ou `title` absent : message d'erreur affiché, rien ne s'affiche.
- `open_by_default:true` : au plus 1 accordéon ouvert recommandé (le moteur ne force pas la limite, mais le contrat le signale).
- `cta:null` → pas de bouton CTA affiché (normal pour une aide pure).

## QA à vérifier
1. Modifier `items[0].answer` → rendu change sans toucher au HTML (critère d'or).
2. `items:[]` → BLOCKED propre, message coral.
3. `title` absent → BLOCKED propre.
4. `open_by_default:true` sur item 0 → premier accordéon ouvert au chargement.
5. Clic sur accordéon → toggle open/close, aria-expanded mis à jour.
6. `cta:{label,action}` fourni → bouton affiché sous les accordéons.
7. Responsive 375/768/1024 — aucun débordement.
8. Instance externe injectée via `ENGINE.init(ext)` → rendu change sans modifier le HTML.

## Source
`INDEX-300-playkit-GAB-036-040-PLAYABLE.html` (stage `data-tpl="37"`, handler `helpToggle`, styles `.help-card/.help-acc`).

## external_refs / dependencies
- Aucune dépendance hors-lot.
- Palette DS V2 : `--sky` / `--sky-deep` pour l'icône (couleur signature HelpBlock).
- `--gold-soft` sur hover des questions (cohérence avec lot GAB-036–040).
