Base — design tokens

The colour palette, typography scale, spacing scale, and radius scale committed in the UX Design Specification §"Visual Design Foundation". One set of tokens for the whole of geoda — public-discovery and curator-workflow surfaces alike. Per-surface variation lives in application of the tokens, not in different token values. Status colour swatches and semantic colour utilities live on the Utilities page.

Colors

One palette across geoda. Primary / secondary / accent / neutral / base are the same on every surface — public-discovery and curator-workflow alike. The earlier two-theme split (a separate cooler base for workflow surfaces) was retired with the 2026-05-18 single-register decision.

--color-primary
#2c3e6b
Primary — museum-hall slate blue. CTAs, active states, links, focus rings.
--color-secondary
#9a8f7e
Secondary — warm stone. Subtle highlights, hover backgrounds.
--color-accent
#7a3a3a
Accent — muted oxblood. Sparingly, for status indicators that demand attention.
--color-neutral
#3a3f47
Neutral — slate grey. Body text on light backgrounds, dividers.
--color-base-100
#f7f3ec
Base — warm cream. Background of every surface in geoda (one palette, no per-surface variation).
--color-base-200
#efe9de
Base-200 — darker cream. Nested surfaces, card backgrounds.
--color-base-300
#dcd3c2
Base-300 — borders, hairline dividers.
--color-base-content
#2a2823
Base-content — deep slate body text, near-black with warmth.

Typography

Source Sans 3 across all sizes. Italics for scientific binomials. Monospace stack for identifiers and coordinates. One scale across geoda — hero surfaces reach into the larger steps (text-display, text-hero); workflow surfaces typically stay between text-base and text-section.

text-display 3rem / 1.1 / 600
Switzerland's heritage
text-hero 2.25rem / 1.15 / 600
Limestone with coral fossil
text-section 1.5rem / 1.25 / 600
Constituent parts
h3 1.25rem / 1.3 / 500
Specimen overview
body 1.0625rem / 1.6 / 400
Body text reads at 17 pixels with 1.6 line height. Comfortable reading at desktop and tablet sizes; same scale across every surface.
body-sm 0.9375rem / 1.5 / 400
Captions, secondary information, list-row metadata.
meta 0.8125rem / 1.4 / 400
Audit timestamps, language tags, low-attention metadata.
text-display / text-hero / text-section / ...

Spacing

Base unit 4px. One scale across geoda. Hero surfaces (specimen detail, landing, gallery) apply multiples generously — gap-12 to gap-24 between major page sections. Workflow surfaces (inbox, records, members) stay tighter — gap-4 to gap-8. Same scale, different application per surface.

gap-1 / p-1
0.25rem · 4px
gap-2 / p-2
0.5rem · 8px
gap-3 / p-3
0.75rem · 12px
gap-4 / p-4
1rem · 16px
gap-6 / p-6
1.5rem · 24px
gap-8 / p-8
2rem · 32px
gap-12 / p-12
3rem · 48px
gap-16 / p-16
4rem · 64px
gap-24 / p-24
6rem · 96px
Tailwind spacing scale

Radius

Restrained radii. Same values across every surface — radius doesn't vary by surface type.

no radius
0
rounded-selector
0.25rem · 4px
rounded-field
0.375rem · 6px
rounded-box
0.5rem · 8px
--radius-*