Two meanings, one primitive: hue says which lane, saturation says how far.
This page is the ProductAnywhere design system and its own live proof. Every rule
stated below is rendered by the page you are reading, in both themes, from a single token file.
Modelkimi-k3
Artefactstokens.css · design-system.html
Date20 Aug 2026
StatusPhase 1 of 3 — complete
Sec. 01Colour
The ladder is the brand
Colour carries exactly two meanings and never a third. Hue is the lane;
saturation is the maturity. If a colour in this system is saying anything else, it is wrong.
Hue = lane, permanently. Blue is The Leader (executive product leadership),
teal is The Expert (productized consulting), purple is The Builder (active venture building).
A hue never decorates, never signals status, never means “accent”. The primary brand blue
is the wordmark colour, and it is the same value as the mark’s mid-blue facet — the primary
brand colour and the Leader lane’s core colour are one colour.
Saturation = maturity, orthogonally. Each lane has exactly four steps, named for
what the maturity means: 01 signal — early, unproven; 02 pilot — in
motion, not yet evidenced; 03 receipt — evidence exists; 04 proven —
hardened, repeatable. One ladder renders receipt confidence, engagement stage, concept-lab lineage
and funnel position. The logo natively supplies three facets per lobe and the lobes are not parallel
(blue has no pale tint), so the ladders are normalised to four shared lightness targets; the ramps
below are anchored on the measured facets, and the wordmark blue is exact.
The three lane ladders
Swatches are facet fills — what a tab’s saturation slot looks like at each step. Toggle the
theme to see the same ladder re-mapped for dark; the table under each lane publishes the computed
ratios.
--pa-leader-1
01 signal · fill only
--pa-leader-2
02 pilot · body text (light)
--pa-leader-3
03 receipt · body text (light)
--pa-leader-4
04 proven · body text (light)
--pa-expert-1
01 signal · fill only
--pa-expert-2
02 pilot · fill only
--pa-expert-3
03 receipt · body text (light)
--pa-expert-4
04 proven · body text (light)
--pa-builder-1
01 signal · fill only
--pa-builder-2
02 pilot · body text (light)
--pa-builder-3
03 receipt · body text (light)
--pa-builder-4
04 proven · body text (light)
Contrast, light theme — every step, computed (WCAG 2.1)
Grounds: paper (the light ground) and ink (the dark ground / light-theme text colour).
Ratios computed, not estimated. “Body” = AA at body size (≥4.5:1). Hex values live in
tokens.css — by rule, nowhere else.
Token
Step
on paper
on ink
May carry
--pa-blue-1
01 signal
1.70:1
10.83:1
fill only
--pa-blue-2
02 pilot
4.65:1
3.96:1
body on paper
--pa-blue-3
03 receipt
5.85:1
3.14:1
body on paper
--pa-blue-4
04 proven
11.42:1
1.61:1
body on paper
--pa-teal-1
01 signal
1.42:1
12.95:1
fill only
--pa-teal-2
02 pilot
2.46:1
7.47:1
fill only
--pa-teal-3
03 receipt
4.59:1
4.00:1
body on paper
--pa-teal-4
04 proven
7.07:1
2.60:1
body on paper
--pa-purple-1
01 signal
2.44:1
7.53:1
fill only
--pa-purple-2
02 pilot
6.56:1
2.80:1
body on paper
--pa-purple-3
03 receipt
8.51:1
2.16:1
body on paper
--pa-purple-4
04 proven
12.65:1
1.45:1
body on paper
Contrast, dark theme — the ladder inverted
The measurement is blunt: on the ink ground, the light theme’s deep “proven” facets
collapse to 1.45–2.60:1 — the most mature step becomes the least visible, which is semantically
backwards. So dark re-maps the ladder’s direction: step 04 becomes the lightest tint,
step 01 the deepest fill. Hue never changes; a Leader tab is blue in both themes. These are the
dark token values’ computed ratios against the dark ground:
Token (dark value)
Step
on ink ground
May carry
--pa-blue-1
01 signal
2.72:1
fill only
--pa-blue-2
02 pilot
3.96:1
fill / large text
--pa-blue-3
03 receipt
7.26:1
body
--pa-blue-4
04 proven
10.83:1
body
--pa-teal-1
01 signal
2.60:1
fill only
--pa-teal-2
02 pilot
4.00:1
fill / large text
--pa-teal-3
03 receipt
7.47:1
body
--pa-teal-4
04 proven
12.95:1
body
--pa-purple-1
01 signal
2.31:1
fill only
--pa-purple-2
02 pilot
2.86:1
fill only
--pa-purple-3
03 receipt
4.82:1
body
--pa-purple-4
04 proven
7.57:1
body
Forbidden — these fail and must not ship
Body text in any 01 step, and in light-theme --pa-teal-2 (2.46:1) or
--pa-purple-1 (2.44:1) — all below AA on paper. Fills only.
The exact logo teal mid (--pa-teal-logo-mid) for text — 3.66:1 on
paper. Kept as a fill-only token for brand-fidelity surfaces; the Expert lane’s text teal is
darkened to --pa-teal-3 (4.59:1). This asymmetry is deliberate: step 02 is not a text
colour in every lane.
White text on any 01/02 fill — 1.48:1 to 2.57:1. Filled selected states use the
body-rated steps with --pa-on-facet, which is computed per theme.
--pa-ink-faint for body copy — 4.40:1 on paper. Large display text
and decorative metadata only.
The light ladder’s direction on a dark ground. Deep facets there run
1.45–2.60:1. The dark token block exists precisely so no one re-maps by hand.
A 1px box around a tab. The mark separates its facets with bare ground —
4–5% gaps, no strokes. Tabs are separated by ground and surface steps, never by borders. Rules
and hairlines are reserved for structural dividers: section boundaries, table rows, list rows.
Neutrals
Paper ground, white tab planes, a warm recessed step, hairlines for structure only, and a
two-step ink ramp. Light theme: ink 18.38:1 and muted ink 6.58:1 on paper. Dark theme: ink 16.20:1
and muted ink 8.37:1 on the ink ground. Elevation exists only in the light theme; dark separates by
surface steps, never by shadow.
Sec. 02Typography
A voice, at last
Every prior concept shipped the same fallback stacks. This brand speaks in
three faces, each with one job.
Display — Montserrat 300 / 500 / 600 / 700
Scaling products, proving it with ventures.
Why: the wordmark’s own family — geometric-circular
skeleton with the double-storey a that rules out Futura, Century Gothic and Poppins —
so the masthead and the headlines speak the same letterforms as the logo. Fallback:
"Avenir Next", "Century Gothic", Futura, "Segoe UI", system-ui, sans-serif.
Text — Source Serif 4, 400 / 600, optical sizing
Receipts over claims. Every number carries the limit of its own attribution, stated before anyone has to ask for it.
Why: the content model is a ledger of evidence, and long-form
editorial serif is what evidence reads like — measured, argued, dated — where a sans would read
as marketing. Fallback: "Iowan Old Style", Palatino, Georgia, "Times New Roman", serif.
Why: engineered, tabular and quiet — eyebrows, proof slugs,
ratios and confidence fields line up like columns in a ledger, which is exactly what they are.
Fallback: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace.
Scale, line-heights, measure
Token
Size
Line-height
Use
Measure limit
--pa-text-hero
54px
1.08
the home hero only
18ch headline
--pa-text-h1
39px
1.2
page titles
—
--pa-text-h2
31px
1.2
section headlines
—
--pa-text-h3
25px
1.2
sub-heads, card titles
—
--pa-text-lede
21px
1.5
section ledes
52ch
--pa-text-body
17px
1.65
long-form serif text
66ch
--pa-text-small
15px
1.5
secondary text, buttons
—
--pa-text-eyebrow
13px
1.55
mono eyebrows, metadata, proof slugs
—
Rules that keep the voice: headlines in Montserrat 600, never faux-bolded serif; eyebrows always
mono, uppercase, 0.12–0.14em tracking; numerals in receipts are display-face at h2 size or larger;
serif italic is for the limit and the sub-line, the two places the copy admits something.
Sec. 03Space, grid, radii, elevation
Whitespace is a rule, not a vibe
“Clean, modern, uncluttered, generously spaced” as measurable
constraints.
Base unit 8px. The scale runs 4 · 8 · 16 · 24 · 32 · 48 · 64 · 96 · 128 and
nothing lands off it. The 4px half-step exists for chip interiors only.
Sections breathe 96px top and bottom on desktop, 64px at or below 768px —
never less, and sections are separated by that whitespace or a 1px structural hairline,
not crowded by both plus colour.
Tabs separate by ground gaps: 16px minimum, 24px default — the mark’s own
4–5% gap rule, applied to the grid.
Receipt cards, concept cards, capability chips, stage markers and lane
indicators are the same object: a plane with a hue and a saturation. A second, unrelated card
shape means the system has been broken.
Anatomy
The plane — a surface-coloured body, 10px radius, one soft shadow in the
light theme. It never has a border; the ground gap around it does the separating.
The facet — a solid block in a lane hue at a maturity step. This is the only
place saturated colour lives on a tab. Position is a layout choice (top strip, left strip,
dot); the colour pair it carries is the content’s metadata: which lane, how mature.
The gap — tabs never touch. Ground shows between them, 16–24px, exactly as
the mark’s facets are separated by bare background.
States
Default — plane plus facet at its content’s true step.
Hover — lifts 2px and deepens its shadow (light theme only). Nothing
re-colours on hover: the facet states a fact about the content, and facts don’t hover.
Focus-visible — a 2px ring in the tab’s own facet hue, offset 2px. This is
the one sanctioned outline, and it exists for keyboard users, not decoration.
Selected (filters, toggles) — the facet floods the plane; text flips to
--pa-on-facet, which is computed per theme (white on the mid steps in light, ink on
the tints in dark). Only body-rated steps may flood.
Disabled — surface-2 plane, muted text, no shadow, no facet.
How the ladder maps to content
Receipt confidence — low → 01, medium → 02, medium-high → 03,
high → 04. The receipt below is medium-high, so its facet sits at step 03.
Engagement stage — Signal → 01, Filter → 01, Pilot → 02,
Receipts → 03, Harden → 04, Venture → 04. Six stages on four steps: the ladder
stays at four, and adjacent stages may share a step.
Concept-lab lineage — v1 → 01, v2 → 02, v3 → 03. Step 04 is
reserved for a concept that ships.
Automated FAQ interactions served by Absa Chat Banking.
What I did not do
I commissioned and negotiated the NLP architecture and set the usage-based commercial
structure. I did not build the model, and I had left before this was measured.
Every component the home page needs, proven here. Two are already live on this
page: the assessment bar at the very top, and the masthead with its availability chip.
Buttons — the hero CTA pair
Primary commits in brand blue with white text (6.52:1, computed). Ghost stays quiet on the
surface; its thin outline is a button affordance, not a tab border, and it thickens to brand blue
on hover. Three-line headline, one emphasised line, primary plus ghost — the shape is fixed.
Persistent summary, placed beside the hero headline — kimi-k3’s card, glm-5.2’s words.
Keys are mono and muted; values are serif; the sub-line is where the card admits nuance.
At a glance
Now
Now
Selectively exploring executive product leadership roles.CPO / VP Product / Head of Product
Also
Fractional and advisory engagements, scoped and time-bound.Fixed scope, named deliverables
Always
Building. The ventures are the R&D lab for the leadership.Pet Basics, in market
Base
Cape Town — emerging-market depth, global reach.Remote-first, worldwide
Lane rows
Number, facet, name, one-line duty, arrow — separated by structural hairlines. Hover nudges the
row 8px right and asks nothing else of the colour system.
A pill track of tabs. Selected floods with its facet hue and flips text to
--pa-on-facet; unselected stays quiet. Try it — it is keyboard-operable.
Section header, receipt card, footer
Every section header on this page is the section-header component: a mono eyebrow
(Sec. 04 · The tab primitive, number in the section’s facet hue), a Montserrat
headline, a muted serif lede. The receipt card is proven in Sec. 04 with real numbers and a real
limit. The footer is at the bottom of this page: wordmark, mono metadata, one hairline.
Sec. 06Motion
Nothing moves unless it was asked
Motion answers interaction only. Hover lifts a tab 2px and deepens its shadow;
a lane row nudges 8px; a filter floods on selection. 160–200ms, one ease
(cubic-bezier(0.16, 1, 0.3, 1)), then stillness.
One cheap property at a time — transform or shadow, never layout, never
colour cycling. Facets state facts; facts don’t animate.
Nothing ambient. No autoplay, no loops, no parallax, no pulse on the status
dot. Under prefers-reduced-motion: reduce every transition and animation in the
system is off.
Sec. 07Accessibility
AA is the floor, and it is checked
WCAG 2.1 AA. Every text/ground combination on this site comes from the
published tables in Sec. 01 — body ≥ 4.5:1, large text ≥ 3:1, and the forbidden list is
part of the system, not a hope.
Focus is always visible — a 2px ring in the element’s facet hue, offset
2px, on every link, button and filter. Tab order follows the document; the filter is a native
button group; the theme toggle is a button with aria-pressed. A skip link is the
first element in the tab order.
Contrast survives the theme switch because text colours are semantic tokens
and the dark block re-maps the ladder — no component hard-codes a step.
Reduced motion honoured globally, as stated in Sec. 06.
Sec. 08Theming
Token-first, or not at all
Light is canonical. Dark is complete. Three rules keep it that way:
Every colour is a token on bare :root, defined once in
tokens.css. Components and pages consume var(--pa-*) and nothing else.
Dark redefines only the token block, twice: under
@media (prefers-color-scheme: dark) guarded by
:root:not([data-theme="light"]), and again under
:root[data-theme="dark"]. A manual toggle therefore wins in both directions and is
persisted to localStorage. Try the toggle in the masthead — this page re-themes
entirely from the token block.
The build gate greps. Any hex literal or colour function found outside
tokens.css fails the build. That single constraint is what keeps the toggle a
non-event.
What changes in dark, by design: ground and ink swap, surface steps replace shadows, and the
maturity ladder inverts its direction — step 04 runs to the light tint, because the deep facets
measure 1.45–2.60:1 on the dark ground. What never changes: hue. A Leader tab is blue in both
themes; only the saturation direction re-points.