light · sans · structured · data · analytics

DESIGN.md inspired by Amplitude

Light-canvas digital-analytics surface — IBM Plex Sans, grey #565656 body, black full-pill CTAs and a signature #1e61f0 blue.

By webdesignhot · amplitude.com
$ npx @webdesignhot/design-md add amplitude
Learn more about the CLI
Compare to…
try on →
theme
1440 × 900
mobile · 390 × 844
Tokens webdesignhot/0.1
  • bg #ffffff
  • bg-soft #f7f8f9
  • bg-cool #f2f4f7
  • surface #ffffff
  • surface-hover #f7f8f9
  • bg-dark #1a1f23
  • bg-deep #0c0e10
  • text AAA · 7.3 #565656
  • text-strong #000000
  • text-muted #6e6e6e
  • text-soft #8a8a8a
  • text-faint — · 2.4 #a8a8a8
  • text-on-dark #ffffff
  • text-on-dark-muted #b4b8bc
  • brand AA · 5.2 #1e61f0
  • brand-hover #1850cf
  • brand-deep #1543ad
  • brand-soft #eaf0fe
  • brand-tint rgba(30, 97, 240, 0.10)
  • link #1e61f0
  • link-hover #1850cf
  • cta-black #000000
  • cta-black-hover #1a1f23
  • on-cta-black #ffffff
  • on-brand #ffffff
  • border — · 1.3 #e3e6ea
  • border-soft #eef0f3
  • border-strong — · 1.5 #cfd4da
  • border-dark rgba(255,255,255,0.12)
  • success #1f9d57
  • warning #c77700
  • danger #d33b3b
  • info #1e61f0
Typography
Ship faster than ever.
display-hero IBM Plex Sans 72px w700 -0.03em
Ship faster than ever.
display-lg IBM Plex Sans 60px w700 -0.025em
Ship faster than ever.
h1 IBM Plex Sans 60px w700 -0.022em
Built for teams that ship.
h2 IBM Plex Sans 44px w600 -0.018em
The quick brown fox jumps over the lazy dog.
metric-value IBM Plex Sans 40px w700 -0.02em
A complete kit
h3 IBM Plex Sans 32px w600 -0.012em
The quick brown fox jumps over the lazy dog.
h4 IBM Plex Sans 24px w600 -0.006em
The quick brown fox jumps over the lazy dog.
h5 IBM Plex Sans 20px w600 0
The quick brown fox jumps over the lazy dog.
body-lg IBM Plex Sans 18px w400 0
The quick brown fox jumps over the lazy dog.
body IBM Plex Sans 16px w400 0
The quick brown fox jumps over the lazy dog.
body-medium IBM Plex Sans 16px w500 0
The quick brown fox jumps over the lazy dog.
body-sm IBM Plex Sans 14px w400 0
npx @webdesignhot/design-md add stripe
code-inline IBM Plex Mono 14px w400 0
OUR DESIGN SYSTEM
label IBM Plex Sans 13px w500 0.01em
npx @webdesignhot/design-md add stripe
code-block IBM Plex Mono 13px w400 0
OUR DESIGN SYSTEM
caption IBM Plex Sans 12px w500 0.02em
The quick brown fox jumps over the lazy dog.
eyebrow IBM Plex Sans 12px w600 0.08em
The quick brown fox jumps over the lazy dog.
chart-tick IBM Plex Mono 11px w500 0
Spacing
  • step-0 0px
  • step-1 4px
  • step-2 8px
  • step-3 12px
  • step-4 16px
  • step-5 24px
  • step-6 32px
  • step-7 48px
  • step-8 64px
  • step-9 96px
  • step-10 128px
Radius
  • micro 2px
  • sm 4px
  • md 6px
  • button 6px
  • lg 8px
  • card 8px
  • xl 12px
  • pill 9999px
Components
Text link →
Card preview A complete kit — everything your product needs. Hero, pricing, FAQ, dashboard, docs — every layout your product needs.
New Stable v1.0
Design roles 7/8 mapped · webdesignhot/0.1

Maps the 8 canonical role names to this entry's actual tokens. Use these to plug the design into role-aware tools — shadcn/ui themes, role-aware Tailwind plugins, atelier-lint — without hard-coding token names.

  • background bg
  • foreground text
  • primary brand
  • primary-foreground on-brand
  • accent
  • muted text-muted
  • border border
  • ring brand
Lineage & influences

Amplitude''s marketing surface is a bright white-canvas analytics page that reads as a clean technical document rather than a branded campaign. The type system is **IBM Plex Sans** — the IBM-commissioned humanist grotesque designed by Mike Abbink and Bold Monday — which carries a neutral, engineering-credible register: it reads as "made by people who care about systems" rather than "made by a marketing team." Headlines hit 60px at weight 700 in black `#000`, body copy runs at a soft warm grey `#565656`, and the whole page stays monochrome until the signature `#1e61f0` blue appears as the interactive accent — the checkbox-checked colour, the link colour, the focus ring. The primary CTA inverts the usual SaaS playbook: rather than fill the button with brand blue, Amplitude ships a pure-black full-pill (`9999px`) "Get started", reserving the blue for smaller interactive moments. This is the discipline of a data product — colour is signal, not decoration. The black pill borrows the confident monochrome CTA from Vercel and Linear; the white-canvas density and structured feature grids echo Datadog and the broader observability-marketing playbook; and the choice of Plex over a proprietary face signals "open, technical, neutral" the way Datadog''s custom NationalWeb signals "enterprise-bespoke". The result is a surface that feels measured and quantitative — every chromatic decision earns its place, and the one bold colour is spent on the one thing that matters: the action the user is meant to take.

  • Foundation typeface — humanist grotesque commissioned by IBM, neutral engineering register across display and body
  • Monochrome black full-pill primary CTA, white-canvas restraint, single-accent discipline
  • Adjacent data-product marketing — white canvas, structured feature grids, charts-as-proof density
  • Tight-tracking 60px+ display headlines, near-monochrome palette with a single saturated accent
  • Direct product-analytics competitor — useful contrast for how blue accent and metric-card register are deployed
Export 4 formats · paste-ready
Tailwind

theme.extend block for tailwind.config.js

tailwind.config.js
CSS variables

:root { --bg, --text, --brand, … } you can paste anywhere

design.css
DTCG JSON

W3C Design Tokens Community Group format

design.tokens.json
Figma Variables

Importable into Figma → Variables → Import

figma-variables.json
The file
---
name: Amplitude
tagline: 'Light-canvas digital-analytics surface — IBM Plex Sans, grey #565656 body, black full-pill CTAs and a signature #1e61f0 blue.'
updated_at: 2026-05-29T21:44:39.784Z
published_at: 2026-05-29T21:44:39.784Z
author: webdesignhot
source_url: https://amplitude.com
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [saas, dev-tools]
tags: [light, sans, structured, data, analytics]
preview_swatch: ['#ffffff', '#1e61f0', '#000000']
related: [datadog, vercel, linear]
description: 'Amplitude''s marketing surface is a bright white-canvas analytics product page built on **IBM Plex Sans** — the IBM-commissioned humanist-grotesque that reads as engineering-neutral rather than branded. Body copy runs at a soft grey `#565656` over `#ffffff`, headlines hit 60px at weight 700, and the primary CTA is a pure-black full-pill (`9999px`) "Get started". The signature is a confident `#1e61f0` blue — the checkbox / interactive accent — applied with restraint against an otherwise monochrome black-and-grey type system. Structured, data-forward, and chromatically disciplined: a digital-analytics platform dressed as a clean technical document.'


# Canonical 8-role aliases (bg / text / brand / border / accent / muted / surface / danger).
# Maps role names to this entry's actual token names so role-aware
# downstream tools resolve `theme.background` → entry's `bg`, etc.
# Auto-generated by scripts/add-aliases.mjs — do not edit manually;
# regenerate after changing color token names.
aliases:
  background: bg
  foreground: text
  primary: brand
  primary-foreground: on-brand
  muted: text-muted
  border: border
  ring: brand
colors:
  bg: '#ffffff'                   # body canvas, paper white
  bg-soft: '#f7f8f9'              # secondary section band, faint cool tint
  bg-cool: '#f2f4f7'             # alternation band, slightly cooler
  surface: '#ffffff'             # raised card panel — white card on tinted band
  surface-hover: '#f7f8f9'       # subtle row / card hover state
  bg-dark: '#1a1f23'             # dark CTA / dark section band (Solutions CTA)
  bg-deep: '#0c0e10'             # deeper dark band, footer floor
  text: '#565656'               # primary body copy — soft warm grey
  text-strong: '#000000'        # headline-grade black (--color-text-primary)
  text-muted: '#6e6e6e'         # secondary copy, slightly lighter than body
  text-soft: '#8a8a8a'          # captions, metadata
  text-faint: '#a8a8a8'         # disabled, very low priority
  text-on-dark: '#ffffff'       # text on dark CTA / dark section
  text-on-dark-muted: '#b4b8bc' # secondary text on dark
  brand: '#1e61f0'              # signature blue — interactive accent (--color-checkbox-checked)
  brand-hover: '#1850cf'        # pressed / hover state for blue surfaces
  brand-deep: '#1543ad'         # deepest variant, active state
  brand-soft: '#eaf0fe'         # tinted blue surface for callouts / selection
  brand-tint: 'rgba(30, 97, 240, 0.10)'  # ambient blue tint for focus rings
  link: '#1e61f0'              # links inherit brand blue
  link-hover: '#1850cf'
  cta-black: '#000000'         # the primary "Get started" pill fill
  cta-black-hover: '#1a1f23'   # hover darkens toward dark-section grey
  on-cta-black: '#ffffff'
  on-brand: '#ffffff'
  border: '#e3e6ea'            # cool-grey hairline, default card edge
  border-soft: '#eef0f3'       # softer divider
  border-strong: '#cfd4da'     # emphasised divider, input borders
  border-dark: 'rgba(255,255,255,0.12)'  # divider on dark surfaces
  success: '#1f9d57'           # green for positive metric / trend up
  warning: '#c77700'           # amber for threshold / caution
  danger: '#d33b3b'            # red for error / trend down
  info: '#1e61f0'             # informational — maps to brand blue

