Skip to content
Markdown
All sites

Vercel

A cloud platform for building and shipping websites

Collect Vercel

Keep the sites you like in one place and come back to them any time. Browsing stays free — no account needed.

Visit site (opens vercel.com in a new tab)Use this style

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

Get startedContinueCancel

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 code

Make it your own

Change the colours, fonts and shapes, and see the result straight away before you use it.

Customise

Files

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

New ActivePendingOverdue

Project

Quarterly field notes

Draft

A card groups one idea: a title, one line of support and a clear next step.

Updated 2h agoOpen project

Weekly digest is ready

Three new comments and one approval.

npm i @brandless/ui

01

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

Detected · open licence

body

Geist

Detected · open licence

mono

Geist Mono

Detected · open licence
  • 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

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)

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.

  • fast
    100ms
  • base
    160ms
  • slow
    270ms
  • 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.

  • New

    Collect Linear

    Keep the sites you like in one place and come back to them any time. Browsing stays free — no account needed.

    Linear

    Plan and build products with your team and AI agents

  • New

    Collect Cloudflare

    Keep the sites you like in one place and come back to them any time. Browsing stays free — no account needed.

    Cloudflare

    The connectivity cloud that powers a fifth of the internet

  • New

    Collect Mercury

    Keep the sites you like in one place and come back to them any time. Browsing stays free — no account needed.

    Mercury logo

    Mercury

    Business banking for startups and growing companies