Two-color spot print, halftone vibes. Fluorescent pink + ink-black on cream paper, 3px misregistration outlines, hand-cut chunky type.
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: "Risograph Press"3description: "Two-color spot print, halftone vibes. Fluorescent pink + ink-black on cream paper, 3px misregistration outlines, hand-cut chunky type."4tags: [print, playful, editorial, maximalist]5colors:6 primary: "#1A1815"7 secondary: "#6B665C"8 tertiary: "#FF4F8B"9 neutral: "#F4EFE3"10 surface: "#FBF7EC"11typography:12 display: Fraunces13 body: Inter14 mono: "Space Mono"15 scale:16 hero: "5.5rem / 0.95 / 600 / -0.04em"17 h1: "3rem / 1 / 500 / -0.03em"18 h2: "1.5rem / 1.2 / 600 / -0.01em"19 body: "1.0625rem / 1.55 / 400 / 0"20radius:21 sm: 2px22 md: 3px23 lg: 4px24shadows:25 card: "3px 3px 0 #1A1815"26 button: "2px 2px 0 #1A1815"27borders:28 card: "2px solid #1A1815"29 divider: "2px solid #1A1815"30buttons:31 primary:32 background: #FF4F8B33 color: #1A181534 border: 2px solid #1A181535 shape: rounded36 padding: 12px 20px37 font: display / 600 / 0.9375rem / 0.04em38 uppercase: true39 shadow: 3px 3px 0 #1A181540 secondary:41 background: #FBF7EC42 color: #1A181543 border: 2px solid #1A181544 shape: rounded45 padding: 12px 20px46 font: display / 600 / 0.9375rem / 0.04em47 uppercase: true48 shadow: 3px 3px 0 #FF4F8B49 outline:50 background: transparent51 color: #1A181552 border: 2px dashed #1A181553 shape: rounded54 padding: 11px 20px55 font: mono / 700 / 0.875rem / 0.06em56 uppercase: true57 ghost:58 background: transparent59 color: #FF4F8B60 border: none61 shape: sharp62 padding: 10px 4px63 font: mono / 700 / 0.875rem / 0.06em64 uppercase: true65 hover: underline66charts:67 variant: bars68 gridlines: false69 bar_radius: 070 bar_gap: 8px71 highlight: all72 axis_color: "#1A1815"73 palette: ["#FF4F8B", "#1A1815", "#FF4F8B", "#1A1815", "#FF4F8B"]74fonts_url: "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600&family=Inter:wght@400;500;700&family=Space+Mono:wght@400;700&display=swap"75dependencies: ["lucide-react"]76---77 78# Risograph Press79 80## AI Build Instructions81 82> **Read this section before writing any code.** The rules below83> are non-negotiable. Every value used in the UI must come from this84> file's frontmatter — never substitute, approximate, or invent new85> colors, fonts, radii, or shadows. If a value is missing, ask the86> user before adding one.87 88### 1 · Your role89 90You are building UI for a project that has adopted **Risograph Press** as its91design system. Treat `DESIGN.md` as the single source of truth.92Your job is to translate the user's product requirements into93components and pages that look like they were designed by the same94person who authored this file.95 96### 2 · Token compliance97 98- Pull every color, font family, radius, shadow, and spacing value99 from the frontmatter at the top of this file.100- Use semantic roles (e.g. `primary`, `accent`, `muted`) — never101 hard-code hex values that bypass the system.102- When a token can be expressed as a CSS variable, declare it once103 in your global stylesheet and reference it everywhere downstream.104- The Google Fonts `<link>` is provided in the Typography section.105 Add it to `<head>` before any component renders.106 107### 3 · Component recipes108 109Use these recipes verbatim when building the corresponding component.110 111#### Buttons112 113Four variants are defined. Pick one — never blend variants or invent a fifth.114 115- **Primary** — rounded shape, bg `#FF4F8B`, text `#1A1815`, border `2px solid #1A1815`, padding `12px 20px`, weight `600`, uppercased, shadow `3px 3px 0 #1A1815`.116- **Secondary** — rounded shape, bg `#FBF7EC`, text `#1A1815`, border `2px solid #1A1815`, padding `12px 20px`, weight `600`, uppercased, shadow `3px 3px 0 #FF4F8B`.117- **Outline** — rounded shape, text `#1A1815`, border `2px dashed #1A1815`, padding `11px 20px`, weight `700`, uppercased.118- **Ghost** — sharp shape, text `#FF4F8B`, padding `10px 4px`, weight `700`, uppercased.119 120Reach for **primary** as the single dominant CTA per screen.121**Secondary** for the supporting action. **Outline** for tertiary122actions in toolbars. **Ghost** for inline links and table actions.123 124#### Cards125 126- Background: `#FBF7EC`127- Border: `2px solid #1A1815`128- Shadow: `3px 3px 0 #1A1815`129- Radius: `radius.lg` (`4px`)130- Internal padding: `20px` for compact cards, `24–28px` for content cards.131 132#### Tabs133 134Variant: `brutalist`. Hard rectangular tabs with thick borders. Active tab is fully filled in the primary color.135Tabs are uppercased with `0.08em` tracking.136 137#### Charts138 139- Bar/line variant: `bars`140- Bar radius: `0`141- No gridlines — let the bars/lines carry the data.142- Highlight strategy: `all` — emphasize a single bar/point per chart.143- Use the declared palette in order: `#FF4F8B`, `#1A1815`, `#FF4F8B`, `#1A1815`, `#FF4F8B`.144 145#### Typography pairings146 147- **Display (`Fraunces`)** — h1, h2, hero headlines, brand wordmarks.148- **Body (`Inter`)** — paragraphs, labels, button text, form inputs.149- **Mono (`Space 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## Overview175Risograph Press is a love letter to the spot-color print era. Two inks — fluorescent pink and warm black — on cream uncoated paper. A 3px ink-offset shadow on every card mimics the slight misregistration of a real Riso pass. Borders are 2px solid ink, hand-cut. Display type is editorial Fraunces; body is Inter; captions are typewriter Space Mono.176 177The system is loud where it wants to be (pink CTAs with chunky offset shadows) and quiet everywhere else (cream surfaces, ink-only meta).178 179## Material180- **Page** is **cream #F4EFE3**, never white. The warmth matters — pure white kills the Riso illusion.181- **Cards** sit on **stock #FBF7EC**, one shade lighter, with a **2px solid ink** border and a **3px 3px 0** ink-offset shadow. The shadow is the signature.182- **Pink #FF4F8B** is the spot color. It appears on primary CTAs, accents, and as a misregistration shadow under secondary buttons. Never as body text.183 184## Typography185- **Display: Fraunces** at hero (5.5rem / 600 / -0.04em). Editorial, optical-size, with a soft serif terminal that pairs with the cream paper.186- **Body: Inter** at 1.0625rem for comfortable read on cream.187- **Mono: Space Mono** for chunky uppercase labels and outline-button text — it reads like a typewriter ribbon.188 189| Role | Font | Size | Weight | Tracking |190|------|------|------|--------|----------|191| Hero | Display | 5.5rem | 600 | -0.04em |192| H1 | Display | 3rem | 500 | -0.03em |193| H2 | Body | 1.5rem | 600 | -0.01em |194| Body | Body | 1.0625rem | 400 | 0 |195| Label | Mono | 0.875rem | 700 | +0.06em UPPER |196 197## Buttons (the centerpiece)198Four variants, all uppercase, all chunky.199 200- **Primary** — pink fill, 2px ink border, **3px 3px 0** ink shadow. Display font, +0.04em tracking. The shadow is non-negotiable.201- **Secondary** — cream tile, 2px ink border, **3px 3px 0 PINK** shadow. Inverted ink relationship, same chunkiness.202- **Outline** — dashed 2px ink, mono label. Reads like a paper cut-line.203- **Ghost** — pink mono label with hover underline. Used inside cards only.204 205## Charts & Data206Bar charts alternate pink and ink — the spot-color rhythm of a Riso print. **No gridlines, no rounded bars, no shadows on chart elements.** The chart's energy comes from contrast between the two passes.207 208## Do's and Don'ts209- ✅ Always include the 3px ink-offset shadow on cards and primary CTAs.210- ✅ Mix pink and ink — the system needs both passes to read as Riso.211- ✅ Use cream backgrounds. Pure white breaks the print metaphor.212- ✅ Let display Fraunces breathe at -3% to -4% tracking on hero sizes.213- ❌ No drop-shadow blur. Riso shadows are crisp solid offsets.214- ❌ No third color. Two passes — pink and ink — only.215- ❌ No pill buttons. The brief is hand-cut, not pharmaceutical.216- ❌ No body text in pink. Ink only for prose.217 218---219 220## Tokens221 222> Generated from the same source the live preview renders from.223> Treat the values below as the contract — never substitute approximations.224 225### Colors226 227| Role | Value |228|-----------|-------|229| primary | `#1A1815` |230| secondary | `#6B665C` |231| tertiary | `#FF4F8B` |232| neutral | `#F4EFE3` |233| surface | `#FBF7EC` |234 235### Typography236 237- **Display:** Fraunces238- **Body:** Inter239- **Mono:** Space Mono240 241| Role | size / leading / weight / tracking |242|------|------------------------------------|243| Hero | 5.5rem / 0.95 / 600 / -0.04em |244| H1 | 3rem / 1 / 500 / -0.03em |245| H2 | 1.5rem / 1.2 / 600 / -0.01em |246| Body | 1.0625rem / 1.55 / 400 / 0 |247 248### Radius249 250- sm: `2px`251- md: `3px`252- lg: `4px`253 254### Shadows255 256- **card:** `3px 3px 0 #1A1815`257- **button:** `2px 2px 0 #1A1815`258 259### Borders260 261- **card:** `2px solid #1A1815`262- **divider:** `2px solid #1A1815`263 264### Buttons265 266Four variants, each fully tokenized. The preview renders from these exact values.267 268#### Primary269 270| Property | Value |271|----------|-------|272| shape | `rounded` |273| background | `#FF4F8B` |274| color | `#1A1815` |275| border | `2px solid #1A1815` |276| padding | `12px 20px` |277| fontFamily | `display` |278| fontWeight | `600` |279| fontSize | `0.9375rem` |280| tracking | `0.04em` |281| uppercase | `true` |282| shadow | `3px 3px 0 #1A1815` |283 284#### Secondary285 286| Property | Value |287|----------|-------|288| shape | `rounded` |289| background | `#FBF7EC` |290| color | `#1A1815` |291| border | `2px solid #1A1815` |292| padding | `12px 20px` |293| fontFamily | `display` |294| fontWeight | `600` |295| fontSize | `0.9375rem` |296| tracking | `0.04em` |297| uppercase | `true` |298| shadow | `3px 3px 0 #FF4F8B` |299 300#### Outline301 302| Property | Value |303|----------|-------|304| shape | `rounded` |305| background | `transparent` |306| color | `#1A1815` |307| border | `2px dashed #1A1815` |308| padding | `11px 20px` |309| fontFamily | `mono` |310| fontWeight | `700` |311| fontSize | `0.875rem` |312| tracking | `0.06em` |313| uppercase | `true` |314 315#### Ghost316 317| Property | Value |318|----------|-------|319| shape | `sharp` |320| background | `transparent` |321| color | `#FF4F8B` |322| border | `none` |323| padding | `10px 4px` |324| fontFamily | `mono` |325| fontWeight | `700` |326| fontSize | `0.875rem` |327| tracking | `0.06em` |328| uppercase | `true` |329| hoverHint | `underline` |330 331### Charts332 333| Property | Value |334|----------|-------|335| variant | `bars` |336| gridlines | `false` |337| barRadius | `0` |338| barGap | `8px` |339| highlight | `all` |340| axisColor | `#1A1815` |341| palette | `#FF4F8B`, `#1A1815`, `#FF4F8B`, `#1A1815`, `#FF4F8B` |342 # 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@9..144,500;9..144,600&family=Inter:wght@400;500;700&family=Space+Mono:wght@400;700&display=swap" />npm install lucide-react// tailwind.config.jsexport default { theme: { extend: { fontFamily: { display: ['"Fraunces"', 'serif'], sans: ['"Inter"', 'sans-serif'], mono: ['"Space Mono"', 'monospace'], }, colors: { primary: '#1A1815', secondary: '#6B665C', accent: '#FF4F8B', neutral: '#F4EFE3', surface: '#FBF7EC', }, borderRadius: { sm: '2px', md: '3px', lg: '4px', }, }, },};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.
Cool soft-glass system on a pale icy-blue canvas. True frosted cards at 18% white with 28px backdrop-blur, 160% saturate, 1px white hairline, inner top-edge gloss. One restrained slate-blue 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.