OverviewGetting startedInstallationComponentsFoundationsToken architectureColorTypographySpacingBorders and radiiElevationMotionThemesResponsive behaviorCore and stateTheming and layoutAgent toolingAI toolingChange impactRecipesArchitectureRoadmapHelp and releasesOverviewToken architectureColorTypographySpacingBorders and radiiElevationMotionThemesResponsive behavior

Reference palettes

An OKLCH generator builds each ramp and maps it into sRGB in a documented, deterministic way. Generated ramps do not guarantee contrast, so the role pairs that components actually draw are checked instead.

ref.brand
  1. 50#f3f4ff
  2. 100#e7e9ff
  3. 200#d0d4ff
  4. 300#b2b6ff
  5. 400#9393ff
  6. 500#776cff
  7. 600#624fe7
  8. 700#4d3bc0
  9. 800#3a2b95
  10. 900#281c6c
  11. 950#160e46
ref.neutral
  1. 0#ffffff
  2. 50#f5f5f6
  3. 100#ebebed
  4. 200#d7d7db
  5. 300#bcbdc4
  6. 400#a0a1a9
  7. 500#84858f
  8. 600#6d6e77
  9. 700#565760
  10. 800#414248
  11. 900#2d2d32
  12. 950#1a1a1e
  13. 1000#000000
ref.info
  1. 50#ecf7ff
  2. 100#daeffe
  3. 200#b7ddf9
  4. 300#86c6f3
  5. 400#53abe4
  6. 500#0a8fd1
  7. 600#0076af
  8. 700#005e8c
  9. 800#00476c
  10. 900#00314c
  11. 950#001d2f
ref.success
  1. 50#edf9ef
  2. 100#dcf2e0
  3. 200#bce3c3
  4. 300#90d09d
  5. 400#61b876
  6. 500#2e9e52
  7. 600#00853c
  8. 700#006b2e
  9. 800#005121
  10. 900#003915
  11. 950#00220a
ref.warning
  1. 50#fcf4e8
  2. 100#f9e9d3
  3. 200#efd3ac
  4. 300#e3b575
  5. 400#d09538
  6. 500#b37900
  7. 600#956300
  8. 700#774f00
  9. 800#5b3b00
  10. 900#402800
  11. 950#271700
ref.danger
  1. 50#fff2f0
  2. 100#ffe4e0
  3. 200#ffc8c1
  4. 300#ffa196
  5. 400#f97165
  6. 500#e6443d
  7. 600#c92324
  8. 700#a50e15
  9. 800#80070d
  10. 900#5c0206
  11. 950#3a0002

Semantic roles

Components read roles, not ramp steps. Each swatch below is drawn by its own token inside a data-odd-mode scope, so it shows the value that mode resolves.

Surface, text, border, and other roles
RoleLightDarkUse
color.canvas #f6f5f1 #171821Page background
color.surface.default #ffffff #242631Cards, panels, controls
color.surface.raised #ffffff #2d2f3bRaised surfaces (with an elevation.
color.surface.sunken #f0eff3 #111219Wells, code, inset areas
color.surface.hover #f0eff5 #30323fHover and transient highlights
color.surface.specimen #efedfc #29263dDocumentation specimen stages only (24 px inset); never a selected state
color.text.primary #23252b #f5f3fdBody and headings
color.text.secondary #5f626f #bdbbcdSupporting text
color.text.disabled #767985 #858393Disabled text (exempt from contrast minimums)
color.link #6250e8 #b4a8ffLinks; 2 px focus ring at 2 px offset
color.focus.ring #6250e8 #b4a8ffLinks; 2 px focus ring at 2 px offset
color.border.default #d9d8e1 #555368Dividers / control borders (3:1)
color.border.strong #868997 #858395Dividers / control borders (3:1)
color.selection.background #6250e8 #b4a8ffSelected controls, with a state marker
color.selection.foreground #ffffff #23252bSelected controls, with a state marker
color.selection.surface #e7e9ff #281c6cSelected rows (listbox options, menu items) under text.primary, with a check mark; hover stays surface.hover
color.scrim rgb(0 0 0 / 0.4) rgb(0 0 0 / 0.6)Modal backdrops (::backdrop of dialogs and drawers)
color.accent.decorative #dfedaa #dfedaaCitron decoration; never status, text, or interaction

