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', }, }, },};Luxury productivity. Deep purple hero against pristine white, non-standard variable weight 460/540, ultra-tight 0.96 leading, warm cream CTAs, lavender as the only accent.
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.
Literary salon as product page. Parchment canvas, serif headlines at weight 500, terracotta brand, exclusively warm neutrals, and ring-shadow depth.
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.