Travel & Transportation

Airbnb

Airbnb Design System

brand-red-centric action languagegenerous rounded corner vocabularysubtle elevation hierarchyinformation-dense card gridsans-serif body-first typography

Airbnb's design system centers on a warm, accessible interface driven by the iconic Rausch red (#ff385c) as the primary action color. The system employs a generous rounded-corner language (20px default, 32px for buttons) paired with a subtle multi-layer shadow elevation system that creates depth without visual heaviness. Typography is anchored in Airbnb Cereal VF, a custom sans-serif optimized for readability across body, heading, and label roles. The layout favors information-dense card grids with consistent 4–12px spacing rhythms, supporting rapid scanning and discovery of travel accommodations. Color palette is restrained: dark text (#222222), secondary grays (#6a6a6a), and minimal accent usage create a clean, trust-focused aesthetic that prioritizes content (property images) over decoration.

9Colors
10Type styles
14Spacing
9Radii

Colors

Light Theme

Brand

Background Primaryprimary
Main page background, card surfaces, and modal overlays

Surface

Background Tertiarybackground
Subtle background fills for sections and hover states
Action Primary Hoverbackground
Hover state for primary action buttons

Text

Text Primarytext
Primary body text, headings, and UI labels across all surfaces
Text Secondarytext
Secondary text, descriptions, metadata, and disabled states
Text Tertiarytext
Placeholder text, hints, and very subtle secondary information
Action Primarytext
Primary CTA buttons, search button, key interactive elements, and brand accent

Border

Border Defaultborder
Dividers, input borders, and subtle structural lines
Border Secondaryborder
Secondary dividers and less prominent structural elements

Dark Theme

Typography

Page titles and major section headings
The quick brown fox jumps
Airbnb Cereal VF28px · 700 · 40.04px
Section headings and prominent labels
The quick brown fox jumps
Airbnb Cereal VF22px · 500 · 26px · -0.44px
Card titles and subsection headings
The quick brown fox jumps
Airbnb Cereal VF20px · 600 · 24px · -0.18px
Component headings and form labels
The quick brown fox jumps
Airbnb Cereal VF16px · 500 · 20px
Primary body text and descriptions
The quick brown fox jumps
Airbnb Cereal VF14px · 400 · 20.02px
Emphasized body text and strong labels
The quick brown fox jumps
Airbnb Cereal VF14px · 600 · 20.02px
Secondary text, captions, and metadata
The quick brown fox jumps
Airbnb Cereal VF12px · 400 · 16px
Form labels, badges, and small UI text
The quick brown fox jumps
Airbnb Cereal VF12px · 700 · 16px
Micro labels, tags, and badge text
The quick brown fox jumps
Airbnb Cereal VF11px · 600 · 13px · 0.32px
Tiny labels and icon badges
The quick brown fox jumps
Airbnb Cereal VF8px · 700 · 10px · 0.32px

Fonts

Airbnb Cereal VFCustom

Spacing & Shape

Spacing

Spacing XS
2px
Spacing 2XS
3px
Spacing Tiny
4px
Spacing Small
6px
Spacing Small+
8px
Spacing Base
10px
Spacing Medium
12px
Spacing Medium+
14.1px
Spacing Large
16px
Spacing Large+
24px
Spacing XL
28px
Spacing 2XL
32px
Spacing 3XL
40px
Spacing 4XL
48px

Border Radius

Radius Tiny4px
Radius Small8px
Radius Medium12px
Radius Large16px
Radius XL20px
Radius 2XL24px
Radius 3XL28px
Radius 4XL32px
Radius Full100px
---
version: alpha
name: "Airbnb Design System"
description: "Primary visual anchor uses #ffffff with main page background, card surfaces, and modal overlays. Typography baseline relies on Airbnb Cereal VF for page titles and major section headings."
colors:
  background-primary: "#ffffff"
  action-primary-hover: "#e00b41"
  background-tertiary: "#f2f2f2"
  action-primary: "#ff385c"
  text-primary: "#222222"
  text-secondary: "#6a6a6a"
  text-tertiary: "#c1c1c1"
  border-default: "#dddddd"
  border-secondary: "#b0b0b0"
