Mission Control 设计系统 设计系统.

Mission Control 设计系统 设计系统 — 太空/航空任务监控。深色指挥中心,琥珀色遥测数据,等宽字体精度。功能清晰至上。

在真实场景中查看

同一套设计 token 应用于不同类型的产物——网站、应用、幻灯片、海报。这些是用该系统重新换肤的原创样稿,而非截图。

网站
幻灯片
应用
海报

设计 token

56 个 token,符合 Open Design 的 token 契约——你的 agent 读取的正是这套结构化的配色、字体、间距和动效值,用以为任意产物设定主题。

表面

  • --bg #090b12
  • --surface #121722
  • --surface-warm #1b2233

文本

  • --fg #f8fafc
  • --fg-2 #cbd5e1
  • --muted #94a3b8
  • --meta #60a5fa

边框

  • --border #2a3447
  • --border-soft #1d2636

强调色

  • --accent #60a5fa
  • --accent-on #06101d
  • --accent-hover color-mix(in oklab, var(--accent), black 8%)
  • --accent-active color-mix(in oklab, var(--accent), black 14%)

语义

  • --success #26de81
  • --warn #fbbf24
  • --danger #ff4757

字体排印

  • --font-display Inter, system-ui, sans-serif
  • --font-body Inter, system-ui, sans-serif
  • --font-mono "SF Mono", ui-monospace, Menlo, monospace

字号层级

  • --text-xs 11px
  • --text-sm 12px
  • --text-base 14px
  • --text-lg 16px
  • --text-xl 20px
  • --text-2xl 28px
  • --text-3xl 40px
  • --text-4xl 56px
  • --leading-body 1.45
  • --leading-tight 1.06
  • --tracking-display -0.025em

间距

  • --space-1 4px
  • --space-2 8px
  • --space-3 12px
  • --space-4 16px
  • --space-5 20px
  • --space-6 24px
  • --space-8 32px
  • --space-12 48px
  • --section-y-desktop 80px
  • --section-y-tablet 60px
  • --section-y-phone 42px

圆角

  • --radius-sm 10px
  • --radius-md 16px
  • --radius-lg 24px
  • --radius-pill 9999px

层级阴影

  • --elev-flat none
  • --elev-ring 0 0 0 1px var(--border)
  • --elev-raised 0 24px 72px rgba(0, 0, 0, 0.42)

聚焦

  • --focus-ring 0 0 0 4px rgba(96, 165, 250, 0.28)

动效

  • --motion-fast 100ms
  • --motion-base 180ms
  • --ease-standard cubic-bezier(0.2, 0, 0, 1)

布局

  • --container-max 1280px
  • --container-gutter-desktop 36px
  • --container-gutter-tablet 24px
  • --container-gutter-phone 16px

Mission Control Design System

Category: Developer Tools Space/aerospace mission monitoring. Dark command center, amber telemetry, monospace precision. Functional clarity above all else.

1. Visual Theme & Atmosphere

A deep space command center — dark, information-dense, unambiguous. Every pixel earns its place. The aesthetic draws from NASA mission control rooms, SpaceX launch consoles, and ISRO’s mission operations complex. Amber data on navy is the core contrast pair; everything else is subdued.

ElementHexRole
Background#0B1120Deep space navy, primary canvas
Surface#111827Elevated panels, cards
Surface Hover#1A2535Interactive surface hover
Border#1E3A5FPanel dividers, subtle structure
Primary Data#FFB800Telemetry values, key metrics
Accent#00D4FFActive/healthy indicators
Alert#FF4757Critical warnings, errors
Text Primary#E8F0FEHigh-contrast readable text
Text Secondary#8BA3C7Labels, secondary information
Text Tertiary#4A6080Timestamps, metadata

Every readout must be readable at 3 meters in low light by someone who hasn’t slept in 18 hours.

Use Cases

Mission Control is purpose-built for:

  • Operations dashboards — real-time system health, infrastructure monitoring, on-call status boards
  • Build and deploy status screens — CI/CD pipelines, release coordination, incident response
  • Real-time monitoring UIs — telemetry aggregation, sensor networks, financial data feeds
  • Any information-dense, low-light, high-stakes display

Prior Art

NASA Mission Control (Houston), ISRO ISTRAC, SpaceX Falcon/Dragon consoles, ESA ESOC — all share amber-on-navy telemetry, monospace data fields, and hierarchical alert systems. The shared constraints (low light, fatigue, split-second decisions) drive convergent design.

2. Color

Surface Palette

