Vercel

An inspired interpretation of Vercel's design language — a developer-platform brand whose surface is a stark black-and-ink duet on near-white canvas, broken at hero scale by a multi-color mesh gradient (cyan / blue / magenta / amber) that acts as the entire decorative system, paired with a custom geometric sans for headlines and a monospaced caption face for technical labels.

Homepage Example

Vercel
Features Docs Sign Up Free
Revenue
$7596
Active Users
$1076
Uptime
$5686
Products
Product A$4219
Product B$1265
Product C$5963
© 2026 Vercel

Color Palette (36)

primary#171717
on-primary#ffffff
ink#171717
body#4d4d4d
mute#888888
hairline#ebebeb
hairline-strong#a1a1a1
canvas#ffffff
canvas-soft#fafafa
canvas-soft-2#f5f5f5
link#0070f3
link-deep#0761d1
link-bg-soft#d3e5ff
success#0070f3
error#ee0000
error-soft#f7d4d6
error-deep#c50000
warning#f5a623
warning-soft#ffefcf
warning-deep#ab570a
violet#7928ca
violet-soft#d8ccf1
violet-deep#4c2889
cyan#50e3c2
cyan-soft#aaffec
cyan-deep#29bc9b
highlight-pink#ff0080
highlight-magenta#eb367f
gradient-develop-start#007cf0
gradient-develop-end#00dfd8
gradient-preview-start#7928ca
gradient-preview-end#ff0080
gradient-ship-start#ff4d4d
gradient-ship-end#f9cb28
selection-bg#171717
selection-fg#f2f2f2

Typography (14)

Vercel
display-xl48px · weight 600
Vercel
display-lg32px · weight 600
Vercel
display-md24px · weight 600
Vercel
display-sm20px · weight 600
Vercel
body-lg18px · weight 400
Vercel
body-md16px · weight 400
Vercel
body-md-strong16px · weight 500
Vercel
body-sm14px · weight 400
Vercel
body-sm-strong14px · weight 500
Vercel
caption12px · weight 400
Vercel
caption-mono12px · weight 400
Vercel
code13px · weight 400
Vercel
button-md14px · weight 500
Vercel
button-lg16px · weight 500

Components (40)

nav-bar
nav-bar
nav-link
nav-link
nav-cta-signup
nav-cta-signup
nav-cta-login
nav-cta-login
nav-cta-ask-ai
nav-cta-ask-ai
button-primary
button-primary
button-secondary
button-secondary
button-primary-sm
button-primary-sm
button-secondary-sm
button-secondary-sm
tab-ghost
tab-ghost
icon-button-circular
icon-button-circular
card-marketing
card-marketing
card-marketing-large
card-marketing-large
card-soft
card-soft
template-card
template-card
code-editor-mockup
code-editor-mockup
form-input
form-input
form-input-sm
form-input-sm
form-input-lg
form-input-lg
badge-secondary
badge-secondary
pricing-card
pricing-card
pricing-card-featured
pricing-card-featured
logo-strip
logo-strip
hero-band
hero-band
feature-mesh-band
feature-mesh-band
showcase-band-light
showcase-band-light
showcase-band-dark
showcase-band-dark
footer
footer
link-inline
link-inline
banner-marketing
banner-marketing
ex-pricing-tier
ex-pricing-tier
ex-pricing-tier-featured
ex-pricing-tier-featured
ex-product-selector
ex-product-selector
ex-cart-drawer
ex-cart-drawer
ex-app-shell-row
ex-app-shell-row
ex-data-table-cell
ex-data-table-cell
ex-auth-form-card
ex-auth-form-card
ex-modal-card
ex-modal-card
ex-empty-state-card
ex-empty-state-card
ex-toast
ex-toast

Border Radius

none (0px)
xs (4px)
sm (6px)
md (8px)
lg (12px)
xl (16px)
pill-sm (64px)
pill (100px)
full (9999px)

Design Philosophy

Overview

Vercel is a developer-platform brand — the page is a deployment dashboard's marketing surface, written for engineers who already know the syntax. It earns that posture with one of the cleanest stark systems on the web: near-white `{colors.canvas-soft}` body background, ink-near-black `{colors.ink}` text, a 200-step gray scale that gives every divider, border, and disabled state its own deliberate step. The only place the brand introduces colour at marketing scale is the multi-stop mesh gradient (`{colors.gradient-develop-start}` → `{colors.gradient-preview-end}` → `{colors.gradient-ship-start}` → cyan / magenta / amber) that floats in atmospheric backdrops, never miniaturised to a swatch. That gradient is the entire decoration system.

Type is the second decisive voice. The brand's own custom geometric sans (Geist) carries display, body, button — everything narrative — at weight 600 for display, 500 for buttons, 400 for body. A matching monospaced face (Geist Mono) carries technical labels: terminal mockups, code blocks, sometimes filename captions. Headlines are sentence-case with aggressive negative letter-spacing (`-2.4px` at 48 px hero) — the brand never letter-spaces positively, never goes uppercase outside of mono labels.

Surfaces use a four-step ladder: `{colors.canvas}` (pure white for cards), `{colors.canvas-soft}` 98% (the page body), `{colors.canvas-soft-2}` 95% (occasional inset region), `{colors.primary}` (the deep ink-near-black used as the polarity-flipped band when a section needs the dark mode treatment). Shadows are exceptionally subtle — every elevated card carries a stacked shadow built from `0px 1px 1px #00000005` + `0px 2px 2px #0000000a` + an inset border. Cards never float on heavy drop-shadow; they sit on the page held by hairline + soft glow.

