Airbnb

A warm, generous consumer marketplace anchored on a clean white canvas and Airbnb Rausch (#ff385c), the single brand voltage that carries every primary CTA, search-button orb, and rating dot. Type runs Airbnb Cereal VF at modest weights — display sits at 22–28px in weight 500/600 rather than the heavy 700+ that fintech and enterprise systems use; the brand trusts photography and generous whitespac

Homepage Example

Free Shipping · 30-Day Returns
Airbnb
Sign Up Free Cart (0)

Welcome to Airbnb

A modern, elegant design system built for the digital age.

Shop Now
$183
$112
$125
$192
© 2026 Airbnb

Color Palette (23)

primary#ff385c
primary-active#e00b41
primary-disabled#ffd1da
primary-error-text#c13515
primary-error-text-hover#b32505
luxe#460479
plus#92174d
ink#222222
body#3f3f3f
muted#6a6a6a
muted-soft#929292
hairline#dddddd
hairline-soft#ebebeb
border-strong#c1c1c1
canvas#ffffff
surface-soft#f7f7f7
surface-card#ffffff
surface-strong#f2f2f2
on-primary#ffffff
on-dark#ffffff
legal-link#428bff
star-rating#222222
scrim#000000

Typography (18)

Airbnb
display-xl28px · weight 700
Airbnb
display-lg22px · weight 500
Airbnb
display-md21px · weight 700
Airbnb
display-sm20px · weight 600
Airbnb
title-md16px · weight 600
Airbnb
title-sm16px · weight 500
Airbnb
rating-display64px · weight 700
Airbnb
body-md16px · weight 400
Airbnb
body-sm14px · weight 400
Airbnb
caption14px · weight 500
Airbnb
caption-sm13px · weight 400
Airbnb
badge11px · weight 600
Airbnb
micro-label12px · weight 700
Airbnb
uppercase-tag8px · weight 700
Airbnb
button-md16px · weight 500
Airbnb
button-sm14px · weight 500
Airbnb
link14px · weight 400
Airbnb
nav-link16px · weight 600

Components (33)

button-primary
button-primary
button-primary-active
button-primary-active
button-primary-disabled
button-primary-disabled
button-secondary
button-secondary
button-tertiary-text
button-tertiary-text
button-pill-rausch
button-pill-rausch
search-orb
search-orb
icon-button-circle
icon-button-circle
icon-button-outline
icon-button-outline
top-nav
top-nav
product-tab-active
product-tab-active
product-tab-inactive
product-tab-inactive
search-bar-pill
search-bar-pill
search-field-segment
search-field-segment
category-strip
category-strip
category-tab-active
category-tab-active
property-card
property-card
property-card-photo
property-card-photo
experience-card
experience-card
city-link-block
city-link-block
rating-display-card
rating-display-card
guest-favorite-badge
guest-favorite-badge
new-tag
new-tag
amenity-row
amenity-row
reviews-card
reviews-card
host-card
host-card
reservation-card
reservation-card
date-picker-day
date-picker-day
date-picker-day-selected
date-picker-day-selected
text-input
text-input
footer-light
footer-light
footer-link
footer-link
legal-band
legal-band

Border Radius

none (0px)
xs (4px)
sm (8px)
md (14px)
lg (20px)
xl (32px)
full (9999px)

Design Philosophy

Overview

Airbnb is the canonical example of a generous, photography-led consumer marketplace. The base canvas is **pure white** (`{colors.canvas}` — #ffffff) with deep near-black ink (`{colors.ink}` — #222222) for headlines and body, and a single voltage of **Rausch** (`{colors.primary}` — #ff385c) carrying every primary CTA, the search-button orb, the heart save state, and inline brand links. There is no secondary brand color in mainline marketing — the **Luxe purple** (`{colors.luxe}` — #460479) and **Plus magenta** (`{colors.plus}` — #92174d) tokens are sub-brand accents that only appear inside Airbnb Luxe / Plus contexts.

Type runs **Airbnb Cereal VF** (a custom variable font Airbnb licenses), with **Circular** as the historic in-house fallback and a system stack underneath. Cereal sits at modest weights — display headlines render at 22–28px in weight 500–600, not the heavy 700+ weights that financial or enterprise systems lean on. The hero h1 ("Inspiration for future getaways") on the homepage is just 28px / 700, which would feel small on a typical SaaS page; here it works because the layout leans on photography (city collage, property cards) for visual weight rather than typographic muscle.

The shape language is **soft**. Buttons are 8px radius (`{rounded.sm}`), property cards are ~14px (`{rounded.md}`), the search bar is fully pill-shaped (`{rounded.full}`), wishlist hearts and search orbs are circles (`{rounded.full}`), and category strip rounded corners run at 32px (`{rounded.xl}`). There is essentially no hard corner anywhere except the body grid itself — every interactive element is rounded.

**Key Characteristics:**

  • Single accent color: `{colors.primary}` (#ff385c — "Rausch") carries every primary CTA, the search orb, the heart save state, and the brand wordmark. Used scarcely — most pages are 90% white + ink with one or two Rausch moments.
  • Custom variable type: `Airbnb Cereal VF`. Display weights sit at 500–700, body at 400. Modest weight is intentional — the system trusts photography for visual heft.
  • Three-product top nav: Homes, Experiences, Services — each with a hand-illustrated 32px icon and "NEW" badges (`{component.new-tag}`) on the two newer products. Active tab uses an underline rule (`{component.product-tab-active}`).
  • Pill-shaped global search bar: white surface, fully rounded (`{rounded.full}`), divided by 1px hairlines into Where / When / Who segments, terminated by a circular Rausch search orb (`{component.search-orb}`).
  • Property cards are photo-first: aspect-ratio rectangles with `{rounded.md}` corner clipping, swipeable image carousel, "Guest favorite" floating badge top-left, heart icon top-right, then 4–5 lines of meta beneath.
  • Editorial dropdowns (footer, language picker) are clean text columns over the white canvas — no card surface, no shadow.
  • The design system caps elevation at one shadow tier (`box-shadow: rgba(0,0,0,0.02) 0 0 0 1px, rgba(0,0,0,0.04) 0 2px 6px, rgba(0,0,0,0.1) 0 4px 8px`) — used on hover-floated cards and search/account dropdowns.
  • 8px base spacing system, with major sections at `{spacing.section}` (64px) — generous but not airy enough to feel editorial-magazine; the marketplace density wants more cards per scroll.

Colors

Brand & Accent

  • **Rausch** (`{colors.primary}` — #ff385c): The single brand color. Used for primary CTA backgrounds (Reserve, Continue), the search orb, the heart save state on property cards, and inline brand links. The most recognizable color in consumer travel.
  • **Rausch Active** (`{colors.primary-active}` — #e00b41): The press / pointer-down variant — slightly more saturated. Used on `{component.button-primary-active}`.
  • **Rausch Disabled** (`{colors.primary-disabled}` — #ffd1da): A pale tint used on disabled CTAs.
  • **Luxe Purple** (`{colors.luxe}` — #460479): Sub-brand accent for Airbnb Luxe. Only appears inside Luxe-branded surfaces — never in mainline marketing.
  • **Plus Magenta** (`{colors.plus}` — #92174d): Sub-brand accent for Airbnb Plus. Same scoping as Luxe — sub-product only.

Surface

  • **Canvas** (`{colors.canvas}` — #ffffff): The default page floor for every public page. Airbnb does not have a dark mode on the public web.
  • **Surface Soft** (`{colors.surface-soft}` — #f7f7f7): The lightest fill — used on disabled fields, sub-nav hover backgrounds, and the inline search filter band.
  • **Surface Strong** (`{colors.surface-strong}` — #f2f2f2): Slightly heavier fill — circular icon-button surface (e.g., the breadcrumb back-arrow and listing toolbar buttons).

Hairlines & Borders

  • **Hairline** (`{colors.hairline}` — #dddddd): The default 1px border tone — search bar dividers, table separators, footer column splitters, card 1px borders.
  • **Hairline Soft** (`{colors.hairline-soft}` — #ebebeb): A lighter divider used on long-scrolling editorial body separators.
  • **Border Strong** (`{colors.border-strong}` — #c1c1c1): A heavier stroke used on disabled outline buttons and form input outlines after focus.

Text

  • **Ink** (`{colors.ink}` — #222222): The dominant text color on light surfaces. Display headlines, body paragraphs, primary nav links, and most inline link text. Never pure black.
  • **Body** (`{colors.body}` — #3f3f3f): A secondary running-text color used inside long-form review and amenity copy where ink would feel too heavy.
  • **Muted** (`{colors.muted}` — #6a6a6a): Sub-titles inside city link blocks ("Cottage rentals", "Villa rentals"), inactive product-tab labels, footer category sub-labels, "View all" links.
  • **Muted Soft** (`{colors.muted-soft}` — #929292): Disabled link text. Used very sparingly.
  • **Star Rating** (`{colors.star-rating}` — #222222): The same ink token — Airbnb's star icon and "4.81" rating numbers all render in ink rather than a yellow/gold color, which is a deliberate brand choice (yellow stars feel cheap in travel context).
  • **On Primary** (`{colors.on-primary}` — #ffffff): White text on Rausch CTAs.

Semantic

  • **Error** (`{colors.primary-error-text}` — #c13515): Inline error text for form validation. Distinct from Rausch — slightly darker, more saturated red.
  • **Error Hover** (`{colors.primary-error-text-hover}` — #b32505): Darkens on link hover.
  • **Legal Link Blue** (`{colors.legal-link}` — #428bff): Inline links inside legal copy (Privacy, Terms). Only used inside the legal sub-band.

Scrim

  • **Scrim** (`{colors.scrim}` — #000000 at 50% opacity): The global modal backdrop tone — date picker, login dialog, language picker. Stored as the base hex; opacity is applied at render time.

Typography

Font Family

The system runs **Airbnb Cereal VF** for everything — display, body, navigation, captions, microcopy. Fallbacks walk `Circular, -apple-system, system-ui, Roboto, "Helvetica Neue", sans-serif`. **Circular** is the historic in-house typeface still kept as the first non-variable fallback; system stacks back it up.

There is no separate display family. The variable font carries the entire scale.

Hierarchy

| Token | Size | Weight | Line Height | Letter Spacing | Use |

|---|---|---|---|---|---|

| `{typography.rating-display}` | 64px | 700 | 1.1 | -1px | Listing detail rating display ("4.81") |

| `{typography.display-xl}` | 28px | 700 | 1.43 | 0 | Homepage h1 ("Inspiration for future getaways") |

| `{typography.display-lg}` | 22px | 500 | 1.18 | -0.44px | Listing detail h1 ("Close to Fethiye Aliyah Bali Beach…") |

| `{typography.display-md}` | 21px | 700 | 1.43 | 0 | Section heads inside listing detail ("What this place offers") |

| `{typography.display-sm}` | 20px | 600 | 1.20 | -0.18px | Sub-section titles ("Things to know") |

| `{typography.title-md}` | 16px | 600 | 1.25 | 0 | City link block titles ("Wilmington", "Athens") |

| `{typography.title-sm}` | 16px | 500 | 1.25 | 0 | Footer column heads ("Support", "Hosting", "Airbnb") |

| `{typography.body-md}` | 16px | 400 | 1.5 | 0 | Default running-text inside listing copy |

| `{typography.body-sm}` | 14px | 400 | 1.43 | 0 | Card meta lines, dates, prices, distance text |

| `{typography.caption}` | 14px | 500 | 1.29 | 0 | Search field segment labels ("Where", "When", "Who") |

| `{typography.caption-sm}` | 13px | 400 | 1.23 | 0 | Footer legal line ("© 2026 Airbnb, Inc.") |

| `{typography.badge}` | 11px | 600 | 1.18 | 0 | "Guest favorite" floating badge text |

| `{typography.micro-label}` | 12px | 700 | 1.33 | 0 | Card amenity micro-labels ("Inline 6") |

| `{typography.uppercase-tag}` | 8px | 700 | 1.25 | 0.32px (uppercase) | "NEW" badge on product nav tabs |

| `{typography.button-md}` | 16px | 500 | 1.25 | 0 | Primary CTA button labels |

| `{typography.button-sm}` | 14px | 500 | 1.29 | 0 | Pill button labels (category strip) |

| `{typography.link}` | 14px | 400 | 1.43 | 0 | Inline body links |

| `{typography.nav-link}` | 16px | 600 | 1.25 | 0 | Top product-nav labels (Homes, Experiences, Services) |

Principles

Display weights stay modest. The homepage h1 at 28px / 700 is deliberately small — it tucks under the search bar so photography and the city-link grid carry visual hierarchy. The listing-detail h1 at 22px / 500 is even quieter; the listing photo banner does the work above it.

The single typographically loud moment in the entire system is the **rating display** (`{typography.rating-display}` — 64px / 700) on listing pages. That is the only place the system trusts type alone to carry hierarchy — rating numbers are a peak trust signal, so they get the loudest treatment.

Note on Font Substitutes

If Airbnb Cereal VF and Circular are unavailable, **Inter** is the closest open-source substitute. Adjust display headlines down by ~2% in line-height to match Cereal's slightly tighter cap height; otherwise the proportions transfer cleanly.

Layout

Spacing System

  • **Base unit:** 4px (with 2px micro-step).
  • **Tokens:** `{spacing.xxs}` 2px · `{spacing.xs}` 4px · `{spacing.sm}` 8px · `{spacing.md}` 12px · `{spacing.base}` 16px · `{spacing.lg}` 24px · `{spacing.xl}` 32px · `{spacing.xxl}` 48px · `{spacing.section}` 64px.
  • **Section padding (vertical):** `{spacing.section}` (64px) for major page bands; tighter than typical SaaS marketing (80–96px) because marketplace pages need higher card density per scroll.
  • **Card internal padding:** `{spacing.lg}` (24px) for `{component.host-card}` and `{component.reservation-card}`; `{spacing.base}` (16px) for property-card meta block; `{spacing.sm}` (8px) for caption / date-row gutters.
  • **Gutters:** `{spacing.base}` (16px) between cards in the homepage city grid; `{spacing.lg}` (24px) inside footer column gutters; `{spacing.xs}` (4px) on dense category-strip dividers.

Grid & Container

  • **Max content width:** ~1280px centered on the homepage and editorial pages. Listing detail pages cap closer to 1080px to keep the photo banner and reservation rail readable.
  • **City link grid (homepage footer):** 6-column grid at desktop with each cell housing a city name in `{typography.title-md}` and a category sub-label in `{typography.body-sm}` muted.
  • **Listing detail:** 2-column with photo / amenity body on the left (~64% width) and a sticky reservation card (`{component.reservation-card}`) on the right (~32%).
  • **Footer:** 3-column link list (Support / Hosting / Airbnb) at desktop, collapsing to 1-column on mobile.

Whitespace Philosophy

The system gives editorial bands 64px of vertical breathing room but compresses card grids — property and city-link cards sit just 16px apart. The contrast is intentional: the page reads as "open hero, dense marketplace below," reinforcing the marketplace nature without overwhelming the visitor at the fold.

Elevation

The system has essentially **one shadow tier** plus the flat baseline.

  • **Flat (no shadow):** Body, hero, footer, all editorial bands — 95% of surfaces.
  • **Card hover float:** `box-shadow: rgba(0, 0, 0, 0.02) 0 0 0 1px, rgba(0, 0, 0, 0.04) 0 2px 6px 0, rgba(0, 0, 0, 0.1) 0 4px 8px 0` — applied to property cards on pointer hover, the search bar at rest, and the dropdown menus (account menu, language picker, date picker). This is the single shadow definition in the entire system.
  • **Modal scrim:** `{colors.scrim}` rendered at 50% opacity — the global modal backdrop. Used on date pickers, login dialogs, language picker.

There are no progressive elevation tiers — the system either has the one shadow or none. Depth comes from photography, the white-on-white surface separation, and rounded-corner clipping rather than from layered shadows.

Components

Buttons

**`button-primary`** — Rausch fill, white text, 8px radius, 14×24px padding, 48px height, weight 500. The most common CTA across the system: "Reserve", "Continue", "Search", account-flow primaries.

**`button-primary-active`** — The press state. Background flips to `{colors.primary-active}`. No transform, no shadow change.

**`button-primary-disabled`** — Pale Rausch tint at #ffd1da with white text. Cursor not-allowed.

**`button-secondary`** — White fill with ink text and a 1px ink outline. 8px radius. Used for "Save", "Cancel", and inverse CTAs over Rausch surfaces.

**`button-tertiary-text`** — Plain ink text, no surface, no border. Underlined on hover. Used for "Show more" type links and modal close labels.

**`button-pill-rausch`** — A pill-shaped Rausch CTA used on featured cells (e.g., "Become a host" sub-CTA) — 9999px radius, 10×20px padding, 14px label.

Search Surface

**`search-bar-pill`** — The signature global search bar. White fill, 9999px radius, 64px height, 1px hairline 1px-shadow border. Internally divided by vertical hairline rules into `{component.search-field-segment}` cells (Where / When / Who). Each segment holds an uppercase caption label above a placeholder line in `{typography.caption}`.

**`search-orb`** — The circular Rausch orb terminating the right edge of the search bar. 48×48px, fully rounded, white magnifying-glass icon centered. The hottest single color moment on the homepage.

Top Navigation

**`top-nav`** — White surface, 80px height, 1px bottom hairline. The Airbnb wordmark sits flush left, the three product tabs (Homes / Experiences / Services) sit in the dead center, and account utilities (host link, language globe, account menu) sit flush right.

**`product-tab-active`** — Ink label in `{typography.nav-link}`, 32px hand-illustrated icon, 2px ink underline rule beneath the icon-label pair.

**`product-tab-inactive`** — Muted label, illustrated icon, no underline. Becomes active on click.

**`new-tag`** — A tiny rounded-pill badge (`{rounded.full}`) anchored top-right of an icon, carrying the uppercase "NEW" label in `{typography.uppercase-tag}` (8px / 700 with 0.32px tracking, uppercase). Used on Experiences and Services to signal recency.

Listing Cards

**`property-card`** — A photo-first card. 1:1 aspect-ratio image with `{rounded.md}` corner clipping, image carousel dots overlay, "Guest favorite" floating badge top-left (`{component.guest-favorite-badge}`), and a heart icon top-right (`{component.icon-button-circle}` in default outlined state, Rausch-filled when saved). Beneath the image: 4–5 lines of meta — title (`{typography.title-md}`), distance / dates (`{typography.body-sm}` muted), and price ("$X night") right-aligned.

**`property-card-photo`** — The photo plate itself, separated as a token because some surfaces (wishlist, search results) reuse just the photo without the meta block.

**`experience-card`** — A taller-aspect card (4:5) for experience listings. Same `{rounded.md}` clipping, floating "NEW" badge top-left, heart top-right, and a single-line title beneath.

**`guest-favorite-badge`** — White rounded pill (`{rounded.full}`) at 11px / 600 weight. Sits over the photo with the system's only shadow tier applied for elevation.

Listing Detail

**`rating-display-card`** — The signature listing-detail moment. A 64px / 700 rating number ("4.81") flanked left and right by tiny laurel-wreath SVG ornaments. Beneath the rating: "Guest favorite" tagline and a row of ink stat columns. The largest typographic weight in the whole system.

**`amenity-row`** — A 1-column list of amenity icons + ink labels in `{typography.body-md}`. 12px row padding, no border between rows; section is closed by a 1px hairline divider above and below.

**`reviews-card`** — A 2-column grid of review excerpts. Each column holds an author row (avatar, name, date) above a 3-line excerpt with "Show more" tertiary link.

**`host-card`** — A white card with `{rounded.md}` rounding and 24px padding holding a host avatar, name, "Superhost" badge, response-rate stat, and a "Contact host" `{component.button-secondary}`.

**`reservation-card`** — The sticky right-rail card on listing detail pages. White surface, `{rounded.md}` rounding, 1px hairline border, 1px shadow tier elevation, 24px padding. Contains: nightly price (`{typography.display-md}` ink), date-range selector, guest-count stepper, "Reserve" primary CTA full-width, and a fee breakdown stack beneath in `{typography.body-sm}`.

Date Picker

**`date-picker-day`** — A 40×40px circular cell carrying the day number in `{typography.body-sm}`. Default state is transparent fill, ink text.

**`date-picker-day-selected`** — Ink fill, white text, full circle (`{rounded.full}`). Range states between two selected days carry a `{colors.surface-soft}` lozenge background that connects them.

Forms

**`text-input`** — White surface, 1px hairline outline, `{rounded.sm}` 8px radius, 56px height, 14×12px padding. Stacked label above (in `{typography.caption}` muted), placeholder text in `{typography.body-md}` muted. On focus, the border thickens to 2px ink and the border color flips to `{colors.ink}` — no glow, no ring.

Footer

**`footer-light`** — White surface (matches the page canvas — Airbnb has no contrast footer), 48×80px padding. Three columns of link blocks (Support / Hosting / Airbnb), separated by generous 24px gutters. Each column heads with a `{typography.title-sm}` ink label and stacks `{component.footer-link}` rows in `{typography.body-sm}` ink.

**`legal-band`** — A bottom strip beneath the footer columns carrying the copyright line, language picker (globe icon + "English (US)" link), currency picker, and social icons (Facebook, X, Instagram). All text in muted `{colors.muted}` at `{typography.caption-sm}`.

Responsive Behavior

| Name | Width | Key Changes |

|---|---|---|

| Mobile | < 744px | Top nav collapses to logo + hamburger; product tabs hide behind a sheet; search bar collapses to a single tappable pill; property cards stack 1-up; city grid 1-column; listing detail collapses reservation card to a sticky bottom bar. |

| Tablet | 744–1128px | Top nav keeps product tabs but search bar narrows; property cards 2-up; city grid 2–3 column; reservation card stays sticky right-rail at narrower width. |

| Desktop | 1128–1440px | Full top nav with three product tabs centered; search bar at full pill width with all 3 segments visible; property cards 4-up; city grid 6-column; listing detail 2-column with reservation rail. |

| Wide | > 1440px | Content width caps at 1440px on listing/search pages and ~1280px on editorial; gutters absorb the rest. |

Touch Targets

  • Primary CTAs at minimum 48×48px (above WCAG AAA).
  • Search orb is 48×48px circular — the most-tapped element on the page.
  • Heart save button is 32×32px circular — borderline for AAA but compensated by a generous 12px padding inside the photo card.
  • Date-picker day cells are 40×40px circular.

Collapsing Strategy

  • Top product tabs collapse into a hamburger sheet below 744px.
  • Search bar's 3 segments collapse into a single-tap entry that opens a full-screen search overlay on mobile.
  • Property and city-link grids drop column counts cleanly at each breakpoint — never reflow rows; always reduce columns.
  • Reservation card on listing detail switches from sticky right-rail to a sticky bottom bar on mobile, carrying just the "Reserve" CTA + nightly price summary.

Known Gaps

  • **Hover state colors:** intentionally not documented per the global no-hover policy — Airbnb's actual `:hover` styling for property cards is a subtle elevation lift, but precise extraction is unreliable.
  • **Loading states / skeleton screens:** not visible on the extracted surfaces.
  • **Map view styling:** the search-results map uses Mapbox-tinted tiles with custom Rausch markers; not captured here.
  • **Form input error states:** error text color (`{colors.primary-error-text}`) is documented, but the full input outline + helper-text combination on validation failure was not visible in the captured surfaces.
  • **Sub-brand palettes:** Luxe (`{colors.luxe}`) and Plus (`{colors.plus}`) are documented as tokens, but their full sub-system (typography overrides, surface treatment) lives on separate sub-domains and is not captured here.

개요

에어비앤비는 사진 중심의 관대한 소비자 시장의 전형적인 예입니다. 기본 캔버스는 **순백색**(`{colors.canvas}` — #ffffff)이며 헤드라인과 본문에는 짙은 검정색 잉크(``{colors.ink}` — #222222)가 있고 모든 기본 CTA, 검색 버튼 구체, 하트 저장 상태 및 인라인 브랜드 링크를 전달하는 **Rausch**(``{colors.primary}` — #ff385c)의 단일 전압이 있습니다. 메인라인 마케팅에는 보조 브랜드 색상이 없습니다. **Luxe purple** (`{colors.luxe}` — #460479) 및 **Plus magenta** (`{colors.plus}` — #92174d) 토큰은 Airbnb Luxe / Plus 컨텍스트 내에서만 표시되는 하위 브랜드 강조 표시입니다.

Type은 **Airbnb Cereal VF**(맞춤형 가변 글꼴 Airbnb 라이선스)를 실행하며, **Circular**는 역사적인 내부 폴백이고 그 아래에는 시스템 스택이 있습니다. 시리얼은 적당한 무게로 표시됩니다. 디스플레이 헤드라인은 금융 또는 기업 시스템이 의존하는 무거운 700개 이상의 무게가 아닌 무게 500~600에서 22~28px로 렌더링됩니다. 홈페이지의 영웅 h1("Inspiration for future getaways")은 28px/700에 불과하며 일반적인 SaaS 페이지에서는 작게 느껴질 수 있습니다. 여기서는 레이아웃이 인쇄상의 힘보다는 시각적 무게를 위해 사진(도시 콜라주, 속성 카드)에 의존하기 때문에 작동합니다.

모양 언어는 **소프트**입니다. 버튼은 반경 8픽셀(`{rounded.sm}`), 속성 카드는 ~14픽셀(`{rounded.md}`), 검색 표시줄은 완전한 알약 모양(`{rounded.full}`), 위시리스트 하트와 검색 구체는 원(`{rounded.full}`), 카테고리 스트립 둥근 모서리는 32픽셀(`{rounded.xl}`)에서 실행됩니다. 본체 그리드 자체를 제외하고는 본질적으로 딱딱한 모서리가 없습니다. 모든 대화형 요소는 둥글게 처리되어 있습니다.

**주요 특징:**

  • 단일 강조 색상: `{colors.primary}`(#ff385c — "Rausch")는 모든 기본 CTA, 검색 구, 하트 세이브 상태 및 브랜드 워드마크를 포함합니다. 거의 사용되지 않습니다. 대부분의 페이지는 90% 흰색 + 잉크로 구성되어 있으며 Rausch 순간이 한두 번 있습니다.
  • 맞춤 변수 유형: 'Airbnb Cereal VF'. 디스플레이 무게는 500-700, 본체는 400입니다. 적당한 무게는 의도된 것입니다. 시스템은 시각적 무게를 위해 사진을 신뢰합니다.
  • 3가지 제품 상단 탐색: 홈, 경험, 서비스 — 각각 손으로 그린 ​​32px 아이콘과 두 가지 최신 제품에 "NEW" 배지(`{comComponent.new-tag}`)가 있습니다. 활성 탭은 밑줄 규칙(`{comComponent.product-tab-active}`)을 사용합니다.
  • 알약 모양의 전역 검색 표시줄: 흰색 표면, 완전히 둥근(`{rounded.full}`), 1px 가는선으로 Where / When / Who 세그먼트로 나뉘며 원형 Rausch 검색 구(`{comComponent.search-orb}`)로 종료됩니다.
  • 속성 카드는 사진 우선입니다. '{rounded.md}' 모서리 자르기가 포함된 가로세로 비율 직사각형, 스와이프할 수 있는 이미지 캐러셀, 왼쪽 상단에 "게스트 즐겨찾기" 부동 배지, 오른쪽 상단에 하트 아이콘, 그 아래에 4~5줄의 메타가 있습니다.
  • 편집 드롭다운(바닥글, 언어 선택기)은 흰색 캔버스 위의 깨끗한 텍스트 열입니다. 카드 표면이나 그림자가 없습니다.
  • 디자인 시스템은 고도를 하나의 섀도우 계층으로 제한합니다(`box-shadow: rgba(0,0,0,0.02) 0 0 0 1px, rgba(0,0,0,0.04) 0 2px 6px, rgba(0,0,0,0.1) 0 4px 8px`) — 호버 플로팅 카드 및 검색/계정 드롭다운에 사용됩니다.
  • `{spacing.section}`(64px)에 주요 섹션이 있는 8px 기본 간격 시스템 — 넉넉하지만 편집 잡지처럼 느껴질 만큼 통풍이 잘 되지는 않습니다. 시장 밀도는 스크롤당 더 많은 카드를 원합니다.

색상

브랜드 및 액센트

  • **Rausch** (`{colors.primary}` — #ff385c): 단일 브랜드 색상입니다. 기본 CTA 배경(예약, 계속), 검색 구체, 속성 카드의 하트 저장 상태 및 인라인 브랜드 링크에 사용됩니다. 소비자 여행에서 가장 눈에 띄는 색상.
  • **Rausch Active** (`{colors.primary-active}` — #e00b41): 누르기/포인터다운 변형 — 약간 더 포화됩니다. `{comComponent.button-primary-active}`에 사용됩니다.
  • **Rausch 비활성화됨** (`{colors.primary-disabled}` — #ffd1da): 비활성화된 CTA에 사용되는 옅은 색조입니다.
  • **Luxe Purple** (`{colors.luxe}` — #460479): Airbnb Luxe의 하위 브랜드 악센트입니다. Luxe 브랜드 표면에만 표시되며 메인라인 마케팅에는 표시되지 않습니다.
  • **Plus Magenta** (`{colors.plus}` — #92174d): Airbnb Plus의 하위 브랜드 악센트입니다. Luxe와 동일한 범위 - 하위 제품에만 해당됩니다.

표면

  • **캔버스** (`{colors.canvas}` — #ffffff): 모든 공개 페이지의 기본 페이지 층입니다. 에어비앤비에는 공개 웹에 다크 모드가 없습니다.
  • **표면 소프트**(`{colors.surface-soft}` — #f7f7f7): 가장 밝은 채우기 - 비활성화된 필드, 하위 탐색 호버 배경 및 인라인 검색 필터 밴드에 사용됩니다.
  • **Surface Strong** (`{colors.surface-strong}` — #f2f2f2): 약간 더 두꺼운 채우기 — 원형 아이콘 버튼 표면(예: 이동 경로 뒤로 화살표 및 목록 도구 모음 버튼).

가는선 및 테두리

  • **헤어라인**(`{colors.hairline}` — #dddddd): 기본 1px 테두리 톤 — 검색 창 구분선, 표 구분선, 바닥글 열 분할기, 카드 1px 테두리.
  • **Hairline Soft** (`{colors.hairline-soft}` — #ebebeb): 긴 스크롤 편집 본문 구분 기호에 사용되는 더 가벼운 구분선입니다.
  • **경계가 강함** (`{colo

概要

Airbnb は、写真主導の寛大な消費者市場の典型的な例です。ベースのキャンバスは **純白** (`{colors.canvas}` — #ffffff) で、見出しと本文には黒に近い濃いインク (`{colors.ink}` — #222222) が使用され、すべてのプライマリ CTA、検索ボタン オーブ、ハート保存状態、およびインライン ブランド リンクを運ぶ **Rausch** (`{colors.primary}` — #ff385c) の単一電圧が使用されます。メインラインのマーケティングには二次的なブランドカラーはありません。**Luxe パープル** (`{colors.luxe}` — #460479) および **Plus マゼンタ** (`{colors.plus}` — #92174d) トークンは、Airbnb Luxe / Plus コンテキスト内でのみ表示されるサブブランドのアクセントです。

Type は **Airbnb Cereal VF** (カスタム可変フォント Airbnb ライセンス) を実行し、**Circular** を歴史的な社内フォールバックとして使用し、その下にシステム スタックを配置します。シリアルのウェイトは控えめです。ディスプレイの見出しは、金融システムやエンタープライズ システムが依存する 700 以上の重いウェイトではなく、ウェイト 500 ~ 600 の 22 ~ 28 ピクセルでレンダリングされます。ホームページ上のヒーロー h1 (「将来の休暇へのインスピレーション」) はわずか 28 ピクセル / 700 で、一般的な SaaS ページでは小さく感じるでしょう。ここでうまく機能するのは、レイアウトがタイポグラフィ的な力強さよりも視覚的な重みを写真 (都市のコラージュ、不動産カード) に依存しているためです。

シェイプ言語は**ソフト**です。ボタンの半径は 8 ピクセル (`{rounded.sm}`)、プロパティ カードは約 14 ピクセル (`{rounded.md}`)、検索バーは完全な丸薬の形 (`{rounded.full}`)、ウィッシュリストのハートと検索オーブは円形 (`{rounded.full}`)、カテゴリ ストリップの丸い角は 32 ピクセル (`{rounded.xl}`) です。ボディグリッド自体を除いて、本質的にどこにも硬い角はありません。すべてのインタラクティブな要素は丸みを帯びています。

**主な特徴:**

  • 単一のアクセント カラー: `{colors.primary}` (#ff385c — "Rausch") には、すべてのプライマリ CTA、検索オーブ、ハート保存状態、およびブランド ワードマークが含まれます。ほとんど使用されていません - ほとんどのページは 90% 白 + インクで、ラウシュ モーメントが 1 つまたは 2 つあります。
  • カスタム変数タイプ: 「Airbnb Cereal VF」。ディスプレイのウェイトは 500 ~ 700、本体のウェイトは 400 です。適度なウェイトは意図的であり、システムは視覚的な重さに関して写真を信頼しています。
  • 3 製品のトップ ナビゲーション: ホーム、エクスペリエンス、サービス — それぞれ、2 つの新しい製品に手書きの 32 ピクセルのアイコンと「NEW」バッジ (`{component.new-tag}`) が付いています。アクティブなタブでは、下線ルール (`{component.product-tab-active}`) が使用されます。
  • 錠剤型のグローバル検索バー: 白い表面、完全に丸い (`{rounded.full}`)、1 ピクセルのヘアラインでどこ/いつ/誰のセグメントに分割され、円形の Rausch 検索オーブ (`{component.search-orb}`) で終了します。
  • プロパティ カードは写真が最初です。「{rounded.md}」の角が切り取られたアスペクト比の長方形、スワイプ可能な画像カルーセル、左上に「ゲストのお気に入り」フローティング バッジ、右上にハート アイコン、その下に 4 ~ 5 行のメタがあります。
  • 編集ドロップダウン (フッター、言語ピッカー) は、白いキャンバス上のクリーンなテキスト列です。カード表面や影はありません。
  • デザイン システムは、1 つのシャドウ層 (`box-shadow: rgba(0,0,0,0.02) 0 0 0 1px, rgba(0,0,0,0.04) 0 2px 6px, rgba(0,0,0,0.1) 0 4px 8px`) で高度を制限します。ホバーフローティング カードおよび検索/アカウント ドロップダウンで使用されます。
  • 8 ピクセルの基本スペース システム、主なセクションは `{spacing.section}` (64 ピクセル) にあります。ゆったりしていますが、雑誌編集者であると感じるほど風通しは良くありません。マーケットプレイスの密度が高いため、スクロールごとにより多くのカードが必要です。

ブランドとアクセント

  • **Rausch** (`{colors.primary}` — #ff385c): 単一のブランド カラー。プライマリ CTA 背景 (予約、続行)、検索オーブ、プロパティ カードのハート保存状態、およびインライン ブランド リンクに使用されます。消費者の旅行において最も認識されやすい色。
  • **Rausch Active** (`{colors.primary-active}` — #e00b41): プレス/ポインターダウンのバリアント — わずかに彩度が高くなります。 `{component.button-primary-active}` で使用されます。
  • **Rausch Disabled** (`{colors.primary-disabled}` — #ffd1da): 無効になっている CTA で使用される淡い色合い。
  • **Luxe Purple** (`{colors.luxe}` — #460479): Airbnb Luxe のサブブランド アクセント。 Luxe ブランドの表面内にのみ表示され、メインラインのマーケティングには決して表示されません。
  • **Plus Magenta** (`{colors.plus}` — #92174d): Airbnb Plus のサブブランド アクセント。 Luxe と同じスコープ — サブ製品のみ。

表面

  • **キャンバス** (`{colors.canvas}` — #ffffff): すべてのパブリック ページのデフォルトのページ フロア。 Airbnb には公開ウェブ上にダークモードがありません。
  • **Surface Soft** (`{colors.surface-soft}` — #f7f7f7): 最も明るい塗りつぶし — 無効なフィールド、サブナビゲーション ホバー背景、およびインライン検索フィルター バンドで使用されます。
  • **Surface Strong** (`{colors.surface-strong}` — #f2f2f2): わずかに重い塗りつぶし — 円形のアイコン ボタン サーフェス (ブレッドクラムの戻る矢印やリスト ツールバー ボタンなど)。

ヘアラインと境界線

  • **ヘアライン** (`{colors.hairline}` — #dddddd): デフォルトの 1 ピクセルの境界線のトーン — 検索バーの区切り記号、テーブルの区切り記号、フッター列の分割記号、カードの 1 ピクセルの境界線。
  • **Hairline Soft** (`{colors.hairline-soft}` — #ebebeb): 長期スクロールの編集本文セパレーターで使用される軽量のディバイダー。
  • **ボーダー強い** (`{colo