TokenHexUsage
Background#0B1120Page canvas, primary depth
Surface#111827Panels, cards, elevated areas
Surface Hover#1A2535Interactive surface state
Surface Active#1E3A5FSelected, active panel
Border#1E3A5FPanel dividers, grid lines
Border Subtle#162035Inner dividers, minor separation

Data Palette (telemetry values)

TokenHexUsage
Primary#FFB800Primary telemetry values, key metrics
Secondary#00D4FFHealthy/active indicators, links
Alert Critical#FF4757Errors, critical alerts, abort states
Alert Warning#FF9F43Warnings, degraded performance
Success#26DE81Nominal status, completed actions

All data colors on #111827 pass WCAG AA (minimum 4.5:1).

Text Palette

TokenHexUsage
Primary#E8F0FEReadable at distance, primary content
Secondary#8BA3C7Labels, descriptors
Tertiary#4A6080Timestamps, metadata, grid labels

Dark Mode

Dark mode is the native mode. No light mode variant by design — mission control environments are always low-light (ISRO ISTRAC, NASA FDO, SpaceX launch consoles all run dark). daytime operations centers with high ambient light are outside scope for v1; a light mode adaptation would require rethinking the full semantic color layer.

:root {
  --bg-default: #0B1120;
  --bg-surface: #111827;
  --bg-surface-hover: #1A2535;
  --bg-surface-active: #1E3A5F;
  --border-default: #1E3A5F;
  --border-subtle: #162035;
  --data-primary: #FFB800;
  --data-secondary: #00D4FF;
  --data-alert-critical: #FF4757;
  --data-alert-warning: #FF9F43;
  --data-success: #26DE81;
  --fg-primary: #E8F0FE;
  --fg-secondary: #8BA3C7;
  --fg-tertiary: #4A6080;
}

Consumable bindings in tokens.css mirror the telemetry palette as --success (#26DE81) and --danger (#FF4757).

3. Typography

Font Stack

/* Monospace for all data readouts — consistency at speed */
--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;

/* Sans-serif for labels, navigation, prose */
--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

Type Scale

RoleSizeWeightLine HeightFont
Display48px7001.0JetBrains Mono
H118px6001.2Inter
H213px6001.2Inter, uppercase, tracked
Body14px4001.5Inter
Caption12px4001.4Inter
Micro10px6001.0Inter, uppercase

Font labels for catalog extraction:

Display: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace
Body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif
Mono: "JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace

4. Spacing

4px baseline grid for dense telemetry layouts. 8px for outer padding, 16px+ for section gaps.

--space-1: 4px;   --space-2: 8px;   --space-3: 12px;  --space-4: 16px;
--space-5: 20px;  --space-6: 24px;  --space-8: 32px;   --space-12: 48px;
--space-16: 64px; --space-20: 80px;

5. Layout & Composition

Grid System

12-column grid, 4px gutters. Dense information layout — no wasted whitespace, but clear visual grouping.

/* Standard panel: spans 3, 4, or 6 columns */
.panel {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: 4px;
  padding: var(--space-4);
}

/* Full-width telemetry strip */
.telemetry-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--space-2);
}

Panel Structure

/* .panel base styles are defined in the Grid System section above. */

.panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-3);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--border-subtle);
}

.panel-title {
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fg-secondary);
}

6. Components

Status Badge

/* Nominal — green, all clear */
.badge-nominal {
  background: rgba(38, 222, 129, 0.15);
  color: #26DE81;
  border: 1px solid rgba(38, 222, 129, 0.3);
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 2px 8px;
  border-radius: 2px;
}

/* Warning — amber, attention needed */
.badge-warning {
  background: rgba(255, 159, 67, 0.15);
  color: #FF9F43;
  border: 1px solid rgba(255, 159, 67, 0.3);
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 2px 8px;
  border-radius: 2px;
}

/* Critical — red, immediate action */
.badge-critical {
  background: rgba(255, 71, 87, 0.15);
  color: #FF4757;
  border: 1px solid rgba(255, 71, 87, 0.3);
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 2px 8px;
  border-radius: 2px;
}

Data Tile

/* Single metric display */
.data-tile {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: 4px;
  padding: var(--space-3);
}

.data-tile-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fg-secondary);
  margin-bottom: var(--space-1);
}

.data-tile-value {
  font-family: var(--font-mono);
  font-size: 24px;
  font-weight: 700;
  color: var(--data-primary);
  line-height: 1.0;
}

.data-tile-unit {
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 400;
  color: var(--fg-tertiary);
  margin-left: 4px;
}

Countdown Timer

/* T-minus / T-plus display */
.countdown {
  font-family: var(--font-mono);
  font-size: 48px;
  font-weight: 700;
  color: var(--data-primary);
  line-height: 1.0;
  letter-spacing: -0.02em;
}

