S

Sanity Design System

8 colors20 componentsSatoshi / CerealAug 2026
Verified Design Specv2.4.0

Design System Inspired by Sanity

1. Visual Theme & Atmosphere

Section 01

Sanity's website is a developer-content platform rendered as a nocturnal command center -- dark, precise, and deeply structured. The entire experience sits on a near-black canvas (`#0b0b0b`) that reads less like a "dark mode toggle" and more like the natural state of a tool built for people who live in terminals. Where most CMS marketing pages reach for friendly pastels and soft illustration, Sanity leans into the gravity of its own product: structured content deserves a structured stage.

The signature typographic voice is waldenburgNormal -- a distinctive, slightly geometric sans-serif with tight negative letter-spacing (-0.32px to -4.48px at display sizes) that gives headlines a compressed, engineered quality. At 112px hero scale with -4.48px tracking, the type feels almost machined -- like precision-cut steel letterforms. This is paired with IBM Plex Mono for code and technical labels, creating a dual-register voice: editorial authority meets developer credibility.

What makes Sanity distinctive is the interplay between its monochromatic dark palette and vivid, saturated accent punctuation. The neutral scale runs from pure black through a tightly controlled gray ramp (`#0b0b0b` -> `#212121` -> `#353535` -> `#797979` -> `#b9b9b9` -> `#ededed` -> `#ffffff`) with no warm or cool bias -- just pure, achromatic precision. Against this disciplined backdrop, a neon green accent (display-p3 green) and electric blue (`#0052ef`) land with the impact of signal lights in a dark control room. The orange-red CTA (`#f36458`) provides the only warm touch in an otherwise cool system.

**Key Characteristics:**

Near-black canvas (`#0b0b0b`) as the default, natural environment -- not a dark "mode" but the primary identity
waldenburgNormal with extreme negative tracking at display sizes, creating a precision-engineered typographic voice
Pure achromatic gray scale -- no warm or cool undertones, pure neutral discipline
Vivid accent punctuation: neon green, electric blue (`#0052ef`), and coral-red (`#f36458`) against the dark field
Pill-shaped primary buttons (99999px radius) contrasting with subtle rounded rectangles (3-6px) for secondary actions
IBM Plex Mono as the technical counterweight to the editorial display face
Full-bleed dark sections with content contained in measured max-width containers
Hover states that shift to electric blue (`#0052ef`) across all interactive elements -- a consistent "activation" signal

2. Color Palette & Roles

Section 02

Primary Brand

Section 03
Sanity Black (`#0b0b0b`): The primary canvas and dominant surface color. Not pure black but close enough to feel absolute. The foundation of the entire visual identity.
Pure Black (`#000000`): Used for maximum-contrast moments, deep overlays, and certain border accents.
Sanity Red (`#f36458`): The primary CTA and brand accent -- a warm coral-red that serves as the main call-to-action color. Used for "Get Started" buttons and primary conversion points.

Accent & Interactive

Section 04
Electric Blue (`#0052ef`): The universal hover/active state color across the entire system. Buttons, links, and interactive elements all shift to this blue on hover. Also used as `--color-blue-700` for focus rings and active states.
Light Blue (`#55beff` / `#afe3ff`): Secondary blue variants used for accent backgrounds, badges, and dimmed blue surfaces.
Neon Green (`color(display-p3 .270588 1 0)`): A vivid, wide-gamut green used as `--color-fg-accent-green` for success states and premium feature highlights. Falls back to `#19d600` in sRGB.
Accent Magenta (`color(display-p3 .960784 0 1)`): A vivid wide-gamut magenta for specialized accent moments.

Surface & Background

Section 05
Near Black (`#0b0b0b`): Default page background and primary surface.
Dark Gray (`#212121`): Elevated surface color for cards, secondary containers, input backgrounds, and subtle layering above the base canvas.
Medium Dark (`#353535`): Tertiary surface and border color for creating depth between dark layers.
Pure White (`#ffffff`): Used for inverted sections, light-on-dark text, and specific button surfaces.
Light Gray (`#ededed`): Light surface for inverted/light sections and subtle background tints.

Neutrals & Text

Section 06
White (`#ffffff`): Primary text color on dark surfaces, maximum legibility.
Silver (`#b9b9b9`): Secondary text, body copy on dark surfaces, muted descriptions, and placeholder text.
Medium Gray (`#797979`): Tertiary text, metadata, timestamps, and de-emphasized content.
Charcoal (`#212121`): Text on light/inverted surfaces.
Near Black Text (`#0b0b0b`): Primary text on white/light button surfaces.