**Key Characteristics:**

  • A single black-ink primary CTA `{colors.primary}` carries every conversion target, paired with white-on-white `button-secondary` for the secondary action. The brand uses 100 px pill shape for marketing CTAs and a tight 6 px square shape for in-app nav buttons.
  • A multi-stop mesh gradient (cyan-blue-magenta-amber) is the only decorative chrome — used at hero scale and inside feature-band atmospheric backdrops. It is the brand.
  • Every section eyebrow and small label uses the monospace face `{typography.caption-mono}` or `{typography.code}`; everything else is in the geometric sans.
  • Subtle stacked-shadow elevation — three offsets layered with 4-12 % black opacity — never a single heavy drop-shadow.
  • A complete 100–1000 gray + blue + red + amber + green + teal + purple + pink colour scale exists as a system token set, but the marketing surface uses only the `100`, `1000`, and `700`-level tones; the rest stay in the design-system tokens for in-product surfaces.
  • An "Active CPU" pricing rhythm: `pricing-card` lays out 3-up on the pricing page with `pricing-card-featured` (Pro tier) polarity-flipped to `{colors.primary}` against white-card siblings.

Colors

Brand & Accent

  • **Ink** (`{colors.primary}` — `#171717`): The single primary CTA color. Black-near-pure ink that carries every Sign Up pill, every footer CTA, the dark-band polarity-flip. Used as text color throughout the page on light surfaces. (Resolved from `--ds-gray-1000`.)
  • **Cyan** (`{colors.cyan}` — `#50e3c2`): A signature mint-cyan used in the brand gradient and inside Geist-system spotlight tokens. Visible inside the hero gradient stops.
  • **Highlight Pink** (`{colors.highlight-pink}` — `#ff0080`): The brand's highlight magenta, used as the high-saturation stop in the preview-gradient pair.
  • **Violet** (`{colors.violet}` — `#7928ca`): The deep purple used as the start of the preview-gradient and inside developer-console highlights.
  • **Link Blue** (`{colors.link}` — `#0070f3`): The brand's primary link color and the legacy `--geist-success` semantic.

Surface

  • **Canvas** (`{colors.canvas}` — `#ffffff`): The pure-white card / dialog / modal surface.
  • **Canvas Soft** (`{colors.canvas-soft}` — `#fafafa`): The default page background — 98 % white. Almost every section sits on this tone.
  • **Canvas Soft 2** (`{colors.canvas-soft-2}` — `#f5f5f5`): A slightly deeper inset surface for "code editor inner background", template-card hover states, and dropdown menus.
  • **Hairline** (`{colors.hairline}` — `#ebebeb`): 1 px dividers — table rows, card borders, input borders.
  • **Hairline Strong** (`{colors.hairline-strong}` — `#a1a1a1`): The 500-level gray, used as the slightly-stronger divider on light bands and as the deemphasised text color.

Text

  • **Ink** (`{colors.ink}` — `#171717`): Every heading and body paragraph on light surfaces.
  • **Body** (`{colors.body}` — `#4d4d4d`): Secondary text — sub-headings, body captions, nav-link inactive text, footer column body.
  • **Mute** (`{colors.mute}` — `#888888`): Lowest-priority text — placeholder text, fine print, low-key labels.
  • **On Primary** (`{colors.on-primary}` — `#ffffff`): All text on `{colors.primary}` surfaces.

Semantic

  • **Success / Link** (`{colors.success}` — `#0070f3`): The brand's legacy success indicator doubles as the primary link color. Visible underline-on-hover for inline body links.
  • **Link Deep** (`{colors.link-deep}` — `#0761d1`): The pressed / visited tone for inline links.
  • **Link Bg Soft** (`{colors.link-bg-soft}` — `#d3e5ff`): Soft pastel blue fill for "what's new" pill banners and informational badges.
  • **Error** (`{colors.error}` — `#ee0000`): Validation red for destructive actions and form errors.
  • **Error Soft** (`{colors.error-soft}` — `#f7d4d6`): Soft pastel red for destructive-state backgrounds.
  • **Error Deep** (`{colors.error-deep}` — `#c50000`): Pressed / deep destructive state.
  • **Warning** (`{colors.warning}` — `#f5a623`): Caution / pending status indicator.
  • **Warning Soft** (`{colors.warning-soft}` — `#ffefcf`) / **Warning Deep** (`{colors.warning-deep}` — `#ab570a`): Background + pressed variants.

Brand Gradient

The brand's signature decoration is a three-pair gradient stack:

  • **Develop** (`{colors.gradient-develop-start}` `#007cf0` → `{colors.gradient-develop-end}` `#00dfd8`) — the blue-to-teal pair used to mark the "deploy" / "develop" rhythm.
  • **Preview** (`{colors.gradient-preview-start}` `#7928ca` → `{colors.gradient-preview-end}` `#ff0080`) — the violet-to-pink pair used for "preview" surfaces.
  • **Ship** (`{colors.gradient-ship-start}` `#ff4d4d` → `{colors.gradient-ship-end}` `#f9cb28`) — the coral-to-amber pair used for "ship" surfaces.

The three pairs collapse into a single multi-color mesh gradient when used as the hero atmospheric backdrop. Treat the gradient as one unified object — do not crop down to a single colour, do not reorder the stops, and do not miniaturise. Used at hero scale only.

Typography

Font Family

Two custom faces carry the entire system:

1. **A custom geometric sans** (extracted as `Geist`) for every display, body, button, link, and label. Weights 400 / 500 / 600 are the working set; the face never appears in 700 or heavier. Display sizes are tracked aggressively negative (`-2.4 px` at 48 px hero, `-1.28 px` at 32 px section); body stays at neutral or slightly-negative tracking.

2. **A custom monospaced face** (extracted as `Geist Mono`) for terminal mockups, code blocks, and small mono-caption labels — anything that wants to signal "technical." Weight 400 only at 12 – 13 px. Tracking neutral.

A condensed display sans (`Space Grotesk`) is loaded as a third face for occasional editorial moments but does not render as the primary face anywhere in the captured surfaces.

Hierarchy

| Token | Size | Weight | Line Height | Letter Spacing | Use |

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

| `{typography.display-xl}` | 48px | 600 | 48px | -2.4px | Hero headline ("Build and deploy on the AI Cloud."). |

