Layout tree (as in design/layout.json)
{
"pattern": "hero.type-outline-fill",
"kind": "hero",
"grid": {
"solid": "1-12",
"outline": "3-12",
"copy": "1-4",
"meta": "10-12"
},
"slots": [
"headline",
"tagline",
"subhead",
"cta",
"meta"
],
"notes": "Outline line: outline: true = -webkit-text-stroke 2px in the heading colour with a transparent fill (solid fallback where text-stroke is unsupported). With motion allowed, fill the outline left-to-right on load (clip-path), once; never under prefers-reduced-motion.",
"tree": {
"el": "grid",
"gap": 3,
"rowGap": 0,
"align": "end",
"minVh": 0.85,
"children": [
{
"el": "text",
"span": "1-12",
"slot": "headline",
"role": "display",
"step": 6,
"tracking": "tight",
"leading": "tight"
},
{
"el": "text",
"span": "3-12",
"slot": "tagline",
"role": "display",
"step": 6,
"tracking": "tight",
"leading": "tight",
"outline": true
},
{
"el": "box",
"span": "1-4",
"gap": 3,
"pad": [
5,
0
],
"children": [
{
"el": "text",
"slot": "subhead",
"role": "body",
"maxCh": 36
},
{
"el": "button",
"slot": "cta",
"variant": "primary",
"arrow": true
}
]
},
{
"el": "text",
"span": "10-12",
"color": "textMuted",
"alignSelf": "end",
"slot": "meta",
"role": "small",
"align": "right"
}
]
}
}