Skip to content
HeyOz
Foundations88 tokens

Typography

Four roles in five sizes each, body with two more, four weights. Bricolage for display and headings, Geist for everything else.

Source
tokens/typography.json
Figma
Text styles + collection Typography
In code
class type-body-md-regular

Families

Two families. The opsz axis lets Bricolage adjust its letterforms to the size it is set at.

Aa
Bricolage GrotesqueDisplay & heading
Aa
GeistBody & label

Roles

4 roles, xs to xl each; body adds 2xl and 3xl for lead text and large buttons. 22 sizes × 4 weights = 88 styles. Class: type-{role}-{size}-{weight}.

Role
Family
Sizes
Use for
display
Bricolage Grotesque
32 · 40 · 48 · 56 · 64 px
Hero titles and big moments
heading
Bricolage Grotesque
16 · 18 · 20 · 24 · 28 px
Titles of sections, cards and menus
body
Geist
11 · 12 · 14 · 16 · 18 · 20 · 24 px
Running text, prompts, descriptions
label
Geist
10 · 11 · 12 · 14 · 16 px
Buttons, chips, tags, small UI text

Display

Bricolage Grotesque. Shown in medium; every size has all four weights.

display/xs32 / 36 · -0.02em
Ads that stop the scroll
display/sm40 / 44 · -0.02em
Ads that stop the scroll
display/md48 / 52 · -0.03em
Ads that stop the scroll
display/lg56 / 60 · -0.03em
Ads that stop the scroll
display/xl64 / 68 · -0.03em
Ads that stop the scroll

Heading

Bricolage Grotesque. Shown in medium; every size has all four weights.

heading/xs16 / 20 · 0em
Brand DNA
heading/sm18 / 24 · 0em
Brand DNA
heading/md20 / 28 · -0.01em
Brand DNA
heading/lg24 / 32 · -0.01em
Brand DNA
heading/xl28 / 36 · -0.01em
Brand DNA

Body

Geist. Shown in medium; every size has all four weights.

body/xs11 / 16 · 0.01em
Describe your ad and pick a model.
body/sm12 / 16 · 0.01em
Describe your ad and pick a model.
body/md14 / 20 · 0em
Describe your ad and pick a model.
body/lg16 / 24 · 0em
Describe your ad and pick a model.
body/xl18 / 28 · 0em
Describe your ad and pick a model.
body/2xl20 / 28 · -0.01em
Describe your ad and pick a model.
body/3xl24 / 32 · -0.01em
Describe your ad and pick a model.

Label

Geist. Shown in medium; every size has all four weights.

label/xs10 / 12 · 0.01em
Generate
label/sm11 / 14 · 0.01em
Generate
label/md12 / 16 · 0.01em
Generate
label/lg14 / 18 · 0em
Generate
label/xl16 / 20 · 0em
Generate

Weights

Four weights, same for every role.

Aaregular400
Aamedium500
Aasemibold600
Aabold700

Tracking

Letter spacing follows size: small text opens up, large text tightens.

Size
Tracking
up to 12px
0.01em
up to 18px
0em
up to 28px
-0.01em
up to 40px
-0.02em
larger
-0.03em