Skip to main content

Typography

How text is set: roles, sizes and line height.

display32px · 1.8 · 700Your plan
title24px · 1.2 · 600Your plan
heading20px · 1.2 · 600Standard plan
body16px · 1.5 · 400A customer signs up for a plan on the Birch site, then manages it in the shared account area.
label14px · 1.2 · 600Get started
caption13px · 1.5 · 400A customer signs up for a plan on the Birch site, then manages it in the shared account area.
data16px · 1.5 · 400Plan Standard · Next payment 12.00 · Orders this year 9 · Member since 2024

The five answers​

QuestionAnswerWhy
Which text roles does it need?Core: heading, body, labelOne set of roles across brands.
How many steps does the type scale take?One step per kind of textOne size per kind of text suits every brand font.
How are sizes and line heights defined?A ratio, line heights in proportionRatios work with every brand font.
How large is body text?RegularRegular body size suits all brands.
Where does type do the most work?Forms and labelsSign-up and account forms carry most text.

Tokens​

Each token points to another token. Values live only on primitives, below.

Aster

TokenPoints to
type.display.font-familyaster.theme.base.type.display.font-family → font.family.inter
type.display.font-sizefont.size.32
type.display.line-heightfont.line-height.1_8
type.display.font-weightfont.weight.700
type.title.font-familyaster.theme.base.type.title.font-family → font.family.inter
type.title.font-sizefont.size.24
type.title.line-heightfont.line-height.1_2
type.title.font-weightfont.weight.600
type.heading.font-familyaster.theme.base.type.heading.font-family → font.family.inter
type.heading.font-sizefont.size.20
type.heading.line-heightfont.line-height.1_2
type.heading.font-weightfont.weight.600
type.body.font-familyaster.theme.base.type.body.font-family → font.family.inter
type.body.font-sizefont.size.16
type.body.line-heightfont.line-height.1_5
type.body.font-weightfont.weight.400
type.label.font-familyaster.theme.base.type.label.font-family → font.family.inter
type.label.font-sizefont.size.14
type.label.line-heightfont.line-height.1_2
type.label.font-weightfont.weight.600
type.caption.font-familyaster.theme.base.type.caption.font-family → font.family.inter
type.caption.font-sizefont.size.13
type.caption.line-heightfont.line-height.1_5
type.caption.font-weightfont.weight.400
type.data.font-familyaster.theme.base.type.data.font-family → font.family.inter
type.data.font-sizefont.size.16
type.data.line-heightfont.line-height.1_5
type.data.font-weightfont.weight.400

Birch

TokenPoints to
type.display.font-familybirch.theme.base.type.display.font-family → font.family.plus-jakarta-sans
type.display.font-sizefont.size.32
type.display.line-heightfont.line-height.1_8
type.display.font-weightfont.weight.700
type.title.font-familybirch.theme.base.type.title.font-family → font.family.plus-jakarta-sans
type.title.font-sizefont.size.24
type.title.line-heightfont.line-height.1_2
type.title.font-weightfont.weight.600
type.heading.font-familybirch.theme.base.type.heading.font-family → font.family.plus-jakarta-sans
type.heading.font-sizefont.size.20
type.heading.line-heightfont.line-height.1_2
type.heading.font-weightfont.weight.600
type.body.font-familybirch.theme.base.type.body.font-family → font.family.plus-jakarta-sans
type.body.font-sizefont.size.16
type.body.line-heightfont.line-height.1_5
type.body.font-weightfont.weight.400
type.label.font-familybirch.theme.base.type.label.font-family → font.family.plus-jakarta-sans
type.label.font-sizefont.size.14
type.label.line-heightfont.line-height.1_2
type.label.font-weightfont.weight.600
type.caption.font-familybirch.theme.base.type.caption.font-family → font.family.plus-jakarta-sans
type.caption.font-sizefont.size.13
type.caption.line-heightfont.line-height.1_5
type.caption.font-weightfont.weight.400
type.data.font-familybirch.theme.base.type.data.font-family → font.family.plus-jakarta-sans
type.data.font-sizefont.size.16
type.data.line-heightfont.line-height.1_5
type.data.font-weightfont.weight.400

Coral

TokenPoints to
type.display.font-familycoral.theme.base.type.display.font-family → font.family.poppins
type.display.font-sizefont.size.32
type.display.line-heightfont.line-height.1_8
type.display.font-weightfont.weight.700
type.title.font-familycoral.theme.base.type.title.font-family → font.family.poppins
type.title.font-sizefont.size.24
type.title.line-heightfont.line-height.1_2
type.title.font-weightfont.weight.600
type.heading.font-familycoral.theme.base.type.heading.font-family → font.family.poppins
type.heading.font-sizefont.size.20
type.heading.line-heightfont.line-height.1_2
type.heading.font-weightfont.weight.600
type.body.font-familycoral.theme.base.type.body.font-family → font.family.poppins
type.body.font-sizefont.size.16
type.body.line-heightfont.line-height.1_5
type.body.font-weightfont.weight.400
type.label.font-familycoral.theme.base.type.label.font-family → font.family.poppins
type.label.font-sizefont.size.14
type.label.line-heightfont.line-height.1_2
type.label.font-weightfont.weight.600
type.caption.font-familycoral.theme.base.type.caption.font-family → font.family.poppins
type.caption.font-sizefont.size.13
type.caption.line-heightfont.line-height.1_5
type.caption.font-weightfont.weight.400
type.data.font-familycoral.theme.base.type.data.font-family → font.family.poppins
type.data.font-sizefont.size.16
type.data.line-heightfont.line-height.1_5
type.data.font-weightfont.weight.400

The raw values these tokens end at are on Primitives › Type.

When to use what​

SituationUseNotWhy
Page titletype.title in the brand fontA brand-specific styleRoles stay shared; only the brand font changes.
A number in a tabletype.bodyA mono fontPrices sit in sentences and offers, not in columns to compare, so a mono font adds nothing in any brand.
Paragraph or help texttype.bodytype.captionRegular body size suits every brand.
Field label or column headertype.labeltype.captionLabels stay readable in every brand.