Layout tree (as in design/layout.json)
{
"pattern": "hero.frosted-notification-stack",
"kind": "hero",
"grid": {
"text": "1-7",
"glow": "9-12",
"stack": "8-12"
},
"slots": [
"eyebrow",
"headline",
"subhead",
"cta",
"items[3..4]"
],
"notes": "The notification panels sit on top of the blob in the same cell; stagger them with a small horizontal offset in CSS if you like, but keep one column line.",
"tree": {
"el": "grid",
"gap": 4,
"align": "end",
"minVh": 0.82,
"children": [
{
"el": "box",
"span": "1-7",
"rowSpan": "1-1",
"alignSelf": "end",
"gap": 4,
"children": [
{
"el": "text",
"color": "textMuted",
"slot": "eyebrow",
"role": "eyebrow"
},
{
"el": "text",
"slot": "headline",
"role": "display",
"step": 6,
"weight": 600,
"tracking": "tight",
"leading": "tight",
"maxCh": 13
},
{
"el": "text",
"color": "textMuted",
"slot": "subhead",
"role": "lead",
"maxCh": 40
},
{
"el": "button",
"slot": "cta",
"variant": "primary",
"size": "lg",
"arrow": true
}
]
},
{
"el": "shape",
"span": "9-12",
"rowSpan": "1-1",
"mobile": "hide",
"alignSelf": "center",
"kind": "blob",
"size": "xl",
"fill": "accent2"
},
{
"el": "repeat",
"span": "8-12",
"rowSpan": "1-1",
"alignSelf": "center",
"slot": "items",
"min": 3,
"max": 4,
"layout": "list",
"gap": 2,
"of": {
"el": "box",
"mobile": "keep",
"bg": "surface",
"dir": "row",
"gap": 3,
"pad": [
2,
3
],
"align": "center",
"justify": "between",
"border": "all",
"children": [
{
"el": "shape",
"kind": "circle",
"size": "md",
"fill": "accent"
},
{
"el": "box",
"gap": 0,
"children": [
{
"el": "text",
"slot": "title",
"role": "label",
"weight": 600
},
{
"el": "text",
"color": "textMuted",
"slot": "body",
"role": "small"
}
]
},
{
"el": "text",
"color": "textMuted",
"slot": "meta",
"role": "small"
}
]
}
}
]
}
}