Tokens
Tokens
Every value is a CSS custom property, read on this page from tokens/*.css. Click a name to copy it as var(--name).
Colour
Brand and neutral colours for UI. Data colours only on data, in a fixed order.
<p style={{ color: "var(--muted)", borderTop: "1px solid var(--line)", paddingTop: 8 }}>
Source: ACAPS, March 2026
</p>
Ramps
Light (1) to dark (10). Step 6 is the base colour. Use for sequential and diverging scales.
Semantic
Use these in UI, never the raw palette. Each has a light and a dark value.
Type
Serif for the voice, sans for reading, mono for facts about facts.
<h2 style={{ fontFamily: "var(--font-serif)", fontSize: "var(--fs-h2)", letterSpacing: "var(--tracking-display)" }}>
Incidents fell by a third after the ceasefire
</h2>
<p style={{ font: "var(--fs-meta)/var(--lh-small) var(--font-mono)", color: "var(--muted)" }}>
14 October 2026
</p>
Spacing
Rhythmic, not uniform: related things sit tight, groups breathe, sections get real air.
<section style={{ display: "grid", gap: "var(--gap-related)", marginTop: "var(--gap-section)" }}>
<SectionHead title="Latest writing" moreLabel="All posts" moreHref="/blog/" />
<PostList posts={posts} />
</section>
Shape & motion
3px is the maximum radius. Hairlines instead of shadows.