Layout tree (as in design/layout.json)
{
"pattern": "hero.product-floating-specs",
"kind": "hero",
"grid": {
"features": "1-3",
"product": "4-9",
"numbers": "10-12",
"headline": "1-8",
"buy": "10-12"
},
"slots": [
"heroImage",
"facts[2..3]",
"stats[2..3]",
"headline",
"meta",
"cta"
],
"notes": "In the real build, each callout can draw a thin leader line to the part of the product it describes (SVG, hidden on phones). Callouts are text, not cards.",
"tree": {
"el": "grid",
"gap": 3,
"rowGap": 6,
"align": "center",
"minVh": 0.9,
"children": [
{
"el": "media",
"span": "4-9",
"rowSpan": "1-1",
"slot": "heroImage",
"aspect": "1/1",
"treatment": "product"
},
{
"el": "repeat",
"span": "1-3",
"rowSpan": "1-1",
"slot": "facts",
"min": 2,
"max": 3,
"layout": "list",
"gap": 6,
"of": {
"el": "box",
"gap": 1,
"pad": [
2,
0
],
"border": "top",
"children": [
{
"el": "text",
"color": "textMuted",
"slot": "label",
"role": "eyebrow"
},
{
"el": "text",
"slot": "title",
"role": "h4"
}
]
}
},
{
"el": "repeat",
"span": "10-12",
"rowSpan": "1-1",
"slot": "stats",
"min": 2,
"max": 3,
"layout": "list",
"gap": 6,
"of": {
"el": "box",
"gap": 1,
"pad": [
2,
0
],
"border": "top",
"children": [
{
"el": "text",
"slot": "number",
"role": "number",
"step": 3
},
{
"el": "text",
"color": "textMuted",
"slot": "label",
"role": "small"
}
]
}
},
{
"el": "text",
"span": "1-8",
"rowSpan": "2-2",
"slot": "headline",
"role": "display",
"step": 5,
"leading": "tight",
"maxCh": 20
},
{
"el": "box",
"span": "10-12",
"rowSpan": "2-2",
"alignSelf": "end",
"gap": 2,
"children": [
{
"el": "text",
"slot": "meta",
"role": "label"
},
{
"el": "button",
"slot": "cta",
"variant": "primary",
"arrow": true
}
]
}
]
}
}