Interactive states

A primary action has a role per state, and text on it uses color.text.on-action.

Action roles
RoleLightDarkUse
color.action.default #6250e8 #b4a8ffPrimary actions
color.action.hover #5140cc #c5bcffPrimary actions
color.action.pressed #4333ad #9b8cf0Primary actions
color.text.on-action #ffffff #23252bText on actions and selections
Light
Continue
Dark
Continue

Status tones

Each tone has a foreground, a surface, and a decorative edge, which has no contrast minimum. Below, odd-alert in each tone.

Tone roles
RoleLightDarkUse
color.neutral.foreground #5f626f #bdbbcdThe neutral tone (aliases)
color.neutral.surface #f0eff3 #111219The neutral tone (aliases)
color.neutral.border #d9d8e1 #555368The neutral tone (aliases)
color.info.foreground #0076af #53abe4Information.
color.info.surface #ecf7ff #001d2fInformation.
color.info.border #b7ddf9 #00476cDecorative tone edges (alerts, badges); not control boundaries, so no contrast minimum
color.success.foreground #267653 #8fd6b3Success
color.success.surface #eaf6ef #1c352bSuccess
color.success.border #bce3c3 #005121Decorative tone edges (alerts, badges); not control boundaries, so no contrast minimum
color.warning.foreground #8a5900 #e9c478Warnings (status.warning seeds the ref.warning.
color.warning.surface #fff5de #3a2e18Warnings (status.warning seeds the ref.warning.
color.warning.border #efd3ac #5b3b00Decorative tone edges (alerts, badges); not control boundaries, so no contrast minimum
color.danger.foreground #b4233a #ff9babErrors; also danger borders
color.danger.surface #fff0f2 #3d202aErrors; also danger borders
color.danger.border #ffc8c1 #80070dDecorative tone edges (alerts, badges); not control boundaries, so no contrast minimum
  • color.neutral.surface
  • color.info.surface
  • color.success.surface
  • color.warning.surface
  • color.danger.surface

Contrast pairs

The contrast report states which foreground role must reach which minimum against which backgrounds (semantic colour contracts, section 10.4).

124 pairs pass, 0 fail, and 6 are exempt. Method: WCAG 2.2 contrast ratio of the resolved sRGB colours, rounded down to two decimals, for each declared role pair (theming-and-styling.md §10.4).

Each foreground role against its first background
ForegroundBackgroundLightDarkMinimum
color.text.primarycolor.canvas14.04:116.08:14.5:1 (1.4.3)
color.text.secondarycolor.canvas5.55:19.38:14.5:1 (1.4.3)
color.text.on-actioncolor.action.default5.48:17.28:14.5:1 (1.4.3)
color.selection.foregroundcolor.selection.background5.48:17.28:14.5:1 (1.4.3)
color.linkcolor.canvas5.02:18.39:14.5:1 (1.4.3)
color.border.strongcolor.canvas3.18:14.77:13:1 (1.4.11)
color.focus.ringcolor.canvas5.02:18.39:13:1 (1.4.11)
color.danger.foregroundcolor.canvas5.93:18.85:14.5:1 (1.4.3)
color.neutral.foregroundcolor.canvas5.55:19.38:14.5:1 (1.4.3)
color.info.foregroundcolor.canvas4.57:16.99:14.5:1 (1.4.3)
color.success.foregroundcolor.canvas5.06:110.46:14.5:1 (1.4.3)
color.warning.foregroundcolor.canvas5.48:110.62:14.5:1 (1.4.3)
color.text.disabledcolor.surface.sunken3.78:15.03:1Exempt (1.4.3 (exception for inactive components))