Skip to content
design.md
v1 · open source

design.md

Paste a URL. Get a DESIGN.md with colors, typography, spacing, and tokens ready for your AI agent to read.

extracted from · emits to · used by

  • stripe
  • linear
  • vercel
  • supabase
  • cursor
  • raycast
  • resend
  • github
  • tailwind v4
  • shadcn theme
  • OKLCH ramps
  • WCAG AA
  • design tokens
  • dark mode
  • Claude Code
  • v0
  • Lovable
  • Replit
  • Windsurf
  • Copilot

example

A real DESIGN.md markdown source on the left, rendered preview on the right. Switch tabs to see what we'll emit alongside.

spec preview
stripe.com
<!-- Generated: 2026-04-05 | Source: https://stripe.com | Pages: 1 | Framework: none -->

<!-- This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. -->



# Design System: Stripe



## 1. Visual Theme & Atmosphere



Stripe's website is the gold standard of fintech design -- a system that manages to feel simultaneously technical and luxurious, precise and warm. The page opens on a white canvas (#ffffff) with deep navy headings (#061b31) and a signature purple (#533afd) that functions as both brand anchor and interactive accent. This is not the cold, clinical purple of enterprise software; it is a rich, saturated violet that reads as confident and financially authoritative. The overall impression is of a financial institution redesigned by a world-class type foundry.



The custom sohne-var variable font is the defining element of Stripe's visual identity. Every text element enables the OpenType "ss01" stylistic set, which modifies character shapes for a distinctly geometric feel. At display sizes (44px-56px), sohne-var runs at weight 300 -- an extraordinarily light weight for headlines that creates an ethereal, almost whispered authority. This is the opposite of the bold hero headline convention; Stripe's headlines do not need to shout. The negative letter-spacing (-1.4px at 56px, -0.96px at 48px) tightens the text into dense, engineered blocks.



What truly distinguishes Stripe is its shadow system. Rather than flat or single-layer shadows, Stripe uses blue-tinted shadows: the signature rgba(50,50,93,0.12) creates depth with a cool, atmospheric quality -- like elements floating in a twilight sky. The blue-gray undertone of rgb(50,50,93) ties directly to the navy-purple brand palette, making even elevation feel on-brand.



Key Characteristics:

- sohne-var with OpenType "ss01" on all text -- a custom stylistic set that defines the brand's letterforms

- Weight 300 as the signature headline weight -- light, confident, anti-convention

- Negative letter-spacing at display sizes (-1.4px at 56px, -0.96px at 48px, -0.64px at 32px) -- progressive relaxation downward

- Blue-tinted shadows using rgba(50,50,93,0.12) -- elevation that feels brand-colored