typography:
  heading-xl:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "28px"
    fontWeight: "700"
    lineHeight: "40.04px"
  heading-large:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "22px"
    fontWeight: "500"
    lineHeight: "26px"
    letterSpacing: "-0.44px"
  heading-medium:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "20px"
    fontWeight: "600"
    lineHeight: "24px"
    letterSpacing: "-0.18px"
  heading-small:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "16px"
    fontWeight: "500"
    lineHeight: "20px"
  body-large:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "14px"
    fontWeight: "400"
    lineHeight: "20.02px"
  body-medium:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "14px"
    fontWeight: "600"
    lineHeight: "20.02px"
  body-small:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "12px"
    fontWeight: "400"
    lineHeight: "16px"
  label:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "12px"
    fontWeight: "700"
    lineHeight: "16px"
  label-tiny:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "11px"
    fontWeight: "600"
    lineHeight: "13px"
    letterSpacing: "0.32px"
  label-xsmall:
    fontFamily: "Airbnb Cereal VF"
    fontSize: "8px"
    fontWeight: "700"
    lineHeight: "10px"
    letterSpacing: "0.32px"
rounded:
  radius-tiny: "4px"
  radius-small: "8px"
  radius-medium: "12px"
  radius-large: "16px"
  radius-xl: "20px"
  radius-2xl: "24px"
  radius-3xl: "28px"
  radius-4xl: "32px"
  radius-full: "100px"
spacing:
  spacing-xs: "2px"
  spacing-2xs: "3px"
  spacing-tiny: "4px"
  spacing-small: "6px"
  spacing-small: "8px"
  spacing-base: "10px"
  spacing-medium: "12px"
  spacing-medium: "14.1px"
  spacing-large: "16px"
  spacing-large: "24px"
  spacing-xl: "28px"
  spacing-2xl: "32px"
  spacing-3xl: "40px"
  spacing-4xl: "48px"
---

## Overview

Primary visual anchor uses #ffffff with main page background, card surfaces, and modal overlays. Typography baseline relies on Airbnb Cereal VF for page titles and major section headings.

**Signature traits:**
- Core token rhythm: Token evidence indicates consistent color, spacing, and radius rhythm across visible UI.

## Colors

The palette uses 9 validated color tokens across 2 theme profiles. Semantic roles stay attached to observed usage so generation agents can choose accents without inventing new color meaning.

**Semantic naming:**
- **surface-text** maps to `text-primary`: Role "text" is grounded by usage context "Primary body text, headings, and UI labels across all surfaces".
- **content-text** maps to `text-secondary`: Role "text" is grounded by usage context "Secondary text, descriptions, metadata, and disabled states".
- **surface-primary** maps to `background-primary`: Role "primary" is grounded by usage context "Main page background, card surfaces, and modal overlays".
- **surface-background** maps to `background-tertiary`: Role "background" is grounded by usage context "Subtle background fills for sections and hover states".

### Dark Theme

(none)

### Light Theme

