Vercel
A cloud platform for building and shipping websites
The style
A near-monochrome, engineering-first language. A soft off-white canvas, near-black ink and one open-source sans family (Geist) set large and extremely tight. Black and white pill buttons carry every action, cards sit on hairline rings instead of shadows, and a single bright blue is kept for links. Nothing decorates — contrast, spacing and type do all the work.
Colours
- Brand#171717
- Buttons#1a1a1a
- Highlight#0051f3
- Background#faf9f7
- Text#171717
Click a colour to copy it.
Fonts
Geist
For headings
Geist
For everything else
Buttons
40px pill buttons with a 500-weight label. Black for the main action, white with a hairline ring for the second.
Use this style in your project
Pick the way that suits you. The first one needs no design or coding knowledge.
With an AI tool
Your AI tool builds the page for you, in Vercel’s style.
2. Open it in
For developers
Ready-made CSS variables, a Tailwind theme and design tokens, with light and dark modes.
See the codeMake it your own
Change the colours, fonts and shapes, and see the result straight away before you use it.
CustomiseFiles
The code, ready to copy
Every file says where the style came from.
tokens.css — Colours, fonts and sizes as CSS variables, with light and dark modes.
/* Bare Contrast — design tokens generated by Markdown */
/* Derived from an analysis of vercel.com; how different from the source: a little different (30/100). */
/* Inspired by, not a copy of, the source. Adapt before commercial use; no logos, imagery, copy or proprietary fonts are included. */
:root {
color-scheme: light;
--color-background: #faf9f7;
--color-surface: #ffffff;
--color-surface-muted: #efeeec;
--color-text: #171717;
--color-text-muted: #6d6d6c;
--color-border: #ebebeb;
--color-primary: #1a1a1a;
--color-on-primary: #ffffff;
--color-brand: #171717;
--color-on-brand: #ffffff;
--color-accent: #0051f3;
--color-success: #2f7e54;
--color-warning: #93631a;
--color-danger: #a3443e;
--font-display: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
--font-body: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
--font-mono: "Geist Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
--text-display: 4.3125rem;
--text-display-line-height: 1;
--text-display-weight: 500;
--text-display-tracking: -0.052em;
--text-h1: 3.1875rem;
--text-h1-line-height: 1.03;
--text-h1-weight: 500;
--text-h1-tracking: -0.042em;
--text-h2: 2.375rem;
--text-h2-line-height: 1.06;
--text-h2-weight: 500;
--text-h2-tracking: -0.031em;
--text-h3: 1.8125rem;
--text-h3-line-height: 1.15;
--text-h3-weight: 500;
--text-h3-tracking: -0.021em;
--text-lead: 1.3125rem;
--text-lead-line-height: 1.5;
--text-lead-weight: 400;
--text-lead-tracking: -0.005em;
--text-body: 1rem;
--text-body-line-height: 1.6;
--text-body-weight: 400;
--text-body-tracking: 0em;
--text-small: 0.75rem;
--text-small-line-height: 1.5;
--text-small-weight: 400;
--text-small-tracking: 0.005em;
--text-caption: 0.6875rem;
--text-caption-line-height: 1.4;
--text-caption-weight: 400;
--text-caption-tracking: 0.01em;
--text-label: 0.8125rem;
--text-label-line-height: 1.3;
--text-label-weight: 600;
--text-label-tracking: 0.01em;
--text-code: 0.875rem;
--text-code-line-height: 1.55;
--text-code-weight: 400;
--text-code-tracking: 0em;
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 24px;
--space-6: 32px;
--space-7: 48px;
--space-8: 64px;
--space-9: 96px;
--space-10: 128px;
--radius-none: 0px;
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 12px;
--radius-xl: 20px;
--radius-full: 9999px;
--border-width: 1px;
--shadow-sm: 0 1px 0 rgb(0 0 0 / 0.08);
--shadow-md: 0 0 0 1px rgb(0 0 0 / 0.06), 0 2px 4px rgb(0 0 0 / 0.08);
--shadow-lg: 0 0 0 1px rgb(0 0 0 / 0.06), 0 10px 24px -6px rgb(0 0 0 / 0.2);
--duration-fast: 100ms;
--duration-base: 160ms;
--duration-slow: 270ms;
--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
--ease-enter: cubic-bezier(0.16, 1, 0.3, 1);
--ease-exit: cubic-bezier(0.7, 0, 0.84, 0);
--container: 1424px;
--gutter: 24px;
--button-radius: 9999px;
--button-padding: 10px 16px;
--input-radius: 6px;
--input-height: 40px;
--card-radius: 8px;
--card-padding: 24px;
--badge-radius: 9999px;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
color-scheme: dark;
--color-background: #161410;
--color-surface: #22201c;
--color-surface-muted: #272521;
--color-text: #f0eeea;
--color-text-muted: #9d9b97;
--color-border: #42403c;
--color-primary: #9e9e9e;
--color-on-primary: #141210;
--color-brand: #171717;
--color-on-brand: #ffffff;
--color-accent: #3176ff;
--color-success: #72ca9b;
--color-warning: #e0a752;
--color-danger: #cd7f7a;
}
}
[data-theme="dark"] {
color-scheme: dark;
--color-background: #161410;
--color-surface: #22201c;
--color-surface-muted: #272521;
--color-text: #f0eeea;
--color-text-muted: #9d9b97;
--color-border: #42403c;
--color-primary: #9e9e9e;
--color-on-primary: #141210;
--color-brand: #171717;
--color-on-brand: #ffffff;
--color-accent: #3176ff;
--color-success: #72ca9b;
--color-warning: #e0a752;
--color-danger: #cd7f7a;
}
@media (prefers-reduced-motion: reduce) {
:root { --duration-fast: 0ms; --duration-base: 0ms; --duration-slow: 0ms; }
}
See every detail
Buttons
Inputs
Badges
Project
Quarterly field notes
A card groups one idea: a title, one line of support and a clear next step.
Weekly digest is ready
Three new comments and one approval.
npm i @brandless/ui01
Colour
Semantic roles for light mode. Contrast is checked against WCAG AA as you edit.
Background
Surface
Surface muted
- AA 17.0:1
Text
- AA 4.9:1
Text muted
Border
- AA 16.5:1
Primary
- AA 17.4:1
On primary
Brand
- AA 17.9:1
On brand
- AA 5.7:1
Accent
- AA 4.7:1
Success
- AA 4.9:1
Warning
- AA 5.8:1
Danger
02
Typography
Base 16px on a 1.338 modular scale. Only open-licence fonts are recommended.
display
Geist
body
Geist
mono
Geist Mono
display · 69px / 1 · 500 · -0.052em
The quiet grammar of form
h1 · 51px / 1.03 · 500 · -0.042em
The quiet grammar of form
h2 · 38px / 1.06 · 500 · -0.031em
The quiet grammar of form
h3 · 29px / 1.15 · 500 · -0.021em
The quiet grammar of form
lead · 21px / 1.5 · 400 · -0.005em
Readable text sets the pace of an interface.
body · 16px / 1.6 · 400 · 0em
Readable text sets the pace of an interface.
small · 12px / 1.5 · 400 · 0.005em
Readable text sets the pace of an interface.
caption · 11px / 1.4 · 400 · 0.01em
Readable text sets the pace of an interface.
label · 13px / 1.3 · 600 · 0.01em
Readable text sets the pace of an interface.
code · 14px / 1.55 · 400 · 0em
const tokens = await load();
03
Spacing
A 4px base unit. Use the scale for padding, gaps and section rhythm.
- 4px
- 8px
- 12px
- 16px
- 24px
- 32px
- 48px
- 64px
- 96px
- 128px
04
Shape & surface
Mostly flat surfaces with a light shadow reserved for raised, interactive elements.
Radii
none
0px
sm
4px
md
8px
lg
12px
xl
20px
full
pill
Shadows & borders
0 1px 0 rgb(0 0 0 / 0.08)
0 0 0 1px rgb(0 0 0 / 0.06), 0 2px 4px rgb(0 0 0 / 0.08)
0 0 0 1px rgb(0 0 0 / 0.06), 0 10px 24px -6px rgb(0 0 0 / 0.2)
Borders: 1px hairline · Surfaces: flat
06
Layout
1424px container · 12 columns · 24px gutters
Patterns
- Split hero: message left, supporting visual or product frame right.
- Twelve-column grid; content blocks usually span 4, 6 or 8 columns.
- Full-bleed bands for feature sections, inner content capped at the container.
- Reading text limited to roughly 65–72 characters per line.
Responsive principles
- Below md, grids collapse to a single column and side gutters drop to 16px.
- Type steps above h2 scale down one step on small screens.
- Navigation collapses to a disclosure menu below lg.
- Touch targets stay at least 44×44px on every breakpoint.
07
Motion
Durations and easing curves. Previews respect your reduced-motion setting.
- fast100ms
- base160ms
- slow270ms
ease-standard
ease-enter
ease-exit
Principles
- Motion is brisk and functional — it confirms, it doesn't perform.
- Animate opacity and transform only; avoid animating layout.
- Respect prefers-reduced-motion by replacing movement with instant state changes or fades.
Vercel, its logo and trademarks belong to their owner and are shown only to say where this style comes from. This is our own study of their public website — not made or endorsed by Vercel. Use your own words and images.
More like Vercel
- New
Linear
Plan and build products with your team and AI agents
- New
Cloudflare
The connectivity cloud that powers a fifth of the internet
- New

Mercury
Business banking for startups and growing companies