Dark brushed metallic. Anthracite canvas with cool brushed-steel CTAs catching a polished top-edge highlight under directional light. Premium hardware in dark theme — pro tools, audio, automotive.
A complete design system, ready for your AI coding agent. Every primitive, token, and pattern below is generated straight from DESIGN.md — drop the file in your project and ship matching UI in minutes.
Prose-first token file — decisions live next to their reasoning.
Fine micro-scale (1–5px) for pills, editorial scale (12–21px) for the grid.
The system's own radius tokens — sm for chips and inputs, md for buttons, lg for cards, pill for fully-rounded CTAs.
1---2name: "Gunmetal Forge"3description: "Dark brushed metallic. Anthracite canvas with cool brushed-steel CTAs catching a polished top-edge highlight under directional light. Premium hardware in dark theme — pro tools, audio, automotive."4tags: [metallic, dark, premium, hardware, modern]5colors:6 primary: "#E8EAEE"7 secondary: "#8C95A0"8 tertiary: "#B8C0CC"9 neutral: "#181B20"10 surface: "#22262D"11typography:12 display: "Space Grotesk"13 body: Inter14 mono: "IBM Plex Mono"15 scale:16 hero: "4.5rem / 1.02 / 600 / -0.04em"17 h1: "2.75rem / 1.08 / 600 / -0.03em"18 h2: "1.5rem / 1.3 / 600 / -0.015em"19 body: "1rem / 1.6 / 400 / -0.005em"20radius:21 sm: 4px22 md: 6px23 lg: 8px24shadows:25 card: "0 0 0 1px rgba(255, 255, 255, 0.05), 0 12px 32px -16px rgba(0, 0, 0, 0.55)"26 button: "0 8px 20px -8px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.30), inset 0 -1px 0 rgba(0, 0, 0, 0.40)"27borders:28 card: "1px solid rgba(255, 255, 255, 0.06)"29 divider: "rgba(255, 255, 255, 0.08)"30buttons:31 primary:32 background: linear-gradient(180deg, #C8D0DC 0%, #8C95A0 50%, #4A525E 100%)33 color: #181B2034 border: 1px solid rgba(255, 255, 255, 0.22)35 shape: rounded36 padding: 12px 22px37 font: 600 / 0.9375rem / -0.01em38 shadow: 0 8px 20px -8px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.45), inset 0 -1px 0 rgba(0, 0, 0, 0.40)39 secondary:40 background: #22262D41 color: #E8EAEE42 border: 1px solid rgba(255, 255, 255, 0.10)43 shape: rounded44 padding: 12px 22px45 font: 500 / 0.9375rem / -0.005em46 outline:47 background: transparent48 color: #E8EAEE49 border: 1px solid rgba(255, 255, 255, 0.16)50 shape: rounded51 padding: 11px 21px52 font: 500 / 0.9375rem / -0.005em53 ghost:54 background: transparent55 color: #B8C0CC56 border: none57 shape: rounded58 padding: 11px 6px59 font: 500 / 0.9375rem / -0.005em60 hover: underline61charts:62 variant: "rounded-bars"63 stroke_width: 264 gridlines: false65 bar_radius: 3px66 bar_gap: 8px67 highlight: all68 axis_color: "#8C95A0"69 palette: ["#B8C0CC", "#7E8794", "#4A525E"]70fonts_url: "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap"71dependencies: ["lucide-react"]72---73 74# Gunmetal Forge75 76## AI Build Instructions77 78> **Read this section before writing any code.** The rules below79> are non-negotiable. Every value used in the UI must come from this80> file's frontmatter — never substitute, approximate, or invent new81> colors, fonts, radii, or shadows. If a value is missing, ask the82> user before adding one.83 84### 1 · Your role85 86You are building UI for a project that has adopted **Gunmetal Forge** as its87design system. Treat `DESIGN.md` as the single source of truth.88Your job is to translate the user's product requirements into89components and pages that look like they were designed by the same90person who authored this file.91 92### 2 · Token compliance93 94- Pull every color, font family, radius, shadow, and spacing value95 from the frontmatter at the top of this file.96- Use semantic roles (e.g. `primary`, `accent`, `muted`) — never97 hard-code hex values that bypass the system.98- When a token can be expressed as a CSS variable, declare it once99 in your global stylesheet and reference it everywhere downstream.100- The Google Fonts `<link>` is provided in the Typography section.101 Add it to `<head>` before any component renders.102 103### 3 · Component recipes104 105Use these recipes verbatim when building the corresponding component.106 107#### Buttons108 109Four variants are defined. Pick one — never blend variants or invent a fifth.110 111- **Primary** — rounded shape, bg `linear-gradient(180deg, #C8D0DC 0%, #8C95A0 50%, #4A525E 100%)`, text `#181B20`, border `1px solid rgba(255, 255, 255, 0.22)`, padding `12px 22px`, weight `600`, shadow `0 8px 20px -8px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.45), inset 0 -1px 0 rgba(0, 0, 0, 0.40)`.112- **Secondary** — rounded shape, bg `#22262D`, text `#E8EAEE`, border `1px solid rgba(255, 255, 255, 0.10)`, padding `12px 22px`, weight `500`.113- **Outline** — rounded shape, text `#E8EAEE`, border `1px solid rgba(255, 255, 255, 0.16)`, padding `11px 21px`, weight `500`.114- **Ghost** — rounded shape, text `#B8C0CC`, padding `11px 6px`, weight `500`.115 116Reach for **primary** as the single dominant CTA per screen.117**Secondary** for the supporting action. **Outline** for tertiary118actions in toolbars. **Ghost** for inline links and table actions.119 120#### Cards121 122- Background: `#22262D`123- Border: `1px solid rgba(255, 255, 255, 0.06)`124- Shadow: `0 0 0 1px rgba(255, 255, 255, 0.05), 0 12px 32px -16px rgba(0, 0, 0, 0.55)`125- Radius: `radius.lg` (`8px`)126- Internal padding: `20px` for compact cards, `24–28px` for content cards.127 128#### Charts129 130- Bar/line variant: `rounded-bars`131- Bar radius: `3px`132- No gridlines — let the bars/lines carry the data.133- Highlight strategy: `all` — emphasize a single bar/point per chart.134- Use the declared palette in order: `#B8C0CC`, `#7E8794`, `#4A525E`.135 136#### Typography pairings137 138- **Display (`Space Grotesk`)** — h1, h2, hero headlines, brand wordmarks.139- **Body (`Inter`)** — paragraphs, labels, button text, form inputs.140- **Mono (`IBM Plex Mono`)** — code, eyebrows, metadata, numerals in tables.141 142### 4 · Hard constraints143 144Never do any of the following without explicit instruction from the user:145 146- Introduce a new color, font, radius, or shadow that isn't declared above.147- Mix this system with another (e.g. don't paste in Material or Bootstrap defaults).148- Use generic gradient defaults (purple→blue, peach→pink) — they break the system's voice.149- Reach for emoji icons. Use a consistent icon library and size icons in line with body type.150- Add motion that exceeds the system's restraint — keep transitions short (≤200ms) and subtle.151 152### 5 · Before you finish — verify153 154Run through this checklist for every screen you produce:155 156- [ ] Every color used appears in the Colors table above.157- [ ] Headlines use the display font; body copy uses the body font.158- [ ] Buttons match one of the declared variants exactly (shape, padding, weight).159- [ ] Border-radius values come from `radius.sm` / `radius.md` / `radius.lg` / `radius.pill`.160- [ ] Cards and dividers use the declared border + shadow tokens.161- [ ] No values were invented; if you needed something missing, you stopped and asked.162 163---164 165## Overview166Gunmetal Forge is the dark counterpart to brushed-metal systems. Anthracite canvas, polished-steel CTA, no chromatic color anywhere. The metallic surface is rationed — primary CTA + one hero badge — and on the dark canvas it catches a top-edge highlight that reads as directional light hitting machined steel.167 168For premium hardware product pages shipping a dark theme: audio equipment, automotive interfaces, professional watches, pro tools, defense / aerospace adjacent products.169 170## The Metallic Recipe171The brushed-steel button is a vertical 3-stop gradient with a polished top-edge highlight + bottom-edge shadow. On the dark canvas the highlight reads as light catching a real surface:172 173```css174.gunmetal-cta {175 background: linear-gradient(180deg, #C8D0DC 0%, #8C95A0 50%, #4A525E 100%);176 color: #181B20;177 border: 1px solid rgba(255, 255, 255, 0.22);178 border-radius: 6px;179 box-shadow:180 inset 0 1px 0 rgba(255, 255, 255, 0.45), /* polished top-edge */181 inset 0 -1px 0 rgba(0, 0, 0, 0.40), /* bottom-edge shadow */182 0 8px 20px -8px rgba(0, 0, 0, 0.55); /* ambient drop */183}184```185 186The 50% mid-stop is the brushed band — without it the gradient reads as a flat grey button. The top-edge highlight at 45% white is the key on dark backgrounds; lower opacity dies, higher reads as plastic.187 188## Color189- **Moonlight #E8EAEE** — primary text.190- **Steel #8C95A0** — secondary text, axis labels.191- **Polished Steel #B8C0CC** — metallic top-stop, ghost button label.192- **Anthracite #181B20** — page canvas. Deep cool grey, not pure black.193- **Gunmetal #22262D** — card surface, lifted from the canvas.194 195Three neutrals + two metal stops. No chromatic color at all.196 197## Typography198- **Display: Space Grotesk 600** at 4.5rem with -4% tracking. Engineered neo-grotesque.199- **Body: Inter 400** at 1rem with 1.6 leading.200- **Mono: IBM Plex Mono 500** for spec callouts.201 202| Role | Font | Size | Weight | Tracking |203|------|------|------|--------|----------|204| Hero | Space Grotesk | 4.5rem | 600 | -0.04em |205| H1 | Space Grotesk | 2.75rem | 600 | -0.03em |206| H2 | Space Grotesk | 1.5rem | 600 | -0.015em |207| Body | Inter | 1rem | 400 | -0.005em / 1.6 |208| Spec | IBM Plex Mono | 0.8125rem | 500 | 0 |209 210## Geometry211- **Radii: 4 / 6 / 8.** Machined edges. Never pill, never soft.212- **Section gap: 96px** desktop, 64px mobile.213- **12-column grid** with 24px gutters.214 215## Buttons216- **Primary** — brushed steel gradient, anthracite label, polished top-edge highlight.217- **Secondary** — gunmetal surface, moonlight label, white hairline at 10%.218- **Outline** — bare hairline rectangle at 16% white.219- **Ghost** — polished-steel label, hover underline.220 221Primary always pairs with secondary in that order. Never two primaries on the same screen.222 223## Cards224Gunmetal surfaces on anthracite, 1px white hairline at 6% opacity, 6px corners, low cool ambient shadow. Padding 28px. Cards never use the metallic gradient — that surface belongs to the primary CTA only.225 226## Charts & Data227Three-bar histogram in three steps of steel (polished → mid → dark), 3px corner radius, 8px gap, no gridlines. Axis labels in steel at 11px. The chart reads like a measurement readout on an instrument panel.228 229## Do's and Don'ts230- ✅ Metallic surface only on primary CTA + one hero badge.231- ✅ The 50% mid-stop in the gradient is mandatory — it is the brushed band.232- ✅ Top-edge highlight at 45% white. Lower dies on the dark canvas.233- ✅ No chromatic color. Steel + anthracite is the entire palette.234- ❌ No metallic backgrounds. The metal is jewelry, not wallpaper.235- ❌ No second chromatic accent.236- ❌ No pill shape. Machined hardware doesn't round to a pill.237- ❌ No warm tints. The system is strictly cool.238 239---240 241## Tokens242 243> Generated from the same source the live preview renders from.244> Treat the values below as the contract — never substitute approximations.245 246### Colors247 248| Role | Value |249|-----------|-------|250| primary | `#E8EAEE` |251| secondary | `#8C95A0` |252| tertiary | `#B8C0CC` |253| neutral | `#181B20` |254| surface | `#22262D` |255 256### Typography257 258- **Display:** Space Grotesk259- **Body:** Inter260- **Mono:** IBM Plex Mono261 262| Role | size / leading / weight / tracking |263|------|------------------------------------|264| Hero | 4.5rem / 1.02 / 600 / -0.04em |265| H1 | 2.75rem / 1.08 / 600 / -0.03em |266| H2 | 1.5rem / 1.3 / 600 / -0.015em |267| Body | 1rem / 1.6 / 400 / -0.005em |268 269### Radius270 271- sm: `4px`272- md: `6px`273- lg: `8px`274 275### Shadows276 277- **card:** `0 0 0 1px rgba(255, 255, 255, 0.05), 0 12px 32px -16px rgba(0, 0, 0, 0.55)`278- **button:** `0 8px 20px -8px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.30), inset 0 -1px 0 rgba(0, 0, 0, 0.40)`279 280### Borders281 282- **card:** `1px solid rgba(255, 255, 255, 0.06)`283- **divider:** `rgba(255, 255, 255, 0.08)`284 285### Buttons286 287Four variants, each fully tokenized. The preview renders from these exact values.288 289#### Primary290 291| Property | Value |292|----------|-------|293| shape | `rounded` |294| background | `linear-gradient(180deg, #C8D0DC 0%, #8C95A0 50%, #4A525E 100%)` |295| color | `#181B20` |296| border | `1px solid rgba(255, 255, 255, 0.22)` |297| padding | `12px 22px` |298| fontWeight | `600` |299| fontSize | `0.9375rem` |300| tracking | `-0.01em` |301| shadow | `0 8px 20px -8px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.45), inset 0 -1px 0 rgba(0, 0, 0, 0.40)` |302 303#### Secondary304 305| Property | Value |306|----------|-------|307| shape | `rounded` |308| background | `#22262D` |309| color | `#E8EAEE` |310| border | `1px solid rgba(255, 255, 255, 0.10)` |311| padding | `12px 22px` |312| fontWeight | `500` |313| fontSize | `0.9375rem` |314| tracking | `-0.005em` |315 316#### Outline317 318| Property | Value |319|----------|-------|320| shape | `rounded` |321| background | `transparent` |322| color | `#E8EAEE` |323| border | `1px solid rgba(255, 255, 255, 0.16)` |324| padding | `11px 21px` |325| fontWeight | `500` |326| fontSize | `0.9375rem` |327| tracking | `-0.005em` |328 329#### Ghost330 331| Property | Value |332|----------|-------|333| shape | `rounded` |334| background | `transparent` |335| color | `#B8C0CC` |336| border | `none` |337| padding | `11px 6px` |338| fontWeight | `500` |339| fontSize | `0.9375rem` |340| tracking | `-0.005em` |341| hoverHint | `underline` |342 343### Charts344 345| Property | Value |346|----------|-------|347| variant | `rounded-bars` |348| strokeWidth | `2` |349| gridlines | `false` |350| barRadius | `3px` |351| barGap | `8px` |352| highlight | `all` |353| axisColor | `#8C95A0` |354| palette | `#B8C0CC`, `#7E8794`, `#4A525E` |355 # CLAUDE.md Reference @DESIGN.md for all styling decisions. Apply tokens strictly — do not introduce colors, fonts, or radii outside the system. When in doubt, prefer the values declared in DESIGN.md frontmatter.<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap" />npm install lucide-react// tailwind.config.jsexport default { theme: { extend: { fontFamily: { display: ['"Space Grotesk"', 'serif'], sans: ['"Inter"', 'sans-serif'], mono: ['"IBM Plex Mono"', 'monospace'], }, colors: { primary: '#E8EAEE', secondary: '#8C95A0', accent: '#B8C0CC', neutral: '#181B20', surface: '#22262D', }, borderRadius: { sm: '4px', md: '6px', lg: '8px', }, }, },};Radical 2-color duotone. Deep ink-blue and acid citron, with no third hue. Every surface is one of the two colors or a tint thereof — the constraint is the personality.
A complete design system, ready for your AI coding agent. Every primitive, token, and pattern below is generated straight from DESIGN.md — drop the file in your project and ship matching UI in minutes.
Extreme glassmorphism. Translucent panes float on a vivid aurora mesh — ultramarine, magenta, and mint cyan, blurred to 40px with 200% saturation. Every surface — cards, CTAs, even the primary button — is frosted glass. Nothing is opaque.
A complete design system, ready for your AI coding agent. Every primitive, token, and pattern below is generated straight from DESIGN.md — drop the file in your project and ship matching UI in minutes.