productanywhere · design system · glm-5.3 · phase 1

§1 Palette

Hue is lane. Saturation is maturity.

Every colour in this system is one of two things: a lane hue — blue for The Leader, teal for The Expert, purple for The Builder, fixed and never overloaded — or a neutral. On each hue, a four-step ladder encodes maturity: 01 signal → 02 pilot → 03 receipt → 04 proven. The same ladder renders receipt confidence, engagement stage, concept lineage and funnel position. It is measured, not felt: every ratio below was computed against the theme's ground (WCAG 2.1 relative luminance), and the swatches on this page are the live tokens — switch the theme and watch the ladder invert while the hues hold.

Each step shows light hex | dark hex with its contrast on that theme's ground (paper #FAFAF9 / ink #0C0F14). Text-safety: body ≥ 4.5:1 · UI & large ≥ 3:1 · fill-only below that.

The Leader — blue

executive product leadership · hue ≈ 208°
--pa-blue-1 · 01 signal #AAC6DF | #053865
1.70:1 | 1.61:1
fill only, both themes
--pa-blue-2 · 02 pilot #1073CA | #0963B2
4.65:1 | 3.14:1
light: body · dark: UI + large
--pa-blue-3 · 03 receipt #0963B2 | #117EDD
5.85:1 | 4.62:1
body, both themes
--pa-blue-4 · 04 proven #053865 | #AAC6DF
11.42:1 | 10.83:1
body, both themes

The Expert — teal

productized consulting · hue ≈ 173°
--pa-teal-1 · 01 signal #ABDED8 | #016155
1.42:1 | 2.60:1
fill only, both themes
--pa-teal-2 · 02 pilot #2DB4A3 | #018171
2.46:1 | 4.00:1
light: fill only · dark: UI + large
--pa-teal-3 · 03 receipt #018171 | #2DB4A3
4.59:1 | 7.47:1
body, both themes
--pa-teal-4 · 04 proven #016155 | #ABDED8
7.07:1 | 12.95:1
body, both themes

The Builder — purple

active venture building · hue ≈ 271°
--pa-purple-1 · 01 signal #BA92DC | #460A7B
2.44:1 | 1.45:1
fill only, both themes
--pa-purple-2 · 02 pilot #7F27CC | #870FEF
6.56:1 | 3.06:1
light: body · dark: UI + large
--pa-purple-3 · 03 receipt #690CBA | #A25BE0
8.51:1 | 4.67:1
body, both themes
--pa-purple-4 · 04 proven #460A7B | #BA92DC
12.65:1 | 7.53:1
body, both themes

Constants

--pa-brand #0A5DB2 | #0D7BEC · 6.24:1 | 4.63:1
the wordmark blue = the Leader core. Light value is exact and must not drift; dark is the lifted text variant.
--pa-teal-logo #019380 · exact both themes
3.83:1 on paper — fill only. The literal logo teal, for surfaces, never words.

Neutrals

Grounds adopt the addendum's measured pair — paper #FAFAF9, ink #0C0F14 — so every published ratio is reproducible. Ink steps: --ink and --ink-soft ≥ 7:1 (body), --ink-mute ≥ 4.5:1 (muted body), --ink-faint large-text/labels only. Lines sit in a quiet 1.15–3:1 band: structural dividers, never text.

--ground#FAFAF9 | #0C0F14
--surface#FFFFFF | #12161D
--surface-2#F3F3F0 | #171D27
--line#E5E5E1 | #242B38
--line-2#C9C9C3 | #3E4756
--ink#0C0F14 | #ECEFF3
--ink-mute#5B6371 | #868F9D

§1.1 Why light is canonical — in numbers

The ladder inverts on a dark ground.

Maturity means "strongest = deepest". Measured against white, that holds: the deep facets lead at 11.67:1, 9.86:1, 7.33:1 while the tints nearly vanish. On a dark ground the same hexes collapse — 1.62:1, 1.92:1, 2.58:1, all failing every threshold — and the tints become the strongest. Shipping the light ladder on dark would render "most mature" as "least visible", which is semantically backwards. So the dark theme keeps every hue and reverses the direction: step 04 becomes the strongest tint. The three places the reuse failed AA are lifted minimally at fixed hue and disclosed in the table.

