Typography
Two typefaces, two jobs. Never mixed within a single semantic role.
Typefaces
Section titled “Typefaces”Space Grotesk · UI typeface
Space Mono · system typeface
| Token | Family | Role |
|---|---|---|
--font-ui (Space Grotesk) | 'Space Grotesk', system-ui, sans-serif | All UI and body text — headings, labels, card text, button labels |
--font-system (Space Mono) | 'Space Mono', monospace | Metadata, code, token labels, timestamps, keyboard hints, Saltie’s voice |
Saltie’s Voice
Section titled “Saltie’s Voice”- Always Space Mono, italic, cyan family
- Opacity ladder: direct lines at full opacity, reflective observations at lower opacity
- Reinforces register distinction without changing typeface
Type Scale
Section titled “Type Scale”Type scale · rendered at actual size
| Token | Value | Use |
|---|---|---|
--font-size-xs | .85rem | Minimum floor — section tags, token labels, timestamps |
--font-size-sm | .95rem | Captions, hints, metadata |
--font-size-base | 1.02rem | Secondary body — UI labels, card body |
--font-size-md | 1.1rem | Primary body text |
--font-size-lg | 1.3rem | Subsection headings, card titles |
--font-size-xl | 1.8rem | Section headings |
--font-size-2xl | 2.5rem | Display headings |
--font-size-3xl | 4rem | Hero / ceremonial display |
Sizes are desktop-optimised — slightly larger than typical web conventions.
Font Weights
Section titled “Font Weights”| Token | Value |
|---|---|
--font-weight-light | 300 |
--font-weight-regular | 400 |
--font-weight-medium | 500 |
--font-weight-bold | 700 |
Line Heights
Section titled “Line Heights”| Token | Value |
|---|---|
--line-height-tight | 1.25 |
--line-height-normal | 1.5 |
--line-height-relaxed | 1.75 |
Bundling
Section titled “Bundling”Fonts must be bundled locally in the Tauri app via @font-face with src: url("/assets/fonts/...") pointing to .woff2 files. No CDN loading.
Constraints
Section titled “Constraints”- Maximum line length:
max-width: 65ch - No justified text (ragged right only)
- Nothing readable below
--font-size-xs - A heading is always Space Grotesk. A token label is always Space Mono. No exceptions.