typography:
  display:
    family: 'IBM Plex Sans, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif'
    weights: [500, 600, 700]
    opentype-features: ['kern', 'liga']
  body:
    family: 'IBM Plex Sans, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif'
    weights: [400, 500, 600]
    opentype-features: ['kern', 'liga']
  mono:
    family: 'IBM Plex Mono, ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'
    weights: [400, 500]
    opentype-features: ['tnum', 'zero']
  scale:
    display-hero:    { size: 72, weight: 700, lineHeight: 1.0,  tracking: '-0.03em',  family: display, opentype: 'default' }
    display-lg:      { size: 60, weight: 700, lineHeight: 1.05, tracking: '-0.025em', family: display, opentype: 'default' }
    h1:              { size: 60, weight: 700, lineHeight: 1.05, tracking: '-0.022em', family: display, opentype: 'default' }
    h2:              { size: 44, weight: 600, lineHeight: 1.1,  tracking: '-0.018em', family: display, opentype: 'default' }
    h3:              { size: 32, weight: 600, lineHeight: 1.2,  tracking: '-0.012em', family: display, opentype: 'default' }
    h4:              { size: 24, weight: 600, lineHeight: 1.25, tracking: '-0.006em', family: display, opentype: 'default' }
    h5:              { size: 20, weight: 600, lineHeight: 1.3,  tracking: '0',        family: body,    opentype: 'default' }
    body-lg:         { size: 18, weight: 400, lineHeight: 1.55, tracking: '0',        family: body,    opentype: 'default' }
    body:            { size: 16, weight: 400, lineHeight: 1.55, tracking: '0',        family: body,    opentype: 'default' }
    body-medium:     { size: 16, weight: 500, lineHeight: 1.55, tracking: '0',        family: body,    opentype: 'default' }
    body-sm:         { size: 14, weight: 400, lineHeight: 1.5,  tracking: '0',        family: body,    opentype: 'default' }
    label:           { size: 13, weight: 500, lineHeight: 1.4,  tracking: '0.01em',   family: body,    opentype: 'default' }
    caption:         { size: 12, weight: 500, lineHeight: 1.4,  tracking: '0.02em',   family: body,    opentype: 'default' }
    eyebrow:         { size: 12, weight: 600, lineHeight: 1.3,  tracking: '0.08em',   family: body,    opentype: 'default', transform: uppercase }
    code-inline:     { size: 14, weight: 400, lineHeight: 1.5,  tracking: '0',        family: mono,    opentype: 'tnum' }
    code-block:      { size: 13, weight: 400, lineHeight: 1.6,  tracking: '0',        family: mono,    opentype: 'tnum' }
    chart-tick:      { size: 11, weight: 500, lineHeight: 1.2,  tracking: '0',        family: mono,    opentype: 'tnum' }
    metric-value:    { size: 40, weight: 700, lineHeight: 1.0,  tracking: '-0.02em',  family: display, opentype: 'tnum' }

radius:
  micro: 2
  sm: 4
  md: 6
  lg: 8
  xl: 12
  card: 8
  button: 6
  pill: 9999

spacing:
  base: 4
  scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128]

layout:
  page-width: 1280
  prose-width: 720
  feature-width: 1080
  header-height: 64
  gutter: 24
  section: 96

components:
  button-primary:
    bg: '#000000'
    text: '#ffffff'
    padding: '12px 24px'
    radius: 9999
    font: 'IBM Plex Sans 15/600'
    hover: 'bg #1a1f23'
    use: 'Get started — black full-pill primary CTA'
  button-dark:
    bg: '#1a1f23'
    text: '#ffffff'
    padding: '12px 20px'
    radius: 6
    font: 'IBM Plex Sans 15/600'
    hover: 'bg #0c0e10'
    use: 'Amplitude Solutions → — dark 6px secondary, with arrow'
  button-secondary:
    bg: '#ffffff'
    text: '#171717'
    border: '1px solid #cfd4da'
    padding: '12px 24px'
    radius: 9999
    font: 'IBM Plex Sans 15/600'
    hover: 'bg #f7f8f9'
    use: 'Sign Up — white outlined full-pill, paired with primary'
  button-brand:
    bg: '#1e61f0'
    text: '#ffffff'
    padding: '12px 24px'
    radius: 9999
    font: 'IBM Plex Sans 15/600'
    hover: 'bg #1850cf'
    use: 'rare blue-fill CTA on dark sections / in-product accents'
  button-link:
    bg: 'transparent'
    text: '#1e61f0'
    underline: 'on-hover'
    use: 'inline link CTA, "Learn more →"'
  card-feature:
    bg: '#ffffff'
    border: '1px solid #e3e6ea'
    radius: 8
    padding: '24px'
    shadow: 'none'
    use: 'feature grid card — hairline only, no shadow'
  card-elevated:
    bg: '#ffffff'
    border: '1px solid #e3e6ea'
    radius: 8
    padding: '24px'
    shadow: 'rgba(15,23,42,0.05) 0 8px 24px -6px'
    use: 'pricing card, customer-quote card with subtle lift'
  card-metric:
    bg: '#ffffff'
    border: '1px solid #e3e6ea'
    radius: 8
    padding: '20px'
    use: 'KPI / stat card — large tnum metric value over grey label'
  badge-tag:
    bg: '#eaf0fe'
    text: '#1543ad'
    radius: 9999
    padding: '2px 10px'
    font: 'IBM Plex Sans 12/600'
  input-text:
    bg: '#ffffff'
    border: '1px solid #cfd4da'
    radius: 6
    padding: '10px 14px'
    height: 40
    focus: '2px solid #1e61f0 + ring rgba(30,97,240,0.20)'
  checkbox:
    bg: '#ffffff'
    border: '1px solid #cfd4da'
    radius: 4
    checked-bg: '#1e61f0'
    checked-mark: '#ffffff'
    use: 'the canonical blue accent surface (--color-checkbox-checked)'
  nav-top:
    bg: 'rgba(255,255,255,0.92)'
    text: '#171717'
    height: 64
    border-bottom: '1px solid #e3e6ea'
    backdrop: 'blur(12px)'

motion:
  ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
  ease-emphasized: 'cubic-bezier(0.2, 0, 0, 1)'
  ease-decel: 'cubic-bezier(0.0, 0, 0.2, 1)'
  duration-fast: 150
  duration-standard: 240
  duration-slow: 320
  duration-chart: 400
  reduced-motion: 'respects prefers-reduced-motion: reduce — chart redraws snap to final state, hover lifts collapse to opacity-only'

breakpoints:
  mobile: 640
  tablet: 1024
  desktop: 1280
  wide: 1536

shadows:
  none: 'none'
  whisper: 'rgba(15,23,42,0.04) 0 1px 2px'
  ambient: 'rgba(15,23,42,0.05) 0 8px 24px -6px'
  standard: 'rgba(15,23,42,0.08) 0 16px 40px -12px'
  elevated: 'rgba(15,23,42,0.12) 0 28px 56px -16px'
  ring: '0 0 0 2px rgba(30,97,240,0.40)'

accessibility:
  contrast-text-on-bg: 7.0
  contrast-strong-on-bg: 21.0
  contrast-text-on-brand: 4.8
  contrast-on-cta-black: 21.0
  contrast-text-on-dark: 14.9
  focus-ring: '2px solid #1e61f0 + 2px outer rgba(30,97,240,0.20)'
  reduced-motion-honored: true

dark-mode: optional

lineage:
  summary: |
    Amplitude''s marketing surface is a bright white-canvas analytics page
    that reads as a clean technical document rather than a branded campaign.
    The type system is **IBM Plex Sans** — the IBM-commissioned humanist
    grotesque designed by Mike Abbink and Bold Monday — which carries a
    neutral, engineering-credible register: it reads as "made by people who
    care about systems" rather than "made by a marketing team." Headlines
    hit 60px at weight 700 in black `#000`, body copy runs at a soft warm
    grey `#565656`, and the whole page stays monochrome until the signature
    `#1e61f0` blue appears as the interactive accent — the checkbox-checked
    colour, the link colour, the focus ring. The primary CTA inverts the
    usual SaaS playbook: rather than fill the button with brand blue,
    Amplitude ships a pure-black full-pill (`9999px`) "Get started",
    reserving the blue for smaller interactive moments. This is the
    discipline of a data product — colour is signal, not decoration. The
    black pill borrows the confident monochrome CTA from Vercel and Linear;
    the white-canvas density and structured feature grids echo Datadog and
    the broader observability-marketing playbook; and the choice of Plex
    over a proprietary face signals "open, technical, neutral" the way
    Datadog''s custom NationalWeb signals "enterprise-bespoke". The result
    is a surface that feels measured and quantitative — every chromatic
    decision earns its place, and the one bold colour is spent on the one
    thing that matters: the action the user is meant to take.
  influences:
    - name: IBM Plex (Bold Monday)
      role: 'Foundation typeface — humanist grotesque commissioned by IBM, neutral engineering register across display and body'
      url: https://www.ibm.com/plex/
    - name: Vercel
      role: 'Monochrome black full-pill primary CTA, white-canvas restraint, single-accent discipline'
      url: https://vercel.com
    - name: Datadog
      role: 'Adjacent data-product marketing — white canvas, structured feature grids, charts-as-proof density'
      url: https://www.datadoghq.com
    - name: Linear
      role: 'Tight-tracking 60px+ display headlines, near-monochrome palette with a single saturated accent'
      url: https://linear.app
    - name: Mixpanel
      role: 'Direct product-analytics competitor — useful contrast for how blue accent and metric-card register are deployed'
      url: https://mixpanel.com
---

## 1. Visual Theme & Atmosphere

Amplitude's marketing surface is a bright, white-canvas analytics page that reads like a well-set technical document. The body floor is pure `#ffffff` — no warm cream, no cool tilt — and the running copy sits at a soft warm grey `#565656`, a deliberately quiet body colour that keeps black reserved for the headlines. Display type hits 60px at weight 700 in true black `#000`, set in **IBM Plex Sans**, the IBM-commissioned humanist grotesque that carries a neutral, engineering-credible register. Nothing on the page shouts; the atmosphere is measured, quantitative, and self-assured.

The signature gesture is chromatic restraint. The page is almost entirely monochrome — black headlines, grey body, white surfaces, cool-grey hairlines — until a single confident blue, `#1e61f0`, appears as the interactive accent. That blue is the checkbox-checked colour, the link colour, the focus ring; it is *signal*, not decoration. Where consumer SaaS sprays accent colour across gradients and illustrations, Amplitude spends its one bold hue only where the user is meant to act or where state must read at a glance. This is the discipline of a data product: colour carries information, so it is rationed.

The primary call-to-action inverts the conventional SaaS move. Rather than fill the hero button with brand blue, Amplitude ships a pure-black full-pill (`9999px` radius) "Get started", paired with a white outlined pill "Sign Up" and a dark `#1a1f23` 6px "Amplitude Solutions →". The black pill is the confident monochrome CTA borrowed from the Vercel / Linear school; the blue stays in the wings. The pill geometry is the one soft, friendly note in an otherwise rectilinear system — buttons are fully rounded while cards and inputs keep tight 6–8px corners.

The overall mood is "clean instrument panel." The white canvas and structured feature grids echo the observability-marketing playbook (Datadog, New Relic), but Amplitude is lighter and quieter — fewer simultaneous chart series, more whitespace, more breathing room between sections. IBM Plex doing every text role reinforces the neutral, systems-minded feel: this is a tool made by people who care about how things are measured, presented without theatrics.

**Key Characteristics:**
- Pure-white `#ffffff` canvas — no warm or cool tilt, intentionally neutral
- Soft warm-grey `#565656` body copy with true-black `#000` headlines — a deliberate two-tone text hierarchy
- IBM Plex Sans handles every text role — humanist grotesque, engineering-neutral register
- 60px hero headlines at weight 700 with `-0.022em` tracking — confident without aggression
- Signature `#1e61f0` blue as the *only* accent — checkbox, link, focus ring; colour as signal, not decoration
- Black full-pill (`9999px`) primary CTA — monochrome confidence, blue held in reserve
- Pill buttons against tight 6–8px cards/inputs — a single soft note in a rectilinear system
- Hairline borders over shadows — depth from tonal contrast, not drop shadows
- Tabular figures on every metric and chart axis — quantitative discipline
- Data-forward, structured layout — feature grids and metric cards over hero illustration

