Step 2 of 7

Color

Roles first. The page wash, ink, and one primary carry almost everything. The accent stays rare, and semantic colours describe state rather than decorate.

Accent must contrast with primary This brand pairs violet with gold (near-complementary) so a rare CTA can cut through a cool page. Amber stays on warning and red on danger, so brand accent never doubles as status. Brand roles and status roles stay separate; see Material Design 3 colour roles and the Adobe Color wheel for harmony types.

Brand

primary Links, primary action, subheads
primary-deep Hover and pressed
primary-soft Soft fills, chips, selected
accent One CTA per view; contrasts with primary
surface-dark Header chrome, dark callouts, hero bands

Brand stripe

The 5px rule under the live site header. Gold to magenta to blue. A divider under dark chrome, not a wash. Token --cds-brand-stripe, class .cds-brand-stripe.

Header chrome

Paper and ink

paper Default page wash
paper-deep Alternating bands
surface Cards, inputs
panel Grouping without a shadow
panel-soft Notes, code paper, table heads
ink Body text
ink-deep Headings, ink on accent fills
ink-muted Captions, helper text

Semantic

State only. Do not borrow danger red for emphasis or success green for brand decoration.

success
warning Warm state colour, not brand
danger
info Aliased to primary in the demo

Primary ramp

Five steps for charts, illustrations, and progressive emphasis. Use it deliberately, not as general decoration, and keep chart series far enough apart to stay legible at small sizes.

--cds-primary-1 … --cds-primary-5

Pairing rules

Contrast is a gate, not a preference Body text and button labels need WCAG AA (4.5:1). AA Large (3:1) is for display sizes only (≥18pt / 14pt bold). Text on a filled surface uses its paired on-* token. Recheck the matrix if you change a fill.
Fill Text token Sample
primary on-primary Sign in
accent on-accent Book a call
surface-dark on-dark Callout title
primary-soft primary-deep Selected

Accessibility matrix

Rows are backgrounds. Columns are text colours. Each cell is the live pair plus its WCAG 2 ratio. Ratios are computed from the --cds-* tokens on this page, so a customize run updates the grid. Look at on-primary on primary and primary-deep — that is the primary button at rest and on hover.

Contrast ratios for design kit color tokens

Prefer AAA or AA for body copy, labels, and buttons. AA large is headings and oversized stats only. Fail means pick another pair.