Nike Design System

Athletic retail · High-impact uppercase Futura look with black elements...
Back to Home
01

Visual Theme & Atmosphere

Nike's commerce system is built on a single, almost violently simple idea: photography speaks, the chrome doesn't. Every page reads as an athletic editorial — towering uppercase Futura display lockups ({typography.display-campaign}) burned into full-bleed campaign imagery, with everything else (nav, filters, buttons, cards, footer) reduced to neutral typography and pill geometry on {colors.canvas} and {colors.soft-cloud}. There is no decorative gradient, no soft shadow nostalgia, no accent color used for "tone" — the system saves all chromatic energy for product photography and the small handful of moments that actually need to signal (sale price {colors.sale}, success {colors.success}, swatch dots).

The result is a layout that feels physical — campaign hero, product grid, sport tile, footer — stacked like a printed catalog rather than animated like a typical SaaS landing page. Density is high but never crowded, because the system relies on three relentless devices: square or near-square 1:1 product imagery on {colors.soft-cloud}, pill-shaped black CTAs ({rounded.full}) anchoring every actionable surface, and a tight 8px-base spacing scale that keeps cards and filters mathematically aligned across PLP, PDP, and editorial pages.

...

Key Characteristics:

  • Editorial campaign hero with {typography.display-campaign} (Nike Futura ND, 96px, line-height 0.9, uppercase) burned directly into full-bleed photography
  • ...

Live Visual Theme Representation:

Visual Theme Example

02

Color Palette & Roles

> Source pages: /men (primary), /w/mens-acg-trail-running-shoes-…, /t/acg-zegama-…, /membership, /w/jordan-golf-…. The chrome palette is identical across all five — only photography varies.

