Crystal
Foundations

Typography

Crystal's font stack and typographic conventions.

Crystal's typography system uses a minimal, functional font stack optimized for readability across all themes.

Font Stack

RoleFontUsage
SansInterBody text, headings, UI elements
MonoJetBrains MonoCode blocks, technical data
DisplaySyneLanding page hero accents only

Source of truth: The @artasce/crystal-tokens package defines --crystal-font-family-sans (Inter) and --crystal-font-family-mono (JetBrains Mono) as the canonical font tokens.

CSS Custom Properties

body {
  font-family: var(--font-inter), ui-sans-serif, system-ui, sans-serif;
}

code, pre {
  font-family: var(--font-jetbrains), ui-monospace, monospace;
}

Type Scale

Crystal uses a standard type scale aligned with Tailwind's defaults:

ClassSizeLine HeightUse
text-xs0.75rem (12px)1remLabels, badges
text-sm0.875rem (14px)1.25remSecondary text, captions
text-base1rem (16px)1.5remBody text
text-lg1.125rem (18px)1.75remLead paragraphs
text-xl1.25rem (20px)1.75remSmall headings
text-2xl1.5rem (24px)2remSection headings
text-3xl1.875rem (30px)2.25remPage headings
text-4xl2.25rem (36px)2.5remHero sub-headings
text-5xl3rem (48px)1Hero headings

Best Practices

  • Use Inter for all UI text. It has excellent legibility at small sizes and a large weight range.
  • Reserve Syne for high-impact display text on landing pages only. Do not use it for body copy or documentation.
  • Use JetBrains Mono for all code samples, terminal output, and technical identifiers (token names, class names).
  • Pair heading weights with body weights: bold headings (600-700) with regular body text (400).