N

Notion Design System

8 colors20 componentsSatoshi / CerealAug 2026

---

version: alpha

name: Notion-design-analysis

description: Notion presents itself as the all-in-one workspace through a confident, illustration-rich brand voice — anchored by a deep navy hero band ({colors.brand-navy}) decorated with brand-colored sticky-note dots and mesh wire illustrations, a signature purple pill primary CTA ({colors.primary}), and a rich palette of pastel-tinted feature cards that echo the colorful database properties of the live product. The system uses a Notion-Sans (Inter-based) typeface across every UI surface, anchors a 4-tier pricing comparison (Free / Plus / Business / Enterprise), and presents the live workspace UI mockup directly inside the hero band. Coverage spans homepage, Enterprise, Product AI, Product Agents, Startups, and Pricing surfaces.

colors:

primary: "#5645d4"

primary-pressed: "#4534b3"

primary-deep: "#3a2a99"

on-primary: "#ffffff"

brand-navy: "#0a1530"

brand-navy-deep: "#070f24"

brand-navy-mid: "#1a2a52"

link-blue: "#0075de"

link-blue-pressed: "#005bab"

brand-orange: "#dd5b00"

brand-orange-deep: "#793400"

brand-pink: "#ff64c8"

brand-pink-deep: "#a02e6d"

brand-purple: "#7b3ff2"

brand-purple-300: "#d6b6f6"

brand-purple-800: "#391c57"

brand-teal: "#2a9d99"

brand-green: "#1aae39"

brand-yellow: "#f5d75e"

brand-brown: "#523410"

card-tint-peach: "#ffe8d4"

card-tint-rose: "#fde0ec"

card-tint-mint: "#d9f3e1"

card-tint-lavender: "#e6e0f5"

card-tint-sky: "#dcecfa"

card-tint-yellow: "#fef7d6"

card-tint-yellow-bold: "#f9e79f"

card-tint-cream: "#f8f5e8"

card-tint-gray: "#f0eeec"

canvas: "#ffffff"

surface: "#f6f5f4"

surface-soft: "#fafaf9"

hairline: "#e5e3df"

hairline-soft: "#ede9e4"

hairline-strong: "#c8c4be"

ink-deep: "#000000"

ink: "#1a1a1a"

charcoal: "#37352f"

slate: "#5d5b54"

steel: "#787671"

stone: "#a4a097"

muted: "#bbb8b1"

on-dark: "#ffffff"

on-dark-muted: "#a4a097"

semantic-success: "#1aae39"

semantic-warning: "#dd5b00"

semantic-error: "#e03131"

typography:

hero-display:

fontFamily: Notion Sans

fontSize: 80px

fontWeight: 600

lineHeight: 1.05

letterSpacing: -2px

display-lg:

fontFamily: Notion Sans

fontSize: 56px

fontWeight: 600

lineHeight: 1.10

letterSpacing: -1px

heading-1:

fontFamily: Notion Sans

fontSize: 48px

fontWeight: 600

lineHeight: 1.15

letterSpacing: -0.5px

heading-2:

fontFamily: Notion Sans

fontSize: 36px

fontWeight: 600

lineHeight: 1.20

letterSpacing: -0.5px

heading-3:

fontFamily: Notion Sans

fontSize: 28px

fontWeight: 600

lineHeight: 1.25

heading-4:

fontFamily: Notion Sans

fontSize: 22px

fontWeight: 600

lineHeight: 1.30

heading-5:

fontFamily: Notion Sans

fontSize: 18px

fontWeight: 600

lineHeight: 1.40

subtitle:

fontFamily: Notion Sans

fontSize: 18px

fontWeight: 400

lineHeight: 1.50

body-md:

fontFamily: Notion Sans

fontSize: 16px

fontWeight: 400

lineHeight: 1.55

body-md-medium:

fontFamily: Notion Sans

fontSize: 16px

fontWeight: 500

lineHeight: 1.55

body-sm:

fontFamily: Notion Sans

fontSize: 14px

fontWeight: 400

lineHeight: 1.50

body-sm-medium:

fontFamily: Notion Sans

fontSize: 14px

fontWeight: 500

lineHeight: 1.50

caption:

fontFamily: Notion Sans

fontSize: 13px

fontWeight: 400

lineHeight: 1.40

caption-bold:

fontFamily: Notion Sans

fontSize: 13px

fontWeight: 600

lineHeight: 1.40

micro:

fontFamily: Notion Sans

fontSize: 12px

fontWeight: 500

lineHeight: 1.40