## 2. Color Palette & Roles

### Primary
- **Canvas** (`#ffffff`): Paper-white page floor — no warm or cool tilt, intentionally neutral.
- **Text** (`#565656`): Primary body copy — a soft warm grey that keeps black reserved for headlines (live `rgb(86,86,86)`).
- **Brand** (`#1e61f0`): The signature interactive blue — checkbox-checked, links, focus ring, accent (live `--color-checkbox-checked`).

### Brand & Accent
- **Signal Blue** (`#1e61f0`): The one accent colour. Applied with restraint — links, the checkbox-checked state, focus rings, and rare blue-fill CTAs on dark sections. Never a dominant surface.
- **Brand Hover** (`#1850cf`): Pressed / hover state for any blue surface.
- **Brand Deep** (`#1543ad`): Deepest variant — active state, badge text on `brand-soft`.
- **Brand Soft** (`#eaf0fe`): Tinted blue surface for callouts, selection backgrounds, and tag fills.
- **Brand Tint** (`rgba(30,97,240,0.10)`): Ambient blue for focus-ring halos.

### Interactive
- **Link** = `#1e61f0` signal blue, no underline by default; underline appears on hover only.
- **Link Hover** = `#1850cf` darker blue.
- **CTA Primary** = `#000000` black full-pill — hover darkens toward `#1a1f23`.
- **CTA Dark** = `#1a1f23` dark grey 6px — hover to `#0c0e10`.
- **Active / Pressed** = `#1543ad` deep blue on blue surfaces; `#0c0e10` on dark surfaces.
- **Disabled** = opacity 50% on filled buttons; `#a8a8a8` text-faint on `#f7f8f9` for disabled labels.
- **Selected** = `#eaf0fe` brand-soft background with `#1543ad` text.

### Neutral Scale
`#ffffff` (Canvas) → `#f7f8f9` (Bg Soft) → `#f2f4f7` (Bg Cool) → `#eef0f3` (Border Soft) → `#e3e6ea` (Border) → `#cfd4da` (Border Strong) → `#a8a8a8` (Text Faint) → `#8a8a8a` (Text Soft) → `#6e6e6e` (Text Muted) → `#565656` (Text) → `#1a1f23` (Bg Dark) → `#0c0e10` (Bg Deep) → `#000000` (Text Strong / CTA Black).

The neutral scale is near-neutral with a barely-perceptible cool tint on the lightest bands (`#f7f8f9`, `#f2f4f7`) and a warm tilt on the body grey (`#565656`). The combination of warm-grey body and pure-black headlines is the most distinctive neutral choice — it produces a softer, more readable body register than a single near-black would.

### Surface & Borders
- **Bg Soft** (`#f7f8f9`): Secondary section background — light alternation band.
- **Bg Cool** (`#f2f4f7`): Slightly cooler alternation band for variety.
- **Surface** (`#ffffff`): Raised card panel — white card lifting off a tinted band.
- **Surface Hover** (`#f7f8f9`): Subtle hover state for cards and list rows.
- **Border** (`#e3e6ea`): Default cool-grey hairline. Used on every card edge.
- **Border Soft** (`#eef0f3`): Softer divider — lighter than default.
- **Border Strong** (`#cfd4da`): Emphasised divider, input borders, table rules.
- **Border Dark** (`rgba(255,255,255,0.12)`): Divider on dark surfaces.

### Dark Surfaces
- **Bg Dark** (`#1a1f23`): Dark CTA fill and dark section band — the "Amplitude Solutions" button colour.
- **Bg Deep** (`#0c0e10`): Deeper dark band, footer floor, pressed dark state.

### Shadow Colors
Amplitude prefers hairline borders and tonal layering to drop shadows. When shadows do appear they are neutral cool-grey (`rgba(15,23,42,...)`), never brand-tinted.
- **Whisper** (`rgba(15,23,42,0.04) 0 1px 2px`): Faintest elevation — metric cards.
- **Ambient** (`rgba(15,23,42,0.05) 0 8px 24px -6px`): Soft drop on pricing / quote cards.
- **Standard** (`rgba(15,23,42,0.08) 0 16px 40px -12px`): Dropdown menus, popovers.
- **Elevated** (`rgba(15,23,42,0.12) 0 28px 56px -16px`): Modal-grade lift.

### Semantic
- **Success** (`#1f9d57`): Green for positive metric / trend-up indicators.
- **Warning** (`#c77700`): Amber for thresholds and caution states.
- **Danger** (`#d33b3b`): Red for errors and trend-down indicators.
- **Info** (`#1e61f0`): Informational — maps to the brand blue.

## 3. Typography Rules

