A single soft spotlight beam falls from the top-center across a near-black canvas, fading to ink at the edges. Cards float as solid surfaces in the beam. One warm-amber accent. Theatrical without being maximalist.
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: "Spotlight Noir"3description: "A single soft spotlight beam falls from the top-center across a near-black canvas, fading to ink at the edges. Cards float as solid surfaces in the beam. One warm-amber accent. Theatrical without being maximalist."4tags: [dark, gradient, premium, cinematic, minimal]5colors:6 primary: "#F0EDE6"7 secondary: "#8E8A82"8 tertiary: "#E5A95A"9 neutral: "#0B0A08"10 surface: "#16140F"11typography:12 display: "Cormorant Garamond"13 body: Inter14 mono: "JetBrains Mono"15 scale:16 hero: "5.5rem / 1 / 400 / -0.025em"17 h1: "3.25rem / 1.05 / 400 / -0.02em"18 h2: "1.625rem / 1.3 / 500 / -0.012em"19 body: "1rem / 1.7 / 400 / -0.003em"20radius:21 sm: 4px22 md: 8px23 lg: 12px24shadows:25 card: "0 32px 80px -32px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(229, 169, 90, 0.06)"26 button: "0 8px 24px -10px rgba(229, 169, 90, 0.45), inset 0 1px 0 rgba(255, 220, 170, 0.20)"27borders:28 card: "1px solid rgba(229, 169, 90, 0.06)"29 divider: "rgba(240, 237, 230, 0.08)"30glass:31 surface: "#16140F"32 blur: 0px33 border: "1px solid rgba(229, 169, 90, 0.06)"34 shadow: "0 32px 80px -32px rgba(0, 0, 0, 0.65)"35 backdrop: "radial-gradient(ellipse 90% 70% at 50% 0%, rgba(255, 230, 190, 0.18) 0%, rgba(255, 230, 190, 0.08) 25%, transparent 60%), radial-gradient(ellipse 60% 40% at 50% 12%, rgba(255, 215, 160, 0.14) 0%, transparent 70%)"36buttons:37 primary:38 background: linear-gradient(180deg, #F0BC74 0%, #E5A95A 50%, #C8893E 100%)39 color: #1A140840 border: 1px solid rgba(255, 220, 170, 0.25)41 shape: rounded42 padding: 12px 24px43 font: 600 / 0.9375rem / -0.005em44 shadow: 0 8px 24px -10px rgba(229, 169, 90, 0.45), inset 0 1px 0 rgba(255, 220, 170, 0.35)45 secondary:46 background: #16140F47 color: #F0EDE648 border: 1px solid rgba(229, 169, 90, 0.20)49 shape: rounded50 padding: 12px 24px51 font: 500 / 0.9375rem / -0.005em52 outline:53 background: transparent54 color: #F0EDE655 border: 1px solid rgba(240, 237, 230, 0.18)56 shape: rounded57 padding: 11px 23px58 font: 500 / 0.9375rem / -0.005em59 ghost:60 background: transparent61 color: #E5A95A62 border: none63 shape: rounded64 padding: 11px 6px65 font: 500 / 0.9375rem / -0.005em66 hover: underline67charts:68 variant: area69 stroke_width: 270 fill_opacity: 0.1871 gridlines: false72 highlight: last73 dot_marker: true74 axis_color: "#8E8A82"75 palette: ["#E5A95A", "#C8893E", "#9A6A2C"]76fonts_url: "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400&display=swap"77dependencies: ["lucide-react"]78---79 80# Spotlight Noir81 82## AI Build Instructions83 84> **Read this section before writing any code.** The rules below85> are non-negotiable. Every value used in the UI must come from this86> file's frontmatter — never substitute, approximate, or invent new87> colors, fonts, radii, or shadows. If a value is missing, ask the88> user before adding one.89 90### 1 · Your role91 92You are building UI for a project that has adopted **Spotlight Noir** as its93design system. Treat `DESIGN.md` as the single source of truth.94Your job is to translate the user's product requirements into95components and pages that look like they were designed by the same96person who authored this file.97 98### 2 · Token compliance99 100- Pull every color, font family, radius, shadow, and spacing value101 from the frontmatter at the top of this file.102- Use semantic roles (e.g. `primary`, `accent`, `muted`) — never103 hard-code hex values that bypass the system.104- When a token can be expressed as a CSS variable, declare it once105 in your global stylesheet and reference it everywhere downstream.106- The Google Fonts `<link>` is provided in the Typography section.107 Add it to `<head>` before any component renders.108 109### 3 · Component recipes110 111Use these recipes verbatim when building the corresponding component.112 113#### Buttons114 115Four variants are defined. Pick one — never blend variants or invent a fifth.116 117- **Primary** — rounded shape, bg `linear-gradient(180deg, #F0BC74 0%, #E5A95A 50%, #C8893E 100%)`, text `#1A1408`, border `1px solid rgba(255, 220, 170, 0.25)`, padding `12px 24px`, weight `600`, shadow `0 8px 24px -10px rgba(229, 169, 90, 0.45), inset 0 1px 0 rgba(255, 220, 170, 0.35)`.118- **Secondary** — rounded shape, bg `#16140F`, text `#F0EDE6`, border `1px solid rgba(229, 169, 90, 0.20)`, padding `12px 24px`, weight `500`.119- **Outline** — rounded shape, text `#F0EDE6`, border `1px solid rgba(240, 237, 230, 0.18)`, padding `11px 23px`, weight `500`.120- **Ghost** — rounded shape, text `#E5A95A`, padding `11px 6px`, weight `500`.121 122Reach for **primary** as the single dominant CTA per screen.123**Secondary** for the supporting action. **Outline** for tertiary124actions in toolbars. **Ghost** for inline links and table actions.125 126#### Cards127 128- Background: `#16140F`129- Border: `1px solid rgba(229, 169, 90, 0.06)`130- Shadow: `0 32px 80px -32px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(229, 169, 90, 0.06)`131- Radius: `radius.lg` (`12px`)132- Internal padding: `20px` for compact cards, `24–28px` for content cards.133 134> This system ships a **glass treatment** — see the Glass token table.135> Apply `backdrop-filter: blur(0px)` to translucent panes.136> The page must have a backdrop (gradient mesh / blurred orbs) for glass to refract.137 138#### Charts139 140- Bar/line variant: `area`141- No gridlines — let the bars/lines carry the data.142- Highlight strategy: `last` — emphasize a single bar/point per chart.143- Use the declared palette in order: `#E5A95A`, `#C8893E`, `#9A6A2C`.144 145#### Typography pairings146 147- **Display (`Cormorant Garamond`)** — h1, h2, hero headlines, brand wordmarks.148- **Body (`Inter`)** — paragraphs, labels, button text, form inputs.149- **Mono (`JetBrains Mono`)** — code, eyebrows, metadata, numerals in tables.150 151### 4 · Hard constraints152 153Never do any of the following without explicit instruction from the user:154 155- Introduce a new color, font, radius, or shadow that isn't declared above.156- Mix this system with another (e.g. don't paste in Material or Bootstrap defaults).157- Use generic gradient defaults (purple→blue, peach→pink) — they break the system's voice.158- Reach for emoji icons. Use a consistent icon library and size icons in line with body type.159- Add motion that exceeds the system's restraint — keep transitions short (≤200ms) and subtle.160 161### 5 · Before you finish — verify162 163Run through this checklist for every screen you produce:164 165- [ ] Every color used appears in the Colors table above.166- [ ] Headlines use the display font; body copy uses the body font.167- [ ] Buttons match one of the declared variants exactly (shape, padding, weight).168- [ ] Border-radius values come from `radius.sm` / `radius.md` / `radius.lg` / `radius.pill`.169- [ ] Cards and dividers use the declared border + shadow tokens.170- [ ] No values were invented; if you needed something missing, you stopped and asked.171 172---173 174## Overview175Spotlight Noir is built on one decision: a single soft spotlight beam falls from the top-center of the page across a near-black canvas, fading to ink at the edges. Cards float in the beam as solid graphite surfaces (not glass — solid). Type is high-contrast serif at theatrical scale. One warm-amber accent does the chromatic work.176 177The system is theatrical without being maximalist — restraint plus one piece of stagecraft. For premium product launches, fashion, automotive, fragrance, anything cinematic.178 179## The Spotlight Recipe180The beam is two stacked radial gradients — a wide soft outer halo and a tighter brighter core — both anchored at the top-center, fading to transparent before they reach the edges:181 182```css183body {184 background:185 radial-gradient(ellipse 60% 40% at 50% 12%, rgba(255,215,160,0.14) 0%, transparent 70%),186 radial-gradient(ellipse 90% 70% at 50% 0%, rgba(255,230,190,0.18) 0%, rgba(255,230,190,0.08) 25%, transparent 60%),187 #0B0A08;188}189```190 191The beam is **warm** (cream/amber), the canvas is **near-black**. The contrast is the system. Without the beam the page is just dark; without the dark the beam dies.192 193## Color194- **Moonlight #F0EDE6** — primary text in the beam.195- **Warm grey #8E8A82** — secondary text, axis labels.196- **Amber #E5A95A** — the only chromatic accent. Primary CTA, ghost link, chart line.197- **Ink #0B0A08** — page canvas (near-black, faint warm bias).198- **Graphite #16140F** — card surface, lifted just above the canvas.199 200The amber sits inside the beam's color family — warm cream → warm amber. They are the same world.201 202## Typography203- **Display: Cormorant Garamond 400** at 5.5rem with -2.5% tracking. High-contrast serif, theatrical at scale, never bold.204- **Body: Inter 400** at 1rem with 1.7 leading.205 206| Role | Font | Size | Weight | Tracking |207|------|------|------|--------|----------|208| Hero | Cormorant Garamond | 5.5rem | 400 | -0.025em |209| H1 | Cormorant Garamond | 3.25rem | 400 | -0.02em |210| H2 | Cormorant Garamond | 1.625rem | 500 | -0.012em |211| Body | Inter | 1rem | 400 | -0.003em / 1.7 |212 213Display lives at weight 400. The serif's optical contrast does the work — bold would kill it.214 215## Geometry216- **Radii: 4 / 8 / 12.** Refined and composed. Never pill, never sharp.217- **Section gap: 144px** desktop, 80px mobile. The beam needs room.218- **Hero is centered** under the beam — this is the one system where centered hero is mandatory, because the beam is the focal point.219 220## Buttons221- **Primary** — vertical warm-amber gradient with a soft underglow + inner top gloss. The CTA reads as a polished metal handle catching the beam.222- **Secondary** — solid graphite with a faint amber hairline.223- **Outline** — bare hairline at 18% white.224- **Ghost** — bare amber label, hover underline.225 226## Cards227**Solid graphite surfaces**, 1px amber hairline at 6% opacity, 8-12px corners, deep dark shadow tinted slightly warm. Padding 32px. Cards are NOT glass — that's a different system. Solid surfaces in the beam.228 229## Charts & Data230Amber area chart at 2px stroke and 18% fill opacity, no gridlines, end-of-line dot. The chart sits inside a graphite card so the page beam stays in the background.231 232## Do's and Don'ts233- ✅ The spotlight beam is mandatory and lives at top-center. The whole identity rests on it.234- ✅ Cards are solid graphite, never glass.235- ✅ Hero is centered under the beam. The composition is the system.236- ✅ One chromatic accent — warm amber. It sits inside the beam's color family.237- ❌ No glass cards. That's a different system.238- ❌ No second chromatic accent. The amber stands alone.239- ❌ No bold display. Cormorant Garamond at weight 400 only.240- ❌ No second light source — no rim glow at the bottom, no side light. One beam, top-center, period.241 242---243 244## Tokens245 246> Generated from the same source the live preview renders from.247> Treat the values below as the contract — never substitute approximations.248 249### Colors250 251| Role | Value |252|-----------|-------|253| primary | `#F0EDE6` |254| secondary | `#8E8A82` |255| tertiary | `#E5A95A` |256| neutral | `#0B0A08` |257| surface | `#16140F` |258 259### Typography260 261- **Display:** Cormorant Garamond262- **Body:** Inter263- **Mono:** JetBrains Mono264 265| Role | size / leading / weight / tracking |266|------|------------------------------------|267| Hero | 5.5rem / 1 / 400 / -0.025em |268| H1 | 3.25rem / 1.05 / 400 / -0.02em |269| H2 | 1.625rem / 1.3 / 500 / -0.012em |270| Body | 1rem / 1.7 / 400 / -0.003em |271 272### Radius273 274- sm: `4px`275- md: `8px`276- lg: `12px`277 278### Shadows279 280- **card:** `0 32px 80px -32px rgba(0, 0, 0, 0.65), 0 0 0 1px rgba(229, 169, 90, 0.06)`281- **button:** `0 8px 24px -10px rgba(229, 169, 90, 0.45), inset 0 1px 0 rgba(255, 220, 170, 0.20)`282 283### Borders284 285- **card:** `1px solid rgba(229, 169, 90, 0.06)`286- **divider:** `rgba(240, 237, 230, 0.08)`287 288### Glass289 290Translucent panes with backdrop-filter — the preview renders cards from these exact values.291 292| Property | Value |293|----------|-------|294| surface | `#16140F` |295| blur | `0px` |296| border | `1px solid rgba(229, 169, 90, 0.06)` |297| shadow | `0 32px 80px -32px rgba(0, 0, 0, 0.65)` |298| backdrop | `radial-gradient(ellipse 90% 70% at 50% 0%, rgba(255, 230, 190, 0.18) 0%, rgba(255, 230, 190, 0.08) 25%, transparent 60%), radial-gradient(ellipse 60% 40% at 50% 12%, rgba(255, 215, 160, 0.14) 0%, transparent 70%)` |299 300### Buttons301 302Four variants, each fully tokenized. The preview renders from these exact values.303 304#### Primary305 306| Property | Value |307|----------|-------|308| shape | `rounded` |309| background | `linear-gradient(180deg, #F0BC74 0%, #E5A95A 50%, #C8893E 100%)` |310| color | `#1A1408` |311| border | `1px solid rgba(255, 220, 170, 0.25)` |312| padding | `12px 24px` |313| fontWeight | `600` |314| fontSize | `0.9375rem` |315| tracking | `-0.005em` |316| shadow | `0 8px 24px -10px rgba(229, 169, 90, 0.45), inset 0 1px 0 rgba(255, 220, 170, 0.35)` |317 318#### Secondary319 320| Property | Value |321|----------|-------|322| shape | `rounded` |323| background | `#16140F` |324| color | `#F0EDE6` |325| border | `1px solid rgba(229, 169, 90, 0.20)` |326| padding | `12px 24px` |327| fontWeight | `500` |328| fontSize | `0.9375rem` |329| tracking | `-0.005em` |330 331#### Outline332 333| Property | Value |334|----------|-------|335| shape | `rounded` |336| background | `transparent` |337| color | `#F0EDE6` |338| border | `1px solid rgba(240, 237, 230, 0.18)` |339| padding | `11px 23px` |340| fontWeight | `500` |341| fontSize | `0.9375rem` |342| tracking | `-0.005em` |343 344#### Ghost345 346| Property | Value |347|----------|-------|348| shape | `rounded` |349| background | `transparent` |350| color | `#E5A95A` |351| border | `none` |352| padding | `11px 6px` |353| fontWeight | `500` |354| fontSize | `0.9375rem` |355| tracking | `-0.005em` |356| hoverHint | `underline` |357 358### Charts359 360| Property | Value |361|----------|-------|362| variant | `area` |363| strokeWidth | `2` |364| fillOpacity | `0.18` |365| gridlines | `false` |366| highlight | `last` |367| dotMarker | `true` |368| axisColor | `#8E8A82` |369| palette | `#E5A95A`, `#C8893E`, `#9A6A2C` |370 # 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=Cormorant+Garamond:wght@400;500;600&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400&display=swap" />npm install lucide-react// tailwind.config.jsexport default { theme: { extend: { fontFamily: { display: ['"Cormorant Garamond"', 'serif'], sans: ['"Inter"', 'sans-serif'], mono: ['"JetBrains Mono"', 'monospace'], }, colors: { primary: '#F0EDE6', secondary: '#8E8A82', accent: '#E5A95A', neutral: '#0B0A08', surface: '#16140F', }, borderRadius: { sm: '4px', md: '8px', lg: '12px', }, }, },};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.
A printed quarterly that happens to live on the web. Soft blush-bone surfaces, Fraunces 600 italic display headlines, Geist Mono for marginalia, a single deep plum accent on drop caps and pull-quote bars. Built for journals, newsletters, and slow-content brands that want warmth without preciousness.
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.