Skip to content

Typography

Grundtone's type system uses IBM Plex Sans for body and headings and IBM Plex Mono for code. All values are exposed as CSS custom properties. Override any token via SCSS @use ... with ().


Font Families

TokenStack
--font-family-baseIBM Plex Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif
--font-family-headingIBM Plex Sans, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif
--font-family-monoIBM Plex Mono, Courier New, monospace

Font Size Scale

9 steps from xs (0.75rem / 12px) to 5xl (3rem / 48px).

Tokenrempx
--font-size-xs0.7512
--font-size-sm0.87514
--font-size-base116
--font-size-lg1.12518
--font-size-xl1.2520
--font-size-2xl1.524
--font-size-3xl1.87530
--font-size-4xl2.2536
--font-size-5xl348

Font Weight Scale

7 steps from thin (100) to extrabold (800).

TokenValue
--font-weight-thin100
--font-weight-light300
--font-weight-normal400
--font-weight-medium500
--font-weight-semibold600
--font-weight-bold700
--font-weight-extrabold800

Line Height

TokenValue
--line-height-none1
--line-height-tight1.25
--line-height-snug1.375
--line-height-normal1.5
--line-height-relaxed1.625
--line-height-loose2

Letter Spacing

TokenValue
tighter−0.05em
tight−0.025em
normal0
wide0.025em
wider0.05em
widest0.1em

Heading Element Defaults

All <h1><h6> elements receive default sizing, weight, and line height from the elements layer. Sizes are responsive and scale up at the md and lg breakpoints.

ElementBase sizeWeightLine height
h12.25rembold1.2
h21.875remsemibold1.2
h31.5remsemibold1.25
h41.25remsemibold1.3
h51.125remmedium1.4
h61remmedium1.5

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Line Length

To ensure optimal readability, a maximum width is set for the line length of body and lead text. Use .max-w-prose (65ch) to limit the line width.

html
<div class="max-w-prose">
  <p class="lead">Lead text with optimal line length.</p>
  <p class="body-text">Body text that does not stretch too far.</p>
</div>

Line Spacing

Line spacing is based on the text types' line heights. See Line Height for the available leading-* utility classes.

Text typeLine height
Body textnormal (1.5)
Leadnormal (1.5)
Headingtight (1.25)
Display texttight (1.25)

SCSS Customization

Override any typography token via @use ... with ():

scss
@use '@grundtone/design-tokens/scss/lib' as gt with (
  $font-family-base: 'Inter', sans-serif,
  $font-family-heading: 'Inter', sans-serif,
);

All CSS custom properties will automatically reflect your overrides.