Colours · Semantic

Meaning-bearing tokens

Semantic tokens bind base palette shades to roles in the UI. Component code never references a base colour directly — it always asks for a semantic role (e.g. --semantic-colour-text-heading) so themes can swap underneath.

Text 55 tokens

Routed through text- prefixes for headings, body, brand, error, warning, success and secondary tones.

--semantic-colour-text-heading
→ neutral-black
--semantic-colour-text-subheading
→ slate-700
--semantic-colour-text-body1
→ slate-600
--semantic-colour-text-body2
→ slate-500
--semantic-colour-text-muted
→ slate-400
--semantic-colour-text-subtle
→ slate-300
--semantic-colour-text-on-surface
→ neutral-white
--semantic-colour-text-brand-primary-darkest
→ cobalt-900
--semantic-colour-text-brand-primary-bold
→ cobalt-700
--semantic-colour-text-brand-primary
→ cobalt-600
--semantic-colour-text-brand-primary-light
→ cobalt-200
--semantic-colour-text-brand-primary-extralight
→ cobalt-100
--semantic-colour-text-brand-primary-subtle
→ cobalt-10
--semantic-colour-text-error-darkest
→ crimson-900
--semantic-colour-text-error-bold
→ crimson-700
--semantic-colour-text-error-primary
→ crimson-600
--semantic-colour-text-error-light
→ crimson-200
--semantic-colour-text-error-extralight
→ crimson-100
--semantic-colour-text-error-subtle
→ crimson-10
--semantic-colour-text-warning-darkest
→ bumblebee-900
--semantic-colour-text-warning-bold
→ bumblebee-700
--semantic-colour-text-warning-primary
→ bumblebee-600
--semantic-colour-text-warning-light
→ bumblebee-200
--semantic-colour-text-warning-extralight
→ bumblebee-100
--semantic-colour-text-warning-subtle
→ bumblebee-10
--semantic-colour-text-info-darkest
→ sky-900
--semantic-colour-text-info-bold
→ sky-700
--semantic-colour-text-info-primary
→ sky-600
--semantic-colour-text-info-light
→ sky-200
--semantic-colour-text-info-extralight
→ sky-100
--semantic-colour-text-info-subtle
→ sky-10
--semantic-colour-text-success-darkest
→ emerald-900
--semantic-colour-text-success-bold
→ emerald-700
--semantic-colour-text-success-primary
→ emerald-600
--semantic-colour-text-success-light
→ emerald-200
--semantic-colour-text-success-extralight
→ emerald-100
--semantic-colour-text-success-subtle
→ emerald-10
--semantic-colour-text-secondary-orange-darkest
→ citrus-900
--semantic-colour-text-secondary-orange-semibold
→ citrus-600
--semantic-colour-text-secondary-orange-primary
→ citrus-500
--semantic-colour-text-secondary-orange-light
→ citrus-200
--semantic-colour-text-secondary-orange-extralight
→ citrus-100
--semantic-colour-text-secondary-orange-subtle
→ citrus-10
--semantic-colour-text-secondary-pink-darkest
→ fuchsia-900
--semantic-colour-text-secondary-pink-semibold
→ fuchsia-600
--semantic-colour-text-secondary-pink-primary
→ fuchsia-500
--semantic-colour-text-secondary-pink-light
→ fuchsia-200
--semantic-colour-text-secondary-pink-extralight
→ fuchsia-100
--semantic-colour-text-secondary-pink-subtle
→ fuchsia-10
--semantic-colour-text-secondary-purple-darkest
→ lavender-900
--semantic-colour-text-secondary-purple-semibold
→ lavender-600
--semantic-colour-text-secondary-purple-primary
→ lavender-500
--semantic-colour-text-secondary-purple-light
→ lavender-200
--semantic-colour-text-secondary-purple-extralight
→ lavender-100
--semantic-colour-text-secondary-purple-subtle
→ lavender-10

Surface 66 tokens

Background fills — used by cards, banners, buttons and component containers.

