{
  "$comment": "Single source of truth for products (handoff doc 06 R1). Edit copy, prices, colors, ratings, images here — never in components.",
  "flavors": [
    {
      "id": "churro",
      "name": "Churro",
      "subtitle": "Dulce y canelado",
      "blurb": "Dulce, canelado y con un crunch dorado.",
      "monsterLine": "Soy Churrito — ¡dulce y canelado!",
      "description": "Palitos de maíz con canela natural. Dulces, dorados y con ese crunch que te hace sonreír. Con color de plantas.",
      "priceMXN": 18,
      "weightGrams": 30,
      "color": "#E8A828",
      "wash": "#FFF4D6",
      "ink": "#0D1E3A",
      "ratings": { "intensidad": 5, "dulzura": 4 },
      "tag": "Favorito",
      "images": { "pack": "/assets/packs/pack-churro.png" },
      "isHeroDefault": true,
      "isGameFirstBag": true
    },
    {
      "id": "chocolate",
      "name": "Chocolate",
      "subtitle": "Cacao cremosito",
      "blurb": "Cacao real y un final cremosito.",
      "monsterLine": "Soy Choco, el antojo con cara de travesura.",
      "description": "Hechos con cacao real y un final cremosito. El gusto dulce que se siente premio — palitos de maíz.",
      "priceMXN": 18,
      "weightGrams": 30,
      "color": "#7B4A2A",
      "wash": "#EFE3DA",
      "ink": "#FDF7F1",
      "ratings": { "intensidad": 4, "dulzura": 5 },
      "tag": null,
      "images": { "pack": "/assets/packs/pack-chocolate.png" }
    },
    {
      "id": "jamaica",
      "name": "Jamaica",
      "subtitle": "Flor de jamaica",
      "blurb": "Flor de jamaica, dulcecita y con su toque ácido.",
      "monsterLine": "Soy Jamaica — ¡flor crujiente y atrevida!",
      "description": "Palitos de maíz con flor de jamaica natural. Crujientes, dulcecitos y con un color que enamora.",
      "priceMXN": 18,
      "weightGrams": 30,
      "color": "#D4237A",
      "wash": "#FFE0F0",
      "ink": "#FDF7F1",
      "ratings": { "intensidad": 5, "dulzura": 3 },
      "tag": "Nuevo",
      "images": { "pack": "/assets/packs/pack-jamaica.png" }
    },
    {
      "id": "limon",
      "name": "Limón",
      "subtitle": "Fresco y ácido",
      "blurb": "Fresco, ácido y bien burbujeante de sabor.",
      "monsterLine": "Soy Limón, fresco y burbujeante.",
      "description": "Ácidos, frescos y full sabor a limón natural. Despiertan la boca con cada crunch verde. Imposible comer solo uno.",
      "priceMXN": 18,
      "weightGrams": 30,
      "color": "#A3B517",
      "wash": "#EDF4D9",
      "ink": "#0D1E3A",
      "ratings": { "intensidad": 4, "dulzura": 2 },
      "tag": null,
      "images": { "pack": "/assets/packs/pack-limon.png" }
    }
  ],
  "$nutritionComment": "Deck target table (source of truth). Three columns: per 30 g pack / per 100 g / NOM-051 limit per 100 g. All values are preliminary targets — see footnote.",
  "nutrition": {
    "title": "Declaración nutrimental",
    "portion": "Porción 30 g",
    "headers": ["", "Por 30 g", "Por 100 g", "Límite NOM-051"],
    "footnote": "Todos los valores son objetivos preliminares, a confirmar en la formulación final.",
    "rows": [
      ["Contenido energético", "82 kcal", "272 kcal", "< 275 kcal"],
      ["Proteínas", "1.7 g", "5.7 g", "—"],
      ["Grasas totales", "0.6 g", "2 g", "—"],
      ["Grasas saturadas", "0.1 g", "0.3 g", "< 10% energía"],
      ["Grasas trans", "0 g", "0 g", "< 1% energía"],
      ["Hidratos de carbono disponibles", "10.5 g", "35 g", "—"],
      ["Azúcares", "1.8 g", "6 g", "< 10% energía"],
      ["Azúcares añadidos", "1.8 g", "6 g", "—"],
      ["Fibra dietética", "7.5 g", "25 g", "—"],
      ["Sodio", "51 mg", "170 mg", "< 272 mg"]
    ]
  },
  "crunchGame": {
    "tapsToFill": 5,
    "puffsPerLayer": 60,
    "gridColumns": 12,
    "layerSpanPct": 19,
    "layerGapPct": 1.5,
    "baseOffsetBelowFramePct": 8,
    "puffSizePxRange": [100, 180],
    "rotationDegRange": [-55, 55],
    "brightnessRange": [0.88, 1.08],
    "hueRotateDegRange": [-10, 5],
    "entranceDelayMsRange": [0, 140],
    "sprites": ["/assets/puffs/puff-long-360.webp", "/assets/puffs/puff-smile-360.webp", "/assets/puffs/puff-u-360.webp"],
    "firstBagFlavorId": "churro"
  }
}