Semantic

Section 07
Error Red (`#dd0000`): Destructive actions, validation errors, and critical warnings -- a pure, high-saturation red.
GPC Green (`#37cd84`): Privacy/compliance indicator green.
Focus Ring Blue (`#0052ef`): Focus ring color for accessibility, matching the interactive blue.

Border System

Section 08
Dark Border (`#0b0b0b`): Primary border on dark containers -- barely visible, maintaining minimal containment.
Subtle Border (`#212121`): Standard border for inputs, textareas, and card edges on dark surfaces.
Medium Border (`#353535`): More visible borders for emphasized containment and dividers.
Light Border (`#ffffff`): Border on inverted/light elements or buttons needing contrast separation.
Orange Border (`color(display-p3 1 0.3333 0)`): Special accent border for highlighted/featured elements.

3. Typography Rules

Section 09

Font Family

Section 010
Display / Headline: `waldenburgNormal`, fallback: `waldenburgNormal Fallback, ui-sans-serif, system-ui`
Body / UI: `waldenburgNormal`, fallback: `waldenburgNormal Fallback, ui-sans-serif, system-ui`
Code / Technical: `IBM Plex Mono`, fallback: `ibmPlexMono Fallback, ui-monospace`
Fallback / CJK: `Helvetica`, fallback: `Arial, Hiragino Sans GB, STXihei, Microsoft YaHei, WenQuanYi Micro Hei`

*Note: waldenburgNormal is a custom typeface. For external implementations, use Inter or Space Grotesk as the sans substitute (geometric, slightly condensed feel). IBM Plex Mono is available on Google Fonts.*

Hierarchy

Section 011

| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |

|------|------|------|--------|-------------|----------------|-------|

| Display / Hero | waldenburgNormal | 112px (7rem) | 400 | 1.00 (tight) | -4.48px | Maximum impact, compressed tracking |

| Hero Secondary | waldenburgNormal | 72px (4.5rem) | 400 | 1.05 (tight) | -2.88px | Large section headers |

| Section Heading | waldenburgNormal | 48px (3rem) | 400 | 1.08 (tight) | -1.68px | Primary section anchors |

| Heading Large | waldenburgNormal | 38px (2.38rem) | 400 | 1.10 (tight) | -1.14px | Feature section titles |

| Heading Medium | waldenburgNormal | 32px (2rem) | 425 | 1.24 (tight) | -0.32px | Card titles, subsection headers |

| Heading Small | waldenburgNormal | 24px (1.5rem) | 425 | 1.24 (tight) | -0.24px | Smaller feature headings |

| Subheading | waldenburgNormal | 20px (1.25rem) | 425 | 1.13 (tight) | -0.2px | Sub-section markers |

| Body Large | waldenburgNormal | 18px (1.13rem) | 400 | 1.50 | -0.18px | Intro paragraphs, descriptions |

| Body | waldenburgNormal | 16px (1rem) | 400 | 1.50 | normal | Standard body text |

| Body Small | waldenburgNormal | 15px (0.94rem) | 400 | 1.50 | -0.15px | Compact body text |

| Caption | waldenburgNormal | 13px (0.81rem) | 400-500 | 1.30-1.50 | -0.13px | Metadata, descriptions, tags |

| Small Caption | waldenburgNormal | 12px (0.75rem) | 400 | 1.50 | -0.12px | Footnotes, timestamps |

| Micro / Label | waldenburgNormal | 11px (0.69rem) | 500-600 | 1.00-1.50 | normal | Uppercase labels, tiny badges |

| Code Body | IBM Plex Mono | 15px (0.94rem) | 400 | 1.50 | normal | Code blocks, technical content |

| Code Caption | IBM Plex Mono | 13px (0.81rem) | 400-500 | 1.30-1.50 | normal | Inline code, small technical labels |

| Code Micro | IBM Plex Mono | 10-12px | 400 | 1.30-1.50 | normal | Tiny code labels, uppercase tags |

Principles

