|
| 1 | +# CortexPilot Design System |
| 2 | + |
| 3 | +## Purpose |
| 4 | + |
| 5 | +This file is the canonical design system for CortexPilot's public front door, |
| 6 | +dashboard, and desktop control-plane surfaces. |
| 7 | + |
| 8 | +Read this as the design constitution for one specific product: |
| 9 | + |
| 10 | +- **Product identity**: an L0 AI engineering command tower |
| 11 | +- **Primary emotion**: calm authority under pressure |
| 12 | +- **Secondary emotion**: precise forward motion |
| 13 | +- **Never become**: a generic admin panel, a neon AI demo, or a marketing-only landing page |
| 14 | + |
| 15 | +If a page-specific override exists under `design-system/pages/`, that override |
| 16 | +may tighten or specialize the rules below, but it may not contradict the core |
| 17 | +product identity. |
| 18 | + |
| 19 | +## Atmosphere |
| 20 | + |
| 21 | +CortexPilot should feel like an architecture studio crossed with a mission |
| 22 | +control room. |
| 23 | + |
| 24 | +- **Density**: medium-high on control surfaces, medium on the public front door |
| 25 | +- **Variance**: asymmetric but disciplined |
| 26 | +- **Motion**: restrained, purposeful, low-noise |
| 27 | +- **Mood words**: deliberate, governed, exact, premium, anti-generic |
| 28 | + |
| 29 | +Interpretation: |
| 30 | + |
| 31 | +- The public front door should feel like a command deck briefing, not a SaaS |
| 32 | + hero with filler marketing sections. |
| 33 | +- The dashboard and desktop should feel like a cockpit: clear hierarchy, fast |
| 34 | + scanning, immediate understanding of what is happening now. |
| 35 | + |
| 36 | +## Typography |
| 37 | + |
| 38 | +- **Display / section headers**: `Space Grotesk` |
| 39 | +- **Body / operational text**: `Manrope` |
| 40 | +- **Code / IDs / timestamps / status tokens**: `JetBrains Mono` |
| 41 | + |
| 42 | +Rules: |
| 43 | + |
| 44 | +- Never use `Inter` for CortexPilot hero or cockpit surfaces. |
| 45 | +- Headings should signal confidence through weight and spacing, not giant scale. |
| 46 | +- Monospace belongs to machine facts only: run IDs, queue IDs, lane names, |
| 47 | + file refs, timestamps, contract artifacts. |
| 48 | +- Long prose blocks should stay narrow and readable; control-plane pages should |
| 49 | + bias toward short labels and dense lists. |
| 50 | + |
| 51 | +## Color System |
| 52 | + |
| 53 | +Use a dark-neutral command palette with one restrained action accent. |
| 54 | + |
| 55 | +| Role | Token | Value | Usage | |
| 56 | +| --- | --- | --- | --- | |
| 57 | +| Canvas | `--cp-bg` | `#0B1220` | app shell, dashboard canvas, desktop shell | |
| 58 | +| Surface | `--cp-surface` | `#111A2E` | cards, drawers, panels | |
| 59 | +| Surface Raised | `--cp-surface-raised` | `#17233B` | hover state, active cards, layered panels | |
| 60 | +| Ink | `--cp-ink` | `#E8EEF8` | primary text | |
| 61 | +| Muted | `--cp-muted` | `#9FB0C8` | descriptions, supporting labels | |
| 62 | +| Border | `--cp-border` | `rgba(159,176,200,0.16)` | separators, card outlines | |
| 63 | +| Accent | `--cp-accent` | `#1FB981` | primary CTA, healthy motion, selected action | |
| 64 | +| Warning | `--cp-warn` | `#E59A2F` | caution, queued attention | |
| 65 | +| Danger | `--cp-danger` | `#D95C5C` | failure, broken flow, hard alerts | |
| 66 | + |
| 67 | +Rules: |
| 68 | + |
| 69 | +- Keep one accent color only. |
| 70 | +- No purple glow, no neon blue gradients, no generic AI chroma. |
| 71 | +- Avoid pure black and pure white. CortexPilot should feel calibrated, not harsh. |
| 72 | +- Healthy status can use green, but do not let the whole UI become “green dashboard”. |
| 73 | + |
| 74 | +## Layout Principles |
| 75 | + |
| 76 | +- No generic three-equal-feature-card rows as the default answer. |
| 77 | +- Prefer a **briefing layout**: |
| 78 | + - headline and pain hook |
| 79 | + - one concise operator loop |
| 80 | + - one proof-oriented explanation |
| 81 | + - one adoption router |
| 82 | +- On control surfaces, favor: |
| 83 | + - top summary rail |
| 84 | + - primary action strip |
| 85 | + - left-to-right operational scan |
| 86 | + - explicit “what is blocked / what is next / where truth lives” |
| 87 | +- Group pages by operator intent, not by raw data type. |
| 88 | +- Use spacing via `gap-*`, not `space-*`. |
| 89 | +- Use semantic color tokens, not raw Tailwind color literals. |
| 90 | + |
| 91 | +## Component Rules |
| 92 | + |
| 93 | +### Buttons |
| 94 | + |
| 95 | +- Primary buttons should feel decisive, not loud. |
| 96 | +- Hover can slightly lift or brighten; avoid scale-jump hover behavior. |
| 97 | +- No emoji icons. Use purposeful SVG icons only. |
| 98 | + |
| 99 | +### Cards |
| 100 | + |
| 101 | +- Cards exist to communicate hierarchy, not because every dashboard needs cards. |
| 102 | +- High-density surfaces may use stacked bands, bordered sections, or inset |
| 103 | + panels instead of card farms. |
| 104 | + |
| 105 | +### Tables and Lists |
| 106 | + |
| 107 | +- Lists should optimize scan speed. |
| 108 | +- Important state should be visible in the first two rows/columns or the top summary band. |
| 109 | +- Dense surfaces must still preserve whitespace around critical actions. |
| 110 | + |
| 111 | +### Empty / degraded states |
| 112 | + |
| 113 | +- Never use cute filler copy. |
| 114 | +- Always answer: |
| 115 | + - what is missing |
| 116 | + - why it matters |
| 117 | + - what the next operator action is |
| 118 | + |
| 119 | +## Motion |
| 120 | + |
| 121 | +- Motion exists to reinforce operational state, not to entertain. |
| 122 | +- Default transitions: 150-250ms. |
| 123 | +- Use opacity / transform only. |
| 124 | +- Good motion examples: |
| 125 | + - live refresh resumed/paused feedback |
| 126 | + - lane state shift |
| 127 | + - drawer reveal |
| 128 | + - compare/proof section emphasis |
| 129 | +- Bad motion examples: |
| 130 | + - bouncing arrows |
| 131 | + - endless decorative shimmer |
| 132 | + - giant pulse effects around CTAs |
| 133 | + |
| 134 | +## Page Hierarchy Rules |
| 135 | + |
| 136 | +The product must visually teach this loop: |
| 137 | + |
| 138 | +1. **Plan** |
| 139 | +2. **Delegate** |
| 140 | +3. **Track** |
| 141 | +4. **Resume** |
| 142 | +5. **Prove** |
| 143 | + |
| 144 | +That means: |
| 145 | + |
| 146 | +- PM entry should feel like the start of the loop. |
| 147 | +- Command Tower should feel like the active cockpit. |
| 148 | +- Workflow Cases should feel like the durable operating record. |
| 149 | +- Run Detail / Compare should feel like the truth and replay room. |
| 150 | +- Policies / Agents / Contracts should feel like inspection and governance surfaces. |
| 151 | + |
| 152 | +## Copy Style |
| 153 | + |
| 154 | +- Prefer exact, operator-grade language over brand fluff. |
| 155 | +- Strong hooks are allowed, but must stay truthful. |
| 156 | +- Good: |
| 157 | + - `Stop babysitting AI coding work.` |
| 158 | + - `The command tower for AI engineering.` |
| 159 | + - `Proof before trust.` |
| 160 | +- Bad: |
| 161 | + - `Scroll to explore` |
| 162 | + - `Experience the future` |
| 163 | + - fake KPIs / fake SLAs / fake uptime banners |
| 164 | + |
| 165 | +## Anti-Patterns |
| 166 | + |
| 167 | +Never ship these into CortexPilot: |
| 168 | + |
| 169 | +- emoji icons |
| 170 | +- neon purple/blue AI gradients |
| 171 | +- generic glassmorphism for everything |
| 172 | +- fake metrics, fake percentages, fake activity charts |
| 173 | +- placeholder enterprise testimonial sections |
| 174 | +- “3 equal cards and a CTA” as the default dashboard/home layout |
| 175 | +- filler marketing verbs without operational meaning |
| 176 | +- dashboard chrome that hides Workflow Cases / Agents / Contracts as an afterthought |
| 177 | + |
| 178 | +## Implementation Notes |
| 179 | + |
| 180 | +- If `shadcn` patterns are used, prefer composition from existing primitives. |
| 181 | +- Use semantic colors and `gap-*`. |
| 182 | +- Keep overlay and z-index behavior minimal and inherited. |
| 183 | +- The dashboard and desktop should share a stable visual language, even if |
| 184 | + density differs. |
0 commit comments