Skip to Content
PlatformReferenceBrand and theme

Brand and theme

The brand kit (version 1.0, copied into shared/brand/ on 2026-09-13) fixes seven colours, two type families, light and dark semantic tokens, four status pairs and a 4/8 px geometry. forge.config.json carries the palette as CSS custom-property names; web/app/globals.css, docs/app/globals.css and deck/src/tokens.css are generated from it and are identical (check-tokens: ok (80 token values match), repo-derived 2026-09-13).

The seven brand colours

NameHexWhere it is used
Midnight#121C38text on light surfaces, dark surface, the rail
Cobalt#2347F2action colour in the light theme, Evidence accent
Ice#E8EEFFmuted surface in light, action colour and text in dark
Canvas#F7F9FDlight page background
Slate#515F77muted text, dark border, Review accent
Silver#D8E0EDlight border and divider, Progress tint
White#FFFFFFcards in light, text on Midnight and Cobalt

Cobalt is a brand accent on Midnight (2.61:1), never text or an icon in the dark theme; the dark action colour is Ice with Midnight labels.

Token mapping

TokenLightDark
--backgroundCanvas #F7F9FDMidnight #121C38
--foregroundMidnight #121C38White #FFFFFF
--cardWhite #FFFFFFMidnight #121C38
--mutedIce #E8EEFF#1C2848 (lifted Midnight)
--muted-foregroundSlate #515F77Ice #E8EEFF
--borderSilver #D8E0EDSlate #515F77
--primaryCobalt #2347F2Ice #E8EEFF
--primary-hover#1B39C4 (hover step of Cobalt)White #FFFFFF
--primary-foregroundWhite #FFFFFFMidnight #121C38
--destructive#A32E3B#A32E3B
--sidebarWhite #FFFFFFMidnight #121C38
--sidebar-accentIce #E8EEFF#1C2848
--rail-bgMidnight #121C38#0C1329 (one step below Midnight)
--rail-fgWhite #FFFFFFWhite #FFFFFF
--rail-hover, --rail-active#1C2848, #26345C#1C2848, #26345C

The four kit status pairs are identical in both themes: pass #166B4F on #E7F3EB, review #825600 on #FFF3D6, fail #A32E3B on #FCECEE and info #245F93 on #EAF2FA. The fifth token pair, neutral, is Slate #515F77 on Ice #E8EEFF from the brand palette. A status colour always carries a text label; the action colour is never the fail colour.

Product accents are tonal steps of the palette (no new hues, ADR 0007):

ProductLight accent / tint / textDark accent / tint / text
Evidence#2347F2 / #E8EEFF / #1B39C4#7D94FF / #2A3664 / #E8EEFF
Plans#1B39C4 / #DDE4FB / #14289A#A9B8FF / #333E64 / #E8EEFF
Review#515F77 / #E6EAF1 / #3F4B60#A7B4CC / #333D59 / #E8EEFF
Progress#121C38 / #D8E0ED / #121C38#D8E0ED / #3E4760 / #E8EEFF

Dark tints are 22 % mixes of the dark accent over Midnight, stored as hex. Product accents never carry status meaning; product identity rests on the kit icon and the label.

Measured contrast

Kit ratios (WCAG sRGB relative luminance, shared/brand/tokens/contrast-ratios.json, verified 2026-09-13) and the token measurement (web/scripts/check-contrast.mjs --verbose, repo-derived 2026-09-13: check-contrast: ok (90 pairs across 2 themes; text >= 4.5:1, icons >= 3:1; lowest 5.57:1 for "status neutral on its background" in light)). Thresholds: 4.5:1 for ordinary text, 3:1 for large text and essential non-text.

PairRatioUse
Midnight on White16.81:1ordinary text
Midnight on Canvas15.95:1ordinary text
Midnight on Ice14.50:1ordinary text
Ice on Midnight14.50:1ordinary text (dark theme)
White on Cobalt6.45:1action label
Cobalt on White6.45:1ordinary text
Cobalt on Canvas6.12:1ordinary text
Cobalt on Ice5.56:1ordinary text, Evidence icon on its tint
Slate on Ice5.57:1status neutral on its background (lowest token pair)
#1B39C4 on Canvas8.20:1Evidence text token
#7D94FF on Midnight6.05:1dark Evidence icon
#A7B4CC on Midnight8.04:1dark Review icon
Cobalt on Midnight2.61:1decorative only
Silver on White1.33:1decorative divider only
Slate on Midnight2.60:1decorative only

Logo rules

From shared/brand/README.md:

  • Horizontal primary lockup by default on White, Canvas or Ice; reversed lockup on Midnight; white on Cobalt; single-colour assets for one-ink contexts. This site shows the primary lockup in light mode and the reversed lockup in dark mode.
  • Preserve the open aperture, the detached square, the square corners and the proportions. No stretching, rotation, rounding, outlines, shadows or gradients.
  • Clear space at least one quarter of the symbol width around the whole lockup.
  • Minimum digital sizes: horizontal 140 px wide, symbol 24 px, tagline lockup 320 px; the supplied favicon at 16 px.
  • Product icons: source Evidence, modules Plans, review Review, program Progress; connect connections, history audit, permission roles, focus questions.

The brand origin line is “A precise open frame and an offset focal square: evidence coming into focus.”

Typography and geometry

AspectValue
Heading familyIBM Plex Sans (variable, OFL), --font-heading; display 64/72 500, h1 40/48 500 (-2 % tracking), h2 28/36 600 (-1 %)
Body familyInter (variable, OFL), --font-body; body 16/24 400, label 14/21 500, caption 12/18 500; tabular numerals on tables
Control radius--shape-radius: 4px
Card radius--radius-panel: 8px
Graphic radius--radius-graphic: 0
Motion--motion-fast 120 ms, --motion-normal 180 ms, --motion-slow 240 ms, --ease: cubic-bezier(0.2, 0, 0, 1); reduced motion sets all three to 0
Focus--focus-ring: 2px solid var(--primary), --focus-offset: 3px
Spacing4 px increments, 8 px primary rhythm

Source: forge.config.json, docs/app/globals.css, web/app/globals.css, shared/brand/README.md, shared/brand/tokens/accessibility.md, shared/brand/tokens/contrast-ratios.json, decisions/0007-theme-tokens-and-geometry.md, CLAIMS-REGISTER.md