# GAB-102 · MemoryFlashcardReverse — « Flashcard inversée »

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

## Pack (structure officielle par-GAB)
```
GAB-102/
  renderer.html            ← moteur flashcard inversée (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
```

## Archétype — principe clé
GAB-102 est la **version inversée** de GAB-101 (MemoryFlashcardBasic) :
- **Recto** (`front_text`) = la **réponse** d'origine (ex : « La prise de la Bastille »)
- **Verso** (`back_text`) = la **question** d'origine (ex : « 14 juillet 1789 »)

L'élève voit d'abord la réponse et doit retrouver la question. Ce sens inversé évite l'apprentissage mécanique dans un seul sens et renforce le lien bidirectionnel.

## Champs requis (instance, à plat)
`gab_id` · `flashcard_id` · `front_text` · `back_text`

Optionnels : `title`, `front_label`, `front_hint`, `back_label`, `back_hint`, `btn_again_label`, `btn_know_label`.

## Ce qui vient du JSON vs HTML
- **JSON** : tout le contenu textuel (recto, verso, libellés de faces, hints, libellés des boutons, titre).
- **HTML** : flip 3D, reset, layout, couleurs DS V2, moteur validate/BLOCKED.

## Garde-fous
- **BLOCKED** si `front_text`, `back_text` ou `flashcard_id` est absent/vide.
- **Sens inversé obligatoire** : `front_text` = réponse, `back_text` = question. Ne pas inverser dans l'instance.
- **Flip keyboard** : touche `Entrée` ou `Espace` sur la carte (tabindex=0 + role=button).
- **Boutons** (`À revoir`, `Je sais`) remettent toujours la carte côté recto.

## QA à vérifier
1. Modifier `front_text`/`back_text` → rendu change sans toucher au HTML (critère d'or).
2. `front_text:""` → BLOCKED propre.
3. Clic / Entrée sur la carte → flip 3D recto→verso.
4. Boutons → remise en recto.
5. `init(autreInstance)` → rendu change (injection externe).
6. Responsive 375/768/1024 — aucun débordement.

## Source
`INDEX-300-memorylearning-GAB-101-105-PLAYABLE.html`, stage `data-tpl="102"`.

## external_refs / dependencies
- Partage le même archétype flip-3D que GAB-101 (MemoryFlashcardBasic) — seule la logique recto/verso est inversée.
- Use_when / do_not_use différentiels : GAB-101 sens unique, GAB-102 sens inversé, GAB-105 paires multiples.
