Vercel

gallery-white monolith, one black prism

Infrastructure Light light minimal monochrome precise typographic airy Built with Next.js, Tailwind CSS, React

A near-silent, gallery-like interface: an off-white #fafafa canvas, charcoal #171717 type and a single soft-shadowed black triangle doing all the visual work. Nothing is decorated. Hierarchy comes from very large, tightly tracked Geist headlines set against a lot of empty space, with small, precise controls tucked into the corners. It feels like an engineering tool presented as an art object. It is confident and quiet, and almost fully monochrome.

Technically it is a strict greyscale ramp (#fafafa → #ffffff → #ebebeb → #666666 → #4d4d4d → #171717) set in GeistSans at the unusual 450 weight, with letter-spacing of about -0.06em on display sizes. Colour is kept for semantics and small product glyphs: blue #0070f3 for links and focus, green, amber and red for status. Instead of borders, surfaces are separated by 1px ring shadows (rgba(0,0,0,0.08)) plus a faint 2px drop. Primary CTAs are fully rounded charcoal pills, utility buttons use 6px corners, and white cards have 12px corners. Spacing sits on a 4px grid, with section gaps of 120px or more.

https://vercel.com

Colors

Click a swatch to copy

Typography

  • display
    Geist
    400 · 450 · 500 · 600 · falls back to Inter, -apple-system, Segoe UI, sans-serif
    Loaded as 'GeistSans'. Headlines use 450 (sometimes 400 or 600) with very tight negative tracking of about -0.06em at 48px and up, and line-height 1.
  • body
    Geist
    400 · 450 · 500 · falls back to Inter, -apple-system, Segoe UI, sans-serif
    Body is 16px/24px at 400. UI labels and buttons are 14px. Normal tracking at body sizes.
  • mono
    Geist Mono
    400 · 450 · 500 · falls back to JetBrains Mono, Menlo, Monaco, monospace
    Used for terminal and code blocks, the rotating mobile hero subline ('For coding agents') and domain fragments like '.com'.
Display
64px / 64px
450 · -3.84px
Vercel
H1 / Section
56px / 56px
450 · -3.36px
Vercel
H2 / Page title
48px / 56px
450 · -2.88px
Vercel
H3 / Feature
40px / 48px
450 · -2.4px
Vercel
Card title
32px / 40px
450 · -1.28px
Gallery-white monolith, one black prism
Title
24px / 32px
450 · -0.96px
Gallery-white monolith, one black prism
Lead
20px / 26px
450 · -0.4px
The quick brown fox jumps over the lazy dog
Body
16px / 24px
400 · normal
The quick brown fox jumps over the lazy dog
Small / UI
14px / 20px
400 · normal
The quick brown fox jumps over the lazy dog
Mono code
14px / 20px
400 · normal
The quick brown fox jumps over the lazy dog

Spacing & Shape

Spacing
Base unit
4px
Density
spacious
Container
1080px
Section gap
120px
Card padding
24px
2
4
6
8
12
16
24
32
48
56
96
120
Radius
  • Hero / primary CTA pills 9999px
  • Filter chips, search field 128px
  • Nav utility buttons (Get a Demo, Log In, Sign Up), docs buttons, code panels 6px
  • Marketing and blog cards 12px
  • Marketing images and embeds 8px
  • Small tags and inline code 4px
  • Avatars, icon buttons (RSS) 50%
Shadows
border Replaces CSS borders on docs cards, code panels and prompt boxes.
0 0 0 1px rgba(0,0,0,0.08), 0 0 0 1px #fafafa
border-small Secondary buttons, dropdown triggers, small floating cards. The default 'lifted' look.
0 0 0 1px rgba(0,0,0,0.08), 0px 2px 2px rgba(0,0,0,0.04), 0 0 0 1px #fafafa
border-medium Hovered cards, embedded product screenshots.
0 0 0 1px rgba(0,0,0,0.08), 0px 2px 2px rgba(0,0,0,0.04), 0px 8px 8px -8px rgba(0,0,0,0.04), 0 0 0 1px #fafafa
menu Nav mega-menus, popovers, dropdowns.
0 0 0 1px rgba(0,0,0,0.08), 0px 1px 1px rgba(0,0,0,0.02), 0px 4px 8px -4px rgba(0,0,0,0.04), 0px 16px 24px -8px rgba(0,0,0,0.06)
focus-ring Keyboard focus on every interactive element.
0 0 0 2px #ffffff, 0 0 0 4px #0070f3

Components

Live previews rendered from recipes
Vercel Get started
Buttons
Inputs
Tags
New Infrastructure light
Card
Everything in one ledger

Reconcile every account overnight and close the month in an afternoon instead of a fortnight.

Get started
  • Primary pill button — Hero CTA ('Deploy now', 'View open positions'). May carry a 16px leading icon. In dark mode it inverts to #ededed with #0a0a0a text.
  • Secondary pill button — Always placed next to the primary pill with an 8–12px gap ('Talk to sales').
  • Nav utility button — Header 'Get a Demo' / 'Log In' and docs 'Set up your agent'. The solid variant ('Sign Up', 'Get started') uses #171717 fill with white text and no ring.
  • Filter chip — Blog category row. Only the active chip gets a fill.
  • Search input — 14px leading magnifier icon in #8f8f8f and placeholder 'Search…'. The docs version adds a right-aligned ⌘K keycap chip.
  • Content card — Tall blog cards, white on the #fafafa page with no outline. Layout: a 14px date plus a #666 category, a 32px/-1.28px title, a large empty gap, a 14px #4d4d4d excerpt, then overlapping 20px avatars.
  • Docs panel / code block — Header strip with an icon, a label ('terminal', 'Agent Prompt') and a copy button, then Geist Mono 14px content. Command flags are tinted green.
  • Top navigation — Sticky. Order is black triangle logo, then 'Products ⌄ Resources ⌄ Enterprise Pricing', then right-aligned Get a Demo / Log In / Sign Up.

Do / Don't

  • Set headlines in Geist at weight 450 with line-height 1 and letter-spacing around -0.06em (-3.84px at 64px, -0.96px at 24px).
  • Separate surfaces with 1px rgba(0,0,0,0.08) ring box-shadows, not CSS borders, and put white cards on a #fafafa page.
  • Use fully rounded #171717 pills for the hero CTA pair and 6px-radius compact buttons for nav and utility actions.
  • Keep the page greyscale. Use #0070f3 only for links and focus, and green, amber and red only for status.
  • Leave large empty areas: 120px+ between sections, and let cards hold empty space between the title and the footer metadata.
  • Use Geist Mono for terminal snippets, commands and tech labels, with a copy button in the panel header.
  • Give every theme a true-black (#000000) dark counterpart with #ededed text and white glows instead of drop shadows.
  • Don't add brand gradients, coloured backgrounds or illustrated heroes. One monochrome geometric object is the whole visual.
  • Don't use bold 700+ weights or positive or normal tracking on large headlines. It breaks the chiselled Geist look.
  • Don't use heavy or coloured drop shadows. Elevation should never go above about 6% black opacity.
  • Don't round cards more than 12px or make nav buttons into pills. The radius system (6 / 12 / full) is deliberate.
  • Don't use pure #000 for body text on light. Use #171717 for headings and #4d4d4d or #666666 for copy.
  • Don't crowd the hero with badges, stats or multiple CTAs. The limit is one primary pill and one secondary pill.

Screens

Agentic Infrastructure - Vercel /
Vercel Documentation /docs
About Us /about
Blog - Vercel /blog
Marketing Sites /solutions/marketing-sites
Mobile 390×844
Mobile navigation menu open
Dark mode