A multi-stop pastel gradient runs across the page — desaturated lavender, peach, seafoam, cream — every stop at ~25% chroma so it reads as soft sorbet rather than rainbow. Pure paper-white cards, ink text, hairlines. Calm and considered.
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: "Sorbet Tonal"3description: "A multi-stop pastel gradient runs across the page — desaturated lavender, peach, seafoam, cream — every stop at ~25% chroma so it reads as soft sorbet rather than rainbow. Pure paper-white cards, ink text, hairlines. Calm and considered."4tags: [gradient, pastel, soft, minimal, wellness, premium]5colors:6 primary: "#1C1B22"7 secondary: "#6B6973"8 tertiary: "#A088B8"9 neutral: "#F4EFE9"10 surface: "#FFFFFF"11typography:12 display: Manrope13 body: Manrope14 mono: "JetBrains Mono"15 scale:16 hero: "4.75rem / 1.05 / 600 / -0.035em"17 h1: "2.75rem / 1.1 / 600 / -0.028em"18 h2: "1.5rem / 1.3 / 600 / -0.015em"19 body: "1.0625rem / 1.7 / 400 / -0.003em"20radius:21 sm: 14px22 md: 20px23 lg: 28px24 pill: 9999px25shadows:26 card: "0 18px 48px -24px rgba(40, 35, 60, 0.14), 0 1px 3px rgba(40, 35, 60, 0.05)"27 button: "0 6px 18px -8px rgba(28, 27, 34, 0.22)"28borders:29 card: "1px solid rgba(28, 27, 34, 0.06)"30 divider: "rgba(28, 27, 34, 0.08)"31glass:32 surface: "#FFFFFF"33 blur: 0px34 border: "1px solid rgba(28, 27, 34, 0.06)"35 shadow: "0 18px 48px -24px rgba(40, 35, 60, 0.14)"36 backdrop: "radial-gradient(at 8% 12%, rgba(195, 178, 222, 0.55) 0px, transparent 42%), radial-gradient(at 90% 18%, rgba(245, 210, 198, 0.55) 0px, transparent 45%), radial-gradient(at 78% 92%, rgba(196, 224, 215, 0.55) 0px, transparent 48%), radial-gradient(at 14% 88%, rgba(238, 226, 200, 0.50) 0px, transparent 45%)"37buttons:38 primary:39 background: #1C1B2240 color: #FFFFFF41 border: 1px solid #1C1B2242 shape: pill43 padding: 13px 26px44 font: 600 / 0.9375rem / -0.005em45 shadow: 0 6px 18px -8px rgba(28, 27, 34, 0.22)46 secondary:47 background: #FFFFFF48 color: #1C1B2249 border: 1px solid rgba(28, 27, 34, 0.10)50 shape: pill51 padding: 13px 26px52 font: 500 / 0.9375rem / -0.005em53 outline:54 background: transparent55 color: #1C1B2256 border: 1px solid rgba(28, 27, 34, 0.16)57 shape: pill58 padding: 12px 25px59 font: 500 / 0.9375rem / -0.005em60 ghost:61 background: transparent62 color: #6B697363 border: none64 shape: pill65 padding: 12px 6px66 font: 500 / 0.9375rem / -0.005em67 hover: underline68charts:69 variant: area70 stroke_width: 271 fill_opacity: 0.272 gridlines: false73 highlight: last74 dot_marker: true75 axis_color: "#6B6973"76 palette: ["#A088B8", "#C7B4D8", "#E0D2EA"]77fonts_url: "https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&family=JetBrains+Mono:wght@400&display=swap"78dependencies: ["lucide-react"]79---80 81# Sorbet Tonal82 83## AI Build Instructions84 85> **Read this section before writing any code.** The rules below86> are non-negotiable. Every value used in the UI must come from this87> file's frontmatter — never substitute, approximate, or invent new88> colors, fonts, radii, or shadows. If a value is missing, ask the89> user before adding one.90 91### 1 · Your role92 93You are building UI for a project that has adopted **Sorbet Tonal** as its94design system. Treat `DESIGN.md` as the single source of truth.95Your job is to translate the user's product requirements into96components and pages that look like they were designed by the same97person who authored this file.98 99### 2 · Token compliance100 101- Pull every color, font family, radius, shadow, and spacing value102 from the frontmatter at the top of this file.103- Use semantic roles (e.g. `primary`, `accent`, `muted`) — never104 hard-code hex values that bypass the system.105- When a token can be expressed as a CSS variable, declare it once106 in your global stylesheet and reference it everywhere downstream.107- The Google Fonts `<link>` is provided in the Typography section.108 Add it to `<head>` before any component renders.109 110### 3 · Component recipes111 112Use these recipes verbatim when building the corresponding component.113 114#### Buttons115 116Four variants are defined. Pick one — never blend variants or invent a fifth.117 118- **Primary** — pill shape, bg `#1C1B22`, text `#FFFFFF`, border `1px solid #1C1B22`, padding `13px 26px`, weight `600`, shadow `0 6px 18px -8px rgba(28, 27, 34, 0.22)`.119- **Secondary** — pill shape, bg `#FFFFFF`, text `#1C1B22`, border `1px solid rgba(28, 27, 34, 0.10)`, padding `13px 26px`, weight `500`.120- **Outline** — pill shape, text `#1C1B22`, border `1px solid rgba(28, 27, 34, 0.16)`, padding `12px 25px`, weight `500`.121- **Ghost** — pill shape, text `#6B6973`, padding `12px 6px`, weight `500`.122 123Reach for **primary** as the single dominant CTA per screen.124**Secondary** for the supporting action. **Outline** for tertiary125actions in toolbars. **Ghost** for inline links and table actions.126 127#### Cards128 129- Background: `#FFFFFF`130- Border: `1px solid rgba(28, 27, 34, 0.06)`131- Shadow: `0 18px 48px -24px rgba(40, 35, 60, 0.14), 0 1px 3px rgba(40, 35, 60, 0.05)`132- Radius: `radius.lg` (`28px`)133- Internal padding: `20px` for compact cards, `24–28px` for content cards.134 135> This system ships a **glass treatment** — see the Glass token table.136> Apply `backdrop-filter: blur(0px)` to translucent panes.137> The page must have a backdrop (gradient mesh / blurred orbs) for glass to refract.138 139#### Charts140 141- Bar/line variant: `area`142- No gridlines — let the bars/lines carry the data.143- Highlight strategy: `last` — emphasize a single bar/point per chart.144- Use the declared palette in order: `#A088B8`, `#C7B4D8`, `#E0D2EA`.145 146#### Typography pairings147 148- **Display (`Manrope`)** — h1, h2, hero headlines, brand wordmarks.149- **Body (`Manrope`)** — paragraphs, labels, button text, form inputs.150- **Mono (`JetBrains Mono`)** — code, eyebrows, metadata, numerals in tables.151 152### 4 · Hard constraints153 154Never do any of the following without explicit instruction from the user:155 156- Introduce a new color, font, radius, or shadow that isn't declared above.157- Mix this system with another (e.g. don't paste in Material or Bootstrap defaults).158- Use generic gradient defaults (purple→blue, peach→pink) — they break the system's voice.159- Reach for emoji icons. Use a consistent icon library and size icons in line with body type.160- Add motion that exceeds the system's restraint — keep transitions short (≤200ms) and subtle.161 162### 5 · Before you finish — verify163 164Run through this checklist for every screen you produce:165 166- [ ] Every color used appears in the Colors table above.167- [ ] Headlines use the display font; body copy uses the body font.168- [ ] Buttons match one of the declared variants exactly (shape, padding, weight).169- [ ] Border-radius values come from `radius.sm` / `radius.md` / `radius.lg` / `radius.pill`.170- [ ] Cards and dividers use the declared border + shadow tokens.171- [ ] No values were invented; if you needed something missing, you stopped and asked.172 173---174 175## Overview176Sorbet Tonal is built on one decision: a multi-stop pastel gradient runs across the entire page background — pale lavender, peach, seafoam, cream — but every stop is held at ~25% chroma. The desaturation is what makes it premium. Without it the system would read as a rainbow; with it, the page reads as soft sorbet.177 178Cards sit on top in pure paper white. The contrast between the soft gradient page and the bright white cards is the entire design. For wellness brands, mindfulness apps, premium consumer products, journaling tools, anything that should feel calm and considered.179 180## The Gradient Recipe181Four soft radial blobs at the corners, each ~50-55% alpha, layered over a warm cream base:182 183```css184body {185 background:186 radial-gradient(at 8% 12%, rgba(195, 178, 222, 0.55) 0, transparent 42%), /* lavender */187 radial-gradient(at 90% 18%, rgba(245, 210, 198, 0.55) 0, transparent 45%), /* peach */188 radial-gradient(at 78% 92%, rgba(196, 224, 215, 0.55) 0, transparent 48%), /* seafoam */189 radial-gradient(at 14% 88%, rgba(238, 226, 200, 0.50) 0, transparent 45%), /* cream */190 #F4EFE9;191}192```193 194The stops sit at the four corners — never centered, never edge-to-edge — so the gradient feels like ambient light rather than a poster. The 25% chroma cap is non-negotiable; pushing any stop higher tips the page into "vibecoded gradient."195 196## Color197- **Ink #1C1B22** — primary text and primary CTA.198- **Graphite #6B6973** — secondary text, axis labels.199- **Mauve #A088B8** — chromatic accent (active state, chart line). Sits inside the gradient family.200- **Cream #F4EFE9** — page canvas base.201- **Paper #FFFFFF** — pure white card surface. The contrast is the design.202 203## Typography204**One family — Manrope.** Display, body, all weights covered. The single-family decision keeps the system quiet so the gradient can sing.205 206| Role | Size | Weight | Tracking |207|------|------|--------|----------|208| Hero | 4.75rem | 600 | -0.035em |209| H1 | 2.75rem | 600 | -0.028em |210| H2 | 1.5rem | 600 | -0.015em |211| Body | 1.0625rem | 400 | -0.003em / 1.7 |212 213## Geometry214- **Radii: 14 / 20 / 28, plus pill.** Generous and soft throughout. The whole system is rounded.215- **Section gap: 128px** desktop, 80px mobile. The gradient needs room to breathe.216- **12-column grid** with 28px gutters.217 218## Buttons219- **Primary** — solid ink pill. The gradient is the protagonist; the CTA stays quiet.220- **Secondary** — pure white pill with a hairline.221- **Outline** — bare hairline pill.222- **Ghost** — bare graphite label, hover underline.223 224## Cards225**Pure white surface** on the gradient — no translucency, no glass. The contrast is the entire point. 20px corner radius, 1px ink hairline at 6% opacity, single soft pillowy shadow. Padding 32px minimum.226 227## Charts & Data228Mauve area chart, 2px stroke, 20% fill opacity, no gridlines. End-of-line dot marker. The chart sits inside a white card so the gradient stays in the background.229 230## Do's and Don'ts231- ✅ The gradient is mandatory. The whole identity rests on it.232- ✅ Hold every gradient stop at ~25% chroma. Desaturation is what makes it premium.233- ✅ Cards are pure white — never tinted, never glass. The contrast IS the design.234- ✅ One family (Manrope) for everything. The discipline keeps the gradient as the only voice.235- ❌ No high-chroma gradient stops. The moment a stop goes saturated, the system dies.236- ❌ No translucent or tinted cards. White only.237- ❌ No second chromatic accent beyond mauve.238- ❌ No sharp corners. The system is soft from canvas to button.239 240---241 242## Tokens243 244> Generated from the same source the live preview renders from.245> Treat the values below as the contract — never substitute approximations.246 247### Colors248 249| Role | Value |250|-----------|-------|251| primary | `#1C1B22` |252| secondary | `#6B6973` |253| tertiary | `#A088B8` |254| neutral | `#F4EFE9` |255| surface | `#FFFFFF` |256 257### Typography258 259- **Display:** Manrope260- **Body:** Manrope261- **Mono:** JetBrains Mono262 263| Role | size / leading / weight / tracking |264|------|------------------------------------|265| Hero | 4.75rem / 1.05 / 600 / -0.035em |266| H1 | 2.75rem / 1.1 / 600 / -0.028em |267| H2 | 1.5rem / 1.3 / 600 / -0.015em |268| Body | 1.0625rem / 1.7 / 400 / -0.003em |269 270### Radius271 272- sm: `14px`273- md: `20px`274- lg: `28px`275- pill: `9999px`276 277### Shadows278 279- **card:** `0 18px 48px -24px rgba(40, 35, 60, 0.14), 0 1px 3px rgba(40, 35, 60, 0.05)`280- **button:** `0 6px 18px -8px rgba(28, 27, 34, 0.22)`281 282### Borders283 284- **card:** `1px solid rgba(28, 27, 34, 0.06)`285- **divider:** `rgba(28, 27, 34, 0.08)`286 287### Glass288 289Translucent panes with backdrop-filter — the preview renders cards from these exact values.290 291| Property | Value |292|----------|-------|293| surface | `#FFFFFF` |294| blur | `0px` |295| border | `1px solid rgba(28, 27, 34, 0.06)` |296| shadow | `0 18px 48px -24px rgba(40, 35, 60, 0.14)` |297| backdrop | `radial-gradient(at 8% 12%, rgba(195, 178, 222, 0.55) 0px, transparent 42%), radial-gradient(at 90% 18%, rgba(245, 210, 198, 0.55) 0px, transparent 45%), radial-gradient(at 78% 92%, rgba(196, 224, 215, 0.55) 0px, transparent 48%), radial-gradient(at 14% 88%, rgba(238, 226, 200, 0.50) 0px, transparent 45%)` |298 299### Buttons300 301Four variants, each fully tokenized. The preview renders from these exact values.302 303#### Primary304 305| Property | Value |306|----------|-------|307| shape | `pill` |308| background | `#1C1B22` |309| color | `#FFFFFF` |310| border | `1px solid #1C1B22` |311| padding | `13px 26px` |312| fontWeight | `600` |313| fontSize | `0.9375rem` |314| tracking | `-0.005em` |315| shadow | `0 6px 18px -8px rgba(28, 27, 34, 0.22)` |316 317#### Secondary318 319| Property | Value |320|----------|-------|321| shape | `pill` |322| background | `#FFFFFF` |323| color | `#1C1B22` |324| border | `1px solid rgba(28, 27, 34, 0.10)` |325| padding | `13px 26px` |326| fontWeight | `500` |327| fontSize | `0.9375rem` |328| tracking | `-0.005em` |329 330#### Outline331 332| Property | Value |333|----------|-------|334| shape | `pill` |335| background | `transparent` |336| color | `#1C1B22` |337| border | `1px solid rgba(28, 27, 34, 0.16)` |338| padding | `12px 25px` |339| fontWeight | `500` |340| fontSize | `0.9375rem` |341| tracking | `-0.005em` |342 343#### Ghost344 345| Property | Value |346|----------|-------|347| shape | `pill` |348| background | `transparent` |349| color | `#6B6973` |350| border | `none` |351| padding | `12px 6px` |352| fontWeight | `500` |353| fontSize | `0.9375rem` |354| tracking | `-0.005em` |355| hoverHint | `underline` |356 357### Charts358 359| Property | Value |360|----------|-------|361| variant | `area` |362| strokeWidth | `2` |363| fillOpacity | `0.2` |364| gridlines | `false` |365| highlight | `last` |366| dotMarker | `true` |367| axisColor | `#6B6973` |368| palette | `#A088B8`, `#C7B4D8`, `#E0D2EA` |369 # 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=Manrope:wght@400;500;600;700&family=JetBrains+Mono:wght@400&display=swap" />npm install lucide-react// tailwind.config.jsexport default { theme: { extend: { fontFamily: { display: ['"Manrope"', 'serif'], sans: ['"Manrope"', 'sans-serif'], mono: ['"JetBrains Mono"', 'monospace'], }, colors: { primary: '#1C1B22', secondary: '#6B6973', accent: '#A088B8', neutral: '#F4EFE9', surface: '#FFFFFF', }, borderRadius: { sm: '14px', md: '20px', lg: '28px', }, }, },};A slow conic gradient sweeps behind the page through desaturated lavender, sage, peach at ~22% chroma — soft prismatic light, never rainbow. Pure white cards on top, ink text, hairlines.
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.
Radical 2-color duotone. Deep ink-blue and acid citron, with no third hue. Every surface is one of the two colors or a tint thereof — the constraint is the personality.
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.