A single beautifully calibrated diagonal gradient runs across the page — cool slate into dusty mauve into champagne mist — while every other element stays restrained ink and hairlines. The gradient is the room.
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: "Mineral Dusk"3description: "A single beautifully calibrated diagonal gradient runs across the page — cool slate into dusty mauve into champagne mist — while every other element stays restrained ink and hairlines. The gradient is the room."4tags: [minimal, gradient, light, premium, editorial]5colors:6 primary: "#1A1A22"7 secondary: "#6B6B78"8 tertiary: "#A88BA8"9 neutral: "#E8E5EE"10 surface: "#FDFCFA"11typography:12 display: Fraunces13 body: Inter14 mono: "JetBrains Mono"15 scale:16 hero: "5rem / 1 / 400 / -0.03em"17 h1: "3rem / 1.05 / 400 / -0.025em"18 h2: "1.625rem / 1.3 / 500 / -0.012em"19 body: "1.0625rem / 1.7 / 400 / -0.003em"20radius:21 sm: 6px22 md: 10px23 lg: 14px24shadows:25 card: "0 8px 32px -16px rgba(40, 35, 60, 0.10), 0 1px 2px rgba(40, 35, 60, 0.04)"26 button: "0 4px 14px -6px rgba(26, 26, 34, 0.20)"27borders:28 card: "1px solid rgba(26, 26, 34, 0.06)"29 divider: "rgba(26, 26, 34, 0.06)"30buttons:31 primary:32 background: #1A1A2233 color: #FDFCFA34 border: 1px solid #1A1A2235 shape: rounded36 padding: 13px 26px37 font: 500 / 0.9375rem / -0.005em38 shadow: 0 4px 14px -6px rgba(26, 26, 34, 0.20)39 secondary:40 background: #FDFCFA41 color: #1A1A2242 border: 1px solid rgba(26, 26, 34, 0.18)43 shape: rounded44 padding: 13px 26px45 font: 500 / 0.9375rem / -0.005em46 outline:47 background: transparent48 color: #1A1A2249 border: 1px solid rgba(26, 26, 34, 0.25)50 shape: rounded51 padding: 12px 24px52 font: 500 / 0.9375rem / -0.005em53 ghost:54 background: transparent55 color: #6B6B7856 border: none57 shape: rounded58 padding: 12px 4px59 font: 500 / 0.9375rem / -0.005em60 hover: underline61charts:62 variant: line63 stroke_width: 1.564 gridlines: false65 highlight: last66 dot_marker: true67 axis_color: "#6B6B78"68 palette: ["#1A1A22", "#A88BA8", "#C9B89E"]69fonts_url: "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT@9..144,300;9..144,400;9..144,500&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400&display=swap"70dependencies: ["lucide-react"]71---72 73# Mineral Dusk74 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 **Mineral Dusk** 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 `#1A1A22`, text `#FDFCFA`, border `1px solid #1A1A22`, padding `13px 26px`, weight `500`, shadow `0 4px 14px -6px rgba(26, 26, 34, 0.20)`.111- **Secondary** — rounded shape, bg `#FDFCFA`, text `#1A1A22`, border `1px solid rgba(26, 26, 34, 0.18)`, padding `13px 26px`, weight `500`.112- **Outline** — rounded shape, text `#1A1A22`, border `1px solid rgba(26, 26, 34, 0.25)`, padding `12px 24px`, weight `500`.113- **Ghost** — rounded shape, text `#6B6B78`, padding `12px 4px`, weight `500`.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: `#FDFCFA`122- Border: `1px solid rgba(26, 26, 34, 0.06)`123- Shadow: `0 8px 32px -16px rgba(40, 35, 60, 0.10), 0 1px 2px rgba(40, 35, 60, 0.04)`124- Radius: `radius.lg` (`14px`)125- Internal padding: `20px` for compact cards, `24–28px` for content cards.126 127#### Charts128 129- Bar/line variant: `line`130- No gridlines — let the bars/lines carry the data.131- Highlight strategy: `last` — emphasize a single bar/point per chart.132- Use the declared palette in order: `#1A1A22`, `#A88BA8`, `#C9B89E`.133 134#### Typography pairings135 136- **Display (`Fraunces`)** — h1, h2, hero headlines, brand wordmarks.137- **Body (`Inter`)** — paragraphs, labels, button text, form inputs.138- **Mono (`JetBrains Mono`)** — code, eyebrows, metadata, numerals in tables.139 140### 4 · Hard constraints141 142Never do any of the following without explicit instruction from the user:143 144- Introduce a new color, font, radius, or shadow that isn't declared above.145- Mix this system with another (e.g. don't paste in Material or Bootstrap defaults).146- Use generic gradient defaults (purple→blue, peach→pink) — they break the system's voice.147- Reach for emoji icons. Use a consistent icon library and size icons in line with body type.148- Add motion that exceeds the system's restraint — keep transitions short (≤200ms) and subtle.149 150### 5 · Before you finish — verify151 152Run through this checklist for every screen you produce:153 154- [ ] Every color used appears in the Colors table above.155- [ ] Headlines use the display font; body copy uses the body font.156- [ ] Buttons match one of the declared variants exactly (shape, padding, weight).157- [ ] Border-radius values come from `radius.sm` / `radius.md` / `radius.lg` / `radius.pill`.158- [ ] Cards and dividers use the declared border + shadow tokens.159- [ ] No values were invented; if you needed something missing, you stopped and asked.160 161---162 163## Overview164Mineral Dusk is one beautifully calibrated diagonal gradient — cool slate at the top-left, dusty mauve through the middle, warm champagne mist at the bottom-right — that lives in the page background. Everything else is restrained: ink type in a high-contrast variable serif, paper cards, hairline borders, a solid-ink primary button.165 166The gradient is the room. The content sits in the room. Adding a second decorative element would make the room feel cluttered.167 168For premium content brands, design portfolios, photography platforms, boutique hospitality, editorial fashion.169 170## The Page Gradient171A diagonal three-stop gradient covers the entire viewport background. Always the same direction (135°), always the same three stops:172 173```css174body {175 background: linear-gradient(176 135deg,177 #DDE0EA 0%,178 #E8DCEA 45%,179 #F1E6D8 100%180 );181 min-height: 100vh;182}183```184 185Stops chosen so each transition is barely perceptible — the gradient reads as a *room*, not a banner.186 187**Where it appears:**188- The page background. Always.189- A 1px diagonal divider above the footer (same gradient, 1px tall).190 191**Where it never appears:**192- Buttons. Card fills. Borders. Text. Section bands.193 194## Color195- **Ink #1A1A22** — primary text and primary CTA.196- **Dusk #6B6B78** — secondary text.197- **Mauve #A88BA8** — accent word in the hero (one per page).198- **Slate base #E8E5EE** — gradient origin.199- **Paper #FDFCFA** — card surface (sits over the gradient).200 201The gradient stops never appear as fills anywhere else.202 203## Typography204- **Display: Fraunces 400** at 5rem with -3% tracking. Variable serif with optical-size sensitivity — the type carries the editorial weight.205- **Body: Inter 400** at 1.0625rem with 1.7 leading.206- **Italic Fraunces** for emphasis inside hero headlines (one phrase per hero).207 208| Role | Font | Size | Weight | Tracking |209|------|------|------|--------|----------|210| Hero | Fraunces | 5rem | 400 | -0.03em |211| H1 | Fraunces | 3rem | 400 | -0.025em |212| H2 | Fraunces | 1.625rem | 500 | -0.012em |213| Body | Inter | 1.0625rem | 400 | -0.003em / 1.7 |214 215## Geometry216- **Radii: 6 / 10 / 14.** Refined but never sharp.217- **Section gap: 144px** desktop, 88px mobile. The gradient needs the page to breathe.218- **Card padding: 36px** minimum.219 220## Buttons221- **Primary** — solid ink, paper label, soft ink underglow. The button is the punctuation; the gradient is the sentence.222- **Secondary** — paper, ink hairline at 18%.223- **Outline** — transparent, ink hairline at 25%.224- **Ghost** — bare dusk label, hover underline.225 226All four are gently rounded at 10-14px.227 228## Cards229Paper surface (#FDFCFA) sits over the gradient — the gradient peeks at the corners and between cards. 1px ink hairline at 6%, soft 8px shadow at 10%. Radius 14px. Cards always have ≥ 24px gap so the gradient reads between them.230 231## Charts & Data232A single 1.5px ink line over the paper card. No gridlines. Mauve dot at the latest reading.233 234## Do's and Don'ts235- ✅ The gradient is always 135°, always the same three stops, always full-viewport.236- ✅ Paper cards over the gradient — never solid-color sections that hide it.237- ✅ Fraunces 400 for display — the optical-size variable axis is what makes the serif sing at large sizes.238- ✅ Italic Fraunces on one accent phrase per hero, max.239- ❌ No second gradient anywhere. Not on buttons, not on cards, not on accents.240- ❌ No saturated chromatic accents. The mauve is the loudest element allowed.241- ❌ No drop shadows beyond the soft ink-tinted card shadow.242- ❌ No sharp radii. The system is refined, never aggressive.243 244---245 246## Tokens247 248> Generated from the same source the live preview renders from.249> Treat the values below as the contract — never substitute approximations.250 251### Colors252 253| Role | Value |254|-----------|-------|255| primary | `#1A1A22` |256| secondary | `#6B6B78` |257| tertiary | `#A88BA8` |258| neutral | `#E8E5EE` |259| surface | `#FDFCFA` |260 261### Typography262 263- **Display:** Fraunces264- **Body:** Inter265- **Mono:** JetBrains Mono266 267| Role | size / leading / weight / tracking |268|------|------------------------------------|269| Hero | 5rem / 1 / 400 / -0.03em |270| H1 | 3rem / 1.05 / 400 / -0.025em |271| H2 | 1.625rem / 1.3 / 500 / -0.012em |272| Body | 1.0625rem / 1.7 / 400 / -0.003em |273 274### Radius275 276- sm: `6px`277- md: `10px`278- lg: `14px`279 280### Shadows281 282- **card:** `0 8px 32px -16px rgba(40, 35, 60, 0.10), 0 1px 2px rgba(40, 35, 60, 0.04)`283- **button:** `0 4px 14px -6px rgba(26, 26, 34, 0.20)`284 285### Borders286 287- **card:** `1px solid rgba(26, 26, 34, 0.06)`288- **divider:** `rgba(26, 26, 34, 0.06)`289 290### Buttons291 292Four variants, each fully tokenized. The preview renders from these exact values.293 294#### Primary295 296| Property | Value |297|----------|-------|298| shape | `rounded` |299| background | `#1A1A22` |300| color | `#FDFCFA` |301| border | `1px solid #1A1A22` |302| padding | `13px 26px` |303| fontWeight | `500` |304| fontSize | `0.9375rem` |305| tracking | `-0.005em` |306| shadow | `0 4px 14px -6px rgba(26, 26, 34, 0.20)` |307 308#### Secondary309 310| Property | Value |311|----------|-------|312| shape | `rounded` |313| background | `#FDFCFA` |314| color | `#1A1A22` |315| border | `1px solid rgba(26, 26, 34, 0.18)` |316| padding | `13px 26px` |317| fontWeight | `500` |318| fontSize | `0.9375rem` |319| tracking | `-0.005em` |320 321#### Outline322 323| Property | Value |324|----------|-------|325| shape | `rounded` |326| background | `transparent` |327| color | `#1A1A22` |328| border | `1px solid rgba(26, 26, 34, 0.25)` |329| padding | `12px 24px` |330| fontWeight | `500` |331| fontSize | `0.9375rem` |332| tracking | `-0.005em` |333 334#### Ghost335 336| Property | Value |337|----------|-------|338| shape | `rounded` |339| background | `transparent` |340| color | `#6B6B78` |341| border | `none` |342| padding | `12px 4px` |343| fontWeight | `500` |344| fontSize | `0.9375rem` |345| tracking | `-0.005em` |346| hoverHint | `underline` |347 348### Charts349 350| Property | Value |351|----------|-------|352| variant | `line` |353| strokeWidth | `1.5` |354| gridlines | `false` |355| highlight | `last` |356| dotMarker | `true` |357| axisColor | `#6B6B78` |358| palette | `#1A1A22`, `#A88BA8`, `#C9B89E` |359 # 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=Fraunces:opsz,wght,SOFT@9..144,300;9..144,400;9..144,500&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: ['"Fraunces"', 'serif'], sans: ['"Inter"', 'sans-serif'], mono: ['"JetBrains Mono"', 'monospace'], }, colors: { primary: '#1A1A22', secondary: '#6B6B78', accent: '#A88BA8', neutral: '#E8E5EE', surface: '#FDFCFA', }, borderRadius: { sm: '6px', md: '10px', lg: '14px', }, }, },};Radical two-color: deep indigo and warm bone, nothing else. Cool but editorial — never electric. Considered serif/sans pairing, refined 6px corners, no shadows. Discipline and quiet authority.
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.
tonal-surface with a slate-blue seed — cool tonal surfaces, full-rounded tonal buttons, Roboto Flex throughout. The trustworthy B2B tonal-surface dialect.
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.