Skip to content

Tokens

Tokens are CSS custom properties shipped in tenet-ui/styles.css. Theme-agnostic tokens live on :root; themed tokens (fgColor, bgColor, borderColor) switch on [data-color-mode="light" | "dark"]. Components reference semantic tokens only — the base palette at the bottom exists to be aliased, not used.

104 tokens · 15 groups · tenet-ui@0.4.0

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

TokenCSS variableValueDescription
fontFamily-displayvar(--fontFamily-display)'Iowan Old Style', 'Palatino Linotype', Palatino, 'Book Antiqua', Georgia, 'Times New Roman', serifSerif display face for headings — the editorial signature.
fontFamily-bodyvar(--fontFamily-body)-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serifHumanist sans for body and controls.
fontFamily-monovar(--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.

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

Border widths.

TokenCSS variableValueDescription
borderWidth-thinvar(--borderWidth-thin)1pxDefault hairline border.
borderWidth-thickvar(--borderWidth-thick)2pxEmphasized border.

Corner radii.

TokenCSS variableValueDescription
borderRadius-smallvar(--borderRadius-small)3pxCrisp — tags, options.
borderRadius-mediumvar(--borderRadius-medium)5pxControls, cards.
borderRadius-largevar(--borderRadius-large)9pxSurfaces, popovers.
borderRadius-fullvar(--borderRadius-full)9999px

The type scale.

TokenCSS variableValueDescription
fontSize-0var(--fontSize-0)12px
fontSize-1var(--fontSize-1)14px
fontSize-2var(--fontSize-2)16px
fontSize-3var(--fontSize-3)20px
fontSize-4var(--fontSize-4)28px
fontSize-5var(--fontSize-5)36pxDisplay size — page titles (Heading level 1).

Line heights.

TokenCSS variableValueDescription
lineHeight-tightvar(--lineHeight-tight)1.2Headings and single-line controls.
lineHeight-defaultvar(--lineHeight-default)1.5Body copy.

Font weights.

TokenCSS variableValueDescription
fontWeight-normalvar(--fontWeight-normal)400
fontWeight-mediumvar(--fontWeight-medium)500
fontWeight-semiboldvar(--fontWeight-semibold)600
fontWeight-boldvar(--fontWeight-bold)700

Letter spacing (tracking).

TokenCSS variableValueDescription
letterSpacing-tagvar(--letterSpacing-tag)0.04emSlight tracking for the uppercase tag look.

Control heights for small / medium / large interactive elements.

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

Elevation shadows.

TokenCSS variableValueDescription
shadow-restingvar(--shadow-resting)0 1px 2px rgba(31, 27, 22, 0.06)Resting elevation (warm).
shadow-mediumvar(--shadow-medium)0 6px 16px rgba(31, 27, 22, 0.12)Raised elevation (cards, menus, popovers).
shadow-focusvar(--shadow-focus)0 0 0 3px var(--bgColor-accent-muted)Focus ring halo for fields.

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

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

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

TokenCSS variableLightDarkAA on (light / dark)Description
fgColor-defaultvar(--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-mutedvar(--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-onEmphasisvar(--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-accentvar(--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-dangervar(--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-successvar(--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-attentionvar(--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-onAttentionvar(--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.

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

Border colors, themed.

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

Primitive palette and size values. Components never use these directly — they reference the semantic tokens above.

TokenCSS variableValueDescription
base-color-whitevar(--base-color-white)#ffffff
base-color-blackvar(--base-color-black)#14110d
base-color-neutral-50var(--base-color-neutral-50)#fbf7f0Warm paper.
base-color-neutral-100var(--base-color-neutral-100)#f4eee3
base-color-neutral-200var(--base-color-neutral-200)#ebe3d5
base-color-neutral-300var(--base-color-neutral-300)#ddd2bf
base-color-neutral-400var(--base-color-neutral-400)#c7b9a1
base-color-neutral-500var(--base-color-neutral-500)#a1927a
base-color-neutral-600var(--base-color-neutral-600)#807156
base-color-neutral-650var(--base-color-neutral-650)#6e6049Muted text — AA on paper/white/muted.
base-color-neutral-700var(--base-color-neutral-700)#574b39
base-color-neutral-800var(--base-color-neutral-800)#3d3528
base-color-neutral-900var(--base-color-neutral-900)#2a241bPrimary ink.
base-color-neutral-950var(--base-color-neutral-950)#211d17
base-color-neutral-1000var(--base-color-neutral-1000)#14110d
base-color-clay-300var(--base-color-clay-300)#e9a487
base-color-clay-400var(--base-color-clay-400)#d9744e
base-color-clay-500var(--base-color-clay-500)#c2502ePrimary accent (terracotta).
base-color-clay-600var(--base-color-clay-600)#a23e1fAccent text — AA on light.
base-color-olive-300var(--base-color-olive-300)#9cb87a
base-color-olive-400var(--base-color-olive-400)#6e8c4f
base-color-olive-500var(--base-color-olive-500)#4f6f3aSuccess solid.
base-color-olive-600var(--base-color-olive-600)#3c5630Success text — AA on light.
base-color-brick-300var(--base-color-brick-300)#e7a99b
base-color-brick-400var(--base-color-brick-400)#d07a66
base-color-brick-500var(--base-color-brick-500)#a8341fDanger solid.
base-color-brick-600var(--base-color-brick-600)#8a2817Danger text — AA on light.
base-color-ochre-300var(--base-color-ochre-300)#dcc06a
base-color-ochre-400var(--base-color-ochre-400)#c49a3d
base-color-ochre-500var(--base-color-ochre-500)#b5851fAttention solid.
base-color-ochre-600var(--base-color-ochre-600)#80600fAttention text — AA on light + on tint.
base-size-4var(--base-size-4)4px
base-size-8var(--base-size-8)8px
base-size-12var(--base-size-12)12px
base-size-16var(--base-size-16)16px
base-size-24var(--base-size-24)24px
base-size-28var(--base-size-28)28px
base-size-32var(--base-size-32)32px
base-size-40var(--base-size-40)40px