micro-uppercase:

fontFamily: Notion Sans

fontSize: 11px

fontWeight: 600

lineHeight: 1.40

letterSpacing: 1px

button-md:

fontFamily: Notion Sans

fontSize: 14px

fontWeight: 500

lineHeight: 1.30

rounded:

xs: 4px

sm: 6px

md: 8px

lg: 12px

xl: 16px

xxl: 20px

xxxl: 24px

full: 9999px

spacing:

xxs: 4px

xs: 8px

sm: 12px

md: 16px

lg: 20px

xl: 24px

xxl: 32px

xxxl: 40px

section-sm: 48px

section: 64px

section-lg: 96px

hero: 120px

components:

button-primary:

backgroundColor: "{colors.primary}"

textColor: "{colors.on-primary}"

typography: "{typography.button-md}"

rounded: "{rounded.md}"

padding: "10px 18px"

button-primary-pressed:

backgroundColor: "{colors.primary-pressed}"

textColor: "{colors.on-primary}"

button-primary-disabled:

backgroundColor: "{colors.hairline}"

textColor: "{colors.muted}"

button-dark:

backgroundColor: "{colors.ink-deep}"

textColor: "{colors.on-dark}"

typography: "{typography.button-md}"

rounded: "{rounded.md}"

padding: "10px 18px"

button-secondary:

backgroundColor: "transparent"

textColor: "{colors.ink}"

typography: "{typography.button-md}"

rounded: "{rounded.md}"

padding: "10px 18px"

border: "1px solid {colors.hairline-strong}"

button-on-dark:

backgroundColor: "{colors.on-dark}"

textColor: "{colors.ink}"

typography: "{typography.button-md}"

rounded: "{rounded.md}"

padding: "10px 18px"

button-secondary-on-dark:

backgroundColor: "transparent"

textColor: "{colors.on-dark}"

typography: "{typography.button-md}"

rounded: "{rounded.md}"

padding: "10px 18px"

border: "1px solid {colors.on-dark-muted}"

button-ghost:

backgroundColor: "transparent"

textColor: "{colors.ink}"

typography: "{typography.button-md}"

rounded: "{rounded.sm}"

padding: "8px 12px"

button-link:

backgroundColor: "transparent"

textColor: "{colors.link-blue}"

typography: "{typography.body-sm-medium}"

padding: "0"

card-base:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.lg}"

padding: "{spacing.xl}"

border: "1px solid {colors.hairline}"

card-feature:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

border: "1px solid {colors.hairline}"

card-feature-yellow-bold:

backgroundColor: "{colors.card-tint-yellow-bold}"

textColor: "{colors.charcoal}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

card-feature-peach:

backgroundColor: "{colors.card-tint-peach}"

textColor: "{colors.charcoal}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

card-feature-rose:

backgroundColor: "{colors.card-tint-rose}"

textColor: "{colors.charcoal}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

card-feature-mint:

backgroundColor: "{colors.card-tint-mint}"

textColor: "{colors.charcoal}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

card-feature-sky:

backgroundColor: "{colors.card-tint-sky}"

textColor: "{colors.charcoal}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

card-feature-lavender:

backgroundColor: "{colors.card-tint-lavender}"

textColor: "{colors.charcoal}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

card-feature-yellow:

backgroundColor: "{colors.card-tint-yellow}"

textColor: "{colors.charcoal}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

card-feature-cream:

backgroundColor: "{colors.card-tint-cream}"

textColor: "{colors.charcoal}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

card-agent-tile:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.lg}"

padding: "{spacing.xl}"

border: "1px solid {colors.hairline}"

card-template:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.lg}"

padding: "{spacing.lg}"

border: "1px solid {colors.hairline}"

card-startup-perk:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.lg}"

padding: "{spacing.xl}"

border: "1px solid {colors.hairline}"

pricing-card:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

border: "1px solid {colors.hairline}"

pricing-card-featured:

backgroundColor: "{colors.surface}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

border: "2px solid {colors.primary}"

text-input:

backgroundColor: "{colors.canvas}"

textColor: "{colors.ink}"

typography: "{typography.body-md}"

rounded: "{rounded.md}"

padding: "{spacing.sm} {spacing.md}"

border: "1px solid {colors.hairline-strong}"

height: 44px

text-input-focused:

backgroundColor: "{colors.canvas}"

textColor: "{colors.ink}"

border: "2px solid {colors.primary}"

search-pill:

backgroundColor: "{colors.surface}"

textColor: "{colors.steel}"