| `{typography.display-lg}` | 32px | 600 | 40px | -1.28px | Section headlines ("Your frontend, delivered.", "A compute model for all workloads."). |

| `{typography.display-md}` | 24px | 600 | 32px | -0.96px | Card-cluster headlines, pricing-tier names. |

| `{typography.display-sm}` | 20px | 600 | 28px | -0.6px | Inline display micro-headings. |

| `{typography.body-lg}` | 18px | 400 | 28px | 0 | Lead paragraphs under section headlines. |

| `{typography.body-md}` | 16px | 400 | 24px | 0 | Default body paragraph. |

| `{typography.body-md-strong}` | 16px | 500 | 24px | 0 | Bolded inline body. |

| `{typography.body-sm}` | 14px | 400 | 20px | -0.28px | Secondary body, nav-link text, button-md labels. |

| `{typography.body-sm-strong}` | 14px | 500 | 20px | -0.28px | Nav CTA labels, table-row emphasis. |

| `{typography.caption}` | 12px | 400 | 16px | 0 | Footer secondary lines, badge labels. |

| `{typography.caption-mono}` | 12px | 400 | 16px | 0 | Section eyebrows and label captions that want a technical voice. |

| `{typography.code}` | 13px | 400 | 20px | 0 | Inline code, terminal mockups, command snippets. |

| `{typography.button-md}` | 14px | 500 | 20px | 0 | Small / nav-scale button labels. |

| `{typography.button-lg}` | 16px | 500 | 24px | 0 | Marketing-scale pill button labels. |

Principles

  • **Negative tracking is part of the voice.** Display sizes use aggressive `-2.4` to `-0.6` px tracking. Reverting to default tracking breaks the brand.
  • **Sentence-case headlines, period-terminated.** Headlines like "Build and deploy on the AI Cloud." end with a deliberate period — that punctuation is part of the brand's voice.
  • **Mono for the technical layer only.** Section eyebrows, code blocks, terminal mockups. Body paragraphs never set in mono.
  • **Weight 600 is the display ceiling.** The geometric sans never appears at 700 / 800. The brand reads as a calmer system because of this.

Note on Font Substitutes

The two primary faces are proprietary (custom-cut for the brand). Open-source substitutes:

  • **Geometric sans** — *Inter* (400 / 500 / 600) is the closest stylistic match; `font-feature-settings: "ss01", "ss02"` enables the geometric alternates. *Satoshi* is a passable second choice.
  • **Monospace** — *JetBrains Mono* (400) at 12 – 13 px matches the technical voice. *IBM Plex Mono* is the second-best option.

Layout

Spacing System

  • **Base unit**: 4 px. The brand's `--geist-space` token is exactly 4 px and every captured value is a multiple of 4.
  • **Tokens**: `{spacing.xxs}` 4 px · `{spacing.xs}` 8 px · `{spacing.sm}` 12 px · `{spacing.md}` 16 px · `{spacing.lg}` 24 px · `{spacing.xl}` 32 px · `{spacing.2xl}` 40 px · `{spacing.3xl}` 48 px · `{spacing.4xl}` 64 px · `{spacing.5xl}` 96 px · `{spacing.6xl}` 128 px · `{spacing.section}` 192 px.
  • **Section padding**: marketing bands use `{spacing.4xl}` to `{spacing.5xl}` top/bottom. Hero bands stretch to `{spacing.section}` to give the mesh gradient room to breathe.
  • **Card interior padding**: marketing cards sit at `{spacing.lg}` to `{spacing.xl}`; template-grid cards stay tighter at `{spacing.md}` because they sit in a denser grid.
  • **Inline gap**: button rows, nav rows, and chip rows use `{spacing.sm}` to `{spacing.md}` between siblings. The brand's `--geist-gap` is exactly 24 px.

Grid & Container

  • **Max width**: ~1400 px (`--ds-page-width`); the legacy `--geist-page-width` is 1200 px and still appears on some marketing surfaces. Content centres with horizontal gutters of `{spacing.lg}` 24 px on desktop, `{spacing.md}` 16 px on mobile.
  • **Column patterns**:
  • Three-feature row: 3-up at desktop, 1-up at mobile (rows like "Web Apps / Composable Commerce / Multi-tenant Platforms").
  • Tab pill row: 5-up centred row of `tab-ghost` pills.
  • Template-grid cluster: 5-up at desktop, scaling to 1-up at mobile.
  • Pricing tier grid: 3-up at desktop with the middle tier polarity-flipped.
  • Logo strip: ~5 logos wide, single row.

Whitespace Philosophy

The mesh gradient does most of the heavy decorative lifting; whitespace separates the bands. Section spacing is generous — `{spacing.4xl}` to `{spacing.5xl}` between bands lets the gradient breathe. Inside a card, the headline/paragraph stack is tight (`{spacing.xs}` 8 px gap), then a wider gap before the CTA cluster. The page reads as engineered — large gaps + tight interior, never the other way around.

Responsive Strategy

#### Breakpoints

| Name | Width | Key Changes |

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

| Mobile | < 600px | Hero stacks; nav collapses to hamburger; 3-up feature grids drop to 1-up; tab pill row enables horizontal scroll. |

| Tablet | 600–959px | 3-up grids drop to 2-up; nav still horizontal. |

| Desktop | 960–1199px | Full 3-up grids; pricing 3-up. |

| Wide | 1200–1399px | Container caps at 1400 px content width. |

| Ultra-wide | ≥ 1400px | Content stays centred at 1400 px; bands stretch edge-to-edge in colour but content holds the max-width. |

#### Touch Targets

The `button-primary` pill renders at ~32 px tall in nav and ~48 px tall in marketing contexts. Marketing CTAs comfortably meet WCAG AAA at all breakpoints; nav buttons inflate touch area through `{spacing.xs}` padding on mobile to meet the 44 × 44 px floor.

