Skip to content
Theme

Colour

Semantic colours, each with its high-contrast form. Serre is dark only. Every swatch is the live CSS variable inside a themed region; every ratio is computed from the token values, the same numbers the contrast test holds to WCAG 2.2.

Values are OKLCH in tokens/color.tokens.json, which refers to the primitive ramps in palette.tokens.json. Each token compiles to one value, with a prefers-contrast: more override.

Surfaces

color.surface

#101010
#000000

The page background.

color.surfaceRaised

#1c1d1f
#101010

A card or panel set on the page.

color.surfaceOverlay

#202124
#101010

Menus, popovers, dialogs and toasts: whatever floats above the page.

color.layer1

#1c1d1f
#101010

The first nested region: a sidebar, a table header.

color.layer2

#232529
#1c1d1f

A region inside layer 1, or the hover state of one.

color.layer3

#2e3238
#202124

The deepest nesting, or the pressed state of layer 2.

color.backdrop

#000000b3
#000000cc

The scrim behind a modal dialog or sheet.

color.highlight

#ffffff0f
#ffffff00

The inset top edge that lifts a raised item off the page.

Text

color.text

#fafafb18.2:1 Pass
#ffffff21.0:1 Pass

Body text and headings. Checked against surface: at least 4.5:1.

color.textMuted

#b5bdc910.0:1 Pass
#edeff318.2:1 Pass

Secondary text: captions, metadata, hints. Checked against surface: at least 4.5:1.

color.textSubtle

#929cab4.6:1 Pass
#d3d8df11.2:1 Pass

The quietest readable text: placeholders, overlines, column headers, timestamps. Still 4.5:1 on every surface. Checked against layer3: at least 4.5:1.

color.textDisabled

#505967
#505967

Text of a disabled control. Exempt from contrast minimums, as WCAG allows.

Action

color.action

#2e3238
#ffffff

The primary action's fill: an ink grey, so blue stays for links, focus and selection.

color.onAction

#edeff311.2:1 Pass
#00000021.0:1 Pass

Text and icons on the primary action. Checked against action: at least 4.5:1.

color.actionBorder

#505967
#ffffff

The primary action's edge. Decorative: the fill already contrasts with the surface.

Borders and focus

color.border

#2e3238
#929cab

Dividers and the edges of regions. Decorative: not held to a contrast minimum.

color.borderSubtle

#232529
#505967

Quieter dividers inside a region.

color.borderStrong

#383e47
#ffffff

Emphasised edges and link underlines.

color.borderControl

#929cab6.9:1 Pass
#ffffff21.0:1 Pass

The boundary of a form control: at least 3:1 against every surface. Checked against surface: at least 3:1.

color.focus

#709ff57.2:1 Pass
#94b9ff10.6:1 Pass

The focus ring. Checked against surface: at least 3:1.

Accent

color.accent

#709ff57.2:1 Pass
#94b9ff10.6:1 Pass

Links, focus and selection. The primary action is ink, not accent: see action. Checked against surface: at least 4.5:1.

color.onAccent

#1010107.2:1 Pass
#00000010.6:1 Pass

Text and icons on an accent fill. Checked against accent: at least 4.5:1.

color.accentSubtle

#1a22336.0:1 Pass
#1a22338.1:1 Pass

A tinted background for selection and emphasis; text on it uses accent. Checked against accent: at least 4.5:1.

Status

color.danger

#ff6f6a7.0:1 Pass
#ffaba411.6:1 Pass

Errors and destructive actions. Checked against surface: at least 4.5:1.

color.onDanger

#1010107.0:1 Pass
#00000011.6:1 Pass

Text and icons on a danger fill. Checked against danger: at least 4.5:1.

color.dangerSubtle

#3919185.8:1 Pass
#3919188.8:1 Pass

Background of an error message; text on it uses danger. Checked against danger: at least 4.5:1.

color.warning

#f5b90010.7:1 Pass
#ffd57915.0:1 Pass

Warnings: something needs attention but nothing failed. Checked against surface: at least 4.5:1.

color.onWarning

#10101010.7:1 Pass
#00000015.0:1 Pass

Text and icons on a warning fill. Checked against warning: at least 4.5:1.

color.warningSubtle

#32240a8.5:1 Pass
#32240a10.8:1 Pass

Background of a warning; text on it uses warning. Checked against warning: at least 4.5:1.

color.success

#0fc27b8.2:1 Pass
#88e9b314.4:1 Pass

Success and completion. Checked against surface: at least 4.5:1.

color.onSuccess

#1010108.2:1 Pass
#00000014.4:1 Pass

Text and icons on a success fill. Checked against success: at least 4.5:1.

color.successSubtle

#0f2d1f6.4:1 Pass
#0f2d1f10.1:1 Pass

Background of a success message; text on it uses success. Checked against success: at least 4.5:1.

color.info

#48c1e99.1:1 Pass
#8cdffb14.1:1 Pass

Neutral information. Checked against surface: at least 4.5:1.

color.onInfo

#1010109.1:1 Pass
#00000014.1:1 Pass

Text and icons on an info fill. Checked against info: at least 4.5:1.

color.infoSubtle

#0c2b357.1:1 Pass
#0c2b3510.0:1 Pass

Background of an information message; text on it uses info. Checked against info: at least 4.5:1.