### Primary Brand
- **Background Primary** (#ffffff): Main page background, card surfaces, and modal overlays. Role: primary. {authored: rgb(255, 255, 255), space: rgb, alpha: 0.5}

### Text Scale
- **Action Primary** (#ff385c): Primary CTA buttons, search button, key interactive elements, and brand accent. Role: text. {authored: rgb(255, 56, 92), space: rgb}
- **Text Primary** (#222222): Primary body text, headings, and UI labels across all surfaces. Role: text. {authored: rgb(34, 34, 34), space: rgb}
- **Text Secondary** (#6a6a6a): Secondary text, descriptions, metadata, and disabled states. Role: text. {authored: rgb(106, 106, 106), space: rgb}
- **Text Tertiary** (#c1c1c1): Placeholder text, hints, and very subtle secondary information. Role: text. {authored: rgb(193, 193, 193), space: rgb}

### Interactive
- **Border Default** (#dddddd): Dividers, input borders, and subtle structural lines. Role: border. {authored: rgb(221, 221, 221), space: rgb}
- **Border Secondary** (#b0b0b0): Secondary dividers and less prominent structural elements. Role: border. {authored: rgb(176, 176, 176), space: rgb}

### Surface & Shadows
- **Action Primary Hover** (#e00b41): Hover state for primary action buttons. Role: background. {authored: rgb(224, 11, 65), space: rgb}
- **Background Tertiary** (#f2f2f2): Subtle background fills for sections and hover states. Role: background. {authored: rgb(242, 242, 242), space: rgb}

## Typography

Typography uses Airbnb Cereal VF across extracted hierarchy roles. Keep hierarchy mapped to these token rows before adding decorative type styles.

Uses Airbnb Cereal VF throughout for a uniform feel. Weight range spans bold, medium, semi-bold, regular. Sizes range from 8px to 28px.

### Font Roles
- **Headline Font**: Airbnb Cereal VF
- **Body Font**: Airbnb Cereal VF

### Type Scale Evidence
| Role | Font | Size | Weight | Line Height | Letter Spacing | Stack / Features | Notes |
|------|------|------|--------|-------------|----------------|------------------|-------|
| Page titles and major section headings | Airbnb Cereal VF | 28px | 700 | 40.04px | normal | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Section headings and prominent labels | Airbnb Cereal VF | 22px | 500 | 26px | -0.44px | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Card titles and subsection headings | Airbnb Cereal VF | 20px | 600 | 24px | -0.18px | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Component headings and form labels | Airbnb Cereal VF | 16px | 500 | 20px | normal | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Primary body text and descriptions | Airbnb Cereal VF | 14px | 400 | 20.02px | normal | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Emphasized body text and strong labels | Airbnb Cereal VF | 14px | 600 | 20.02px | normal | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Secondary text, captions, and metadata | Airbnb Cereal VF | 12px | 400 | 16px | normal | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Form labels, badges, and small UI text | Airbnb Cereal VF | 12px | 700 | 16px | normal | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Micro labels, tags, and badge text | Airbnb Cereal VF | 11px | 600 | 13px | 0.32px | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |
| Tiny labels and icon badges | Airbnb Cereal VF | 8px | 700 | 10px | 0.32px | Airbnb Cereal VF, Circular, -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, sans-serif | Extracted token |

## Layout

Responsive system uses 4 breakpoint tier(s): mobile, tablet, desktop, wide.

### Responsive Strategy
- **mobile (300-1127.99px)**: Constrain layout for small viewports and prioritize vertical stacking.
- **tablet (667-1128px)**: Increase spacing and column structure for medium-width viewports.
- **desktop (1024-1600px)**: Expand layout density and horizontal composition for wide viewports.
- **wide (>= 1440px)**: Stretch composition with generous gutters and wider layout spans.

### Spacing System
| Token | Value | Px | Notes |
|------|-------|----|-------|
| Spacing XS | 2px | 2 | Extracted spacing token |
| Spacing 2XS | 3px | 3 | Extracted spacing token |
| Spacing Tiny | 4px | 4 | Extracted spacing token |
| Spacing Small | 6px | 6 | Extracted spacing token |
| Spacing Small+ | 8px | 8 | Extracted spacing token |
| Spacing Base | 10px | 10 | Extracted spacing token |
| Spacing Medium | 12px | 12 | Extracted spacing token |
| Spacing Medium+ | 14.1px | 14.1 | Extracted spacing token |
| Spacing Large | 16px | 16 | Extracted spacing token |
| Spacing Large+ | 24px | 24 | Extracted spacing token |
| Spacing XL | 28px | 28 | Extracted spacing token |
| Spacing 2XL | 32px | 32 | Extracted spacing token |
| Spacing 3XL | 40px | 40 | Extracted spacing token |
| Spacing 4XL | 48px | 48 | Extracted spacing token |

## Elevation & Depth

Keep depth flat unless validated shadow or interaction evidence appears in the extraction payload. Do not invent shadows beyond this evidence boundary.

### Shadow Evidence
| Shadow Token | Layers | Details |
|--------------|--------|---------|
| n/a | 0 | No validated shadow payload |

### Interaction Signals
| Theme | Signal | Evidence |
|-------|--------|----------|
| Light | backdrop-filter | blur(32px) |
| Light | outline-color | rgb(34, 34, 34) ; rgb(106, 106, 106) ; rgb(193, 193, 193) |
| Light | outline-width | 3px |
| Light | outline-offset | 0px |
| Light | transform | matrix(2, 0, 0, 2, 0, 0) ; matrix(1, 0, 0, -1, 0, 6.6) ; matrix(1, 0, 0, 1, -425, 0) |

## Shapes

Shape language maps directly to rounded tokens. Keep component corners consistent with the role mapping below before introducing bespoke geometry.

### Radius Roles
| Token | Value | Px | Role Mapping |
|------|-------|----|--------------|
| Radius Tiny | 4px | 4 | Subtle corner |
| Radius Small | 8px | 8 | Control corner |
| Radius Medium | 12px | 12 | Control corner |
| Radius Large | 16px | 16 | Card corner |
| Radius XL | 20px | 20 | Card corner |
| Radius 2XL | 24px | 24 | Large surface corner |
| Radius 3XL | 28px | 28 | Large surface corner |
| Radius 4XL | 32px | 32 | Large surface corner |
| Radius Full | 100px | 100 | Large surface corner |

### Geometry Evidence
| Radius Token | Shape | Units |
|--------------|-------|-------|
| Radius Tiny | 4px | px |
| Radius Small | 8px | px |
| Radius Medium | 12px | px |
| Radius Large | 16px | px |
| Radius XL | 20px | px |
| Radius 2XL | 24px | px |
| Radius 3XL | 28px | px |
| Radius 4XL | 32px | px |
| Radius Full | 100px | px |

## Components

(none detected)

## Do's and Don'ts

Guardrails protect Core token rhythm without adding unsupported visual claims.

| Do | Don't |
|----|---------|
| Do maintain consistent spacing using the base grid | Don't make unsupported claims about absent visual features |
| Do maintain WCAG AA contrast ratios (4.5:1 for normal text) | Don't mix rounded and sharp corners in the same view |
| Do use the primary color only for the single most important action per screen |  |
| Do verify evidence before writing new design-system guidance |  |

## Responsive Evidence

### Breakpoints
| Name | Width | Key Changes |
|------|-------|-------------|
| Mobile | <= 300px | (max-width: 300px) |
| Mobile | <= 320px | (max-width: 320px) |
| Mobile | <= 330px | (max-width: 330px) |
| Mobile | <= 375px | screen and (max-width: 375px) |
| Mobile | <= 395px | screen and (max-width: 395px) |
| Mobile | <= 499px | (max-width: 499px) |
| Mobile | <= 743px | (max-width: 743px) |
| Mobile | <= 744px | (max-width: 744px) |
| Breakpoint 9 | <= 768px | (max-width: 768px) |
| Breakpoint 10 | <= 880px | only screen and (max-width: 880px) |
| Breakpoint 11 | <= 895px | (max-width: 895px) |
| Breakpoint 12 | <= 949px | (max-width: 949px) |
| Breakpoint 13 | <= 1127px | (max-width: 1127px) |
| Breakpoint 14 | <= 1127.99px | (max-width: 1127.99px) and (max-height: 479.99px) |
| Mobile | >= 300px | (min-width: 300px) |
| Mobile | >= 375px | (min-width: 375px) |
| Mobile | >= 376px | (min-width: 376px) |
| Mobile | >= 403px | (min-width: 403px) |
| Mobile | >= 412px | (min-width: 412px) |
| Mobile | >= 420px | (min-width: 420px) |

## Agent Prompt Guide

### Example Component Prompts
- Create button component using validated primary color role and spacing tokens.
- Create card component with mapped radius role and evidence-backed elevation.
- Create form input component using inferred typography hierarchy and border roles.

### Iteration Guide
1. Start with extracted palette and typography roles only.
2. Map spacing and radius directly from token tables before visual polish.
3. Apply component patterns one section at a time and compare against source intent.
4. Keep elevation claims tied to explicit evidence in output.
5. Iterate with smallest diffs and re-check section hierarchy after each change.
Design Extractor

Turn any website into a structured design spec that AI coding agents can use to build pixel-perfect UI.

© 2026 Design Extractor. All rights reserved.