TOKENS

Brand colour is the only hand-authored token layer. It lives in app/css/theme.css (@theme), and Tailwind generates the --color-* custom properties plus the matching utilities (text-primary-500, border-primary-subtle). The swatches below are read directly from theme.css — one source, no drift.

Type, spacing, motion, and z-index use Tailwind's standard scale (with arbitrary values where the design needs a specific number). They are not tokenised separately, so the tables below document the scale as it is used.

Color

Six ordinal families, each a 50–900 ramp defined in @theme. Swatches read their values straight from theme.css.

primary · green (the brand)

--color-primary-50#eafff0
--color-primary-100#c4ffd8
--color-primary-200#8ff2b2
--color-primary-300#5ae07bAnnotations, gutters
--color-primary-400#4ade80Secondary text, labels
--color-primary-500#00ff41Headings, accents, interactive elements
--color-primary-600#28c840
--color-primary-700#1e9b32
--color-primary-800#166f24
--color-primary-900#0c4015
--color-primary-subtle#00ff4166Borders, dividers (green 40%)
--color-primary-border#00ff4133Default border (green 20%)
--color-primary-faint#00ff411fVery subtle background (green 12%)
--color-primary-quiet#00ff411aHover background (green 10%)

secondary · black (surfaces)

--color-secondary-50#e8e8e8
--color-secondary-100#cfcfcf
--color-secondary-200#a8a8a8
--color-secondary-300#808080
--color-secondary-400#5c5c5c
--color-secondary-500#3d3d3d
--color-secondary-600#262626
--color-secondary-700#141414
--color-secondary-800#0a0a0a
--color-secondary-900#050505Shell / terminal backgrounds
--color-secondary-950#000000Page background

tertiary · white (foreground)

--color-tertiary-50#e6ffe6Body text (13:1+ contrast on black)
--color-tertiary-100#dbf2db
--color-tertiary-200#c4d9c4
--color-tertiary-300#a9bda9
--color-tertiary-400#8a9d8a
--color-tertiary-500#6b7c6b
--color-tertiary-600#515f51
--color-tertiary-700#3a463a
--color-tertiary-800#262f26
--color-tertiary-900#161b16

quaternary · cyan

--color-quaternary-50#ecfbff
--color-quaternary-100#d0f5ff
--color-quaternary-200#a8ecff
--color-quaternary-300#8de8ff
--color-quaternary-400#7fe4ffCool syntax highlight accents
--color-quaternary-500#45cdf0
--color-quaternary-600#22a8cc
--color-quaternary-700#1a7f9b
--color-quaternary-800#155a6e
--color-quaternary-900#0e3a47

quinary · yellow

--color-quinary-50#fff8e6
--color-quinary-100#ffeebf
--color-quinary-200#ffe293
--color-quinary-300#ffd86bWarm syntax highlight accents
--color-quinary-400#ffca47
--color-quinary-500#febc2eWindow-chrome minimize dot
--color-quinary-600#d99a1f
--color-quinary-700#a8741a
--color-quinary-800#785214
--color-quinary-900#4a330c

senary · red

--color-senary-50#fff0f0
--color-senary-100#ffdcdc
--color-senary-200#ffb3b3
--color-senary-300#ff8a8aError states, validation messages
--color-senary-400#ff7570
--color-senary-500#ff5f57Window-chrome close dot
--color-senary-600#e03e36
--color-senary-700#b02b25
--color-senary-800#801e1a
--color-senary-900#4f110f

Type Scale

Applied with Tailwind text-* utilities; arbitrary values (text-[32px]) are used where a heading needs a specific size. Headings use the --font-display (Inter 900) face; everything else is --font-mono (JetBrains Mono). Both are self-hosted via next/font/local (exposed as --font-*-src) and surfaced as Tailwind tokens in theme.css.

UtilitySize
text-xs0.75rem / 12px
text-sm0.875rem / 14px
text-base1rem / 16px
text-lg1.125rem / 18px
text-xl1.25rem / 20px
text-2xl1.5rem / 24px
text-3xl1.875rem / 30px

Spacing

Tailwind's 4px scale, applied with padding / margin / gap utilities. Step N = N × 0.25rem.

Steprempx
10.25rem4px
20.5rem8px
30.75rem12px
41rem16px
61.5rem24px
82rem32px
123rem48px
164rem64px

Motion

Durations are applied with Tailwind duration-* utilities, easing with ease-out. All motion is suppressed under prefers-reduced-motion: reduce.

UtilityValueUsage
duration-[80ms]80msmicro transitions (hover, press)
duration-100100msfast UI feedback
duration-200200msstandard transitions
ease-outthe one shared easing curve

Layers

z-index is applied with Tailwind z-[N] utilities — there is no CSS-var token layer. The cross-cutting contract:

Layerz-indexUsage
contentz-[1]page content above the CRT overlay
header chromez-[110]DesktopTopbar / StatusBar (MobileTitleBar z-[109])
mobile dockz-[120]bottom navigation dock
skip link9999skip-to-content link, always on top

Component-local stacking (CRT effect layers 1–5) is intentionally not part of the contract.