Foundations

Typography

One system sans for every visible surface. Tight tracking on display, generous tracking on caps eyebrows, and tabular numerics anywhere precision matters.

Stacks

Sans · UI
Aa Bb 0123
ui-sans-serif, system-ui,
-apple-system, "Segoe UI",
Roboto, "Helvetica Neue", Arial

Used for every visible text surface. Fast, native, no FOUT, renders predictably on every reviewer machine.

Tabular · Data
Aa 0123
font-variant-numeric: tabular-nums;
font-family: var(--font-sans);

Section refs, parcel IDs, coordinates, dates, and code blocks use the same sans family with tabular numerics.

Type scale

8 steps. Display sizes use tight tracking. Body sits at 14px (UI) and 15px (long-form). Mobile reduces display sizes via clamp.

6xl · 60
SkyCanvass forensics
Display
5xl · 48
SkyCanvass forensics
Hero h1
4xl · 36
SkyCanvass forensics
Page title
3xl · 30
SkyCanvass forensics
2xl · 24
SkyCanvass forensics
Section h2
xl · 20
SkyCanvass forensics
Card title h3
lg · 17
SkyCanvass forensics
Lede
md · 15
SkyCanvass forensics
Long-form body
base · 14
SkyCanvass forensics
UI body
sm · 13
SkyCanvass forensics
Labels, captions
xs · 12
SkyCanvass forensics
Eyebrow, helper text

Weights

Seven weights total. Most UI lives in 400-700 — 300 and 800-900 are reserved for editorial display, large hero numerals, and stat callouts. Skip 100/200 (too thin for our information density).

Aa
Light · 300
Editorial display only
Aa
Regular · 400
Body, defaults
Aa
Medium · 500
UI controls, labels
Aa
Semibold · 600
Titles, emphasis
Aa
Bold · 700
Display, page titles
Aa
Extrabold · 800
Stat callouts, big numerals
Aa
Black · 900
Hero display, marketing headlines

Tracking & numerics

Eyebrow tracking · 0.12em uppercase
Storm Event · Q3 2024
Tabular numerics
__BODY__nbsp;12,481.50
__BODY__nbsp; 3,902.00
__BODY__nbsp;   418.75

Usage

Do
Use tabular numerics for any number that could end up in evidence: measurements, coordinates, parcel IDs, dollar amounts, and dates.
Don't
Mix display sizes within a single hierarchy. Pick one h1 size per page; use h2 and h3 for descent.