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-3 / p-3
0.75rem · 12px
gap-6 / p-6
1.5rem · 24px
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.
rounded-selector
0.25rem · 4px
rounded-field
0.375rem · 6px
--radius-*