Facet (logo-measured)on whiteon #0D1117reading
blue dark #053A6511.67:11.62:1strongest → invisible
purple deep #530CBA9.86:11.92:1strongest → failing
teal dark #01615C7.33:12.58:1strongest → failing
teal light (mint) #ABDED01.49:112.70:1nearly invisible → strongest
purple light (lavender) #BC92DC2.54:17.46:1failing → strong
Dark-theme lifts (fixed hue + saturation)wasnowwhy
blue 03 #1073CA → #117EDD3.96:14.62:1step 03 carries body text
purple 02 #690CBA → #870FEF2.16:13.06:1step 02 must reach the UI/large band
purple 03 #7F27CC → #A25BE02.80:14.67:1step 03 carries body text

9 of 12 dark facets are the logo hexes reused exactly; teal's dark ladder is untouched in all four steps. Source: KIMI-K3-ADDENDUM.md §2/§4/§5, ratios recomputed and asserted by gen_tokens.py.

§1.2 Forbidden combinations

Stated, so nobody ships them by hope.

CombinationRatioRule
teal 02 as text on paper2.46:1fill only in light — the one asymmetry the logo forces
#019380 as body text anywhere light3.83:1the exact logo teal is a surface colour, never words
any lane's 01 step as text1.42–2.60:1step 01 is a fill in both themes
deep facets as text on dark1.45–2.60:1they are the dark theme's quiet fills, not type
dark-theme 02 steps as body text3.06–4.00:1UI + large text only; body waits for step 03

§2 Typography

A voice, not a fallback stack.

Every prior concept shipped the same three system stacks — no typographic identity between them. This system has exactly three faces, each earning its place: a geometric display that shares the wordmark's skeleton, a serif that carries the editorial weight the structure (kimi-k3's) is built on, and one mono for the ledger. Two weights of display — 300 and 700 — are the whole pairing the wordmark uses; headlines may emphasise a line the same way product/anywhere does.

facespecimenwhy this one
--font-display
Montserrat 300 · 400 · 700
Architecture before interface. The measured wordmark match — near-monoline geometric skeleton with a double-storey a at a 1:2.5 light/bold stroke ratio (addendum §3); the masthead and the headlines cannot fight the mark if they are the mark's family.
--font-text
Source Serif 4 · 400 · 600 · italic
Receipts over claims — measurable deltas, stated with their own limits. The site's skeleton is editorial (numbered sections, fact sheets, a ledger), and a workhorse serif with true italics gives that register at 16–18px without turning precious at small sizes.
--font-mono
IBM Plex Mono 400 · 500
proof/absa-142m-faq-deflection · confidence: medium-high Proof slugs, eyebrows and ledger metadata want machine-voiced, unambiguous glyphs; Plex reads cleanly at the 12px floor where metadata lives.

The wordmark, reconstructed from tokens

productanywhere

Montserrat 300 / 700 — the measured closest free match to the logo's lettering. Verify by overlay against the asset before Phase 3 commits it to the masthead.

Scale

steprenderedassignment
--fs-56 / --lh-56Scaling productshero line, display 300
--fs-56 / --lh-56Govern the AI.hero emphasised line, display 700
--fs-32 / --lh-32Section headlinedisplay 700
--fs-24 / --lh-24Sub-head, lane titledisplay 700
--fs-20 / --lh-20Card title, serif semiboldtext 600
--fs-18 / --lh-18Lede prose — the register of the receipts.text 400
--fs-16 / --lh-16Body prose, the default reading size.text 400
--fs-14 / --lh-14Table cells, secondary prose.text 400
--fs-12 / --lh-12EYEBROW · TOKEN · PROOF/SLUGmono 400/500 — the floor

Measure: prose never exceeds --measure (68ch). Ledger tables and the concept lab may exceed the measure, but they scroll inside their own container — the page body never scrolls sideways at any width. Nothing renders below --fs-12.

Loading: Google Fonts with display=swap and the real fallback stacks in the tokens; Phase 3 self-hosts woff2 with preload (open question 1 in STATE.md).