duply
Cursor homepage design, full-page screenshot

Cursor

A warm-minimal developer-tool marketing surface built on a soft off-white canvas (#f7f7f4) with near-black warm ink text and pill-shaped dark CTAs. The system reads as calm, research-lab-quiet — generous whitespace, tightly-rounded warm-gray cards, and real product UI (agent panels, code windows, review dialogs) shown floating inside heavy-shadowed browser chrome. Brand voltage comes from the custom CursorGothic display face and a single warm-orange link accent, not from color-blocking.

---
version: alpha
name: Cursor-design-analysis
description: "A warm-minimal developer-tool marketing surface built on a soft off-white canvas (#f7f7f4) with near-black warm ink text and pill-shaped dark CTAs. The system reads as calm, research-lab-quiet — generous whitespace, tightly-rounded warm-gray cards, and real product UI (agent panels, code windows, review dialogs) shown floating inside heavy-shadowed browser chrome. Brand voltage comes from the custom CursorGothic display face and a single warm-orange link accent, not from color-blocking."
colors:
  ink: "#26251e"
  ink-deep: "#1d1b15"
  ink-deeper: "#201e18"
  canvas: "#f7f7f4"
  surface: "#f2f1ed"
  surface-alt: "#ebeae5"
  hairline: "#e6e5e0"
  muted: "#606060"
  black: "#000000"
  white: "#ffffff"
  accent-orange: "#f54e00"
  accent-amber: "#c08532"
  accent-green: "#1f8a65"
  accent-blue: "#3b82f6"
  accent-teal: "#267f99"
  accent-pink: "#cf2d56"
typography:
  display:
    fontFamily: "CursorGothic, Inter, system-ui, sans-serif"
    fontSize: 26px
    fontWeight: 400
    lineHeight: 1.25
    letterSpacing: "-0.0125em"
  heading:
    fontFamily: "CursorGothic, Inter, system-ui, sans-serif"
    fontSize: 22px
    fontWeight: 400
    lineHeight: 1.3
    letterSpacing: "-0.005em"
  subhead:
    fontFamily: "system-ui, -apple-system, sans-serif"
    fontSize: 20px
    fontWeight: 700
    lineHeight: 1.55
    letterSpacing: "normal"
  body:
    fontFamily: "system-ui, -apple-system, sans-serif"
    fontSize: 13px
    fontWeight: 400
    lineHeight: 1.55
    letterSpacing: "normal"
  button:
    fontFamily: "CursorGothic, Inter, system-ui, sans-serif"
    fontSize: 14px
    fontWeight: 400
    lineHeight: 1.0
    letterSpacing: "normal"
rounded:
  none: 0px
  xs: 2px
  sm: 4px
  md: 8px
  lg: 10px
  xl: 12px
  pill: 9999px
spacing:
  xxs: 4px
  xs: 6px
  sm: 8px
  md: 12px
  lg: 16px
  xl: 18px
  xxl: 20px
components:
  button-primary:
    backgroundColor: "{colors.ink}"
    textColor: "{colors.canvas}"
    typography: "{typography.button}"
    rounded: "{rounded.pill}"
    padding: 5.6px 10.5px
  button-secondary:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.ink}"
    typography: "{typography.button}"
    rounded: "{rounded.pill}"
    padding: 5.6px 10.5px
  text-link:
    backgroundColor: transparent
    textColor: "{colors.accent-orange}"
    typography: "{typography.body}"
  top-nav:
    backgroundColor: "{colors.canvas}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
  card:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
    rounded: "{rounded.sm}"
  testimonial-card:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
    rounded: "{rounded.sm}"
  elevated-panel:
    backgroundColor: "{colors.white}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
    rounded: "{rounded.md}"
  text-input:
    backgroundColor: "{colors.white}"
    textColor: "{colors.ink}"
    typography: "{typography.body}"
    rounded: "{rounded.none}"
---

## Overview

Cursor's marketing surface is a warm, quiet developer-tool interface — a soft off-white canvas (`{colors.canvas}`#f7f7f4) carrying near-black warm ink text (`{colors.ink}`#26251e) and pill-shaped dark CTAs. The palette is intentionally low-contrast and warm-neutral: canvas, a slightly darker warm-gray card surface (`{colors.surface}`#f2f1ed), and hairline dividers (`{colors.hairline}`#e6e5e0) all sit within a few points of each other. The result reads as an applied-research lab rather than a loud SaaS pitch.

