--- version: alpha name: Resend 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 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:** - Pure black canvas (`{colors.canvas}` — `#000000`) on every public page; off-white text (`{colors.ink}` — `#fcfdff`) carries the full read. - A serif-led type system: **Domaine Display** at 76–96px for hero headlines, **ABC Favorit** for marketing body, **Inter** for UI, **Geist Mono** for code. - Six accent glow colours used only as low-opacity atmospheric washes (`{colors.accent-orange}`, `{colors.accent-blue}`, `{colors.accent-green}`, `{colors.accent-red}`, `{colors.accent-yellow}`) — never as buttons or solid surfaces. - Strict container vocabulary: `{rounded.lg}` (12px) for feature cards, code wells, and email mockups; `{rounded.md}` (8px) for buttons; `{rounded.full}` for pills and avatars. - Translucent white borders (`{colors.hairline}` 6% / `{colors.hairline-strong}` 14%) replace shadows entirely — the system has no traditional drop-shadow elevation language. - `{component.button-primary}` is a small white rectangle with black text — counterintuitive contrast that becomes the page's brightest pixel and works as a single visual anchor. ## Colors ### Brand & Accent - **Primary White** (`{colors.primary}` — `#fcfdff`): the brand's de facto accent. Reserved for `{component.button-primary}` (white pill on black canvas), Domaine display headlines, and the active text colour. White is the loudest possible colour on this canvas — that's the signature. - **Primary On** (`{colors.primary-on}` — `#000000`): label colour on top of `{colors.primary}` surfaces. Black text on white pill is the brand's CTA pattern. - **Surface Light** (`{colors.surface-light}` — `#f1f7fe`): a subtle blue-tinted off-white used as the active/pressed state of `{component.button-primary}`. ### Surface - **Canvas** (`{colors.canvas}` — `#000000`): the default page background. True black, never near-black. - **Surface Card** (`{colors.surface-card}` — `#0a0a0c`): the standard inset card surface, just lighter than canvas to register a step up in elevation. - **Surface Elevated** (`{colors.surface-elevated}` — `#101012`): a second elevation step used on featured pricing tiers and ghost button surfaces. - **Surface Deep** (`{colors.surface-deep}` — `#06060a`): code window background — slightly cooler and darker than the canvas itself, suggesting depth via temperature. - **Hairline** (`{colors.hairline}` — `rgba(255,255,255,0.06)`): the soft 1px translucent-white divider used between rows and around feature cards. - **Hairline Strong** (`{colors.hairline-strong}` — `rgba(255,255,255,0.14)`): the structural 1px border on cards, code wells, and form inputs. - **Divider Soft** (`{colors.divider-soft}` — `rgba(255,255,255,0.04)`): low-contrast dividers between footer columns. ### Text - **Ink** (`{colors.ink}` — `#fcfdff`): primary text colour on the dark canvas. Faintly blue-cool to feel like printed paper rather than pure white pop. - **Body** (`{colors.body}` — `rgba(252,253,255,0.86)`): long-form body text where pure ink would feel too sharp. - **Charcoal** (`{colors.charcoal}` — `rgba(252,253,255,0.7)`): captions, secondary nav labels. - **Mute** (`{colors.mute}` — `#a1a4a5`): supporting text and inactive labels. - **Ash** (`{colors.ash}` — `#888e90`): tertiary text, footer copy. - **Stone** (`{colors.stone}` — `#464a4d`): disabled foreground. - **On-Light** (`{colors.on-light}` — `#000000`): label colour inside the rare email-mockup white cards. - **On-Light Mute** (`{colors.on-light-mute}` — `rgba(0,0,51,0.7)`): secondary text inside email mockups. ### Semantic - **Accent Orange** (`{colors.accent-orange}` — `#ff801f`) + glow (`{colors.accent-orange-glow}` — `rgba(255,89,0,0.22)`): atmospheric warm wash anchored to "Email reimagined" / customer story sections. Solid orange never appears as a button or surface — only the glow. - **Accent Yellow** (`{colors.accent-yellow}` — `#ffc53d`): used in inline highlight strokes and "first-class developer experience" key callouts. - **Accent Blue** (`{colors.accent-blue}` — `#3b9eff`) + glow (`{colors.accent-blue-glow}` — `rgba(0,117,255,0.34)`): inline link colour and the cool atmospheric wash on the "Integrate this weekend" section. - **Accent Green** (`{colors.accent-green}` — `#11ff99`) + glow (`{colors.accent-green-glow}` — `rgba(34,255,153,0.18)`): success status dots and the "delivery confirmed" feature glow. - **Accent Red** (`{colors.accent-red}` — `#ff2047`) + glow (`{colors.accent-red-glow}` — `rgba(255,32,71,0.34)`): inline error red and the "reach humans, not spam folders" attention wash. - **Link** (`{colors.link}` — `#3b9eff`): inline link colour — same as accent blue. ## Typography ### Font Family Resend ships a four-family stack: - **Domaine Display** — proprietary editorial serif used exclusively for hero headlines at 76px+, with `ss01 / ss04 / ss11` stylistic sets engaged for a slightly tighter, more print-magazine look. - **ABC Favorit** — proprietary humanist sans-serif used for marketing body copy, hero subtitles, and pill labels. Carries `ss01 / ss03 / ss04` features for tabular figures and alternate glyphs. - **Inter** — open-source sans-serif used for UI: button labels, captions, card body text, nav links. - **Geist Mono** — open-source monospace used in code wells. 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 - Display sizes always run at `lineHeight: 1.0` with negative letter-spacing — the Domaine Display headlines pack into solid typographic blocks rather than open prose lines. - Body weight stays at 400 across `{typography.body-lg}` and `{typography.body-md}`. The serif/sans family change carries hierarchy, not weight bumps. - ABC Favorit always runs with `ss01 / ss04 / ss11` engaged; Inter never carries OpenType features. Code in Geist Mono never carries ligatures. - Inline links use `{typography.button-sm}` with positive letter-spacing (`0.35px`) and ABC Favorit — the small spacing nudge gives interactive prose its precision. ### 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 - **Base unit**: 4px, with the working scale on multiples of 4 / 8 / 16. - **Tokens**: `{spacing.xxs}` 2px · `{spacing.xs}` 4px · `{spacing.sm}` 8px · `{spacing.md}` 12px · `{spacing.lg}` 16px · `{spacing.xl}` 24px · `{spacing.xxl}` 32px · `{spacing.xxxl}` 48px · `{spacing.section}` 96px · `{spacing.band}` 128px. - Section padding: `{spacing.section}` (96px) vertical between bands; `{spacing.band}` (128px) on the hero stripe and closing footer transition. - Card internal padding: `{spacing.xxl}` (32px) on `{component.feature-card}`, `{component.pricing-tier}`, and `{component.code-window}`. ### Grid & Container - **Max content width** ≈ 1200px on body sections. - **Feature grid**: 3 columns at desktop, 2 at tablet, 1 at mobile. - **Pricing**: 3-tier grid centred at desktop; centre tier promotes to `{component.pricing-tier-featured}` (one-step-elevated surface). - **Code-story splits**: a 2-up split — narrative copy left, `{component.code-window}` right — collapsing to stacked at < 1024px. - **Email mockup band**: a single white card (640px max width) centred in the dark canvas with generous vertical padding to read like a print magazine inset. ### Whitespace Philosophy - Whitespace is editorial and generous — full-bleed sections breathe at 96–128px so Domaine Display headlines have room to register at scale. - Inside cards, padding stays at 32px so feature copy and code wells have a consistent rhythm with the outer grid. - Hairline `{colors.hairline}` and `{colors.hairline-strong}` carry the role drop shadows would in a brighter system; the dark canvas suppresses traditional shadow depth entirely. ## 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 - **Atmospheric section glows** — six accent colours each with a paired glow token (orange, yellow, blue, green, red, plus a deep slate for "everything in your context"). Each section opens with a single radial wash anchored at the top edge of the section, falling off to canvas black within ~600px vertical distance. Never two glows in the same section. - **Email card insets** — the "Beyond experience" mockup band lifts a single white email card off the black canvas, giving it the only true light-on-dark contrast in the system. The card uses no shadow; the contrast itself is the elevation. - **Code window traffic lights** — `{component.code-window}` shells include a row of three coloured dots (red `{colors.accent-red}`, yellow `{colors.accent-yellow}`, green `{colors.accent-green}`) at the top — the only place all three semantic colours appear together as solid surfaces. ## 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 - The system uses almost no photography. Visual interest comes from typography + atmospheric glows + code wells + the white email-card insets. - When portraits appear (testimonial avatars), they are circular (`{rounded.full}`) at 32px, sitting inline with body copy. - Email mockup cards run at 4:5 portrait aspect with `{rounded.lg}` corners. ## Components ### Buttons **`button-primary`** — white CTA - Background `{colors.primary}`, label `{colors.primary-on}`, type `{typography.button-md}`, padding `8px 16px`, `rounded: {rounded.md}`, height 36px. - The brightest pixel on the canvas. Used for "Get started", "Sign up", "Try Resend". - Pressed state lives in `button-primary-pressed` (background `{colors.surface-light}`). **`button-ghost`** — translucent CTA - Background `{colors.surface-elevated}`, label `{colors.ink}`, 1px `{colors.hairline-strong}`, type `{typography.button-md}`, `rounded: {rounded.md}`, height 36px. - Equal-weight secondary action paired with `{component.button-primary}`. **`button-outline`** — outlined CTA - Background `{colors.canvas}`, label `{colors.ink}`, 1px `{colors.hairline-strong}`, type `{typography.button-md}`, `rounded: {rounded.md}`, height 36px. - Tertiary action; appears on its own next to inline links. ### Cards & Containers **`hero-stripe`** — full-bleed hero - Background `{colors.canvas}`, text `{colors.ink}`, type `{typography.display-xxl}` for the headline, padding `96px 32px`, `rounded: {rounded.none}`. - Used only on the home page hero band; carries the 96px Domaine Display headline and a single `{component.button-primary}` CTA. No photography, no atmospheric glow inside the hero itself — the glow appears on the section that follows. **`feature-card`** — feature highlight card - Background `{colors.surface-card}`, text `{colors.ink}`, type `{typography.body-md}`, `rounded: {rounded.lg}`, padding `{spacing.xxl}` (32px). - Used in the home grid: "Despite emails using React", "So beyond editing", etc. No outline by default — relies on canvas black contrast. **`feature-card-bordered`** — outlined feature card - Background `{colors.surface-card}`, text `{colors.ink}`, 1px `{colors.hairline-strong}`, type `{typography.body-md}`, `rounded: {rounded.lg}`, padding `{spacing.xxl}`. - Used when feature cards sit close together and need explicit separation. **`pricing-tier`** — pricing tier card - Background `{colors.surface-card}`, text `{colors.ink}`, 1px `{colors.hairline-strong}`, type `{typography.body-md}`, `rounded: {rounded.lg}`, padding `{spacing.xxl}` (32px). - Tier name in `{typography.heading-md}` + price in `{typography.display-lg}` (ABC Favorit, 56px). **`pricing-tier-featured`** — recommended tier - Background `{colors.surface-elevated}`, text `{colors.ink}`, 1px `{colors.hairline-strong}`, type `{typography.body-md}`, `rounded: {rounded.lg}`, padding `{spacing.xxl}`. - Centre tier elevated by surface luminance, not by colour. **`code-window`** — code well - Background `{colors.surface-deep}`, text `{colors.body}`, type `{typography.code-md}`, 1px `{colors.hairline-strong}`, `rounded: {rounded.lg}`, padding `{spacing.xl}` (24px). - Includes a 3-dot traffic-light row at top using `{colors.accent-red}` / `{colors.accent-yellow}` / `{colors.accent-green}` for chrome, plus a tab strip below it. **`code-tab`** — code language tab - Background `{colors.surface-card}`, text `{colors.charcoal}`, type `{typography.code-md}`, `rounded: {rounded.sm}`, padding `6px 12px`. - Active tab bumps text to `{colors.ink}` and adds a subtle `{colors.hairline-strong}` underline. **`email-mockup`** — email-card inset - Background `{colors.surface-card}` (or the rare `#ffffff` when rendered as a light-island inset), text `{colors.ink}` (or `{colors.on-light}` for white insets), type `{typography.body-md}`, `rounded: {rounded.lg}`, padding 0. - Used in the "Beyond experience" band to demonstrate rendered email output. ### Inputs & Forms **`text-input`** — default input - Background `{colors.surface-card}`, text `{colors.ink}`, type `{typography.body-sm}`, 1px `{colors.hairline-strong}`, `rounded: {rounded.md}`, padding `10px 14px`, height 40px. - Sign-up and waitlist email fields. Focus state thickens the border to `{colors.ink}` (no separate ring colour). ### Navigation **`nav-bar`** — top nav (desktop) - Background `{colors.canvas}`, text `{colors.body}`, type `{typography.button-sm}`, height 64px, single hairline `{colors.hairline}` bottom border. - Left: wordmark logo. Centre: top-level nav ("Features", "Pricing", "Docs", "Customers"). Right: "Sign in" link + `{component.button-primary}`. **`nav-bar`** (mobile) - Same height 64px, collapses centre nav into a hamburger icon. Logo stays left, sign-in CTA stays right. **`sub-nav-pill`** — pill-style sub-nav - Pill chips set in a horizontal row above content (e.g. on the customers index), `{component.sub-nav-pill}` styling. ### Signature Components **`badge-pill`** — neutral pill - Background `{colors.surface-elevated}`, text `{colors.body}`, type `{typography.caption}`, `rounded: {rounded.full}`, padding `4px 10px`. - Inline tags ("New", "Beta", "v3.0") inside hero copy and customer story headers. **`status-dot`** — status indicator - Background `{colors.accent-green}`, `rounded: {rounded.full}`, 8px square. - Inline indicator next to "Status: Operational" in the footer or system status references. **`contributor-avatar`** — testimonial avatar - Background `{colors.surface-card}` placeholder, `rounded: {rounded.full}`, 32×32px. - Used inline with customer testimonials. **`footer`** — global footer - Background `{colors.canvas}`, text `{colors.charcoal}`, type `{typography.body-sm}`, `rounded: {rounded.none}`, padding `64px 32px`. - Multi-column quick-links grid above a single-line copyright row separated by `{colors.divider-soft}`. ## Do's and Don'ts ### Do - Use `{colors.canvas}` (true black) as the default page background. Every public page lives here. - Reserve `{component.button-primary}` (white pill) as the only solid bright surface. One per viewport at most. - Set hero headlines in **Domaine Display** at 76–96px with `lineHeight: 1.0` and `ss01 / ss04 / ss11` features engaged. - Use **ABC Favorit** for marketing body, **Inter** for UI labels, **Geist Mono** for code. Keep the lanes strict. - Build elevation from translucent-white hairlines, not drop shadows. - Use `{colors.accent-*-glow}` tokens as low-opacity radial atmospheric washes — never as solid surfaces. - Set buttons and inputs to `{rounded.md}` (8px); cards and code wells to `{rounded.lg}` (12px); pills and avatars to `{rounded.full}`. - Use the white email-mockup inset sparingly — it's the only deliberately-light surface and should feel like a print pull-quote. ### Don't - Don't use a near-black canvas. The brand sits on `#000000`, not `#0a0a0a`. - Don't apply solid colour to atmospheric accent tokens. `{colors.accent-orange}` is for inline highlights only — its glow form is for backdrops. - Don't add drop shadows to feature cards or code wells. Translucent white borders carry depth on this canvas. - Don't bump body weight to 600 for emphasis. Use family change (Inter → ABC Favorit → Domaine Display) instead. - Don't render code outside `{component.code-window}` — even small inline code uses Geist Mono and a `{colors.surface-card}` background. - Don't loosen Domaine Display `lineHeight` past 1.0. Tight stacking is structural to the brand. - Don't introduce a secondary brand accent. White is the brand on black — accents are atmospheric only. - Don't bring photography front-and-centre. The brand reads as type-and-code, not photography-led. ## 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 - All buttons ship at minimum 36px tall on desktop, scaling to 44px on mobile via padding adjustment. WCAG AAA met on mobile. - `{component.text-input}` is 40px tall — comfortable but not large. Mobile scales to 48px via padding. - `{component.sub-nav-pill}` stays at 36px on desktop, 40px on mobile. ### Collapsing Strategy - Top-level nav collapses to hamburger at < 1024px; the wordmark and `{component.button-primary}` stay anchored. - Hero `{typography.display-xxl}` clamps: 96px → 76px → 56px → 44px across the breakpoint ladder. - Pricing 3-up stacks vertically at < 1024px with the featured tier remaining centre-stacked. - Code-story splits switch from side-by-side to stacked at < 1024px, code well always second. - Atmospheric glows scale with section width but maintain the same opacity — they fade naturally at small viewports. ### Image Behavior - Email mockup cards reflow at 1:1 aspect on mobile to remain readable. - Atmospheric glows are CSS gradients — no asset cost, no breakpoint variation. - Customer testimonial avatars stay 32px circular regardless of breakpoint. ## 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 - Pressed/active visual states are documented only for `button-primary-pressed`; other components rely on the default focus-ring (browser default) for interactive feedback. - Logged-in dashboard surfaces (API keys, sending logs, audience management) are out of scope; only the public marketing canvas is documented. - Email-template editor surfaces (a key product feature) are not extracted — those live behind authentication. - The atmospheric glow rendering uses CSS radial gradients; exact stops and angles vary per section and are not standardised as tokens — render per section-specific design judgment.