Foundation · F2 · Color

Cream 60 · Ink 30 · Poppy 8 · +2

Verified against Brand Book §10.7. Click any swatch to copy its hex. Toggle the theme to confirm every role flips by meaning, not by duplicated CSS.

§10.7

Brand primitives

The six frozen brand colors. The ratio they hold — roughly 60 / 30 / 8 / 2 — is what makes the brand recognisable before the logo.

Canvas
Cream#F7F1E4 · 60%
Type
Ink#1A140E · 30%
Accent
Poppy#FF4A1C · 8%
Contrast
Pine#123A33
Secondary
Ochre#E9A53C
Neutral
Warm grey#B7AE9A
§10.7

Working ramps

Each brand color extends into a small working ramp for states and surfaces — derived, never invented at use time. Poppy 500 is frozen; the rest are state shades.

50100200300rulerule-2
400600700800900ink
tint300500600700poppy
Roles

Semantic roles — flip by meaning

Components consume these, never raw hex. Toggle the theme above: the swatch column re-renders live because every role is theme-aware.

TokenLiveLightDarkUse
--surface-page#F7F1E4#1A140EPage canvas
--surface-raised#FFFFFF#221C15Cards, fields
--text-primary#1A140E#F7F1E4Body & headings
--text-muted#8A8273cream 50%Captions
--accent#FF4A1C#FF4A1CThe scalpel
--text-accent#B23A1A#FF7A52Poppy text (passes contrast)
--border-default#C7BFACcream 20%Card / input borders
--focus-ring#FF4A1C#FF4A1C3px focus halo
Status

Status — its own ramp, never poppy

Status communicates with its own colors and always pairs an icon/dot with text — never color alone.

Success · passed Warning · review Danger · failed Info · note Live · accent
§Imagery 03

Data-viz order — stop at the story

Assign series in order. One poppy win, then context. More than four colors means it's two charts.

01 Poppythe win
02 Inkcontext
03 Pine2nd
04 Ochre3rd
05 Greyrest
Gate

Accent discipline & contrast

Poppy is a scalpel — one focal use per view, never a surface fill, never body text. And raw poppy fails contrast for small text on cream, so poppy text uses --text-accent.

UseAllowed?Rule / contrast
Primary CTA background✓ yesOne primary action per view
Body text in raw poppy✕ no#FF4A1C on cream ≈ 2.9:1 — fails. Use --text-accent (#B23A1A → 4.8:1)
LinkslimitedPoppy underline, not poppy fill
One data series✓ yesLabeled, not color-only
Status color✕ noStatus uses its own ramp
Full-surface background✕ noPoppy never fills a surface (≤ ~8% of a view)
Focus ring✓ yes3px halo — the signature focus cue