Section 012
Extreme negative tracking at scale: Display headings at 72px+ use aggressive negative letter-spacing (-2.88px to -4.48px), creating a tight, engineered quality that distinguishes Sanity from looser editorial typography.
Single font, multiple registers: waldenburgNormal handles both editorial display and functional UI text. The weight range is narrow (400-425 for most, 500-600 only for tiny labels), keeping the voice consistent.
OpenType feature control: Typography uses deliberate feature settings including `"cv01", "cv11", "cv12", "cv13", "ss07"` for display sizes and `"calt" 0` for body text, fine-tuning character alternates for different contexts.
Tight headings, relaxed body: Headings use 1.00-1.24 line-height (extremely tight), while body text breathes at 1.50. This contrast creates clear visual hierarchy.
Uppercase for technical labels: IBM Plex Mono captions and small labels frequently use `text-transform: uppercase` with tight line-heights, creating a "system readout" aesthetic for technical metadata.

4. Component Stylings

Section 013

Buttons

Section 014

**Primary CTA (Pill)**

Background: Sanity Red (`#f36458`)
Text: White (`#ffffff`)
Padding: 8px 16px
Border Radius: 99999px (full pill)
Border: none
Hover: Electric Blue (`#0052ef`) background, white text
Font: 16px waldenburgNormal, weight 400

**Secondary (Dark Pill)**

Background: Near Black (`#0b0b0b`)
Text: Silver (`#b9b9b9`)
Padding: 8px 12px
Border Radius: 99999px (full pill)
Border: none
Hover: Electric Blue (`#0052ef`) background, white text

**Outlined (Light Pill)**

Background: White (`#ffffff`)
Text: Near Black (`#0b0b0b`)
Padding: 8px
Border Radius: 99999px (full pill)
Border: 1px solid `#0b0b0b`
Hover: Electric Blue (`#0052ef`) background, white text

**Ghost / Subtle**

Background: Dark Gray (`#212121`)
Text: Silver (`#b9b9b9`)
Padding: 0px 12px
Border Radius: 5px
Border: 1px solid `#212121`
Hover: Electric Blue (`#0052ef`) background, white text

**Uppercase Label Button**

Font: 11px waldenburgNormal, weight 600, uppercase
Background: transparent or `#212121`
Text: Silver (`#b9b9b9`)
Letter-spacing: normal
Used for tab-like navigation and filter controls

Cards

Section 015

**Dark Content Card**

Background: `#212121`
Border: 1px solid `#353535` or `#212121`
Border Radius: 6px
Padding: 24px
Text: White (`#ffffff`) for titles, Silver (`#b9b9b9`) for body
Hover: subtle border color shift or elevation change

**Feature Card (Full-bleed)**

Background: `#0b0b0b` or full-bleed image/gradient
Border: none or 1px solid `#212121`
Border Radius: 12px
Padding: 32-48px
Contains large imagery with overlaid text

Inputs

Section 016

**Text Input / Textarea**

Background: Near Black (`#0b0b0b`)
Text: Silver (`#b9b9b9`)
Border: 1px solid `#212121`
Padding: 8px 12px
Border Radius: 3px
Focus: outline with `var(--focus-ring-color)` (blue), 2px solid
Focus background: shifts to deep cyan (`#072227`)

**Search Input**

Background: `#0b0b0b`
Text: Silver (`#b9b9b9`)
Padding: 0px 12px
Border Radius: 3px
Placeholder: Medium Gray (`#797979`)

Navigation

Section 017

**Top Navigation**

Background: Near Black (`#0b0b0b`) with backdrop blur
Height: auto, compact padding
Logo: left-aligned, Sanity wordmark
Links: waldenburgNormal 16px, Silver (`#b9b9b9`)
Link Hover: Electric Blue via `--color-fg-accent-blue`
CTA Button: Sanity Red pill button right-aligned
Separator: 1px border-bottom `#212121`

**Footer**

Background: Near Black (`#0b0b0b`)
Multi-column link layout
Links: Silver (`#b9b9b9`), hover to blue
Section headers: White (`#ffffff`), 13px uppercase IBM Plex Mono

Badges / Pills

Section 018

**Neutral Subtle**

Background: White (`#ffffff`)
Text: Near Black (`#0b0b0b`)
Padding: 8px
Font: 13px
Border Radius: 99999px

**Neutral Filled**

Background: Near Black (`#0b0b0b`)
Text: White (`#ffffff`)
Padding: 8px
Font: 13px
Border Radius: 99999px

5. Layout Principles

Section 019

Spacing System

Section 020

Base unit: **8px**

| Token | Value | Usage |

|-------|-------|-------|

| space-1 | 1px | Hairline gaps, border-like spacing |

| space-2 | 2px | Minimal internal padding |

| space-3 | 4px | Tight component internal spacing |

| space-4 | 6px | Small element gaps |

| space-5 | 8px | Base unit -- button padding, input padding, badge padding |

