Lumen
Styles

Space & shape

A 4px spatial base, real control sizes, one stacking vocabulary, a radius scale, and two elevations.

Spacing — 4px base

All spacing is a multiple of 4px, and the base is a token — --spacing: 0.25rem — so Tailwind's spacing utilities (p-4, gap-2, …) derive from Lumen, not from a coincidence. The common rungs:

4 · 8 · 12 · 16 · 24 · 32 · 48 · 64

Size — controls & the tap floor

The dimensional decisions the kit actually ships, as tokens (use h-(--size-control-md) etc.):

TokenValueUse
--size-control-sm32pxCompact rows (Button sm)
--size-control-md36pxThe default control (Button md, Input)
--size-control-lg44pxHero / touch-first (Button lg)
--size-tap-min24pxThe hard floor — no pressable target below this (WCAG 2.5.8)

Layers — one stacking vocabulary

Z-index is a scale, not an arms race. Use z-(--layer-modal) etc.; never a bare number.

TokenValueWhat lives there
--layer-raised10Lifted cards, sticky affordances inside content
--layer-sticky20Sticky headers/rails
--layer-overlay40Scrims (the --overlay wash)
--layer-modal50Sheets, dialogs
--layer-popover60Menus, selects, popovers — may open above a modal
--layer-toast70Toasts — outlive the modal that spawned them
--layer-tooltip80Tooltips — beat everything

Radius

The rounded-* utilities are bound to this scale (not Tailwind's defaults — Tailwind's md is 6px, Lumen's is 8px).

TokenValue
sm6px
md8px
lg12px
xl16px
2xl22px
full999px (pills, dots, avatars)

Strokes

TokenValueUse
--stroke-hairline1pxBorders, separators — the soft warm seam
--stroke-emphasis2pxFocus rings, invalid borders

Elevation

Two warm-tinted shadows — depth is restrained, never theatrical — plus the one scrim. shadow-sm / shadow-lg utilities resolve to these.

TokenUse
--shadow-smCards, fields, badges — the resting surface
--shadow-lgHover lift, popovers, the Agent panel
--overlayThe wash behind sheets/dialogs — warm ink by Day, deeper by Night; never pure black

All of the numeric scales above are mirrored as data in the package (radius, spacing, sizes, layers, icons from lumen) and machine-checked against the CSS by the truth script — drift fails the build.

On this page