#### Collapsing Strategy

  • **Nav**: full link row + Ask AI / Log In / Sign Up pills at desktop. Collapses to logo + hamburger at mobile with the menu opening as a full-overlay.
  • **Hero**: mesh gradient stays centred; headline + body stack vertically at all breakpoints (the brand doesn't use a split-hero pattern).
  • **Three-feature row**: 3-up → 2-up → 1-up at the breakpoints above; cards keep their `{rounded.md}` 8 px shape across all viewports.
  • **Pricing card grid**: 3-up at desktop, vertical stack at mobile with `pricing-card-featured` always sitting in the middle.
  • **Template grid**: 5-up → 3-up → 2-up → 1-up. Each `template-card` keeps its 16:9 aspect on the image.

#### Image Behavior

  • **Mesh gradient**: rendered as inline SVG or canvas-painted gradient; scales fluidly with the hero container; never crops, never tiles.
  • **Customer logos**: rendered as monochrome SVGs in the logo strip; consistent 24 px height.
  • **Code editor mockup**: dark `{colors.primary}` rectangle with mono text rendered inside; treated as an image at the layout level.
  • **Template thumbnails**: 16:9 landscape inside `{rounded.md}` card chrome; lazy-loaded; consistent grayscale palette in the placeholder state.

Elevation & Depth

| Level | Treatment | Use |

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

| Level 0 — Flat | No shadow, no border. | Full-bleed hero bands and the polarity-flipped dark sections. |

| Level 1 — Inset Hairline | `0 0 0 1px #00000014` inset 1 px border. | Default card chrome — the brand's universal "you can see this card" cue. |

| Level 2 — Subtle Drop | `0px 1px 1px #00000005, 0px 2px 2px #0000000a` plus inset hairline. | Slightly elevated cards (template-grid, marketing-card). |

| Level 3 — Soft Stack | `0px 2px 2px #0000000a, 0px 8px 8px -8px #0000000a` plus inset hairline. | The "medium" elevation — feature-grid cards. |

| Level 4 — Float Stack | `0px 2px 2px #0000000a, 0px 8px 16px -4px #0000000a` plus inset hairline. | "Large" elevation — pricing cards, callout panels. |

| Level 5 — Modal | `0px 1px 1px #00000005, 0px 8px 16px -4px #0000000a, 0px 24px 32px -8px #0000000f` plus inset hairline. | Modal / dialog surfaces and dropdown menus. |

The brand uses STACKED shadows — multiple small offsets layered to fake natural light — never a single 8-px-blur generic drop. Inset hairline rings are always added so the card edge stays crisp.

Decorative Depth

  • **Mesh gradient as atmospheric depth**: the hero's multi-stop gradient is the brand's only "atmospheric" effect — applied as a flat 2-D backdrop rather than a 3-D illustration.
  • **Polarity-flipped dark band as section-depth**: switching the surface from `{colors.canvas-soft}` to `{colors.primary}` (the deep ink) is the brand's chief depth cue between bands.
  • **Inset-shadow + drop-shadow combo**: the cards' combination of an inset 1 px ring and a multi-stop drop produces a "card sits on the page" effect without ever feeling material-heavy.

Shapes

Border Radius Scale

| Token | Value | Use |

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

| `{rounded.none}` | 0px | Full-bleed hero / footer bands. |

| `{rounded.xs}` | 4px | Tightest inline pill — the `nav-cta-signup` 6-px-radius button (mapped to `xs/sm`). |

| `{rounded.sm}` | 6px | The brand's `--geist-radius` token — base UI radius for in-app buttons, form inputs, dropdown menus. |

| `{rounded.md}` | 8px | The brand's `--geist-marketing-radius` token — feature cards, template cards. |

| `{rounded.lg}` | 12px | Slightly larger card chrome (pricing-card variants). |

| `{rounded.xl}` | 16px | Largest card chrome — when a card hosts a hero image cap. |

| `{rounded.pill-sm}` | 64px | Tab-ghost pills inside the "AI Apps / Web Apps / Ecommerce / Marketing / Platforms" row. |

| `{rounded.pill}` | 100px | The marketing CTA pill — `button-primary`, `button-secondary`, "Start Deploying" pill. |

| `{rounded.full}` | 9999px | Icon-button circular containers, nav-link ghost pills. |

Photography Geometry

  • **Mesh gradient**: full-bleed 2-D atmospheric backdrop, never cropped to a frame; treated as the page's wallpaper.
  • **Customer logos**: monochrome SVG, consistent 24 px height in a flex row.
  • **Code editor mockup**: 16:10 dark rectangle, `{rounded.md}` corners.
  • **Template thumbnails**: 16:9 landscape inside `{rounded.md}` chrome.
  • **Showcase imagery**: 2:1 or 16:9 inside `{rounded.lg}` to `{rounded.xl}` chrome with a stacked shadow.

Components

Buttons

**`button-primary`** — the canonical 100-px-radius black pill, marketing scale.

  • Background `{colors.primary}`, text `{colors.on-primary}`, label set in `{typography.button-lg}`, padding `0px {spacing.sm}` 12 px, shape `{rounded.pill}` 100 px. Renders ~48 px tall when paired with the marketing flex layout.

**`button-secondary`** — the white pill paired with the black primary inside marketing bands.

  • Background `{colors.canvas}`, text `{colors.ink}`, same typography + padding as `button-primary`, shape `{rounded.pill}`.

**`button-primary-sm`** — the smaller-scale primary pill used inside nav and pricing-card CTAs.

  • Background `{colors.primary}`, text `{colors.on-primary}`, label set in `{typography.button-md}` (14 px / 500), shape `{rounded.pill}`.

**`button-secondary-sm`** — the smaller-scale white pill paired with `button-primary-sm`.

  • Background `{colors.canvas}`, text `{colors.ink}`, same typography + shape as `button-primary-sm`.

**`tab-ghost`** — the centred-row tab pill ("AI Apps / Web Apps / Ecommerce / Marketing / Platforms").

  • Background `{colors.canvas}`, text `{colors.ink}`, label set in `{typography.body-sm}`, padding `0px {spacing.md}`, shape `{rounded.pill-sm}` 64 px.

**`icon-button-circular`** — the circular icon container (often a "?" or arrow inside).

  • Background `{colors.canvas}`, dark icon, 1 px solid hairline border, shape `{rounded.full}`.

**Nav CTAs:**

**`nav-cta-signup`** — the small black "Sign Up" button in the nav row.

  • Background `{colors.primary}`, text `{colors.on-primary}`, label `{typography.body-sm-strong}`, padding `0px {spacing.xs}`, height 28 px, shape `{rounded.sm}` 6 px (the brand's `--geist-radius`).

**`nav-cta-login`** — the white "Log In" button in the nav.

  • Background `{colors.canvas}`, text `{colors.ink}`, same typography / height / shape as `nav-cta-signup`.

**`nav-cta-ask-ai`** — the small "Ask AI" button with a faint border.

  • Background `{colors.canvas}`, text `{colors.ink}`, 1 px solid `{colors.hairline}` border (extracted as `0px solid rgb(235, 235, 235)`), same typography / height / shape.

Cards & Containers

**`card-marketing`** — the canonical marketing feature card (3-up section cards).

  • Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.lg}` 24 px, shape `{rounded.md}` 8 px (the `--geist-marketing-radius`). Carries Level 3 soft-stack shadow.

**`card-marketing-large`** — the larger marketing card used for "compute model" / "AI Gateway" callouts.

  • Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.xl}`, shape `{rounded.lg}` 12 px. Carries Level 4 float-stack shadow.

**`card-soft`** — the soft-tinted card used inside cluster groups (lighter than canvas-soft).

  • Background `{colors.canvas-soft}`, text `{colors.ink}`, padding `{spacing.lg}`, shape `{rounded.md}`.

**`template-card`** — the deploy-template card in the "Deploy your first app" grid.

  • Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.md}` 16 px, shape `{rounded.md}` 8 px. Hosts a 16:9 thumbnail at the top.

**`code-editor-mockup`** — the dark code-preview surface inside marketing bands.

  • Background `{colors.primary}`, text `{colors.on-primary}`, body in `{typography.code}` (13 px / Geist Mono), padding `{spacing.lg}` 24 px, shape `{rounded.md}` 8 px.

**`pricing-card`** — the default pricing-tier card.

  • Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.xl}` 32 px, shape `{rounded.lg}` 12 px. Inside: tier name in `{typography.display-md}`, price in `{typography.display-xl}`, feature list in `{typography.body-md}` rows, CTA at the bottom.

