Step 3 of 7

Type

One sans family for titles and reading, plus mono for code. Sizes come from one ladder, and line-height is set per role rather than globally.

Families

Noto Sans

Display and titles. Tracking tightens slightly at large sizes.

--cds-font-display

Noto Sans

Body copy, UI labels, tables, forms, and meta.

--cds-font-body

JetBrains Mono

Code only. Never marketing body copy.

--cds-font-mono

Display ladder

Hero display

4xl · 56px · leading-display

Page title

3xl · 48px · leading-display

Section heading

2xl · 36px · leading-display

Accent subhead

xl · 28px · leading-snug · primary

Reading

A short lead runs at 22px with callout leading. It sets up the section without competing with the heading above it.

Body copy runs at 18px with 1.6 leading and is capped at 62 characters per line, because the measure is set in ch rather than pixels. That means the reading width tracks the font size instead of drifting when someone bumps the type scale. Emphasis uses semibold before it reaches for bold.

Muted 16px text handles captions, table cells, and helper copy. It is the floor: nothing readable goes smaller.

.cds-prose · measure 62ch · content-box

Size roles

Token Size Role
sm16pxCompact UI, labels, table cells
md18pxDefault body and long-form
lg22pxShort lead
xl28pxSmall display, card titles
2xl36pxMedium display
3xl48pxLarge display, page titles
4xl56pxHero display

sm is the demo floor. If your product genuinely needs denser chrome, lower the floor in tokens.css once rather than sprinkling one-off sizes through components.

Line-height and weight

Leading token Value Use
display1.12xl to 4xl titles
snug1.15xl and short titles
body1.6md and lg reading
callout1.5Alerts, contained copy
ui1.35Compact sm chrome
Weight Value Use
regular400Body copy
semibold700Labels, buttons, subheads (maps to bold in the demo)
bold700Display titles, meta

The demo uses 400 and 700 because Lato has no 600 cut on Google Fonts. Prefer the emphasis weight for UI chrome, and do not introduce 500 or 800 without adding a token for it.