Design Audit · July 2026
Executive Light
— The Spoils.ai Design System
This document defines the canonical design language for spoils.ai. The product is already visually consistent — this codifies the rules so the implementation matches the intent. Use this as the reference for all future UI work.
01 — Current State
Codebase Problems
The product looks consistent, but the code is not. These colors appear in the right places visually — they just aren't connected to a token system, making future updates brittle.
02 — Proposed System
Design Token Palette
The canonical color system. Every color in the product maps to exactly one named token. Token names are the source of truth — hex values can be updated centrally.
Neutrals & Surfaces
Ocean — Primary Accent (Positive)
Negative — Warning / Decline
03 — Typography
Type Ladder
Inter across 7 defined steps. All sizes defined in px, tracked in a token map. Use only these sizes — never arbitrary intermediate values.
font-variant-numeric: tabular-nums to prevent layout jitter. Micro-labels are always uppercase + tracked.
04 — Components
Component Library
Canonical implementations of the core UI patterns. Every component below is built using tokens, not hardcoded values.
KPI Stat Block
Signal Pills
Card Component
Data Table
05 — Code Patterns
Anti-patterns vs Correct
Common mistakes found in the current codebase, and the correct token-based approach.
tailwind.config.ts and all 2,108 instances update automatically.06 — Responsive System
Desktop vs Mobile
Executive Light adapts across three breakpoints. Below are the rules and live demos of the same components at desktop and mobile widths.
- Single column layout
- KPI value: 22px (↓ from 32px)
- Card padding: 14px (↓ from 20px)
- Tables → stacked rows
- Touch targets ≥ 44px
- No horizontal scroll
- 2-column grid max
- KPI value: 26px
- Card padding: 16px
- Tables: horizontal scroll
- Nav: collapsed sidebar
- Charts: simplified labels
- 3–4 column KPI grid
- KPI value: 32px
- Card padding: 20px
- Full data tables
- Expanded sidebar nav
- Hover states active
Live Viewport Comparison — Same Component, Two Widths
⚠️ Current Mobile Anti-patterns
width: 760px) that overflow on mobile without a max-width: 100%; overflow-x: auto wrapper.
overflow-x: auto containers, causing horizontal page scroll rather than table-scoped scroll — a common source of broken mobile layouts.
clamp(22px, 5vw, 32px) or explicit breakpoint overrides.