One source of truth
These values come straight from figma-color-export.json at apps/portal/lib/docs/. Re-export from Figma → drop the new JSON in → the table updates automatically. No hand-curation, no drift.
How tokens are named
Each token follows the shape property.role[.emphasis][.state] — for example background.danger, text.numeric.negative, background.interactive.primary.hover. Properties group by what the token paints — background, text, border, icon — and each property exposes the roles, emphasis levels, and interactive states that make sense for it.
The Light and Dark columns below show which primitive each token resolves to in each theme. color/green/100 means the primitive at color.green.100 in the Figma export.
All tokens
Background
61Accent background tinted blue, subtle (one step softer).
Updated 2 May 2026
blue/300blue/800Accent background tinted blue, subtler (two steps softer).
Updated 2 May 2026
blue/200blue/900Accent background tinted blue, subtlest (lightest tint).
Updated 2 May 2026
blue/100blue/1000Accent background tinted blurple, subtle (one step softer).
Updated 2 May 2026
blurple/300blurple/800Accent background tinted blurple, subtler (two steps softer).
Updated 2 May 2026
blurple/200blurple/900Accent background tinted blurple, subtlest (lightest tint).
Updated 2 May 2026
blurple/100blurple/1000Accent background tinted green, subtle (one step softer).
Updated 2 May 2026
green/300green/800Accent background tinted green, subtler (two steps softer).
Updated 2 May 2026
green/200green/900Accent background tinted green, subtlest (lightest tint).
Updated 2 May 2026
green/100green/1000Accent background tinted inverse, subtle (one step softer).
Updated 2 May 2026
neutral/900neutral/200Accent background tinted inverse, subtler (two steps softer).
Updated 2 May 2026
neutral/1000neutral/100Accent background tinted inverse, subtlest (lightest tint).
Updated 2 May 2026
neutral/1100neutral/0Accent background tinted natural, subtle (one step softer).
Updated 2 May 2026
natural/300natural/800Accent background tinted natural, subtler (two steps softer).
Updated 2 May 2026
natural/200natural/900Accent background tinted natural, subtlest (lightest tint).
Updated 2 May 2026
natural/100natural/1000Accent background tinted neutral, subtle (one step softer).
Updated 2 May 2026
neutral/200neutral/900Accent background tinted neutral, subtler (two steps softer).
Updated 2 May 2026
neutral/100neutral/1000Accent background tinted neutral, subtlest (lightest tint).
Updated 2 May 2026
neutral/0neutral/1100Accent background tinted orange, subtle (one step softer).
Updated 2 May 2026
orange/300orange/800Accent background tinted orange, subtler (two steps softer).
Updated 2 May 2026
orange/200orange/900Accent background tinted orange, subtlest (lightest tint).
Updated 2 May 2026
orange/100orange/1000Overlay background for dark surfaces — subtle (one step softer).
Updated 2 May 2026
white-alpha/200white-alpha/200Overlay background for dark surfaces — subtler (two steps softer).
Updated 2 May 2026
white-alpha/100white-alpha/100Overlay background for dark surfaces — subtlest (lightest tint).
Updated 2 May 2026
black-alpha/900black-alpha/900Overlay background for light surfaces — subtle (one step softer).
Updated 2 May 2026
black-alpha/200black-alpha/200Overlay background for light surfaces — subtler (two steps softer).
Updated 2 May 2026
black-alpha/100black-alpha/100Overlay background for light surfaces — subtlest (lightest tint).
Updated 2 May 2026
white-alpha/900white-alpha/900Accent background tinted pink, subtle (one step softer).
Updated 2 May 2026
pink/300pink/800Accent background tinted pink, subtler (two steps softer).
Updated 2 May 2026
pink/200pink/900Accent background tinted pink, subtlest (lightest tint).
Updated 2 May 2026
pink/100pink/1000Accent background tinted purple, subtle (one step softer).
Updated 2 May 2026
purple/300purple/800Accent background tinted purple, subtler (two steps softer).
Updated 2 May 2026
purple/200purple/900Accent background tinted purple, subtlest (lightest tint).
Updated 2 May 2026
purple/100purple/1000Accent background tinted red, subtle (one step softer).
Updated 2 May 2026
red/300red/800Accent background tinted red, subtler (two steps softer).
Updated 2 May 2026
red/200red/900Accent background tinted red, subtlest (lightest tint).
Updated 2 May 2026
red/100red/1000Accent background tinted yellow, subtle (one step softer).
Updated 2 May 2026
yellow/300yellow/800Accent background tinted yellow, subtler (two steps softer).
Updated 2 May 2026
yellow/200yellow/900Accent background tinted yellow, subtlest (lightest tint).
Updated 2 May 2026
yellow/100yellow/1000Background tint for destructive actions and irrecoverable errors.
Updated 2 May 2026
red/100red/1000Inert affordance background — buttons that can't be pressed, fields the user can't edit yet.
Updated 2 May 2026
black-alpha/100white-alpha/100Background tint for what's new — beta surfaces, onboarding, first-time-seen content.
Updated 2 May 2026
blurple/100blurple/1000Background tint for neutral information — links, infrastructure status, advisories.
Updated 2 May 2026
blue/100blue/1000Interactive danger background — subtle (one step softer).
Updated 2 May 2026
red/200red/900Interactive danger background — subtler (two steps softer).
Updated 2 May 2026
red/300red/800Interactive danger background — subtlest (lightest tint).
Updated 2 May 2026
red/400red/700Interactive primary button background — active state.
Updated 2 May 2026
neutral/900neutral/200Interactive primary button background — default state.
Updated 2 May 2026
neutral/1100neutral/0Interactive primary button background — hover state.
Updated 2 May 2026
neutral/1000neutral/100Interactive secondary button background — active state.
Updated 2 May 2026
black-alpha/400white-alpha/400Interactive secondary button background — default state.
Updated 2 May 2026
black-alpha/200white-alpha/200Interactive secondary button background — hover state.
Updated 2 May 2026
black-alpha/300white-alpha/300Interactive success background — subtle (one step softer).
Updated 2 May 2026
green/200green/900Interactive success background — subtler (two steps softer).
Updated 2 May 2026
green/300green/800Interactive success background — subtlest (lightest tint).
Updated 2 May 2026
green/400green/700Interactive tertiary button background — active state.
Updated 2 May 2026
black-alpha/300white-alpha/300Interactive tertiary button background — default state.
Updated 2 May 2026
transparenttransparentInteractive tertiary button background — hover state.
Updated 2 May 2026
black-alpha/200white-alpha/200Active selection background — filter chips, picked dates, selected list rows.
Updated 2 May 2026
neutral/1100neutral/0Background tint for completed states and positive outcomes — settled payouts, demo-ready prototypes.
Updated 2 May 2026
green/100green/1000Background tint for caution before failure — pending decisions, near-threshold metrics.
Updated 2 May 2026
yellow/100yellow/1000
Text
29Accent text in blue.
Updated 2 May 2026
blue/900blue/200Accent text in blurple.
Updated 2 May 2026
blurple/900blurple/200Accent text in green.
Updated 2 May 2026
green/900green/200Accent text in inverse.
Updated 2 May 2026
neutral/400neutral/700Accent text in natural.
Updated 2 May 2026
natural/900natural/200Accent text in neutral.
Updated 2 May 2026
neutral/700neutral/400Accent text in orange.
Updated 2 May 2026
orange/900orange/200Text on dark accent overlays.
Updated 2 May 2026
white-alpha/900white-alpha/900Text on light accent overlays.
Updated 2 May 2026
black-alpha/900black-alpha/900Accent text in pink.
Updated 2 May 2026
pink/900pink/200Accent text in purple.
Updated 2 May 2026
purple/900purple/200Accent text in red.
Updated 2 May 2026
red/900red/200Accent text in yellow.
Updated 2 May 2026
yellow/900yellow/200Text color for destructive or error messaging.
Updated 2 May 2026
red/900red/200Text on disabled surfaces.
Updated 2 May 2026
black-alpha/400white-alpha/400Text color for discovery / what's-new messaging.
Updated 2 May 2026
blurple/900blurple/200Text color for informational messaging.
Updated 2 May 2026
blue/900blue/200Text on bold, inverse backgrounds.
Updated 2 May 2026
neutral/0neutral/1100Color for inline prose links. Underlined by default; underline thickens on hover.
Updated 2 May 2026
blurple/800blurple/300Negative monetary values — payments out, fees. Orange, not red: outgoing money is normal.
Updated 2 May 2026
orange/800orange/200Positive monetary values — refunds received, credits, payouts in.
Updated 2 May 2026
green/800green/200Default numeric text. Tabular numerals + slashed zero — for totals at rest.
Updated 2 May 2026
neutral/1100neutral/0Subdued numeric text — secondary totals, comparison values.
Updated 2 May 2026
black-alpha/800white-alpha/800Voided or cancelled monetary values — struck-through, low contrast.
Updated 2 May 2026
black-alpha/400white-alpha/400Default body text and high-contrast labels.
Updated 2 May 2026
neutral/1100neutral/0Secondary text — descriptions, captions, the explanatory line below a heading.
Updated 2 May 2026
black-alpha/800white-alpha/800Text color for success messaging.
Updated 2 May 2026
green/900green/200Tertiary text — metadata, timestamps, low-emphasis labels.
Updated 2 May 2026
black-alpha/600white-alpha/600Text color for warning messaging.
Updated 2 May 2026
yellow/900yellow/200
Border
19Accent border in blue.
Updated 2 May 2026
blue/300blurple/800Accent border in blurple.
Updated 2 May 2026
blurple/300blurple/800Accent border in green.
Updated 2 May 2026
green/300green/800Accent border in inverse.
Updated 2 May 2026
neutral/800neutral/300Accent border in natural.
Updated 2 May 2026
natural/300natural/800Accent border in neutral.
Updated 2 May 2026
neutral/200neutral/900Accent border in orange.
Updated 2 May 2026
orange/300orange/800Border on dark accent overlays.
Updated 2 May 2026
white-alpha/400white-alpha/400Border on light accent overlays.
Updated 2 May 2026
black-alpha/400black-alpha/400Accent border in pink.
Updated 2 May 2026
pink/300pink/800Accent border in purple.
Updated 2 May 2026
purple/300purple/800Accent border in red.
Updated 2 May 2026
red/300red/800Accent border in yellow.
Updated 2 May 2026
yellow/300yellow/800Border color on active or pressed interactive surfaces.
Updated 2 May 2026
neutral/1100neutral/0Border color for inputs in error state.
Updated 2 May 2026
red/700red/500Default 1-pixel border — cards, inputs, dividers, table rules.
Updated 2 May 2026
neutral/300neutral/800Border color for disabled affordances.
Updated 2 May 2026
black-alpha/200white-alpha/200Focus ring color. Pair with a 2-pixel ring + 2-pixel offset.
Updated 2 May 2026
blurple/400blurple/700Border color when an interactive surface is hovered.
Updated 2 May 2026
neutral/600neutral/500
Icon
5Icon color for destructive actions and serious errors.
Updated 2 May 2026
red/700red/500Icon color for discovery / what's-new affordances.
Updated 2 May 2026
blurple/700blurple/400Icon color for informational affordances.
Updated 2 May 2026
blue/500blue/400Icon color for completed states.
Updated 2 May 2026
green/700green/400Icon color for caution states.
Updated 2 May 2026
yellow/400yellow/300
Chart
26Gridlines, axes, and ruled marks on charts.
Updated 2 May 2026
neutral/400neutral/900Categorical chart series 1, lead 600-weight palette. Series order is fixed across every chart.
Updated 2 May 2026
blurple/600blurple/500Categorical chart series 10, secondary 800-weight palette for stacked or grouped data.
Updated 2 May 2026
green/800green/300Categorical chart series 11, secondary 800-weight palette for stacked or grouped data.
Updated 2 May 2026
purple/800purple/300Categorical chart series 12, secondary 800-weight palette for stacked or grouped data.
Updated 2 May 2026
pink/800pink/300Categorical chart series 13, secondary 800-weight palette for stacked or grouped data.
Updated 2 May 2026
orange/800orange/300Categorical chart series 14, secondary 800-weight palette for stacked or grouped data.
Updated 2 May 2026
yellow/800yellow/300Categorical chart series 15, secondary 800-weight palette for stacked or grouped data.
Updated 2 May 2026
blue/800red/300Categorical chart series 16, secondary 800-weight palette for stacked or grouped data.
Updated 2 May 2026
red/800pink/300Categorical chart series 17, tertiary 900-weight palette for tertiary breakdowns.
Updated 2 May 2026
blurple/900blurple/200Categorical chart series 18, tertiary 900-weight palette for tertiary breakdowns.
Updated 2 May 2026
green/900green/200Categorical chart series 19, tertiary 900-weight palette for tertiary breakdowns.
Updated 2 May 2026
purple/900purple/200Categorical chart series 2, lead 600-weight palette. Series order is fixed across every chart.
Updated 2 May 2026
green/600green/500Categorical chart series 20, tertiary 900-weight palette for tertiary breakdowns.
Updated 2 May 2026
pink/900pink/200Categorical chart series 21, tertiary 900-weight palette for tertiary breakdowns.
Updated 2 May 2026
orange/900orange/200Categorical chart series 22, tertiary 900-weight palette for tertiary breakdowns.
Updated 2 May 2026
yellow/900yellow/200Categorical chart series 23, tertiary 900-weight palette for tertiary breakdowns.
Updated 2 May 2026
blue/900red/200Categorical chart series 24, tertiary 900-weight palette for tertiary breakdowns.
Updated 2 May 2026
red/900pink/200Categorical chart series 3, lead 600-weight palette. Series order is fixed across every chart.
Updated 2 May 2026
purple/600purple/500Categorical chart series 4, lead 600-weight palette. Series order is fixed across every chart.
Updated 2 May 2026
pink/600pink/500Categorical chart series 5, lead 600-weight palette. Series order is fixed across every chart.
Updated 2 May 2026
orange/600orange/500Categorical chart series 6, lead 600-weight palette. Series order is fixed across every chart.
Updated 2 May 2026
yellow/600yellow/500Categorical chart series 7, lead 600-weight palette. Series order is fixed across every chart.
Updated 2 May 2026
blue/600blue/500Categorical chart series 8, lead 600-weight palette. Series order is fixed across every chart.
Updated 2 May 2026
red/600red/500Categorical chart series 9, secondary 800-weight palette for stacked or grouped data.
Updated 2 May 2026
blurple/800blurple/300Neutral chart fill — comparison data, historical context, inactive series.
Updated 2 May 2026
neutral/300neutral/800
Skeleton
2Loading-state placeholder fill.
Updated 2 May 2026
black-alpha/200white-alpha/200Animated highlight that travels across loading skeletons.
Updated 2 May 2026
black-alpha/100white-alpha/100
Blanket
1Translucent scrim for modal overlays — dims the underlying surface.
Updated 2 May 2026
black-alpha/800black-alpha/900