diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b1d27fe
--- /dev/null
+++ b/README.md
@@ -0,0 +1,225 @@
+# 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.
+
+```html
+
…
+```
+
+Or scope it manually:
+```css
+: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-dim` for 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 --border`
+- `border-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 gold` glow 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
+```
diff --git a/assets/texture-scanline.svg b/assets/texture-scanline.svg
new file mode 100644
index 0000000..e246dd1
--- /dev/null
+++ b/assets/texture-scanline.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/fonts/IBMPlexMono-Bold.woff2 b/fonts/IBMPlexMono-Bold.woff2
new file mode 100644
index 0000000..262a671
Binary files /dev/null and b/fonts/IBMPlexMono-Bold.woff2 differ
diff --git a/fonts/IBMPlexMono-Italic.woff2 b/fonts/IBMPlexMono-Italic.woff2
new file mode 100644
index 0000000..0e72669
Binary files /dev/null and b/fonts/IBMPlexMono-Italic.woff2 differ
diff --git a/fonts/IBMPlexMono-Light.woff2 b/fonts/IBMPlexMono-Light.woff2
new file mode 100644
index 0000000..7e404fe
Binary files /dev/null and b/fonts/IBMPlexMono-Light.woff2 differ
diff --git a/fonts/IBMPlexMono-LightItalic.woff2 b/fonts/IBMPlexMono-LightItalic.woff2
new file mode 100644
index 0000000..380decc
Binary files /dev/null and b/fonts/IBMPlexMono-LightItalic.woff2 differ
diff --git a/fonts/IBMPlexMono-Medium.woff2 b/fonts/IBMPlexMono-Medium.woff2
new file mode 100644
index 0000000..99c2610
Binary files /dev/null and b/fonts/IBMPlexMono-Medium.woff2 differ
diff --git a/fonts/IBMPlexMono-MediumItalic.woff2 b/fonts/IBMPlexMono-MediumItalic.woff2
new file mode 100644
index 0000000..f534ad6
Binary files /dev/null and b/fonts/IBMPlexMono-MediumItalic.woff2 differ
diff --git a/fonts/IBMPlexMono-Regular.woff2 b/fonts/IBMPlexMono-Regular.woff2
new file mode 100644
index 0000000..a6c77d6
Binary files /dev/null and b/fonts/IBMPlexMono-Regular.woff2 differ
diff --git a/fonts/IBMPlexMono-SemiBold.woff2 b/fonts/IBMPlexMono-SemiBold.woff2
new file mode 100644
index 0000000..59e4f52
Binary files /dev/null and b/fonts/IBMPlexMono-SemiBold.woff2 differ
diff --git a/fonts/IBMPlexSans-Bold.woff2 b/fonts/IBMPlexSans-Bold.woff2
new file mode 100644
index 0000000..953f94f
Binary files /dev/null and b/fonts/IBMPlexSans-Bold.woff2 differ
diff --git a/fonts/IBMPlexSans-Italic.woff2 b/fonts/IBMPlexSans-Italic.woff2
new file mode 100644
index 0000000..cf026fe
Binary files /dev/null and b/fonts/IBMPlexSans-Italic.woff2 differ
diff --git a/fonts/IBMPlexSans-Light.woff2 b/fonts/IBMPlexSans-Light.woff2
new file mode 100644
index 0000000..d0a42af
Binary files /dev/null and b/fonts/IBMPlexSans-Light.woff2 differ
diff --git a/fonts/IBMPlexSans-LightItalic.woff2 b/fonts/IBMPlexSans-LightItalic.woff2
new file mode 100644
index 0000000..bf4bb42
Binary files /dev/null and b/fonts/IBMPlexSans-LightItalic.woff2 differ
diff --git a/fonts/IBMPlexSans-Medium.woff2 b/fonts/IBMPlexSans-Medium.woff2
new file mode 100644
index 0000000..6d5527e
Binary files /dev/null and b/fonts/IBMPlexSans-Medium.woff2 differ
diff --git a/fonts/IBMPlexSans-MediumItalic.woff2 b/fonts/IBMPlexSans-MediumItalic.woff2
new file mode 100644
index 0000000..3c57765
Binary files /dev/null and b/fonts/IBMPlexSans-MediumItalic.woff2 differ
diff --git a/fonts/IBMPlexSans-Regular.woff2 b/fonts/IBMPlexSans-Regular.woff2
new file mode 100644
index 0000000..f0ee65d
Binary files /dev/null and b/fonts/IBMPlexSans-Regular.woff2 differ
diff --git a/fonts/IBMPlexSans-SemiBold.woff2 b/fonts/IBMPlexSans-SemiBold.woff2
new file mode 100644
index 0000000..08c0d5a
Binary files /dev/null and b/fonts/IBMPlexSans-SemiBold.woff2 differ
diff --git a/preview/borders-radius.html b/preview/borders-radius.html
new file mode 100644
index 0000000..159702c
--- /dev/null
+++ b/preview/borders-radius.html
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
35% — translucent so the halo reads as a soft accent, not a hard second ring
+
— transition
--transition-hover (150ms ease-out)
+
+
+
+
Press
background + border --gold-bright · text #fff · halo cleared
+
— transition
--transition-press (55ms ease-out) on enter, --transition-hover on release
+
— mirrors
.btn-secondary:active — same press treatment as ghost-style buttons
+
+
+
The hover halo only appears when a card is actually interactive. Surface cards (data display) get no hover effect at all — clickable cards opt in via class or semantic element. Press fills with gold-bright to match the secondary-button click pattern, so a clicked card reads consistently with the rest of the interactive system.
50% opacity — keeps the green signal on focus rather than overriding to gold.
+
+
+
Semantic states (invalid/verified) preserve their color through focus so meaning doesn't flip on interaction. Their dim variants read quieter than gold-dim at the same opacity, so they're bumped to 50% to match perceived intensity.
Selection lights up the existing structural rule rather than introducing new chrome. The topbar's bottom divider becomes gold under the active tab; the sidebar leans entirely on typographic contrast — cream & bold for active, muted for the rest.
+
+
+
+
+
+
01
+
Top Tabs
+
Lit divider — the bottom rule glows gold under the active tab.
+
✓ Locked
+
+
+
+
+
Cybersteel
+
Dashboard
+
Nodes
+
Builds
+
Alerts
+
Logs
+
Settings
+
+
CONTENT
+
+
+
+
+
+
+
+
02
+
Side Nav
+
Bare brightness — active item is cream & bold; rest are muted.
+ Explore the complete visual language through 16 focused references.
+ Start with the foundations, inspect the type system, then move through structure,
+ effects, components, and live interaction states.
+
+
+
+
+
16Reference pages
+
04System groups
+
07Live demos
+
00Remote assets
+
+
+
+
+
+
+
+
+
+ /
+
+
+
+
+
+
+
+
+
+ 01 / 04
+
Foundations
+
Core color primitives. Review the base surfaces, accent ramps, and semantic roles before applying the system.
Node 07 offline — failover to node 08 complete. All traffic rerouted.
+
+
+
Light · 13px · 300
+
Secondary labels, helper text, timestamps
+
+
+
+
◆ Display · IBM Plex Sans
+
+ Display, body, and condensed roles all resolve to IBM Plex Sans by default.
+ For console / status / hardware-grade surfaces, flip to Mono mode with
+ class="mono-mode" on the surface root — see type-sans.html.
+ --font-mono is always Plex Mono for code, data, and timestamps.
+
Node 07 offline. Failover to node 08 complete. All inbound traffic rerouted within 1.4 seconds. No data loss recorded.
+
+
+
Caption · 11 / 600 · caps · mono
+
Status · Active · 1.4s
+
+
+
+
+
+ Plex Mono · alt
+ OPT-IN
+
+
+
+
Display · 32 / 700
+
Build Complete
+
+
+
H2 · 22 / 600 · caps
+
Deploy Pipeline
+
+
+
Body · 14 / 400
+
Node 07 offline. Failover to node 08 complete. All inbound traffic rerouted within 1.4 seconds. No data loss recorded.
+
+
+
Caption · 11 / 600 · caps
+
Status · Active · 1.4s
+
+
+
+
+
+
+
◇ Default (Sans)
+
IBM Plex Sans is the primary face. Display, body, and condensed roles all resolve to it by default. Use it for documentation, dashboards, settings, forms, marketing pages, and any prose-heavy or proportional-label-heavy surface.
+
--font-mono is always IBM Plex Mono — code blocks, terminal output, data values, and timestamps stay monospaced regardless of mode.
+
+
+
+
◇ When to switch to Mono mode
+
+
Console / terminal / IDE-like internal tools where the terminal aesthetic IS the point.
+
Status dashboards dominated by tabular, log-like, or numeric data.
+
Hero / masthead moments meant to feel hardware-grade and mechanical.
+
+
+
+
+
◇ How to switch
+
Apply .mono-mode at the surface root. Children inherit. Display, body, and condensed all flip to Plex Mono.
One mode per application (or per major surface). Do not mix Sans and Mono body text on the same screen — the rhythm clash breaks the system. Mono for code, data, status badges, and timestamps is always allowed and expected, even in Sans surfaces.