Coinbase Design System

Crypto exchange · High-trust institutional layout with solid blue accents...
Back to Home
01

Visual Theme & Atmosphere

Coinbase reads like an institutional financial brand that happens to trade crypto — the marketing surfaces are quiet, white-canvas, editorially-spaced, and almost monochromatic. The single brand voltage is Coinbase Blue ({colors.primary} — #0052ff), used scarcely: every primary CTA pill, the brand wordmark, and inline emphasis links. Beyond that one blue, the system is white canvas + ink + soft gray elevation bands + a deep near-black editorial canvas ({colors.surface-dark} — #0a0b0d) for full-bleed product-mockup heroes.

Type pairs CoinbaseDisplay for hero headlines with CoinbaseSans for body, captions, and navigation. Display sits at weight 400 — not the 700+ typical of trading platforms. The choice signals editorial calm and institutional trust rather than fintech urgency.

...

Key Characteristics:

  • Single accent color: {colors.primary} (#0052ff Coinbase Blue) carries every primary CTA, wordmark, and inline brand link. Used scarcely.
  • ...

Live Visual Theme Representation:

Visual Theme Example

02

Color Palette & Roles

Brand & Accent

  • Coinbase Blue ({colors.primary} — #0052ff): The single brand color. Every primary CTA pill, the Coinbase wordmark, and inline brand links.
  • Coinbase Blue Active ({colors.primary-active} — #003ecc): Press-state darken on the primary pill.
  • ...

Surface

  • Canvas ({colors.canvas} — #ffffff): The default page floor.
  • Surface Soft ({colors.surface-soft} — #f7f7f7): Subtle alternating band surface.
  • ...

Hairlines

  • Hairline ({colors.hairline} — #dee1e6): Default 1px divider on white surfaces.
  • Hairline Soft ({colors.hairline-soft} — #eef0f3): Lighter divider — same hex as {colors.surface-strong}.

Text

  • Ink ({colors.ink} — #0a0b0d): Display headings, primary nav, body emphasis.
  • Body ({colors.body} — #5b616e): Default running-text — slightly cool gray.
  • ...

Trading Semantics

  • Semantic Up ({colors.semantic-up} — #05b169): "Price up" green, text color only.
  • Semantic Down ({colors.semantic-down} — #cf202f): "Price down" red, text color only.
primary
#0052ff
primary-active
#003ecc
primary-disabled
#a8b8cc
ink
#0a0b0d
body
#5b616e
body-strong
#0a0b0d
muted
#7c828a
muted-soft
#a8acb3
hairline
#dee1e6
hairline-soft
#eef0f3
canvas
#ffffff
surface-soft
#f7f7f7
surface-card
#ffffff
surface-strong
#eef0f3
surface-dark
#0a0b0d
surface-dark-elevated
#16181c
on-primary
#ffffff
on-dark
#ffffff
on-dark-soft
#a8acb3
semantic-up
#05b169
semantic-down
#cf202f
accent-yellow
#f4b000
03

Typography Rules

Font Family

The system runs CoinbaseDisplay (display headlines), CoinbaseSans (body, navigation, captions, buttons), CoinbaseIcons (icon font), and CoinbaseMono for tabular numerical data. Fallback stack: -apple-system, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif.

The display/body split is functional: CoinbaseDisplay carries hero headlines only; CoinbaseSans carries everything else.

Hierarchy

TokenSizeWeightLine HeightLetter SpacingUse
..................

Principles

  • Display weight stays at 400. The single most distinctive typographic choice — signals "calm institutional brand" rather than "trading-platform urgency."
  • Negative letter-spacing on display only. Display uses -1px to -2px tracking; body stays at 0.
  • ...

Note on Font Substitutes

...
  • CoinbaseDisplay → Inter at weight 400, letter-spacing -1.5%.
  • CoinbaseSans → Inter at weight 400/600.
  • ...
Dynamic Preview:
display-mega size: 80px | weight: 400 | height: 1.0 | spacing: -2px
The quick brown fox jumps over the lazy dog
display-xl size: 64px | weight: 400 | height: 1.0 | spacing: -1.6px
The quick brown fox jumps over the lazy dog
display-lg size: 52px | weight: 400 | height: 1.0 | spacing: -1.3px
The quick brown fox jumps over the lazy dog
display-md size: 44px | weight: 400 | height: 1.09 | spacing: -1px
The quick brown fox jumps over the lazy dog
display-sm size: 36px | weight: 400 | height: 1.11 | spacing: -0.5px
The quick brown fox jumps over the lazy dog
title-lg size: 32px | weight: 400 | height: 1.13 | spacing: -0.4px
The quick brown fox jumps over the lazy dog
title-md size: 18px | weight: 600 | height: 1.33 | spacing: 0
The quick brown fox jumps over the lazy dog
title-sm size: 16px | weight: 600 | height: 1.25 | spacing: 0
The quick brown fox jumps over the lazy dog
body-md size: 16px | weight: 400 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
body-strong size: 16px | weight: 700 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
body-sm size: 14px | weight: 400 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
caption size: 13px | weight: 400 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
caption-strong size: 12px | weight: 600 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
number-display size: 18px | weight: 500 | height: 1.4 | spacing: 0
The quick brown fox jumps over the lazy dog
button size: 16px | weight: 600 | height: 1.15 | spacing: 0
The quick brown fox jumps over the lazy dog
nav-link size: 14px | weight: 500 | height: 1.4 | spacing: 0
The quick brown fox jumps over the lazy dog
04

Layout Principles

Spacing System

  • Base unit: 4px.
  • Tokens: {spacing.xxs} 4px · {spacing.xs} 8px · {spacing.sm} 12px · {spacing.base} 16px · {spacing.md} 20px · {spacing.lg} 24px · {spacing.xl} 32px · {spacing.xxl} 48px · {spacing.section} 96px.
  • ...

Grid & Container

  • Max content width: ~1200px centered. Hero photography full-bleed.
  • Editorial body: Single 12-column grid.
  • ...

Whitespace Philosophy

Generous editorial pacing — closer to Bloomberg or the Financial Times than to a trading dashboard. 96px between bands; cards inside bands sit 24px apart. Density lives behind login walls, not on marketing.

Grid Layout Wireframe Mockup:

Layout Grid Example

Layout Wireframe blueprint
1
2
3
4
5
6
7
8
9
10
11
12
Gutter spacing: 16px / 24px
Side Margins: 24px (Mobile) / 48px (Desktop)
Max Container Width: 1200px
05

Depth & Elevation

LevelTreatmentUse
.........

Decorative Depth

  • Layered product-UI cards inside dark heroes is the most distinctive decorative pattern — a {component.product-ui-card-dark} floats above a darker base canvas, often with a second smaller card overlapping at an angle.
  • Geometric brand illustrations carry illustrative depth where shadows would otherwise.

Elevation Level Showcase:

Elevation Level Example

Flat Surface (Level 0)

Used for background layers, sidebar headers, or baseline borders.

Low Elevation (Level 1 / Card)

Used for floating product elements, cards, and hover states.

High Elevation (Level 2 / Popover & Dropdown)

Used for modals, select menus, code editor tooltips, and overlay headers.

Border Radius & Shape Scale:

radius-sm 4px
radius-md 6px
radius-lg 8px
radius-pill Pill / Tag
06

Component Stylings

Border Radius Scale

TokenValueUse
.........
Pill for interactive, card-radius (24px) for containers, full circle for icons. Sharp corners absent.

Top Navigation

top-nav-light — Default top nav on white pages. Background {colors.canvas}, text {colors.ink}, height 64px. Layout: Coinbase wordmark left, primary horizontal menu (Cryptocurrencies / Individuals / Businesses / Institutions / Developers / Company), search-icon + globe + Sign In + Sign Up CTAs right.

top-nav-on-dark — Top nav over a dark hero band. Background {colors.surface-dark}, text {colors.on-dark}. Same layout.

Buttons

button-primary — The signature Coinbase Blue pill. Background {colors.primary}, text {colors.on-primary}, type {typography.button} (16px / 600), padding 12px × 20px, height 44px, rounded {rounded.pill} (100px).

button-primary-active — Press state. Background {colors.primary-active}, deeper blue.

button-primary-disabled — Faded blue tint. Background {colors.primary-disabled}. Cursor not-allowed.

button-secondary-light — Soft-gray secondary on white surfaces. Background {colors.surface-strong}, text {colors.ink}, same pill geometry.

button-secondary-dark — Used on dark heroes. Background {colors.surface-dark-elevated}, text {colors.on-dark}, same pill geometry.

button-outline-on-dark — Transparent pill with white outline. Background transparent, text {colors.on-dark}, 1px white border.

button-tertiary-text — Inline text link. Background transparent, text {colors.primary}, type {typography.button}.

button-pill-cta — Larger pill CTA used on the homepage hero ("Get started"). Same Coinbase Blue palette but with 56px height and 16px × 32px padding for a prouder stance.

Hero Bands

hero-band-dark — The signature full-bleed dark hero. Background {colors.surface-dark}, text {colors.on-dark}, full-bleed layered product-UI mockup cards. Display headline left in {typography.display-mega} (80px / 400), subhead in {typography.body-md}, two CTAs.

hero-band-light — White-canvas variant used on Wealth and Explore. Background {colors.canvas}, text {colors.ink}. Same skeleton, light palette.

Cards

product-ui-card-dark — The floating product-UI mockup. Background {colors.surface-dark-elevated}, text {colors.on-dark}, rounded {rounded.xl} (24px), padding 32px. Often shown as 2-3 stacked cards at slight rotation, mimicking a layered dashboard.

product-ui-card-light — Light-canvas variant used on Explore for asset cards. Background {colors.canvas}, text {colors.ink}, same geometry, 1px hairline border.

feature-card — Used in 3-up and 2-up grids. Background {colors.canvas}, text {colors.ink}, type {typography.title-md}, rounded {rounded.xl}, padding 32px.

Trading Surfaces

asset-row — Horizontal row in asset lists (Explore, Wealth). Background transparent, 1px hairline divider. Layout: 32px circular asset icon left, asset name + ticker, price column in {typography.number-display}, 24h change column with {component.price-up-cell} or {component.price-down-cell}.

price-up-cell + price-down-cell — Inline price-change cells. Color only — green or red text in {typography.number-display}, no background fill.

asset-icon-circular — Circular plate behind asset glyphs. Background {colors.surface-strong}, rounded {rounded.full}, 32px diameter.

Pricing

pricing-tier-card — Standard pricing tier on Developer Platform. Background {colors.canvas}, rounded {rounded.xl}, padding 32px, 1px hairline border. Layout: tier name + price + feature checklist + CTA pill.

pricing-tier-featured — The featured tier. Background {colors.surface-dark}, text {colors.on-dark}. Same skeleton, dark palette — visual inversion signals "highlighted choice" without colored ribbons.

Forms

text-input — Standard text input. Background {colors.canvas}, text {colors.ink}, rounded {rounded.md} (12px), padding 14px × 16px, height 48px, 1px hairline border. On focus, border thickens to 2px Coinbase Blue.

search-input-pill — Pill-shaped search bar. Background {colors.surface-strong}, rounded {rounded.pill}, padding 12px × 20px, height 44px.

Tags & Badges

badge-pill — Small uppercase pill used as section labels ("INSTITUTIONAL", "REGULATED"). Background {colors.surface-strong}, text {colors.ink}, type {typography.caption-strong}, rounded {rounded.pill}.

CTA / Footer

cta-band-dark — Pre-footer "Take control of your money" band. Background {colors.surface-dark}, text {colors.on-dark}, vertical padding 96px. Centered headline + two CTAs.

footer-light — Closing white-canvas footer. Background {colors.canvas}, text {colors.body}. 6-column link list.

footer-link — Individual footer link. Background transparent, text {colors.body}.

legal-band — Bottom strip beneath footer columns. All text {colors.muted} at {typography.caption}.

Interactive Component Demonstrations:

Component Interactive Example

07

Do's and Don'ts

Do

  • Reserve {colors.primary} (Coinbase Blue) for primary CTAs, wordmark, brand-glyph illustrations, inline accent links.
  • Set every CTA as {rounded.pill} (100px); every asset glyph as {rounded.full}.
  • Keep CoinbaseDisplay headlines at weight 400.
  • Use the dark/light band rotation as page rhythm.
  • Render every numerical value in CoinbaseMono via {typography.number-display}.
  • Pair every dark hero with a layered product-UI mockup card stack.

Don't

  • Don't introduce a secondary brand color. Coinbase Blue is the only action color; trading green/red are semantic-only.
  • Don't bold display copy — display sits at weight 400; bolding shifts the brand voice.
  • Don't add drop shadow tiers — system has one shadow tier.
  • Don't use sharp {rounded.none} (0px) on CTAs.
  • Don't mix CoinbaseDisplay and CoinbaseSans inside the same headline.
  • Don't use trading green/red as a button background.
  • Don't extract a CTA color from a third-party widget (cookie consent, OneTrust). The brand's CTA color is what appears on actual product CTAs, not on injected modals.
✅ Recommended / Do
  • Reserve {colors.primary} (Coinbase Blue) for primary CTAs, wordmark, brand-glyph illustrations, inline accent links.
  • Set every CTA as {rounded.pill} (100px); every asset glyph as {rounded.full}.
  • Keep CoinbaseDisplay headlines at weight 400.
  • Use the dark/light band rotation as page rhythm.
  • Render every numerical value in CoinbaseMono via {typography.number-display}.
  • Pair every dark hero with a layered product-UI mockup card stack.
❌ Discouraged / Don't
  • Don't introduce a secondary brand color. Coinbase Blue is the only action color; trading green/red are semantic-only.
  • Don't bold display copy — display sits at weight 400; bolding shifts the brand voice.
  • Don't add drop shadow tiers — system has one shadow tier.
  • Don't use sharp {rounded.none} (0px) on CTAs.
  • Don't mix CoinbaseDisplay and CoinbaseSans inside the same headline.
  • Don't use trading green/red as a button background.
  • Don't extract a CTA color from a third-party widget (cookie consent, OneTrust). The brand's CTA color is what appears on actual product CTAs, not on injected modals.
08

Responsive Behavior

Breakpoints

NameWidthKey Changes
.........

Touch Targets

  • Primary CTA pill at 44px height — at WCAG AAA.
  • Larger hero pill ({component.button-pill-cta}) at 56px — well above AAA.
  • ...

Collapsing Strategy

  • Top nav switches to hamburger sheet below 768px. Sign Up CTA stays visible.
  • Hero h1 steps down: 80 → 64 → 52 → 44 → 36px on smallest screens.
  • ...

Responsive Adaptation Note:

Responsive Behavior Example

Interactive Viewport Simulator
Width: 800px (Desktop Mode) Grid Container
Primary Column

Adjusts layout width

Secondary Column

Folds on viewport change

Sidebar Column

Stacks to bottom on mobile

09

Agent Prompt Guide

1. Focus on a single component at a time. Reference YAML keys directly. 2. New CTAs default to {rounded.pill} (100px); new icon plates default to {rounded.full}. Cards use {rounded.xl}.

  • ...

Copyable Agent Integration Prompt:

Prompt Guide Copy Box

10

Full System Design Tokens

The parsed design tokens extracted from the core stylesheet of this design system:

Design TokenHex ValueSystem Palette Role
--primary#0052ffSystem color representation for primary
--primary-active#003eccSystem color representation for primary-active
--primary-disabled#a8b8ccSystem color representation for primary-disabled
--ink#0a0b0dSystem color representation for ink
--body#5b616eSystem color representation for body
--body-strong#0a0b0dSystem color representation for body-strong
--muted#7c828aSystem color representation for muted
--muted-soft#a8acb3System color representation for muted-soft
--hairline#dee1e6System color representation for hairline
--hairline-soft#eef0f3System color representation for hairline-soft
--canvas#ffffffSystem color representation for canvas
--surface-soft#f7f7f7System color representation for surface-soft
--surface-card#ffffffSystem color representation for surface-card
--surface-strong#eef0f3System color representation for surface-strong
--surface-dark#0a0b0dSystem color representation for surface-dark
--surface-dark-elevated#16181cSystem color representation for surface-dark-elevated
--on-primary#ffffffSystem color representation for on-primary
--on-dark#ffffffSystem color representation for on-dark
--on-dark-soft#a8acb3System color representation for on-dark-soft
--semantic-up#05b169System color representation for semantic-up
--semantic-down#cf202fSystem color representation for semantic-down
--accent-yellow#f4b000System color representation for accent-yellow