Skip to content

Style Guide

Wilson’s design language is Forensic Noir — a financial investigator’s terminal. Clean, precise, confident, a bit cinematic. Case files meet modern interfaces.

  • Editorial precision — Every element earns its place. No decoration.
  • Utilitarian confidence — Tools that look like they work.
  • Cinematic restraint — The drama is in the data, not the chrome.
  • Investigator’s clarity — Information hierarchy is everything.
  • Not Swiss/International — Too neutral, too corporate.
  • Not cyberpunk/hacker — Chaos undermines trust.
  • Not fintech-pastel — No rounded-corner cards with gradients.
  • Not brutalist — Direct, not hostile.

Trust + Edge. A bank’s reliability with an investigator’s sharpness.

TokenHexRole
money#22c55ePrimary. Actions, confirmations, headings.
money-light#86efacHighlights, selected items, links
ledger#e5e7ebPrimary body text
ink#9ca3afSecondary text, metadata
carbon#374151Borders, separators
slate#1f2937Panels, cards
void#111827Page background
TokenHexRole
alert#ef4444Errors, anomalies, overspending
caution#f59e0bWarnings, approaching limits
lead#06b6d4Info callouts, hyperlinks
  1. Green is money. Use for anything the user should act on.
  2. Signal colors are semantic only. Never decorative.
  3. Dark by default. void background, ledger text.
  4. Muted is most of the UI. ink and carbon carry the bulk.
ElementFontWeight
Display/heroSpace Grotesk700
HeadlinesSpace Grotesk600
BodyInter400
Code/dataJetBrains Mono400
CaptionsInter400
  1. No all-caps body text. Uppercase for tiny labels only.
  2. Left-aligned everything. Center only hero headlines.
  3. Numbers are first-class — currency and counts should be prominent.
  4. Monospace for money — amounts always in JetBrains Mono.
PrincipleExample
Direct, not decorative”You spent $340 on dining” not “Your dining expenditure totaled approximately $340”
Active voice always”Cancel this subscription” not “This subscription could be cancelled”
Financial verbsAudit, track, reconcile, flag, surface, follow
Dry humor, sparinglyIn thinking verbs and empty states. Never in error messages.
No jargon”You’re spending more than you earn” not “Negative cash flow detected”
Respect the messNever judgmental about spending. Matter-of-fact.
  1. Headlines: Imperative or declarative. “Follow the money.”
  2. CTAs: Short verb phrases. “Get started.” “Import transactions.”
  3. Error messages: Say what happened, then what to do.
  4. Empty states: Brief, useful.
  5. Marketing copy: Lead with the pain.
  • TypeScript strict mode
  • ESM modules (import/export, no require)
  • Zod for runtime validation
  • Descriptive variable names over comments
  • @/* path alias for imports
  • Bun test runner for tests