---
name: airbnb-design-reference
provider: DesignSkill (https://designskill.dev)
reference: airbnb.com
source_url: https://www.airbnb.com/
tool: designskill-extract/3.2.0
extracted_at: 2026-07-27T07:53:36.882Z
mode: full-render
classification: reference_only
---

# Airbnb — Design Reference (measured)

Measured design tokens extracted from `https://www.airbnb.com/` by designskill-extract/3.2.0.
Every value below was observed in the live page (×N = observation count). Values not listed were **not observed** — do not invent them.
This document is `reference_only`: an analysis of a third-party site, not a license to its brand assets.

## Overview

- Extraction mode: **full-render** (viewports 390/768/1440px × light/dark), 1 page(s), 508 observation records.
- Primary action color observed as `#ffffff` (basis: declared, confidence 0.92).
- Dominant font family: **Airbnb Cereal VF** (×2042; secondary -apple-system ×1).
- Type scale observed at 8 sizes from 8px to 20px.
- Corner radius values in use: 20px, 14px, 4px, 8px….
- Not observed in this extraction: cards, badges.

## Colors

### Role Tokens

Semantic roles inferred from observed usage. `basis` tells how the role was established (declared CSS var > cross-validated > inferred).

| Token | Value | Basis | Confidence | Observed |
|---|---|---|---|---|
| `{color.primary}` | `#ffffff` | declared | 0.92 | ×451 — --palette-bg-primary |
| `{color.background}` | `#000000` | declared | 0.92 | ×325 — --elevation-sharp-edge-background |
| `{color.ink}` | `#ff385c` | inferred | 0.58 | ×8 |
| `{color.muted}` | `#6c6c6c` | inferred | 0.7 | ×1200 |
| `{color.surface}` | `#222222` | inferred | 0.7 | ×878 |
| `{color.accent}` | `#3b07bb` | inferred | 0.58 | ×8 |

### Observed Palette

Full measured palette ordered by usage share. `Used in` lists the CSS properties the color appeared on.

| Hex | Share | Used in | Observed |
|---|---|---|---|
| `#6c6c6c` | 32.5% | color, --palette-bg-tertiary-hover, --palette-foggy | ×1200 (cross-validated, 0.95) |
| `#222222` | 23.8% | background-color, color, border-color, --palette-bg-primary-inverse, --palette-bg-primary-disabled | ×878 (cross-validated, 0.95) |
| `#ffffff` | 12.2% | background-color, border-color, color, box-shadow, --palette-bg-primary-disabled | ×451 (cross-validated, 0.94) |
| `#000000` | 8.8% | background-color, border-color, color, box-shadow | ×325 (inferred, 0.63) |
| `#ffffff` | 8.6% | background-color, border-color | ×316 (observed, 0.78) |
| `#dddddd` | 6.8% | border-color, background-color, --palette-bg-primary-inverse-disabled | ×251 (cross-validated, 0.93) |
| `#f2f2f2` | 2.9% | background-color, --palette-bg-quaternary, border-color, --palette-bg-tertiary-disabled, --palette-bg-fill-disabled | ×107 (cross-validated, 0.92) |
| `#da1249` | 0.8% | background-color, color, border-color, --palette-bg-tertiary-core, --palette-bg-secondary-core | ×28 (cross-validated, 0.9) |
| `#e31c5f` | 0.3% | background-color, --palette-bg-secondary-core | ×12 (inferred, 0.59) |
| `#484848` | 0.6% | background-color, color, border-color, box-shadow, disabled | ×22 (inferred, 0.6) |
| `#111111` | 0.3% | background-color, filter | ×10 (inferred, 0.58) |
| `#d70466` | 0.2% | background-color, --palette-bg-secondary-core | ×8 (inferred, 0.58) |
| `#bd1e59` | 0.2% | --palette-bg-secondary-core-hover | ×8 (inferred, 0.58) |
| `#ff385c` | 0.2% | background-color, color, --palette-bg-primary-core | ×8 (inferred, 0.58) |
| `#6c0d63` | 0.2% | --palette-bg-secondary-plus-hover | ×8 (inferred, 0.58) |
| `#3b07bb` | 0.2% | --palette-bg-secondary-luxe-hover | ×8 (inferred, 0.58) |

## Typography

### Font Families

| Family | Observed |
|---|---|
| `Airbnb Cereal VF` | ×2042 |
| `-apple-system` | ×1 |
| `monospace` | ×1 |
| `SFMono-Regular` | ×1 |

Use **Airbnb Cereal VF** as the default family — it accounts for the overwhelming majority of observed text nodes.

### Type Scale

| Token | Size | Observed |
|---|---|---|
| `{type.display}` | 20px | ×26 |
| `{type.h1}` | 18px | ×23 |
| `{type.h2}` | 16px | ×23 |
| `{type.h3}` | 14px | ×526 |
| `{type.body-lg}` | 13px | ×218 |
| `{type.body}` | 12px | ×1116 |
| `{type.body-sm}` | 11px | ×162 |
| `{type.caption}` | 8px | ×16 |

The most frequently observed size is **12px** (×1116) — treat it as the default body size.

## Spacing

| Value | Observed |
|---|---|
| `12px` | ×586 |
| `4px` | ×507 |
| `8px` | ×407 |
| `2px` | ×386 |
| `24px` | ×281 |
| `16px` | ×237 |
| `32px` | ×135 |
| `40px` | ×114 |
| `48px` | ×104 |
| `20px` | ×77 |
| `11px` | ×68 |
| `64px` | ×62 |

## Shape (Border Radius)

| Value | Observed |
|---|---|
| `20px` | ×577 |
| `14px` | ×180 |
| `4px` | ×126 |
| `8px` | ×85 |
| `32px` | ×37 |
| `12px` | ×22 |
| `24px` | ×17 |
| `16px` | ×15 |

## Elevation

| Shadow | Observed |
|---|---|
| `#000000` | ×230 |
| `rgba(0, 0, 0, 0.02) 0px 0px 0px 1px, rgba(0, 0, 0, 0.04) 0px 2px 6px 0px, rgba(0, 0, 0, 0.1) 0px 4px 8px 0px` | ×172 |
| `rgba(0, 0, 0, 0.02) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 8px 24px 0px` | ×76 |
| `#ffffff` | ×72 |
| `var(--elevation-elevation3-box-shadow)` | ×11 |
| `0 0 0 2px var(--palette-grey0),0 0 0 4px var(--palette-grey1000)` | ×10 |

## Motion

| Duration | Observed |
|---|---|
| `0.25s` | ×203 |
| `0.2s` | ×52 |
| `0.3s` | ×19 |
| `0.175s` | ×10 |
| `150ms` | ×10 |

## Components

Measured computed styles of representative components (desktop viewport).

| Component | Measured spec | Samples |
|---|---|---|
| form.input | bg `#000000` · text `#222222` · border `0px solid rgb(34, 34, 34)` · radius `0px` · padding `0px` · height `18` | ×1 |
| nav | height `96px` · position `static` · link `#ff385c` | — |

### Hero Gradient (observed)

```css
background-image: linear-gradient(rgb(255, 255, 255) 39.9%, rgb(248, 248, 248) 100%);
```

## Accessibility (WCAG Contrast)

| FG | BG | Ratio | AA | Source |
|---|---|---|---|---|
| `#6c6c6c` | `#ffffff` | 5.25 | pass | observed ×532 |
| `#222222` | `#dddddd` | 11.71 | pass | observed ×152 |
| `#222222` | `#ffffff` | 15.91 | pass | observed ×140 |
| `#222222` | `#f7f7f7` | 14.85 | pass | observed ×56 |
| `#6c6c6c` | `#f7f7f7` | 4.9 | pass | observed ×24 |
| `#ffffff` | `#ffffff` | 1 | fail | observed ×2 |
| `#da1249` | `#ffffff` | 5.04 | pass | observed ×1 |
| `#ff385c` | `#000000` | 5.97 | pass | ink_on_background |
| `#ffffff` | `#ffffff` | 1 | fail | white_on_primary |
| `#6c6c6c` | `#000000` | 4 | fail | muted_on_background |

3 measured pair(s) fail AA — if you reuse those pairs, adjust lightness until the ratio reaches 4.5:1.

## Usage Rules

### Do
- Use `{color.primary}` (`#ffffff`) for primary actions only — that is where it was observed.
- Default text pairing: `{color.ink}` (`#ff385c`) on `{color.background}` (`#000000`).
- Set all text in `Airbnb Cereal VF` (fallbacks only for glyph coverage).
- Pick corner radii from the measured set (20px, 14px, 4px, 8px) — no intermediate values were observed.
- Cite this file's token names (`{color.*}`, `{type.*}`) when generating UI so output stays traceable to observations.

### Don't
- Don't invent colors, sizes, shadows, or spacing not listed above — absence means *not observed*, and this document records observations only.
- Don't assume the missing blocks (cards, badges) don't exist on the site — they were simply not captured in this run.
- Don't copy brand assets (logo, wordmark, imagery, copy) — `reference_only` covers measured style values, not brand identity.
- Treat `{color.ink}`, `{color.accent}` with caution — confidence below 0.6.

## Provenance

- Source: https://www.airbnb.com/ (1 page(s))
- Tool: designskill-extract/3.2.0 · extracted 2026-07-27T07:53:36.882Z
- Mode: full-render — 풀렌더 모드 — 3뷰포트 × 라이트/다크 computed style + 상태 관측.
- Blocks observed: 00, 01, 02, 03, 04, 05, 06, 09, 10, 11, 12 · missing: cards, badges
- Warning: primary 불일치: static=#e31c5f vs render=#ffffff — render 채택

---

<sub>Generated & served by [DesignSkill](https://designskill.dev)</sub>
