← Back to all designs

Resend

Resend's marketing surfaces sit on a near-pure black canvas with off-white text and a single signature color — the deep editorial-serif Domaine Display headline mark — that gives an otherwise utilitarian developer-tool brand its print-magazine confidence. The system pairs Domaine Display (oversized 76px–96px serif, ss01/ss04/ss11 features on) with ABC Favorit for body and Inter for UI. Surfaces re

Homepage Example

Welcome to Resend

A modern, elegant design system built for the digital age. Clean lines, thoughtful spacing, and purposeful color choices define every interaction.

Get Started Learn More

Pixel Perfect

Every element is carefully crafted to ensure consistency across all platforms and devices.

Design Tokens

A comprehensive token system that makes scaling and maintaining your design effortless.

Built for Teams

Collaborate seamlessly with designers and developers using a shared design language.

Color Palette (18)

primary#fcfdff
primary-on#000000
ink#fcfdff
mute#a1a4a5
ash#888e90
stone#464a4d
on-light#000000
canvas#000000
surface-card#0a0a0c
surface-elevated#101012
surface-deep#06060a
accent-orange#ff801f
accent-yellow#ffc53d
accent-blue#3b9eff
accent-green#11ff99
accent-red#ff2047
link#3b9eff
surface-light#f1f7fe

Typography (14)

Resend
display-xxl96px · weight 400
Resend
display-xl76.8px · weight 400
Resend
display-lg56px · weight 400
Resend
heading-md24px · weight 500
Resend
heading-sm20px · weight 500
Resend
subtitle20px · weight 400
Resend
body-lg18px · weight 400
Resend
body-md16px · weight 400
Resend
body-sm14px · weight 400
Resend
button-md14px · weight 500
Resend
button-sm14px · weight 500
Resend
caption12px · weight 400
Resend
caption-emph14px · weight 600
Resend
code-md13px · weight 400

Components (19)

button-primary
button-primary
button-primary-pressed
button-primary-pressed
button-ghost
button-ghost
button-outline
button-outline
text-input
text-input
hero-stripe
hero-stripe
feature-card
feature-card
feature-card-bordered
feature-card-bordered
pricing-tier
pricing-tier
pricing-tier-featured
pricing-tier-featured
code-window
code-window
code-tab
code-tab
email-mockup
email-mockup
badge-pill
badge-pill
status-dot
status-dot
nav-bar
nav-bar
sub-nav-pill
sub-nav-pill
contributor-avatar
contributor-avatar
footer
footer

Border Radius

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

Design Philosophy

Overview

Resend looks like a developer tool with the typography of an editorial.

Every page opens on `{colors.canvas}` (`#000000`), and the loudest element on

the canvas is not a button or a brand stamp — it's a 96px Domaine Display

serif headline ("Email for developers", "Email reimagined") with the

`ss01 / ss04 / ss11` stylistic alternates engaged. That single typographic

decision sets the brand tone: confident, considered, slightly literary, and

priced on quality rather than novelty.

The supporting cast is technical. Body copy switches to **ABC Favorit** for

marketing prose and **Inter** for UI labels, while code blocks render in

**Geist Mono** inside `{component.code-window}` shells with hairline traffic-

light dots. Surface depth is built almost entirely from translucent white —

6% borders, 14% strong borders, 4% dividers — over a deep `{colors.surface-deep}`

layer that sits just below the canvas black. There are no gradients painted

across full bands, just **soft atmospheric glows** (orange, blue, green, red,

yellow) anchored at the top of select sections, all at low opacity.

Page rhythm cycles in a single dark register: hero stripe → atmospheric

section → code window section → email mockup section → pricing or feature

grid → black footer. The brand never warms to a light surface; even

secondary email mockups are rendered as compact white cards inside the dark

canvas, framed like print insets in a black-bordered magazine page.

**Key Characteristics:**

Colors

Brand & Accent

Surface

Text

Semantic

Typography

Font Family

Resend ships a four-family stack:

When proprietary families cannot be licensed, **Söhne** or **Tiempos Headline** stand in for Domaine Display, and **Geist** or **Inter Tight** can replace ABC Favorit. Inter and Geist Mono are open-source and should be used directly.

Hierarchy

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

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

| `{typography.display-xxl}` | 96px | 400 | 1.0 | -0.96px | Home hero ("Email for developers"). One per page. |

| `{typography.display-xl}` | 76.8px | 400 | 1.0 | -0.768px | Section openers ("Email reimagined", "Available today"). |

| `{typography.display-lg}` | 56px | 400 | 1.2 | -2.8px | ABC Favorit display sub-titles. |

| `{typography.heading-md}` | 24px | 500 | 1.5 | -0.4px | Card titles, section sub-titles. |

| `{typography.heading-sm}` | 20px | 500 | 1.3 | -0.3px | List headers. |

| `{typography.subtitle}` | 20px | 400 | 1.3 | 0 | Hero subtitles. |

| `{typography.body-lg}` | 18px | 400 | 1.5 | 0 | Marketing prose. |

| `{typography.body-md}` | 16px | 400 | 1.5 | -0.8px | ABC Favorit body. |

| `{typography.body-sm}` | 14px | 400 | 1.43 | 0 | Captions, metadata. |

| `{typography.button-md}` | 14px | 500 | 1.43 | 0 | Default button label. |