| space-6 | 12px | Standard component gap, button horizontal padding |

| space-7 | 16px | Section internal padding, card spacing |

| space-8 | 24px | Large component padding, card internal spacing |

| space-9 | 32px | Section padding, container gutters |

| space-10 | 48px | Large section vertical spacing |

| space-11 | 64px | Major section breaks |

| space-12 | 96-120px | Hero vertical padding, maximum section spacing |

Grid & Container

Section 021
Max content width: ~1440px (inferred from breakpoints)
Page gutter: 32px on desktop, 16px on mobile
Content sections use full-bleed backgrounds with centered, max-width content
Multi-column layouts: 2-3 columns on desktop, single column on mobile
Card grids: CSS Grid with consistent gaps (16-24px)

Whitespace Philosophy

Section 022

Sanity uses aggressive vertical spacing between sections (64-120px) to create breathing room on the dark canvas. Within sections, spacing is tighter (16-32px), creating dense information clusters separated by generous voids. This rhythm gives the page a "slides" quality -- each section feels like its own focused frame.

Border Radius Scale

Section 023

| Token | Value | Usage |

|-------|-------|-------|

| radius-xs | 3px | Inputs, textareas, subtle rounding |

| radius-sm | 4-5px | Secondary buttons, small cards, tags |

| radius-md | 6px | Standard cards, containers |

| radius-lg | 12px | Large cards, feature containers, forms |

| radius-pill | 99999px | Primary buttons, badges, nav pills |

6. Depth & Elevation

Section 024

Shadow System

Section 025

| Level | Value | Usage |

|-------|-------|-------|

| Level 0 (Flat) | none | Default state for most elements -- dark surfaces create depth through color alone |

| Level 1 (Subtle) | 0px 0px 0px 1px `#212121` | Border-like shadow for minimal containment without visible borders |

| Level 2 (Focus) | 0 0 0 2px `var(--color-blue-500)` | Focus ring for inputs and interactive elements |

| Level 3 (Overlay) | Backdrop blur + semi-transparent dark | Navigation overlay, modal backgrounds |

Depth Philosophy

Section 026

Sanity's depth system is almost entirely **colorimetric** rather than shadow-based. Elevation is communicated through surface color shifts: `#0b0b0b` (ground) -> `#212121` (elevated) -> `#353535` (prominent) -> `#ffffff` (inverted/highest). This approach is native to dark interfaces where traditional drop shadows would be invisible. The few shadows that exist are ring-based (0px 0px 0px Npx) or blur-based (backdrop-filter) rather than offset shadows, maintaining the flat, precision-engineered aesthetic.

Border-based containment (1px solid `#212121` or `#353535`) serves as the primary spatial separator, with the border darkness calibrated to be visible but not dominant. The system avoids "floating card" aesthetics -- everything feels mounted to the surface rather than hovering above it.

7. Do's and Don'ts

Section 027

Do

Section 028
Use the achromatic gray scale as the foundation -- maintain pure neutral discipline with no warm/cool tinting
Apply Electric Blue (`#0052ef`) consistently as the universal hover/active state across all interactive elements
Use extreme negative letter-spacing (-2px to -4.48px) on display headings 48px and above
Keep primary CTAs as full-pill shapes (99999px radius) with the coral-red (`#f36458`)
Use IBM Plex Mono uppercase for technical labels, tags, and system metadata
Communicate depth through surface color (dark-to-light) rather than shadows
Maintain generous vertical section spacing (64-120px) on the dark canvas
Use `"cv01", "cv11", "cv12", "cv13", "ss07"` OpenType features for display typography

Don't

Section 029
Don't introduce warm or cool color tints to the neutral scale -- Sanity's grays are pure achromatic
Don't use drop shadows for elevation -- dark interfaces demand colorimetric depth
Don't apply border-radius between 13px and 99998px -- the system jumps from 12px (large card) directly to pill (99999px)
Don't mix the coral-red CTA with the electric blue interactive color in the same element
Don't use heavy font weights (700+) -- the system maxes out at 600 and only for 11px uppercase labels
Don't place light text on light surfaces or dark text on dark surfaces without checking the gray-on-gray contrast ratio
Don't use traditional offset box-shadows -- ring shadows (0 0 0 Npx) or border-based containment only
Don't break the tight line-height on headings -- 1.00-1.24 is the range, never go to 1.5+ for display text

8. Responsive Behavior

Section 030

Breakpoints

Section 031