**`pricing-card-featured`** — the polarity-flipped "Pro" tier card.

  • Background `{colors.primary}`, text `{colors.on-primary}`, same shape + padding as `pricing-card`. CTA inverts to `button-secondary-sm` (white pill on black card).

Inputs & Forms

**`form-input`** — the canonical text input.

  • Background `{colors.canvas}`, text `{colors.ink}`, 1 px solid `{colors.hairline}` border, body in `{typography.body-sm}` (14 px), padding `0px {spacing.sm}`, height 40 px (the brand's `--geist-form-height`), shape `{rounded.sm}` 6 px.

**`form-input-sm`** — small-height variant (32 px tall) for tight forms.

  • Same as `form-input` but height 32 px (the `--geist-form-small-height`).

**`form-input-lg`** — large-height variant (48 px tall) for hero CTAs.

  • Same as `form-input` but height 48 px (the `--geist-form-large-height`); body in `{typography.body-md}` 16 px.

Navigation

**`nav-bar`** — the sticky top nav.

  • Background `{colors.canvas}`, text `{colors.ink}`, height 64 px (the brand's `--header-height`), padding `{spacing.sm} {spacing.lg}`. Layout: logo left, link row centre, "Ask AI / Log In / Sign Up" cluster right.

**`nav-link`** — the centred link row inside `nav-bar`.

  • Text `{colors.body}`, set in `{typography.body-sm}`, padding `{spacing.xs} {spacing.sm}`, shape `{rounded.full}` (ghost pill — visible only on hover or active, but the radius is documented).

**`footer`** — the bottom 4-column nav.

  • Background `{colors.canvas}`, text `{colors.body}`, padding `{spacing.4xl} {spacing.lg}`. Eyebrow column labels in `{typography.caption-mono}` (uppercase mono effect); link rows in `{typography.body-sm}`.

Signature Components

**`hero-band`** — the white hero with the mesh gradient backdrop.

  • Background `{colors.canvas}` (or `{colors.canvas-soft}` on some surfaces), text `{colors.ink}`, padding `{spacing.4xl} {spacing.lg}`. Inside: a small mono badge above the headline, the headline in `{typography.display-xl}` (sentence-case, period-terminated), a body lead in `{typography.body-lg}`, then a CTA row with `button-primary` + `button-secondary`. The mesh gradient sits behind, scaled to occupy roughly the top half of the band.

**`feature-mesh-band`** — the secondary section that hosts a mesh-gradient atmospheric backdrop with feature copy on top.

  • Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.5xl} {spacing.lg}`. Section headline in `{typography.display-lg}`; supporting body in `{typography.body-md}`.

**`showcase-band-light`** — a soft-canvas section ("Deploy your first app in seconds").

  • Background `{colors.canvas-soft}`, text `{colors.ink}`, padding `{spacing.5xl} {spacing.lg}`.

**`showcase-band-dark`** — the polarity-flipped dark band ("A compute model for all workloads").

  • Background `{colors.primary}`, text `{colors.on-primary}`, padding `{spacing.5xl} {spacing.lg}`. Section headline in `{typography.display-lg}` (white on black). Often contains a `code-editor-mockup` flush with the band.

**`logo-strip`** — the customer-logo wrapping row near the top of the page.

  • Background `{colors.canvas}`, text `{colors.body}`, padding `{spacing.lg} {spacing.xl}`. Logos rendered as monochrome SVGs at consistent height.

**`badge-secondary`** — the small inline metadata pill ("New", "Beta", "Live").

  • Background `{colors.canvas-soft}`, text `{colors.body}`, body in `{typography.caption}`, padding `0px {spacing.xs}`, shape `{rounded.full}`.

**`banner-marketing`** — the "Introducing X" announcement pill at the top of pages.

  • Background `{colors.canvas-soft}`, text `{colors.body}`, body in `{typography.body-sm}`, padding `{spacing.xs} {spacing.sm}`, shape `{rounded.full}`.

**`link-inline`** — body-copy inline links.

  • Text `{colors.link}` (`#0070f3`), body in `{typography.body-md}`, underlined.

Examples (illustrative)

> Auto-derived kit-mirror demonstration surfaces (`scripts/derive-examples-block.mjs`). Each `ex-*` entry references brand-native primitives so downstream consumers (`/preview-design`, `/generate-kit`) re-skin the same 10 surfaces consistently. `TO_FILL` markers indicate missing primitives — resolve in the LLM judgment pass.

**`ex-pricing-tier`** — Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface.

  • Properties: `backgroundColor`, `textColor`, `borderColor`, `rounded`, `padding`

**`ex-pricing-tier-featured`** — Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode).

  • Properties: `backgroundColor`, `textColor`, `rounded`, `padding`

