Airbnb
“Airbnb Design System”
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.
Colors
Light Theme
Brand
Surface
Text
Border
Dark Theme
Typography
Fonts
Spacing & Shape
Spacing
Border Radius
---
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.