.countdown-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--fg-tertiary);
}

/* Positive delta (T+) — time after event */
.countdown.positive { color: var(--data-success); }

/* At T-0 */
.countdown.zero { color: var(--data-secondary); animation: pulse-glow 2s ease-in-out infinite; }

@keyframes pulse-glow {
  0%, 100% { text-shadow: 0 0 8px currentColor; }
  50% { text-shadow: 0 0 20px currentColor, 0 0 40px currentColor; }
}

Signal Strength Indicator

/* Vertical bar signal meter */
.signal-bars {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  height: 20px;
}

.signal-bar {
  width: 4px;
  background: var(--border-default);
  border-radius: 1px;
}

.signal-bar.active.weak    { background: var(--data-alert-warning); }
.signal-bar.active.moderate { background: var(--data-primary); }
.signal-bar.active.strong  { background: var(--data-secondary); }

.signal-bar:nth-child(1) { height: 5px; }
.signal-bar:nth-child(2) { height: 8px; }
.signal-bar:nth-child(3) { height: 12px; }
.signal-bar:nth-child(4) { height: 16px; }

Alert Banner

/* Full-width critical alert */
.alert-banner {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  background: rgba(255, 71, 87, 0.1);
  border: 1px solid rgba(255, 71, 87, 0.4);
  border-left: 4px solid #FF4757;
  border-radius: 4px;
  padding: var(--space-3) var(--space-4);
}

.alert-banner-icon {
  color: #FF4757;
  flex-shrink: 0;
}

.alert-banner-text {
  font-size: 14px;
  font-weight: 500;
  color: #FF4757;
}

.alert-banner-time {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--fg-tertiary);
  margin-left: auto;
  flex-shrink: 0;
}

Coordinate Display

/* Latitude / Longitude / Altitude readout */
.coordinate {
  font-family: var(--font-mono);
  font-size: 14px;
  color: var(--data-secondary);
}

.coordinate-label {
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fg-tertiary);
  margin-bottom: 2px;
}

Progress Bar

/* Mission phase / upload / loading progress */
.progress-bar {
  height: 4px;
  background: var(--border-default);
  border-radius: 2px;
  overflow: hidden;
}

.progress-bar-fill {
  height: 100%;
  background: var(--data-secondary);
  border-radius: 2px;
  transition: width 300ms ease-out;
}

.progress-bar-fill.warning { background: var(--data-alert-warning); }
.progress-bar-fill.critical { background: var(--data-alert-critical); }

Telemetry Chart Line

/* Sparkline chart for data over time */
.telemetry-chart {
  height: 40px;
  display: flex;
  align-items: flex-end;
  gap: 1px;
}

.telemetry-chart-bar {
  flex: 1;
  background: var(--data-primary);
  border-radius: 1px 1px 0 0;
  min-width: 2px;
}

.telemetry-chart-bar.alert { background: var(--data-alert-critical); }
.telemetry-chart-bar.warning { background: var(--data-alert-warning); }

7. Motion & Interaction

InteractionDurationEasingEffect
Alert pulse2sease-in-outGlow intensity oscillation (loop)
Panel appear200msease-outOpacity 0→1
Value change150msease-outBackground flash on new data
Progress fill300msease-outWidth transition
Hover state100msease-inBorder color brightens
--transition-fast: 100ms ease-in;
--transition-base: 150ms ease-out;
--transition-slow: 300ms ease-out;

prefers-reduced-motion

Static environments are common in mission control. Replace all animations with instant state changes.

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

8. Voice & Brand

Iconography

Minimal, functional iconography — Lucide icons (stroke weight 1.5px, 16px default). No decorative icons. Every icon must communicate operational state.

Tone

  • Precise: Data-first, no marketing language
  • Sparse: The UI speaks through values and color, not prose
  • Hierarchical: Visual urgency maps directly to operational urgency

Visual Signals

Color is the primary signal carrier. Every color choice must communicate operational state — never decorative.

9. Anti-patterns

  • Do not use decorative colors in data displays — every hue must convey operational meaning
  • Do not use rounded corners > 4px — mission control is functional, not friendly
  • Do not use proportional fonts for telemetry values — use monospace exclusively for data
  • Do not animate non-alert elements — motion is reserved for signals that matter
  • Do not use light mode — low-light environments are the only context
  • Do not use low-contrast text on dark backgrounds — tertiary #4A6080 is only for non-critical metadata (timestamps, grid labels)
模式
design-system
场景
design
形态
web
Manifest ID
design-system-mission-control

标签

  • design-system
  • first-party
  • design
  • developer-tools