Semantic

The colour roles every component is written against — canvas, surfaces, lines, ink, emphasis, focus, data, scrim and washes — with their value in light and dark, followed by the twelve-step neutral ramp they draw from and the four state hues. Every value on this page is read from tokens.css when the site builds, so the page cannot drift from the source.

Roles

Components use these names, never a ramp step, so dark mode is a swap of values rather than a second set of styles. The swatch is live in the current theme; the two columns are read from tokens.css.

TokenLightDarkUse it for
Surfaces
--canvas
→ --n-01 · dark → --n-00
#fbfaf7#141414The page behind everything. Text never sits on it directly.
--surface
→ --n-00 · dark → --n-01
#ffffff#1b1c1dCards, tables, drawers, the sidebar — where text sits.
--surface-2
→ --n-02
#f4f3f0#222426Inputs, table headers, the segmented trough, loading blocks.
--surface-3
→ --n-03
#eeede8#2b2d31Hovered and selected rows, highlighted menu items, avatars, counts.
Lines
--hairline
→ --n-04
#e1e0da#37393dCard borders, row rules, dividers.
--hairline-strong
→ --n-05
#c6c4be#494c50Between drawer sections, tag outlines, a chart's baseline.
--border-control
→ --n-06
#85837e#73767bThe edge of an input, a select, a checkbox, a radio.
Ink
--text-1
→ --n-11
#1a1918#f1f2f3Titles, values, the first column of a table, and the ink series of a chart.
--text-2
→ --n-09
#4e4d49#b7b9bcBody copy and the other table columns.
--text-3
→ --n-08
#64635e#9fa2a6Labels and captions.
--text-4
→ --n-07
#76746f#85888dHints, placeholders, caps labels, icons at rest.
Emphasis and focus
--emphasis
→ --text-1
#1a1918#f1f2f3Primary buttons, a chosen pill, a checked box: emphasis is ink, never a hue.
--emphasis-on
→ --n-00
#ffffff#141414Text and icons on --emphasis.
--emphasis-quiet
→ --surface-3
#eeede8#2b2d31The current sidebar item and the active letter of an A–Z strip.
--focus-ring
→ --text-1
#1a1918#f1f2f3The keyboard focus outline, at --focus-w.
Data
--series-1
→ --text-2
#4e4d49#b7b9bcInlineMeter's fill, in the body-copy ink so a stack of bars stays quiet.
--series-track
→ --n-03
#eeede8#2b2d31The unfilled track behind meters, progress bars and sliders.
--delta-up
→ --teal-700 · dark → --teal-300
#1e6860#77c9beA rise against the last period, beside its glyph.
--delta-down
→ --red-700 · dark → --red-300
#8f3d3a#fa9991A fall against the last period, beside its glyph.
Overlay and washes
--scrim
#1a191899#000000b8Behind drawers and dialogs.
--wash-warm
#e0a96b24#e0a96b14A faint warm tint over a large empty area, such as a landing hero. Never behind data.
--wash-cool
#40a1961f#40a19612The cool counterpart of --wash-warm.

Neutral ramp

12 steps from paper to ink. Light runs warm; dark is its own ramp, not an inversion. The roles above point into it.

Light
n-00#ffffff
n-01#fbfaf7
n-02#f4f3f0
n-03#eeede8
n-04#e1e0da
n-05#c6c4be
n-06#85837e
n-07#76746f
n-08#64635e
n-09#4e4d49
n-10#363533
n-11#1a1918
Dark
n-00#141414
n-01#1b1c1d
n-02#222426
n-03#2b2d31
n-04#37393d
n-05#494c50
n-06#73767b
n-07#85888d
n-08#9fa2a6
n-09#b7b9bc
n-10#d2d4d7
n-11#f1f2f3

State hues

Four ramps of ten steps: teal settled, blue in flight, amber attention, red critical. They are the same in both themes; Chip picks the 050, 100 and 700 steps in light and 900, 800 and 300 in dark.

Only the state components may use them.

Chrome is achromatic and state is chromatic, so a coloured pixel always means a state. Outside a chip, a hue appears only as a state glyph beside its text — in Alert, Toast, HelperText and PriorityMark — or as a field's error, each borrowing its chip's 700 step, or 300 in dark.
teal
teal-050#e5f8f5
teal-100#c2e9e3
teal-200#9ddad1
teal-300#77c9be
teal-400#5bb7ac
teal-500#40a196
teal-600#2c867c
teal-700#1e6860
teal-800#154842
teal-900#102d2a
blue
blue-050#ebf5ff
blue-100#c8e3ff
blue-200#a5d1ff
blue-300#7cbdff
blue-400#59aaf8
blue-500#3a93e6
blue-600#2779c3
blue-700#1f5d97
blue-800#174068
blue-900#112941
amber
amber-050#fff1e1
amber-100#f8dab6
amber-200#f1c38a
amber-300#e6ab5d
amber-400#da942c
amber-500#c37f00
amber-600#a16800
amber-700#7d5000
amber-800#583600
amber-900#382304
red
red-050#ffefee
red-100#ffd4cf
red-200#ffb7b0
red-300#fa9991
red-400#f07f77
red-500#dc655f
red-600#b9504b
red-700#8f3d3a
red-800#632b28
red-900#3e1c1a