Levandor Visual Brand System

For Agents

Source of truth for the Levandor design tokens. Defined as CSS variables in packages/ui/src/styles/globals.css and consumed by Tailwind utilities and the mobile-native-feel surfaces. Desktop is dark-mode-first; mobile is light-themed with copper accents on white surfaces.

Color Tokens

TokenHSLHex (approx)Purpose
--copperhsl(31 53% 64%)#d8a777Primary accent (warm copper)
--copper-dimhsl(28 40% 54%)secondarySecondary copper, hover states
--warm-blackhsl(40 11% 5%)near-blackDark surface (slightly warm, NOT pure black)
--warm-raisedhsl(50 17% 7%)lifted darkRaised dark surface
--warm-cardhsl(48 11% 9%)dark cardDark card surface

Not zinc-900

Mobile heroes were initially bg-zinc-900 (zinc is cool/blue). The actual brand surface is warm-black (hsl(40 11% 5%)) — slightly warm. Use bg-[hsl(40_11%_8%)] for hero cards on mobile.

Semantic Status Colors

StatusColorNotes
paidemeraldInvoice paid, settled
unpaidamberInvoice open, due
expiredrosePast-due, overdue
pausedwarm-grayPaused project, deferred
activecopperIn-progress, current

Typography

TokenFamilyUse
font-sansOutfit VariableDisplay + body (default)
font-displayDM Serif DisplaySelective desktop serif accents
font-monosystem monospaceCode, numbers

Mobile font choice

Mobile uses font-sans (Outfit) for headings — NOT font-display (DM Serif Display). font-display was a pre-mortem fix; the serif read poorly at small mobile sizes.

Mobile Application Rules

  • Hero cardsbg-[hsl(40_11%_8%)] warm-black background, white text, copper progress fills
  • Selected pills (WeekStrip, StatusFilterPills, BottomTabs active indicator + label + icon) — copper background with warm-black text
  • Hero progress bars — copper fill (bg-[hsl(31_53%_64%)])
  • ProjectHealthCard “green” status dot — copper (replaces emerald default)
  • Morning ritual CTA — copper-tinted background + border + eyebrow
  • Form submit buttons — stay zinc-900 for accessibility contrast (copper on white doesn’t pass WCAG AA)
  • BottomTabs active-pill indicator — 2px-tall copper bar above the active tab
  • Sign outtext-rose-600 (the only place rose appears outside expired/error states)

Drawer & Sheet Surfaces

  • Drawer bodybg-white (light theme on mobile)
  • Scrim — warm scrim, NOT default zinc/black overlay
  • Inputs/selects — explicit text colors needed because of the invisible-dropdown-text bug: a <select> with appearance-none + a Lucide ChevronDown overlay rendered with no visible text on iOS. Fix: explicit text-zinc-900 on the select and placeholder:text-zinc-400.

Where Tokens Live

packages/ui/src/styles/globals.css   # CSS variables on :root
packages/tailwind-config/src/preset.ts  # Tailwind preset wires tokens