Warm grainy aurora applied with restraint — amber bleeds into coral and softens into violet, with real fractal-noise grain layered on top. Inter throughout, generous bone-white surfaces, and the gradient appears in exactly two places: the primary CTA and the featured hero tile. Everything else stays calm so the bloom carries.
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: "Aurora Haze"3description: "Warm grainy aurora applied with restraint — amber bleeds into coral and softens into violet, with real fractal-noise grain layered on top. Inter throughout, generous bone-white surfaces, and the gradient appears in exactly two places: the primary CTA and the featured hero tile. Everything else stays calm so the bloom carries."4tags: [grainy, gradient, modern, premium, light]5colors:6 primary: "#171419"7 secondary: "#6b6470"8 tertiary: "#ef5a8a"9 neutral: "#fbf8f5"10 surface: "#ffffff"11typography:12 display: Inter13 body: Inter14 mono: "JetBrains Mono"15 scale:16 hero: "4.5rem / 1.02 / 700 / -0.04em"17 h1: "2.75rem / 1.1 / 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(23,20,25,0.04) 0 1px 2px, rgba(23,20,25,0.06) 0 14px 36px -16px"27 button: "rgba(240,102,148,0.28) 0 10px 24px -10px, rgba(140,92,255,0.22) 0 6px 18px -8px"28borders:29 card: "1px solid rgba(23,20,25,0.06)"30 divider: rgba(23,20,25,0.08)31buttons:32 primary:33 background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' 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.55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/></svg>"), radial-gradient(ellipse 90% 70% at 12% 88%, #ff8a4c 0%, transparent 55%), radial-gradient(ellipse 70% 80% at 88% 12%, #c47bff 0%, transparent 55%), radial-gradient(ellipse 50% 60% at 55% 50%, #ff6b9b 0%, transparent 60%), linear-gradient(135deg, #ffb27a 0%, #f06694 45%, #8c5cff 100%)34 color: #ffffff35 border: none36 shape: rounded37 padding: 12px 22px38 font: 700 / 0.9375rem39 shadow: rgba(240,102,148,0.28) 0 10px 24px -10px, rgba(140,92,255,0.22) 0 6px 18px -8px40 secondary:41 background: #17141942 color: #fbf8f543 border: none44 shape: rounded45 padding: 12px 22px46 font: 600 / 0.9375rem47 outline:48 background: transparent49 color: #17141950 border: 1px solid rgba(23,20,25,0.16)51 shape: rounded52 padding: 12px 22px53 font: 600 / 0.9375rem54 ghost:55 background: transparent56 color: #6b647057 border: none58 shape: rounded59 padding: 12px 18px60 font: 600 / 0.9375rem61charts:62 variant: "rounded-bars"63 stroke_width: 1.564 fill_opacity: 0.1265 gridlines: false66 bar_gap: 10px67 dot_marker: true68 palette: [rgba(23,20,25,0.10), rgba(23,20,25,0.10), rgba(23,20,25,0.10), "#f06694", rgba(23,20,25,0.10), rgba(23,20,25,0.10), rgba(23,20,25,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# Aurora Haze74 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 **Aurora Haze** 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='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' 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.55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/></svg>"), radial-gradient(ellipse 90% 70% at 12% 88%, #ff8a4c 0%, transparent 55%), radial-gradient(ellipse 70% 80% at 88% 12%, #c47bff 0%, transparent 55%), radial-gradient(ellipse 50% 60% at 55% 50%, #ff6b9b 0%, transparent 60%), linear-gradient(135deg, #ffb27a 0%, #f06694 45%, #8c5cff 100%)`, text `#ffffff`, padding `12px 22px`, weight `700`, shadow `rgba(240,102,148,0.28) 0 10px 24px -10px, rgba(140,92,255,0.22) 0 6px 18px -8px`.111- **Secondary** — rounded shape, bg `#171419`, text `#fbf8f5`, padding `12px 22px`, weight `600`.112- **Outline** — rounded shape, text `#171419`, border `1px solid rgba(23,20,25,0.16)`, padding `12px 22px`, weight `600`.113- **Ghost** — rounded shape, text `#6b6470`, padding `12px 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: `#ffffff`122- Border: `1px solid rgba(23,20,25,0.06)`123- Shadow: `rgba(23,20,25,0.04) 0 1px 2px, rgba(23,20,25,0.06) 0 14px 36px -16px`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(23,20,25,0.10)`, `rgba(23,20,25,0.10)`, `rgba(23,20,25,0.10)`, `#f06694`, `rgba(23,20,25,0.10)`, `rgba(23,20,25,0.10)`, `rgba(23,20,25,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 168Aurora Haze is a calm bone-white surface with one hot moment: a multi-stop grainy aurora gradient that runs amber → coral → soft violet, with real SVG fractal-noise grain layered on top. The gradient lives in exactly two places — the primary CTA and the featured hero tile — so it always reads as a deliberate bloom, never decoration. Inter carries every word at 400/600/700; numbers shift to JetBrains Mono. Surfaces are flat ivory, hairlines at 6% ink, generous white space.169 170The discipline is in placement: the gradient is never repeated on a third surface. Buttons that aren't the CTA fall back to graphite, outline, or ghost. The chart uses muted graphite bars except for one column rendered in coral — the visual rhyme tells you "this is the active value" without copy.171 172**Signature moves**173- Multi-stop grainy gradient (amber → coral → violet) with **real fractal-noise grain** baked in via an inline SVG `feTurbulence` data URI174- Gradient appears exactly twice per screen: primary CTA + featured hero tile175- The **active bar** in the chart picks up the coral stop from the gradient — visual rhyme176- Bone-white surface (`#fbf8f5`), hairlines at 6% ink, no decorative borders177- Inter at every level — display 700, body 400, UI 600178 179## 2. The grainy gradient (copy this exactly)180 181The grain is not a Photoshop filter or a Tailwind class — it is an inline SVG with `feTurbulence` set to `fractalNoise`, baseFrequency `0.9`, two octaves, stitched. The noise layer sits **on top** of a stack of three radial-gradient blooms over a 135° linear base. Stop order matters.182 183```css184background:185 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' 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.55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.55'/></svg>"),186 radial-gradient(ellipse 90% 70% at 12% 88%, #ff8a4c 0%, transparent 55%),187 radial-gradient(ellipse 70% 80% at 88% 12%, #c47bff 0%, transparent 55%),188 radial-gradient(ellipse 50% 60% at 55% 50%, #ff6b9b 0%, transparent 60%),189 linear-gradient(135deg, #ffb27a 0%, #f06694 45%, #8c5cff 100%);190```191 192The `feColorMatrix` reduces the noise to alpha-only (no color shift), so the grain darkens the gradient instead of tinting it. The 0.55 opacity is the calibrated value — anything higher reads as "dirty," anything lower disappears on retina screens.193 194### Stop palette195- **Amber bloom** `#ff8a4c` — bottom-left anchor196- **Violet bloom** `#c47bff` — top-right counter-anchor197- **Coral core** `#ff6b9b` — center bloom, 60% reach198- **Linear base** `#ffb27a → #f06694 → #8c5cff` at 135°199 200## 3. Palette201 202### Surface203- **Bone** `#fbf8f5` — page background204- **Snow** `#ffffff` — cards, sheets205 206### Ink207- **Ink** `#171419` — text, headings, secondary CTA fill208- **Ink 55** `#6b6470` — secondary text, mono labels209- **Hairline** `rgba(23,20,25,0.06)` — every divider210 211### Accent (single)212- **Coral** `#ef5a8a` — picked from the gradient's mid stop, used for active tab underline + active chart bar213 214## 4. Typography215 216| Role | Font | Size | Weight | Leading | Tracking |217|------|------|------|--------|---------|----------|218| Hero | Inter | 72px | 700 | 1.02 | -0.04em |219| H1 | Inter | 44px | 700 | 1.10 | -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 |223| Number | JetBrains Mono | 13px | 500 | 1.0 | 0 |224 225Inter at three weights only — 400, 600, 700. The 800 weight is reserved for the optional oversized gradient KPI inside the featured tile.226 227## 5. Buttons228 229### Primary (Grainy Gradient Box)230A solid box (not a pill) with the full grainy-gradient stack as background, white label, no border. The drop shadow uses two layered colored shadows that pick the coral and violet stops — they bloom under the button like a soft halo.231 232```css233background: /* the full grainy gradient stack from §2 */;234color: #ffffff;235padding: 12px 22px;236border-radius: 16px;237box-shadow:238 rgba(240,102,148,0.28) 0 10px 24px -10px,239 rgba(140,92,255,0.22) 0 6px 18px -8px;240font: 700 15px/1.4 Inter;241```242 243### Secondary (Graphite Box)244Solid ink `#171419`, bone label, same 16px radius, no shadow. The graphite-on-bone pairs cleanly with the gradient without competing.245 246### Outline & Ghost247- Outline: transparent, 1px hairline at 16% ink248- Ghost: no border, ink-55, hover lifts to ink249 250## 6. The Featured tile251 252The featured hero tile uses the **same exact gradient stack** as the primary CTA. White display headline at 32px in Inter 700, label "Featured" in mono at 11px uppercase 0.12em tracking. No badge, no icon — the gradient does the work.253 254## 7. Charts255 256Rounded bars (pill ends), 10px gap. Six bars in graphite at 10% opacity, **one bar in coral** `#f06694` (the gradient's mid stop). The eye reads the coral bar as the active value because it visually rhymes with the CTA — no separate legend needed.257 258## 8. Tabs259 260Underline 1.5px in coral. Inactive tabs in Inter 600 ink-55. Hover lifts to ink. Active = ink + coral underline.261 262## 9. Spacing263 264- Base 4px265- Scale: `4, 8, 12, 16, 20, 24, 32, 48, 64, 96`266- Section padding: 96px desktop, 48px mobile267 268## 10. Do's & don'ts269 270✅ **Do**271- Use the full grainy-gradient stack from §2 verbatim — the noise layer is what makes it expensive272- Apply the gradient exactly twice per screen: primary CTA + featured tile273- Pick the active chart bar from the gradient's coral stop so it rhymes with the CTA274- Layer two colored shadows under the gradient button — coral + violet, low opacity, wide spread275 276❌ **Don't**277- Apply the gradient to a third surface (cards, secondary buttons, headers) — it loses its weight278- Use a 2-stop gradient (e.g. peach → pink) — this system is multi-stop with grain, never the cliché279- Skip the SVG noise layer — without grain the gradient reads as generic280- Use coral anywhere except active states (chart bar, tab underline) — the gradient owns the bloom281 282---283 284## Tokens285 286> Generated from the same source the live preview renders from.287> Treat the values below as the contract — never substitute approximations.288 289### Colors290 291| Role | Value |292|-----------|-------|293| primary | `#171419` |294| secondary | `#6b6470` |295| tertiary | `#ef5a8a` |296| neutral | `#fbf8f5` |297| surface | `#ffffff` |298 299### Typography300 301- **Display:** Inter302- **Body:** Inter303- **Mono:** JetBrains Mono304 305| Role | size / leading / weight / tracking |306|------|------------------------------------|307| Hero | 4.5rem / 1.02 / 700 / -0.04em |308| H1 | 2.75rem / 1.1 / 700 / -0.03em |309| H2 | 1.625rem / 1.22 / 600 / -0.018em |310| Body | 1.0625rem / 1.6 / 400 / -0.005em |311 312### Radius313 314- sm: `10px`315- md: `16px`316- lg: `22px`317- pill: `9999px`318 319### Shadows320 321- **card:** `rgba(23,20,25,0.04) 0 1px 2px, rgba(23,20,25,0.06) 0 14px 36px -16px`322- **button:** `rgba(240,102,148,0.28) 0 10px 24px -10px, rgba(140,92,255,0.22) 0 6px 18px -8px`323 324### Borders325 326- **card:** `1px solid rgba(23,20,25,0.06)`327- **divider:** `rgba(23,20,25,0.08)`328 329### Buttons330 331Four variants, each fully tokenized. The preview renders from these exact values.332 333#### Primary334 335| Property | Value |336|----------|-------|337| shape | `rounded` |338| background | `url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' 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.55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/></svg>"), radial-gradient(ellipse 90% 70% at 12% 88%, #ff8a4c 0%, transparent 55%), radial-gradient(ellipse 70% 80% at 88% 12%, #c47bff 0%, transparent 55%), radial-gradient(ellipse 50% 60% at 55% 50%, #ff6b9b 0%, transparent 60%), linear-gradient(135deg, #ffb27a 0%, #f06694 45%, #8c5cff 100%)` |339| color | `#ffffff` |340| border | `none` |341| padding | `12px 22px` |342| fontWeight | `700` |343| fontSize | `0.9375rem` |344| shadow | `rgba(240,102,148,0.28) 0 10px 24px -10px, rgba(140,92,255,0.22) 0 6px 18px -8px` |345 346#### Secondary347 348| Property | Value |349|----------|-------|350| shape | `rounded` |351| background | `#171419` |352| color | `#fbf8f5` |353| border | `none` |354| padding | `12px 22px` |355| fontWeight | `600` |356| fontSize | `0.9375rem` |357 358#### Outline359 360| Property | Value |361|----------|-------|362| shape | `rounded` |363| background | `transparent` |364| color | `#171419` |365| border | `1px solid rgba(23,20,25,0.16)` |366| padding | `12px 22px` |367| fontWeight | `600` |368| fontSize | `0.9375rem` |369 370#### Ghost371 372| Property | Value |373|----------|-------|374| shape | `rounded` |375| background | `transparent` |376| color | `#6b6470` |377| border | `none` |378| padding | `12px 18px` |379| fontWeight | `600` |380| fontSize | `0.9375rem` |381 382### Charts383 384| Property | Value |385|----------|-------|386| variant | `rounded-bars` |387| strokeWidth | `1.5` |388| fillOpacity | `0.12` |389| gridlines | `false` |390| barGap | `10px` |391| dotMarker | `true` |392| palette | `rgba(23,20,25,0.10)`, `rgba(23,20,25,0.10)`, `rgba(23,20,25,0.10)`, `#f06694`, `rgba(23,20,25,0.10)`, `rgba(23,20,25,0.10)`, `rgba(23,20,25,0.10)` |393 # 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: '#171419', secondary: '#6b6470', accent: '#ef5a8a', neutral: '#fbf8f5', surface: '#ffffff', }, borderRadius: { sm: '10px', md: '16px', lg: '22px', }, }, },};Modern AI product surface without the clichés. Geist sans across the board, Geist Mono for prompts and metrics, very fine off-white surfaces with a 1px white inset highlight, a single muted electric-indigo accent reserved for the assistant's response state. Built for AI-first products that want to feel premium without leaning on rainbow gradients.
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.
An enterprise admin tool that respects density. Cool bone-grey surfaces, Inter for prose and IBM Plex Mono with tabular numerals for every figure, a single steel-blue accent reserved for the active module pane border. Built for B2B internal tools, ops dashboards, and admin consoles where information density is the feature, not the bug.
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.