typography: "{typography.body-md}"

rounded: "{rounded.md}"

padding: "{spacing.sm} {spacing.md}"

height: 44px

border: "1px solid {colors.hairline}"

pill-tab:

backgroundColor: "transparent"

textColor: "{colors.steel}"

typography: "{typography.body-sm-medium}"

rounded: "{rounded.full}"

padding: "{spacing.xs} {spacing.md}"

border: "1px solid {colors.hairline}"

pill-tab-active:

backgroundColor: "{colors.ink-deep}"

textColor: "{colors.on-dark}"

rounded: "{rounded.full}"

border: "1px solid {colors.ink-deep}"

segmented-tab:

backgroundColor: "transparent"

textColor: "{colors.steel}"

typography: "{typography.body-sm-medium}"

padding: "{spacing.sm} {spacing.md}"

border: "0 0 2px transparent solid"

segmented-tab-active:

backgroundColor: "transparent"

textColor: "{colors.ink}"

typography: "{typography.body-sm-medium}"

border: "0 0 2px {colors.ink} solid"

badge-purple:

backgroundColor: "{colors.primary}"

textColor: "{colors.on-primary}"

typography: "{typography.caption-bold}"

rounded: "{rounded.full}"

padding: "4px 10px"

badge-pink:

backgroundColor: "{colors.brand-pink}"

textColor: "{colors.on-primary}"

typography: "{typography.caption-bold}"

rounded: "{rounded.full}"

padding: "4px 10px"

badge-orange:

backgroundColor: "{colors.brand-orange}"

textColor: "{colors.on-primary}"

typography: "{typography.caption-bold}"

rounded: "{rounded.full}"

padding: "4px 10px"

badge-tag-purple:

backgroundColor: "{colors.card-tint-lavender}"

textColor: "{colors.brand-purple-800}"

typography: "{typography.caption-bold}"

rounded: "{rounded.sm}"

padding: "2px 8px"

badge-tag-orange:

backgroundColor: "{colors.card-tint-peach}"

textColor: "{colors.brand-orange-deep}"

typography: "{typography.caption-bold}"

rounded: "{rounded.sm}"

padding: "2px 8px"

badge-tag-green:

backgroundColor: "{colors.card-tint-mint}"

textColor: "{colors.brand-green}"

typography: "{typography.caption-bold}"

rounded: "{rounded.sm}"

padding: "2px 8px"

badge-popular:

backgroundColor: "{colors.primary}"

textColor: "{colors.on-primary}"

typography: "{typography.caption-bold}"

rounded: "{rounded.full}"

padding: "4px 10px"

promo-banner:

backgroundColor: "{colors.surface}"

textColor: "{colors.ink}"

typography: "{typography.body-sm-medium}"

padding: "{spacing.sm} {spacing.md}"

hero-band-dark:

backgroundColor: "{colors.brand-navy}"

textColor: "{colors.on-dark}"

rounded: "0"

padding: "{spacing.hero}"

workspace-mockup-card:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.lg}"

padding: "0"

border: "1px solid {colors.hairline}"

shadow: "rgba(15, 15, 15, 0.2) 0px 24px 48px -8px"

cta-banner-light:

backgroundColor: "{colors.surface}"

textColor: "{colors.ink}"

rounded: "{rounded.lg}"

padding: "{spacing.section}"

comparison-table:

backgroundColor: "{colors.canvas}"

textColor: "{colors.ink}"

typography: "{typography.body-sm}"

rounded: "{rounded.md}"

border: "1px solid {colors.hairline}"

comparison-row:

backgroundColor: "{colors.canvas}"

textColor: "{colors.ink}"

padding: "{spacing.md} {spacing.lg}"

border: "0 0 1px {colors.hairline-soft} solid"

testimonial-card:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.lg}"

padding: "{spacing.xxl}"

border: "1px solid {colors.hairline}"

logo-wall-item:

backgroundColor: "transparent"

textColor: "{colors.steel}"

typography: "{typography.body-md-medium}"

padding: "{spacing.lg}"

faq-accordion-item:

backgroundColor: "{colors.canvas}"

rounded: "{rounded.md}"

padding: "{spacing.xl}"

border: "0 0 1px {colors.hairline} solid"

stat-row:

backgroundColor: "{colors.surface}"

textColor: "{colors.ink}"

rounded: "{rounded.lg}"

padding: "{spacing.section-sm}"

footer-region:

backgroundColor: "{colors.canvas}"

textColor: "{colors.charcoal}"

typography: "{typography.body-sm}"

