Skip to content

Typography

Two typefaces, two jobs. Never mixed within a single semantic role.

Space Grotesk · UI typeface

Space Mono · system typeface

TokenFamilyRole
--font-ui (Space Grotesk)'Space Grotesk', system-ui, sans-serifAll UI and body text — headings, labels, card text, button labels
--font-system (Space Mono)'Space Mono', monospaceMetadata, code, token labels, timestamps, keyboard hints, 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 · rendered at actual size

TokenValueUse
--font-size-xs.85remMinimum floor — section tags, token labels, timestamps
--font-size-sm.95remCaptions, hints, metadata
--font-size-base1.02remSecondary body — UI labels, card body
--font-size-md1.1remPrimary body text
--font-size-lg1.3remSubsection headings, card titles
--font-size-xl1.8remSection headings
--font-size-2xl2.5remDisplay headings
--font-size-3xl4remHero / ceremonial display

Sizes are desktop-optimised — slightly larger than typical web conventions.

TokenValue
--font-weight-light300
--font-weight-regular400
--font-weight-medium500
--font-weight-bold700
TokenValue
--line-height-tight1.25
--line-height-normal1.5
--line-height-relaxed1.75

Fonts must be bundled locally in the Tauri app via @font-face with src: url("/assets/fonts/...") pointing to .woff2 files. No CDN loading.

  • 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.