Layout tree (as in design/layout.json)
{
"pattern": "hero.product-bento",
"kind": "hero",
"grid": {
"headline": "1-7",
"product": "8-12",
"stats": "1-4",
"cta": "5-7"
},
"slots": [
"eyebrow",
"headline",
"subhead",
"heroImage",
"stats[2..2]",
"meta",
"cta"
],
"notes": "Tiles use the style's radius and surface colours; gaps between tiles are one space step 2. Tiles are not equal: sizes differ by role.",
"tree": {
"el": "grid",
"gap": 2,
"rowGap": 2,
"minVh": 0.9,
"children": [
{
"el": "box",
"span": "1-7",
"rowSpan": "1-2",
"bg": "surface",
"gap": 4,
"pad": [
6,
5
],
"justify": "between",
"children": [
{
"el": "text",
"slot": "eyebrow",
"role": "eyebrow"
},
{
"el": "text",
"slot": "headline",
"role": "h1",
"step": 6,
"leading": "tight",
"maxCh": 14
},
{
"el": "text",
"slot": "subhead",
"role": "body",
"maxCh": 40
}
]
},
{
"el": "media",
"span": "8-12",
"rowSpan": "1-3",
"bg": "surface",
"slot": "heroImage",
"treatment": "product",
"fill": true
},
{
"el": "repeat",
"span": "1-4",
"rowSpan": "3-3",
"slot": "stats",
"min": 2,
"max": 2,
"layout": "grid",
"cols": 2,
"gap": 2,
"of": {
"el": "box",
"bg": "surfaceAlt",
"gap": 1,
"pad": [
4,
4
],
"children": [
{
"el": "text",
"color": "text",
"slot": "number",
"role": "number",
"step": 4
},
{
"el": "text",
"color": "text",
"slot": "label",
"role": "small"
}
]
}
},
{
"el": "box",
"span": "5-7",
"rowSpan": "3-3",
"bg": "accent",
"gap": 3,
"pad": [
4,
4
],
"justify": "between",
"children": [
{
"el": "text",
"color": "onAccent",
"slot": "meta",
"role": "small"
},
{
"el": "button",
"slot": "cta",
"variant": "secondary",
"arrow": true
}
]
}
]
}
}