
Claude.ai โ Design System Overview
Source: Observable UI characteristics from claude.ai and claude.com (closed-source product; values are approximations)
Typography \- Primary sans-serif: Styrene A, Styrene B (Klim Type Foundry) โ used for UI chrome, body copy, and navigation \- Accent/display serif: Tiempos Text or Tiempos Headline (Klim Type Foundry) โ used sparingly for hero and marketing copy on anthropic.com \- Monospace (code): Berkeley Mono or system ui-monospace fallback \- Base size: 16px; line-height: 1.5โ1.6; letter-spacing: โ0.01em for headings
Color Philosophy \- Warm off-white/cream backgrounds (#FAF9F6 light, #F5F0E8 warm variant) \- Near-black text (#1A1A18) for maximum legibility with warmth \- Coral/terra-cotta accent (#D4763B / #C96A2A) โ the primary brand CTA color \- Muted warm grays for secondary surfaces and borders \- Dark mode inverts to deep warm charcoal (#1C1B19) backgrounds
Spacing System \- Base unit: 4px; scale: 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 / 96px \- Component padding typically 12โ16px vertical, 16โ24px horizontal \- Chat bubbles: 16px padding, 24px gap between turns
Border Radius \- Small (inputs, chips): 8px \- Medium (cards, panels): 12px \- Large (modals, message bubbles): 16โ20px \- Full pill (buttons): 9999px
Shadows \- Subtle elevation (cards): 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.06) \- Modal/overlay: 0 8px 24px rgba(0,0,0,0.12)
Layout \- Max content width: 768px (chat thread), 1200px (marketing pages) \- Sidebar: 260px fixed; collapses to icon-only at narrow viewports \- Mobile breakpoint: 768px
Component Defaults \- Buttons: pill shape, 40px height (md), 36px (sm); coral primary, ghost secondary \- Inputs: 8px radius, 1px warm-gray border, focus ring in coral tint \- Transitions: 150ms ease for hover states, 200ms ease for panel open/close
:root { / ===================== TYPOGRAPHY ===================== / --font-family-base: 'Styrene A', 'Styrene B', ui-sans-serif, system-ui, -apple-system, sans-serif; --font-family-display: 'Tiempos Headline', 'Tiempos Text', Georgia, 'Times New Roman', serif; --font-family-mono: 'Berkeley Mono', ui-monospace, 'Cascadia Code', 'Fira Code', monospace;
--font-size-xs: 0.75rem; / 12px / --font-size-sm: 0.875rem; / 14px / --font-size-base: 1rem; / 16px / --font-size-md: 1.0625rem; / 17px / --font-size-lg: 1.125rem; / 18px / --font-size-xl: 1.25rem; / 20px / --font-size-2xl: 1.5rem; / 24px / --font-size-3xl: 2rem; / 32px /
--font-weight-regular: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700;
--line-height-tight: 1.25; --line-height-snug: 1.4; --line-height-base: 1.55; --line-height-relaxed: 1.7;
--letter-spacing-tight: -0.02em; --letter-spacing-normal: -0.01em; --letter-spacing-wide: 0.02em;
/ ===================== SPACING ===================== / --space-1: 0.25rem; / 4px / --space-2: 0.5rem; / 8px / --space-3: 0.75rem; / 12px / --space-4: 1rem; / 16px / --space-5: 1.25rem; / 20px / --space-6: 1.5rem; / 24px / --space-8: 2rem; / 32px / --space-10: 2.5rem; / 40px / --space-12: 3rem; / 48px / --space-16: 4rem; / 64px / --space-24: 6rem; / 96px /
/ Semantic aliases / --space-xs: var(--space-1); --space-sm: var(--space-2); --space-md: var(--space-4); --space-lg: var(--space-6); --space-xl: var(--space-8); --space-2xl: var(--space-12);
/ ===================== COLORS โ Light theme ===================== / / Backgrounds / --color-bg-base: #FAF9F6; / warm off-white, main canvas / --color-bg-warm: #F5F0E8; / slightly deeper cream, sidebar/panels / --color-bg-surface: #FFFFFF; / pure white for elevated cards / --color-bg-subtle: #F0EDE6; / hover states, input fill / --color-bg-overlay: rgba(26, 26, 24, 0.4); / modal scrim /
/ Foregrounds / Text / --color-fg-base: #1A1A18; / near-black, primary text / --color-fg-muted: #5A5750; / secondary text, placeholders / --color-fg-subtle: #9B9690; / tertiary, disabled text / --color-fg-inverse: #FAF9F6; / text on dark surfaces /
/ Brand / Accent / --color-accent: #D4763B; / coral/terra-cotta โ primary CTA / --color-accent-hover: #C06228; / darker on hover / --color-accent-light: #F5E6D8; / tinted bg for accent badges / --color-accent-muted: #E8A87C; / softer accent for illustrations /
/ Borders / --color-border: #E2DDD6; / default border, warm gray / --color-border-strong: #C9C3BB; / input focus ring, dividers / --color-border-subtle: #EDE9E3; / subtle separators /
/ Semantic / --color-success: #2D7D52; --color-success-bg: #EBF5EF; --color-warning: #B45309; --color-warning-bg: #FEF3C7; --color-error: #C0392B; --color-error-bg: #FDEEEE; --color-info: #1D5FA6; --color-info-bg: #EBF3FC;
/ ===================== BORDER RADIUS ===================== / --radius-xs: 4px; --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-xl: 20px; --radius-2xl: 24px; --radius-full: 9999px;
/ ===================== SHADOWS ===================== / --shadow-xs: 0 1px 2px rgba(26, 26, 24, 0.06); --shadow-sm: 0 1px 3px rgba(26, 26, 24, 0.08), 0 1px 2px rgba(26, 26, 24, 0.06); --shadow-md: 0 4px 12px rgba(26, 26, 24, 0.10), 0 2px 4px rgba(26, 26, 24, 0.06); --shadow-lg: 0 8px 24px rgba(26, 26, 24, 0.12), 0 4px 8px rgba(26, 26, 24, 0.08); --shadow-xl: 0 20px 48px rgba(26, 26, 24, 0.16), 0 8px 16px rgba(26, 26, 24, 0.10); --shadow-focus: 0 0 0 3px rgba(212, 118, 59, 0.30); / coral focus ring /
/ ===================== TRANSITIONS ===================== / --transition-fast: 100ms ease; --transition-default: 150ms ease; --transition-slow: 200ms ease; --transition-panel: 250ms cubic-bezier(0.4, 0, 0.2, 1);
/ ===================== LAYOUT ===================== / --sidebar-width: 260px; --sidebar-width-collapsed: 56px; --chat-max-width: 768px; --content-max-width: 1200px; --header-height: 56px; --input-height-sm: 36px; --input-height-md: 40px; --input-height-lg: 48px; --z-sidebar: 100; --z-header: 200; --z-dropdown: 300; --z-modal: 400; --z-toast: 500; }
/ ===================== DARK THEME ===================== / [data-theme='dark'] { / Backgrounds / --color-bg-base: #1C1B19; / deep warm charcoal / --color-bg-warm: #232220; / sidebar / panels / --color-bg-surface: #2A2927; / elevated cards / --color-bg-subtle: #302F2C; / hover states / --color-bg-overlay: rgba(0, 0, 0, 0.55);
/ Foregrounds / Text / --color-fg-base: #EDE9E3; / warm near-white / --color-fg-muted: #A09A92; / secondary text / --color-fg-subtle: #6B6560; / tertiary, disabled / --color-fg-inverse: #1C1B19;
/ Brand / Accent / --color-accent: #E08A55; / slightly lighter coral in dark / --color-accent-hover: #F09A65; --color-accent-light: #3D2A1A; --color-accent-muted: #B06030;
/ Borders / --color-border: #3A3835; --color-border-strong: #4E4B47; --color-border-subtle: #2E2D2B;
/ Semantic / --color-success: #4ABA7A; --color-success-bg: #1A3326; --color-warning: #F5A623; --color-warning-bg: #332508; --color-error: #E05C4A; --color-error-bg: #3A1A18; --color-info: #5B9FE0; --color-info-bg: #172640;
/ Shadows (less spread in dark mode) / --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px 2px rgba(0, 0, 0, 0.2); --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.2); --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5), 0 4px 8px rgba(0, 0, 0, 0.3); --shadow-focus: 0 0 0 3px rgba(224, 138, 85, 0.35); }
Claude.ai โ Design Tokens Reference
All values are approximations derived from observable UI. Claude.ai is a closed-source product.
Color Tokens
Backgrounds | Token | Light | Dark | Usage | |---|---|---|---| | --color-bg-base | #FAF9F6 | #1C1B19 | Main app canvas | | --color-bg-warm | #F5F0E8 | #232220 | Sidebar, secondary panels | | --color-bg-surface | #FFFFFF | #2A2927 | Elevated cards, dropdowns | | --color-bg-subtle | #F0EDE6 | #302F2C | Hover states, input fill |
Text / Foreground | Token | Light | Dark | Usage | |---|---|---|---| | --color-fg-base | #1A1A18 | #EDE9E3 | Primary text | | --color-fg-muted | #5A5750 | #A09A92 | Secondary / metadata | | --color-fg-subtle | #9B9690 | #6B6560 | Placeholders, disabled | | --color-fg-inverse | #FAF9F6 | #1C1B19 | Text on contrasting bg |
Brand Accent (Coral / Terra-cotta) | Token | Light | Dark | Usage | |---|---|---|---| | --color-accent | #D4763B | #E08A55 | Primary CTA buttons | | --color-accent-hover | #C06228 | #F09A65 | Hover state of accent | | --color-accent-light | #F5E6D8 | #3D2A1A | Badge/chip backgrounds |
Borders | Token | Light | Dark | Usage | |---|---|---|---| | --color-border | #E2DDD6 | #3A3835 | Default borders | | --color-border-strong | #C9C3BB | #4E4B47 | Input borders, dividers | | --color-border-subtle | #EDE9E3 | #2E2D2B | Section separators |
Semantic | Token | Purpose | |---|---| | --color-success / --color-success-bg | Confirmation, copy success | | --color-warning / --color-warning-bg | Rate-limit warnings | | --color-error / --color-error-bg | Form errors, failed requests | | --color-info / --color-info-bg | Informational callouts |
Spacing Tokens
| Token | Value | px equiv | Typical use |
|---|---|---|---|
| --space-1 | 0.25rem | 4px | Icon gap, tight padding |
| --space-2 | 0.5rem | 8px | Inline padding, badge padding |
| --space-3 | 0.75rem | 12px | Button vertical padding |
| --space-4 | 1rem | 16px | Standard block padding |
| --space-6 | 1.5rem | 24px | Section gap, chat turn gap |
| --space-8 | 2rem | 32px | Section margin |
| --space-12 | 3rem | 48px | Large section gap |
| --space-16 | 4rem | 64px | Page-level vertical rhythm |
| --space-24 | 6rem | 96px | Hero padding |
Typography Tokens
| Token | Value |
|---|---|
| --font-family-base | 'Styrene A', 'Styrene B', ui-sans-serif, system-ui, sans-serif |
| --font-family-display | 'Tiempos Headline', 'Tiempos Text', Georgia, serif |
| --font-family-mono | 'Berkeley Mono', ui-monospace, 'Fira Code', monospace |
| --font-size-base | 1rem (16px) |
| --font-size-sm | 0.875rem (14px) |
| --font-size-lg | 1.125rem (18px) |
| --font-size-xl | 1.25rem (20px) |
| --line-height-base | 1.55 |
| --letter-spacing-normal | -0.01em |
Border Radius Tokens
| Token | Value | Usage |
|---|---|---|
| --radius-xs | 4px | Tiny tags, tooltips |
| --radius-sm | 8px | Inputs, chips, inline code |
| --radius-md | 12px | Cards, panels, dropdowns |
| --radius-lg | 16px | Message bubbles, modals |
| --radius-xl | 20px | Large floating panels |
| --radius-full | 9999px | Pill buttons, avatars |
Shadow Tokens
| Token | Value | Usage |
|---|---|---|
| --shadow-xs | 0 1px 2px rgba(26,26,24,.06) | Barely-there lift |
| --shadow-sm | 0 1px 3px rgba(26,26,24,.08), 0 1px 2px rgba(26,26,24,.06) | Cards, sidebar items |
| --shadow-md | 0 4px 12px rgba(26,26,24,.10), 0 2px 4px rgba(26,26,24,.06) | Dropdowns, tooltips |
| --shadow-lg | 0 8px 24px rgba(26,26,24,.12), 0 4px 8px rgba(26,26,24,.08) | Modals, command palette |
| --shadow-focus | 0 0 0 3px rgba(212,118,59,.30) | Keyboard focus ring |
Transition Tokens
| Token | Value | Usage |
|---|---|---|
| --transition-fast | 100ms ease | Button active state |
| --transition-default | 150ms ease | Hover, color changes |
| --transition-slow | 200ms ease | Expand/collapse |
| --transition-panel | 250ms cubic-bezier(0.4,0,0.2,1) | Sidebar slide, modals |
Implementation Notes โ Claude.ai Design System
Source Disclaimer Claude.ai is a closed-source product. All design tokens and values in this record are approximations derived from: \- Direct DOM/CSS observation of claude.ai and claude.com (as of July 2026) \- Klim Type Foundry documentation (Styrene A/B, Tiempos families) \- Anthropic brand assets visible in OG images and marketing pages \- General knowledge of the product's visual characteristics
No proprietary source files were accessed. Values should be verified against the live product before production use.
UI Framework \- React (Next.js) โ claude.com uses /\_next/static/ asset paths \- Tailwind CSS is likely in use (utility-first class patterns observed on claude.com) \- claude.ai (the chat app) uses a custom React SPA bundled with Vite or similar \- No public design system package or Storybook has been published by Anthropic
Theme Support \- Claude.ai supports light and dark modes, toggled via OS preference and a manual toggle in settings \- Dark mode appears implemented via a data-theme='dark' attribute on or
, or via prefers-color-scheme media query \- The warm off-white in light mode and warm charcoal in dark mode are intentional brand choices โ avoid using pure #FFFFFF / #000000Typography Notes \- Styrene A / Styrene B (Klim Type Foundry) are licensed, non-system fonts. Web font delivery is via fonts.anthropic.com or bundled in the app. \- Fallback stacks should use ui-sans-serif, system-ui to preserve warmth on devices without the custom font loaded. \- Berkeley Mono is used in the chat interface for code blocks โ a distinctive visual identity marker. \- Display serif (Tiempos) is used on marketing/landing pages; the chat UI predominantly uses Styrene for body and UI text.
Notable Patterns \- Coral accent (#D4763B) is the single primary interactive color โ used for primary buttons, links, and focus rings. Avoid using it decoratively. \- Warm neutrals throughout โ the palette deliberately avoids cool grays; all neutral shades have a warm (slightly yellow/orange) undertone. \- Message bubbles use --radius-lg (16px) with no hard border, relying on background fill to distinguish assistant vs. user messages. \- Sidebar is 260px wide, collapsible to icon-only at 56px; collapse is animated with --transition-panel. \- Input area at the bottom of chat is a multi-line


.webp)


.webp)













SaaSFrame subscriptions are sold on Lemon Squeezy, a secured online selling platform for creators.
SaaSFrame gets updated all the time! Every new update and version will immediately be made available to all SaaSFrame users.
You can generate an invoice on your Lemon Squeezy portal once you purchased SaaSFrame. You will find the link in the order confirmation email.
You can cancel your membership subscription at any moment on your profile page.โ
If you're not satisfied, you can ask for a refund within 7 days. Just send me an email at antoine[at]unmake[dot]io
You can send me an email at antoine[at]unmake[dot]io, I'll be happy to help with any questions.