Foundations
Same four tiers as color. Alias exists only on the family axis — sizes, leadings, trackings, and weights don't have a useful intent-swap and compose from primitive to semantic directly.
Raw type values. Theme-agnostic. One primitive from each category — family, size, weight, line-height, tracking — composed together makes a complete style. Sizes are in rem so browser text-size preferences flow through (WCAG 1.4.4); line-heights are unitless, tracking is em, weights are numbers.
Intent-based pass-through over the primitives. Same values, renamed for the role they play. Aliases are the only layer semantic tokens are allowed to reference.
Role-based text styles composed from the tier-1 primitives. These are what components consume — start here.
Display.Large
Display.Small
Heading.Page
Heading.Section
Heading.Subsection
Title.Large
Title
Title.Small
Body.Large
Large body copy.
Body
Body copy.
Body.Small
Small supporting copy.
Label.Large
Label.Small
Code
--type-code-default-sizeEyebrow
Eyebrow
Prose
Applies body.default to a subtree.
Mark
Mark
Component-specific type decisions that don’t belong at the semantic layer.