Layout tree (as in design/layout.json)
{
"pattern": "testimonial.neobrutal-speech-wall",
"kind": "testimonial",
"grid": {
"header": "1-12",
"wall": "1-12"
},
"slots": [
"title",
"items[3..6]"
],
"notes": "Masonry keeps the boxes at natural height so the wall looks pinned up, not a row of equal cards.",
"tree": {
"el": "box",
"gap": 6,
"children": [
{
"el": "box",
"mobile": "keep",
"dir": "row",
"align": "center",
"justify": "between",
"wrap": true,
"children": [
{
"el": "text",
"slot": "title",
"role": "h2",
"step": 4,
"maxCh": 20
},
{
"el": "shape",
"mobile": "hide",
"kind": "star",
"size": "md",
"fill": "accent",
"rotate": 15
}
]
},
{
"el": "repeat",
"slot": "items",
"min": 3,
"max": 6,
"layout": "masonry",
"cols": 3,
"gap": 4,
"of": {
"el": "box",
"bg": "surface",
"gap": 3,
"pad": [
4,
4
],
"border": "all",
"children": [
{
"el": "text",
"slot": "body",
"role": "quote",
"step": 1,
"weight": 400
},
{
"el": "box",
"mobile": "keep",
"dir": "row",
"gap": 2,
"align": "center",
"children": [
{
"el": "shape",
"kind": "circle",
"size": "sm",
"fill": "accent2"
},
{
"el": "box",
"gap": 0,
"children": [
{
"el": "text",
"slot": "title",
"role": "label",
"weight": 700
},
{
"el": "text",
"slot": "meta",
"role": "small"
}
]
}
]
}
]
}
}
]
}
}