Skip to content

Tokens are CSS custom properties shipped in tenet-ui/styles.css. Theme-agnostic tokens live on :root; themed tokens (fgColor, bgColor, borderColor and shadow-focus) switch on [data-color-mode="light" | "dark"]. The Tier column says what each token is for: base is a raw value, semantic is a decision with a meaning, component belongs to one family of components. App code uses semantic and component tokens only. Design tokens explains the tiers, the naming and the source format.

104 tokens · 15 groups · tenet-ui@0.5.0

Type faces. The serif display face is the editorial signature; body and mono cover everything else.

TokenTierCSS variableValueDescription
fontFamily-displaysemanticvar(--fontFamily-display)'Iowan Old Style', 'Palatino Linotype', Palatino, 'Book Antiqua', Georgia, 'Times New Roman', serifSerif display face for headings: the editorial signature.
fontFamily-bodysemanticvar(--fontFamily-body)-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serifHumanist sans for body and controls.
fontFamily-monosemanticvar(--fontFamily-mono)ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospaceMonospace for counts / code.

The spacing scale. Every gap, padding and margin in the system is one of these steps.

TokenTierCSS variableValueDescription
space-1semanticvar(--space-1)4px4px
space-2semanticvar(--space-2)8px8px
space-3semanticvar(--space-3)12px12px
space-4semanticvar(--space-4)16px16px
space-5semanticvar(--space-5)24px24px
space-6semanticvar(--space-6)32px32px

Border widths.

TokenTierCSS variableValueDescription
borderWidth-thinsemanticvar(--borderWidth-thin)1pxDefault hairline border.
borderWidth-thicksemanticvar(--borderWidth-thick)2pxEmphasized border.

Corner radii.

TokenTierCSS variableValueDescription
borderRadius-smallsemanticvar(--borderRadius-small)3pxCrisp: tags, options.
borderRadius-mediumsemanticvar(--borderRadius-medium)5pxControls, cards.
borderRadius-largesemanticvar(--borderRadius-large)9pxSurfaces, popovers.
borderRadius-fullsemanticvar(--borderRadius-full)9999pxNone

The type scale.

TokenTierCSS variableValueDescription
fontSize-0semanticvar(--fontSize-0)12pxNone
fontSize-1semanticvar(--fontSize-1)14pxNone
fontSize-2semanticvar(--fontSize-2)16pxNone
fontSize-3semanticvar(--fontSize-3)20pxNone
fontSize-4semanticvar(--fontSize-4)28pxNone
fontSize-5semanticvar(--fontSize-5)36pxDisplay size: page titles (Heading level 1).

Line heights.

TokenTierCSS variableValueDescription
lineHeight-tightsemanticvar(--lineHeight-tight)1.2Headings and single-line controls.
lineHeight-defaultsemanticvar(--lineHeight-default)1.5Body copy.

Font weights.

TokenTierCSS variableValueDescription
fontWeight-normalsemanticvar(--fontWeight-normal)400None
fontWeight-mediumsemanticvar(--fontWeight-medium)500None
fontWeight-semiboldsemanticvar(--fontWeight-semibold)600None
fontWeight-boldsemanticvar(--fontWeight-bold)700None

Letter spacing (tracking).

TokenTierCSS variableValueDescription
letterSpacing-tagcomponentvar(--letterSpacing-tag)0.48pxSlight tracking for the uppercase tag look: 0.04em at --fontSize-0 (12px), stored in px because DTCG 2025.10 dimensions allow only px and rem.

Control heights for small / medium / large interactive elements.

TokenTierCSS variableValueDescription
control-small-sizecomponentvar(--control-small-size)28pxSmall control height.
control-medium-sizecomponentvar(--control-medium-size)32pxMedium control height.
control-large-sizecomponentvar(--control-large-size)40pxLarge control height.

Elevation shadows, plus the focus halo for fields. shadow-focus is themed because its colour is bgColor-accent-muted in each theme.

TokenTierCSS variableLightDarkDescription
shadow-restingsemanticvar(--shadow-resting)0 1px 2px rgba(31, 27, 22, 0.06)0 1px 2px rgba(31, 27, 22, 0.06)Resting elevation (warm).
shadow-mediumsemanticvar(--shadow-medium)0 6px 16px rgba(31, 27, 22, 0.12)0 6px 16px rgba(31, 27, 22, 0.12)Raised elevation (cards, menus, popovers).
shadow-focussemanticvar(--shadow-focus)0 0 0 3px #f5e4db0 0 0 3px #3a2117Focus ring halo for fields.