### Font Family
- **Display & Body** — `IBM Plex Sans`, fallback `system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`. The IBM-commissioned humanist grotesque (Mike Abbink / Bold Monday) handles every text role on the marketing surface — display, body, UI, label, caption. (The probe's `Twemoji Country Flags` h1 font is an emoji-flag fallback artifact, not the real display face — Amplitude renders headlines in Plex Sans.)
- **Mono** — `IBM Plex Mono`, fallback `ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace`. The matching Plex Mono carries code samples, chart-axis values, and tabular metric readouts.
- **OpenType** — `kern` and `liga` default-on for text roles; `tnum` (tabular numerals) and `zero` (slashed zero) enabled on every numerical surface — chart axes, metric values, percentages.

### Hierarchy

| Role | Font | Size | Weight | Line Height | Letter Spacing | OT Features | Notes |
|------|------|-----:|-------:|------------:|---------------:|-------------|-------|
| display-hero    | IBM Plex Sans | 72 | 700 | 1.0  | -0.03em  | default    | Oversize campaign hero |
| display-lg      | IBM Plex Sans | 60 | 700 | 1.05 | -0.025em | default    | Secondary hero |
| h1             | IBM Plex Sans | 60 | 700 | 1.05 | -0.022em | default    | Homepage h1 — live 60px/700 |
| h2             | IBM Plex Sans | 44 | 600 | 1.1  | -0.018em | default    | Section heads — live 44px/600 |
| h3             | IBM Plex Sans | 32 | 600 | 1.2  | -0.012em | default    | Sub-section heads |
| h4             | IBM Plex Sans | 24 | 600 | 1.25 | -0.006em | default    | Feature / card title |
| h5             | IBM Plex Sans | 20 | 600 | 1.3  | 0        | default    | Inline emphasis head |
| body-lg        | IBM Plex Sans | 18 | 400 | 1.55 | 0        | default    | Hero subhead, large prose — live body 18px/400 |
| body           | IBM Plex Sans | 16 | 400 | 1.55 | 0        | default    | Default running text |
| body-medium    | IBM Plex Sans | 16 | 500 | 1.55 | 0        | default    | Inline emphasis |
| body-sm        | IBM Plex Sans | 14 | 400 | 1.5  | 0        | default    | Captions, table cells |
| label          | IBM Plex Sans | 13 | 500 | 1.4  | +0.01em  | default    | Form labels, table headers |
| caption        | IBM Plex Sans | 12 | 500 | 1.4  | +0.02em  | default    | Metadata, footnote |
| eyebrow        | IBM Plex Sans | 12 | 600 | 1.3  | +0.08em  | uppercase  | Section eyebrow above headline |
| code-inline    | IBM Plex Mono | 14 | 400 | 1.5  | 0        | tnum       | Inline code in prose |
| code-block     | IBM Plex Mono | 13 | 400 | 1.6  | 0        | tnum       | Code samples |
| chart-tick     | IBM Plex Mono | 11 | 500 | 1.2  | 0        | tnum       | Chart axis values |
| metric-value   | IBM Plex Sans | 40 | 700 | 1.0  | -0.02em  | tnum       | Large KPI number on stat cards |

### Principles

- **Single-typeface discipline** — IBM Plex Sans does every text role, with Plex Mono for code and figures. No editorial serif, no second display face. The unified Plex family reinforces the neutral, systems-minded register.
- **Two-tone text hierarchy** — Headlines in true black `#000`, body in soft grey `#565656`. The grey body is the distinctive choice: it keeps black reserved for emphasis and produces a calmer reading register than a single near-black.
- **Display weight 700, heads 600** — The 60px hero hits weight 700; section heads (44px) step down to 600. Confident without the display-bold theatrics of an 800/900 face.
- **Negative tracking scales with size** — `-0.03em` at the hero down to `0` at 16px. Tightening the display produces the engineered feel without crushing body legibility.
- **Body line-height 1.55** — Marketing-prose-friendly, calibrated for the homepage's long feature scrolls.
- **Tabular numerals everywhere numerical** — `tnum` is on for every metric card, chart axis, and percentage; slashed `zero` distinguishes from `O` in figures.
- **Plex Mono for code and figures** — The matching mono keeps the type voice unified rather than dropping to a generic system mono.
- **IBM Plex lineage** — Plex was commissioned by IBM (designed by Mike Abbink with Bold Monday) as an open, neutral corporate face. Its engineering-credible, non-proprietary register is exactly the signal a data-analytics brand wants.

## 4. Component Stylings

### Buttons

**`button-primary`** — The hero CTA. Background pure black `#000000`, white text, 12×24 padding, **full pill (`9999px`)**, IBM Plex Sans 15/600. Hover darkens to `#1a1f23`. Used on "Get started". The monochrome black pill is the brand's signature CTA — blue is deliberately *not* used here.

**`button-dark`** — Dark secondary. Background `#1a1f23`, white text, 12×20 padding, **6px radius** (note: not a pill), IBM Plex Sans 15/600, often with a trailing `→`. Hover to `#0c0e10`. Used on "Amplitude Solutions →".

**`button-secondary`** — White outlined pill. Background `#ffffff`, `#171717` text, 1px `#cfd4da` border, 12×24 padding, full pill, IBM Plex Sans 15/600. Hover background `#f7f8f9`. Used on "Sign Up", paired beside the black primary.

**`button-brand`** — Blue-fill pill. Background `#1e61f0`, white text, 12×24 padding, full pill, IBM Plex Sans 15/600. Hover to `#1850cf`. Used rarely — typically on dark sections where a black pill would disappear, or for in-product accents.

**`button-link`** — Inline link CTA. Text-only, `#1e61f0` brand blue, underline on hover. Used as "Learn more →" at the end of feature paragraphs.

### Cards

**`card-feature`** — White background, 1px `#e3e6ea` hairline, 8px radius, 24px padding, **no shadow**. Holds icon + title + body. The default card chrome; depth comes from the white card against a `#f7f8f9` band.

**`card-elevated`** — White background, 1px `#e3e6ea` hairline, 8px radius, 24px padding, soft `rgba(15,23,42,0.05) 0 8px 24px -6px` ambient shadow. Used on pricing tiers and customer-quote cards that benefit from a subtle lift.

**`card-metric`** — White background, 1px `#e3e6ea` hairline, 8px radius, 20px padding. Holds a large tabular `metric-value` (40/700, tnum) over a grey `body-sm` label. The quantitative proof card — "2.5x conversion lift", "40% faster insights".

### Badges & Tags

**`badge-tag`** — Background `#eaf0fe` (brand-soft), `#1543ad` text, full pill (9999px), 2×10 padding, IBM Plex Sans 12/600. Used for "New" / "Beta" / category tags.

**`badge-status-success`** — `rgba(31,157,87,0.12)` background, `#1f9d57` text, 4px radius. Positive / trend-up indicator.

**`badge-status-warning`** — `rgba(199,119,0,0.12)` background, `#c77700` text, 4px radius. Threshold / caution.

**`badge-status-danger`** — `rgba(211,59,59,0.12)` background, `#d33b3b` text, 4px radius. Error / trend-down.

### Inputs / Forms

**`input-text`** — White background, 1px `#cfd4da` border, 6px radius, 10×14 padding, 40px height. Focus → 2px `#1e61f0` border + 2px `rgba(30,97,240,0.20)` outer ring.

**`input-search`** — Same as input-text with a leading magnifying-glass icon, used on docs and integrations search.

**`checkbox`** — White 18px box, 1px `#cfd4da` border, 4px radius. **Checked state fills `#1e61f0`** with a white tick — this is the canonical brand-blue surface (`--color-checkbox-checked`), the single most literal use of the accent on the whole site.

**`select`** — White background, 1px `#cfd4da` border, 6px radius, downward chevron right. Opens to a list with row-hover `#f7f8f9`.

### Navigation

**`nav-top`** — 64px tall, `rgba(255,255,255,0.92)` with `backdrop-filter: blur(12px)`, 1px `#e3e6ea` bottom border. Amplitude wordmark left (in `#171717`, not blue), primary nav (Platform, Solutions, Resources, Pricing), right cluster (Sign Up white pill, "Get started" black pill primary).

**`nav-mega`** — Multi-column dropdown opens on hover for "Platform" and "Solutions". White surface, 8px radius, ambient shadow, multi-column grid of feature links with category eyebrows.

**`nav-side-docs`** — Left sidebar on docs pages. ~240px wide, `#fafafa` background, IBM Plex Sans 14/500 link list with indent for nested items; active item carries a `#1e61f0` left rule.

### Decorative

**`band-metric-callout`** — Numerical proof band. Background `#f7f8f9`, 96px vertical padding, 3-up grid of `metric-value` numbers in black `#000` with grey labels below — the quantitative density signal.

**`hero-band-dark`** — Rare full-bleed dark section (`#1a1f23`) used on campaign features. White text, blue-fill primary button, brand-blue accents on illustration.

## 5. Layout Principles

### Spacing System
- **Base unit**: 4px.
- **Tokens**: 0 / 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 / 96 / 128.
- **Section padding (vertical)**: 96px on marketing — generous breathing room, looser than Datadog's 80px density. Amplitude is the calmer, airier cousin of the observability playbook.
- **Card internal padding**: 24px default; 32px on pricing cards; 20px on dense metric cards.

### Grid & Container
- **Max content width**: 1280px centred — the standard modern-SaaS measure.
- **Editorial body**: 12-column grid with 24px gutters.
- **Hero**: text-centred or 6/6 split (copy left, product mock or metric cards right) on desktop. Feature sections alternate text-left / text-right for rhythm.
- **Prose width**: 720px max for long-form docs and blog copy — calibrated for ~75-character measure in Plex Sans.

### Whitespace Philosophy
Generous but not indulgent. The 96px section rhythm and ample inter-card gutters give the page room to breathe, which is the deliberate contrast to denser observability marketing — Amplitude wants each metric and feature to land singly rather than as a wall of data. Whitespace is the second restraint mechanism alongside colour: both are rationed to keep signal high.

### Section Cadence
White → soft band (`#f7f8f9`) → white → metric-callout band → white → dark CTA section (`#1a1f23`) → light footer. Tonal alternation creates implicit elevation without borders or heavy shadows. The dark section appears once per page, anchoring the final conversion gesture.

## 6. Shapes & Radius Scale

- **Micro** (2px) — inline tag highlights, pre-pill chips
- **Sm** (4px) — checkboxes, dense status badges
- **Md** (6px) — default input radius, dark secondary button
- **Lg** (8px) — cards, metric cards, popovers
- **Xl** (12px) — large callouts, hero cards
- **Pill** (9999px) — primary / secondary CTAs, tag chips, avatar placeholders

The defining tension is **pills for buttons, tight corners for everything else**. The primary "Get started" and secondary "Sign Up" CTAs are full pills (`9999px`), while cards land at 8px and inputs at 6px. This creates a clear two-family hierarchy: buttons are soft and friendly (invite the tap), containers are crisp and rectilinear (hold the data). The one exception is the dark "Amplitude Solutions →" button at 6px — a deliberately squarer secondary that reads as more "utility" than the pill primaries.

Compound radii appear on metric cards where a coloured header strip meets the card body — `8px 8px 0 0` on the strip, square where it meets the canvas.

## 7. Depth & Elevation

| Level | Treatment | Use |
|-------|-----------|-----|
| 0 Flat | No shadow | Body text, hero copy, nav, metric callout numbers |
| 1 Hairline | 1px `#e3e6ea` | Default card chrome — every feature card, every metric card |
| 2 Whisper | `rgba(15,23,42,0.04) 0 1px 2px` | Stat cards, micro-elevation hints |
| 3 Ambient | `rgba(15,23,42,0.05) 0 8px 24px -6px` | Pricing card lift, quote card |
| 4 Standard | `rgba(15,23,42,0.08) 0 16px 40px -12px` | Dropdown menus, popovers |
| 5 Elevated | `rgba(15,23,42,0.12) 0 28px 56px -16px` | Modal dialogs, command palette |

**Shadow Philosophy**: Hairlines first, shadows second. The default card uses a 1px `#e3e6ea` border with no shadow — depth comes from the white card's contrast against the `#f7f8f9` band. Shadows appear only when a surface must lift off a same-coloured surface (white card on white, modal on white). All shadows are neutral cool-grey (`rgba(15,23,42,...)`), never brand-tinted. The blue is reserved for action and state; it is never used as atmospheric tint.

## 8. Interaction & Motion ✨

### Easing Curves
- **Standard** — `cubic-bezier(0.4, 0, 0.2, 1)` for hover transitions, button state changes, card hover lifts
- **Emphasized** — `cubic-bezier(0.2, 0, 0, 1)` for chart redraws, modal entries, mega-nav reveals
- **Decel** — `cubic-bezier(0.0, 0, 0.2, 1)` for scroll-triggered fades entering view

### Duration Buckets
- **Fast** (150ms) — colour shifts, hover state changes
- **Standard** (240ms) — card hover lift, button press, dropdown open
- **Slow** (320ms) — modal entry, mega-nav reveal
- **Chart** (400ms) — metric chart series redraw, axis-tick updates

### Per-Component Micro-States
- **Button-primary hover** — `bg #000` → `#1a1f23` over 150ms standard ease. No translate, no shadow change.
- **Button-brand hover** — `bg #1e61f0` → `#1850cf` over 150ms standard.
- **Button-secondary hover** — `bg #ffffff` → `#f7f8f9` over 150ms; border stays `#cfd4da`.
- **Card-elevated hover** — shadow intensifies from ambient to standard over 240ms; no translate.
- **Checkbox check** — box fills `#1e61f0` and the tick draws in over 150ms standard ease.
- **Link hover** — colour `#1e61f0` → `#1850cf` over 150ms; underline grows from 0 to 1px.
- **Mega-nav** — hover-open after ~100ms delay; fade + 8px upward slide at 240ms emphasized ease.

### Page Transitions
No page-transition animation — navigations are immediate. Within-page anchor jumps use smooth scroll at ~600ms standard ease. Feature-section reveals on scroll use a fade + 16px upward slide at 400ms decel ease, triggered when ~20% of the section enters the viewport.

### Reduced Motion
Honours `prefers-reduced-motion: reduce`. All transitions collapse to opacity-only. Chart redraws snap to final state instead of animating series. Scroll-triggered reveals become immediate (no fade, no slide). Hover lifts collapse to colour-only changes.

## 9. Accessibility & A11y ✨

### Contrast Pairs
Computed against the live tokens (`bg #ffffff`, `text #565656`, `text-strong #000000`, `brand #1e61f0`):
- **Headline on bg** (`#000000` on `#ffffff`) = **21.0:1** (AAA at all sizes)
- **Body on bg** (`#565656` on `#ffffff`) = **7.0:1** (AAA at body sizes)
- **Text-muted on bg** (`#6e6e6e` on `#ffffff`) = **5.2:1** (AA at body sizes)
- **Brand on bg** (`#1e61f0` on `#ffffff`) = **4.8:1** (AA at body sizes, AAA at large) — links pass at 16px
- **White on brand** (`#ffffff` on `#1e61f0`) = **4.4:1** (AA at large / UI; pair with 15px+/600 button text)
- **White on CTA-black** (`#ffffff` on `#000000`) = **21.0:1** (AAA) — the primary pill is maximum contrast
- **White on bg-dark** (`#ffffff` on `#1a1f23`) = **14.9:1** (AAA)
- **Badge text on brand-soft** (`#1543ad` on `#eaf0fe`) = **6.6:1** (AAA)

Note the brand blue on white is `4.8:1` — comfortably AA for links and large/UI text, but blue body copy below 14px should be avoided; use `#1543ad` (brand-deep, ~7.4:1) where small blue text is unavoidable.

### Focus Indicators
2px solid `#1e61f0` brand-blue ring + 2px outer `rgba(30,97,240,0.20)` halo on every interactive element. Inputs swap their border colour to `#1e61f0` on focus rather than using a separate ring. Skip-to-content link visible on first Tab, anchored top-left of viewport.

### ARIA Patterns
- **Mega-nav** — `role="menu"` with `aria-haspopup` on top-level triggers, arrow-key nav within submenus
- **Search combobox** — `role="combobox"` with `aria-expanded`, `aria-controls`, `aria-activedescendant`
- **Modal dialog** — `role="dialog"` + `aria-modal="true"` + focus trap + `Escape` to close
- **Chart / metric cards** — `role="img"` with descriptive `aria-label` summarising the value; data table fallback in `<details>`
- **Tab patterns** — `role="tablist"` with arrow-key navigation, `aria-selected` on active tab
- **Checkbox** — native `<input type="checkbox">` or `role="checkbox"` with `aria-checked` reflecting the blue-fill state

### Keyboard Navigation
Standard tab order top-down, left-to-right. Arrow keys navigate within tab groups, mega-nav columns, and combobox options. `Escape` closes any open overlay. `Enter` / `Space` activate buttons and toggle checkboxes. Skip-to-content jumps past nav.

### Screen Reader Hints
- Metric / chart cards include a hidden `<table>` with the same numbers — readers get values, not just visuals.
- The wordmark glyph uses `aria-hidden="true"`; the wordmark text carries the label.
- Status badges include `aria-label` describing the state even when colour-coded.

### Reduced Motion
Honoured globally — see §8 for behaviour.

## 10. Responsive Behavior

| Breakpoint | Width | Key Changes |
|------------|------:|-------------|
| Mobile     | < 640  | Top nav → hamburger; display-hero 60 → 34px; product mock / metric cards stack below copy; feature grid → 1-col; CTA pair stacks vertically |
| Tablet     | 640–1024 | Top nav condenses, secondary nav behind "More"; metric cards 2-up; feature grid → 2-col |
| Desktop    | 1024–1280 | Hero 6/6 split; feature grids 3-up; metric callout 3-up |
| Wide       | 1280–1536 | Full layout; feature grids 3–4-up; mockups full-fidelity |

### Touch Targets
Primary CTA pills 44 × 44px minimum. Metric-card tap regions span the full card. Compliance footnote text (12px) is non-interactive and never used as a tap target.

### Collapsing Strategy
- **Top nav** → hamburger sheet at mobile; mega-nav columns flatten to accordion
- **Hero** → copy + mock stack vertically; metric cards reflow to a single column
- **Feature grid** → 3-up → 2-up → 1-up
- **Metric callout** → 3-up → 1-col, values stay tabular
- **Pricing tiers** → 3-up → 1-col (recommended tier first)
- **Footer** → multi-col link grid → 2-col → accordion sections

### Image Behavior
Product mocks ship as responsive PNG with WebP fallback at 1x and 2x. Logos are SVG with explicit `aria-label`. Hero illustrations are SVG with `max-width` constraints — no `width: 100%` without a cap, to prevent over-scaling on ultra-wide.

### Container Queries
Used on metric cards — the large `metric-value` steps down a tier when the card's container falls below ~240px so the tabular figure never clips. Feature cards adjust internal padding from 24px (wide) to 16px (narrow) via container query.

## 11. Content & Voice ✨

### Tone
Amplitude's voice is **quantitative and credible** — it speaks in measurable outcomes ("understand what drives growth", "turn product data into decisions") rather than hype. The register is technically literate but plain-spoken: it avoids both crypto-finance bombast and legacy-enterprise jargon. Claims are anchored to numbers; the brand speaks as an instrument, not a personality.

### Microcopy Patterns
- **Button verbs** — "Get started", "Sign Up", "Get a demo", "View pricing". Action-oriented imperatives.
- **Section eyebrows** — uppercase 12/600 +0.08em — "PRODUCT ANALYTICS", "EXPERIMENTATION", "CDP". The eyebrow names the category before the headline names the value.
- **Error messages** — direct, no apology theatrics. "We couldn't load that report. Retry or [contact support]." with a retry CTA.
- **Empty states** — instructional. "No events tracked yet. [Install the SDK]" with the action linked inline.
- **Success confirmations** — minimal. "Saved." with a checkmark — no celebration toast.

### CTA Verb Conventions
- **Primary action** — "Get started" (the black pill, top and bottom of page)
- **Secondary** — "Sign Up", "Get a demo", "Learn more →"
- **Tertiary** — "Read the docs", "View on GitHub", "See pricing"
- Amplitude prefers "Get started" over "Sign up" on the primary — it signals self-service before the form appears.

### Empty States
"No data yet" patterns explain why and what to do next: "No events have streamed from your app yet. Install the Amplitude SDK — [quickstart guide]." Empty states never apologise; they instruct toward the next quantitative step.

## 12. Dark Mode & Theming ✨

Amplitude's marketing surface is **light-default** with rare full-bleed dark section punctuation (`#1a1f23`). The in-product analytics app supports a full dark theme (out of scope for this marketing-surface document).

For dark section punctuation, the token swap is minimal:
- `bg` → `#1a1f23`
- `text` → `#ffffff`
- `text-muted` → `#b4b8bc`
- `border` → `rgba(255,255,255,0.12)`
- Brand blue `#1e61f0` stays unchanged — it reads cleanly on both white and dark backgrounds
- On dark sections the primary CTA switches from black-pill to **blue-fill pill** (`button-brand`), since a black pill would vanish against `#1a1f23`
- Cards on dark sections use a `#0c0e10` background with `rgba(255,255,255,0.12)` border

Amplitude's marketing site does not implement a user-toggleable dark theme — the dark sections are content-driven, not preference-driven.

## 13. Lineage & Influences

Amplitude's marketing surface is a bright white-canvas analytics page that reads as a clean technical document rather than a branded campaign. The type system is **IBM Plex Sans** — the IBM-commissioned humanist grotesque designed by Mike Abbink with Bold Monday — which carries a neutral, engineering-credible register: it reads as "made by people who care about systems" rather than "made by a marketing team." Headlines hit 60px at weight 700 in black `#000`, body copy runs at a soft warm grey `#565656`, and the whole page stays monochrome until the signature `#1e61f0` blue appears as the interactive accent — the checkbox-checked colour, the link colour, the focus ring. Colour is signal, not decoration.

What it borrows: the monochrome black full-pill primary CTA and single-accent restraint from Vercel and Linear; the white-canvas density and structured feature grids from the observability-marketing playbook (Datadog, New Relic); and the choice of a neutral, open typeface (Plex rather than a proprietary face) to signal "technical, open, systems-minded" — the inverse of Datadog's bespoke NationalWeb but the same underlying goal of typographic credibility. What it rejects: gradient hero treatments, glass-morphism and neumorphism, accent-colour-as-surface (blue is action and state, never atmosphere), warm-cream canvases, and the data-overload density of a Bloomberg-terminal — Amplitude keeps fewer simultaneous chart series and more whitespace so each metric lands singly.

**Influences:**
- **IBM Plex (Bold Monday)** — Foundation typeface; humanist grotesque commissioned by IBM for a neutral engineering register. https://www.ibm.com/plex/
- **Vercel** — Monochrome black full-pill primary CTA, white-canvas restraint, single-accent discipline. https://vercel.com
- **Datadog** — Adjacent data-product marketing; white canvas, structured feature grids, charts-as-proof. https://www.datadoghq.com
- **Linear** — Tight-tracking 60px+ display headlines, near-monochrome palette with one saturated accent. https://linear.app
- **Mixpanel** — Direct product-analytics competitor; contrast for how blue accent and metric cards are deployed. https://mixpanel.com

## 14. Do's and Don'ts

### Do
- Keep `#1e61f0` blue as the *only* accent — links, checkbox-checked, focus ring; spend it where the user acts or where state must read
- Ship the primary CTA as a **black** full-pill (`#000` / `9999px`) — the monochrome confidence is the signature
- Set body copy at the soft grey `#565656` and reserve true black `#000` for headlines
- Use IBM Plex Sans for every text role, Plex Mono for code and figures
- Hold the two-family radius hierarchy: pills for buttons, 6–8px for cards / inputs
- Anchor sections at 96px vertical padding — airier than Datadog, room for each metric to land
- Use `tnum` and `zero` OpenType features on every metric, axis, and percentage
- Layer white cards on `#f7f8f9` bands for implicit elevation — hairline border, no shadow by default
- Keep shadows neutral cool-grey — never blue-tinted
- Switch the primary CTA to the blue-fill pill only on dark sections, where black would vanish

### Don't
- Don't fill the primary CTA with brand blue on light sections — black is the standard primary
- Don't use blue as a background or atmospheric tint — it is action and state, never surface
- Don't set body copy in pure black — the `#565656` grey body is the calmer, intended register
- Don't introduce a second display typeface or an editorial serif — Plex does every role
- Don't warm the white canvas with a cream tilt — the canvas is neutral `#ffffff`
- Don't add gradient hero treatments, glass-morphism, or neumorphism — the system stays flat
- Don't square off the CTA buttons — the full pill is the friendly note in a rectilinear system
- Don't run blue body text below 14px on white (4.8:1) — use `#1543ad` brand-deep for small blue text
- Don't crowd the page with simultaneous chart series — fewer series, more whitespace is the Amplitude register
- Don't drop to a generic system mono — Plex Mono keeps the type voice unified

## 15. Agent Prompt Guide

### Quick Color Reference
- Brand (accent blue): `#1e61f0`
- Brand hover: `#1850cf`
- Brand deep (small blue text): `#1543ad`
- Headline / strong text: `#000000`
- Body text (grey): `#565656`
- Body bg (canvas): `#ffffff`
- Section band: `#f7f8f9`
- CTA black (primary pill): `#000000`
- Dark section / dark button: `#1a1f23`
- Border (hairline): `#e3e6ea`

### Example Component Prompts

- "Create an Amplitude hero band: white `#ffffff` background, 60px IBM Plex Sans weight 700 headline with `-0.022em` tracking in black `#000`, body-large 18/400 sub in grey `#565656`, primary CTA a **black full-pill** (`#000`, `9999px`, 12×24, white 15/600) reading `Get started`, secondary white outlined pill (`1px #cfd4da` border, `#171717` text) reading `Sign Up`."
- "Design a metric card: white bg, 1px `#e3e6ea` border, 8px radius, 20px padding. Large tabular metric value (40px IBM Plex Sans weight 700, `tnum`) in black `#000` reading `2.5x`, grey `#565656` 14px label below reading `conversion lift`. No shadow — hairline only."
- "Build a feature grid band: `#f7f8f9` bg, 96px vertical padding, 3-column grid of white feature cards (1px `#e3e6ea`, 8px radius, 24px padding). Each card: blue `#1e61f0` icon, h4 24/600 black title, body 16/400 grey copy, `Learn more →` link in `#1e61f0`."
- "Compose a checkbox + form row: white `input-text` (1px `#cfd4da`, 6px radius, 40px tall), and an 18px checkbox that fills `#1e61f0` with a white tick when checked. Focus state: 2px `#1e61f0` border + 2px `rgba(30,97,240,0.20)` ring."
- "Render a dark CTA section: full-bleed `#1a1f23` bg, 96px section padding, 44px IBM Plex Sans weight 600 white headline, body-large `#b4b8bc` sub, primary CTA a **blue-fill pill** (`#1e61f0`, `9999px`) reading `Get started` (black would vanish here)."
- "Draw a pricing tier card: white bg, 1px `#e3e6ea` border, 8px radius, 32px padding, ambient `rgba(15,23,42,0.05) 0 8px 24px -6px` shadow. Tier name in eyebrow `+0.08em` uppercase grey, price in 40px Plex Sans 700 `tnum` black, feature checklist in 16/400 grey with `#1f9d57` checkmarks, CTA black full-pill."

### Iteration Guide

1. Start with the white `#ffffff` canvas and IBM Plex Sans at 60/700/`-0.022em` in black — that's the brand register.
2. Set body copy to grey `#565656`, not black. The two-tone text hierarchy (black heads, grey body) is the calm, readable signature.
3. Make the primary CTA a **black** full-pill. If your design has a blue primary on a light section, recolour it black and demote the blue to links / focus / checkbox.
4. Spend `#1e61f0` blue only on interaction and state — links, focus ring, checkbox-checked, blue-fill CTAs on dark sections. Never as a background.
5. Hold the radius split: pills (`9999px`) for buttons, 6–8px for cards and inputs. If everything is rounded the same amount, you've lost the two-family hierarchy.
6. Cards default to 8px radius with a `#e3e6ea` hairline and no shadow. Reach for shadow only on lifted surfaces (pricing, modal).
7. Section padding 96px vertical — airier than Datadog's 80. If it feels cramped, you're drifting toward observability-density territory.
8. Put `tnum` and `zero` on every metric, axis, and percentage — quantitative discipline is the whole point of an analytics brand.
Prose

1. Visual Theme & Atmosphere

Amplitude’s marketing surface is a bright, white-canvas analytics page that reads like a well-set technical document. The body floor is pure #ffffff — no warm cream, no cool tilt — and the running copy sits at a soft warm grey #565656, a deliberately quiet body colour that keeps black reserved for the headlines. Display type hits 60px at weight 700 in true black #000, set in IBM Plex Sans, the IBM-commissioned humanist grotesque that carries a neutral, engineering-credible register. Nothing on the page shouts; the atmosphere is measured, quantitative, and self-assured.

The signature gesture is chromatic restraint. The page is almost entirely monochrome — black headlines, grey body, white surfaces, cool-grey hairlines — until a single confident blue, #1e61f0, appears as the interactive accent. That blue is the checkbox-checked colour, the link colour, the focus ring; it is signal, not decoration. Where consumer SaaS sprays accent colour across gradients and illustrations, Amplitude spends its one bold hue only where the user is meant to act or where state must read at a glance. This is the discipline of a data product: colour carries information, so it is rationed.

The primary call-to-action inverts the conventional SaaS move. Rather than fill the hero button with brand blue, Amplitude ships a pure-black full-pill (9999px radius) “Get started”, paired with a white outlined pill “Sign Up” and a dark #1a1f23 6px “Amplitude Solutions →”. The black pill is the confident monochrome CTA borrowed from the Vercel / Linear school; the blue stays in the wings. The pill geometry is the one soft, friendly note in an otherwise rectilinear system — buttons are fully rounded while cards and inputs keep tight 6–8px corners.

The overall mood is “clean instrument panel.” The white canvas and structured feature grids echo the observability-marketing playbook (Datadog, New Relic), but Amplitude is lighter and quieter — fewer simultaneous chart series, more whitespace, more breathing room between sections. IBM Plex doing every text role reinforces the neutral, systems-minded feel: this is a tool made by people who care about how things are measured, presented without theatrics.

Key Characteristics:

  • Pure-white #ffffff canvas — no warm or cool tilt, intentionally neutral
  • Soft warm-grey #565656 body copy with true-black #000 headlines — a deliberate two-tone text hierarchy
  • IBM Plex Sans handles every text role — humanist grotesque, engineering-neutral register
  • 60px hero headlines at weight 700 with -0.022em tracking — confident without aggression
  • Signature #1e61f0 blue as the only accent — checkbox, link, focus ring; colour as signal, not decoration
  • Black full-pill (9999px) primary CTA — monochrome confidence, blue held in reserve
  • Pill buttons against tight 6–8px cards/inputs — a single soft note in a rectilinear system
  • Hairline borders over shadows — depth from tonal contrast, not drop shadows
  • Tabular figures on every metric and chart axis — quantitative discipline
  • Data-forward, structured layout — feature grids and metric cards over hero illustration

2. Color Palette & Roles

Primary

  • Canvas (#ffffff): Paper-white page floor — no warm or cool tilt, intentionally neutral.
  • Text (#565656): Primary body copy — a soft warm grey that keeps black reserved for headlines (live rgb(86,86,86)).
  • Brand (#1e61f0): The signature interactive blue — checkbox-checked, links, focus ring, accent (live --color-checkbox-checked).

Brand & Accent

  • Signal Blue (#1e61f0): The one accent colour. Applied with restraint — links, the checkbox-checked state, focus rings, and rare blue-fill CTAs on dark sections. Never a dominant surface.
  • Brand Hover (#1850cf): Pressed / hover state for any blue surface.
  • Brand Deep (#1543ad): Deepest variant — active state, badge text on brand-soft.
  • Brand Soft (#eaf0fe): Tinted blue surface for callouts, selection backgrounds, and tag fills.
  • Brand Tint (rgba(30,97,240,0.10)): Ambient blue for focus-ring halos.

Interactive

  • Link = #1e61f0 signal blue, no underline by default; underline appears on hover only.
  • Link Hover = #1850cf darker blue.
  • CTA Primary = #000000 black full-pill — hover darkens toward #1a1f23.
  • CTA Dark = #1a1f23 dark grey 6px — hover to #0c0e10.
  • Active / Pressed = #1543ad deep blue on blue surfaces; #0c0e10 on dark surfaces.
  • Disabled = opacity 50% on filled buttons; #a8a8a8 text-faint on #f7f8f9 for disabled labels.
  • Selected = #eaf0fe brand-soft background with #1543ad text.

Neutral Scale

#ffffff (Canvas) → #f7f8f9 (Bg Soft) → #f2f4f7 (Bg Cool) → #eef0f3 (Border Soft) → #e3e6ea (Border) → #cfd4da (Border Strong) → #a8a8a8 (Text Faint) → #8a8a8a (Text Soft) → #6e6e6e (Text Muted) → #565656 (Text) → #1a1f23 (Bg Dark) → #0c0e10 (Bg Deep) → #000000 (Text Strong / CTA Black).

The neutral scale is near-neutral with a barely-perceptible cool tint on the lightest bands (#f7f8f9, #f2f4f7) and a warm tilt on the body grey (#565656). The combination of warm-grey body and pure-black headlines is the most distinctive neutral choice — it produces a softer, more readable body register than a single near-black would.

Surface & Borders

  • Bg Soft (#f7f8f9): Secondary section background — light alternation band.
  • Bg Cool (#f2f4f7): Slightly cooler alternation band for variety.
  • Surface (#ffffff): Raised card panel — white card lifting off a tinted band.
  • Surface Hover (#f7f8f9): Subtle hover state for cards and list rows.
  • Border (#e3e6ea): Default cool-grey hairline. Used on every card edge.
  • Border Soft (#eef0f3): Softer divider — lighter than default.
  • Border Strong (#cfd4da): Emphasised divider, input borders, table rules.
  • Border Dark (rgba(255,255,255,0.12)): Divider on dark surfaces.

Dark Surfaces

  • Bg Dark (#1a1f23): Dark CTA fill and dark section band — the “Amplitude Solutions” button colour.
  • Bg Deep (#0c0e10): Deeper dark band, footer floor, pressed dark state.

Shadow Colors

Amplitude prefers hairline borders and tonal layering to drop shadows. When shadows do appear they are neutral cool-grey (rgba(15,23,42,...)), never brand-tinted.

  • Whisper (rgba(15,23,42,0.04) 0 1px 2px): Faintest elevation — metric cards.
  • Ambient (rgba(15,23,42,0.05) 0 8px 24px -6px): Soft drop on pricing / quote cards.
  • Standard (rgba(15,23,42,0.08) 0 16px 40px -12px): Dropdown menus, popovers.
  • Elevated (rgba(15,23,42,0.12) 0 28px 56px -16px): Modal-grade lift.

Semantic

  • Success (#1f9d57): Green for positive metric / trend-up indicators.
  • Warning (#c77700): Amber for thresholds and caution states.
  • Danger (#d33b3b): Red for errors and trend-down indicators.
  • Info (#1e61f0): Informational — maps to the brand blue.

3. Typography Rules

Font Family

  • Display & BodyIBM Plex Sans, fallback system-ui, -apple-system, "Segoe UI", Roboto, sans-serif. The IBM-commissioned humanist grotesque (Mike Abbink / Bold Monday) handles every text role on the marketing surface — display, body, UI, label, caption. (The probe’s Twemoji Country Flags h1 font is an emoji-flag fallback artifact, not the real display face — Amplitude renders headlines in Plex Sans.)
  • MonoIBM Plex Mono, fallback ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace. The matching Plex Mono carries code samples, chart-axis values, and tabular metric readouts.
  • OpenTypekern and liga default-on for text roles; tnum (tabular numerals) and zero (slashed zero) enabled on every numerical surface — chart axes, metric values, percentages.

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingOT FeaturesNotes
display-heroIBM Plex Sans727001.0-0.03emdefaultOversize campaign hero
display-lgIBM Plex Sans607001.05-0.025emdefaultSecondary hero
h1IBM Plex Sans607001.05-0.022emdefaultHomepage h1 — live 60px/700
h2IBM Plex Sans446001.1-0.018emdefaultSection heads — live 44px/600
h3IBM Plex Sans326001.2-0.012emdefaultSub-section heads
h4IBM Plex Sans246001.25-0.006emdefaultFeature / card title
h5IBM Plex Sans206001.30defaultInline emphasis head
body-lgIBM Plex Sans184001.550defaultHero subhead, large prose — live body 18px/400
bodyIBM Plex Sans164001.550defaultDefault running text
body-mediumIBM Plex Sans165001.550defaultInline emphasis
body-smIBM Plex Sans144001.50defaultCaptions, table cells
labelIBM Plex Sans135001.4+0.01emdefaultForm labels, table headers
captionIBM Plex Sans125001.4+0.02emdefaultMetadata, footnote
eyebrowIBM Plex Sans126001.3+0.08emuppercaseSection eyebrow above headline
code-inlineIBM Plex Mono144001.50tnumInline code in prose
code-blockIBM Plex Mono134001.60tnumCode samples
chart-tickIBM Plex Mono115001.20tnumChart axis values
metric-valueIBM Plex Sans407001.0-0.02emtnumLarge KPI number on stat cards

Principles

  • Single-typeface discipline — IBM Plex Sans does every text role, with Plex Mono for code and figures. No editorial serif, no second display face. The unified Plex family reinforces the neutral, systems-minded register.
  • Two-tone text hierarchy — Headlines in true black #000, body in soft grey #565656. The grey body is the distinctive choice: it keeps black reserved for emphasis and produces a calmer reading register than a single near-black.
  • Display weight 700, heads 600 — The 60px hero hits weight 700; section heads (44px) step down to 600. Confident without the display-bold theatrics of an 800/900 face.
  • Negative tracking scales with size-0.03em at the hero down to 0 at 16px. Tightening the display produces the engineered feel without crushing body legibility.
  • Body line-height 1.55 — Marketing-prose-friendly, calibrated for the homepage’s long feature scrolls.
  • Tabular numerals everywhere numericaltnum is on for every metric card, chart axis, and percentage; slashed zero distinguishes from O in figures.
  • Plex Mono for code and figures — The matching mono keeps the type voice unified rather than dropping to a generic system mono.
  • IBM Plex lineage — Plex was commissioned by IBM (designed by Mike Abbink with Bold Monday) as an open, neutral corporate face. Its engineering-credible, non-proprietary register is exactly the signal a data-analytics brand wants.

4. Component Stylings

Buttons

button-primary — The hero CTA. Background pure black #000000, white text, 12×24 padding, full pill (9999px), IBM Plex Sans 15/600. Hover darkens to #1a1f23. Used on “Get started”. The monochrome black pill is the brand’s signature CTA — blue is deliberately not used here.

button-dark — Dark secondary. Background #1a1f23, white text, 12×20 padding, 6px radius (note: not a pill), IBM Plex Sans 15/600, often with a trailing . Hover to #0c0e10. Used on “Amplitude Solutions →”.

button-secondary — White outlined pill. Background #ffffff, #171717 text, 1px #cfd4da border, 12×24 padding, full pill, IBM Plex Sans 15/600. Hover background #f7f8f9. Used on “Sign Up”, paired beside the black primary.

button-brand — Blue-fill pill. Background #1e61f0, white text, 12×24 padding, full pill, IBM Plex Sans 15/600. Hover to #1850cf. Used rarely — typically on dark sections where a black pill would disappear, or for in-product accents.

button-link — Inline link CTA. Text-only, #1e61f0 brand blue, underline on hover. Used as “Learn more →” at the end of feature paragraphs.

Cards

card-feature — White background, 1px #e3e6ea hairline, 8px radius, 24px padding, no shadow. Holds icon + title + body. The default card chrome; depth comes from the white card against a #f7f8f9 band.

card-elevated — White background, 1px #e3e6ea hairline, 8px radius, 24px padding, soft rgba(15,23,42,0.05) 0 8px 24px -6px ambient shadow. Used on pricing tiers and customer-quote cards that benefit from a subtle lift.

card-metric — White background, 1px #e3e6ea hairline, 8px radius, 20px padding. Holds a large tabular metric-value (40/700, tnum) over a grey body-sm label. The quantitative proof card — “2.5x conversion lift”, “40% faster insights”.

Badges & Tags

badge-tag — Background #eaf0fe (brand-soft), #1543ad text, full pill (9999px), 2×10 padding, IBM Plex Sans 12/600. Used for “New” / “Beta” / category tags.

badge-status-successrgba(31,157,87,0.12) background, #1f9d57 text, 4px radius. Positive / trend-up indicator.

badge-status-warningrgba(199,119,0,0.12) background, #c77700 text, 4px radius. Threshold / caution.

badge-status-dangerrgba(211,59,59,0.12) background, #d33b3b text, 4px radius. Error / trend-down.

Inputs / Forms

input-text — White background, 1px #cfd4da border, 6px radius, 10×14 padding, 40px height. Focus → 2px #1e61f0 border + 2px rgba(30,97,240,0.20) outer ring.

input-search — Same as input-text with a leading magnifying-glass icon, used on docs and integrations search.

checkbox — White 18px box, 1px #cfd4da border, 4px radius. Checked state fills #1e61f0 with a white tick — this is the canonical brand-blue surface (--color-checkbox-checked), the single most literal use of the accent on the whole site.

select — White background, 1px #cfd4da border, 6px radius, downward chevron right. Opens to a list with row-hover #f7f8f9.

nav-top — 64px tall, rgba(255,255,255,0.92) with backdrop-filter: blur(12px), 1px #e3e6ea bottom border. Amplitude wordmark left (in #171717, not blue), primary nav (Platform, Solutions, Resources, Pricing), right cluster (Sign Up white pill, “Get started” black pill primary).

nav-mega — Multi-column dropdown opens on hover for “Platform” and “Solutions”. White surface, 8px radius, ambient shadow, multi-column grid of feature links with category eyebrows.

nav-side-docs — Left sidebar on docs pages. ~240px wide, #fafafa background, IBM Plex Sans 14/500 link list with indent for nested items; active item carries a #1e61f0 left rule.

Decorative

band-metric-callout — Numerical proof band. Background #f7f8f9, 96px vertical padding, 3-up grid of metric-value numbers in black #000 with grey labels below — the quantitative density signal.

hero-band-dark — Rare full-bleed dark section (#1a1f23) used on campaign features. White text, blue-fill primary button, brand-blue accents on illustration.

5. Layout Principles

Spacing System

  • Base unit: 4px.
  • Tokens: 0 / 4 / 8 / 12 / 16 / 24 / 32 / 48 / 64 / 96 / 128.
  • Section padding (vertical): 96px on marketing — generous breathing room, looser than Datadog’s 80px density. Amplitude is the calmer, airier cousin of the observability playbook.
  • Card internal padding: 24px default; 32px on pricing cards; 20px on dense metric cards.

Grid & Container

  • Max content width: 1280px centred — the standard modern-SaaS measure.
  • Editorial body: 12-column grid with 24px gutters.
  • Hero: text-centred or 6/6 split (copy left, product mock or metric cards right) on desktop. Feature sections alternate text-left / text-right for rhythm.
  • Prose width: 720px max for long-form docs and blog copy — calibrated for ~75-character measure in Plex Sans.

Whitespace Philosophy

Generous but not indulgent. The 96px section rhythm and ample inter-card gutters give the page room to breathe, which is the deliberate contrast to denser observability marketing — Amplitude wants each metric and feature to land singly rather than as a wall of data. Whitespace is the second restraint mechanism alongside colour: both are rationed to keep signal high.

Section Cadence

White → soft band (#f7f8f9) → white → metric-callout band → white → dark CTA section (#1a1f23) → light footer. Tonal alternation creates implicit elevation without borders or heavy shadows. The dark section appears once per page, anchoring the final conversion gesture.

6. Shapes & Radius Scale

  • Micro (2px) — inline tag highlights, pre-pill chips
  • Sm (4px) — checkboxes, dense status badges
  • Md (6px) — default input radius, dark secondary button
  • Lg (8px) — cards, metric cards, popovers
  • Xl (12px) — large callouts, hero cards
  • Pill (9999px) — primary / secondary CTAs, tag chips, avatar placeholders

The defining tension is pills for buttons, tight corners for everything else. The primary “Get started” and secondary “Sign Up” CTAs are full pills (9999px), while cards land at 8px and inputs at 6px. This creates a clear two-family hierarchy: buttons are soft and friendly (invite the tap), containers are crisp and rectilinear (hold the data). The one exception is the dark “Amplitude Solutions →” button at 6px — a deliberately squarer secondary that reads as more “utility” than the pill primaries.

Compound radii appear on metric cards where a coloured header strip meets the card body — 8px 8px 0 0 on the strip, square where it meets the canvas.

7. Depth & Elevation

LevelTreatmentUse
0 FlatNo shadowBody text, hero copy, nav, metric callout numbers
1 Hairline1px #e3e6eaDefault card chrome — every feature card, every metric card
2 Whisperrgba(15,23,42,0.04) 0 1px 2pxStat cards, micro-elevation hints
3 Ambientrgba(15,23,42,0.05) 0 8px 24px -6pxPricing card lift, quote card
4 Standardrgba(15,23,42,0.08) 0 16px 40px -12pxDropdown menus, popovers
5 Elevatedrgba(15,23,42,0.12) 0 28px 56px -16pxModal dialogs, command palette

Shadow Philosophy: Hairlines first, shadows second. The default card uses a 1px #e3e6ea border with no shadow — depth comes from the white card’s contrast against the #f7f8f9 band. Shadows appear only when a surface must lift off a same-coloured surface (white card on white, modal on white). All shadows are neutral cool-grey (rgba(15,23,42,...)), never brand-tinted. The blue is reserved for action and state; it is never used as atmospheric tint.

8. Interaction & Motion ✨

Easing Curves

  • Standardcubic-bezier(0.4, 0, 0.2, 1) for hover transitions, button state changes, card hover lifts
  • Emphasizedcubic-bezier(0.2, 0, 0, 1) for chart redraws, modal entries, mega-nav reveals
  • Decelcubic-bezier(0.0, 0, 0.2, 1) for scroll-triggered fades entering view

Duration Buckets

  • Fast (150ms) — colour shifts, hover state changes
  • Standard (240ms) — card hover lift, button press, dropdown open
  • Slow (320ms) — modal entry, mega-nav reveal
  • Chart (400ms) — metric chart series redraw, axis-tick updates

Per-Component Micro-States

  • Button-primary hoverbg #000#1a1f23 over 150ms standard ease. No translate, no shadow change.
  • Button-brand hoverbg #1e61f0#1850cf over 150ms standard.
  • Button-secondary hoverbg #ffffff#f7f8f9 over 150ms; border stays #cfd4da.
  • Card-elevated hover — shadow intensifies from ambient to standard over 240ms; no translate.
  • Checkbox check — box fills #1e61f0 and the tick draws in over 150ms standard ease.
  • Link hover — colour #1e61f0#1850cf over 150ms; underline grows from 0 to 1px.
  • Mega-nav — hover-open after ~100ms delay; fade + 8px upward slide at 240ms emphasized ease.

Page Transitions

No page-transition animation — navigations are immediate. Within-page anchor jumps use smooth scroll at ~600ms standard ease. Feature-section reveals on scroll use a fade + 16px upward slide at 400ms decel ease, triggered when ~20% of the section enters the viewport.

Reduced Motion

Honours prefers-reduced-motion: reduce. All transitions collapse to opacity-only. Chart redraws snap to final state instead of animating series. Scroll-triggered reveals become immediate (no fade, no slide). Hover lifts collapse to colour-only changes.

9. Accessibility & A11y ✨

Contrast Pairs

Computed against the live tokens (bg #ffffff, text #565656, text-strong #000000, brand #1e61f0):

  • Headline on bg (#000000 on #ffffff) = 21.0:1 (AAA at all sizes)
  • Body on bg (#565656 on #ffffff) = 7.0:1 (AAA at body sizes)
  • Text-muted on bg (#6e6e6e on #ffffff) = 5.2:1 (AA at body sizes)
  • Brand on bg (#1e61f0 on #ffffff) = 4.8:1 (AA at body sizes, AAA at large) — links pass at 16px
  • White on brand (#ffffff on #1e61f0) = 4.4:1 (AA at large / UI; pair with 15px+/600 button text)
  • White on CTA-black (#ffffff on #000000) = 21.0:1 (AAA) — the primary pill is maximum contrast
  • White on bg-dark (#ffffff on #1a1f23) = 14.9:1 (AAA)
  • Badge text on brand-soft (#1543ad on #eaf0fe) = 6.6:1 (AAA)

Note the brand blue on white is 4.8:1 — comfortably AA for links and large/UI text, but blue body copy below 14px should be avoided; use #1543ad (brand-deep, ~7.4:1) where small blue text is unavoidable.

Focus Indicators

2px solid #1e61f0 brand-blue ring + 2px outer rgba(30,97,240,0.20) halo on every interactive element. Inputs swap their border colour to #1e61f0 on focus rather than using a separate ring. Skip-to-content link visible on first Tab, anchored top-left of viewport.

ARIA Patterns

  • Mega-navrole="menu" with aria-haspopup on top-level triggers, arrow-key nav within submenus
  • Search comboboxrole="combobox" with aria-expanded, aria-controls, aria-activedescendant
  • Modal dialogrole="dialog" + aria-modal="true" + focus trap + Escape to close
  • Chart / metric cardsrole="img" with descriptive aria-label summarising the value; data table fallback in <details>
  • Tab patternsrole="tablist" with arrow-key navigation, aria-selected on active tab
  • Checkbox — native <input type="checkbox"> or role="checkbox" with aria-checked reflecting the blue-fill state

Keyboard Navigation

Standard tab order top-down, left-to-right. Arrow keys navigate within tab groups, mega-nav columns, and combobox options. Escape closes any open overlay. Enter / Space activate buttons and toggle checkboxes. Skip-to-content jumps past nav.

Screen Reader Hints

  • Metric / chart cards include a hidden <table> with the same numbers — readers get values, not just visuals.
  • The wordmark glyph uses aria-hidden="true"; the wordmark text carries the label.
  • Status badges include aria-label describing the state even when colour-coded.

Reduced Motion

Honoured globally — see §8 for behaviour.

10. Responsive Behavior

BreakpointWidthKey Changes
Mobile< 640Top nav → hamburger; display-hero 60 → 34px; product mock / metric cards stack below copy; feature grid → 1-col; CTA pair stacks vertically
Tablet640–1024Top nav condenses, secondary nav behind “More”; metric cards 2-up; feature grid → 2-col
Desktop1024–1280Hero 6/6 split; feature grids 3-up; metric callout 3-up
Wide1280–1536Full layout; feature grids 3–4-up; mockups full-fidelity

Touch Targets

Primary CTA pills 44 × 44px minimum. Metric-card tap regions span the full card. Compliance footnote text (12px) is non-interactive and never used as a tap target.

Collapsing Strategy

  • Top nav → hamburger sheet at mobile; mega-nav columns flatten to accordion
  • Hero → copy + mock stack vertically; metric cards reflow to a single column
  • Feature grid → 3-up → 2-up → 1-up
  • Metric callout → 3-up → 1-col, values stay tabular
  • Pricing tiers → 3-up → 1-col (recommended tier first)
  • Footer → multi-col link grid → 2-col → accordion sections

Image Behavior

Product mocks ship as responsive PNG with WebP fallback at 1x and 2x. Logos are SVG with explicit aria-label. Hero illustrations are SVG with max-width constraints — no width: 100% without a cap, to prevent over-scaling on ultra-wide.

Container Queries

Used on metric cards — the large metric-value steps down a tier when the card’s container falls below ~240px so the tabular figure never clips. Feature cards adjust internal padding from 24px (wide) to 16px (narrow) via container query.

11. Content & Voice ✨

Tone

Amplitude’s voice is quantitative and credible — it speaks in measurable outcomes (“understand what drives growth”, “turn product data into decisions”) rather than hype. The register is technically literate but plain-spoken: it avoids both crypto-finance bombast and legacy-enterprise jargon. Claims are anchored to numbers; the brand speaks as an instrument, not a personality.

Microcopy Patterns

  • Button verbs — “Get started”, “Sign Up”, “Get a demo”, “View pricing”. Action-oriented imperatives.
  • Section eyebrows — uppercase 12/600 +0.08em — “PRODUCT ANALYTICS”, “EXPERIMENTATION”, “CDP”. The eyebrow names the category before the headline names the value.
  • Error messages — direct, no apology theatrics. “We couldn’t load that report. Retry or [contact support].” with a retry CTA.
  • Empty states — instructional. “No events tracked yet. [Install the SDK]” with the action linked inline.
  • Success confirmations — minimal. “Saved.” with a checkmark — no celebration toast.

CTA Verb Conventions

  • Primary action — “Get started” (the black pill, top and bottom of page)
  • Secondary — “Sign Up”, “Get a demo”, “Learn more →”
  • Tertiary — “Read the docs”, “View on GitHub”, “See pricing”
  • Amplitude prefers “Get started” over “Sign up” on the primary — it signals self-service before the form appears.

Empty States

“No data yet” patterns explain why and what to do next: “No events have streamed from your app yet. Install the Amplitude SDK — [quickstart guide].” Empty states never apologise; they instruct toward the next quantitative step.

12. Dark Mode & Theming ✨

Amplitude’s marketing surface is light-default with rare full-bleed dark section punctuation (#1a1f23). The in-product analytics app supports a full dark theme (out of scope for this marketing-surface document).

For dark section punctuation, the token swap is minimal:

  • bg#1a1f23
  • text#ffffff
  • text-muted#b4b8bc
  • borderrgba(255,255,255,0.12)
  • Brand blue #1e61f0 stays unchanged — it reads cleanly on both white and dark backgrounds
  • On dark sections the primary CTA switches from black-pill to blue-fill pill (button-brand), since a black pill would vanish against #1a1f23
  • Cards on dark sections use a #0c0e10 background with rgba(255,255,255,0.12) border

Amplitude’s marketing site does not implement a user-toggleable dark theme — the dark sections are content-driven, not preference-driven.

13. Lineage & Influences

Amplitude’s marketing surface is a bright white-canvas analytics page that reads as a clean technical document rather than a branded campaign. The type system is IBM Plex Sans — the IBM-commissioned humanist grotesque designed by Mike Abbink with Bold Monday — which carries a neutral, engineering-credible register: it reads as “made by people who care about systems” rather than “made by a marketing team.” Headlines hit 60px at weight 700 in black #000, body copy runs at a soft warm grey #565656, and the whole page stays monochrome until the signature #1e61f0 blue appears as the interactive accent — the checkbox-checked colour, the link colour, the focus ring. Colour is signal, not decoration.

What it borrows: the monochrome black full-pill primary CTA and single-accent restraint from Vercel and Linear; the white-canvas density and structured feature grids from the observability-marketing playbook (Datadog, New Relic); and the choice of a neutral, open typeface (Plex rather than a proprietary face) to signal “technical, open, systems-minded” — the inverse of Datadog’s bespoke NationalWeb but the same underlying goal of typographic credibility. What it rejects: gradient hero treatments, glass-morphism and neumorphism, accent-colour-as-surface (blue is action and state, never atmosphere), warm-cream canvases, and the data-overload density of a Bloomberg-terminal — Amplitude keeps fewer simultaneous chart series and more whitespace so each metric lands singly.

Influences:

  • IBM Plex (Bold Monday) — Foundation typeface; humanist grotesque commissioned by IBM for a neutral engineering register. https://www.ibm.com/plex/
  • Vercel — Monochrome black full-pill primary CTA, white-canvas restraint, single-accent discipline. https://vercel.com
  • Datadog — Adjacent data-product marketing; white canvas, structured feature grids, charts-as-proof. https://www.datadoghq.com
  • Linear — Tight-tracking 60px+ display headlines, near-monochrome palette with one saturated accent. https://linear.app
  • Mixpanel — Direct product-analytics competitor; contrast for how blue accent and metric cards are deployed. https://mixpanel.com

14. Do’s and Don’ts

Do

  • Keep #1e61f0 blue as the only accent — links, checkbox-checked, focus ring; spend it where the user acts or where state must read
  • Ship the primary CTA as a black full-pill (#000 / 9999px) — the monochrome confidence is the signature
  • Set body copy at the soft grey #565656 and reserve true black #000 for headlines
  • Use IBM Plex Sans for every text role, Plex Mono for code and figures
  • Hold the two-family radius hierarchy: pills for buttons, 6–8px for cards / inputs
  • Anchor sections at 96px vertical padding — airier than Datadog, room for each metric to land
  • Use tnum and zero OpenType features on every metric, axis, and percentage
  • Layer white cards on #f7f8f9 bands for implicit elevation — hairline border, no shadow by default
  • Keep shadows neutral cool-grey — never blue-tinted
  • Switch the primary CTA to the blue-fill pill only on dark sections, where black would vanish

Don’t

  • Don’t fill the primary CTA with brand blue on light sections — black is the standard primary
  • Don’t use blue as a background or atmospheric tint — it is action and state, never surface
  • Don’t set body copy in pure black — the #565656 grey body is the calmer, intended register
  • Don’t introduce a second display typeface or an editorial serif — Plex does every role
  • Don’t warm the white canvas with a cream tilt — the canvas is neutral #ffffff
  • Don’t add gradient hero treatments, glass-morphism, or neumorphism — the system stays flat
  • Don’t square off the CTA buttons — the full pill is the friendly note in a rectilinear system
  • Don’t run blue body text below 14px on white (4.8:1) — use #1543ad brand-deep for small blue text
  • Don’t crowd the page with simultaneous chart series — fewer series, more whitespace is the Amplitude register
  • Don’t drop to a generic system mono — Plex Mono keeps the type voice unified

15. Agent Prompt Guide

Quick Color Reference

  • Brand (accent blue): #1e61f0
  • Brand hover: #1850cf
  • Brand deep (small blue text): #1543ad
  • Headline / strong text: #000000
  • Body text (grey): #565656
  • Body bg (canvas): #ffffff
  • Section band: #f7f8f9
  • CTA black (primary pill): #000000
  • Dark section / dark button: #1a1f23
  • Border (hairline): #e3e6ea

Example Component Prompts

  • “Create an Amplitude hero band: white #ffffff background, 60px IBM Plex Sans weight 700 headline with -0.022em tracking in black #000, body-large 18/400 sub in grey #565656, primary CTA a black full-pill (#000, 9999px, 12×24, white 15/600) reading Get started, secondary white outlined pill (1px #cfd4da border, #171717 text) reading Sign Up.”
  • “Design a metric card: white bg, 1px #e3e6ea border, 8px radius, 20px padding. Large tabular metric value (40px IBM Plex Sans weight 700, tnum) in black #000 reading 2.5x, grey #565656 14px label below reading conversion lift. No shadow — hairline only.”
  • “Build a feature grid band: #f7f8f9 bg, 96px vertical padding, 3-column grid of white feature cards (1px #e3e6ea, 8px radius, 24px padding). Each card: blue #1e61f0 icon, h4 24/600 black title, body 16/400 grey copy, Learn more → link in #1e61f0.”
  • “Compose a checkbox + form row: white input-text (1px #cfd4da, 6px radius, 40px tall), and an 18px checkbox that fills #1e61f0 with a white tick when checked. Focus state: 2px #1e61f0 border + 2px rgba(30,97,240,0.20) ring.”
  • “Render a dark CTA section: full-bleed #1a1f23 bg, 96px section padding, 44px IBM Plex Sans weight 600 white headline, body-large #b4b8bc sub, primary CTA a blue-fill pill (#1e61f0, 9999px) reading Get started (black would vanish here).”
  • “Draw a pricing tier card: white bg, 1px #e3e6ea border, 8px radius, 32px padding, ambient rgba(15,23,42,0.05) 0 8px 24px -6px shadow. Tier name in eyebrow +0.08em uppercase grey, price in 40px Plex Sans 700 tnum black, feature checklist in 16/400 grey with #1f9d57 checkmarks, CTA black full-pill.”

Iteration Guide

  1. Start with the white #ffffff canvas and IBM Plex Sans at 60/700/-0.022em in black — that’s the brand register.
  2. Set body copy to grey #565656, not black. The two-tone text hierarchy (black heads, grey body) is the calm, readable signature.
  3. Make the primary CTA a black full-pill. If your design has a blue primary on a light section, recolour it black and demote the blue to links / focus / checkbox.
  4. Spend #1e61f0 blue only on interaction and state — links, focus ring, checkbox-checked, blue-fill CTAs on dark sections. Never as a background.
  5. Hold the radius split: pills (9999px) for buttons, 6–8px for cards and inputs. If everything is rounded the same amount, you’ve lost the two-family hierarchy.
  6. Cards default to 8px radius with a #e3e6ea hairline and no shadow. Reach for shadow only on lifted surfaces (pricing, modal).
  7. Section padding 96px vertical — airier than Datadog’s 80. If it feels cramped, you’re drifting toward observability-density territory.
  8. Put tnum and zero on every metric, axis, and percentage — quantitative discipline is the whole point of an analytics brand.
Ship with this

Drop amplitude into your project, then ship the actual sections in an afternoon.

1 · install design
npx @webdesignhot/design-md add amplitude
2 · ship landing page
npx agentkit init --design amplitude
How AgentKit reads DESIGN.md