padding: "{spacing.section} {spacing.xxl}"

border: "1px solid {colors.hairline}"

footer-link:

backgroundColor: "transparent"

textColor: "{colors.steel}"

typography: "{typography.body-sm}"

padding: "{spacing.xxs} 0"

---

Overview

Section 01

Notion presents itself as the all-in-one workspace through a confident, illustration-rich brand voice. The homepage opens with **"Meet the night shift."** rendered centered over a deep navy hero band ({colors.brand-navy}), decorated with brand-colored sticky-note dots and mesh wire illustrations scattered around the headline. The signature **purple pill primary CTA** ({colors.primary}) "Get Notion free" sits at the visual center, paired with an outlined "Request a demo" secondary. Below the buttons, a real Notion workspace UI mockup card (the "Ramp HQ" kanban board) breaks out of the hero band with a deep diffuse drop shadow.

Below the hero, the page cycles through a distinctive sequence of feature sections: a dense sticky-note "Keep work moving 24/7" panel with red/blue/green/purple/teal status icons; a **bold yellow** ({colors.card-tint-yellow-bold}) "Ask your on-demand assistants" banner card flanked by orange/rose/mint pastel feature tiles showing assistant UI mockups; and a "Bring all your work together" 3-column grid with brand-colored mockups (sky-blue tutorial card, light Notion calendar, brown/rust testimonial slate). The pricing page renders 4 tiers (Free / Plus / Business / Enterprise) horizontally with one tier featured (purple-bordered) and a dense feature comparison table running below.

The system uses a Notion-Sans typeface (Inter-based) across every UI surface — humanist-geometric character that pairs naturally with the colorful illustrations. Buttons are `{rounded.md}` (8px) rectangles, NOT pills — distinguishing Notion's sober rectangular geometry from competitors that use pills universally. Cards use `{rounded.lg}` (12px) consistently.

**Key Characteristics:**

Deep navy hero band ({colors.brand-navy}) with scattered sticky-note dots + mesh wire decorative illustrations
Signature purple pill ({colors.primary}) primary CTA — Notion's recognizable "Get Notion free" button color
Real Notion workspace UI mockup card embedded in the hero with deep drop shadow
Bold yellow feature banner ({colors.card-tint-yellow-bold}) for high-emphasis content sections
Pastel feature card palette (peach, rose, mint, lavender, sky, yellow) echoing the live product database properties
Notion-Sans (Inter-based) across every UI surface
8px-rounded buttons (NOT pills), 12px-rounded cards — sober editorial geometry
4-tier pricing comparison with dense feature table
Centered hero layout (different from the left-aligned norm of most B2B SaaS)

Colors

Section 02

> Source pages: notion.com/ (homepage), /enterprise, /product/ai, /product/agents, /startups, /pricing. Token coverage was identical across all six pages.

Brand & Primary

Section 03
Notion Purple ({colors.primary}): Signature primary CTA color — the unmistakable "Get Notion free" pill button. Reserved for the dominant CTA only.
Purple Pressed ({colors.primary-pressed}): Pressed-state variant
Purple Deep ({colors.primary-deep}): Deeper variant for emphasis
Brand Navy ({colors.brand-navy}): Hero band background — deep navy
Brand Navy Deep ({colors.brand-navy-deep}): Deeper navy for promo banner
Brand Navy Mid ({colors.brand-navy-mid}): Mid-spectrum navy
Link Blue ({colors.link-blue}): Inline text link blue (NOT primary CTA)
Link Blue Pressed ({colors.link-blue-pressed}): Pressed-state link blue

Brand Color Spectrum (echoes live product database properties)

Section 04
Brand Pink ({colors.brand-pink}): Pink accent
Brand Pink Deep ({colors.brand-pink-deep}): Deeper pink
Brand Orange ({colors.brand-orange}): Orange accent
Brand Orange Deep ({colors.brand-orange-deep}): Deeper orange-rust
Brand Purple ({colors.brand-purple}): Purple accent variant
Brand Purple 300 ({colors.brand-purple-300}): Light purple
Brand Purple 800 ({colors.brand-purple-800}): Deep purple for tag text
Brand Teal ({colors.brand-teal}): Teal accent
Brand Green ({colors.brand-green}): Bright green
Brand Yellow ({colors.brand-yellow}): Soft yellow
Brand Brown ({colors.brand-brown}): Brand brown for "earthy" tints

Card Tints (Pastel Feature Card Backgrounds)

