# Mission Control Style Guide > "Mission Control in the Void" — a futuristic command center floating in a digital void. --- ## 1. Design Philosophy Mission Control uses a deep-navy void aesthetic with luminous cyan accents. The visual language evokes a space-age command center: dark surfaces, glowing edges, monospace readouts, and subtle grid patterns that anchor UI elements in a digital void. Key principles: - **Dark by default** — app defaults to dark mode (`enableSystem={false}`) - **Semantic tokens** — all colors flow through CSS custom properties - **Additive light** — glow effects and luminous borders create depth without bright fills - **Motion with purpose** — animations signal state, never decoration --- ## 2. Color System ### Void Palette (Dark Mode) | Token | CSS Variable | HSL | Hex | Usage | |-------|-------------|-----|-----|-------| | Background | `--background` | `215 27% 4%` | #07090C | Page background, deepest layer | | Card | `--card` | `220 30% 8%` | #0F141C | Panel/card surfaces | | Primary | `--primary` | `187 82% 53%` | #22D3EE | Primary actions, focus rings | | Secondary | `--secondary` | `220 25% 11%` | — | Secondary surfaces | | Muted | `--muted` | `220 20% 14%` | — | Disabled states, subtle fills | | Border | `--border` | `220 20% 14%` | — | Card/panel borders | | Foreground | `--foreground` | `210 20% 92%` | — | Primary text | ### Accent Colors | Name | CSS Variable | HSL | Hex | Usage | |------|-------------|-----|-----|-------| | Cyan | `--void-cyan` | `187 82% 53%` | #22D3EE | Primary accent, active states | | Mint | `--void-mint` | `160 60% 52%` | #34D399 | Success, healthy states | | Amber | `--void-amber` | `38 92% 50%` | #F59E0B | Warning, idle states | | Violet | `--void-violet` | `263 90% 66%` | #A78BFA | Lead agents, special roles | | Crimson | `--void-crimson` | `0 72% 51%` | #DC2626 | Errors, destructive actions | ### Surface Hierarchy | Level | CSS Variable | HSL | Usage | |-------|-------------|-----|-------| | 0 | `--surface-0` | `215 27% 4%` | Deepest void (page bg) | | 1 | `--surface-1` | `222 35% 7%` | Dark navy (elevated cards) | | 2 | `--surface-2` | `220 30% 10%` | Secondary panels | | 3 | `--surface-3` | `220 25% 14%` | Raised elements, borders | ### Using Colors in Code **Tailwind classes** (preferred): ```html
``` **Inline styles** (ReactFlow, recharts): ```ts import { hsl, voidAccents } from '@/styles/design-tokens' const stroke = hsl(voidAccents.cyan) // "hsl(187 82% 53%)" const dim = hsl(voidAccents.cyan, 0.4) // "hsl(187 82% 53% / 0.4)" ``` --- ## 3. Typography | Role | Font | CSS Variable | Tailwind Class | |------|------|-------------|----------------| | Body/UI | Inter | `--font-sans` | `font-sans` | | Code/Data | JetBrains Mono | `--font-mono` | `font-mono` | Both fonts are loaded via `next/font/google` (self-hosted, no external requests). ### Type Scale Follow Tailwind's default scale. Key usage: - `text-2xl font-bold font-mono` — stat card values - `text-sm font-medium` — labels, nav items - `text-xs font-mono` — metadata, timestamps, model names - `text-[10px] tracking-wider font-semibold` — section headers (OBSERVE, AUTOMATE, etc.) --- ## 4. Spacing Base grid: **4px** Use Tailwind's spacing scale (1 = 0.25rem = 4px). Panel padding is typically `p-4` (16px) or `p-6` (24px). Gaps between grid items use `gap-6` (24px). --- ## 5. Border Radius | Token | Value | Usage | |-------|-------|-------| | `rounded-xl` | 16px | Large panels, modals | | `rounded-lg` | 12px | Standard panels, cards | | `rounded-md` | 10px | Buttons, inputs | | `rounded-sm` | 8px | Small elements | | `rounded-xs` | 6px | Badges, tags | --- ## 6. Elevation & Glow ### Glow Utilities | Class | Color | Usage | |-------|-------|-------| | `.glow-cyan` | Cyan | Active states, primary focus | | `.glow-mint` | Mint | Success states | | `.glow-amber` | Amber | Warning states | | `.glow-violet` | Violet | Special/lead roles | ### Badge Glow | Class | Usage | |-------|-------| | `.badge-glow-success` | Success status badges | | `.badge-glow-warning` | Warning status badges | | `.badge-glow-error` | Error status badges | ### Panel Classes | Class | Description | |-------|-------------| | `.void-panel` | Glass card with luminous border, inner highlight, float shadow | | `.void-border-glow` | Animated gradient border via `::before` pseudo-element | | `.panel` | Basic card: `bg-card border rounded-xl` | | `.btn-neon` | Button with cyan glow on hover | --- ## 7. Component Patterns ### Panel Anatomy ```html

Title

``` ### Stat Card - Use `void-panel` base - Numeric values: `font-mono text-2xl font-bold` - Icons: SVG, 24x24 (w-6 h-6), colored with void accent classes - Color-specific glow via `badge-glow-*` classes ### Agent Node (ReactFlow) - Base: `void-panel` with status-based border color - Active: `border-void-cyan glow-cyan` - Idle: `border-void-amber/50` - Error: `border-void-crimson badge-glow-error` - Badges: `font-mono text-xs` with accent background/border ### CORE Node - Central orchestration hub in agent network - Concentric pulsing rings (CSS keyframes, no framer-motion) - `font-mono tracking-widest` for "CORE" label --- ## 8. Animation ### Keyframe Inventory | Name | Duration | Effect | Usage | |------|----------|--------|-------| | `glowPulse` | 3s | Opacity + brightness oscillation | Active agent indicators | | `float` | 6s | Vertical float (-6px) | Floating UI elements | | `gridFlow` | 20s | Background position shift | Background grid animation | | `edgeGlow` | 2s | Opacity oscillation | Border glow effects | | `pulse-live` | 2s | Opacity fade | Live status indicators | | `pulse-dot` | 2s | Scale + opacity | Connection status dots | ### Guidelines - Prefer CSS `@keyframes` over JavaScript animation - Duration: 2-3s for ambient loops, 150-200ms for interactions - Easing: `ease-in-out` for loops, `ease-out` for entrances - Always respect `prefers-reduced-motion: reduce` --- ## 9. Icon System - **ViewBox**: `0 0 16 16` - **Style**: Stroke-based, not filled - **Stroke width**: `1.5` - **Line caps/joins**: `round` - **Size in UI**: `w-5 h-5` (nav), `w-4 h-4` (inline), `w-6 h-6` (stat cards) - **Color**: Inherits via `stroke="currentColor"` Example: ```tsx ``` --- ## 10. Accessibility ### Contrast - Text on void background: minimum 4.5:1 ratio (WCAG AA) - `--foreground` (92% lightness) on `--background` (4% lightness) exceeds 15:1 - Cyan accent on dark: 5.2:1 — passes AA for normal text ### Focus Indicators - Use `ring` utility: `focus-visible:ring-2 focus-visible:ring-ring` - Ring color matches `--void-cyan` ### Reduced Motion Global rule in `globals.css`: ```css @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } ``` ### Semantic HTML - Nav uses `role="navigation"` and `aria-label` - Active nav items use `aria-current="page"` - Disabled items use `aria-disabled` - Decorative elements use `aria-hidden="true"`