Layout tree (as in design/layout.json)
{
"pattern": "features.neo-grotesk-spec-sheet",
"kind": "features",
"grid": {
"label": "1-2",
"title": "7-12",
"rows": "7-12"
},
"slots": [
"sectionLabel",
"title",
"features[4..8]"
],
"tree": {
"el": "grid",
"gap": 3,
"rowGap": 4,
"align": "start",
"children": [
{
"el": "text",
"span": "1-2",
"slot": "sectionLabel",
"role": "eyebrow",
"step": -1,
"transform": "uppercase",
"tracking": "wide"
},
{
"el": "box",
"span": "7-12",
"gap": 4,
"children": [
{
"el": "text",
"slot": "title",
"role": "h3",
"step": 2,
"weight": 500,
"tracking": "tight"
},
{
"el": "repeat",
"slot": "features",
"min": 4,
"max": 8,
"layout": "list",
"gap": 0,
"divider": true,
"of": {
"el": "grid",
"mobile": "keep",
"cols": 6,
"gap": 2,
"pad": [
2,
0
],
"children": [
{
"el": "text",
"span": "1-2",
"slot": "title",
"role": "small",
"weight": 500
},
{
"el": "text",
"span": "3-6",
"color": "textMuted",
"slot": "body",
"role": "small"
}
]
}
}
]
}
]
}
}Component example: reference/features.neo-grotesk-spec-sheet.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>features.neo-grotesk-spec-sheet — Neo-grotesk Minimal</title>
<link rel="stylesheet" href="base.css">
<style>
section { padding: var(--section) 0; } section .grid { align-items: start; }
.label { grid-column: 1 / 3; }
.sheet { grid-column: 7 / 13; } .sheet h2 { font-size: var(--step-2); margin-bottom: 32px; }
.row { display: grid; grid-template-columns: 2fr 4fr; gap: 16px; padding: 16px 0; border-top: 1px solid var(--hairline); }
.row:last-child { border-bottom: 1px solid var(--hairline); }
.row dt { font-weight: 500; } .row dd { margin: 0; color: var(--muted); max-width: 46ch; }
</style>
</head>
<body>
<section class="wrap">
<div class="grid">
<p class="label">Specification</p>
<div class="sheet">
<h2>What a deploy includes</h2>
<dl class="small">
<div class="row"><dt>Build cache</dt><dd>Content-addressed, shared across branches. Cold builds under 40 seconds.</dd></div>
<div class="row"><dt>Rollbacks</dt><dd>Every deploy is immutable. Roll back to any of the last 500 in one command.</dd></div>
<div class="row"><dt>Logs</dt><dd>Structured, searchable for 30 days, streamed to your own bucket if you prefer.</dd></div>
<div class="row"><dt>Regions</dt><dd>Oslo, Frankfurt, Virginia and Singapore. Pin a project to one or run in all four.</dd></div>
</dl>
</div>
</div>
</section>
</body>
</html>