{
  "name": "docx",
  "props": {
    "theme": "consulting",
    "metadata": {
      "title": "Client performance report"
    },
    "blocks": {
      "key-takeaways": {
        "description": "Executive conclusions with bounded one-line takeaways. Copy and adapt this document-local example.",
        "slots": {
          "label": {
            "type": "string",
            "oneLine": true,
            "maxWords": 8,
            "required": false,
            "default": "Key takeaways"
          },
          "items": {
            "type": "array",
            "required": true,
            "minItems": 3,
            "maxItems": 5,
            "items": {
              "type": "string",
              "oneLine": true,
              "maxWords": 25,
              "required": true
            }
          }
        },
        "body": [
          {
            "name": "divider",
            "props": {
              "thickness": {
                "$theme": "/chrome/keyTakeaways/rule/weightPt",
                "default": 1.5
              },
              "color": {
                "$theme": "/chrome/keyTakeaways/rule/color",
                "default": "borderPrimary"
              },
              "spacing": {
                "before": 4,
                "after": {
                  "$theme": "/chrome/keyTakeaways/padPt",
                  "default": 6
                }
              }
            }
          },
          {
            "name": "paragraph",
            "props": {
              "text": {
                "$slot": "/label"
              },
              "font": {
                "size": {
                  "$theme": "/styles/label/size",
                  "default": 9
                },
                "bold": {
                  "$theme": "/styles/label/bold",
                  "default": true
                },
                "color": {
                  "$theme": [
                    "/chrome/keyTakeaways/color",
                    "/styles/label/color"
                  ],
                  "default": "textPrimary"
                }
              },
              "keepNext": true,
              "themeStyle": {
                "$theme": "/chrome/keyTakeaways/type",
                "default": "label"
              }
            }
          },
          {
            "name": "list",
            "props": {
              "items": {
                "$slot": "/items"
              }
            }
          },
          {
            "name": "divider",
            "props": {
              "thickness": {
                "$theme": "/chrome/keyTakeaways/rule/weightPt",
                "default": 0.5
              },
              "color": {
                "$theme": "/chrome/keyTakeaways/rule/color",
                "default": "borderPrimary"
              },
              "spacing": {
                "before": {
                  "$theme": "/chrome/keyTakeaways/padPt",
                  "default": 6
                },
                "after": 6
              }
            }
          }
        ]
      },
      "cover": {
        "description": "A themed title page: the theme motif at the top edge, the title a third of the way down, and the metadata band pinned to the foot of the text area. The band floats, so give the cover a section of its own — content that flows past the foot of the page would run under it.",
        "slots": {
          "title": {
            "type": "string",
            "oneLine": true,
            "maxWords": 12,
            "required": true
          },
          "subtitle": {
            "type": "string",
            "oneLine": true,
            "maxWords": 20,
            "required": false
          },
          "client": {
            "type": "string",
            "oneLine": true,
            "maxWords": 6,
            "required": false
          },
          "date": {
            "type": "string",
            "oneLine": true,
            "maxWords": 3,
            "required": false
          },
          "confidentiality": {
            "type": "string",
            "oneLine": true,
            "maxWords": 3,
            "required": false
          },
          "logo": {
            "type": "component"
          }
        },
        "body": [
          {
            "$if": "/logo",
            "then": {
              "$slot": "/logo",
              "props": {
                "alignment": {
                  "$theme": "/chrome/logoSlot/alignment",
                  "default": "left"
                }
              }
            }
          },
          {
            "$if": {
              "$theme": "/motif"
            },
            "then": {
              "name": "divider",
              "props": {
                "width": "22%",
                "thickness": {
                  "$theme": "/motif/weightPt",
                  "default": 3
                },
                "color": {
                  "$theme": "/motif/color",
                  "default": "accent"
                },
                "spacing": {
                  "before": 0,
                  "after": 10
                }
              }
            }
          },
          {
            "$if": "/client",
            "then": {
              "name": "paragraph",
              "props": {
                "text": {
                  "$slot": "/client"
                },
                "themeStyle": "eyebrow",
                "font": {
                  "size": {
                    "$theme": "/styles/eyebrow/size",
                    "default": 9
                  },
                  "color": {
                    "$theme": "/styles/eyebrow/color",
                    "default": "accent"
                  },
                  "bold": {
                    "$theme": "/styles/eyebrow/bold",
                    "default": true
                  }
                },
                "spacing": {
                  "before": 0,
                  "after": 0
                },
                "keepNext": true
              }
            }
          },
          {
            "name": "paragraph",
            "props": {
              "text": "",
              "spacing": {
                "before": {
                  "$measure": "height",
                  "fraction": 0.3,
                  "unit": "pt"
                },
                "after": 0
              }
            }
          },
          {
            "name": "divider",
            "props": {
              "thickness": {
                "$theme": "/chrome/cover/rule/weightPt",
                "default": 3
              },
              "color": {
                "$theme": "/chrome/cover/rule/color",
                "default": "borderPrimary"
              },
              "spacing": {
                "before": 0,
                "after": 7
              }
            }
          },
          {
            "name": "paragraph",
            "props": {
              "text": {
                "$slot": "/title"
              },
              "themeStyle": {
                "$theme": "/chrome/cover/type",
                "default": "display"
              },
              "font": {
                "size": {
                  "$theme": "/styles/display/size",
                  "default": 26
                },
                "color": {
                  "$theme": ["/chrome/cover/color", "/styles/display/color"],
                  "default": "textPrimary"
                },
                "bold": {
                  "$theme": "/styles/display/bold",
                  "default": true
                },
                "lineSpacing": {
                  "type": "multiple",
                  "value": 1.05
                }
              },
              "spacing": {
                "before": 0,
                "after": 10
              },
              "keepNext": true
            }
          },
          {
            "$if": "/subtitle",
            "then": {
              "name": "paragraph",
              "props": {
                "text": {
                  "$slot": "/subtitle"
                },
                "themeStyle": "subtitle",
                "font": {
                  "size": {
                    "$theme": "/styles/subtitle/size",
                    "default": 13
                  },
                  "color": {
                    "$theme": "/styles/subtitle/color",
                    "default": "textSecondary"
                  },
                  "bold": {
                    "$theme": "/styles/subtitle/bold",
                    "default": false
                  },
                  "lineSpacing": {
                    "type": "multiple",
                    "value": 1.15
                  }
                },
                "spacing": {
                  "before": 0,
                  "after": 0
                },
                "keepNext": true
              }
            }
          },
          {
            "name": "text-box",
            "props": {
              "width": "100%",
              "floating": {
                "horizontalPosition": {
                  "relative": "margin",
                  "align": "left"
                },
                "verticalPosition": {
                  "relative": "margin",
                  "offset": "93%"
                },
                "wrap": {
                  "type": "none"
                }
              },
              "style": {
                "padding": {
                  "top": 6,
                  "bottom": 0,
                  "left": 0,
                  "right": 0
                },
                "border": {
                  "top": {
                    "style": "solid",
                    "width": 0.5,
                    "color": {
                      "$theme": "/palette/rule",
                      "default": "borderPrimary"
                    }
                  }
                }
              }
            },
            "children": [
              {
                "name": "table",
                "props": {
                  "width": 100,
                  "hideBorders": true,
                  "columns": [
                    {
                      "width": "33.3%",
                      "cellDefaults": {
                        "padding": {
                          "left": 0,
                          "right": 10,
                          "top": 0,
                          "bottom": 0
                        }
                      },
                      "cells": [
                        {
                          "content": {
                            "name": "paragraph",
                            "props": {
                              "text": {
                                "$if": "/client",
                                "then": "Prepared for",
                                "else": ""
                              },
                              "themeStyle": "eyebrow",
                              "font": {
                                "size": {
                                  "$theme": "/styles/eyebrow/size",
                                  "default": 8
                                },
                                "bold": true,
                                "color": "textMuted"
                              },
                              "spacing": {
                                "before": 0,
                                "after": 2
                              }
                            }
                          }
                        },
                        {
                          "content": {
                            "name": "paragraph",
                            "props": {
                              "text": {
                                "$slot": "/client",
                                "default": ""
                              },
                              "themeStyle": "label",
                              "font": {
                                "size": {
                                  "$theme": "/styles/label/size",
                                  "default": 9
                                },
                                "color": {
                                  "$theme": "/styles/label/color",
                                  "default": "textPrimary"
                                },
                                "bold": {
                                  "$theme": "/styles/label/bold",
                                  "default": false
                                }
                              },
                              "spacing": {
                                "before": 0,
                                "after": 0
                              }
                            }
                          }
                        }
                      ]
                    },
                    {
                      "width": "33.3%",
                      "cellDefaults": {
                        "padding": {
                          "left": 0,
                          "right": 10,
                          "top": 0,
                          "bottom": 0
                        }
                      },
                      "cells": [
                        {
                          "content": {
                            "name": "paragraph",
                            "props": {
                              "text": {
                                "$if": "/date",
                                "then": "Date",
                                "else": ""
                              },
                              "themeStyle": "eyebrow",
                              "font": {
                                "size": {
                                  "$theme": "/styles/eyebrow/size",
                                  "default": 8
                                },
                                "bold": true,
                                "color": "textMuted"
                              },
                              "spacing": {
                                "before": 0,
                                "after": 2
                              }
                            }
                          }
                        },
                        {
                          "content": {
                            "name": "paragraph",
                            "props": {
                              "text": {
                                "$slot": "/date",
                                "default": ""
                              },
                              "themeStyle": "label",
                              "font": {
                                "size": {
                                  "$theme": "/styles/label/size",
                                  "default": 9
                                },
                                "color": {
                                  "$theme": "/styles/label/color",
                                  "default": "textPrimary"
                                },
                                "bold": {
                                  "$theme": "/styles/label/bold",
                                  "default": false
                                }
                              },
                              "spacing": {
                                "before": 0,
                                "after": 0
                              }
                            }
                          }
                        }
                      ]
                    },
                    {
                      "width": "33.3%",
                      "cellDefaults": {
                        "padding": {
                          "left": 0,
                          "right": 0,
                          "top": 0,
                          "bottom": 0
                        }
                      },
                      "cells": [
                        {
                          "content": {
                            "name": "paragraph",
                            "props": {
                              "text": {
                                "$if": "/confidentiality",
                                "then": "Classification",
                                "else": ""
                              },
                              "themeStyle": "eyebrow",
                              "font": {
                                "size": {
                                  "$theme": "/styles/eyebrow/size",
                                  "default": 8
                                },
                                "bold": true,
                                "color": "textMuted"
                              },
                              "spacing": {
                                "before": 0,
                                "after": 2
                              }
                            }
                          }
                        },
                        {
                          "content": {
                            "name": "paragraph",
                            "props": {
                              "text": {
                                "$slot": "/confidentiality",
                                "default": ""
                              },
                              "themeStyle": "label",
                              "font": {
                                "size": {
                                  "$theme": "/styles/label/size",
                                  "default": 9
                                },
                                "color": {
                                  "$theme": "/styles/label/color",
                                  "default": "textPrimary"
                                },
                                "bold": {
                                  "$theme": "/styles/label/bold",
                                  "default": false
                                }
                              },
                              "spacing": {
                                "before": 0,
                                "after": 0
                              }
                            }
                          }
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          }
        ]
      },
      "section-opener": {
        "description": "A numbered section heading. The number opens the section, so it carries the gap that separates one section from the next and the heading under it carries none: the pair reads as one unit rather than the number trailing the section that ended.",
        "slots": {
          "number": {
            "type": "string",
            "oneLine": true,
            "maxWords": 3,
            "required": false
          },
          "title": {
            "type": "string",
            "oneLine": true,
            "maxWords": 12,
            "required": true
          }
        },
        "body": [
          {
            "$if": "/number",
            "then": {
              "name": "paragraph",
              "props": {
                "text": {
                  "$slot": "/number"
                },
                "font": {
                  "size": {
                    "$theme": "/styles/eyebrow/size",
                    "default": 9
                  },
                  "bold": {
                    "$theme": "/styles/eyebrow/bold",
                    "default": true
                  },
                  "color": {
                    "$theme": "/styles/eyebrow/color",
                    "default": "accent"
                  }
                },
                "keepNext": true,
                "spacing": {
                  "before": {
                    "$theme": "/styles/heading1/spacing/before",
                    "default": 12
                  },
                  "after": 0
                },
                "themeStyle": "eyebrow"
              }
            }
          },
          {
            "name": "heading",
            "props": {
              "text": {
                "$slot": "/title"
              },
              "level": 1,
              "spacing": {
                "$if": "/number",
                "then": {
                  "before": 0
                }
              },
              "font": {
                "color": {
                  "$theme": [
                    "/chrome/actionTitle/color",
                    "/styles/heading1/color"
                  ],
                  "default": "primary"
                }
              }
            }
          }
        ]
      },
      "running-head": {
        "description": "Document title in the header and confidentiality, page fields and date in the footer, inherited by every later section; those sections continue on the page.",
        "slots": {
          "title": {
            "type": "string",
            "oneLine": true,
            "maxWords": 6,
            "required": false
          },
          "confidentiality": {
            "type": "string",
            "oneLine": true,
            "maxWords": 4,
            "required": false
          },
          "date": {
            "type": "string",
            "oneLine": true,
            "maxWords": 3,
            "required": false
          },
          "pageNumbers": {
            "type": "boolean",
            "default": true
          }
        },
        "body": [],
        "section": {
          "scope": "following",
          "pageBreak": true,
          "header": [
            {
              "name": "paragraph",
              "props": {
                "text": {
                  "$slot": "/title",
                  "default": {
                    "$context": "/document/title",
                    "default": ""
                  }
                },
                "font": {
                  "size": {
                    "$theme": "/styles/tracker/size",
                    "default": 8
                  },
                  "bold": {
                    "$theme": "/styles/tracker/bold",
                    "default": false
                  },
                  "color": {
                    "$theme": [
                      "/chrome/runningHead/color",
                      "/chrome/tracker/color",
                      "/styles/tracker/color"
                    ],
                    "default": "textMuted"
                  }
                },
                "spacing": {
                  "before": 0,
                  "after": 0
                },
                "themeStyle": {
                  "$theme": [
                    "/chrome/runningHead/type",
                    "/chrome/tracker/type"
                  ],
                  "default": "tracker"
                },
                "alignment": {
                  "$theme": "/chrome/runningHead/alignment",
                  "default": "right"
                }
              }
            },
            {
              "name": "divider",
              "props": {
                "thickness": {
                  "$theme": "/chrome/runningHead/rule/weightPt",
                  "default": 0.5
                },
                "color": {
                  "$theme": "/chrome/runningHead/rule/color",
                  "default": "borderPrimary"
                },
                "spacing": {
                  "before": 4,
                  "after": 6
                }
              }
            }
          ],
          "footer": [
            {
              "name": "divider",
              "props": {
                "thickness": {
                  "$theme": "/chrome/confidentialFooter/rule/weightPt",
                  "default": 0.5
                },
                "color": {
                  "$theme": "/chrome/confidentialFooter/rule/color",
                  "default": "borderPrimary"
                },
                "spacing": {
                  "before": 4,
                  "after": 6
                }
              }
            },
            {
              "name": "paragraph",
              "props": {
                "text": {
                  "$join": [
                    {
                      "$slot": "/confidentiality",
                      "default": ""
                    },
                    {
                      "$if": "/pageNumbers",
                      "then": "{PAGE} / {TOTAL_PAGES}",
                      "else": ""
                    },
                    {
                      "$slot": "/date",
                      "default": ""
                    }
                  ],
                  "separator": "\t",
                  "keepEmpty": true
                },
                "font": {
                  "size": {
                    "$theme": "/styles/footer/size",
                    "default": 8
                  },
                  "bold": {
                    "$theme": "/styles/footer/bold",
                    "default": false
                  },
                  "color": {
                    "$theme": [
                      "/chrome/confidentialFooter/color",
                      "/styles/footer/color"
                    ],
                    "default": "textMuted"
                  }
                },
                "tabStops": [
                  {
                    "type": "center",
                    "position": {
                      "$measure": "width",
                      "fraction": 0.5,
                      "unit": "twip"
                    }
                  },
                  {
                    "type": "right",
                    "position": {
                      "$measure": "width",
                      "unit": "twip"
                    }
                  }
                ],
                "spacing": {
                  "before": 0,
                  "after": 0
                },
                "themeStyle": {
                  "$theme": "/chrome/confidentialFooter/type",
                  "default": "footer"
                },
                "alignment": {
                  "$theme": "/chrome/confidentialFooter/alignment",
                  "default": "left"
                }
              }
            }
          ]
        }
      },
      "source-line": {
        "description": "A hairline and a source line in the source role, under a figure or a table. The data blocks invoke it; copy it to add a source to anything else.",
        "slots": {
          "text": {
            "type": "string",
            "required": true,
            "maxWords": 20,
            "role": "source"
          }
        },
        "body": [
          {
            "name": "divider",
            "props": {
              "thickness": {
                "$theme": "/chrome/sourceLine/rule/weightPt",
                "default": 0.5
              },
              "color": {
                "$theme": ["/chrome/sourceLine/rule/color", "/palette/rule"],
                "default": "borderPrimary"
              },
              "spacing": {
                "before": 4,
                "after": 4
              }
            }
          },
          {
            "name": "paragraph",
            "props": {
              "text": {
                "$slot": "/text"
              },
              "font": {
                "size": {
                  "$theme": "/styles/source/size",
                  "default": 8
                },
                "bold": {
                  "$theme": "/styles/source/bold",
                  "default": false
                },
                "color": {
                  "$theme": [
                    "/chrome/sourceLine/color",
                    "/styles/source/color"
                  ],
                  "default": "textMuted"
                }
              },
              "spacing": {
                "before": 0,
                "after": 8
              },
              "themeStyle": {
                "$theme": "/chrome/sourceLine/type",
                "default": "source"
              }
            }
          }
        ]
      },
      "kpi-row": {
        "description": "Two to four headline metrics in equal columns: value with its unit, label, and a signed delta with a direction glyph; four of them set the figures a size smaller. An optional source collapses with its hairline. Text budgets reject overflow; columns reflow at unchanged type size.",
        "slots": {
          "items": {
            "type": "array",
            "required": true,
            "minItems": 2,
            "maxItems": 4,
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "string",
                  "required": true,
                  "maxLength": 7,
                  "description": "The headline figure, already formatted: 8.8, 94, +18."
                },
                "unit": {
                  "type": "string",
                  "maxLength": 5,
                  "description": "Suffix drawn after the figure at half its size: %, €m, pts. Write the space yourself when one belongs."
                },
                "label": {
                  "type": "string",
                  "required": true,
                  "oneLine": true,
                  "maxWords": 6,
                  "description": "What the figure measures."
                },
                "delta": {
                  "type": "string",
                  "maxLength": 10,
                  "description": "Signed change shown beside the figure: +3.2 pts, −0.4."
                },
                "trend": {
                  "type": "string",
                  "enum": ["up", "down", "neutral"],
                  "description": "Direction glyph drawn before the delta."
                }
              }
            }
          },
          "source": {
            "type": "string",
            "maxWords": 20,
            "role": "source"
          }
        },
        "body": [
          {
            "name": "columns",
            "props": {
              "columns": {
                "$count": "/items"
              },
              "gap": 12
            },
            "children": [
              {
                "$each": "/items",
                "template": {
                  "name": "statistic",
                  "props": {
                    "number": {
                      "$item": "/value"
                    },
                    "unit": {
                      "$item": "/unit"
                    },
                    "description": {
                      "$item": "/label"
                    },
                    "trend": {
                      "$item": "/trend"
                    },
                    "trendValue": {
                      "$item": "/delta"
                    },
                    "size": {
                      "$if": "/items/3",
                      "then": "small",
                      "else": "medium"
                    }
                  }
                }
              }
            ]
          },
          {
            "$if": "/source",
            "then": {
              "name": "block",
              "props": {
                "ref": "source-line",
                "slots": {
                  "text": {
                    "$slot": "/source"
                  }
                }
              }
            }
          }
        ]
      },
      "callout": {
        "description": "An aside set off by a hairline rule down its left edge: a short label over up to sixty words of text. No fill, so it reads as a note beside the argument rather than a box in it.",
        "slots": {
          "label": {
            "type": "string",
            "oneLine": true,
            "maxWords": 6,
            "default": "Note"
          },
          "text": {
            "type": "string",
            "required": true,
            "maxWords": 60
          }
        },
        "body": [
          {
            "name": "text-box",
            "props": {
              "width": "100%",
              "style": {
                "padding": {
                  "top": 2,
                  "bottom": 2,
                  "left": 10,
                  "right": 0
                },
                "border": {
                  "left": {
                    "style": "solid",
                    "width": 0.75,
                    "color": {
                      "$theme": "/palette/rule",
                      "default": "borderPrimary"
                    }
                  }
                }
              }
            },
            "children": [
              {
                "name": "paragraph",
                "props": {
                  "text": {
                    "$slot": "/label"
                  },
                  "font": {
                    "size": {
                      "$theme": "/styles/label/size",
                      "default": 9
                    },
                    "bold": {
                      "$theme": "/styles/label/bold",
                      "default": true
                    },
                    "color": {
                      "$theme": "/styles/label/color",
                      "default": "textPrimary"
                    }
                  },
                  "spacing": {
                    "before": 0,
                    "after": 2
                  },
                  "keepNext": true,
                  "themeStyle": "label"
                }
              },
              {
                "name": "paragraph",
                "props": {
                  "text": {
                    "$slot": "/text"
                  },
                  "spacing": {
                    "before": 0,
                    "after": 0
                  }
                }
              }
            ]
          }
        ]
      },
      "data-table": {
        "description": "A sourced numeric table: a title, a text column of row labels at a fifth of the measure, one to five data columns right-aligned by construction, then optional notes and a source line. With its header, 24 rows keep the table on one page; the table-design rule checks the compiled table for mixed decimals.",
        "slots": {
          "title": {
            "type": "string",
            "required": true,
            "oneLine": true,
            "maxWords": 16
          },
          "labelHeader": {
            "type": "string",
            "oneLine": true,
            "maxWords": 4,
            "default": "",
            "description": "Header of the row-label column."
          },
          "labels": {
            "type": "array",
            "required": true,
            "minItems": 1,
            "maxItems": 24,
            "items": {
              "type": "string",
              "oneLine": true,
              "maxWords": 5
            },
            "description": "Row labels, top to bottom. Every data column lists its cells in this order and at this count."
          },
          "columns": {
            "type": "array",
            "required": true,
            "minItems": 1,
            "maxItems": 5,
            "items": {
              "type": "object",
              "properties": {
                "header": {
                  "type": "string",
                  "required": true,
                  "oneLine": true,
                  "maxWords": 4,
                  "maxLength": 14,
                  "description": "Column header; put the unit here: Revenue (€m)."
                },
                "cells": {
                  "type": "array",
                  "required": true,
                  "minItems": 1,
                  "maxItems": 24,
                  "items": {
                    "type": "string",
                    "maxLength": 10
                  },
                  "description": "One formatted value per row label, rounded the same way down the column."
                },
                "numeric": {
                  "type": "boolean",
                  "default": true,
                  "description": "Right-align header and cells so digits line up by place value. Set false for a text column."
                }
              }
            }
          },
          "notes": {
            "type": "string",
            "maxWords": 40,
            "description": "What the reader needs to interpret the figures: definitions, periods, exclusions."
          },
          "source": {
            "type": "string",
            "maxWords": 20,
            "role": "source"
          }
        },
        "body": [
          {
            "name": "paragraph",
            "props": {
              "text": {
                "$slot": "/title"
              },
              "font": {
                "size": {
                  "$theme": "/styles/label/size",
                  "default": 9
                },
                "bold": {
                  "$theme": "/styles/label/bold",
                  "default": true
                },
                "color": {
                  "$theme": "/styles/label/color",
                  "default": "textPrimary"
                }
              },
              "spacing": {
                "before": 8,
                "after": 4
              },
              "keepNext": true,
              "themeStyle": "label"
            }
          },
          {
            "name": "table",
            "props": {
              "width": 100,
              "repeatHeaderOnPageBreak": true,
              "rows": {
                "$each": "/labels",
                "template": {
                  "cantSplit": true
                }
              },
              "columns": [
                {
                  "width": "22%",
                  "header": {
                    "content": {
                      "$slot": "/labelHeader"
                    },
                    "padding": {
                      "left": 0,
                      "right": 6
                    }
                  },
                  "cellDefaults": {
                    "padding": {
                      "left": 0,
                      "right": 6
                    }
                  },
                  "cells": {
                    "$each": "/labels",
                    "template": {
                      "content": {
                        "$item": ""
                      }
                    }
                  }
                },
                {
                  "$each": "/columns",
                  "template": {
                    "header": {
                      "content": {
                        "$item": "/header"
                      },
                      "horizontalAlignment": {
                        "$if": {
                          "$item": "/numeric"
                        },
                        "then": "right",
                        "else": "left"
                      },
                      "padding": {
                        "left": 6,
                        "right": 0
                      }
                    },
                    "cellDefaults": {
                      "horizontalAlignment": {
                        "$if": {
                          "$item": "/numeric"
                        },
                        "then": "right",
                        "else": "left"
                      },
                      "padding": {
                        "left": 6,
                        "right": 0
                      }
                    },
                    "cells": {
                      "$each": {
                        "$item": "/cells"
                      },
                      "template": {
                        "content": {
                          "$item": ""
                        }
                      }
                    }
                  }
                }
              ]
            }
          },
          {
            "$if": "/notes",
            "then": {
              "name": "paragraph",
              "props": {
                "text": {
                  "$slot": "/notes"
                },
                "font": {
                  "size": {
                    "$theme": "/styles/source/size",
                    "default": 8
                  },
                  "bold": {
                    "$theme": "/styles/source/bold",
                    "default": false
                  },
                  "color": {
                    "$theme": [
                      "/chrome/sourceLine/color",
                      "/styles/source/color"
                    ],
                    "default": "textMuted"
                  }
                },
                "spacing": {
                  "before": 4,
                  "after": 0
                },
                "themeStyle": {
                  "$theme": "/chrome/sourceLine/type",
                  "default": "source"
                }
              }
            }
          },
          {
            "$if": "/source",
            "then": {
              "name": "block",
              "props": {
                "ref": "source-line",
                "slots": {
                  "text": {
                    "$slot": "/source"
                  }
                }
              }
            }
          }
        ]
      },
      "figure-caption": {
        "description": "The numbered caption under a figure: **Figure N.** and the text, N being a Word SEQ field over the figure sequence. chart-figure and figure invoke it, so charts and images number together.",
        "slots": {
          "text": {
            "type": "string",
            "required": true,
            "oneLine": true,
            "maxWords": 20
          }
        },
        "body": [
          {
            "name": "paragraph",
            "props": {
              "text": {
                "$join": [
                  "**Figure {SEQ:figure}.** ",
                  {
                    "$slot": "/text"
                  }
                ]
              },
              "font": {
                "size": {
                  "$theme": "/styles/label/size",
                  "default": 9
                },
                "bold": false,
                "color": {
                  "$theme": "/styles/label/color",
                  "default": "textPrimary"
                }
              },
              "spacing": {
                "before": 4,
                "after": 2
              },
              "keepNext": true,
              "themeStyle": "label"
            }
          }
        ]
      },
      "chart-figure": {
        "description": "A numbered, sourced chart: the chart itself (highcharts through the export server, or a native chart on the office-open renderer), a caption that says what it shows, an optional takeaway beneath, and the source line the report cites. The source is required; the figure number is a Word SEQ field.",
        "slots": {
          "chart": {
            "type": "component",
            "required": true,
            "description": "A highcharts or chart component. Put the unit in the value-axis title: Revenue (€m)."
          },
          "caption": {
            "type": "string",
            "required": true,
            "oneLine": true,
            "maxWords": 20,
            "description": "What the chart shows, as a statement: Revenue by quarter, 2026."
          },
          "takeaway": {
            "type": "string",
            "maxWords": 30,
            "role": "takeaway",
            "description": "The one sentence the reader should leave with."
          },
          "source": {
            "type": "string",
            "required": true,
            "maxWords": 20,
            "role": "source"
          }
        },
        "body": [
          {
            "$slot": "/chart"
          },
          {
            "name": "block",
            "props": {
              "ref": "figure-caption",
              "slots": {
                "text": {
                  "$slot": "/caption"
                }
              }
            }
          },
          {
            "$if": "/takeaway",
            "then": {
              "name": "paragraph",
              "props": {
                "text": {
                  "$slot": "/takeaway"
                },
                "font": {
                  "color": {
                    "$theme": "/styles/quote/color",
                    "default": "textSecondary"
                  }
                },
                "spacing": {
                  "before": 0,
                  "after": 2
                }
              }
            }
          },
          {
            "$if": "/source",
            "then": {
              "name": "block",
              "props": {
                "ref": "source-line",
                "slots": {
                  "text": {
                    "$slot": "/source"
                  }
                }
              }
            }
          }
        ]
      },
      "figure": {
        "description": "A numbered image with a caption and an optional source line. The image keeps its own width and alt text; the figure number is a Word SEQ field shared with chart-figure.",
        "slots": {
          "image": {
            "type": "component",
            "required": true,
            "description": "An image or visual component. Give it alt text and a width."
          },
          "caption": {
            "type": "string",
            "required": true,
            "oneLine": true,
            "maxWords": 20
          },
          "source": {
            "type": "string",
            "maxWords": 20,
            "role": "source"
          }
        },
        "body": [
          {
            "$slot": "/image"
          },
          {
            "name": "block",
            "props": {
              "ref": "figure-caption",
              "slots": {
                "text": {
                  "$slot": "/caption"
                }
              }
            }
          },
          {
            "$if": "/source",
            "then": {
              "name": "block",
              "props": {
                "ref": "source-line",
                "slots": {
                  "text": {
                    "$slot": "/source"
                  }
                }
              }
            }
          }
        ]
      },
      "footnotes": {
        "description": "Notes and sources: every distinct source-role slot value the document's block invocations carry, in order, as a numbered list under a label — the engine's /sources context. Emits nothing when no invocation cites a source.",
        "slots": {
          "title": {
            "type": "string",
            "oneLine": true,
            "maxWords": 6,
            "default": "Notes and sources"
          }
        },
        "body": [
          {
            "$if": {
              "$context": "/sources"
            },
            "then": [
              {
                "name": "divider",
                "props": {
                  "thickness": 0.5,
                  "color": {
                    "$theme": "/palette/rule",
                    "default": "borderPrimary"
                  },
                  "spacing": {
                    "before": 12,
                    "after": 4
                  }
                }
              },
              {
                "name": "paragraph",
                "props": {
                  "text": {
                    "$slot": "/title"
                  },
                  "font": {
                    "size": {
                      "$theme": "/styles/label/size",
                      "default": 9
                    },
                    "bold": true,
                    "color": {
                      "$theme": "/styles/label/color",
                      "default": "textPrimary"
                    }
                  },
                  "spacing": {
                    "before": 0,
                    "after": 4
                  },
                  "keepNext": true,
                  "themeStyle": "label"
                }
              },
              {
                "name": "list",
                "props": {
                  "format": "decimal",
                  "items": {
                    "$each": {
                      "$context": "/sources"
                    },
                    "template": {
                      "$item": ""
                    }
                  }
                }
              }
            ]
          }
        ]
      }
    }
  },
  "children": [
    {
      "name": "section",
      "props": {},
      "children": [
        {
          "name": "block",
          "props": {
            "ref": "cover",
            "slots": {
              "title": "Growth improved as delivery became more reliable",
              "subtitle": "Quarterly client performance review",
              "client": "Example client",
              "date": "September 2026",
              "confidentiality": "Confidential"
            }
          }
        }
      ]
    },
    {
      "name": "section",
      "props": {},
      "children": [
        {
          "name": "block",
          "props": {
            "ref": "running-head",
            "slots": {
              "confidentiality": "Confidential",
              "date": "September 2026"
            }
          }
        },
        {
          "name": "block",
          "props": {
            "ref": "section-opener",
            "slots": {
              "number": "01",
              "title": "Delivery improvements supported growth"
            }
          }
        },
        {
          "name": "block",
          "props": {
            "ref": "key-takeaways",
            "slots": {
              "items": [
                "Revenue grew as more contracted work reached completion.",
                "On-time delivery improved following clearer weekly ownership.",
                "Next quarter should prioritize retention and recurring revenue."
              ]
            }
          }
        },
        {
          "name": "paragraph",
          "props": {
            "text": "The report designs above are ordinary JSON definitions in this document. Edit their slots or composition in the playground; the engine has no built-in cover or takeaways implementation."
          }
        },
        {
          "name": "block",
          "props": {
            "ref": "kpi-row",
            "slots": {
              "items": [
                {
                  "value": "8.8",
                  "unit": " €m",
                  "label": "Revenue year to date",
                  "delta": "+16.9%",
                  "trend": "up"
                },
                {
                  "value": "94",
                  "unit": "%",
                  "label": "Client retention",
                  "delta": "+2 pts",
                  "trend": "up"
                },
                {
                  "value": "11",
                  "unit": " days",
                  "label": "Median time to deliver",
                  "delta": "−3 days",
                  "trend": "down"
                }
              ],
              "source": "Source: quarterly operating review, 2026."
            }
          }
        },
        {
          "name": "block",
          "props": {
            "ref": "callout",
            "slots": {
              "label": "How to read the deltas",
              "text": "Deltas compare the first three quarters of 2026 with the same period of 2025. Retention counts contracts renewed within thirty days of their term; late renewals are excluded from both years."
            }
          }
        }
      ]
    },
    {
      "name": "section",
      "props": {},
      "children": [
        {
          "name": "block",
          "props": {
            "ref": "section-opener",
            "slots": {
              "number": "02",
              "title": "Focus the next quarter on retention"
            }
          }
        },
        {
          "name": "block",
          "props": {
            "ref": "data-table",
            "slots": {
              "title": "Revenue and retention by segment, 2026 to date",
              "labelHeader": "Segment",
              "labels": [
                "Enterprise",
                "Mid-market",
                "Public sector",
                "All segments"
              ],
              "columns": [
                {
                  "header": "Revenue (€m)",
                  "cells": ["4.2", "2.7", "1.9", "8.8"]
                },
                {
                  "header": "Growth (%)",
                  "cells": ["21.0", "14.5", "9.8", "16.9"]
                },
                {
                  "header": "Retention (%)",
                  "cells": ["96", "93", "91", "94"]
                }
              ],
              "notes": "Growth is year on year on the same nine months. Retention counts contracts renewed within thirty days of their term.",
              "source": "Source: quarterly operating review, 2026."
            }
          }
        },
        {
          "name": "paragraph",
          "props": {
            "text": "The inherited running header carries the document title and this section’s page width. Page numbers are native Word fields."
          }
        },
        {
          "name": "block",
          "props": {
            "ref": "chart-figure",
            "slots": {
              "chart": {
                "name": "highcharts",
                "props": {
                  "width": "100%",
                  "options": {
                    "chart": {
                      "type": "column",
                      "width": 900,
                      "height": 460
                    },
                    "title": {
                      "text": null
                    },
                    "xAxis": {
                      "categories": ["Q1", "Q2", "Q3", "Q4"]
                    },
                    "yAxis": {
                      "min": 0,
                      "title": {
                        "text": "Revenue (€m)"
                      }
                    },
                    "legend": {
                      "enabled": false
                    },
                    "series": [
                      {
                        "name": "Revenue",
                        "data": [1.9, 2.4, 2.7, 3.1]
                      }
                    ],
                    "credits": {
                      "enabled": false
                    }
                  }
                }
              },
              "caption": "Revenue by quarter, 2026",
              "takeaway": "Each quarter outgrew the last as delivery stabilised; the fourth quarter alone matched the first half of 2025.",
              "source": "Source: quarterly operating review, 2026."
            }
          }
        },
        {
          "name": "block",
          "props": {
            "ref": "figure",
            "slots": {
              "image": {
                "name": "image",
                "props": {
                  "path": "media/client-report-blocks/delivery-model.png",
                  "width": "100%",
                  "alt": "Four delivery stages in sequence: intake, weekly ownership, delivery and renewal; ownership and delivery are shaded as the stages that changed"
                }
              },
              "caption": "The delivery model, with the two stages that changed this year",
              "source": "Source: operating handbook, 2026 edition."
            }
          }
        },
        {
          "name": "block",
          "props": {
            "ref": "footnotes"
          }
        }
      ]
    }
  ]
}