Layout breakpoints. @media cannot read var(), so components hardcode the same values with a comment.

TokenTierCSS variableValueDescription
breakpoint-smsemanticvar(--breakpoint-sm)640pxSmall: phones landscape / narrow tablets. CSS @media cannot read var(); Grid hardcodes the same value with a comment.
breakpoint-mdsemanticvar(--breakpoint-md)960pxMedium: tablets / narrow laptops.
breakpoint-lgsemanticvar(--breakpoint-lg)1280pxLarge: desktop.

Foreground (text and icon) colors, themed. The AA column lists the bgColor tokens each is rated on.

TokenTierCSS variableLightDarkAA on (light / dark)Description
fgColor-defaultsemanticvar(--fgColor-default)#2a241b#f4eee3
light: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-emphasisbgColor-attention-muted (large text only: bgColor-accent-emphasis)
dark: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-emphasisbgColor-success-mutedbgColor-danger-emphasisbgColor-danger-mutedbgColor-attention-muted (large text only: bgColor-accent-emphasis)
Primary text color.
fgColor-mutedsemanticvar(--fgColor-muted)#6e6049#a1927a
light: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted
dark: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted
Secondary text (AA on paper / muted).
fgColor-onEmphasissemanticvar(--fgColor-onEmphasis)#ffffff#ffffff
light: bgColor-emphasisbgColor-accent-emphasisbgColor-success-emphasisbgColor-danger-emphasis (large text only: bgColor-attention-emphasis)
dark: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-emphasisbgColor-accent-mutedbgColor-success-emphasisbgColor-success-mutedbgColor-danger-emphasisbgColor-danger-mutedbgColor-attention-muted (large text only: bgColor-attention-emphasis)
Text on a solid emphasis background.
fgColor-accentsemanticvar(--fgColor-accent)#a23e1f#e9a487
light: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted
dark: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted (large text only: bgColor-danger-emphasis)
Accent / link text color.
fgColor-dangersemanticvar(--fgColor-danger)#8a2817#e7a99b
light: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted
dark: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted (large text only: bgColor-danger-emphasis)
Danger text color.
fgColor-successsemanticvar(--fgColor-success)#3c5630#9cb87a
light: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted
dark: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted (large text only: bgColor-danger-emphasis)
Success text color.
fgColor-attentionsemanticvar(--fgColor-attention)#80600f#dcc06a
light: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted
dark: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-muted (large text only: bgColor-success-emphasisbgColor-danger-emphasis)
Attention / warning text color.
fgColor-onAttentionsemanticvar(--fgColor-onAttention)#2a241b#2a241b
light: bgColor-defaultbgColor-mutedbgColor-insetbgColor-accent-mutedbgColor-success-mutedbgColor-danger-mutedbgColor-attention-emphasisbgColor-attention-muted (large text only: bgColor-accent-emphasis)
dark: bgColor-emphasisbgColor-attention-emphasis (large text only: bgColor-accent-emphasis)
Dark text on a solid attention (ochre) background: same ink in both themes.

Background colors, themed.

TokenTierCSS variableLightDarkDescription
bgColor-defaultsemanticvar(--bgColor-default)#ffffff#1a1712Default surface background.
bgColor-mutedsemanticvar(--bgColor-muted)#f4eee3#211d17Muted surface background.
bgColor-insetsemanticvar(--bgColor-inset)#fbf7f0#14110dPage / inset background (warm paper).
bgColor-backdropsemanticvar(--bgColor-backdrop)rgba(20, 17, 13, 0.5)rgba(0, 0, 0, 0.6)Modal scrim behind dialogs.
bgColor-emphasissemanticvar(--bgColor-emphasis)#2a241b#f4eee3High-contrast background (ink).
bgColor-accent-emphasissemanticvar(--bgColor-accent-emphasis)#c2502e#c2502eSolid accent background (primary action).
bgColor-accent-mutedsemanticvar(--bgColor-accent-muted)#f5e4db#3a2117Soft accent tint (tags, focus halo).
bgColor-success-emphasissemanticvar(--bgColor-success-emphasis)#4f6f3a#4f6f3aSolid success background.
bgColor-success-mutedsemanticvar(--bgColor-success-muted)#e7eedd#24301aSoft success tint.
bgColor-danger-emphasissemanticvar(--bgColor-danger-emphasis)#a8341f#a8341fSolid danger background.
bgColor-danger-mutedsemanticvar(--bgColor-danger-muted)#f8e3dc#3a1e18Soft danger tint.
bgColor-attention-emphasissemanticvar(--bgColor-attention-emphasis)#b5851f#b5851fSolid attention background.
bgColor-attention-mutedsemanticvar(--bgColor-attention-muted)#f6ecd2#332813Soft attention tint.