Section 05
Tint Peach ({colors.card-tint-peach}): Pale peach
Tint Rose ({colors.card-tint-rose}): Pale rose-pink
Tint Mint ({colors.card-tint-mint}): Pale mint-green
Tint Lavender ({colors.card-tint-lavender}): Pale lavender
Tint Sky ({colors.card-tint-sky}): Pale sky-blue
Tint Yellow ({colors.card-tint-yellow}): Pale yellow
Tint Yellow Bold ({colors.card-tint-yellow-bold}): Bold yellow for high-emphasis feature banners ("Ask your on-demand assistants")
Tint Cream ({colors.card-tint-cream}): Cream tint
Tint Gray ({colors.card-tint-gray}): Neutral surface

Surface

Section 06
Canvas White ({colors.canvas}): Page background and primary card surface
Surface ({colors.surface}): Subtle section backgrounds, search-pill rest, featured pricing tier
Surface Soft ({colors.surface-soft}): Quieter section divisions
Hairline ({colors.hairline}): 1px borders and primary dividers
Hairline Soft ({colors.hairline-soft}): Quieter dividers
Hairline Strong ({colors.hairline-strong}): Stronger 1px border for inputs

Text

Section 07
Ink Deep ({colors.ink-deep}): Pure black for emphasis
Ink ({colors.ink}): Primary headlines and body text
Charcoal ({colors.charcoal}): Body emphasis (Notion's signature warm-charcoal)
Slate ({colors.slate}): Secondary text
Steel ({colors.steel}): Tertiary, footer links
Stone ({colors.stone}): Muted labels
Muted ({colors.muted}): Disabled, placeholders
On Dark ({colors.on-dark}): White text on dark surfaces
On Dark Muted ({colors.on-dark-muted}): Reduced-opacity white

Semantic

Section 08
Success ({colors.semantic-success}): Confirmation green
Warning ({colors.semantic-warning}): Mid-priority alerts (orange)
Error ({colors.semantic-error}): Validation errors (red)

Typography

Section 09

Font Family

Section 010

**Notion Sans** (primary): Notion's custom Inter-based variable typeface. Fallbacks: Inter, -apple-system, system-ui, 'Segoe UI', Helvetica, sans-serif. Humanist-geometric character used across every UI surface.

Hierarchy

Section 011

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

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

| `{typography.hero-display}` | 80px | 600 | 1.05 | -2px | Hero ("Meet the night shift") |

| `{typography.display-lg}` | 56px | 600 | 1.10 | -1px | Section openers |

| `{typography.heading-1}` | 48px | 600 | 1.15 | -0.5px | Page-level headlines ("Try for free") |

| `{typography.heading-2}` | 36px | 600 | 1.20 | -0.5px | Subsection headlines ("Keep work moving 24/7") |

| `{typography.heading-3}` | 28px | 600 | 1.25 | 0 | Card titles |

| `{typography.heading-4}` | 22px | 600 | 1.30 | 0 | Feature tile titles |

| `{typography.heading-5}` | 18px | 600 | 1.40 | 0 | FAQ questions |

| `{typography.subtitle}` | 18px | 400 | 1.50 | 0 | Hero subtitle |

| `{typography.body-md}` | 16px | 400 | 1.55 | 0 | Primary body text |

| `{typography.body-md-medium}` | 16px | 500 | 1.55 | 0 | Body emphasis |

| `{typography.body-sm}` | 14px | 400 | 1.50 | 0 | Secondary body |

| `{typography.body-sm-medium}` | 14px | 500 | 1.50 | 0 | Active sidebar, button labels |

| `{typography.caption-bold}` | 13px | 600 | 1.40 | 0 | Badge labels |

| `{typography.button-md}` | 14px | 500 | 1.30 | 0 | Button labels |

Principles

Section 012
Tight hero leading (1.05) on 80px display
Negative letter-spacing on display sizes (-2px to -0.5px)
Generous body leading (1.55) for documentation readability
600 weight for headlines + 500 for buttons; 400 body

Layout

Section 013

Spacing System

Section 014
Base unit: 4px (8px primary increment)
Tokens: `{spacing.xxs}` (4px) through `{spacing.hero}` (120px)
Section rhythm: Marketing pages use `{spacing.section-lg}` (96px); pricing tightens to `{spacing.section}` (64px)

Grid & Container

Section 015
1280px max-width with 32px gutters
Pricing: 4-tier card row at desktop with dense comparison table
Homepage: centered hero with workspace mockup below buttons; alternating colorful feature card sections

Whitespace Philosophy

Section 016

Marketing surfaces use generous breathing room between feature card bands. Workspace mockup card on hero gets full-width treatment with deep drop shadow.

Elevation & Depth

Section 017

| Level | Treatment | Use |

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

| 0 (flat) | No shadow; `{colors.hairline}` border | Default cards, table rows |

| 1 (subtle) | `rgba(15, 15, 15, 0.04) 0px 1px 2px 0px` | Hover-elevated tiles |

| 2 (card) | `rgba(15, 15, 15, 0.08) 0px 4px 12px 0px` | Feature cards |

| 3 (mockup) | `rgba(15, 15, 15, 0.20) 0px 24px 48px -8px` | Hero workspace mockup card |

| 4 (modal) | `rgba(15, 15, 15, 0.16) 0px 16px 48px -8px` | Modals, dropdowns |

Decorative Depth

Section 018
Hero workspace mockup card uses deep diffuse drop shadow (Level 3) — significant elevation against the navy band
Pastel feature cards carry their own visual weight via tint backgrounds
Sticky-note dot illustrations and mesh wires add atmospheric decoration to navy hero

Shapes

Section 019

Border Radius Scale

Section 020

| Token | Value | Use |

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

| `{rounded.xs}` | 4px | Tag chips |

| `{rounded.sm}` | 6px | Type badges |

| `{rounded.md}` | 8px | Buttons, inputs, search-pill |

| `{rounded.lg}` | 12px | Cards, pricing tiers, agent tiles, workspace mockup |

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

| `{rounded.xxl}` | 20px | Featured product showcases |

| `{rounded.xxxl}` | 24px | Larger feature cards |

| `{rounded.full}` | 9999px | Status badges, pill tabs (NOT regular buttons) |

Notion's geometry is sober-editorial — `{rounded.md}` (8px) buttons distinguish it from pill-button-everywhere brands.

Components

Section 021

> Per the no-hover policy, hover states are NOT documented.

Buttons

Section 022

**`button-primary`** — Signature purple rectangular primary CTA, the dominant action.

Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.button-md}`, padding `10px 18px`, rounded `{rounded.md}`.
Pressed state `button-primary-pressed` deepens to `{colors.primary-pressed}`.
Disabled state uses `{colors.hairline}` background.

**`button-dark`** — Black rectangular CTA on light backgrounds.

Background `{colors.ink-deep}`, text `{colors.on-dark}`, typography `{typography.button-md}`, padding `10px 18px`, rounded `{rounded.md}`.

**`button-secondary`** — Outlined rectangular for secondary actions ("Request a demo").

Background transparent, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, typography `{typography.button-md}`, padding `10px 18px`, rounded `{rounded.md}`.

**`button-on-dark`** — White button on dark hero bands.

Background `{colors.on-dark}`, text `{colors.ink}`, typography `{typography.button-md}`, padding `10px 18px`, rounded `{rounded.md}`.

**`button-secondary-on-dark`** — Outlined button on dark.

Background transparent, text `{colors.on-dark}`, border `1px solid {colors.on-dark-muted}`, typography `{typography.button-md}`, padding `10px 18px`, rounded `{rounded.md}`.

**`button-ghost`** — Quieter ghost button.

Background transparent, text `{colors.ink}`, typography `{typography.button-md}`, padding `8px 12px`, rounded `{rounded.sm}`.

**`button-link`** — Inline blue text link (NOT primary purple).

Background transparent, text `{colors.link-blue}`, typography `{typography.body-sm-medium}`, padding `0`.

Cards & Containers

Section 023

**`card-base`** — Standard content card.

Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xl}`, border `1px solid {colors.hairline}`.

