Documentation

Typography

A structured type system designed for clarity and AI-assisted development.

How It Works

Typography uses Tailwind's built-in utilities. We define three usage contexts: Title (headings, heroes), Body (paragraphs, content), and UI (buttons, labels, navigation).

Same font family (Inter) → different sizes/weights per context → AI uses standard Tailwind classes.

Font Contexts

Three usage patterns with distinct styling conventions.

Title

Sample Text

Weight:
Semibold (600)
Sizes:
text-lg → text-6xl
Tracking:
tracking-tight (large) / normal (small)

Page headings, hero text, section titles

Body

Sample Text

Weight:
Regular (400)
Sizes:
text-sm, text-base
Tracking:
normal

Paragraphs, descriptions, long-form content

UI

Sample Text

Weight:
Medium (500)
Sizes:
text-xs, text-sm
Tracking:
normal / tracking-wide (all caps)

Buttons, labels, nav items, form elements

Font Family

One primary font (Inter) with a mono variant for code.

Sans (Inter)

The quick brown fox jumps over the lazy dog

font-sans

Default for all text. Used for titles, body, and UI.

Mono (Geist Mono)

const value = 42;

font-mono

Code blocks, inline code, technical content.

Titles

Heading hierarchy from hero sections to small labels.

text-6xl
60px / 3.75rem
Title 1
text-5xl
48px / 3rem
Title 2
text-4xl
36px / 2.25rem
Title 3
text-3xl
30px / 1.875rem
Title 4
text-2xl
24px / 1.5rem
Title 5
text-xl
20px / 1.25rem
Title 6

All titles use font-semibold (600). Large titles (3xl+) add tracking-tight for visual density.

Text Sizes

Body text and paragraph sizes for content.

text-2xl
24px
Text @ 2xl — Large callouts and intros
text-xl
20px
Text @ xl — Subheadings and emphasis
text-lg
18px
Text @ lg — Lead paragraphs
text-base
16px
Text @ base — Default body text
text-sm
14px
Text @ sm — Secondary content, descriptions
text-xs
12px
Text @ xs — Captions, labels, metadata

Text sizes follow Tailwind defaults. Most body copy uses text-sm or text-base.

Font Weights

Weight scale from thin to black. Common weights highlighted.

Regularfont-normal
Body
Mediumfont-medium
UI
Semiboldfont-semibold
Title
Boldfont-bold

We use three weights: Regular for body text, Medium for UI elements, Semibold for titles. Bold is available but rarely needed.

Line Height

Leading options for different content types.

leading-none1Single-line titles

The quick brown fox jumps.

leading-tight1.25Headlines, cards

The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

leading-snug1.375UI text, short copy

The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

leading-normal1.5Body text (default)

The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

leading-relaxed1.625Long-form content

The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

leading-loose2Extra readable, accessibility

The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

Letter Spacing

Tracking options for visual refinement.

tracking-tighter(-0.05em)
Tighter tracking
tracking-tight(-0.025em)
Tight tracking (large titles)
tracking-normal(0)
Normal tracking (default)
tracking-wide(0.025em)
Wide tracking (buttons, labels)
tracking-wider(0.05em)
Wider tracking
tracking-widest(0.1em)
Widest tracking (all caps)

Text Colors

Semantic text colors from the color system.

Sample text
text-foregroundPrimary text, headings
Sample text
text-muted-foregroundSecondary text, descriptions
Sample text
text-primaryLinks, emphasis
Sample text
text-destructiveError messages
Sample text
text-success-700Success messages
Sample text
text-warning-700Warning messages

Prose Defaults

Standard text treatments for rich content.

Normal paragraph text with default styling.

Strong text uses font-semibold (600).

Emphasis text uses italic styling.

Hyperlinks use the primary color with underline on hover.

Blockquotes are indented with a left border.

Inline code uses mono font with a muted background.

Conventions

Common Patterns

  • Page titles: text-3xl font-semibold tracking-tight
  • Section headings: text-xl font-medium
  • Card titles: font-medium
  • Body text: text-sm or text-base
  • Muted text: text-muted-foreground

AI-Friendly Naming

We use Tailwind's standard utility classes. AI models trained on Tailwind will naturally use correct class names.

  • text-sm — not "small-text"
  • font-semibold — not "bold" or "600"
  • tracking-tight — not "letter-spacing"
  • leading-relaxed — not "line-height"

Implementation

Variations

Common typography patterns for UI components.

Label

Form labels, navigation

text-sm font-medium
Caption

Metadata, timestamps

text-xs text-muted-foreground
Overline

Category tags, sections

text-xs font-medium uppercase tracking-wide text-muted-foreground