# GAB-108 · MemoryDeckOverview — « Vue d'ensemble du paquet »

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

## Pack (structure officielle par-GAB)
```
GAB-108/
  renderer.html            ← moteur vue d'ensemble (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` · `deck_id` · `title` · `summary{total_cards, mastered_cards}` · `tags[]` · `primary_cta{label, icon, action}`

Optionnels : `cover_emoji`, `cta_active_label`, `fallback_text_summary`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre du paquet, emoji couverture, compteurs (total/maîtrisées), libellés des thèmes (tags), libellé et icône du bouton CTA, libellé post-activation.
- **HTML** : structure du deck card (couverture, barre de progression calculée automatiquement, chips de tags, bouton CTA structurel), layout, palette DS V2 violet.

## Garde-fous
- **BLOCKED** si `title`, `summary`, `tags[]` ou `primary_cta` sont absents.
- La barre de progression est **calculée** (`mastered_cards / total_cards × 100`) — jamais hardcodée.
- Le bouton se désactive après le clic (état `cta_active_label`) — comportement piloté par l'instance.
- Palette DS V2 stricte : ombres colorées seulement, jamais `rgba(0,0,0,…)`.

## QA à vérifier
1. Modifier `title` → rendu change sans toucher au HTML (critère d'or).
2. `tags:[]` → BLOCKED propre.
3. `summary` absent → BLOCKED propre.
4. Clic CTA → bouton désactivé + `cta_active_label` affiché.
5. Barre de progression proportionnelle (ex. 7/12 → 58 %).
6. Responsive 375/768/1024 — aucun débordement.

## Source
`INDEX-300-memorylearning-GAB-106-110-PLAYABLE.html` (stage `data-tpl="108"`, handler `dckStart()`).

## Contexte LOT
Ce GAB fait partie du lot **LOT-memorylearning-GAB-106-110** :
- GAB-106 · MemoryClozeCard — Carte à trou
- GAB-107 · MemoryOrderingSequence — Remise en ordre
- **GAB-108 · MemoryDeckOverview — Vue d'ensemble du paquet** ← ce fichier
- GAB-109 · MemorySessionEnd — Fin de session mémoire
- GAB-110 · MemoryWeakCardsReview — Révision cartes faibles