Type voice splits into two roles: **CursorGothic** (the brand's custom display/grotesque face — h1, h3, and button labels, weight 400 with slight negative tracking) and **system-ui** (h2 subheads at weight 700 and all body text at 13px). The display face carries the brand; the system font does the reading work.

Component voltage comes from **real product UI shown floating inside heavy-shadowed browser chrome** — agent task panels, mission-control windows, Slack/GitHub review threads, code terminals, PR-reviewer dialogs. Cursor doesn't illustrate the product; it drops actual product windows onto the warm canvas and lets deep drop-shadows lift them off the page. The single chromatic accent is a warm orange (`{colors.accent-orange}`#f54e00) reserved for inline "Learn about… →" links.

**Key Characteristics:**
- Warm off-white canvas (`{colors.canvas}`#f7f7f4) with warm near-black ink (`{colors.ink}`#26251e). The whole system is warm-neutral, never cool gray.
- Pill-shaped dark primary CTA (`{component.button-primary}`) — background `{colors.ink}`, text `{colors.canvas}`, fully-rounded (`{rounded.pill}`, derived from the measured full-round button radius).
- Custom `CursorGothic` display face for headlines and buttons (substituted with Inter here). Slight negative letter-spacing (-0.0125em / -0.005em).
- Warm-gray card surface (`{colors.surface}`#f2f1ed) at a very tight `{rounded.sm}` (4px) radius — the dominant radius in the system.
- Product UI fragments floated inside browser chrome with heavy multi-layer drop-shadows — the signature marketing device.
- Orange (`{colors.accent-orange}`#f54e00) is the only recurring chromatic accent, and only on inline text links.
- Tight radius hierarchy: 4px cards, 8–12px larger panels, full-pill buttons.

## Colors

### Brand & Accent
- **Accent Orange** (`{colors.accent-orange}`#f54e00): The single brand accent. Used on inline "Learn about cloud agents →" / "Learn about Automations →" links. This is the only chromatic voltage in the marketing chrome.
- **Accent Amber** (`{colors.accent-amber}`#c08532): A warm gold measured at low frequency, appearing in small highlight moments and inside product-UI fragments.

### Syntax / Product-UI Accents
These hues are measured but appear almost entirely inside the embedded product-UI fragments (code windows, diff views, agent status), not in the marketing chrome:
- **Accent Green** (`{colors.accent-green}`#1f8a65) — added-line / success tones in diffs.
- **Accent Blue** (`{colors.accent-blue}`#3b82f6) — link / info tones in product UI.
- **Accent Teal** (`{colors.accent-teal}`#267f99) — syntax highlighting.
- **Accent Pink** (`{colors.accent-pink}`#cf2d56) — syntax / removed-line tones.

### Surface
- **Canvas** (`{colors.canvas}`#f7f7f4): The default warm off-white page floor.
- **Surface** (`{colors.surface}`#f2f1ed): Card, testimonial, and section-panel background — one warm step darker than canvas.
- **Surface Alt** (`{colors.surface-alt}`#ebeae5): A secondary card/inset tone; also appears as a 2px ring in a measured focus/selection shadow.
- **Hairline** (`{colors.hairline}`#e6e5e0): The 1px divider / border tone on light surfaces.
- **White** (`{colors.white}`#ffffff): The floated product-window / elevated-panel background — brighter than canvas, which helps the panels read as lifted.
- **Black** (`{colors.black}`#000000): Used in shadow layers and rare pure-black UI moments.

### Text
- **Ink** (`{colors.ink}`#26251e): All headlines and primary text.
- **Ink Deep / Deeper** (`{colors.ink-deep}`#1d1b15 / `{colors.ink-deeper}`#201e18): Slightly darker warm-black variants measured on nested UI text and dark fills.
- **Muted** (`{colors.muted}`#606060): Secondary / supporting text — sub-headlines and captions (e.g. "Agents use their own computers…").
- **On-Primary**: The primary button uses `{colors.canvas}` (#f7f7f4) as its label color — the canvas tone doubles as the on-dark text color.

## Typography

### Font Family
The system runs **CursorGothic** for display + buttons and **system-ui** for subheads + body. CursorGothic is Cursor's custom grotesque display face — weight 400 with slight negative letter-spacing, giving headlines a calm, precise, engineered feel. The system-ui stack (`system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`) handles the reading layer at a compact 13px.

The split is functional:
- CursorGothic (display, 400 weight, -0.0125 to -0.005em tracking) — h1, h3, button labels
- system-ui (400–700 weight) — h2 subheads (700) and body (400)

### Hierarchy

| Token | Size | Weight | Line Height | Letter Spacing | Use |
|---|---|---|---|---|---|
| `{typography.display}` | 26px | 400 | 1.25 | -0.0125em | Page h1 ("Works autonomously, runs in parallel") — CursorGothic |
| `{typography.heading}` | 22px | 400 | 1.3 | -0.005em | Section headings ("Try Cursor now.") — CursorGothic |
| `{typography.subhead}` | 20px | 700 | 1.55 | normal | Bold system-font subheads / eyebrow labels |
| `{typography.body}` | 13px | 400 | 1.55 | normal | Default running text, captions, nav, testimonials |
| `{typography.button}` | 14px | 400 | 1.0 | normal | CTA button labels — CursorGothic |

### Principles
CursorGothic is the brand voice — headlines and buttons only. The negative letter-spacing (-0.0125 to -0.005em) is part of the signature; without it the display face reads generic. Body copy stays in the compact 13px system font — Cursor's marketing text is deliberately small and dense, matching a developer-tool sensibility.

Note the inversion versus most systems: the display face runs at weight **400** (light-normal) while the system subhead runs at **700**. The weight contrast, not the size jump, does much of the hierarchy work here.

### Note on Font Substitutes
CursorGothic is a custom typeface and is not available as a public web font. **Inter** (or another neutral grotesque such as **Space Grotesk**) at weight 400 with ~-0.01em letter-spacing is a usable approximation — it preserves the calm, even-width grotesque character. Never claim to ship CursorGothic; declare the fallback stack.

## Layout

### Spacing System
- **Base unit:** effectively 2px, with heavy clustering at 4 / 6 / 8px.
- **Tokens:** `{spacing.xxs}` 4px · `{spacing.xs}` 6px · `{spacing.sm}` 8px · `{spacing.md}` 12px · `{spacing.lg}` 16px · `{spacing.xl}` 18px · `{spacing.xxl}` 20px.
- **Dominant unit:** `{spacing.sm}` (8px) is by far the most frequent gap/padding value.
- Larger section rhythms (band-to-band vertical spacing) were not reliably measured — see Known Gaps.

### Grid & Container
- **Editorial layout:** Alternating full-width bands, each pairing a floated product-UI window with a short text block (heading + muted sub-line + orange text-link).
- **Hero:** Product window centered/left with the text block to the right.
- **Testimonials:** 3-up quote grid on `{colors.surface}` cards.
- **Feature rows:** left product-mockup / right copy, alternating sides down the page.

### Whitespace Philosophy
Cursor leans on generous vertical whitespace between bands and a lot of empty warm canvas around each floated product window. The dense 13px body and tight 8px internal spacing are offset by wide margins — the page reads calm and unhurried, like a research paper rather than a sales deck.

## Elevation & Depth

| Level | Treatment | Use |
|---|---|---|
| Flat | No shadow, no border | Canvas sections, top nav |
| Card surface | `{colors.surface}` fill, barely-there `rgba(0,0,0,0.02) 0 0 16px` + `rgba(0,0,0,0.008) 0 0 8px` | Feature / testimonial cards |
| Focus ring | `rgb(235,234,229) 0 0 0 2px` (a `{colors.surface-alt}` ring) | Selected / focused inputs |
| Floated panel | `rgba(0,0,0,0.14) 0 28px 70px`, `rgba(0,0,0,0.1) 0 14px 32px` + 1px hairline ring | Product-UI browser windows on canvas |
| Deep float | `rgba(0,0,0,0.3) 0 22px 70px 4px` / `rgba(0,0,0,0.35) 0 8px 30px` + 0.5px ring | The marquee hero window and modal dialogs |

The elevation philosophy is **deep, soft, warm shadows** used almost exclusively to lift real product windows off the flat canvas. Cards themselves stay nearly flat (2% and 0.8% alpha) — the drama is reserved for the product screenshots.

### Decorative Depth
- Product windows carry macOS-style browser chrome (traffic-light dots, URL bar) as content, plus their own internal panel shadows.
- Focus/selection uses a soft `{colors.surface-alt}` 2px ring rather than a bright color outline — consistent with the muted palette.

## Shapes

### Border Radius Scale

| Token | Value | Use |
|---|---|---|
| `{rounded.none}` | 0px | Text inputs (measured 0px radius) |
| `{rounded.xs}` | 2px | Small inline chips / minor accents |
| `{rounded.sm}` | 4px | Cards, panels — the dominant radius across the system |
| `{rounded.md}` | 8px | Larger floated panels, product windows |
| `{rounded.lg}` | 10px | Occasional larger containers |
| `{rounded.xl}` | 12px | Rare largest-container radius |
| `{rounded.pill}` | 9999px | Primary/secondary buttons (derived from the measured full-round button radius) |

### Geometry
Radius is tight and restrained — 4px does most of the work, giving cards a crisp, near-square feel. The only fully-rounded elements are buttons (pill). Text inputs are fully square (0px radius). The contrast between hard-square inputs, tight-4px cards, and full-pill buttons is a deliberate part of the shape language.

## Components

### Top Navigation

**`top-nav`** — Transparent-on-canvas nav bar pinned to the top of every page. Carries the Cursor wordmark + cube logo at left; center menu (Product, Enterprise, Pricing, Resources) in `{typography.body}` (system 13px); right cluster with "Sign in" text, a "Contact sales" `{component.button-secondary}`, and a "Download" `{component.button-primary}`. Background `{colors.canvas}`, text `{colors.ink}`.

### Buttons

**`button-primary`** — The signature dark CTA. Background `{colors.ink}` (#26251e), label `{colors.canvas}` (#f7f7f4), type `{typography.button}` (CursorGothic 14px / 400), padding 5.6px × 10.5px, fully rounded (`{rounded.pill}`). Used for "Download", "Download for macOS".

**`button-secondary`** — Outlined pill variant. Background `{colors.canvas}`, label `{colors.ink}`, 1px `{colors.hairline}` border, same pill radius + compact padding. Used for "Contact sales", "Request a demo →".

**`text-link`** — Inline orange link, no background. Text `{colors.accent-orange}` (#f54e00), type `{typography.body}`, with a trailing "→". Used for "Learn about cloud agents →", "Learn about Automations →", "Explore models →". The system's only recurring chromatic accent.

### Cards & Containers

**`card`** — Standard content card. Background `{colors.surface}` (#f2f1ed), rounded `{rounded.sm}` (4px), near-flat shadow (2% and 0.8% alpha). Holds feature copy and section content.

**`testimonial-card`** — Customer-quote card in the 3-up testimonial grid. Background `{colors.surface}`, rounded `{rounded.sm}`, body quote in `{typography.body}` with a small avatar + name + role row.

**`elevated-panel`** — The floated product-UI window (agent panel, mission-control window, PR-reviewer dialog). Background `{colors.white}` (brighter than canvas so it reads as lifted), rounded `{rounded.md}` (8px), heavy multi-layer drop-shadow + 1px hairline ring. This is the marquee marketing device — real product chrome shown floating on the warm canvas.

### Inputs & Forms

**`text-input`** — Text field. Background `{colors.white}`, text `{colors.ink}`, type `{typography.body}`, fully square (`{rounded.none}` — measured 0px radius). Focus renders a soft 2px `{colors.surface-alt}` ring (see Elevation).

## Do's and Don'ts

### Do
- Keep the palette warm-neutral. Canvas, surface, and hairline all sit within a few warm points of each other — resist introducing cool grays.
- Reserve `{colors.accent-orange}` for inline text links with a trailing "→". It is the only chromatic accent in the marketing chrome.
- Use CursorGothic weight 400 with negative letter-spacing for headlines and buttons; keep body in the compact 13px system font.
- Float real product windows (`{component.elevated-panel}`) with deep soft shadows on the flat canvas. Show the product, don't illustrate it.
- Keep card radius tight at `{rounded.sm}` (4px) and buttons fully pill.
- Let hierarchy come from weight contrast (400 display vs 700 subhead) and floated depth, not from color-blocking.

### Don't
- Don't color primary CTAs — they stay `{colors.ink}` dark. Orange is for links only.
- Don't bold the display face — CursorGothic runs at 400. Heavier weights break the calm voice.
- Don't apply heavy shadows to cards; reserve deep drop-shadows for floated product windows.
- Don't round text inputs — they are square (`{rounded.none}`) by design.
- Don't use the syntax accents (green / blue / teal / pink) in the marketing chrome; they belong inside product-UI fragments.
- Don't add hover-state styling beyond default + pressed.

## Responsive Behavior

### Breakpoints
Breakpoint widths were not directly measured; the following is inferred from the captured desktop layout and standard practice (derived).

| Name | Width | Key Changes |
|---|---|---|
| Mobile | < 768px | Nav collapses; alternating feature bands stack to single column (window above copy); testimonial grid → 1-up |
| Tablet | 768–1024px | Horizontal nav tightens; testimonial grid → 2-up; feature windows scale down |
| Desktop | 1024–1440px | Full nav; alternating left/right feature rows; 3-up testimonials |
| Wide | > 1440px | More outer canvas breathing room around floated windows |

### Touch Targets
- `{component.button-primary}` / `{component.button-secondary}` use compact ~5.6px vertical padding on a 14px label — effective tap height sits near the low end; padding should be increased for touch surfaces (derived).
- Nav links in `{typography.body}` (13px) are dense; mobile nav should expand spacing.

### Collapsing Strategy
- Alternating feature bands collapse to a single column (product window, then copy block).
- Testimonial grid reduces columns rather than shrinking type.
- Floated product windows scale proportionally, retaining their browser chrome and internal legibility.

## Iteration Guide

1. Focus on ONE component at a time; reference its YAML key directly (`{component.elevated-panel}`, `{component.button-primary}`).
2. Variants (`-secondary`, focus states) live as separate entries in `components:`.
3. Use `{token.refs}` everywhere — never inline hex.
4. Never document hover. Default and Active/Pressed states only.
5. Headlines stay CursorGothic 400 with negative tracking; body stays 13px system font. The split does not blur.
6. Orange is a link-only accent — don't spread it to buttons or fills.
7. When emphasizing, float deeper before you color.

## Known Gaps

- CursorGothic is a custom typeface with no public web font; a substitute (Inter / Space Grotesk) is documented. `fonts_licensed` was empty in the analysis, but the custom face is clearly non-shippable and treated as substituted.
- Section-level vertical rhythm (band-to-band spacing) was not reliably captured — measured spacing tops out at 22px, which reflects component-internal padding/gaps, not the large inter-section gaps visible in screenshots.
- Many measured accent hues (`{colors.accent-green}`, `{colors.accent-blue}`, `{colors.accent-teal}`, `{colors.accent-pink}`, plus #1a7f37 / #238636 / #1750eb / #171717) originate inside embedded product-UI code/diff views rather than the marketing chrome; their exact roles in the design system are approximate.
- The primary button padding is reported as measured (5.6px 10.5px 5.88px) and reflects sub-pixel computed values; canonical values would round to ~6px × 10px.
- Button radius was measured as an effective infinite value (3.35e7px) and mapped to `{rounded.pill}` (9999px) — derived.
- Input styling beyond radius (background, border, focus color) is inferred from screenshots + the measured focus-ring shadow; a form flow would be needed to confirm.
- Breakpoints, animation/transition timings, and error/success form states are out of scope for this capture.

<!-- Documented by Duply · real-world design systems as ready-to-use DESIGN.md for AI coding agents · https://duply.ai/cursor/design-md -->

Color Palette

Accent

Neutrals

Typography

display26px · 400 · 1.25
The quick brown fox jumps
heading22px · 400 · 1.3
The quick brown fox jumps
subhead20px · 700 · 1.55
The quick brown fox jumps
body13px · 400 · 1.55
The quick brown fox jumps
button14px · 400 · 1
The quick brown fox jumps

Spacing & Shape

Spacing

NameValuePreview
xxs4px
xs6px
sm8px
md12px
lg16px
xl18px
xxl20px

Border Radius

NameValuePreview
none0px
xs2px
sm4px
md8px
lg10px
xl12px
pill9999px

FAQ

What colors does Cursor use?
Cursor's core palette includes #26251e, #1d1b15, #201e18, #f7f7f4, #f2f1ed. The full color set with usage roles (canvas, ink, surfaces, accent, semantic) is documented in the Cursor DESIGN.md.
What font does Cursor use?
Cursor's primary typeface is CursorGothic. The complete type scale (sizes, weights, line-height and letter-spacing per role), with an open substitute where the original is licensed, is documented in the DESIGN.md.
What is the Cursor design system?
A warm-minimal developer-tool marketing surface built on a soft off-white canvas (#f7f7f4) with near-black warm ink text and pill-shaped dark CTAs. The system reads as calm, research-lab-quiet — generous whitespace, tightly-rounded warm-gray cards, and real product UI (agent panels, code windows

Get this as a working kit

Cursor Launch Kit + DESIGN.md
$299$225
One-time payment
  • A complete production-stack template, styled like Cursor, fully built and wired.
  • One-time payment and the codebase is yours. No platform fees, no subscription.

Open it with Claude Code, Cursor, or any coding agent and build in plain language, then ship a complete web app.

  • Your private DESIGN.md
  • Marketing pages, blog, SEO & legal
  • Email capture, newsletter & contact
  • Accept payments (Stripe)
  • Analytics (GA4 + PostHog)
  • One-click deploy
  • Auth, login & roles
  • A full app dashboard, when you grow

More like this