Color

OKLCH primitive ramps and semantic intents. The bg, fg, and border categories carry the same variant set, data is a numbered categorical scale for charts, and every value has a light and dark side. Intents with a filled treatment also carry an inverse variant — the same intent with its lightness polarity flipped. Toggle the theme in the sidebar to preview dark mode.

Primitive ramps

neutral
red
orange
yellow
green
blue
purple

bg

Backgrounds — intent colors are subtle washes for alerts, badges, and selected rows. Their .inverse variants are the solid fills.

bg
bg.subtle
bg.highlight
bg.inverse
bg.danger
bg.success
bg.action
bg.warning
bg.brand
bg.info
bg.premium
bg.disabled

fg

Foregrounds — text and icon colors for each intent.

fg
fg.subtle
fg.highlight
fg.inverse
fg.danger
fg.success
fg.action
fg.warning
fg.brand
fg.info
fg.premium
fg.disabled

border

Borders — dividers, control outlines, and focus rings.

border
border.subtle
border.highlight
border.inverse
border.danger
border.success
border.action
border.warning
border.brand
border.info
border.premium

Action states

The action intent is the only one that expands into interaction states. bg.action, fg.action, and border.action each carry a tonal progression — DEFAULT, hover, active, and disabled — plus the inverse fill it shares with the status intents (see Inverse fills below).

bg.action
bg.action
bg.action.hover
bg.action.active
bg.action.inverse
bg.action.disabled
fg.action
fg.action
fg.action.hover
fg.action.active
fg.action.inverse
fg.action.disabled
border.action
border.action
border.action.hover
border.action.active
border.action.inverse
border.action.disabled
In context

Tonal — a soft surface pairing bg.action.* with fg.action.* and border.action.* as it steps through states.

Action
rest
Action
hover
Action
active
Action
disabled

Solid — the inverse pairing used by the primary Button: a strong bg.action.inverse fill with fg.action.inverse text and a border.action.inverse edge.

Action
inverse

Inverse fills

inverse flips the lightness polarity of a bg/fg pair, and applies at two scopes: on the neutral surface, and within an intent. The plain intent is a light wash carrying dark text; its inverse is a solid fill carrying light text. Use them as a pair — bg.X.inverse is authored against fg.X.inverse, and every combination below clears WCAG AA for normal text in both themes.

warning is the one intent whose inverse does not literally flip: light text on amber tops out near 2.9:1, so the gold fill keeps dark text in both themes. Accessibility over symmetry.

surface (neutral)
Surface
bg
Surface
bg.inverse
action
action
bg.action
action
bg.action.inverse
danger
danger
bg.danger
danger
bg.danger.inverse
success
success
bg.success
success
bg.success.inverse
warning
warning
bg.warning
warning
bg.warning.inverse
info
info
bg.info
info
bg.info.inverse
premium
premium
bg.premium
premium
bg.premium.inverse

data

Data — a numbered categorical scale for charts and data visualization. Assign series in order, starting at data.0.

data.0
data.1
data.2
data.3
data.4
data.5
data.6
data.7
data.8
data.9
data.10