---
version: alpha
name: Resend-design-analysis
description: |
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 rely on subtle 6–9% opacity gradient
glows, hairline 1px borders made from translucent white, and a strict
rounded-12px container vocabulary. There is no decorative chrome — just
type, code, and atmospheric depth.
colors:
primary: "#fcfdff"
primary-on: "#000000"
ink: "#fcfdff"
body: "rgba(252,253,255,0.86)"
charcoal: "rgba(252,253,255,0.7)"
mute: "#a1a4a5"
ash: "#888e90"
stone: "#464a4d"
on-light: "#000000"
on-light-mute: "rgba(0,0,51,0.7)"
canvas: "#000000"
surface-card: "#0a0a0c"
surface-elevated: "#101012"
surface-deep: "#06060a"
hairline: "rgba(255,255,255,0.06)"
hairline-strong: "rgba(255,255,255,0.14)"
divider-soft: "rgba(255,255,255,0.04)"
accent-orange: "#ff801f"
accent-orange-glow: "rgba(255,89,0,0.22)"
accent-yellow: "#ffc53d"
accent-blue: "#3b9eff"
accent-blue-glow: "rgba(0,117,255,0.34)"
accent-green: "#11ff99"
accent-green-glow: "rgba(34,255,153,0.18)"
accent-red: "#ff2047"
accent-red-glow: "rgba(255,32,71,0.34)"
link: "#3b9eff"
surface-light: "#f1f7fe"
typography:
display-xxl:
fontFamily: Domaine Display
fontSize: 96px
fontWeight: 400
lineHeight: 1.0
letterSpacing: -0.96px
fontFeature: "ss01, ss04, ss11"
display-xl:
fontFamily: Domaine Display
fontSize: 76.8px
fontWeight: 400
lineHeight: 1.0
letterSpacing: -0.768px
fontFeature: "ss01, ss04, ss11"
display-lg:
fontFamily: ABC Favorit
fontSize: 56px
fontWeight: 400
lineHeight: 1.2
letterSpacing: -2.8px
fontFeature: "ss01, ss04, ss11"
heading-md:
fontFamily: Inter
fontSize: 24px
fontWeight: 500
lineHeight: 1.5
letterSpacing: -0.4px
heading-sm:
fontFamily: Inter
fontSize: 20px
fontWeight: 500
lineHeight: 1.3
letterSpacing: -0.3px
subtitle:
fontFamily: ABC Favorit
fontSize: 20px
fontWeight: 400
lineHeight: 1.3
fontFeature: "ss01, ss04, ss11"
body-lg:
fontFamily: Inter
fontSize: 18px
fontWeight: 400
lineHeight: 1.5
body-md:
fontFamily: ABC Favorit
fontSize: 16px
fontWeight: 400
lineHeight: 1.5
letterSpacing: -0.8px
fontFeature: "ss01, ss04, ss11"
body-sm:
fontFamily: Inter
fontSize: 14px
fontWeight: 400
lineHeight: 1.43
button-md:
fontFamily: Inter
fontSize: 14px
fontWeight: 500
lineHeight: 1.43
button-sm:
fontFamily: ABC Favorit
fontSize: 14px
fontWeight: 500
lineHeight: 1.43
letterSpacing: 0.35px
fontFeature: "ss01, ss03, ss04"
caption:
fontFamily: Inter
fontSize: 12px
fontWeight: 400
lineHeight: 1.5
caption-emph:
fontFamily: Helvetica
fontSize: 14px
fontWeight: 600
lineHeight: 1.0
code-md:
fontFamily: Geist Mono
fontSize: 13px
fontWeight: 400
lineHeight: 1.6
rounded:
none: 0px
xs: 4px
sm: 6px
md: 8px
lg: 12px
xl: 16px
full: 9999px
spacing:
xxs: 2px
xs: 4px
sm: 8px
md: 12px
lg: 16px
xl: 24px
xxl: 32px
xxxl: 48px
section: 96px
band: 128px
components:
button-primary:
backgroundColor: "{colors.primary}"
textColor: "{colors.primary-on}"
typography: "{typography.button-md}"
rounded: "{rounded.md}"
padding: 8px 16px
height: 36px
button-primary-pressed:
backgroundColor: "{colors.surface-light}"
textColor: "{colors.primary-on}"
typography: "{typography.button-md}"
rounded: "{rounded.md}"
button-ghost:
backgroundColor: "{colors.surface-elevated}"
textColor: "{colors.ink}"
typography: "{typography.button-md}"
rounded: "{rounded.md}"
padding: 8px 16px
height: 36px
button-outline:
backgroundColor: "{colors.canvas}"
textColor: "{colors.ink}"
typography: "{typography.button-md}"
rounded: "{rounded.md}"
padding: 7px 15px
height: 36px
text-input:
backgroundColor: "{colors.surface-card}"
textColor: "{colors.ink}"
typography: "{typography.body-sm}"
rounded: "{rounded.md}"
padding: 10px 14px
height: 40px
hero-stripe:
backgroundColor: "{colors.canvas}"
textColor: "{colors.ink}"
typography: "{typography.display-xxl}"
rounded: "{rounded.none}"
padding: 96px 32px
feature-card:
backgroundColor: "{colors.surface-card}"
textColor: "{colors.ink}"
typography: "{typography.body-md}"
rounded: "{rounded.lg}"
padding: 32px
feature-card-bordered:
backgroundColor: "{colors.surface-card}"
textColor: "{colors.ink}"
typography: "{typography.body-md}"
rounded: "{rounded.lg}"
padding: 32px
pricing-tier:
backgroundColor: "{colors.surface-card}"
textColor: "{colors.ink}"
typography: "{typography.body-md}"
rounded: "{rounded.lg}"
padding: 32px
pricing-tier-featured:
backgroundColor: "{colors.surface-elevated}"
textColor: "{colors.ink}"
typography: "{typography.body-md}"
rounded: "{rounded.lg}"
padding: 32px
code-window:
backgroundColor: "{colors.surface-deep}"
textColor: "{colors.body}"
typography: "{typography.code-md}"
rounded: "{rounded.lg}"
padding: 24px
code-tab:
backgroundColor: "{colors.surface-card}"
textColor: "{colors.charcoal}"
typography: "{typography.code-md}"
rounded: "{rounded.sm}"
padding: 6px 12px
email-mockup:
backgroundColor: "{colors.surface-card}"
textColor: "{colors.ink}"
typography: "{typography.body-md}"
rounded: "{rounded.lg}"
padding: 0
badge-pill:
backgroundColor: "{colors.surface-elevated}"
textColor: "{colors.body}"
typography: "{typography.caption}"
rounded: "{rounded.full}"
padding: 4px 10px
status-dot:
backgroundColor: "{colors.accent-green}"
rounded: "{rounded.full}"
size: 8px
nav-bar:
backgroundColor: "{colors.canvas}"
textColor: "{colors.body}"
typography: "{typography.button-sm}"
rounded: "{rounded.none}"
height: 64px
sub-nav-pill:
backgroundColor: "{colors.surface-elevated}"
textColor: "{colors.body}"
typography: "{typography.button-sm}"
rounded: "{rounded.full}"
padding: 6px 14px
contributor-avatar:
backgroundColor: "{colors.surface-card}"
rounded: "{rounded.full}"
size: 32px
footer:
backgroundColor: "{colors.canvas}"
textColor: "{colors.charcoal}"
typography: "{typography.body-sm}"
rounded: "{rounded.none}"
padding: 64px 32px
---
Overview
Section 01Resend 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
Section 02Brand & Accent
Section 03Surface
Section 04Text
Section 05Semantic
Section 06Typography
Section 07Font Family
Section 08Resend 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
Section 09| 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
Section 010Note on Font Substitutes
Section 011When 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
Section 012Spacing System
Section 013Grid & Container
Section 014Whitespace Philosophy
Section 015Elevation & Depth
Section 016| 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
Section 017Shapes
Section 018Border Radius Scale
Section 019| 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
Section 020Components
Section 021Buttons
Section 022**`button-primary`** — white CTA
**`button-ghost`** — translucent CTA
**`button-outline`** — outlined CTA
Cards & Containers
Section 023**`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
Section 024**`text-input`** — default input
Navigation
Section 025**`nav-bar`** — top nav (desktop)
**`nav-bar`** (mobile)
**`sub-nav-pill`** — pill-style sub-nav
Signature Components
Section 026**`badge-pill`** — neutral pill
**`status-dot`** — status indicator
**`contributor-avatar`** — testimonial avatar
**`footer`** — global footer
Do's and Don'ts
Section 027Do
Section 028Don't
Section 029Responsive Behavior
Section 030Breakpoints
Section 031| 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
Section 032Collapsing Strategy
Section 033Image Behavior
Section 034Iteration Guide
Section 0351. 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.