**`ex-product-selector`** — What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery).

  • Properties: `backgroundColor`, `rounded`, `padding`

**`ex-cart-drawer`** — Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart).

  • Properties: `backgroundColor`, `rounded`, `padding`, `item-divider`

**`ex-app-shell-row`** — Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator.

  • Properties: `backgroundColor`, `activeIndicator`, `rounded`, `padding`

**`ex-data-table-cell`** — Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm.

  • Properties: `headerBackground`, `headerTypography`, `bodyTypography`, `cellPadding`, `rowBorder`

**`ex-auth-form-card`** — Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside.

  • Properties: `backgroundColor`, `rounded`, `padding`

**`ex-modal-card`** — Modal dialog surface — same chrome as feature-card with elevated shadow.

  • Properties: `backgroundColor`, `rounded`, `padding`

**`ex-empty-state-card`** — Empty-state illustration frame.

  • Properties: `backgroundColor`, `rounded`, `padding`, `captionTypography`

**`ex-toast`** — Toast notification surface — feature-card shape + medium shadow.

  • Properties: `backgroundColor`, `rounded`, `padding`, `typography`

Do's and Don'ts

Do

  • Reserve `{colors.primary}` (`#171717`) for primary CTAs across the page. Black ink IS the conversion target.
  • Use `{rounded.pill}` 100 px for every marketing-scale CTA and `{rounded.sm}` 6 px for nav-scale buttons. The two pill scales coexist deliberately.
  • Set every headline in `{typography.display-*}` weight 600, sentence-case, often period-terminated. Aggressive negative tracking is part of the voice.
  • Use the brand mesh gradient as atmospheric decoration at hero scale only — never miniaturise it to an icon, never reduce to a single colour.
  • Layer stacked shadows (multiple small offsets with inset hairline) rather than single heavy drops. The brand's elevation is calmer than Material.
  • Cycle page surfaces in `{colors.canvas-soft}` → `{colors.canvas}` → `{colors.primary}` polarity-flipped bands; the dark band IS the depth cue.
  • Set every code block and technical eyebrow in `{typography.code}` / `{typography.caption-mono}`. Mono is the voice of the platform.

Don't

  • Don't introduce a sixth accent colour. The brand operates with ink + gray + the four-pair gradient palette; new accents flatten the voice.
  • Don't render headlines in all-caps. Sentence-case + negative tracking is non-negotiable.
  • Don't drop a single heavy drop-shadow on cards. The brand's elevation is built from stacked small offsets + inset hairline rings.
  • Don't render the brand gradient at icon scale or in a single-colour reduced form. The gradient lives at hero scale only.
  • Don't promote the geometric sans to weight 700. The brand's display ceiling is 600.
  • Don't pair the marketing 100-px pill CTA shape with the 6-px nav radius on the same screen — pick a scale and stay there.
  • Don't set body paragraphs in the mono face. The mono is for code + technical labels only.

개요

Vercel은 개발자 플랫폼 브랜드입니다. 이 페이지는 이미 구문을 알고 있는 엔지니어를 위해 작성된 배포 대시보드의 마케팅 표면입니다. 웹에서 가장 깔끔한 시스템 중 하나인 흰색에 가까운 `{colors.canvas-soft}` 본문 배경, 검은색에 가까운 잉크 `{colors.ink}` 텍스트, 모든 구분선, 테두리 및 비활성화된 상태에 고유한 의도적인 단계를 제공하는 200단계 그레이 스케일을 사용하여 이러한 자세를 얻습니다. 브랜드가 마케팅 규모에서 색상을 소개하는 유일한 장소는 견본으로 축소되지 않고 대기 배경에 떠 있는 멀티 스톱 메시 그라데이션(`{colors.gradient-develop-start}` → `{colors.gradient-preview-end}` → `{colors.gradient-ship-start}` → 청록색/자홍색/호박색)입니다. 그 그라디언트는 전체 장식 시스템입니다.

유형은 두 번째 결정적인 목소리입니다. 브랜드 자체 맞춤형 기하학적 산(Geist)은 디스플레이, 본체, 버튼 등 모든 설명을 담고 있으며 무게는 디스플레이용 600, 버튼용 500, 본체용 400입니다. 일치하는 고정폭 얼굴(Geist Mono)에는 터미널 모형, 코드 블록, 때로는 파일 이름 캡션과 같은 기술 라벨이 포함됩니다. 헤드라인은 공격적인 음수 간격(48px 영웅에서 `-2.4px`)을 사용하는 문장 대소문자입니다. 브랜드는 절대 문자 간격을 긍정적으로 사용하지 않으며 모노 라벨 외부에서는 대문자로 쓰지 않습니다.

