CTZNViz

Design system

Editorial components for data-dense interfaces

Dark-first, built on TanStack Charts, MapLibre, and Tailwind v4. The organizing idea is a hard separation between two color layers: the UI chrome stays near-monochrome with a single accent, and saturated color is reserved entirely for data. Chrome never competes with the thing you are trying to read.

Layer one

Chrome

Near-monochrome, with one signature accent. Every value is defined twice — light is a hand-tuned counterpart, not an inversion.

canvas
surface
surface-raised
border
text-muted
text-secondary
text
accent

Layer two

Data palettes

Named by meaning rather than by hue, so the choice of ramp is a decision about the data. Each is a set of var(--token) strings, which is why charts re-theme at paint time with no re-render.

categoricalSeries that have no order. Past about six, direct labels beat a legend; the last slot is a neutral for 'other'.
sequential-warmBetter → worse. Directional: only for quantities where one end really is worse.
sequential-tealNeutral magnitude — correlation strength, density, counts.
divergingOnly where the data has a real midpoint: an average, zero, a threshold.
likert-5Five ordered levels around a neutral middle — ratings, agreement, sentiment.
politicalConventional and non-negotiable — readers arrive with this mapping already installed.
Democrat
Republican
Other

Typography

Three families, three jobs

A serif that only ever sets figures, a sans for everything you read, and a mono for labels that should look like metadata.

Instrument Serif
88.1%

Display numerals only. Never body copy — it ships one weight by design, which suits a face that exists to set figures.

Geist Sans
Titles, labels, body

Everything a reader actually reads. Tabular figures switch on automatically inside tables and stat tiles.

Geist Mono
GEOID 36061 · 62–88

Eyebrows, axis ticks, identifiers. Anything that should read as metadata rather than prose.

Components

Stat tiles

Label, figure, and caption. A bare number is not a statistic — the caption is what makes it readable, and tiles that skip it are how dashboards fill up with numbers nobody trusts.

ADI rank
2.2
higher means more deprivation
Median income
$158,730
ACS household estimate
Diabetes
5.5%−6.7
vs. US average
College+
88.1%+41.2
adults with a degree
Preview