Tokens
Color
Purple stays. The published apps use indigo and violet. Campaign blue is extra — logo and merch — until we decide to migrate.
Shipped product
Brand indigo
--brand-indigoShipped: email wordmark “loop”, mobile primary, pricing gradient.
Dashboard violet
--primaryShipped: web dashboard + landing + admin. Midnight Ember primary.
Rule: email, mobile, and decks that match the live apps use indigo. Dashboard UI uses violet. Do not remove these — customers already see them.
Campaign (additional)
Sampled from the logo ribbon and merch. Use on campaign art. Not a replacement for product purple.
Campaign blue
--brand-blueAdditional: logo ribbon, merch, campaign art. Not a replacement for purple yet.
Campaign navy
--brand-navyMerch fabric and campaign plates.
Campaign blue deep
--brand-blue-deepRibbon folds and hover on campaign assets.
Campaign blue glow
--brand-blue-glowGlow on campaign illustrations only.
Midnight Ember — dark surfaces
background
--backgroundApp canvas — Midnight Ember
surface
--surfaceSidebar / recessed
card
--cardCards, tables
card-hover
--card-hoverHover lift
border
--border1px hairlines
foreground
--foregroundPrimary text
Light theme surfaces
Opt-in via [data-theme="light"]. Stripe-style: white base, warm-neutral surfaces, hairline borders over shadows.
background
--backgroundWhite canvas
surface
--surfaceOff-white sidebar
card
--cardCards
border
--borderSubtle borders, no heavy shadows
primary
--primaryDarker violet for contrast on white
foreground
--foregroundNear-black text
Neutral scale
Theme-constant — same HSL in light and dark.
50
--neutral-50Lightest wash
100
--neutral-100Light hover
200
--neutral-200Light borders
300
--neutral-300Disabled
400
--neutral-400Placeholder
500
--neutral-500Secondary text
600
--neutral-600Muted on light
700
--neutral-700Dark muted
800
--neutral-800Elevated dark
900
--neutral-900Light foreground
950
--neutral-950Deepest
Chart palette
chart-1
--chart-1Violet — primary series (dashboard)
chart-2
--chart-2Cyan — scheduled / secondary
chart-3
--chart-3Teal
chart-4
--chart-4Amber — in progress
chart-5
--chart-5Rose — en route (dashboard)
chart-6
--chart-6Light violet
Semantic states
success
--success-500Completed, paid, online
warning
--warning-500Pending, due soon, high
destructive
--destructive-500Cancelled, overdue, urgent
Mobile Stitch (shipped)
Shared by the customer and worker apps. Primary is indigo, not campaign blue.
primary
Shipped mobile primary
primaryContainer
Filled containers
secondary
Completed / success green
background
Outdoor-readable white
surface
Indigo-tinted surface
textPrimary
Body on light
statusEnRoute
En route
statusInProgress
In progress
statusLive
LIVE badge