표면은 4단계 래더를 사용합니다: `{colors.canvas}`(카드의 경우 순백색), `{colors.canvas-soft}` 98%(페이지 본문), `{colors.canvas-soft-2}` 95%(가끔 삽입 영역), `{colors.primary}`(섹션에 다크 모드 처리가 필요할 때 극성 반전 밴드로 사용되는 진한 잉크-니어-블랙). 그림자는 매우 미묘합니다. 모든 상승된 카드에는 `0px 1px 1px #00000005` + `0px 2px 2px #0000000a` + 삽입 테두리로 구성된 누적된 그림자가 있습니다. 카드는 두꺼운 그림자 위에 떠다니지 않습니다. 헤어라인 + 은은한 광채가 돋보이는 페이지에 자리잡고 있어요.

**주요 특징:**

  • 단일 검정 잉크 기본 CTA `{colors.primary}`는 보조 작업을 위한 흰색 바탕에 흰색 `button-secondary`와 쌍을 이루는 모든 전환 목표를 전달합니다. 이 브랜드는 CTA 마케팅을 위해 100px 알약 모양을 사용하고 인앱 탐색 버튼을 위해 촘촘한 6px 정사각형 모양을 사용합니다.
  • 멀티 스톱 메시 그라데이션(청록색-청색-자홍색-호박색)은 영웅 규모와 기능 밴드 대기 배경 내부에서 사용되는 유일한 장식용 크롬입니다. 브랜드입니다.
  • 모든 섹션 눈썹과 작은 레이블은 고정폭 문자 `{typography.caption-mono}` 또는 `{typography.code}`를 사용합니다. 다른 모든 것은 기하학적 산에 있습니다.
  • 미묘하게 쌓인 그림자 높이 - 4-12% 검정 불투명도로 레이어된 3개의 오프셋 - 절대 단일의 무거운 그림자가 아닙니다.
  • 완전한 100-1000 회색 + 파란색 + 빨간색 + 호박색 + 녹색 + 청록색 + 보라색 + 분홍색 색상 스케일이 시스템 토큰 세트로 존재하지만 마케팅 표면에서는 '100', '1000' 및 '700' 수준 톤만 사용합니다. 나머지는 제품 내 표면을 위한 디자인 시스템 토큰에 남아 있습니다.
  • "활성 CPU" 가격 책정 리듬: 'pricing-card'는 화이트 카드 형제에 비해 'pricing-card-featured'(프로 계층) 극성이 `{colors.primary}`로 반전된 가격 책정 페이지에 3단계를 배치합니다.

색상

브랜드 및 액센트

  • **잉크**(`{colors.primary}` — `#171717`): 단일 기본 CTA 색상입니다. 모든 가입 알약, 모든 바닥글 CTA, 어두운 밴드 극성 반전을 포함하는 검정색에 가까운 잉크입니다. 밝은 표면의 페이지 전체에서 텍스트 색상으로 사용됩니다. (`--ds-gray-1000`에서 해결되었습니다.)
  • **청록색**(`{colors.yan}` — `#50e3c2`): 브랜드 그라데이션과 Geist 시스템 스포트라이트 토큰 내부에 사용되는 시그니처 민트색입니다. Hero Gradient Stop 내부에 표시됩니다.
  • **하이라이트 핑크**(`{colors.highlight-pink}` — `#ff0080`): 브랜드의 하이라이트 마젠타색으로 미리보기-그라디언트 쌍에서 채도가 높은 중지점으로 사용됩니다.
  • **보라색**(`{colors.violet}` — `#7928ca`): 미리보기 그라데이션 및 내부 개발자 콘솔 강조 표시의 시작으로 사용되는 진한 보라색입니다.
  • **링크 블루**(`{colors.link}` — `#0070f3`): 브랜드의 기본 링크 색상 및 기존 `--geist-success` 의미 체계입니다.

표면

  • **캔버스** (`{colors.canvas}` — `#ffffff`): 순백색 카드/대화상자/모달 표면.
  • **캔버스 소프트**(`{colors.canvas-soft}` — `#fafafa`): 기본 페이지 배경 — 98% 흰색. 거의 모든 섹션이 이 톤으로 구성되어 있습니다.
  • **Canvas Soft 2** (`{colors.canvas-soft-2}` — `#f5f5f5`): "코드 편집기 내부 배경", 템플릿 카드 가리키기 상태 및 드롭다운 메뉴를 위한 약간 더 깊은 삽입 표면.
  • **헤어라인**(`{colors.hairline}` — `#ebebeb`): 1px 구분선 — 테이블 행, 카드 테두리, 입력 테두리.
  • **Hairline Strong** (`{colors.hairline-strong}` — `#a1a1a1`): 500 레벨 회색으로 밝은 밴드의 약간 더 강한 구분선과 덜 강조된 텍스트 색상으로 사용됩니다.

텍스트

  • **잉크**(`{colors.ink}` — `#171717`): 모든 제목과 본문 단락이 밝은 표면에 표시됩니다.
  • **본문**(`{colors.body}` — `#4d4d4d`): 보조 텍스트 — 하위 제목, 본문 캡션, 탐색 링크 비활성 텍스트, 바닥글 열 본문.
  • **음소거** (`{colors.mute}` — `#888888`): 가장 낮은 우선순위 텍스트 —

概要

Vercel は開発者プラットフォームのブランドです。このページは展開ダッシュボードのマーケティング画面であり、構文をすでに知っているエンジニア向けに書かれています。この姿勢は、ウェブ上で最もクリーンな殺風景なシステムの 1 つで実現されています。白に近い「{colors.canvas-soft}」のボディ背景、黒に近いインクの「{colors.ink}」テキスト、すべての仕切り、境界線、および無効な状態に独自の意図的なステップを与える 200 段階のグレー スケールです。ブランドがマーケティング規模でカラーを導入する唯一の場所は、大気の背景に浮かぶマルチストップ メッシュ グラデーション (`{colors.gradient-develop-start}` → `{colors.gradient-preview-end}` → `{colors.gradient-ship-start}` → シアン / マゼンタ / アンバー) であり、見本にまで縮小されることはありません。そのグラデーションが装飾システム全体です。

