Cybersteel Design System
Overview
Cybersteel is a retrofuturist design system built in direct opposition to modern "fluffy, bloated, web slop" software. It channels the excitement and optimism of early computing — the era when a computer felt like a portal to the future, not a distraction machine.
The system is grounded in three technical principles:
- Rock-solid reliability — nothing crashes, flickers, or stutters
- High performance — things load instantly, no layout shifts, no spinner theatre
- Radical directness — do not waste the user's time; get the job done and get out of the way
The visual language is a direct expression of these values. It is not decoration for its own sake — every visual choice maps to a technical or philosophical intent.
Retrofuturist inspirations:
- Art Deco (1920s–40s): geometric precision, gold ornament, symmetry, angular forms
- Gruvbox color theme: warm dark backgrounds, muted earth tones, vivid accent colors
- Fallout game series: amber CRT glow, terminal aesthetics, atomic-age optimism
Sources provided: None (this design system was created from description only). No Figma links, codebases, or existing assets were supplied.
CONTENT FUNDAMENTALS
Voice & Tone
- Direct, imperative, technical. Address the user as a capable adult. No hand-holding.
- Second person ("you"), present tense. "Your build failed." Not "It looks like there may have been an issue with your build."
- No filler words, no exclamation points, no emoji. Cybersteel copy never says "Great job!" or "Looks like something went wrong 😬"
- Sparse. Every word must earn its place. Delete the adjectives. Delete "currently." Delete "simply."
- Confident. No hedging ("might," "perhaps," "it seems"). State facts.
- Technical vocabulary is welcomed, not dumbed down. Users are professionals.
Casing
- UI labels: Title Case for navigation, Sentence case for body, ALL CAPS for status indicators and section headers
- Headings: Title Case preferred at H1/H2, sentence case for H3+
- Buttons: ALL CAPS or Title Case, never mixed
Examples of Good Cybersteel Copy
BUILD COMPLETE — 1.4s✓ vs.Your build finished successfully!✗No results.✓ vs.Hmm, we couldn't find anything matching that query 🔍✗Access denied.✓ vs.Oops! It looks like you don't have permission to view this.✗47 errors. Fix them.✓ vs.There are some issues we need to address together 😅✗
What Cybersteel Never Says
- "Oops", "Whoops", "Uh oh", "Hmm"
- "We're working on it", "Bear with us"
- "Looks like...", "It seems like..."
- "Please don't hesitate to..."
- Emoji of any kind in product UI
VISUAL FOUNDATIONS
Color
Based on the Gruvbox palette — warm, dark, earthy. Not cool blue-grey like modern dark modes. The warmth evokes old paper, amber screens, and aged metal.
- Backgrounds: Very dark warm browns/blacks. Not pure
#000000— always warm. - Foreground: Warm cream/ivory, never pure white
- Accent — Gold: The signature color. Art Deco gold, amber terminal glow. Used sparingly: borders, highlights, interactive states.
- Accent — Red: Danger, errors, critical alerts
- Accent — Green: Success, safe, complete
- Accent — Blue/Teal: Info, links, cool technical elements
- Accent — Orange: Warnings, in-progress, hot paths
- All accent colors have a dim (bg-facing) and bright (fg-facing) variant
See styles.css for all tokens.
Typography
Primary brand typeface: IBM Plex Sans. Used for display, body, and condensed roles by default. Self-hosted from /fonts (woff2). Weights available: 300, 400, 500, 600, 700 (plus 300/400/500 italic). SIL OFL — free for commercial and embedded use.
Primary monospace: IBM Plex Mono. Used for --font-mono — code, terminal output, data values, timestamps, and any tabular or log-like content where character alignment matters. Same designer, same skeletal proportions, so it sits cleanly next to Plex Sans on the same screen. Same weights, same license, same self-hosting.
Three semantic roles:
- Display (
--font-display): Titles, hero text, section headers. → Plex Sans, 600–700 weight, ALL CAPS with wide tracking at H1/H2. - Body (
--font-body, also--font-condensed): UI text, labels, descriptions, prose. → Plex Sans, 400–500. - Mono (
--font-mono): Code, terminal output, data values, timestamps. → Plex Mono.
Mono mode (opt-in)
For surfaces where the terminal aesthetic IS the point — consoles, status dashboards, IDE-like internal tools, hardware-grade hero moments — flip the whole surface into Plex Mono with the .mono-mode class. Display, body, and condensed all resolve to Plex Mono; structural CSS is unchanged.
<body class="mono-mode"> … </body>
Or scope it manually:
:root { --font-display: var(--font-mono); --font-body: var(--font-mono); --font-condensed: var(--font-mono); }
Do not introduce Orbitron, Barlow, Share Tech Mono, or any other family. If something looks like it needs a different typeface, the answer is weight, size, tracking, casing — or a deliberate switch to Mono mode for the whole surface.
Type scale is based on a 1.25 modular ratio. Minimum body size: 14px (web), 12pt (print).
Spacing
8px base grid. All spacing tokens are multiples of 4px, with the main scale in multiples of 8px.
Backgrounds
- Default: dark warm bg, no images
- Feature sections: translucent gradient overlays (warm amber/gold tints at low opacity, ~5–12%)
- Cards: slightly lighter bg than page, with a 1px warm border
- NO full-bleed photography unless explicitly specified
- Subtle geometric Art Deco texture possible via CSS (repeating-linear-gradient patterns)
- Scan line overlays at very low opacity (~3–5%) acceptable for terminal-style elements
Gradients
- Simple, translucent, warm-toned
- Direction: top-to-bottom or diagonal (135deg)
- Used as overlays, not solid fills
- Colors: gold/amber → transparent, or bg-dark → bg-darker
- Never rainbow, never cool-toned, never noisy
Borders
- 1px solid is the standard — always visible, always crisp
- Color:
--border(warm mid-grey) for structural,--gold-dimfor decorative/Art Deco accents - Hairline Art Deco ornament: thin double-line borders (
border-bottom: 1px + offset) for headings - Corner radius: 0–4px max. Sharp corners preferred. Cybersteel does not round its corners like a toy.
Cards
background: --bg-active(one step lighter than page)border: 1px solid --borderborder-radius: 2px- Subtle inner shadow on hover:
inset 0 0 0 1px --gold-dim - No drop shadows — flat, structural, mechanical
Animation & Motion
- Fast and purposeful. No decorative animations.
- Transitions:
150ms ease-out(UI state changes),80ms linear(cursor/immediate) - No bounce, no spring, no elastic
- No enter/exit animations on simple UI elements
- Allowed: fade-in on modals/overlays (
200ms ease), scanline flicker on terminal elements - Hover: color shift only — no scale, no float, no glow explosion
Hover & Press States
- Hover: text/icon brightens (fg2 → fg1 → fg0 progression), border lightens
- Press/Active: slight background darken (
bg1 → bg0), border becomes gold - Focus: 1px gold outline, 2px offset — crisp, not blurry
- No
box-shadow: 0 0 20px goldglow effects
Iconography
- Geometric, minimal, monochromatic
- Stroke-based (not filled)
- Lucide Icons (CDN) as primary icon set — closest to the aesthetic
- No emoji in UI; unicode geometric characters (▶ ■ ◆ ▲) acceptable as decorative elements
- See ICONOGRAPHY section below
Imagery
- Minimal imagery in UI
- When used: high contrast, desaturated or warm-toned, grain optional
- No stock photo cheerfulness
- Amber/sepia toning preferred
Transparency & Blur
backdrop-filter: blur()used sparingly — overlays/modals only- Translucent surfaces:
background: rgba(var(--bg-surface-rgb), 0.85) - Never used purely decoratively
Layout
- Fixed sidebar widths (e.g. 240px, 280px)
- 8-column or 12-column grid for content areas
- Generous whitespace within dense information — breathe between groups, not within them
- Fixed header/nav is acceptable; sticky sidebars acceptable
- No carousels, no infinite scroll decorativeness
ICONOGRAPHY
Primary set: Lucide Icons (https://unpkg.com/lucide@latest/dist/umd/lucide.min.js)
- Stroke-based, 24px grid, 1.5px stroke weight by default
- Matches the precise, geometric character of the design system
- Scale to 16px (compact), 20px (default), 24px (prominent)
- Color: inherit from text context — no separate icon colors unless semantic (red for error, etc.)
Substitution flag: No custom icon font was provided. Lucide is used as the nearest available match. If Cybersteel has a proprietary icon set, replace Lucide references in ui_kits/ and update this section.
Supplementary unicode glyphs (Art Deco ornament):
◆◇— diamond separator▸▾— directional indicators■□— toggle/status squares═║╔╗╚╝— box-drawing for terminal chrome·— interpunct as list separator
Never use emoji in product UI.
FILE INDEX
README.md ← This file
SKILL.md ← Agent skill definition
styles.css ← All CSS custom properties (colors, type, spacing, effects)
assets/
texture-scanline.svg ← Scanline texture overlay
preview/
colors-base.html ← Base background/foreground palette
colors-accents.html ← Accent color swatches
colors-semantic.html ← Semantic color roles
type-display.html ← Display typeface specimen (Plex Sans)
type-body.html ← Body type scale (Plex Sans)
type-mono.html ← Monospace / terminal specimen (Plex Mono)
type-sans.html ← Sans vs. Mono mode comparison
spacing-tokens.html ← Spacing scale
borders-radius.html ← Border styles and radius tokens
shadows-elevation.html ← Shadow system
components-buttons.html ← Button variants and states
components-inputs.html ← Form input states
components-cards.html ← Card components
components-badges.html ← Badges and status indicators
components-nav.html ← Navigation patterns
ui_kits/
app/
README.md ← UI kit notes and component list
index.html ← Interactive app prototype
Layout.jsx ← Shell: sidebar + topbar + content area
Terminal.jsx ← Terminal/console component
DataTable.jsx ← Dense data table
StatusBar.jsx ← Bottom status bar
CommandPalette.jsx ← Keyboard-driven command palette