{
  "gab_id": "GAB-003",
  "renderer_key": "text_cta",
  "session_step_id": "session-step-pythagore-demo",
  "_note_dev": "SOURCE DE VÉRITÉ. Shell runtime d'une étape de session : topbar (titre session, étape courante, barre de progression), slot de contenu rendu par le provider, et navigation Précédent/Suivant. Les champs steps[] décrivent les étapes jouables. Aucun contenu pédagogique en dur dans le HTML.",
  "session_title": "Défi Pythagore",
  "current_step_index": 1,
  "total_steps": 5,
  "steps": [
    {
      "badge": "StoryLearning",
      "content": "Pourquoi mesurer sans grimper ?",
      "mod": "situation-problème narrative"
    },
    {
      "badge": "VisualLearning",
      "content": "a² + b² = c²",
      "mod": "diagramme math annoté"
    },
    {
      "badge": "MemoryLearning",
      "content": "Flashcard : hypoténuse ?",
      "mod": "rappel actif recto/verso"
    },
    {
      "badge": "ExerciseLearning",
      "content": "Calcule BC si AB=3, AC=4",
      "mod": "exercice guidé pas-à-pas"
    },
    {
      "badge": "PlayKit",
      "content": "Bravo, Pythagore validé !",
      "mod": "recap + CTA cascade"
    }
  ],
  "back_cta": "← Précédent",
  "next_cta": "Suivant →"
}