Border colors, themed.

TokenTierCSS variableLightDarkDescription
borderColor-defaultsemanticvar(--borderColor-default)#ddd2bf#3d3528Default border color.
borderColor-mutedsemanticvar(--borderColor-muted)#ebe3d5#2a241bMuted / subtle border.
borderColor-accent-emphasissemanticvar(--borderColor-accent-emphasis)#c2502e#d9744eAccent border color.
borderColor-accent-mutedsemanticvar(--borderColor-accent-muted)#ecc9b8#5a3320Soft accent tag border.
borderColor-success-mutedsemanticvar(--borderColor-success-muted)#cfe0bc#33492aSoft success tag border.
borderColor-danger-mutedsemanticvar(--borderColor-danger-muted)#efc9be#5a2c22Soft danger tag border.
borderColor-attention-mutedsemanticvar(--borderColor-attention-muted)#ead9a8#4d3c1cSoft attention tag border.

Tier 1: the raw palette and size values. App code never uses them; semantic tokens alias them. Components are the exception, for sizes only: 22 component stylesheets use --base-size-* for fixed widths and heights, and the switch thumb uses --base-color-white.

TokenTierCSS variableValueDescription
base-color-whitebasevar(--base-color-white)#ffffffNone
base-color-blackbasevar(--base-color-black)#14110dNone
base-color-neutral-50basevar(--base-color-neutral-50)#fbf7f0Warm paper.
base-color-neutral-100basevar(--base-color-neutral-100)#f4eee3None
base-color-neutral-200basevar(--base-color-neutral-200)#ebe3d5None
base-color-neutral-300basevar(--base-color-neutral-300)#ddd2bfNone
base-color-neutral-400basevar(--base-color-neutral-400)#c7b9a1None
base-color-neutral-500basevar(--base-color-neutral-500)#a1927aNone
base-color-neutral-600basevar(--base-color-neutral-600)#807156None
base-color-neutral-650basevar(--base-color-neutral-650)#6e6049Muted text: AA on paper/white/muted.
base-color-neutral-700basevar(--base-color-neutral-700)#574b39None
base-color-neutral-800basevar(--base-color-neutral-800)#3d3528None
base-color-neutral-900basevar(--base-color-neutral-900)#2a241bPrimary ink.
base-color-neutral-950basevar(--base-color-neutral-950)#211d17None
base-color-neutral-1000basevar(--base-color-neutral-1000)#14110dNone
base-color-clay-300basevar(--base-color-clay-300)#e9a487None
base-color-clay-400basevar(--base-color-clay-400)#d9744eNone
base-color-clay-500basevar(--base-color-clay-500)#c2502ePrimary accent (terracotta).
base-color-clay-600basevar(--base-color-clay-600)#a23e1fAccent text: AA on light.
base-color-olive-300basevar(--base-color-olive-300)#9cb87aNone
base-color-olive-400basevar(--base-color-olive-400)#6e8c4fNone
base-color-olive-500basevar(--base-color-olive-500)#4f6f3aSuccess solid.
base-color-olive-600basevar(--base-color-olive-600)#3c5630Success text: AA on light.
base-color-brick-300basevar(--base-color-brick-300)#e7a99bNone
base-color-brick-400basevar(--base-color-brick-400)#d07a66None
base-color-brick-500basevar(--base-color-brick-500)#a8341fDanger solid.
base-color-brick-600basevar(--base-color-brick-600)#8a2817Danger text: AA on light.
base-color-ochre-300basevar(--base-color-ochre-300)#dcc06aNone
base-color-ochre-400basevar(--base-color-ochre-400)#c49a3dNone
base-color-ochre-500basevar(--base-color-ochre-500)#b5851fAttention solid.
base-color-ochre-600basevar(--base-color-ochre-600)#80600fAttention text: AA on light + on tint.
base-size-4basevar(--base-size-4)4pxNone
base-size-8basevar(--base-size-8)8pxNone
base-size-12basevar(--base-size-12)12pxNone
base-size-16basevar(--base-size-16)16pxNone
base-size-24basevar(--base-size-24)24pxNone
base-size-28basevar(--base-size-28)28pxNone
base-size-32basevar(--base-size-32)32pxNone
base-size-40basevar(--base-size-40)40pxNone