Design-agency editorial in print mode. Oversized DM Serif Display headlines that nearly touch the gutter, asymmetric two-column body in Inter, a single tomato accent that lives only in the first letter of the H1 and the period of the CTA. Built for studio sites and case studies.
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: "Maison Vox"3description: "Design-agency editorial in print mode. Oversized DM Serif Display headlines that nearly touch the gutter, asymmetric two-column body in Inter, a single tomato accent that lives only in the first letter of the H1 and the period of the CTA. Built for studio sites and case studies."4tags: [editorial, agency, minimal, premium, modern]5colors:6 primary: "#101010"7 secondary: "#5a5a5a"8 tertiary: "#101010"9 neutral: "#f3efe7"10 surface: "#fbf8f1"11typography:12 display: "DM Serif Display"13 body: Inter14 mono: "JetBrains Mono"15 scale:16 hero: "7rem / 0.94 / 400 / -0.045em"17 h1: "4rem / 1 / 400 / -0.035em"18 h2: "2rem / 1.15 / 400 / -0.02em"19 body: "1.0625rem / 1.65 / 400 / -0.005em"20radius:21 sm: 0px22 md: 0px23 lg: 0px24 pill: 9999px25shadows:26 card: none27 button: none28borders:29 card: "1px solid rgba(16,16,16,0.10)"30 divider: rgba(16,16,16,0.14)31buttons:32 primary:33 background: #10101034 color: #fbf8f135 border: none36 shape: sharp37 padding: 14px 26px38 font: 500 / 0.875rem39 secondary:40 background: transparent41 color: #10101042 border: 1px solid #10101043 shape: sharp44 padding: 14px 26px45 font: 500 / 0.875rem46 outline:47 background: transparent48 color: #10101049 border: 1px solid rgba(16,16,16,0.18)50 shape: sharp51 padding: 14px 26px52 font: 500 / 0.875rem53 ghost:54 background: transparent55 color: #5a5a5a56 border: none57 shape: sharp58 padding: 14px 18px59 font: 500 / 0.875rem60charts:61 variant: "thin-bars"62 stroke_width: 163 fill_opacity: 064 gridlines: false65 bar_gap: 16px66 highlight: single67 dot_marker: false68fonts_url: "https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap"69dependencies: ["lucide-react"]70---71 72# Maison Vox73 74## AI Build Instructions75 76> **Read this section before writing any code.** The rules below77> are non-negotiable. Every value used in the UI must come from this78> file's frontmatter — never substitute, approximate, or invent new79> colors, fonts, radii, or shadows. If a value is missing, ask the80> user before adding one.81 82### 1 · Your role83 84You are building UI for a project that has adopted **Maison Vox** as its85design system. Treat `DESIGN.md` as the single source of truth.86Your job is to translate the user's product requirements into87components and pages that look like they were designed by the same88person who authored this file.89 90### 2 · Token compliance91 92- Pull every color, font family, radius, shadow, and spacing value93 from the frontmatter at the top of this file.94- Use semantic roles (e.g. `primary`, `accent`, `muted`) — never95 hard-code hex values that bypass the system.96- When a token can be expressed as a CSS variable, declare it once97 in your global stylesheet and reference it everywhere downstream.98- The Google Fonts `<link>` is provided in the Typography section.99 Add it to `<head>` before any component renders.100 101### 3 · Component recipes102 103Use these recipes verbatim when building the corresponding component.104 105#### Buttons106 107Four variants are defined. Pick one — never blend variants or invent a fifth.108 109- **Primary** — sharp shape, bg `#101010`, text `#fbf8f1`, padding `14px 26px`, weight `500`.110- **Secondary** — sharp shape, text `#101010`, border `1px solid #101010`, padding `14px 26px`, weight `500`.111- **Outline** — sharp shape, text `#101010`, border `1px solid rgba(16,16,16,0.18)`, padding `14px 26px`, weight `500`.112- **Ghost** — sharp shape, text `#5a5a5a`, padding `14px 18px`, weight `500`.113 114Reach for **primary** as the single dominant CTA per screen.115**Secondary** for the supporting action. **Outline** for tertiary116actions in toolbars. **Ghost** for inline links and table actions.117 118#### Cards119 120- Background: `#fbf8f1`121- Border: `1px solid rgba(16,16,16,0.10)`122- Shadow: `none`123- Radius: `radius.lg` (`0px`)124- Internal padding: `20px` for compact cards, `24–28px` for content cards.125 126#### Tabs127 128Variant: `underline`. Flat row of labels. Active tab gets a 2px underline in the accent color — no fill.129 130#### Charts131 132- Bar/line variant: `thin-bars`133- No gridlines — let the bars/lines carry the data.134- Highlight strategy: `single` — emphasize a single bar/point per chart.135 136#### Typography pairings137 138- **Display (`DM Serif Display`)** — h1, h2, hero headlines, brand wordmarks.139- **Body (`Inter`)** — paragraphs, labels, button text, form inputs.140- **Mono (`JetBrains 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## 1. Atmosphere166 167Maison Vox is the visual language of a small design studio that publishes a print quarterly on the side. Headlines run in DM Serif Display at 112px — nearly touching the gutter — with negative tracking that compresses them into editorial bricks. Body sits in Inter at 17px on a 1.65 leading, set in two asymmetric columns. The page is warm bone `#fbf8f1`, never white, and the only color in the entire system is a single tomato `#e0432a` that appears as the first letter of the H1 and as the period after the CTA label. That's it.168 169The discipline is in the gestures: oversized type as the only ornament, sharp 0px radius everywhere, and a single colored character as the brand mark.170 171**Signature moves**172- DM Serif Display at 112px hero, 400 weight, -0.045em tracking — print-quarterly scale173- Tomato `#e0432a` used only on the first letter of the headline AND the period after the CTA — never as a fill174- Sharp 0px radius on every surface — buttons, cards, inputs175- Asymmetric two-column body (8/4 split) — the column rhythm IS the layout176- Italic display variant for pull quotes, never for emphasis in body177 178## 2. Palette179 180### Core181- **Ink** `#101010` — text, headings, button fill182- **Bone** `#fbf8f1` — page background (warm, not white)183- **Bone Lift** `#f3efe7` — secondary surfaces184- **Hairline** `rgba(16,16,16,0.10)` — section dividers185 186### Accent187- **Tomato** `#e0432a` — first letter of H1, period after CTA, marginalia number188- That is the entire color system. There is no second accent.189 190## 3. Typography191 192| Role | Font | Size | Weight | Leading | Tracking |193|------|------|------|--------|---------|----------|194| Hero | DM Serif Display | 112px | 400 | 0.94 | -0.045em |195| H1 | DM Serif Display | 64px | 400 | 1.0 | -0.035em |196| H2 | DM Serif Display | 32px | 400 | 1.15 | -0.02em |197| H3 | Inter | 20px | 600 | 1.3 | -0.015em |198| Body | Inter | 17px | 400 | 1.65 | -0.005em |199| Caption | Inter | 13px | 500 | 1.4 | 0 |200| Marginalia | JetBrains Mono | 11px | 500 | 1.0 | 0.12em uppercase |201 202DM Serif Display only at 400 — there is no other weight. Inter carries weight (400/500/600) for body and UI. Mono is reserved for marginalia (page numbers, footnotes, dateline).203 204## 4. Buttons205 206### Primary (Ink Slab)207```css208background: #101010;209color: #fbf8f1;210padding: 14px 26px;211border-radius: 0;212font-family: "Inter";213font-weight: 500;214```215 216The button label always ends with a tomato period: `View case study` followed by a `#e0432a` colored `.`217 218### Secondary (Ink Outline)219- Transparent, 1px solid ink, ink text220- Same sharp shape, same padding221 222### Ghost223- Inter 500, ink-secondary, no border. Hover: underline.224 225## 5. Cards226 227- Background `#fbf8f1` (or `#f3efe7` for elevated)228- 1px hairline at 10% ink, NO shadow, NO radius229- Internal padding 32px / 48px230- Featured cards add a single 1px ink top border — that is the only chrome231 232## 6. Charts233 234Thin precise bars (3px wide, 16px gap). One bar in tomato, others in 18% ink. NO gridlines, NO axis lines — labels float in mono uppercase along the baseline. Line charts run at 1px ink with no fill. The chart is a footnote, not a feature.235 236## 7. Tabs237 238Underline 1px in ink for the active state. Inactive tabs are Inter 500 ink-secondary. The active label is set in DM Serif Display italic — that's the rhythm change, not a color shift.239 240## 8. Spacing241 242- Base 8px243- Scale: `8, 16, 24, 32, 48, 64, 96, 128`244- Section padding: 128px desktop, 64px mobile — editorial needs the air245 246## 9. Do's & don'ts247 248✅ **Do**249- Use DM Serif Display only at 400 weight — anything heavier reads as decorative, not editorial250- Reserve the tomato for the first letter and the period — those two gestures are the brand251- Hold the asymmetric 8/4 column split for body — symmetric two-column reads as a blog252- Use sharp 0px radius on everything — print rules253 254❌ **Don't**255- Use a second accent color — tomato alone, on two specific characters256- Use any radius — pills are reserved for status badges only257- Use serif body — Inter carries the body, DM Serif Display carries the display258- Use weight on DM Serif — there is only 400259 260---261 262## Tokens263 264> Generated from the same source the live preview renders from.265> Treat the values below as the contract — never substitute approximations.266 267### Colors268 269| Role | Value |270|-----------|-------|271| primary | `#101010` |272| secondary | `#5a5a5a` |273| tertiary | `#101010` |274| neutral | `#f3efe7` |275| surface | `#fbf8f1` |276 277### Typography278 279- **Display:** DM Serif Display280- **Body:** Inter281- **Mono:** JetBrains Mono282 283| Role | size / leading / weight / tracking |284|------|------------------------------------|285| Hero | 7rem / 0.94 / 400 / -0.045em |286| H1 | 4rem / 1 / 400 / -0.035em |287| H2 | 2rem / 1.15 / 400 / -0.02em |288| Body | 1.0625rem / 1.65 / 400 / -0.005em |289 290### Radius291 292- sm: `0px`293- md: `0px`294- lg: `0px`295- pill: `9999px`296 297### Shadows298 299- **card:** `none`300- **button:** `none`301 302### Borders303 304- **card:** `1px solid rgba(16,16,16,0.10)`305- **divider:** `rgba(16,16,16,0.14)`306 307### Buttons308 309Four variants, each fully tokenized. The preview renders from these exact values.310 311#### Primary312 313| Property | Value |314|----------|-------|315| shape | `sharp` |316| background | `#101010` |317| color | `#fbf8f1` |318| border | `none` |319| padding | `14px 26px` |320| fontWeight | `500` |321| fontSize | `0.875rem` |322 323#### Secondary324 325| Property | Value |326|----------|-------|327| shape | `sharp` |328| background | `transparent` |329| color | `#101010` |330| border | `1px solid #101010` |331| padding | `14px 26px` |332| fontWeight | `500` |333| fontSize | `0.875rem` |334 335#### Outline336 337| Property | Value |338|----------|-------|339| shape | `sharp` |340| background | `transparent` |341| color | `#101010` |342| border | `1px solid rgba(16,16,16,0.18)` |343| padding | `14px 26px` |344| fontWeight | `500` |345| fontSize | `0.875rem` |346 347#### Ghost348 349| Property | Value |350|----------|-------|351| shape | `sharp` |352| background | `transparent` |353| color | `#5a5a5a` |354| border | `none` |355| padding | `14px 18px` |356| fontWeight | `500` |357| fontSize | `0.875rem` |358 359### Charts360 361| Property | Value |362|----------|-------|363| variant | `thin-bars` |364| strokeWidth | `1` |365| fillOpacity | `0` |366| gridlines | `false` |367| barGap | `16px` |368| highlight | `single` |369| dotMarker | `false` |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=DM+Serif+Display:ital@0;1&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" />npm install lucide-react// tailwind.config.jsexport default { theme: { extend: { fontFamily: { display: ['"DM Serif Display"', 'serif'], sans: ['"Inter"', 'sans-serif'], mono: ['"JetBrains Mono"', 'monospace'], }, colors: { primary: '#101010', secondary: '#5a5a5a', accent: '#101010', neutral: '#f3efe7', surface: '#fbf8f1', }, borderRadius: { sm: '0px', md: '0px', lg: '0px', }, }, },};Liquid chrome and oil-slick iridescence on onyx — holographic gradients, polished metal CTAs, and prismatic accents. Y2K reborn as molten metal, not neon. Chrome is the color.
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.
Cool brushed silver on a slate canvas. The metallic surface appears only on the primary CTA and one hero badge — everywhere else is graphite ink and quiet steel hairlines. Premium hardware, machined.
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.