A near-black dark canvas where one cosmic grainy gradient does all the talking — deep indigo bleeds into magenta and ignites into warm amber, with real fractal-noise grain layered on top. Inter throughout, hairlines at 8% white, and the gradient burns through the primary CTA, the featured hero tile, and the active chart bar. Quiet space, hot bloom.
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: "Nebula Drift"3description: "A near-black dark canvas where one cosmic grainy gradient does all the talking — deep indigo bleeds into magenta and ignites into warm amber, with real fractal-noise grain layered on top. Inter throughout, hairlines at 8% white, and the gradient burns through the primary CTA, the featured hero tile, and the active chart bar. Quiet space, hot bloom."4tags: [grainy, gradient, dark, modern, premium]5colors:6 primary: "#f5f3ff"7 secondary: "#9690b8"8 tertiary: "#e2399a"9 neutral: "#0a0814"10 surface: "#13101f"11typography:12 display: Inter13 body: Inter14 mono: "JetBrains Mono"15 scale:16 hero: "4.75rem / 1 / 700 / -0.04em"17 h1: "2.875rem / 1.08 / 700 / -0.03em"18 h2: "1.625rem / 1.22 / 600 / -0.018em"19 body: "1.0625rem / 1.6 / 400 / -0.005em"20radius:21 sm: 10px22 md: 16px23 lg: 22px24 pill: 9999px25shadows:26 card: "rgba(0,0,0,0.4) 0 1px 2px, rgba(0,0,0,0.5) 0 18px 44px -18px"27 button: "rgba(226,57,154,0.40) 0 14px 32px -12px, rgba(255,138,61,0.28) 0 8px 22px -10px"28borders:29 card: "1px solid rgba(245,243,255,0.06)"30 divider: rgba(245,243,255,0.08)31buttons:32 primary:33 background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='280' height='280'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/></svg>"), radial-gradient(ellipse 75% 60% at 15% 85%, #ff8a3d 0%, transparent 55%), radial-gradient(ellipse 70% 75% at 85% 18%, #4a3cff 0%, transparent 55%), radial-gradient(ellipse 55% 65% at 58% 50%, #e2399a 0%, transparent 60%), linear-gradient(140deg, #2a1a6c 0%, #c92e8c 50%, #ff8a3d 100%)34 color: #ffffff35 border: none36 shape: rounded37 padding: 13px 24px38 font: 700 / 0.9375rem / -0.01em39 shadow: rgba(226,57,154,0.40) 0 14px 32px -12px, rgba(255,138,61,0.28) 0 8px 22px -10px40 secondary:41 background: rgba(245,243,255,0.08)42 color: #f5f3ff43 border: 1px solid rgba(245,243,255,0.10)44 shape: rounded45 padding: 13px 24px46 font: 600 / 0.9375rem47 outline:48 background: transparent49 color: #f5f3ff50 border: 1px solid rgba(245,243,255,0.18)51 shape: rounded52 padding: 13px 24px53 font: 600 / 0.9375rem54 ghost:55 background: transparent56 color: #9690b857 border: none58 shape: rounded59 padding: 13px 18px60 font: 600 / 0.9375rem61charts:62 variant: "rounded-bars"63 stroke_width: 1.564 fill_opacity: 0.1665 gridlines: false66 bar_gap: 10px67 dot_marker: true68 palette: [rgba(245,243,255,0.10), rgba(245,243,255,0.10), rgba(245,243,255,0.10), rgba(245,243,255,0.10), rgba(245,243,255,0.10), "#e2399a", rgba(245,243,255,0.10)]69fonts_url: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap"70dependencies: ["lucide-react"]71---72 73# Nebula Drift74 75## AI Build Instructions76 77> **Read this section before writing any code.** The rules below78> are non-negotiable. Every value used in the UI must come from this79> file's frontmatter — never substitute, approximate, or invent new80> colors, fonts, radii, or shadows. If a value is missing, ask the81> user before adding one.82 83### 1 · Your role84 85You are building UI for a project that has adopted **Nebula Drift** as its86design system. Treat `DESIGN.md` as the single source of truth.87Your job is to translate the user's product requirements into88components and pages that look like they were designed by the same89person who authored this file.90 91### 2 · Token compliance92 93- Pull every color, font family, radius, shadow, and spacing value94 from the frontmatter at the top of this file.95- Use semantic roles (e.g. `primary`, `accent`, `muted`) — never96 hard-code hex values that bypass the system.97- When a token can be expressed as a CSS variable, declare it once98 in your global stylesheet and reference it everywhere downstream.99- The Google Fonts `<link>` is provided in the Typography section.100 Add it to `<head>` before any component renders.101 102### 3 · Component recipes103 104Use these recipes verbatim when building the corresponding component.105 106#### Buttons107 108Four variants are defined. Pick one — never blend variants or invent a fifth.109 110- **Primary** — rounded shape, bg `url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='280' height='280'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/></svg>"), radial-gradient(ellipse 75% 60% at 15% 85%, #ff8a3d 0%, transparent 55%), radial-gradient(ellipse 70% 75% at 85% 18%, #4a3cff 0%, transparent 55%), radial-gradient(ellipse 55% 65% at 58% 50%, #e2399a 0%, transparent 60%), linear-gradient(140deg, #2a1a6c 0%, #c92e8c 50%, #ff8a3d 100%)`, text `#ffffff`, padding `13px 24px`, weight `700`, shadow `rgba(226,57,154,0.40) 0 14px 32px -12px, rgba(255,138,61,0.28) 0 8px 22px -10px`.111- **Secondary** — rounded shape, bg `rgba(245,243,255,0.08)`, text `#f5f3ff`, border `1px solid rgba(245,243,255,0.10)`, padding `13px 24px`, weight `600`.112- **Outline** — rounded shape, text `#f5f3ff`, border `1px solid rgba(245,243,255,0.18)`, padding `13px 24px`, weight `600`.113- **Ghost** — rounded shape, text `#9690b8`, padding `13px 18px`, weight `600`.114 115Reach for **primary** as the single dominant CTA per screen.116**Secondary** for the supporting action. **Outline** for tertiary117actions in toolbars. **Ghost** for inline links and table actions.118 119#### Cards120 121- Background: `#13101f`122- Border: `1px solid rgba(245,243,255,0.06)`123- Shadow: `rgba(0,0,0,0.4) 0 1px 2px, rgba(0,0,0,0.5) 0 18px 44px -18px`124- Radius: `radius.lg` (`22px`)125- Internal padding: `20px` for compact cards, `24–28px` for content cards.126 127#### Tabs128 129Variant: `underline`. Flat row of labels. Active tab gets a 2px underline in the accent color — no fill.130 131#### Charts132 133- Bar/line variant: `rounded-bars`134- No gridlines — let the bars/lines carry the data.135- Use the declared palette in order: `rgba(245,243,255,0.10)`, `rgba(245,243,255,0.10)`, `rgba(245,243,255,0.10)`, `rgba(245,243,255,0.10)`, `rgba(245,243,255,0.10)`, `#e2399a`, `rgba(245,243,255,0.10)`.136 137#### Typography pairings138 139- **Display (`Inter`)** — h1, h2, hero headlines, brand wordmarks.140- **Body (`Inter`)** — paragraphs, labels, button text, form inputs.141- **Mono (`JetBrains Mono`)** — code, eyebrows, metadata, numerals in tables.142 143### 4 · Hard constraints144 145Never do any of the following without explicit instruction from the user:146 147- Introduce a new color, font, radius, or shadow that isn't declared above.148- Mix this system with another (e.g. don't paste in Material or Bootstrap defaults).149- Use generic gradient defaults (purple→blue, peach→pink) — they break the system's voice.150- Reach for emoji icons. Use a consistent icon library and size icons in line with body type.151- Add motion that exceeds the system's restraint — keep transitions short (≤200ms) and subtle.152 153### 5 · Before you finish — verify154 155Run through this checklist for every screen you produce:156 157- [ ] Every color used appears in the Colors table above.158- [ ] Headlines use the display font; body copy uses the body font.159- [ ] Buttons match one of the declared variants exactly (shape, padding, weight).160- [ ] Border-radius values come from `radius.sm` / `radius.md` / `radius.lg` / `radius.pill`.161- [ ] Cards and dividers use the declared border + shadow tokens.162- [ ] No values were invented; if you needed something missing, you stopped and asked.163 164---165 166## 1. Atmosphere167 168Nebula Drift is a near-black canvas where one cosmic grainy gradient does the work — deep indigo bleeds into magenta and ignites into warm amber, with real SVG fractal-noise grain layered on top. The surface is `#0a0814` (near-black with a faint indigo cast), cards lift to `#13101f`, and the gradient lives in exactly three places: the primary CTA, the featured hero tile, and the active bar of the chart. Inter at 400/600/700 carries every word; numbers in JetBrains Mono.169 170The discipline is **negative space on the dark canvas**. Hairlines at 8% white only — no decorative borders, no glow halos, no second accent. The gradient is the entire color identity.171 172**Signature moves**173- Cosmic three-stop grainy gradient (indigo → magenta → amber bloom) with **real fractal-noise grain** via inline SVG `feTurbulence`174- Near-black canvas (`#0a0814`) with a faint indigo cast — true black would kill the gradient's depth175- Magenta `#e2399a` picked from the gradient mid, used only on active chart bar + tab underline176- Two-color drop shadow under the CTA: magenta + amber, low opacity, wide spread — the bloom escapes the box177- Inter at 700 in 76px display, -0.04em tracking — calm modern grotesk against the bloom178 179## 2. The grainy gradient (copy this exactly)180 181Inline SVG `feTurbulence` at baseFrequency `0.95`, two octaves, stitched. The dark canvas needs a slightly higher noise frequency than the light systems so grain reads through the deeper hues. Three radial blooms over a 140° linear base — indigo anchor bottom-left is replaced by an amber anchor (warm against deep blue), magenta anchors top-right.182 183```css184background:185 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='280' height='280'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.5'/></svg>"),186 radial-gradient(ellipse 75% 60% at 15% 85%, #ff8a3d 0%, transparent 55%),187 radial-gradient(ellipse 70% 75% at 85% 18%, #4a3cff 0%, transparent 55%),188 radial-gradient(ellipse 55% 65% at 58% 50%, #e2399a 0%, transparent 60%),189 linear-gradient(140deg, #2a1a6c 0%, #c92e8c 50%, #ff8a3d 100%);190```191 192The noise alpha is 0.5 (lower than the light systems) — dark backgrounds amplify grain visually, so less is more.193 194### Stop palette195- **Indigo** `#2a1a6c` / radial `#4a3cff` — top-right counter-anchor196- **Magenta** `#c92e8c` / radial `#e2399a` — center bloom + accent extraction197- **Amber** `#ff8a3d` — bottom-left anchor (warm fights the cold indigo)198 199## 3. Palette200 201### Surface202- **Void** `#0a0814` — page background (near-black with faint indigo cast — never `#000`)203- **Lift** `#13101f` — cards, sheets204- **Edge** `rgba(245,243,255,0.06)` — hairline borders205- **Glass** `rgba(245,243,255,0.08)` — secondary button fill206 207### Ink208- **Star** `#f5f3ff` — text, headings (warm white with violet cast)209- **Star 60** `#9690b8` — secondary text, mono labels210 211### Accent (single)212- **Magenta** `#e2399a` — extracted from the gradient's mid radial, used only on active chart bar + active tab underline213 214## 4. Typography215 216| Role | Font | Size | Weight | Leading | Tracking |217|------|------|------|--------|---------|----------|218| Hero | Inter | 76px | 700 | 1.0 | -0.04em |219| H1 | Inter | 46px | 700 | 1.08 | -0.03em |220| H2 | Inter | 26px | 600 | 1.22 | -0.018em |221| Body | Inter | 17px | 400 | 1.6 | -0.005em |222| UI / Button | Inter | 15px | 700 | 1.4 | -0.01em |223| Number | JetBrains Mono | 13px | 500 | 1.0 | 0 |224 225Inter at three weights: 400 / 600 / 700. The 800 weight is reserved for the optional oversized KPI inside the featured tile.226 227## 5. Buttons228 229### Primary (Grainy Gradient Box)230```css231background: /* full gradient stack from §2 */;232color: #ffffff;233padding: 13px 24px;234border-radius: 16px;235box-shadow:236 rgba(226,57,154,0.40) 0 14px 32px -12px,237 rgba(255,138,61,0.28) 0 8px 22px -10px;238font: 700 15px/1.4 Inter;239letter-spacing: -0.01em;240```241 242The two-color shadow (magenta + amber) is the bloom escaping the box — it picks up the gradient's hot stops and lets them hover under the button.243 244### Secondary (Glass)245```css246background: rgba(245,243,255,0.08);247border: 1px solid rgba(245,243,255,0.10);248color: #f5f3ff;249```250 251### Outline & Ghost252- Outline: transparent, 1px hairline at 18% star253- Ghost: no border, star-60, hover lifts to star254 255## 6. The Featured tile256 257The featured hero tile uses the **same** gradient stack. Inside: white display headline at 30px in Inter 700. Mono label "Featured" at 11px uppercase 0.12em tracking, color `rgba(255,255,255,0.78)`.258 259## 7. Charts260 261Rounded bars (pill ends), 10px gap. Six bars at 10% star (warm white). **One bar in magenta** `#e2399a` — the gradient's mid radial. The eye reads the magenta bar as active because it visually rhymes with the CTA's bloom.262 263## 8. Tabs264 265Underline 1.5px in magenta `#e2399a`. Inactive tabs in Inter 600 star-60. Hover lifts to star.266 267## 9. Spacing268 269- Base 4px270- Scale: `4, 8, 12, 16, 20, 24, 32, 48, 64, 96`271- Section padding: 96px desktop, 48px mobile272 273## 10. Do's & don'ts274 275✅ **Do**276- Use the full gradient stack from §2 verbatim — the noise frequency 0.95 is calibrated for the dark canvas277- Apply the gradient exactly three times: CTA, featured tile, active chart bar278- Use `#0a0814` (near-black with indigo cast), never pure `#000` — true black flattens the gradient279- Layer two colored shadows under the CTA: magenta + amber, low opacity, wide spread280 281❌ **Don't**282- Use a 2-stop dark gradient (e.g. purple → blue) — this is multi-stop with grain, never the cliché283- Add a third accent hue — magenta carries every "look here" moment alone284- Apply the gradient to cards, headers, or sidebar — block-level on three surfaces only285- Skip the SVG noise — on a dark canvas the gradient flattens to gradient-stock without it286 287---288 289## Tokens290 291> Generated from the same source the live preview renders from.292> Treat the values below as the contract — never substitute approximations.293 294### Colors295 296| Role | Value |297|-----------|-------|298| primary | `#f5f3ff` |299| secondary | `#9690b8` |300| tertiary | `#e2399a` |301| neutral | `#0a0814` |302| surface | `#13101f` |303 304### Typography305 306- **Display:** Inter307- **Body:** Inter308- **Mono:** JetBrains Mono309 310| Role | size / leading / weight / tracking |311|------|------------------------------------|312| Hero | 4.75rem / 1 / 700 / -0.04em |313| H1 | 2.875rem / 1.08 / 700 / -0.03em |314| H2 | 1.625rem / 1.22 / 600 / -0.018em |315| Body | 1.0625rem / 1.6 / 400 / -0.005em |316 317### Radius318 319- sm: `10px`320- md: `16px`321- lg: `22px`322- pill: `9999px`323 324### Shadows325 326- **card:** `rgba(0,0,0,0.4) 0 1px 2px, rgba(0,0,0,0.5) 0 18px 44px -18px`327- **button:** `rgba(226,57,154,0.40) 0 14px 32px -12px, rgba(255,138,61,0.28) 0 8px 22px -10px`328 329### Borders330 331- **card:** `1px solid rgba(245,243,255,0.06)`332- **divider:** `rgba(245,243,255,0.08)`333 334### Buttons335 336Four variants, each fully tokenized. The preview renders from these exact values.337 338#### Primary339 340| Property | Value |341|----------|-------|342| shape | `rounded` |343| background | `url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='280' height='280'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/></svg>"), radial-gradient(ellipse 75% 60% at 15% 85%, #ff8a3d 0%, transparent 55%), radial-gradient(ellipse 70% 75% at 85% 18%, #4a3cff 0%, transparent 55%), radial-gradient(ellipse 55% 65% at 58% 50%, #e2399a 0%, transparent 60%), linear-gradient(140deg, #2a1a6c 0%, #c92e8c 50%, #ff8a3d 100%)` |344| color | `#ffffff` |345| border | `none` |346| padding | `13px 24px` |347| fontWeight | `700` |348| fontSize | `0.9375rem` |349| tracking | `-0.01em` |350| shadow | `rgba(226,57,154,0.40) 0 14px 32px -12px, rgba(255,138,61,0.28) 0 8px 22px -10px` |351 352#### Secondary353 354| Property | Value |355|----------|-------|356| shape | `rounded` |357| background | `rgba(245,243,255,0.08)` |358| color | `#f5f3ff` |359| border | `1px solid rgba(245,243,255,0.10)` |360| padding | `13px 24px` |361| fontWeight | `600` |362| fontSize | `0.9375rem` |363 364#### Outline365 366| Property | Value |367|----------|-------|368| shape | `rounded` |369| background | `transparent` |370| color | `#f5f3ff` |371| border | `1px solid rgba(245,243,255,0.18)` |372| padding | `13px 24px` |373| fontWeight | `600` |374| fontSize | `0.9375rem` |375 376#### Ghost377 378| Property | Value |379|----------|-------|380| shape | `rounded` |381| background | `transparent` |382| color | `#9690b8` |383| border | `none` |384| padding | `13px 18px` |385| fontWeight | `600` |386| fontSize | `0.9375rem` |387 388### Charts389 390| Property | Value |391|----------|-------|392| variant | `rounded-bars` |393| strokeWidth | `1.5` |394| fillOpacity | `0.16` |395| gridlines | `false` |396| barGap | `10px` |397| dotMarker | `true` |398| palette | `rgba(245,243,255,0.10)`, `rgba(245,243,255,0.10)`, `rgba(245,243,255,0.10)`, `rgba(245,243,255,0.10)`, `rgba(245,243,255,0.10)`, `#e2399a`, `rgba(245,243,255,0.10)` |399 # 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=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" />npm install lucide-react// tailwind.config.jsexport default { theme: { extend: { fontFamily: { display: ['"Inter"', 'serif'], sans: ['"Inter"', 'sans-serif'], mono: ['"JetBrains Mono"', 'monospace'], }, colors: { primary: '#f5f3ff', secondary: '#9690b8', accent: '#e2399a', neutral: '#0a0814', surface: '#13101f', }, borderRadius: { sm: '10px', md: '16px', lg: '22px', }, }, },};Fintech-grade clarity on white. Whisper-weight 300 display headlines, deep navy ink, electric violet accents, and signature blue-tinted multi-layer shadows.
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.
A music platform that sounds like late-night radio looks. Deep charcoal surfaces with a faint vertical warmth, Instrument Serif italic for album titles, Inter for everything else, a single burnt-amber accent reserved for the now-playing state. Built for music streaming, label sites, and audio products that want warmth in the dark without leaning on neon.
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.