Type scale · read from the tokens

Ten steps, one decision each.

Every size on this site comes from this scale, and this table is generated from the same file the stylesheets consume — so it cannot describe a scale the site does not use. Change a theme in the Studio and every row here re-renders with it.

The ten steps of the type scale, with the token name, the job each step does, the family it is set in, the authored value, and a live specimen.
TokenUseFamilyValueSpecimen
font.size.labelMono kickers, ordinals, chipsfont.family.utility0.7remAg
font.size.captionFigure captions, fine printfont.family.utility0.8remAg
font.size.smallSecondary and metadata copyfont.family.body0.9remAg
font.size.bodyReading copy, every card summaryfont.family.body1remAg
font.size.leadSection ledes, emphasised bodyfont.family.bodyclamp(1.05rem, 0.96rem + 0.38vw, 1.25rem)Ag
font.size.subheadStandfirsts, small headingsfont.family.bodyclamp(1.25rem, 1.06rem + 0.78vw, 1.65rem)Ag
font.size.titleCard titles, h3font.family.displayclamp(1.6rem, 1.21rem + 1.64vw, 2.5rem)Ag
font.size.headingh2 in a card or asidefont.family.displayclamp(2.25rem, 1.6rem + 2.73vw, 3.75rem)Ag
font.size.displaySection headingsfont.family.displayclamp(2.75rem, 1.56rem + 4.98vw, 5.5rem)Ag
font.size.heroThe page thesis, h1font.family.displayclamp(3.25rem, 1.19rem + 8.64vw, 8rem)Ag

Responsive method · enforced at build time

Four widths, and a build that rejects the fifth.

Every layout here is authored at the narrowest width first. Wider screens add — a second column, a sticky rail, a portrait that becomes a plate — and nothing below undoes anything above. That is a claim you can check rather than take on faith: a check runs on every build and fails it if a stylesheet branches on a width that is not one of these four, or branches downward with max-width.

The four breakpoints, with the token name, the authored value, and the layout decision each one carries.
TokenValueDecision
breakpoint.sm36rem 576pxLarge phone. Where a two-part caption stops needing its own line.
breakpoint.md48rem 768pxTablet. Where stacked content earns a second column.
breakpoint.lg60rem 960pxSmall laptop. Where a case study can hold an asymmetric two-column spread.
breakpoint.xl72rem 1152pxDesktop. Where a third column or a sticky rail becomes affordable.

Where the scale deliberately stops

Four numbers cannot describe a component that changes width without the window changing at all. The same figure on a case study is 880px wide on one page and 420px on another at identical viewports; a card in the system grid goes one, two, then four across, so its own width changes fourfold. Those components ask container queries instead, and size themselves from the space they were given rather than from the window. That is the part a breakpoint ladder cannot express, and it is why the scale above is small on purpose.