**`card-feature`** — Feature card with larger padding.

Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline}`.

**`card-feature-yellow-bold`** — Bold yellow feature banner for high-emphasis content ("Ask your on-demand assistants").

Background `{colors.card-tint-yellow-bold}`, text `{colors.charcoal}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`.

**`card-feature-peach`** + **`card-feature-rose`** + **`card-feature-mint`** + **`card-feature-sky`** + **`card-feature-lavender`** + **`card-feature-yellow`** + **`card-feature-cream`** — Pastel-tinted feature cards.

Each variant uses its corresponding `card-tint-*` color as background, text `{colors.charcoal}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`.

**`card-agent-tile`** — Agent assistant tile.

Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xl}`, border `1px solid {colors.hairline}`.

**`card-template`** — Template thumbnail card.

Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.lg}`, border `1px solid {colors.hairline}`.

**`card-startup-perk`** — Startup-program perk grid item.

Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xl}`, border `1px solid {colors.hairline}`.

**`pricing-card`** — Standard pricing tier card.

Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline}`.

**`pricing-card-featured`** — Featured pricing tier (Plus or Business — purple-bordered).

Background `{colors.surface}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `2px solid {colors.primary}`.

Inputs & Forms

Section 024

**`text-input`** — Standard text field.

Background `{colors.canvas}`, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`, height 44px.

**`text-input-focused`** — Activated state.

Border switches to `2px solid {colors.primary}` (purple).

**`search-pill`** — Search bar.

Background `{colors.surface}`, text `{colors.steel}`, typography `{typography.body-md}`, rounded `{rounded.md}`, height 44px, border `1px solid {colors.hairline}`.

Tabs

Section 025

**`pill-tab`** + **`pill-tab-active`** — Pill-style tab nav for top-level switching.

Inactive: text `{colors.steel}`, border `1px solid {colors.hairline}`, padding `{spacing.xs} {spacing.md}`, rounded `{rounded.full}`.
Active: background `{colors.ink-deep}`, text `{colors.on-dark}`.

**`segmented-tab`** + **`segmented-tab-active`** — Underline-style tab navigation.

Inactive: text `{colors.steel}`, no border. Active: text `{colors.ink}`, 2px bottom border in `{colors.ink}`.

Badges & Status

Section 026

**`badge-purple`** — Purple status badge (matches primary CTA).

Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.

**`badge-pink`** — Pink accent badge.

Background `{colors.brand-pink}`, text `{colors.on-primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.

**`badge-orange`** — Orange accent badge.

Background `{colors.brand-orange}`, text `{colors.on-primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.

**`badge-tag-purple`** — Soft-purple feature tag chip.

Background `{colors.card-tint-lavender}`, text `{colors.brand-purple-800}`, typography `{typography.caption-bold}`, rounded `{rounded.sm}`, padding `2px 8px`.

**`badge-tag-orange`** — Soft-orange feature tag.

Background `{colors.card-tint-peach}`, text `{colors.brand-orange-deep}`, typography `{typography.caption-bold}`, rounded `{rounded.sm}`, padding `2px 8px`.

**`badge-tag-green`** — Soft-mint feature tag.

Background `{colors.card-tint-mint}`, text `{colors.brand-green}`, typography `{typography.caption-bold}`, rounded `{rounded.sm}`, padding `2px 8px`.

**`badge-popular`** — "Most Popular" tier indicator.

Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.

**`promo-banner`** — Light surface promo strip ABOVE the top nav.

Background `{colors.surface}`, text `{colors.ink}`, typography `{typography.body-sm-medium}`, padding `{spacing.sm} {spacing.md}`. ("Developers: Get a first look at our new Developer Platform on May 13.")

Tables

Section 027

**`comparison-table`** — Pricing feature comparison table.

Background `{colors.canvas}`, text `{colors.ink}`, typography `{typography.body-sm}`, rounded `{rounded.md}`, border `1px solid {colors.hairline}`.

**`comparison-row`** — Individual feature row.

Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.md} {spacing.lg}`, bottom border `1px solid {colors.hairline-soft}`.

Documentation Components

Section 028

**`workspace-mockup-card`** — Embedded Notion workspace UI mockup on hero band ("Ramp HQ" kanban board).

Background `{colors.canvas}`, rounded `{rounded.lg}`, border `1px solid {colors.hairline}`, deep shadow `rgba(15, 15, 15, 0.20) 0px 24px 48px -8px`. Carries actual Notion product UI mock.

**`testimonial-card`** — Customer testimonial card.

Background `{colors.canvas}`, rounded `{rounded.lg}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline}`.

**`logo-wall-item`** — Customer logo wordmark cell.

Background transparent, text `{colors.steel}`, typography `{typography.body-md-medium}`, padding `{spacing.lg}`.

**`faq-accordion-item`** — FAQ panel.

Background `{colors.canvas}`, rounded `{rounded.md}`, padding `{spacing.xl}`, bottom border `1px solid {colors.hairline}`.

**`stat-row`** — Stats strip with bar chart visualization ("More productivity. Fewer tools.").

Background `{colors.surface}`, text `{colors.ink}`, rounded `{rounded.lg}`, padding `{spacing.section-sm}`.

**`cta-banner-light`** — Light surface CTA banner.

Background `{colors.surface}`, text `{colors.ink}`, rounded `{rounded.lg}`, padding `{spacing.section}`.

Navigation

Section 029

**Top Navigation (Marketing)** — Sticky white bar.

Background `{colors.canvas}`, height ~64px, bottom border `1px solid {colors.hairline}`.
Left: Notion "N" logo + "Product / AI / Solutions / Resources / Enterprise / Pricing / Request a demo" links.
Right: "Get Notion free" purple button + "Log in" link.

Signature Components

Section 030

**`hero-band-dark`** — Deep navy hero band with embedded workspace mockup and decorative dots/wires.

Background `{colors.brand-navy}`, text `{colors.on-dark}`, padding `{spacing.hero}`.
Layout: centered headline `{typography.hero-display}`, subtitle, button row (`button-primary` purple + `button-secondary-on-dark`), `workspace-mockup-card` below.
Atmospheric decoration: scattered colorful sticky-note dots and mesh wire illustrations around the hero content (NOT a literal pattern fill — handled per-page via SVG/illustration).

**`footer-region`** — Multi-column light footer.

Background `{colors.canvas}`, padding `{spacing.section} {spacing.xxl}`, top border `1px solid {colors.hairline}`.
6-column link grid (Product / Download / Resources / Notion for / Company / Legal).

**`footer-link`** — Individual footer link.

Background transparent, text `{colors.steel}`, typography `{typography.body-sm}`, padding `{spacing.xxs} 0`.

Do's and Don'ts

Section 031

Do

Section 032
Use `{colors.primary}` (purple) as the dominant CTA across all surfaces — it's the brand's recognizable signal
Pair deep navy hero bands ({colors.brand-navy}) with the purple button + decorative sticky-note dots
Use pastel feature card tints (peach, rose, mint, lavender, sky, yellow) generously
Use `{colors.card-tint-yellow-bold}` for high-emphasis "Ask the assistant"-style banner cards
Apply `{rounded.md}` (8px) to buttons consistently — Notion uses rectangles, not pills
Apply `{rounded.lg}` (12px) to all card families
Maintain Notion-Sans across every UI surface
Use the workspace mockup card on hero bands to show actual product UI

Don't

Section 033
Don't use the purple for body text or large background surfaces
Don't use pill-shaped buttons; Notion's geometry is rectangular-sober
Don't mix link-blue ({colors.link-blue}) with primary-purple ({colors.primary}) — they have distinct roles
Don't apply heavy shadows on flat documentation cards
Don't replace Notion-Sans with a generic Inter

Responsive Behavior

Section 034

Breakpoints

Section 035

| Name | Width | Key Changes |

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

| Mobile (small) | < 480px | Single column. Hero 36px. Pricing 1-up. |

| Mobile (large) | 480 – 767px | Feature cards 2-up. Hero 48px. |

| Tablet | 768 – 1023px | 2-column feature grids. Hero 56px. |

| Desktop | 1024 – 1279px | 4-tier pricing card row. Hero 72px. |

| Wide Desktop | ≥ 1280px | Full 80px hero presentation. |

Touch Targets

Section 036
Buttons render at 40–44px effective height
Form inputs render at 44px height
Pill tabs ~32px → 44px on mobile

Collapsing Strategy

Section 037
Promo banner stays full-width; truncates at < 480px
Top nav below 1024px collapses to hamburger
Hero band: workspace mockup card moves below text/buttons on mobile
Pricing tiers: 4-column → 2-column tablet → 1-column mobile
Feature cards: 3-up desktop → 2-up tablet → 1-up mobile
Hero typography: 80px → 56px → 48px → 36px
Footer: 6-column desktop → 3-column tablet → accordion mobile

Image Behavior

Section 038
Workspace mockup card maintains aspect ratio
Pastel illustrations inside feature cards scale proportionally
Customer logo wall: wordmarks at consistent 60–80px height

Iteration Guide

Section 039

1. Focus on ONE component at a time

2. Reference component names and tokens directly

3. Run `npx @google/design.md lint DESIGN.md` after edits

4. Add new variants as separate `components:` entries

5. Default to `{typography.body-md}` for body

6. Keep `{colors.primary}` (purple) as the primary CTA — distinct from `{colors.link-blue}` for inline links

7. Use `{rounded.md}` for buttons (rectangles), `{rounded.lg}` for cards, `{rounded.full}` for pill tabs/badges only

Known Gaps

Section 040
Specific dark-mode token values not surfaced beyond hero bands
Animation/transition timings not extracted; recommend 150–200ms ease
Form validation success state not explicitly captured
Pastel-tint mapping (which feature uses which tint) is observation-based — the actual brand library may have more entries
72,570+ DESIGN.md files generated