Typography

Two typefaces: Inter carries UI and body copy, DM Sans the headings, with the system monospace as the code fallback. The scale, weights, tracking and leading come straight from Tailwind v4.

Font families#

Two bundled typefaces, both variable fonts loaded via next/font. font-sans (Inter) is the workhorse for UI, body and the smallest headings (h5–h6); font-heading (DM Sans, with an optical-size axis) carries the headings h1–h4, so the display voice reaches the content-level titles too. font-mono falls back to the platform UI monospace - nothing to download. A heading that acts as a 14px UI label rather than a title opts back into Inter with a plain font-sans, which beats the bare element rule.

font-sansThe quick brown fox
font-headingThe quick brown fox
font-monoconst koala = true

Type scale#

Sizes are absolute (rem). Each ships a paired line-height that snaps the rendered leading onto the 4px / 0.25rem grid - the lead column.

text-xs

0.75rem · 12px

The quick brown fox

text-sm

0.875rem · 14px

The quick brown fox

text-base

1rem · 16px

The quick brown fox

text-lg

1.125rem · 18px

The quick brown fox

text-xl

1.25rem · 20px

The quick brown fox

text-2xl

1.5rem · 24px

The quick brown fox

text-3xl

1.875rem · 30px

The quick brown fox

text-4xl

2.25rem · 36px

The quick brown fox

text-5xl

3rem · 48px

The quick brown fox

These are raw sizes, not heading roles. A bare h1–h4 carries the DM Sans face (with the negative tracking on h1–h2 only) while h5–h6 stay in Inter (see Font families), but none carry an intrinsic size, so each context steps off this scale on its own. For the document scale the Rich Text Editor maps onto H1–H4 and body copy, see its Prose scale.

Weights#

Four stops off the variable weight axis, shared by both faces. We skip 100–300 (too fragile at text sizes) and everything above 700 (heavier than the brand needs).

font-normal

400

The quick brown fox

font-medium

500

The quick brown fox

font-semibold

600

The quick brown fox

font-bold

700

The quick brown fox

Tracking#

letter-spacing in em, so it scales with size. The px column is resolved at this 18px sample. Rule of thumb: tighten large display text (tracking-tight), leave body at normal, and only open up small all-caps labels.

tracking-tighter

-0.05em

The quick brown fox

tracking-tight

-0.025em

The quick brown fox

tracking-normal

0em

The quick brown fox

tracking-wide

0.025em

The quick brown fox

tracking-wider

0.05em

The quick brown fox

tracking-widest

0.1em

The quick brown fox

Leading#

Unitless line-height, multiplied by the font-size. The px column is resolved at this 16px sample. Most components inherit the type scale’s paired leading; reach for these only to override it.

leading-tight

1.25

Vertical rhythm is the heartbeat of a page. Leading sets how far each line falls from the next, and on a tuned scale it lands on the grid.

leading-snug

1.375

Vertical rhythm is the heartbeat of a page. Leading sets how far each line falls from the next, and on a tuned scale it lands on the grid.

leading-normal

1.5

Vertical rhythm is the heartbeat of a page. Leading sets how far each line falls from the next, and on a tuned scale it lands on the grid.

leading-relaxed

1.625

Vertical rhythm is the heartbeat of a page. Leading sets how far each line falls from the next, and on a tuned scale it lands on the grid.

leading-loose

2

Vertical rhythm is the heartbeat of a page. Leading sets how far each line falls from the next, and on a tuned scale it lands on the grid.