Design tokens
The atomic vocabulary of the brand — colours, type, spacing, radii,
motion, shadows. The same values served from
/api/brand.json for AI
agents.
Colours
Click any swatch to copy its hex value. Pink-700 is the brand accent — every other colour orbits it.
Accent
Neutrals
Warm cream scale
pink
yellow
green
blue
Semantic
Typography
Four faces. Display + body + mono + serif italic accent.
Bricolage Grotesque
headlines, display, big numbers
DM Sans
body, UI, paragraphs
JetBrains Mono
code, tokens, hex values, technical
Serif
—
Spacing
A 4px grid. Click any value to copy.
Radius
Corner curvature, named small to extra-large. Click to copy.
Motion
Four duration buckets. House easing curve below.
Shadows
Elevation + the brand's pink halo + focus ring.
Minimum sizes
Brand-protection rules — never render the marks below these sizes.
- Full lockup120px / 30mm print
- Icon24px / 8mm print
- Wordmark90px
CSS variables
Every custom property declared in _shared.css. Filter by
name. Click any row to copy the variable name (with leading
--).
Show / hide all (110)
-
#191E32 -
#466099 -
#6E90CC -
#FFFFFF -
#FBF6F0 -
#F9F1E8 -
#F4ECE4 -
#E8DBCB -
#D2BFAA -
#FE84A9 -
#FF5B8D -
#FF3F7A -
#FFD878 -
#F9C33E -
#F9AD03 -
#7DF4D0 -
#47DDB2 -
#37BC9B -
#5BD9FC -
#30C4F2 -
#1FAAE8 -
var(--warm-3) -
var(--paper) -
var(--warm-5) -
var(--warm-5) -
var(--warm-2) -
var(--warm-7) -
var(--ink) -
rgba(25, 30, 50, 0.78) -
rgba(25, 30, 50, 0.7) -
rgba(25, 30, 50, 0.6) -
rgba(25, 30, 50, 0.12) -
rgba(25, 30, 50, 0.06) -
rgba(139, 115, 85, 0.18) -
rgba(139, 115, 85, 0.10) -
var(--accent) -
var(--pink-700) -
rgba(255, 63, 122, 0.12) -
var(--green-700) -
rgba(55, 188, 155, 0.14) -
var(--yellow-700) -
rgba(249, 173, 3, 0.16) -
var(--blue-700) -
rgba(31, 170, 232, 0.14) -
#D64545 -
rgba(214, 69, 69, 0.12) -
var(--accent) -
#1E6B44 -
#1463A1 -
#8A5A00 -
var(--error) -
rgba(255, 63, 122, 0.06) -
rgba(31, 170, 232, 0.04) -
rgba(249, 195, 62, 0.03) -
rgba(25, 30, 50, 0.035) -
4px -
8px -
12px -
16px -
20px -
24px -
32px -
40px -
48px -
64px -
80px -
96px -
128px -
4px -
6px -
10px -
14px -
20px -
28px -
999px -
none -
0 1px 2px rgba(25, 30, 50, 0.06), 0 1px 1px rgba(25, 30, 50, 0.04) -
0 4px 10px rgba(25, 30, 50, 0.08), 0 1px 2px rgba(25, 30, 50, 0.06) -
0 10px 28px rgba(25, 30, 50, 0.12), 0 2px 4px rgba(25, 30, 50, 0.06) -
0 24px 56px rgba(25, 30, 50, 0.18), 0 4px 8px rgba(25, 30, 50, 0.08) -
0 12px 40px rgba(255, 63, 122, 0.28) -
0 0 0 3px rgba(255, 63, 122, 0.28) -
100ms -
160ms -
240ms -
400ms -
cubic-bezier(0.2, 0.8, 0.2, 1) -
"Bricolage Grotesque", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Inter, sans-serif -
"DM Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Inter, sans-serif -
"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace -
"Fraunces", ui-serif, Georgia, "Times New Roman", serif -
1 -
10 -
100 -
200 -
300 -
color-mix(in oklab, var(--bg-paper) 95%, var(--accent)) -
0 0 0 3px color-mix(in oklab, var(--accent) 30%, transparent) -
linear-gradient(135deg, color-mix(in oklab, var(--accent) 12%, transparent) 0%, color-mix(in oklab, var(--info) 10%, transparent) 100%) -
linear-gradient(135deg, color-mix(in oklab, var(--accent) 8%, transparent) 0%, color-mix(in oklab, var(--info) 6%, transparent) 100%) -
var(--success) -
var(--warning) -
var(--error) -
color-mix(in oklab, var(--success) 12%, transparent) -
color-mix(in oklab, var(--warning) 12%, transparent) -
color-mix(in oklab, var(--error) 12%, transparent) -
1.2px -
52px -
36px -
var(--row-h-comfortable)
Want this as JSON? /api/brand.json