---
name: vercel-design-reference
provider: DesignSkill (https://designskill.dev)
reference: vercel.com
source_url: https://vercel.com/
tool: designskill-extract/3.2.0
extracted_at: 2026-07-27T07:47:51.332Z
mode: full-render
classification: reference_only
---

# Vercel — Design Reference (measured)

Measured design tokens extracted from `https://vercel.com/` by designskill-extract/3.2.0.
Every value below was observed in the live page (×N = observation count). Values not listed were **not observed** — do not invent them.
This document is `reference_only`: an analysis of a third-party site, not a license to its brand assets.

## Overview

- Extraction mode: **full-render** (viewports 390/768/1440px × light/dark), 1 page(s), 442 observation records.
- Primary action color observed as `#ff0080` (basis: inferred, confidence 0.78).
- Dominant font family: **GeistSans** (×856; secondary Geist Mono ×111).
- Type scale observed at 8 sizes from 11px to 48px.
- Corner radius values in use: 6px, 4px, 12px.
- Not observed in this extraction: forms.

## Colors

### Role Tokens

Semantic roles inferred from observed usage. `basis` tells how the role was established (declared CSS var > cross-validated > inferred).

| Token | Value | Basis | Confidence | Observed |
|---|---|---|---|---|
| `{color.primary}` | `#ff0080` | inferred | 0.78 | ×1 |
| `{color.background}` | `#fafafa` | cross-validated | 0.92 | ×124 |
| `{color.ink}` | `#000000` | cross-validated | 0.93 | ×218 |
| `{color.muted}` | `#888888` | inferred | 0.7 | ×331 |
| `{color.surface}` | `#ededed` | inferred | 0.7 | ×202 |
| `{color.accent}` | `#0070f3` | inferred | 0.57 | ×4 |

### Observed Palette

Full measured palette ordered by usage share. `Used in` lists the CSS properties the color appeared on.

| Hex | Share | Used in | Observed |
|---|---|---|---|
| `#888888` | 23.6% | background-color, color | ×331 (observed, 0.78) |
| `#ededed` | 14.4% | color, background-color, border-color, --leaderboard-chart-cursor-fill, --tw-shadow | ×202 (cross-validated, 0.93) |
| `#000000` | 15.6% | background-color, border-color, color, -webkit-mask-image, --themed-fg | ×218 (cross-validated, 0.93) |
| `#171717` | 12.8% | color, background-color, custom-property | ×179 (cross-validated, 0.93) |
| `#666666` | 12.0% | background-color, color | ×168 (cross-validated, 0.92) |
| `#fafafa` | 8.8% | background-color, color, --tw-shadow, border-color, --scroller-gradient | ×124 (cross-validated, 0.92) |
| `#4d4d4d` | 3.4% | color, background-color, --tw-gradient-from | ×48 (cross-validated, 0.91) |
| `#a1a1a1` | 3.1% | color | ×44 (observed, 0.76) |
| `#cccccc` | 0.7% | background-color | ×10 (inferred, 0.58) |
| `#ef4444` | 0.4% | background-color, border-color | ×6 (inferred, 0.58) |
| `#1f1f1f` | 0.5% | border-color, --tw-shadow, custom-property | ×7 (inferred, 0.58) |
| `#383838` | 0.5% | background-color, border-color, --dropdown-triangle-stroke | ×7 (inferred, 0.58) |
| `#95bf47` | 0.2% | border-color, background-color, --tw-gradient-from | ×3 (inferred, 0.57) |
| `#de2670` | 0.4% | background-color, border-color, --geist-console-text-color-pink | ×5 (inferred, 0.58) |
| `#d9d9d9` | 0.2% | -webkit-mask-image | ×3 (inferred, 0.57) |
| `#0070f3` | 0.3% | background-color, --tw-gradient-position | ×4 (inferred, 0.57) |

## Typography

### Font Families

| Family | Observed |
|---|---|
| `GeistSans` | ×856 |
| `Geist Mono` | ×111 |
| `Georgia` | ×2 |
| `GeistSans Fallback` | ×1 |

Use **GeistSans** as the default family — it accounts for the overwhelming majority of observed text nodes.

### Type Scale

| Token | Size | Observed |
|---|---|---|
| `{type.display}` | 48px | ×26 |
| `{type.h1}` | 32px | ×21 |
| `{type.h2}` | 24px | ×68 |
| `{type.h3}` | 20px | ×23 |
| `{type.body-lg}` | 16px | ×63 |
| `{type.body}` | 14px | ×767 |
| `{type.body-sm}` | 12px | ×62 |
| `{type.caption}` | 11px | ×60 |

The most frequently observed size is **14px** (×767) — treat it as the default body size.

## Spacing

| Value | Observed |
|---|---|
| `2px` | ×2016 |
| `6px` | ×562 |
| `12px` | ×225 |
| `4px` | ×149 |
| `40px` | ×97 |
| `24px` | ×89 |
| `16px` | ×77 |
| `8px` | ×77 |
| `20px` | ×73 |
| `32px` | ×51 |
| `48px` | ×51 |
| `44px` | ×18 |

## Shape (Border Radius)

| Value | Observed |
|---|---|
| `6px` | ×63 |
| `4px` | ×13 |
| `12px` | ×5 |

## Elevation

| Shadow | Observed |
|---|---|
| `var(--ds-focus-ring)` | ×8 |
| `var(--ds-shadow-menu)` | ×4 |
| `var(--ds-shadow-small)` | ×4 |
| `var(--ds-shadow-border-small)` | ×3 |
| `0 0 0 1px var(--ds-gray-alpha-400)` | ×3 |
| `1px 0 0 0 var(--ds-gray-alpha-400)` | ×3 |

## Motion

| Duration | Observed |
|---|---|
| `0.1s` | ×98 |
| `0.15s` | ×60 |
| `0.3s` | ×38 |
| `0.2s` | ×18 |
| `0.4s` | ×12 |

## Components

Measured computed styles of representative components (desktop viewport).

| Component | Measured spec | Samples |
|---|---|---|
| button.primary | bg `#ffffff` · text `#171717` · radius `6px` · padding `0px 6px` · font `14px/500` | ×1 |
| card | bg `#fafafa` · radius `6px` · padding `20px` | ×4 |
| badge | text `#171717` · radius `999px` · font `11px/500` · padding `2px 8px` | ×9 |
| nav | height `64px` · position `sticky` · link `#171717` | — |

### Hero Gradient (observed)

```css
background-image: radial-gradient(circle at 0% 0%, rgb(250, 250, 250) 0%, rgba(0, 0, 0, 0) 30%), radial-gradient(circle at 100% 0%, rgb(250, 250, 250) 0%, rgba(0, 0, 0, 0) 30%), radial-gradient(circle at 100% 100%, rgb(250, 250, 250) 0%, rgba(0, 0, 0, 0) 30%;
```

### Interaction States (observed)

| State | Property | From | To |
|---|---|---|---|
| hover | color | `rgb(77, 77, 77)` | `rgb(23, 23, 23)` |
| hover | outline-color | `rgb(77, 77, 77)` | `rgb(23, 23, 23)` |
| hover | color | `rgb(77, 77, 77)` | `rgb(23, 23, 23)` |
| focus | color | `rgb(77, 77, 77)` | `rgb(23, 23, 23)` |
| focus | outline-color | `rgb(77, 77, 77)` | `rgb(0, 95, 204)` |
| focus | outline-width | `3px` | `1px` |

## Accessibility (WCAG Contrast)

| FG | BG | Ratio | AA | Source |
|---|---|---|---|---|
| `#888888` | `#fafafa` | 3.4 | fail | observed ×156 |
| `#171717` | `#fafafa` | 17.18 | pass | observed ×141 |
| `#666666` | `#fafafa` | 5.5 | pass | observed ×81 |
| `#4d4d4d` | `#fafafa` | 8.1 | pass | observed ×35 |
| `#171717` | `#ffffff` | 17.93 | pass | observed ×23 |
| `#4d4d4d` | `#ffffff` | 8.45 | pass | observed ×7 |
| `#8f8f8f` | `#fafafa` | 3.1 | fail | observed ×7 |
| `#ffffff` | `#171717` | 17.93 | pass | observed ×5 |
| `#0a0a0a` | `#ededed` | 16.91 | pass | observed ×2 |
| `#a1a1a1` | `#0a0a0a` | 7.66 | pass | observed ×2 |
| `#171717` | `#0a0a0a` | 1.1 | fail | observed ×2 |
| `#000000` | `#fafafa` | 20.12 | pass | ink_on_background |
| `#ffffff` | `#ff0080` | 3.77 | fail | white_on_primary |
| `#888888` | `#fafafa` | 3.4 | fail | muted_on_background |

5 measured pair(s) fail AA — if you reuse those pairs, adjust lightness until the ratio reaches 4.5:1.

## Usage Rules

### Do
- Use `{color.primary}` (`#ff0080`) for primary actions only — that is where it was observed.
- Default text pairing: `{color.ink}` (`#000000`) on `{color.background}` (`#fafafa`).
- Set all text in `GeistSans` (fallbacks only for glyph coverage).
- Pick corner radii from the measured set (6px, 4px, 12px) — no intermediate values were observed.
- Cite this file's token names (`{color.*}`, `{type.*}`) when generating UI so output stays traceable to observations.

### Don't
- Don't invent colors, sizes, shadows, or spacing not listed above — absence means *not observed*, and this document records observations only.
- Don't assume the missing blocks (forms) don't exist on the site — they were simply not captured in this run.
- Don't copy brand assets (logo, wordmark, imagery, copy) — `reference_only` covers measured style values, not brand identity.
- Treat `{color.accent}` with caution — confidence below 0.6.

## Provenance

- Source: https://vercel.com/ (1 page(s))
- Tool: designskill-extract/3.2.0 · extracted 2026-07-27T07:47:51.332Z
- Mode: full-render — 풀렌더 모드 — 3뷰포트 × 라이트/다크 computed style + 상태 관측.
- Blocks observed: 00, 01, 02, 03, 04, 05, 07, 08, 09, 10, 11, 12 · missing: forms
- Warning: primary 불일치: static=#ef4444 vs render=#ff0080 — render 채택

---

<sub>Generated & served by [DesignSkill](https://designskill.dev)</sub>