タイプは2番目の決定的な音声です。ブランド独自のカスタム ジオメトリック サンズ (Geist) は、ディスプレイ、ボディ、ボタン、すべての物語を担っており、重量はディスプレイが 600、ボタンが 500、ボディが 400 です。一致する等幅面 (Geist Mono) には、端末モックアップ、コード ブロック、場合によってはファイル名のキャプションなどの技術ラベルが付けられます。見出しは文例大文字で、積極的な負の文字間隔 (48 ピクセルのヒーローで「-2.4px」) を使用します。ブランドは文字間隔を積極的にすることはなく、モノラル ラベルの外側で大文字になることもありません。

サーフェスは 4 段階のラダーを使用します: `{colors.canvas}` (カード用の純白)、`{colors.canvas-soft}` 98% (ページ本文)、`{colors.canvas-soft-2}` 95% (時折挿入領域)、`{colors.primary}` (セクションでダーク モードが必要な場合に極性を反転したバンドとして使用される黒に近い濃いインク)治療)。シャドウは非常に微妙です。すべてのエレベート カードには、「0px 1px 1px #00000005」+「0px 2px 2px #0000000a」+差し込み枠で構築されたスタック シャドウが含まれています。カードが重いドロップシャドウの上に浮かぶことはありません。彼らは髪の生え際と柔らかな輝きによって保持されたページに置かれます。

**主な特徴:**

  • 単一の黒インクのプライマリ CTA `{colors.primary}` には、二次アクションの白地に白の `button-Secondary` と組み合わせて、すべてのコンバージョン ターゲットが含まれます。このブランドは、マーケティング CTA には 100 ピクセルの錠剤の形状を使用し、アプリ内ナビゲーション ボタンには 6 ピクセルの狭い正方形の形状を使用しています。
  • マルチストップ メッシュ グラデーション (シアン、ブルー、マゼンタ、アンバー) が唯一の装飾的なクロムであり、ヒーロー スケールやフィーチャー バンドの大気背景の内側で使用されます。それがブランドです。
  • すべてのセクションの眉毛と小さなラベルは等幅面 `{typography.caption-mono}` または `{typography.code}` を使用します。他のすべては幾何学的なものではありません。
  • 微妙なスタック シャドウのエレベーション — 4 ~ 12 % の黒の不透明度でレイヤー化された 3 つのオフセット — 単一の重いドロップ シャドウはありません。
  • 完全な 100 ~ 1000 のグレー + ブルー + 赤 + アンバー + グリーン + ティール + パープル + ピンクのカラー スケールがシステム トークン セットとして存在しますが、マーケティング画面では「100」、「1000」、および「700」レベルのトーンのみが使用されます。残りは製品内サーフェスのデザイン システム トークンに残ります。
  • 「アクティブ CPU」の価格設定リズム: 価格設定ページでは、「価格カード」が 3 アップでレイアウトされ、「価格カード機能」(プロ ティア) の極性がホワイトカードの兄弟に対して「{colors.primary}」に反転されます。

ブランドとアクセント

  • **インク** (`{colors.primary}` — `#171717`): 単一のプライマリ CTA カラー。すべてのサインアップ錠剤、すべてのフッター CTA、ダークバンド極性反転を搭載した、黒に近い純粋なインク。ページ全体の明るい表面上のテキストの色として使用されます。 (「--ds-gray-1000」から解決されました。)
  • **シアン** (`{colors.chan}` — `#50e3c2`): ブランドのグラデーションと Geist システムのスポットライト トークン内で使用される特徴的なミント シアン。ヒーローのグラデーションストップの内側に表示されます。
  • **ハイライト ピンク** (`{colors.highlight-pink}` — `#ff0080`): ブランドのハイライト マゼンタ。プレビューとグラデーションのペアの高彩度のストップとして使用されます。
  • **バイオレット** (`{colors.violet}` — `#7928ca`): プレビュー グラデーションの開始点および開発者コンソールのハイライトの内側として使用される濃い紫。
  • **リンク ブルー** (`{colors.link}` — `#0070f3`): ブランドの主要なリンク色と従来の `--geist-success` セマンティクス。

表面

  • **キャンバス** (`{colors.canvas}` — `#ffffff`): 真っ白なカード/ダイアログ/モーダル サーフェス。
  • **キャンバス ソフト** (`{colors.canvas-soft}` — `#fafafa`): デフォルトのページ背景 — 98% 白。ほぼすべてのセクションがこの調子に基づいています。
  • **Canvas Soft 2** (`{colors.canvas-soft-2}` — `#f5f5f5`): 「コード エディターの内部背景」、テンプレート カードのホバー状態、およびドロップダウン メニュー用のわずかに深い差し込みサーフェス。
  • **ヘアライン** (`{colors.hairline}` — `#ebebeb`): 1 ピクセルの区切り線 — テーブルの行、カードの境界線、入力境界線。
  • **ヘアライン ストロング** (`{colors.hairline-strong}` — `#a1a1a1`): 500 レベルのグレー。明るいバンドのわずかに強い分割線として、また強調されないテキストの色として使用されます。

テキスト

  • **インク** (`{colors.ink}` — `#171717`): 明るい表面上のすべての見出しと本文の段落。
  • **本文** (`{colors.body}` — `#4d4d4d`): 二次テキスト — 小見出し、本文キャプション、ナビゲーションリンクの非アクティブなテキスト、フッター列の本文。
  • **ミュート** (`{colors.mute}` — `#888888`): 優先度が最も低いテキスト —