Skip to content

Semantic Color Roles

All roles are CSS custom properties on :root (light) and [data-theme="dark"] (dark).

--color-background
--color-surface
--color-surface-raised
TokenValue
--color-background
--color-surface
--color-surface-raised
RoleUsageContrast pair
--color-backgroundPage canvaspaired with --color-text
--color-surfaceCards, panelspaired with --color-text
--color-surface-raisedDropdowns, modalspaired with --color-text
--color-border
--color-border-strong
TokenValue
--color-border
--color-border-strong
RoleUsageMinimum contrast
--color-borderDefault borders3.0:1 vs background
--color-border-strongEmphasized/active borders3.0:1 vs background
--color-text
--color-text-inverse
--color-text-muted
--color-text-disabled
TokenValue
--color-text
--color-text-inverse
--color-text-muted
--color-text-disabled
RoleUsageMinimum contrast
--color-textBody text4.5:1 vs background
--color-text-inverseText on colored backgrounds4.5:1 vs primary
--color-text-mutedSecondary / captions4.5:1 vs background
--color-text-disabledDisabled stateBelow AA (intentional)
--color-primary
--color-primary-hover
--color-focus-ring
TokenValue
--color-primary
--color-primary-hover
--color-focus-ring
RoleUsage
--color-primaryPrimary actions and interactive elements
--color-primary-hoverHover state on primary
--color-focus-ringKeyboard focus outline
--color-danger
--color-warning
--color-info
--color-success
TokenValue
--color-danger
--color-warning
--color-info
--color-success
RoleUsage
--color-danger27° (red)Errors, destructive actions
--color-warning80° (amber)Warnings, caution
--color-info240° (blue)Informational messages
--color-success155° (green)Positive outcomes
--color-accent
--color-accent-hover
--color-brand-accent
TokenValue
--color-accent
--color-accent-hover
--color-brand-accent
RoleGenerated when
--color-accentSeed hue has sufficient chroma range
--color-accent-hoverWith --color-accent
--color-brand-accentSeed hue has sufficient spread