{
  "gab_id": "GAB-386",
  "renderer_key": "media_viewer",
  "gallery_id": "gallery-medialearning-386-example",
  "_note_dev": "SOURCE DE VÉRITÉ. Galerie de médias ordonnée pédagogiquement : chaque item porte sa source/droits/alt. Anti-invention : les items viennent du HTML source (gravure/carte/graphique/photo cassée). Le HTML (grille, sélection, fallback cassé) ne change pas ; seuls ces champs changent le rendu.",
  "title": "Galerie de médias",
  "pedagogical_order": true,
  "items": [
    {
      "id": "item-1",
      "label": "Gravure",
      "icon": "🖼️",
      "source_rights": "domaine public",
      "alt": "Gravure — domaine public, texte alternatif fourni.",
      "order": 1,
      "broken": false
    },
    {
      "id": "item-2",
      "label": "Carte",
      "icon": "🗺️",
      "source_rights": "CC-BY — crédit auteur requis",
      "alt": "Carte géographique sous licence CC-BY.",
      "order": 2,
      "broken": false
    },
    {
      "id": "item-3",
      "label": "Graphique",
      "icon": "📊",
      "source_rights": "licence interne",
      "alt": "Graphique sous licence interne.",
      "order": 3,
      "broken": false
    },
    {
      "id": "item-4",
      "label": "Photo (cassée)",
      "icon": "⚠️",
      "source_rights": "_TODO: droits non renseignés dans la source",
      "alt": "_TODO: alt non renseigné dans la source",
      "order": 4,
      "broken": true
    }
  ],
  "broken_item_fallback": "Média cassé : on affiche un placeholder + alt texte, sans bloquer le reste de la galerie.",
  "pagination": false,
  "mobile_perf": true
}
