← All Foundations

Canon

Typography

Type that works. A modular scale based on φ (1.618) creates natural rhythm. Five weights for hierarchy. Fluid sizing for any screen.

Published January 8, 2026

Type Scale

Built on the golden ratio (φ = 1.618). Each step multiplies by φ for natural visual rhythm.

TokenSizeUse
--text-xs0.75remFine print, labels
--text-sm0.875remCaptions, metadata
--text-base1remBody text
--text-lg1.125remLead paragraphs
--text-xl1.25remSection intros
--text-2xl1.5remH4 headings
--text-3xl1.875remH3 headings
--text-4xl2.25remH2 headings
--text-5xl3remH1 headings
--text-display4remHero text

Font Weights

TokenWeightUse
--font-light300Display text
--font-normal400Body text
--font-medium500Emphasis
--font-semibold600Subheadings
--font-bold700Headings

Line Height

TokenValueUse
--leading-none1Single-line text
--leading-tight1.25Headings
--leading-normal1.5Body text
--leading-relaxed1.75Long-form reading

Letter Spacing

TokenValueUse
--tracking-tight-0.025emLarge headings
--tracking-normal0Body text
--tracking-wide0.025emButtons
--tracking-widest0.1emLabels, caps

Font Stack

--font-sans: 'ABC Diatype', 'Stack Sans Notch', system-ui, sans-serif;
--font-mono: 'ABC Diatype Mono', 'JetBrains Mono', monospace;
--font-serif: 'Martina Plantijn', Georgia, serif;

The Ona-derived clear communication layer uses ABC Diatype for interface and body text, ABC Diatype Mono for compact system labels, and Martina Plantijn only when an editorial serif voice is useful. CREATE SOMETHING keeps local fallbacks so surfaces remain stable if external font loading fails.

The type rule is operational comprehension first. Headlines name the workflow or offer plainly; supporting copy explains the object, action, policy, owner, receipt, or next step. Use mono for short state labels and identifiers, not long explanatory paragraphs.

Fluid Typography

Display text scales with viewport:

--text-display: clamp(2.5rem, 4vw + 1.5rem, 4.5rem);

Usage Example

.article-title {
  font-size: var(--text-4xl);
  font-weight: var(--font-bold);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
}

.article-body {
  font-size: var(--text-base);
  font-weight: var(--font-normal);
  line-height: var(--leading-relaxed);
}

.article-meta {
  font-size: var(--text-sm);
  color: var(--color-fg-muted);
  letter-spacing: var(--tracking-wide);
}