{
  "note": "An overlay changes type scale, density, and which optional slides are included. It never changes a fact. Every number, name, and date comes from data/deck.json and is rendered identically under all four builds.",
  "base": {
    "key": "base",
    "label": "House",
    "for": "The full library build. Every layout appears at least once.",
    "type_scale": 1.0,
    "leading": 1.0,
    "density": "standard",
    "body_max_points": 6,
    "drop_tags": [],
    "defer_tags": [],
    "prefer_tables": false,
    "split_tag": null,
    "section_openers": false,
    "numbers_first": false,
    "summary_first": false,
    "high_contrast": false,
    "extras": []
  },
  "overlays": [
    {
      "key": "analyst",
      "label": "Analyst",
      "for": "Reads the numbers before the story. Wants the table, not the headline.",
      "rules": [
        "Type scale drops to 0.84 so more fits on a slide without shrinking the margins.",
        "Density is dense: tighter leading, more table rows visible, smaller cell padding.",
        "Numbers first: every slide tagged numbers is pulled up directly behind the agenda.",
        "Slides tagged breather are dropped. Large type statements carry no data.",
        "Tables are preferred: the KPI row and the before and after slide render in table form.",
        "Two analyst only slides are added: a variance table and an assumptions list."
      ],
      "type_scale": 0.84,
      "leading": 0.92,
      "density": "dense",
      "body_max_points": 8,
      "drop_tags": ["breather"],
      "defer_tags": [],
      "prefer_tables": true,
      "split_tag": null,
      "section_openers": false,
      "numbers_first": true,
      "summary_first": false,
      "high_contrast": false,
      "extras": ["analyst"]
    },
    {
      "key": "narrative",
      "label": "Narrative",
      "for": "Presents live to a room. One idea per slide, read from the back row.",
      "rules": [
        "Type scale rises to 1.18 and leading opens up.",
        "Slides tagged detail or table are dropped, except the price sheet, which is a fact the room needs.",
        "Slides tagged splittable are broken into one statement slide per idea.",
        "A statement slide opens each section, directly after its divider.",
        "Body points are capped at three per slide."
      ],
      "type_scale": 1.18,
      "leading": 1.12,
      "density": "airy",
      "body_max_points": 3,
      "drop_tags": ["detail", "table"],
      "keep_ids": ["price-sheet"],
      "defer_tags": [],
      "prefer_tables": false,
      "split_tag": "splittable",
      "section_openers": true,
      "numbers_first": false,
      "summary_first": false,
      "high_contrast": false,
      "extras": []
    },
    {
      "key": "board",
      "label": "Board",
      "for": "Reads the summary, decides, and sends the detail to the appendix.",
      "rules": [
        "Type scale rises slightly to 1.06 for reading at a distance across a table.",
        "A summary slide is inserted directly after the agenda, carrying the same four numbers as the KPI row.",
        "Nothing is dropped. Slides tagged detail or table move behind the appendix divider.",
        "High contrast: dark grounds use pure white type, light grounds drop the muted grey to ink, rules darken."
      ],
      "type_scale": 1.06,
      "leading": 1.04,
      "density": "standard",
      "body_max_points": 5,
      "drop_tags": [],
      "defer_tags": ["detail", "table"],
      "prefer_tables": false,
      "split_tag": null,
      "section_openers": false,
      "numbers_first": false,
      "summary_first": true,
      "high_contrast": true,
      "extras": []
    }
  ]
}