| Name | Width | Behavior |

|------|-------|----------|

| Desktop XL | >= 1640px | Full layout, maximum content width |

| Desktop | >= 1440px | Standard desktop layout |

| Desktop Compact | >= 1200px | Slightly condensed desktop |

| Laptop | >= 1100px | Reduced column widths |

| Tablet Landscape | >= 960px | 2-column layouts begin collapsing |

| Tablet | >= 768px | Transition zone, some elements stack |

| Mobile Large | >= 720px | Near-tablet layout |

| Mobile | >= 480px | Single-column, stacked layout |

| Mobile Small | >= 376px | Minimum supported width |

Collapsing Strategy

Section 032
Navigation: Horizontal links collapse to hamburger menu below 768px
Hero typography: Scales from 112px -> 72px -> 48px -> 38px across breakpoints, maintaining tight letter-spacing ratios
Grid layouts: 3-column -> 2-column at ~960px, single-column below 768px
Card grids: Horizontal scrolling on mobile instead of wrapping (preserving card aspect ratios)
Section spacing: Vertical padding reduces by ~40% on mobile (120px -> 64px -> 48px)
Button sizing: CTA pills maintain padding but reduce font size; ghost buttons stay fixed
Code blocks: Horizontal scroll with preserved monospace formatting

Mobile-Specific Adjustments

Section 033
Full-bleed sections extend edge-to-edge with 16px internal gutters
Touch targets: minimum 44px for all interactive elements
Heading letter-spacing relaxes slightly at mobile sizes (less aggressive negative tracking)
Image containers switch from fixed aspect ratios to full-width with auto height

9. Agent Prompt Guide

Section 034

Quick Color Reference

Section 035

```

Background: #0b0b0b (near-black canvas)

Surface: #212121 (elevated cards/containers)

Border: #353535 (visible) / #212121 (subtle)

Text Primary: #ffffff (white on dark)

Text Secondary: #b9b9b9 (silver on dark)

Text Tertiary: #797979 (medium gray)

CTA: #f36458 (coral-red)

Interactive: #0052ef (electric blue, all hovers)

Success: #19d600 (green, sRGB fallback)

Error: #dd0000 (pure red)

Light Surface: #ededed / #ffffff (inverted sections)

```

Example Prompts

Section 036

**Landing page section:**

"Create a feature section with a near-black (#0b0b0b) background. Use a 48px heading in Inter with -1.68px letter-spacing, white text. Below it, 16px body text in #b9b9b9 with 1.50 line-height. Include a coral-red (#f36458) pill button with white text and a secondary dark (#0b0b0b) pill button with #b9b9b9 text. Both buttons hover to #0052ef blue."

**Card grid:**

"Build a 3-column card grid on a #0b0b0b background. Each card has a #212121 surface, 1px solid #353535 border, 6px border-radius, and 24px padding. Card titles are 24px white with -0.24px letter-spacing. Body text is 13px #b9b9b9. Add a 13px IBM Plex Mono uppercase tag in #797979 at the top of each card."

**Form section:**

"Design a contact form on a #0b0b0b background. Inputs have #0b0b0b background, 1px solid #212121 border, 3px border-radius, 8px 12px padding, and #b9b9b9 placeholder text. Focus state shows a 2px blue (#0052ef) ring. Submit button is a full-width coral-red (#f36458) pill. Include a 13px #797979 helper text below each field."

**Navigation bar:**

"Create a sticky top navigation on #0b0b0b with backdrop blur. Left: brand text in 15px white. Center/right: nav links in 16px #b9b9b9 that hover to blue. Far right: a coral-red (#f36458) pill CTA button. Bottom border: 1px solid #212121."

Iteration Guide

Section 037

1. **Start dark**: Begin with `#0b0b0b` background, `#ffffff` primary text, `#b9b9b9` secondary text

2. **Add structure**: Use `#212121` surfaces and `#353535` borders for containment -- no shadows

3. **Apply typography**: Inter (or Space Grotesk) with tight letter-spacing on headings, 1.50 line-height on body

4. **Color punctuation**: Add `#f36458` for CTAs and `#0052ef` for all hover/interactive states

5. **Refine spacing**: 8px base unit, 24-32px within sections, 64-120px between sections

6. **Technical details**: Add IBM Plex Mono uppercase labels for tags and metadata

7. **Polish**: Ensure all interactive elements hover to `#0052ef`, all buttons are pills or subtle 5px radius, borders are hairline (1px)

72,570+ DESIGN.md files generated