Brand & Accent

  • Nike Black ({colors.ink}#111111): The brand's only "color." It is the primary CTA, the swatch dot, the active filter chip, the campaign overlay, the headline color, and the body text. When Nike wants to assert anything, it goes black.
  • Pure White ({colors.on-primary}, {colors.canvas}#ffffff): Equal partner to black. Carries every page background, the on-image CTA, and the inverse text on {colors.ink} surfaces.

Surface

  • Soft Cloud ({colors.soft-cloud}#f5f5f5): The most-used non-white surface in the entire system. Product card image backgrounds, search pill, secondary CTA, utility bar, sport-category swatch tiles. It is the "color" of every product photograph's stage.
  • Hairline ({colors.hairline}#cacacb): 1px dividers between filter rows, footer columns, and PDP disclosure rows.
  • ...

Text

  • Ink ({colors.ink}#111111): Primary text on light surfaces — headlines, product names, prices, nav.
  • Charcoal ({colors.charcoal}#39393b): Slightly softer body where ink is too heavy.
  • ...

Semantic

  • Sale ({colors.sale}#d30005): Discounted price color and "% off" copy — the only red in the entire retail chrome.
  • Sale Deep ({colors.sale-deep}#780700): Sale price hover/pressed and dark-mode sale anchor.
  • ...

Category Accents (sport / collection chips)

These appear sparingly — almost exclusively as small chip backgrounds, swatch dots, or category illustrations in editorial tiles. They are never used as text or primary CTA color.
  • Accent Pink ({colors.accent-pink}#ed1aa0): SKIMS / women's collection moments.
  • Accent Pink Soft ({colors.accent-pink-soft}#ffb0dd): Soft tinting on member-experience tiles.
  • ...
primary
#111111
on-primary
#ffffff
canvas
#ffffff
soft-cloud
#f5f5f5
ink
#111111
charcoal
#39393b
ash
#4b4b4d
mute
#707072
stone
#9e9ea0
hairline
#cacacb
hairline-soft
#e5e5e5
sale
#d30005
sale-deep
#780700
success
#007d48
success-bright
#1eaa52
info
#1151ff
info-deep
#0034e3
accent-pink
#ed1aa0
accent-pink-soft
#ffb0dd
accent-purple-soft
#beaffd
accent-purple-pale
#d6d1ff
accent-teal
#0a7281
accent-pink-deep
#4c012d
03

Typography Rules

Font Family

  • Nike Futura ND (display campaign only) — proprietary geometric sans for the towering uppercase headlines burned into campaign hero photography. Falls back to Helvetica Now Text Medium → Helvetica → Arial.
  • Helvetica Now Display Medium (headings 16–32px) — modern Helvetica cut tuned for display sizes; carries every section title, PDP product name, and dialog headline.
  • ...
When substituting on systems without proprietary Nike fonts: pair Inter (Display 700 for body chrome, Display 500 for buttons) with Bebas Neue or Anton at 96px/0.9 line-height for the campaign headline tier. Tighten letter-spacing slightly (-0.5%) on the substitute to approximate Futura ND's optical weight.

Hierarchy

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

Principles

The system runs on extreme typographic contrast: a single 96px uppercase display tier reserved for editorial campaign moments, and a quiet 12–16px Helvetica Now Text/Medium tier carrying everything else. There is almost no middle ground — the jump from {typography.heading-xl} (32px) directly to {typography.body-strong} (16px) is intentional and creates the "billboard above, catalog below" effect across every page. Letter-spacing is left at 0 (Futura ND and Helvetica Now are both cut for tight optical fit at scale).

Note on Font Substitutes

...
Dynamic Preview:
display-campaign size: 96px | weight: 500 | height: 0.9 | spacing: 0
The quick brown fox jumps over the lazy dog
heading-xl size: 32px | weight: 500 | height: 1.2 | spacing: 0
The quick brown fox jumps over the lazy dog
heading-lg size: 24px | weight: 500 | height: 1.2 | spacing: 0
The quick brown fox jumps over the lazy dog
heading-md size: 16px | weight: 500 | height: 1.75 | 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: 500 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
button-lg size: 24px | weight: 500 | height: 1.2 | spacing: 0
The quick brown fox jumps over the lazy dog
button-md size: 16px | weight: 500 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
button-sm size: 14px | weight: 500 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
link-md size: 16px | weight: 500 | height: 1.75 | spacing: 0
The quick brown fox jumps over the lazy dog
caption-md size: 14px | weight: 500 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
caption-sm size: 12px | weight: 500 | height: 1.5 | spacing: 0
The quick brown fox jumps over the lazy dog
utility-xs size: 9px | weight: 500 | height: 1.75 | spacing: 0
The quick brown fox jumps over the lazy dog
04

Layout Principles

Spacing System

  • Base unit: 8px
  • Tokens (front matter): {spacing.xxs} (2px) · {spacing.xs} (4px) · {spacing.sm} (8px) · {spacing.md} (12px) · {spacing.lg} (18px) · {spacing.xl} (24px) · {spacing.xxl} (30px) · {spacing.section} (48px+)
  • ...

Grid & Container

  • Max width: ~1440px content area with edge gutters that grow to ~80px at 1920px (the system lets very wide viewports breathe rather than stretch).
  • Column patterns: PLP listing uses 3-up at desktop, collapsing to 2-up at 1023px and 1-up at 599px. The men's home /men mixes a 2-up campaign hero row, a 3- or 4-up "Trending Now" row, a horizontal-scroll "Shop by Sport" rail, and a 4-up "Latest in Clothing" thumbnail grid.
  • ...

Whitespace Philosophy

Whitespace is a tool for separation, not for breath. Sections butt directly against each other vertically with {spacing.section} rhythm, and product photos tile edge-to-edge inside their grid — there is no padding wrapped around the product image itself. The "air" comes from the {colors.soft-cloud} background of the photograph, not from layout margin. Headlines do not have decorative whitespace above them; they sit immediately under the section divider line.

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
.........
The system has no drop-shadow elevation in its retail chrome at all. Cards do not lift on the page. The only depth cue is the 1px inset hairline on sticky strips and the contrast between full-bleed photography and {colors.soft-cloud} product backdrops.

Decorative Depth

Depth in Nike's system comes entirely from photography, not from CSS effects:
  • Editorial campaign tiles create depth via cinematic perspective — a runner on a trail, a model in a courtyard — with the Futura display headline overlaid in white or {colors.ink} directly on the image.
  • Product card photography is shot on flat {colors.soft-cloud} to remove any background depth, so the product itself is the only thing with form on the page.
  • ...

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
.........

Photography Geometry

  • Product cards: consistent 1:1 square or near-square (~4:5 portrait on tall product crops), full-bleed within the card with no padding, sitting on {colors.soft-cloud} backdrop.
  • Editorial campaign hero: ~16:9 or wider cinematic crop, full-bleed across the content max-width, with the Futura display headline burned into the lower-left or upper-left third.
  • ...
> No hover states documented per system policy. Each spec covers Default and Active/Pressed only; variants live as separate components: entries in the front matter.

Buttons

button-primary — the universal Nike CTA

  • Background {colors.ink}, text {colors.on-primary}, type {typography.button-md}, padding 16px 32px, height {spacing.section} (48px), rounded {rounded.lg} (30px pill).
  • ...
button-secondary — soft alternative on light surfaces
  • Background {colors.soft-cloud}, text {colors.ink}, type {typography.button-md}, padding 16px 32px, rounded {rounded.lg}.
  • ...
button-outline-on-image — overlay CTA on photography
  • Background {colors.canvas}, text {colors.ink}, type {typography.button-md}, padding 12px 24px, rounded {rounded.lg}.
  • ...
button-icon-circular — chrome icon controls
  • Background {colors.soft-cloud} or transparent, icon {colors.ink}, rounded {rounded.full}, size 40px.
  • ...
filter-chip + filter-chip-active
  • Default: background {colors.canvas}, text {colors.ink}, 1px hairline {colors.hairline}, type {typography.button-md}, rounded {rounded.lg}, padding 8px 16px.
  • ...

Inputs & Forms

search-pill + search-pill-focused

  • Default: background {colors.soft-cloud}, text {colors.ink}, type {typography.body-md}, rounded {rounded.md} (24px), padding 8px 16px, height 40px. Anchored to the right of the primary nav with a small magnifier icon.
  • ...

Cards & Containers

product-card

  • Container: background {colors.canvas}, rounded {rounded.none}, padding 0, no shadow.
  • ...
campaign-tile — the brand's signature editorial unit
  • Full-bleed photography with {typography.display-campaign} headline burned in (uppercase, 96px, line-height 0.9).
  • ...
category-icon-card
  • Container: background {colors.canvas}, rounded {rounded.none}.
  • ...
member-benefit-card
  • Full-bleed photographic card on a dark image background; copy slot at the bottom-left with {typography.heading-lg} headline {colors.on-primary} and a {component.button-outline-on-image} "Explore" pill below.
  • ...
swatch-dot + swatch-dot-active
  • 12px circle, rounded {rounded.full}, no border in default state. Renders the colorway options on every product card and PDP color picker.
  • ...
badge-promo
  • Background {colors.canvas} with 1px hairline {colors.hairline}, text {colors.ink}, type {typography.caption-sm}, rounded {rounded.lg}, padding 4px 12px.
  • ...
badge-sale-text
  • Inline price-row text in {colors.sale} with no background — the only "badge" in the system that has no container.

Navigation

utility-bar — top utility strip

  • Background {colors.soft-cloud}, text {colors.ink}, type {typography.caption-sm}, height ~36px, rounded {rounded.none}.
  • ...
primary-nav — main navigation
  • Background {colors.canvas}, text {colors.ink}, type {typography.body-strong} for nav links, height 56–64px, rounded {rounded.none}.
  • ...
Sub-nav strip (PLP) — appears under primary nav with breadcrumb + sort + hide-filters controls.
  • Same {colors.canvas} background with a 1px inset hairline-soft bottom edge.
  • ...
Top Nav (Mobile)
  • Hamburger menu icon (left), Nike swoosh (center), search + bag icons (right).
  • ...

Signature Components

pdp-disclosure-row — PDP information accordion rows

  • Stacked rows for "View Product Details", "Shipping & Returns", "Reviews (n)" with {spacing.xl} vertical padding and a 1px {colors.hairline} divider below each.
  • ...
faq-row/membership FAQ accordion
  • Identical pattern to pdp-disclosure-row but with {typography.heading-md} label weight; 1px {colors.hairline} divider below each.
filter-sidebar — PLP left rail
  • Container {colors.canvas}, rounded {rounded.none}.
  • ...
footer
  • Background {colors.canvas} with a single 1px {colors.hairline} top divider.
  • ...

Interactive Component Demonstrations:

Component Interactive Example

07

Do's and Don'ts

Do

  • Reserve {typography.display-campaign} exclusively for editorial campaign hero lockups — never use 96px Futura for section headers or product titles.
  • Use {component.button-primary} ({colors.ink} pill) as the single primary action per viewport. Pair it at most with {component.button-secondary} ({colors.soft-cloud} pill) for a soft alternative.
  • Stage every product photograph on {colors.soft-cloud} — the gray is the system's "studio."
  • Keep all CTAs pill-shaped at {rounded.lg} (30px). Never introduce a square or {rounded.sm} button.
  • Use {colors.sale} only on price rows — never on backgrounds, badges, or chrome.
  • Stack content sections at {spacing.section} (48px) rhythm with no decorative dividers between them; the photography's bleed-edge is the divider.
  • Anchor on-image CTAs with {component.button-outline-on-image} (white pill) at bottom-left — the system's universal "shop this image" position.

Don't

  • Don't introduce drop shadows or card elevation. Cards sit flat on the page; the only depth cue is the 1px inset hairline on sticky bars.
  • Don't use any of the category accent colors ({colors.accent-pink}, {colors.accent-purple-soft}, {colors.accent-teal}) for primary chrome — they belong to swatch dots, soft tile fills, and editorial moments only.
  • Don't replace {colors.ink} with a near-black gray like {colors.charcoal} for a CTA — Nike's primary pill is true #111111.
  • Don't pad inside product cards. The image is full-bleed; metadata sits directly below with {spacing.sm} (8px) between rows.
  • Don't put two campaign-tile lockups in the same row at the same scale — Nike alternates a single full-bleed editorial tile with a 2-up or 4-up product/category grid.
  • Don't underline anything other than {typography.link-md} inline links and the active primary-nav indicator. Buttons, headings, and prices stay un-underlined.
  • Don't introduce a third button shape. Pill or icon-circular — that's the entire button shape vocabulary.
✅ Recommended / Do
  • Reserve {typography.display-campaign} exclusively for editorial campaign hero lockups — never use 96px Futura for section headers or product titles.
  • Use {component.button-primary} ({colors.ink} pill) as the single primary action per viewport. Pair it at most with {component.button-secondary} ({colors.soft-cloud} pill) for a soft alternative.
  • Stage every product photograph on {colors.soft-cloud} — the gray is the system's "studio."
  • Keep all CTAs pill-shaped at {rounded.lg} (30px). Never introduce a square or {rounded.sm} button.
  • Use {colors.sale} only on price rows — never on backgrounds, badges, or chrome.
  • Stack content sections at {spacing.section} (48px) rhythm with no decorative dividers between them; the photography's bleed-edge is the divider.
  • Anchor on-image CTAs with {component.button-outline-on-image} (white pill) at bottom-left — the system's universal "shop this image" position.
❌ Discouraged / Don't
  • Don't introduce drop shadows or card elevation. Cards sit flat on the page; the only depth cue is the 1px inset hairline on sticky bars.
  • Don't use any of the category accent colors ({colors.accent-pink}, {colors.accent-purple-soft}, {colors.accent-teal}) for primary chrome — they belong to swatch dots, soft tile fills, and editorial moments only.
  • Don't replace {colors.ink} with a near-black gray like {colors.charcoal} for a CTA — Nike's primary pill is true #111111.
  • Don't pad inside product cards. The image is full-bleed; metadata sits directly below with {spacing.sm} (8px) between rows.
  • Don't put two campaign-tile lockups in the same row at the same scale — Nike alternates a single full-bleed editorial tile with a 2-up or 4-up product/category grid.
  • Don't underline anything other than {typography.link-md} inline links and the active primary-nav indicator. Buttons, headings, and prices stay un-underlined.
  • Don't introduce a third button shape. Pill or icon-circular — that's the entire button shape vocabulary.
08

Responsive Behavior

Breakpoints

NameWidthKey Changes
.........

Touch Targets

All interactive elements meet WCAG AAA (44×44px minimum). Pills ({component.button-primary}, {component.button-secondary}) sit at 48px height with 32px horizontal padding. Icon-circular buttons ({component.button-icon-circular}) sit at 40px — Nike's PDP carousel paddle and wishlist heart sit just under AAA but above AA at 40×40, with hit-target padding extending the tappable area to 48px+. Filter-chip pills are 40px height with 16px padding.

Collapsing Strategy

  • Primary nav: desktop center cluster → mobile drawer triggered by hamburger at left of the swoosh.
  • PLP grid: 3-up → 2-up → 1-up at 1023, 599, and below; gutters drop from {spacing.sm} to {spacing.xs} on mobile.
  • ...

Image Behavior

  • Product imagery is responsive at the same 1:1 ratio across all breakpoints — the image scales, the ratio doesn't.
  • Editorial campaign tiles use art-direction crops: a 16:9 wide hero on desktop swaps to a 4:5 portrait on mobile so the figure stays centered and the headline still has burn-in space.
  • ...

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 ONE component at a time. Pull its YAML entry from the front matter and verify every property resolves. 2. Reference component names and tokens directly ({colors.ink}, {component.button-primary-active}, {rounded.lg}) — do not paraphrase color names or radii in prose.

  • ...

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#111111System color representation for primary
--on-primary#ffffffSystem color representation for on-primary
--canvas#ffffffSystem color representation for canvas
--soft-cloud#f5f5f5System color representation for soft-cloud
--ink#111111System color representation for ink
--charcoal#39393bSystem color representation for charcoal
--ash#4b4b4dSystem color representation for ash
--mute#707072System color representation for mute
--stone#9e9ea0System color representation for stone
--hairline#cacacbSystem color representation for hairline
--hairline-soft#e5e5e5System color representation for hairline-soft
--sale#d30005System color representation for sale
--sale-deep#780700System color representation for sale-deep
--success#007d48System color representation for success
--success-bright#1eaa52System color representation for success-bright
--info#1151ffSystem color representation for info
--info-deep#0034e3System color representation for info-deep
--accent-pink#ed1aa0System color representation for accent-pink
--accent-pink-soft#ffb0ddSystem color representation for accent-pink-soft
--accent-purple-soft#beaffdSystem color representation for accent-purple-soft
--accent-purple-pale#d6d1ffSystem color representation for accent-purple-pale
--accent-teal#0a7281System color representation for accent-teal
--accent-pink-deep#4c012dSystem color representation for accent-pink-deep