Palette
Six anchors. The app is built from these — do not introduce new hues.
#234B7D--brand-blue / --primaryIdentity. Page titles, active nav, primary buttons, brand chrome.
#0F8B72--brand-green / --successContinuity. Success, connected, active, completed states.
#F28C32--brand-orange / --warningAttention only. Pending, blocked, alerts, important indicators. Never dominant.
#1E293B--foregroundBody text in light mode, dark mode surfaces.
#F6F8FA--background (light)Light app background.
#0E1116--background (dark)Dark app background.
Gradients
Used for primary CTAs and the landing hero wash only. Do not splash on cards.
var(--gradient-brand)Apply via the btn-brand utility or <Button variant="brand">. Reserve for primary action.
var(--gradient-hero)Apply via the bg-hero-brand utility. Use behind heroes, empty states, and brand headers only.
Tokens to use
Everything in components must route through these — never hard-code hex or Tailwind palette colors (no amber-500, sky-300, etc.).
| Token | Use for | Avoid |
|---|---|---|
primary | Brand identity, primary buttons, active nav, headings emphasis | Body text, large backgrounds |
success | Completed, active, resolved, selected, healthy | Warnings, danger |
warning | Pending, blocked, draft, attention badges, timeline issue accents | Large fills, success states |
destructive | Cancelled, delete, irreversible danger | Routine errors that aren't destructive |
muted / muted-foreground | Secondary text, captions, neutral chips | Active states |
accent | Subtle hover surfaces, tinted info chips | Primary actions |
border / input | Card outlines, dividers, form inputs | Decorative strokes — keep matte |
Components
Reach for these before writing custom styling.
Buttons
Primary CTAs use variant="brand" with size="xl" or size="hero". All other accents come from variants — never restyle with custom gradient classes.
Status pills
Use <StatusPill status={...} /> for every status surface so the color mapping stays consistent across modules.
Inline alerts
warning soft tone.success soft tone.primary soft tone.Pattern: border-{token}/30 bg-{token}/8 text-{token}. Never use solid fills.
Surfaces
bg-surface + border-border..glassHierarchy rules
- Blue is identity. Green is continuity. Orange is attention. Never invert these roles.
- Operational content stays matte. Liquid glass is for chrome only.
- Status surfaces always use soft tinted backgrounds — never full saturation.
- Reach for
<Button variant="brand">for primary CTAs; never re-create the gradient inline. - Never import a Tailwind palette color (amber, sky, emerald, rose, etc.) — only semantic tokens.
