Color

A single neutral family, Tailwind's Slate scale. Chromatic color is reserved for functional states. Same behavior in light and dark.

There is no brand color: no color competes for attention unless it has a job to do. We rely on the Tailwind palette, Slate for neutrals and green/red/amber for states, chosen because it is proven and accessible rather than inventing our own.

Palette

These swatches are painted live with var(--color-*): what you see is the theme your system has active right now. Switch your system's color mode and the page switches with it. The map of both themes is in the table below.

primary

Main text.

secondary

Secondary text, metadata, captions.

background

Main background.

surface

Tinted surfaces above the background.

surface-raised

Raised panels (bento surface). In dark it is a lift, not an inversion.

border

Default borders. Subtle separation.

success

Functional states only.

error

Functional states only.

warning

Functional states only.

Light and dark

TokenLightDark
primarySlate/900Slate/200
secondarySlate/500Slate/300
backgroundWhiteSlate/700
surfaceSlate/50Slate/900
surface-raised= surfaceprimary at 4% over the background
borderSlate/200Slate/500
successGreen/700Green/400
errorRed/700Red/400
warningAmber/700Amber/400

The source of truth for values is tokens.css; this table is a reference. If they disagree, the token wins.

On media

Text and scrim over images or video don't follow the theme: imagery is arbitrary and legibility can't depend on the color mode.

on-media over media-scrim

TokenValueUse
--color-on-media#FFFFFF, both themesText over image/video (BentoCaseCell label; --hero-text derives from it)
--media-scrimrgba(0,0,0,0.7), both themesBase of the gradient under titles over media
--hero-overlayrgba(0,0,0,0.2), both themesVideoHero's soft scrim: legibility without dimming the footage. Deliberately not --media-scrim.

Rules

Clickability is communicated by form (arrow or underline), not by color, so it reads the same with mouse, keyboard and screen reader. Dark mode is triggered only by prefers-color-scheme, with no toggle and no class, with one documented exception: the NavPill's black.