Skip to main content
Official government website

Colour

Use colour through semantic tokens; reach for the primitive ramp only for a specific shade.

Type
Token reference
On this page

Always apply colour through tokens, never hex values. Start with the semantic tokens: they name a job, stay correct if the palette is retuned, and cover almost every case. Drop down to a primitive only when you genuinely need a specific shade with no semantic meaning.

Every swatch, value and contrast ratio on this page is generated from the design system’s tokens.css at build time, so what you see is what ships.

Semantic colours

PreviewTokenResolves toValueOn whiteUse for
--govbb-color-brand--govbb-blue-40#00267f13.3:1 AAultramarine
--govbb-color-brand-accent--govbb-yellow-40#ffc7261.6:1 fails AAgold
--govbb-color-ink--govbb-black-00#00021.0:1 AA
--govbb-color-surface--govbb-white-00#fff1.0:1 fails AA
--govbb-color-muted--govbb-grey-70#5959597.0:1 AA
--govbb-color-interactive--govbb-teal-80#0e5f647.4:1 AAprimary action, checked fill
--govbb-color-interactive-active--govbb-teal-90#0a454910.7:1 AA
--govbb-color-focus--govbb-teal-40#30c0c82.2:1 fails AAfocus ring
--govbb-color-focus-danger--govbb-red-40#ff6b6b2.8:1 fails AA
--govbb-color-error--govbb-red-80#a42c2c7.1:1 AAinvalid state
--govbb-color-neutral--govbb-grey-20#e0e4e91.3:1 fails AAsecondary fill, dividers
--govbb-color-highlight--govbb-blue-10#e5e9f21.2:1 fails AAselected surfaces
--govbb-color-tertiary--govbb-green-80#00654a7.1:1 AAtertiary action

Primitive ramp

Primitives mirror the Figma variable ramp. Each family runs from a dark 00 shade through pale tints (10, 40) to the saturated 100. The last column records which semantic token, if any, aliases the shade.

Neutrals

PreviewTokenValueOn whiteAliased by
--govbb-white-00#fff1.0:1 fails AA--govbb-color-surface
--govbb-black-00#00021.0:1 AA--govbb-color-ink
--govbb-grey-20#e0e4e91.3:1 fails AA--govbb-color-neutral
--govbb-grey-70#5959597.0:1 AA--govbb-color-muted

Blue

PreviewTokenValueOn whiteAliased by
--govbb-blue-10#e5e9f21.2:1 fails AA--govbb-color-highlight
--govbb-blue-20#99a8cc2.4:1 fails AA
--govbb-blue-40#00267f13.3:1 AA--govbb-color-brand
--govbb-blue-60#001e6515.3:1 AA
--govbb-blue-80#00164a17.3:1 AA
--govbb-blue-90#000e3019.0:1 AA

Teal

PreviewTokenValueOn whiteAliased by
--govbb-teal-10#eaf9f91.1:1 fails AA--govbb-link-hover-bg
--govbb-teal-20#ace6e91.4:1 fails AA
--govbb-teal-40#30c0c82.2:1 fails AA--govbb-color-focus
--govbb-teal-60#1a777d5.3:1 AA
--govbb-teal-80#0e5f647.4:1 AA--govbb-color-interactive
--govbb-teal-90#0a454910.7:1 AA--govbb-color-interactive-active

Green

PreviewTokenValueOn whiteAliased by
--govbb-green-10#e9f9f31.1:1 fails AA
--govbb-green-20#a5e5ce1.4:1 fails AA
--govbb-green-40#1fbf842.4:1 fails AA
--govbb-green-60#1090674.0:1 AA large only
--govbb-green-80#00654a7.1:1 AA--govbb-color-tertiary
--govbb-green-90#004d389.9:1 AA

Red

PreviewTokenValueOn whiteAliased by
--govbb-red-10#fff0f01.1:1 fails AA
--govbb-red-20#ffc4c41.5:1 fails AA
--govbb-red-40#ff6b6b2.8:1 fails AA--govbb-color-focus-danger
--govbb-red-60#bf3e3e5.3:1 AA
--govbb-red-80#a42c2c7.1:1 AA--govbb-color-error
--govbb-red-90#961e1f8.4:1 AA

Yellow

PreviewTokenValueOn whiteAliased by
--govbb-yellow-10#fff9e91.1:1 fails AA
--govbb-yellow-20#ffe9a81.2:1 fails AA
--govbb-yellow-40#ffc7261.6:1 fails AA--govbb-color-brand-accent
--govbb-yellow-60#f0b52c1.9:1 fails AA
--govbb-yellow-80#e8a8332.1:1 fails AA
--govbb-yellow-90#c98d2a2.9:1 fails AA

Pink

PreviewTokenValueOn white
--govbb-pink-10#fff4fb1.1:1 fails AA
--govbb-pink-20#ffd4f01.3:1 fails AA
--govbb-pink-40#ff94d92.0:1 fails AA
--govbb-pink-60#da52983.7:1 AA large only
--govbb-pink-80#ad11577.0:1 AA
--govbb-pink-90#820d4210.1:1 AA

Purple

PreviewTokenValueOn white
--govbb-purple-10#f6eff91.1:1 fails AA
--govbb-purple-20#ddc0e91.6:1 fails AA
--govbb-purple-40#a962c74.0:1 AA large only
--govbb-purple-60#7a43966.8:1 AA
--govbb-purple-80#4a235a12.5:1 AA
--govbb-purple-90#37194415.2:1 AA

Accessibility

Every text and background combination, and every interface graphic, must meet SC 1.4.3 Contrast (Minimum) for text and SC 1.4.11 Non-text Contrast for interface graphics: 4.5:1 for body text, 3:1 for large text and interface graphics. The “on white” column above shows each shade’s computed ratio against a white background. As a rule the dark 00 shades pass as text on white (except --govbb-yellow-80); the pale 10 and 40 tints and the vivid 100 shades do not, so treat those as backgrounds and accents. Check any combination the ratios above do not already cover before you ship it.