Colour and type values are NOT stored in this document. The single source is
~/Dev/welaunch-ui/packages/tokens/tokens.json, which generatestokens.css, a typed TS module, the Figma variables export, and thewelaunch-designskill's reference stylesheet. Read values there, never from a doc.The rule, set 2026-09-06: a copy is safe when a machine makes it and a liability when a person does. On 2026-09-05 seven places held brand hex values, five of them hand-maintained. Every one that had drifted was hand-maintained; nothing generated had drifted. The tables that used to sit here were two of the five.
Values (colour, type, spacing):
tokens.jsonis the source. This is not new,CLAUDE.mdhas said so all along; what was missing was enforcement, which is why five hand-kept copies drifted anyway. Figma is where a change is decided; it is not real until it is in the JSON. Artwork (logos, marks, shapes): Figma is the source. This is the genuinely new rule.00 Brand/Logo + Mark/is a generated export folder and is never hand-edited. On 2026-09-05 it was hand-edited and Figma had already moved past it: the Square Mark had been rescaled ~9% and the local copy also carried an off-token indigo.
⚠️ Updated 2026-09-05.
launch-bluewas re-anchored to hue 216 (#0066FFis the new 700) so button labels clear WCAG AA at full saturation and brightness, and the neutrals were given a matching cool bias because pure grey reads as unchosen. Teal was demoted from primary-button fill to accent: a teal can never carry a white label. Source of truth is~/Dev/welaunch-ui/packages/tokens/tokens.json; this file mirrors it. Rationale and every rejected option:00 Brand/Design System/Brand Decisions — 2026-09/.
The single source of truth for color tokens across Figma, code, and brand collateral. Updated June 9, 2026
This doc defines a two-tier token system. Build it once as Figma variables and bind every component to the semantic layer — never to a raw hex or primitive. Change a value in one primitive and everything downstream updates.
Naming migration: The old Blueprint names (Azure Radiance / Persian Green / Persian Blue / Light–Dark Neutral / Gray) are retired in favor of brand-ownable names. Mapping is in the table below. The Brand Blueprint Color System section reflects these names.
Tier 1 — Primitives
The raw palette. Full 10-step ramps for the three brand colors plus flat neutrals. Primitives are referenced only by semantic tokens, never by components directly.
launch-blue (identity) — base = 700
| 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |
|---|---|---|---|---|---|---|---|---|---|
#EDF4FF | #D6E6FF | #B5D3FF | #83B5FF | #4891FF | #1E78FF | #066AFF | #0066FF | #0854C5 | #0D469B |
launch-teal (action + warmth) — base = 600
| 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |
|---|---|---|---|---|---|---|---|---|---|
#EFFEFA | #C7FFF2 | #90FFE7 | #51F7DA | #1DE4C7 | #04C8AF | #00A896 | #058074 | #0A655D | #003331 |
launch-indigo (depth + stage) — base = 800
| 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |
|---|---|---|---|---|---|---|---|---|---|
#E9F3FF | #D6E8FF | #B5D3FF | #89B6FF | #5B8DFF | #3665FF | (pruned) | (pruned) | #0B27C5 | #0C185A |
Neutrals (flat)
Partner (co-branding only)
Tier 2 — Semantic tokens
What components bind to. Names describe function, not appearance.
Brand
Text
Type rule: heading text is
text/heading(ink) ortext/heading-accent(blue) — never teal. Teal in type is reserved fortext/label.
Surface
Border
State
Action tokens + the CTA swap rule (use Figma modes)
The Blueprint's CTA swap rule — blue CTAs on light backgrounds, teal CTAs on dark backgrounds — is encoded as a mode on a single set of action tokens. Bind buttons to these tokens once; switching the frame's mode (On Light / On Dark) flips the colors automatically.
This guarantees the primary CTA always contrasts its surroundings and keeps blue + teal at equal visibility across the experience.
Distribution guardrail — the 60/25/15 rule
A page or asset should land roughly at: ~60% neutrals (cloud/white/ink) · ~15% brand/primary (blue) · ~13% brand/action (teal) · ~12% brand/depth (indigo). Neutrals do the heavy lifting; brand colors are signals, not surfaces.
Figma setup notes
- Two collections:
Primitives(the ramps + neutrals above) andTokens(semantic, with two modes:On Light,On Dark). - Semantic variables are aliases that point at primitives — never raw hex.
- Components reference
Tokensonly. If a component reaches intoPrimitives, that's a bug. - Group with
/so Figma nests them (e.g.brand/primary,action/primary-bg).
Code mirror (CSS custom properties)
:root {
/* primitives — abbreviated; full ramps above */
--launch-blue-700: #0066FF;
--launch-teal-600: #00A896;
--launch-indigo-800: #0B27C5;
--cloud: #F2F6FB; --mist: #DCE2E9; --ink: #292A2D;
/* semantic */
--brand-primary: var(--launch-blue-700);
--brand-action: var(--launch-teal-600);
--brand-depth: var(--launch-indigo-800);
--text-default: var(--ink);
--surface-page: var(--cloud);
--border-subtle: var(--mist);
}
Since 2026-09-03 the implementation source is code:
~/Dev/welaunch-ui/packages/tokens/tokens.json(light + dark modes), mirrored into Figma variables and into thewelaunch-designskill. This doc is the human-readable reference; if a value here disagrees with the package, the package wins and this doc gets corrected. See Design System — @welaunch-ui.
Radius scale softened (2026-09-07)
Conner asked for more rounded, softer corners across every WeLaunch surface. The whole scale moved one step in tokens.json: radius-sm 8 to 10, radius-md 12 to 14, radius-lg 16 to 20, radius-xl 20 to 24, radius-panel 24 to 28, radius-card-lg 28 to 32, radius-field 12 to 14; radius-full unchanged. The build regenerated tokens.css, the TS module and the Figma variables file; 477 library tests pass. Consumers pick it up on their next dependency refresh: the Client Workspace (npm), the site theme, and the Atlas app (vendored tarballs). Figma Brand — WeLaunch needs the regenerated variables file re-imported so the design authority matches the code.
Open token questions from the Atlas mockups (2026-09-07)
- Frosted glass. No blur or translucent-surface token exists. Glass as a real surface is a new token pair (surface translucency plus blur radius) and a Figma decision first, with a contrast re-check on every foreground over it. The mockups carry depth with shadows and radii instead.
- Theme-flipping accent icon. No semantic token names an accent icon colour that flips with the theme. The reader's round GitHub button needs
launch-blue/800on light andlaunch-blue/300on dark (6.1:1 and 6.7:1); both values exist, the pair has no name. Proposed nameicon-accent, to be added in Figma andtokens.jsontogether. - Serif title face and prose measure remain open from the design direction.