--semantic-colour-surface-black
→ neutral-black
--semantic-colour-surface-darkest
→ slate-900
--semantic-colour-surface-extra-bold
→ slate-700
--semantic-colour-surface-bold
→ slate-600
--semantic-colour-surface-semi-bold
→ slate-500
--semantic-colour-surface-regular
→ slate-300
--semantic-colour-surface-light
→ slate-200
--semantic-colour-surface-extra-light
→ slate-100
--semantic-colour-surface-subtle
→ slate-10
--semantic-colour-surface-default
→ neutral-white
--semantic-colour-surface-brand-primary-darkest
→ cobalt-900
--semantic-colour-surface-brand-primary-bold
→ cobalt-700
--semantic-colour-surface-brand-primary
→ cobalt-600
--semantic-colour-surface-brand-semibold
→ cobalt-500
--semantic-colour-surface-brand-primary-light
→ cobalt-200
--semantic-colour-surface-brand-primary-extralight
→ cobalt-100
--semantic-colour-surface-brand-primary-subtle
→ cobalt-10
--semantic-colour-surface-error-darkest
→ crimson-900
--semantic-colour-surface-error-bold
→ crimson-700
--semantic-colour-surface-error-primary
→ crimson-600
--semantic-colour-surface-error-semibold
→ crimson-500
--semantic-colour-surface-error-light
→ crimson-200
--semantic-colour-surface-error-extralight
→ crimson-100
--semantic-colour-surface-error-subtle
→ crimson-10
--semantic-colour-surface-warning-extrabold
→ bumblebee-900
--semantic-colour-surface-warning-bold
→ bumblebee-700
--semantic-colour-surface-warning-primary
→ bumblebee-600
--semantic-colour-surface-warning-semibold
→ bumblebee-500
--semantic-colour-surface-warning-light
→ bumblebee-200
--semantic-colour-surface-warning-extralight
→ bumblebee-100
--semantic-colour-surface-warning-subtle
→ bumblebee-10
--semantic-colour-surface-info-extrabold
→ sky-900
--semantic-colour-surface-info-bold
→ sky-700
--semantic-colour-surface-info-primary
→ sky-600
--semantic-colour-surface-info-semibold
→ sky-500
--semantic-colour-surface-info-light
→ sky-200
--semantic-colour-surface-info-extralight
→ sky-100
--semantic-colour-surface-info-subtle
→ sky-10
--semantic-colour-surface-success-extrabold
→ emerald-900
--semantic-colour-surface-success-bold
→ emerald-700
--semantic-colour-surface-success-primary
→ emerald-600
--semantic-colour-surface-success-semibold
→ emerald-500
--semantic-colour-surface-success-light
→ emerald-200
--semantic-colour-surface-success-extralight
→ emerald-100
--semantic-colour-surface-success-subtle
→ emerald-10
--semantic-colour-surface-secondary-orange-extrabold
→ citrus-900
--semantic-colour-surface-secondary-orange-bold
→ citrus-700
--semantic-colour-surface-secondary-orange-semibold
→ citrus-600
--semantic-colour-surface-secondary-orange-primary
→ citrus-500
--semantic-colour-surface-secondary-orange-light
→ citrus-200
--semantic-colour-surface-secondary-orange-extralight
→ citrus-100
--semantic-colour-surface-secondary-orange-subtle
→ citrus-10
--semantic-colour-surface-secondary-pink-extrabold
→ fuchsia-900
--semantic-colour-surface-secondary-pink-bold
→ fuchsia-700
--semantic-colour-surface-secondary-pink-semibold
→ fuchsia-600
--semantic-colour-surface-secondary-pink-primary
→ fuchsia-500
--semantic-colour-surface-secondary-pink-light
→ fuchsia-200
--semantic-colour-surface-secondary-pink-extralight
→ fuchsia-100
--semantic-colour-surface-secondary-pink-subtle
→ fuchsia-10
--semantic-colour-surface-secondary-purple-extrabold
→ lavender-900
--semantic-colour-surface-secondary-purple-bold
→ lavender-700
--semantic-colour-surface-secondary-purple-semibold
→ lavender-600
--semantic-colour-surface-secondary-purple-primary
→ lavender-500
--semantic-colour-surface-secondary-purple-light
→ lavender-200
--semantic-colour-surface-secondary-purple-extralight
→ lavender-100
--semantic-colour-surface-secondary-purple-subtle
→ lavender-10

Border 48 tokens

Stroke colours for inputs, borders, dividers and decorative rules.