- Deep navy (#061b31) headings instead of black -- warm, financial-grade text hierarchy

- Conservative border-radius (4px-8px, workhorse at 4px with 55 occurrences) -- nothing pill-shaped, nothing harsh

- Slate body text (#64748d) with blue-gray undertone -- not neutral gray, but brand-tinted secondary text

- "tnum" tabular numerals for financial data display at 14px and 11px -- separate OpenType mode for numbers

- SourceCodePro at weight 500 as the monospace companion for code and technical labels

- Purple gradient system using #533afd through #7f7dfc to #f44bcc -- violet-to-magenta decorative range



## 2. Color Palette & Roles



### Primary

- Stripe Purple (#533afd): Primary brand color, CTA backgrounds, link text, interactive highlights. A saturated blue-violet at frequency 2782 that anchors the entire system. Used as text color (808), background (7), border (1960), and gradient (5).

- Deep Navy (#061b31): Primary heading color at frequency 899. Not black, not gray -- a very dark blue that adds warmth and depth to text. The decision to avoid pure black is what gives Stripe text its distinctive premium feel.

- Pure White (#ffffff): Page background, card surfaces, button text on dark backgrounds. Frequency 504 across text (133), backgrounds (37), and borders (317).



### Neutral Scale

- Slate Blue (#50617a): Secondary body text at frequency 1029. A cool blue-gray that sits between heading navy and body slate in the luminance hierarchy.

- Body Slate (#64748d): Tertiary text, descriptions, captions at frequency 494. The blue undertone prevents the flat, lifeless quality of pure gray body text.

- Dark Slate (#273951): Form labels, secondary headings at frequency 113. Sits between heading navy and body text in the hierarchy.

- Mid Slate (#3c4f69): Supplementary text and icon color at frequency 127. Another step in Stripe's unusually granular text-color ladder.

- Light Slate (#7d8ba4): Muted metadata and tertiary labels at frequency 49.



### Interactive

- Primary Purple (#533afd): Primary link and CTA color. Active states, selected elements.

- Periwinkle (#7389ff): Secondary interactive accent at frequency 85. A lighter blue-violet for gradient transitions and secondary highlights.

- Lavender Border (#b9b9f9): Active/selected state borders on buttons and inputs at frequency 40. Used exclusively as border color.

- Soft Purple Border (#d6d9fc): Subtle purple-tinted borders for secondary elements at frequency 37.

- Mid Purple (#7f7dfc): Gradient transition color at frequency 27. Used in text (6), border (15), and gradient (6).



### Surface & Borders

- Border Default (#e5edf5): Standard border and divider color at frequency 111. Used as background (20), border (81), and gradient (10).

- Soft Border (#d4dee9): Secondary border color at frequency 2. Slightly warmer than the default border.

- Lilac Surface (#e2e4ff): Purple-tinted surface for card backgrounds and decorative fills at frequency 16.



### Accent Colors

- Orange (#ff6118): Warm accent at frequency 100 for icons and decorative elements.

- Magenta (#f44bcc): Vivid pink-purple at frequency 6, used exclusively in gradients. The far end of the purple-to-pink gradient range.

- Violet Gradient (#da4bfe): Rich purple at 0.8 opacity, frequency 3, gradient-only. Connects the primary purple to the magenta endpoint.

- Green (#81b81a): Status and success accent at frequency 15.



### Shadow Colors

- Shadow Blue (rgba(50,50,93,0.12)): The signature blue-tinted shadow at frequency 2. Deep blue-gray that echoes the brand's navy palette.

- Shadow Ambient (rgba(23,23,23,0.08)): Soft ambient shadow for subtle elevation at frequency 1.

- Shadow Soft (rgba(23,23,23,0.06)): Minimal ambient shadow for light lift at frequency 1.



## 3. Typography Rules



### Font Family

- Primary: sohne-var, variable font with weight range 1-1000

- Monospace: SourceCodePro, weight 500

- OpenType Features: "ss01" enabled globally on all sohne-var text; "tnum" for tabular numbers on financial data and pricing.



### Hierarchy



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

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

| Display Hero | sohne-var | 56px (3.50rem) | 300 | 1.03 (tight) | -1.4px | ss01 | Maximum size, whisper-weight authority |

| Display Large | sohne-var | 48px (3.00rem) | 300 | 1.03 (tight) | -0.96px | ss01 | Secondary hero headlines |

| Display Numeric | sohne-var | 48px (3.00rem) | 400 | 1.00 (tight) | -0.96px | ss01 | Large stat counters, metric displays |

| Hero Heading | sohne-var | 44px (2.75rem) | 300 | 1.15 | -0.88px | ss01 | Primary h1 hero headlines |

| Section Heading | sohne-var | 32px (2.00rem) | 300 | 1.10 (tight) | -0.64px | ss01 | Feature section titles |

| Sub-heading Large | sohne-var | 26px (1.63rem) | 300 | 1.12 (tight) | -0.26px | ss01 | Card headings, sub-sections |

| Sub-heading UI | sohne-var | 26px (1.63rem) | 400 | normal | normal | ss01 | Interactive sub-headings, financial labels |

| Sub-heading Small | sohne-var | 22px (1.38rem) | 300 | 1.10 (tight) | -0.22px | ss01 | Smaller section heads, testimonial titles |

| Body Large | sohne-var | 18px (1.13rem) | 300 | 1.40 | normal | ss01 | Feature descriptions, intro text |

| Body Large UI | sohne-var | 18px (1.13rem) | 400 | 1.40 | normal | ss01 | Attribution text, speaker names |

| Body | sohne-var | 16px (1.00rem) | 400 | normal | normal | ss01 | Standard reading text, navigation base |

| Body Light | sohne-var | 16px (1.00rem) | 300 | 1.25 | normal | ss01 | Secondary body, feature captions |

| Body CTA | sohne-var | 16px (1.00rem) | 600 | 1.00 (tight) | normal | ss01 | CTA links, bold labels |

| Nav Button | sohne-var | 14px (0.88rem) | 600 | 1.00 (tight) | normal | ss01 | Navigation buttons, primary CTAs |

| Caption Tabular | sohne-var | 14px (0.88rem) | 300 | normal | -0.42px | tnum | Financial percentages, live data |

| Caption | sohne-var | 12px (0.75rem) | 400 | normal | normal | ss01 | Small labels, order summaries |

| Caption Light | sohne-var | 12px (0.75rem) | 300 | 1.33 | 0.036px | ss01 | Fine print, billing labels |

| Pricing Tabular | sohne-var | 11px (0.69rem) | 300 | 1.45 | -0.33px | tnum | Pricing breakdowns, unit costs |

| Micro | sohne-var | 10px (0.63rem) | 300 | 1.15 (tight) | normal | ss01 | Checkout labels, tiny text |

| Micro UI | sohne-var | 10px (0.63rem) | 400 | 1.15 (tight) | 0.1px | ss01 | Product names, discount labels |

| Nano | sohne-var | 9px (0.56rem) | 300-400 | normal | normal | ss01 | URL text, product descriptions |

| Pico | sohne-var | 8px (0.50rem) | 300-400 | 1.07-1.12 | normal | ss01 | Form labels, separator text |



### Principles

- Light weight as signature: Weight 300 at display sizes is Stripe's most distinctive typographic choice. Where others use 600-700 to command attention, Stripe uses lightness as luxury -- the text is so confident it does not need weight to be authoritative.

- ss01 everywhere: The "ss01" stylistic set is non-negotiable. It modifies specific glyphs to create a more geometric, contemporary feel across all sohne-var text. Every element from 56px heroes to 8px form labels carries this feature.

- Two OpenType modes: "ss01" for display and body text, "tnum" for tabular numerals in financial data. These never overlap -- a number in a paragraph uses ss01, a number in a pricing table uses tnum.

- Progressive tracking: Letter-spacing tightens proportionally with size: -1.4px at 56px, -0.96px at 48px, -0.88px at 44px, -0.64px at 32px, -0.26px at 26px, normal at 16px and below. The tracking at tabular sizes reverses: -0.42px at 14px and -0.33px at 11px for numeric density.

- Three-weight discipline: Primarily 300 (body and headings), 400 (UI and navigation base), 600 (CTAs and nav buttons). No weight 500 or 700 in the primary font.



## 4. Component Stylings



### Buttons



Primary Purple

- Background: rgb(83,58,253) / #533afd

- Text: #ffffff

- Padding: 11.5px 20px 14.5px 20px

- Radius: 4px

- Font: 14px sohne-var weight 600, "ss01"

- Transition: background-color 0.3s cubic-bezier(0.25, 1, 0.5, 1)

- Use: Primary CTA ("Start now", "Contact sales")



Secondary / Outlined

- Background: rgba(255,255,255,0.65)

- Text: #533afd

- Padding: 14.5px 24px 15.5px 24px

- Radius: 4px

- Border: 1px solid #b9b9f9

- Font: 16px sohne-var weight 600, "ss01"

- Transition: background-color 0.3s cubic-bezier(0.25, 1, 0.5, 1)

- Use: Secondary actions ("Sign up with Google")



Ghost Navigation

- Background: transparent

- Text: #061b31

- Padding: 12px 0px

- Radius: 4px

- Font: 14px sohne-var weight 600, "ss01"

- Transition: background-color 0.3s cubic-bezier(0.25, 1, 0.5, 1), color 0.3s cubic-bezier(0.25, 1, 0.5, 1)

- Use: Navigation menu items



### Cards & Containers

- Background: #ffffff

- Border: 1px solid #e5edf5 (standard)

- Radius: 4px (tight), 5px (standard), 6px (comfortable), 8px (featured)

- Shadow (standard): rgba(50,50,93,0.12) 0px 16px 32px 0px

- Shadow (ambient): rgba(23,23,23,0.08) 0px 15px 35px 0px

- Shadow (subtle): rgba(23,23,23,0.06) 0px 3px 6px 0px



### Links

- Text: #533afd

- Font: 16px sohne-var weight 600, "ss01"

- Transition: opacity 0.24s cubic-bezier(0.45, 0.05, 0.55, 0.95)

- Use: Inline links, feature navigation arrows



### Navigation

- Background: transparent with 6px radius container

- Font: 16px sohne-var weight 400, "ss01"

- Padding: 10px 16px

- CTA: Purple button right-aligned (14px weight 600)

- Transition: all (general nav transitions)



### Footer

- Background: rgb(248,250,253) / near-white blue tint

- Text: #000000

- Font: 16px sohne-var weight 400

- Padding: 0px 16px



## 5. Layout Principles



### Spacing System

- Base unit: 4px

- Scale: 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 52, 56, 60, 64, 72, 80, 96

- Most frequent values: 16px (181 occurrences), 8px (80), 24px (59), 4px (47)

- The scale is dense at the small end (every 4px from 4-40), reflecting Stripe's precision-oriented UI for financial data



### Grid & Container

- Max content width: 1266px

- Common column counts: 1, 2, 3, 4, 8, 12

- Hero: centered single-column with generous padding, lightweight headlines at 44px-56px

- Feature sections: 2-4 column grids for feature cards

- Full-width sections at section breaks



### Whitespace Philosophy

- Precision spacing: Unlike the vast emptiness of minimalist systems, Stripe uses measured, purposeful whitespace. Section spacing clusters at 48px, 60px, 64px, 71px, 80px, and 96px -- six distinct vertical rhythms rather than one uniform gap.

- Dense data, generous chrome: Financial data displays use tight 4px-8px internal spacing, but the UI chrome around them uses 16px-24px padding. This creates a sense of controlled density -- like a well-organized spreadsheet in a purposefully framed container.

- Vertical cadence: The 71px spacing value (24 occurrences) is unusual and likely tied to a specific section rhythm in the hero or stats area, creating a distinctive vertical beat that departs from standard 8px-grid multiples.



### Border Radius Scale

- Micro (2px-3px): Fine-grained elements, subtle rounding

- Standard (4px): Buttons, inputs, badges -- the workhorse at 55 occurrences

- Comfortable (5px): Standard card containers at 6 occurrences

- Relaxed (6px): Navigation, larger interactive elements at 31 occurrences

- Large (8px): Featured cards, hero elements at 4 occurrences

- Compound: 6px 6px 0px 0px (top-rounded), 0px 0px 6px 6px (bottom-rounded), 6px 0px 0px 6px (left-rounded)



## 6. Depth & Elevation



| Level | Treatment | Use |

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

| Flat (Level 0) | No shadow | Page background, inline text |

| Subtle (Level 1) | rgba(23,23,23,0.06) 0px 3px 6px 0px | Light card lift, hover hints |

| Ambient (Level 2) | rgba(23,23,23,0.08) 0px 15px 35px 0px | Standard cards, content panels |

| Elevated (Level 3) | rgba(50,50,93,0.12) 0px 16px 32px 0px | Featured cards, dropdowns, popovers |

| Focus Ring | 2px solid #533afd outline | Keyboard focus states |



Shadow Philosophy: Stripe's shadow system is built on a principle of chromatic depth. Where most design systems use neutral gray or black shadows, Stripe's primary shadow color (rgba(50,50,93,0.12)) is a deep blue-gray that echoes the brand's navy palette. This creates shadows that do not just add depth -- they add brand atmosphere. The dual-system approach separates neutral ambient shadows (rgba(23,23,23,...)) for subtle lift from blue-tinted shadows (rgba(50,50,93,...)) for prominent elevation, creating a brand-colored depth hierarchy that distinguishes Stripe from every flat-shadow design system.



## 6.5. Motion & Transitions



### Duration Scale



| Token | Value | Frequency | Use |

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

| micro | 1ms | 1 | Instant state changes |

| small | 150ms | 14 | Hover feedback, micro-interactions |

| medium | 300ms | 35 | Standard transitions, button state changes |

| large | 600ms | 19 | Section reveals, card expansions |

| xl | 2000ms | 7 | Hero animations, slow ambient motion |



### Timing Functions

- Primary: ease at 142 occurrences -- the system default

- Expressive: cubic-bezier(0.25, 1, 0.5, 1) at 21 occurrences -- used for button transitions, an overshoot-dampened curve

- Smooth: cubic-bezier(0.4, 0, 0.2, 1) at 4 occurrences -- Material-style standard easing

- Sharp: cubic-bezier(0.16, 1, 0.3, 1) at 4 occurrences -- fast entry, slow settle

- Linear: 8 occurrences -- constant-speed for progress indicators

- Custom variables: --navigation-easing (10), --stats-section-transition-timing-function (11), --card-ease (6) -- component-specific named curves



## 7. Do's and Don'ts



### Do

- Use sohne-var with "ss01" on every text element -- the stylistic set IS the brand's typographic DNA

- Use weight 300 for all headlines and body text -- lightness is the signature that distinguishes Stripe from every heavy-handed fintech

- Apply blue-tinted shadows (rgba(50,50,93,0.12)) for elevated elements -- chromatic depth over flat neutral gray

- Use #061b31 (deep navy) for headings instead of #000000 -- the warmth matters and prevents the harshness of pure black

- Keep border-radius at 4px for interactive elements and 6px for containers -- conservative rounding is intentional

- Use "tnum" for any tabular or financial number display -- "ss01" and "tnum" serve distinct purposes and never coexist on the same element

- Use the cubic-bezier(0.25, 1, 0.5, 1) curve for button transitions at 300ms -- this is the branded interactive feel

- Maintain the six-step text-color ladder: #061b31 > #273951 > #3c4f69 > #50617a > #64748d > #7d8ba4 -- each step has a specific role



### Don't

- Don't use weight 600-700 for sohne-var headlines -- weight 300 is the brand voice; 600 is reserved exclusively for CTA text and nav buttons

- Don't use large border-radius (12px+, pill shapes) on cards or buttons -- Stripe's maximum observed radius is 8px for featured elements, 16px appears only once

- Don't use neutral gray shadows -- always tint with blue (rgba(50,50,93,...)) for the primary elevation layer

- Don't skip "ss01" on any sohne-var text -- the alternate glyphs define the personality; removing them produces a visibly different font

- Don't use pure black (#000000) for headings -- always #061b31 deep navy; the #000000 in the token data is primarily a border/structural color (3869 border uses vs. 1592 text)

- Don't use warm accent colors (orange #ff6118, magenta #f44bcc) for interactive elements -- these are decorative and gradient-only; purple #533afd is the sole interactive color

- Don't apply positive letter-spacing at display sizes -- Stripe tracks tight: -1.4px at 56px, -0.96px at 48px, -0.88px at 44px

- Don't mix "ss01" and "tnum" on the same element -- "ss01" is for display and body, "tnum" is for financial data; each serves a separate mode

- Don't use #b9b9f9 for backgrounds or text -- it is a border-only token (40 occurrences, all as borderColor)



## 8. Responsive Behavior



### Breakpoints

| Name | Width | Key Changes |

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

| Mobile | <640px | Single column, reduced heading sizes, stacked cards |

| Tablet | 640-1024px | 2-column grids, moderate padding |

| Desktop | 1024-1266px | Full layout, 3-4 column feature grids |

| Large Desktop | >1266px | Centered content at max-width 1266px with generous margins |



### Touch Targets

- Primary buttons use generous padding (11.5px-14.5px vertical, 20px-24px horizontal)

- Navigation buttons have 12px vertical padding for comfortable tap targets

- Navigation container uses 10px 16px padding with 6px radius

- Ghost links rely on text size (14px-16px) and spacing for adequate touch area



### Collapsing Strategy

- Hero headline: 56px display -> 44px -> 32px across breakpoints, weight 300 maintained throughout

- Navigation: horizontal links + CTAs with 6px radius container -> hamburger toggle

- Feature cards: 4-column -> 3-column -> 2-column -> single column stacked

- Stats section: horizontal stat counters at 48px -> stacked at reduced sizes

- Financial data: tight tabular layouts with "tnum" at 11px-14px maintain density, may horizontally scroll

- Section spacing: 96px -> 64px -> 48px as viewport narrows

- Typography scale compresses while preserving the weight 300 signature at all sizes



### Image Behavior

- Dashboard/product screenshots maintain blue-tinted shadow treatment at all sizes

- Checkout UI previews at 8px-10px text sizes maintain "ss01" feature settings

- Card images maintain consistent 4px-6px border-radius

- Gradient decorative elements (purple-to-magenta) simplify on mobile



## 9. Agent Prompt Guide



### Quick Color Reference

- Primary CTA: Stripe Purple (#533afd)

- Background: Pure White (#ffffff)

- Heading text: Deep Navy (#061b31)

- Body text: Slate (#64748d)

- Secondary text: Slate Blue (#50617a)

- Label text: Dark Slate (#273951)

- Border: Soft Blue (#e5edf5)

- Link: Stripe Purple (#533afd)

- Active border: Lavender (#b9b9f9)

- Shadow primary: rgba(50,50,93,0.12)

- Shadow ambient: rgba(23,23,23,0.08)

- Accent decorative: Orange (#ff6118), Magenta (#f44bcc)



### Example Component Prompts

- "Create a hero section on white background. Headline at 44px sohne-var weight 300, line-height 1.15, letter-spacing -0.88px, color #061b31, font-feature-settings 'ss01'. Subtitle at 18px weight 300, line-height 1.40, color #64748d. Purple CTA button (#533afd background, white text, 4px radius, 14px weight 600, 11.5px 20px padding) with transition background-color 0.3s cubic-bezier(0.25, 1, 0.5, 1). Secondary outlined button (rgba(255,255,255,0.65) background, 1px solid #b9b9f9 border, #533afd text, 4px radius)."

- "Design a card: white background, 1px solid #e5edf5 border, 6px radius. Shadow: rgba(50,50,93,0.12) 0px 16px 32px 0px. Title at 22px sohne-var weight 300, letter-spacing -0.22px, color #061b31, font-feature-settings 'ss01'. Body at 16px weight 300, line-height 1.25, color #64748d, font-feature-settings 'ss01'."

- "Build a navigation bar: transparent background, 6px border-radius container, padding 10px 16px. Links at 14px sohne-var weight 600, color #061b31, font-feature-settings 'ss01'. Purple CTA button right-aligned (#533afd background, white text, 4px radius, 14px weight 600). Transition: background-color 0.3s cubic-bezier(0.25, 1, 0.5, 1)."

- "Create a stats display: 48px sohne-var weight 300 for large numbers, letter-spacing -0.96px, color #061b31, font-feature-settings 'ss01'. Label below at 16px weight 300, color #50617a. For tabular data, switch to 14px weight 300, letter-spacing -0.42px, font-feature-settings 'tnum' instead of 'ss01'."

- "Design a pricing component: card with white background, 1px solid #e5edf5 border, 5px radius. Price at 26px sohne-var weight 300, letter-spacing -0.26px, color #061b31, font-feature-settings 'ss01'. Unit cost at 11px weight 300, letter-spacing -0.33px, font-feature-settings 'tnum', color #50617a. CTA button at bottom: #533afd background, white text, 4px radius, 14px weight 600."

- "Build a footer section: background rgb(248,250,253), text #000000. Links at 16px sohne-var weight 400, font-feature-settings 'ss01'. Section titles at 16px weight 600. Padding 0px 16px. No border-radius. Transition: all."



### Iteration Guide

1. Always enable font-feature-settings: "ss01" on sohne-var text -- this is the brand's typographic DNA; removing it changes the visual identity

2. Weight 300 is the default for body and headings; use 400 for navigation base and UI labels; use 600 only for buttons, CTAs, and nav items

3. Shadow formula: rgba(50,50,93,0.12) 0px 16px 32px 0px for prominent elevation; rgba(23,23,23,0.08) 0px 15px 35px 0px for ambient lift

4. Heading color is #061b31 (deep navy), body is #64748d (slate), labels are #273951 (dark slate), secondary body is #50617a (slate blue)

5. Border-radius stays in the 4px-8px range -- 4px for buttons and inputs, 5px-6px for cards, 8px maximum for featured elements

6. Use "tnum" instead of "ss01" for any numbers in tables, charts, pricing, or financial displays -- these are mutually exclusive features

7. Button transitions use cubic-bezier(0.25, 1, 0.5, 1) at 300ms -- this curve has a slight overshoot-dampened feel

8. Max content width is 1266px -- wider than many systems, reflecting Stripe's information-dense layout philosophy

file://stripe.com/DESIGN.md
ready310 lines10 sections0 tokens23.6 kb
spec v2

how it works

From paste to production-ready spec, in one pass.

ship the spec, not the screenshot

Drop a DESIGN.md in your repo. Your AI agent stops averaging and starts referencing.