| `{typography.button-sm}` | 14px | 500 | 1.43 | 0.35px | Pill labels, inline links. |

| `{typography.caption}` | 12px | 400 | 1.5 | 0 | Footer disclosure, copyright. |

| `{typography.caption-emph}` | 14px | 600 | 1.0 | 0 | Emphatic small caption — Helvetica fallback. |

| `{typography.code-md}` | 13px | 400 | 1.6 | 0 | Code blocks, inline code. |

Principles

Note on Font Substitutes

When Domaine Display is unavailable, clamp `lineHeight` to 1.0 explicitly and apply `font-feature-settings: "ss01", "liga"` on the substitute serif to mimic the alternate glyphs. Söhne or Tiempos Headline will read closest. ABC Favorit substitutes (Geist, Inter Tight) typically default to looser tracking — apply -0.5% letter-spacing on body sizes to compensate.

Layout

Spacing System

Grid & Container

Whitespace Philosophy

Elevation & Depth

| Level | Treatment | Use |

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

| 0 — flat | No shadow, no border | Default canvas, full-bleed bands. |

| 1 — surface card | `{colors.surface-card}` (`#0a0a0c`) + 1px `{colors.hairline-strong}` | Feature cards, pricing tiers, form inputs. |

| 2 — elevated | `{colors.surface-elevated}` (`#101012`) + 1px `{colors.hairline-strong}` | Featured pricing tier, ghost button. |

| 3 — code well | `{colors.surface-deep}` (`#06060a`) + 1px `{colors.hairline-strong}` | Code window, terminal shells. |

| 4 — atmospheric glow | Low-opacity radial gradient (`{colors.accent-*-glow}`) anchored at section top | Section openers ("Integrate this weekend", "Email reimagined"). |

The system has **no traditional drop shadow language**. Every surface either gets a translucent-white hairline border or sits inside an atmospheric glow. The dark canvas absorbs shadow naturally; surfaces register depth via temperature and luminance shifts rather than blur.

Decorative Depth

Shapes

Border Radius Scale

| Token | Value | Use |

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

| `{rounded.none}` | 0px | Hero stripe, full-bleed bands, footer. |

| `{rounded.xs}` | 4px | Inline tags inside code wells. |

| `{rounded.sm}` | 6px | Code tabs, mid-size chips. |

| `{rounded.md}` | 8px | Buttons, form inputs. |

| `{rounded.lg}` | 12px | Feature cards, pricing tiers, code wells, email mockups. |

| `{rounded.xl}` | 16px | Larger feature panels. |

| `{rounded.full}` | 9999px | Pills, status dots, contributor avatars. |

Photography Geometry

Components

Buttons

**`button-primary`** — white CTA

**`button-ghost`** — translucent CTA

**`button-outline`** — outlined CTA

Cards & Containers

**`hero-stripe`** — full-bleed hero

**`feature-card`** — feature highlight card

**`feature-card-bordered`** — outlined feature card

**`pricing-tier`** — pricing tier card

**`pricing-tier-featured`** — recommended tier

**`code-window`** — code well

**`code-tab`** — code language tab

**`email-mockup`** — email-card inset

Inputs & Forms

**`text-input`** — default input

Navigation

**`nav-bar`** — top nav (desktop)

**`nav-bar`** (mobile)

**`sub-nav-pill`** — pill-style sub-nav

Signature Components

**`badge-pill`** — neutral pill

**`status-dot`** — status indicator

**`contributor-avatar`** — testimonial avatar

**`footer`** — global footer

Do's and Don'ts

Do

Don't

Responsive Behavior

Breakpoints

| Name | Width | Key Changes |

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

| Desktop XL | ≥ 1440px | Full max-width 1200 body, 3-up feature grid, side-by-side code-story splits. |

| Desktop | 1280–1439px | Container shrinks; xl side padding. |

| Tablet Large | 1024–1279px | Feature grid stays 3-up, code-story remains 2-up. |

| Tablet | 768–1023px | Feature grid 2-up, code-story stacks (narrative on top), pricing stacks vertically. |

| Mobile Large | 426–767px | Feature grid 1-up; nav collapses to hamburger; hero `{typography.display-xxl}` clamps to 56px. |

| Mobile | ≤ 425px | All grids 1-up, hero clamps to 44px, section padding `{spacing.section}` collapses to 64px. |

Touch Targets

Collapsing Strategy

Image Behavior

Iteration Guide

1. Focus on ONE component at a time. Most surfaces share `{colors.surface-card}` or `{colors.surface-elevated}` with `{rounded.lg}` — only the role-specific tokens (`{colors.primary}`, `{component.code-window}`) shift between variants.

2. Reference component names and tokens directly (`{colors.primary}`, `{component.button-primary-pressed}`, `{rounded.lg}`) — do not paraphrase.

3. Run `npx @google/design.md lint DESIGN.md` after edits; orphaned-tokens warnings will catch unused entries.

4. Add new variants as separate entries (`-pressed`, `-featured`, `-disabled`) — do not bury them in prose.

5. Default body type to `{typography.body-md}`; reach for `{typography.subtitle}` only on hero subtitles.

6. Keep `{colors.primary}` (white) scarce — if more than one solid white surface appears per viewport, ask whether one should drop to `{component.button-ghost}` instead.

Known Gaps