Layout tree (as in design/layout.json)
{
"pattern": "cta.luxury-appointment",
"kind": "cta",
"grid": {
"panel": "4-9"
},
"slots": [
"eyebrow",
"headline",
"body",
"cta"
],
"bg": "surface",
"tree": {
"el": "grid",
"gap": 4,
"children": [
{
"el": "box",
"span": "3-10",
"gap": 4,
"align": "center",
"children": [
{
"el": "text",
"slot": "eyebrow",
"role": "label",
"align": "center",
"transform": "uppercase",
"tracking": "wide"
},
{
"el": "text",
"slot": "headline",
"role": "h2",
"step": 5,
"align": "center",
"weight": 400,
"italic": true,
"maxCh": 18
},
{
"el": "text",
"color": "textMuted",
"slot": "body",
"role": "lead",
"align": "center",
"maxCh": 40
},
{
"el": "button",
"slot": "cta",
"variant": "secondary",
"size": "sm"
}
]
}
]
}
}Component example: reference/cta.luxury-appointment.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>cta.luxury-appointment — Luxury Fashion</title>
<link rel="stylesheet" href="base.css">
<style>
.band { background: var(--surface); padding: calc(var(--unit) * 16) 0; }
.panel { grid-column: 4 / 10; display: grid; gap: calc(var(--unit) * 4); justify-items: center; text-align: center; }
.panel h2 { font-size: var(--step-4); font-style: italic; max-width: 22ch; }
.panel p.muted { max-width: 40ch; font-size: 13px; }
.btn { font: 500 11px/1 var(--font-body); letter-spacing: 0.2em; text-transform: uppercase; color: var(--heading); text-decoration: none;
padding: 16px 32px; border: 1px solid var(--heading); transition: background 700ms var(--ease), color 700ms var(--ease); }
.btn:hover { background: var(--accent); color: var(--on-accent); }
@media (max-width: 640px) { .panel h2 { font-size: var(--step-3); } }
</style>
</head>
<body>
<section class="band">
<div class="wrap grid">
<div class="panel">
<p class="caps">Rue Saint-Honoré, Paris</p>
<h2 class="didone">A private fitting, at your hour</h2>
<p class="muted">Our tailors receive by appointment, Tuesday to Saturday. Alterations are made in the atelier upstairs.</p>
<a class="btn" href="/appointments">Book an appointment</a>
</div>
</div>
</section>
</body>
</html>