--semantic-colour-border-darkest
→ slate-900
--semantic-colour-border-dark
→ slate-800
--semantic-colour-border-medium
→ slate-600
--semantic-colour-border-regular
→ slate-300
--semantic-colour-border-muted
→ slate-200
--semantic-colour-border-light
→ slate-100
--semantic-colour-border-subtle
→ slate-10
--semantic-colour-border-default
→ neutral-white
--semantic-colour-border-brand-primary-bold
→ cobalt-700
--semantic-colour-border-brand-primary
→ cobalt-600
--semantic-colour-border-brand-primary-light
→ cobalt-200
--semantic-colour-border-brand-primary-extralight
→ cobalt-100
--semantic-colour-border-brand-primary-subtle
→ cobalt-10
--semantic-colour-border-error-bold
→ crimson-700
--semantic-colour-border-error-primary
→ crimson-600
--semantic-colour-border-error-light
→ crimson-200
--semantic-colour-border-error-extralight
→ crimson-100
--semantic-colour-border-error-subtle
→ crimson-10
--semantic-colour-border-warning-bold
→ bumblebee-700
--semantic-colour-border-warning-primary
→ bumblebee-600
--semantic-colour-border-warning-light
→ bumblebee-200
--semantic-colour-border-warning-extralight
→ bumblebee-100
--semantic-colour-border-warning-subtle
→ bumblebee-10
--semantic-colour-border-info-bold
→ sky-700
--semantic-colour-border-info-primary
→ sky-600
--semantic-colour-border-info-light
→ sky-200
--semantic-colour-border-info-extralight
→ sky-100
--semantic-colour-border-info-subtle
→ sky-10
--semantic-colour-border-success-bold
→ emerald-700
--semantic-colour-border-success-primary
→ emerald-600
--semantic-colour-border-success-light
→ emerald-200
--semantic-colour-border-success-extralight
→ emerald-100
--semantic-colour-border-success-subtle
→ emerald-10
--semantic-colour-border-secondary-orange-bold
→ citrus-700
--semantic-colour-border-secondary-orange-primary
→ citrus-500
--semantic-colour-border-secondary-orange-light
→ citrus-200
--semantic-colour-border-secondary-orange-extralight
→ citrus-100
--semantic-colour-border-secondary-orange-subtle
→ citrus-10
--semantic-colour-border-secondary-pink-bold
→ fuchsia-700
--semantic-colour-border-secondary-pink-primary
→ fuchsia-500
--semantic-colour-border-secondary-pink-light
→ fuchsia-200
--semantic-colour-border-secondary-pink-extralight
→ fuchsia-100
--semantic-colour-border-secondary-pink-subtle
→ fuchsia-10
--semantic-colour-border-secondary-purple-bold
→ lavender-700
--semantic-colour-border-secondary-purple-primary
→ lavender-500
--semantic-colour-border-secondary-purple-light
→ lavender-200
--semantic-colour-border-secondary-purple-extralight
→ lavender-100
--semantic-colour-border-secondary-purple-subtle
→ lavender-10

Icon 27 tokens

Foreground colours for SVG icons across the system.

--semantic-colour-icon-neutral-light
→ neutral-white
--semantic-colour-icon-neutral-dark
→ neutral-black
--semantic-colour-icon-muted
→ slate-400
--semantic-colour-icon-brand-primary-extrabold
→ cobalt-800
--semantic-colour-icon-brand-primary
→ cobalt-600
--semantic-colour-icon-brand-primary-subtle
→ cobalt-10
--semantic-colour-icon-error-extrabold
→ crimson-800
--semantic-colour-icon-error-primary
→ crimson-600
--semantic-colour-icon-error-subtle
→ crimson-10
--semantic-colour-icon-warning-extrabold
→ bumblebee-800
--semantic-colour-icon-warning-primary
→ bumblebee-600
--semantic-colour-icon-warning-light
→ bumblebee-10
--semantic-colour-icon-success-extrabold
→ emerald-800
--semantic-colour-icon-success-primary
→ emerald-600
--semantic-colour-icon-success-subtle
→ emerald-10
--semantic-colour-icon-info-extrabold
→ sky-800
--semantic-colour-icon-info-primary
→ sky-600
--semantic-colour-icon-info-subtle
→ sky-10
--semantic-colour-icon-secondary-orange-extrabold
→ citrus-800
--semantic-colour-icon-secondary-orange-primary
→ citrus-500
--semantic-colour-icon-secondary-orange-subtle
→ citrus-10
--semantic-colour-icon-secondary-pink-extrabold
→ fuchsia-800
--semantic-colour-icon-secondary-pink-primary
→ fuchsia-500
--semantic-colour-icon-secondary-pink-subtle
→ fuchsia-10
--semantic-colour-icon-secondary-purple-extrabold
→ lavender-800
--semantic-colour-icon-secondary-purple-primary
→ lavender-500
--semantic-colour-icon-secondary-purple-subtle
→ lavender-10

Static 3 tokens

Pure black, white and brand-static values that stay constant across light & dark themes.

--semantic-colour-static-black
→ neutral-black
--semantic-colour-static-white
→ neutral-white
--semantic-colour-static-green
→ emerald-600