open-design/design-systems/airbnb/DESIGN.md
Zakaria a46764fb1b
Some checks failed
ci / Validate workspace (push) Has been cancelled
landing-page-ci / Validate landing page (push) Has been cancelled
landing-page-deploy / Deploy landing page (push) Has been cancelled
github-metrics / Generate repository metrics SVG (push) Has been cancelled
first-commit
2026-05-04 14:58:14 -04:00

29 KiB
Raw Permalink Blame History

Design System Inspired by Airbnb

Category: E-Commerce & Retail Travel marketplace. Warm coral accent, photography-driven, rounded UI.

1. Visual Theme & Atmosphere

Airbnb's 2026 design feels like a travel magazine that happens to be an app — pristine white canvases give way to full-bleed photography, and the interface itself disappears so the listings can breathe. The signature Rausch coral-pink (#ff385c) is used sparingly but unmistakably: search CTA, active tab indicator, primary action button, the occasional price or wishlist heart. Everything else is a disciplined grayscale, with #222222 carrying almost every line of text.

What makes the system unmistakably Airbnb is how much faith it places in content. Property photos are displayed at hero scale, 4:3 with edge-to-edge radius treatment. Category switching happens through a tri-tab picker (Homes / Experiences / Services) that uses 3D rendered illustrated icons (a pitched-roof house, a hot-air balloon, a service bell) — physical, tactile, almost toy-like — paired with crisp Airbnb Cereal VF labels. This is the rare consumer product where 3D renders and purely typographic UI coexist without tension.

The newest surface is the Experiences product line — same chrome, but richer card density, more photography, and a center-anchored booking panel with sticky right-rail pricing. Listing detail pages (both rooms and experiences) follow a tight template: full-bleed hero image grid → overlapping rounded booking card (sticky on scroll) → amenities → reviews (Guest Favorite awards use a big centered 4.81 rating with a laurel-wreath lockup) → map → host profile → disclosures. The rhythm is consistent whether you're booking a room or a yacht tour.

Key Characteristics:

  • Rausch coral-pink (#ff385c) as a single-accent brand color, used only for primary CTAs and the search button
  • Full-bleed photography at 4:3 / 16:9 with gentle corner rounding (1420px) as the primary visual vocabulary
  • 3D rendered category icons paired with typographic tabs — the one place the system allows illustration
  • Circular 50% icon buttons (back arrow, share, favorite, carousel arrows) scattered throughout
  • Airbnb Cereal VF carries every label, from 8px legal footnote to 28px section heading — a single-family system
  • Product-tier color coding: Airbnb Plus (magenta #92174d), Airbnb Luxe (deep purple #460479), Airbnb (Rausch coral)
  • Guest Favorite award lockup — centered giant rating number between two laurel wreaths, one of the most recognizable moments in the system
  • Sticky booking panel with a price → dates → guests stack, pinned to the right rail on desktop, transforming to a bottom-anchored "Reserve" bar on mobile
  • Sticky bottom mobile navigation (Explore / Wishlists / Log in) with an active-state Rausch tint

2. Color Palette & Roles

Primary

  • Rausch (#ff385c): The brand's signature coral-pink. CSS variable --palette-bg-primary-core. Used for: primary "Reserve" button, search submit button, active tab underline, wishlist heart fill, pricing emphasis. The single highest-visibility color on every page.

Secondary & Accent

  • Deep Rausch (#e00b41): A more saturated variant. CSS variable --palette-bg-tertiary-core. Used for pressed/active button states and gradient terminal stops.
  • Plus Magenta (#92174d): CSS variable --palette-bg-primary-plus. The brand color for the Airbnb Plus product tier — a higher-end curated-listing offering.
  • Luxe Purple (#460479): CSS variable --palette-bg-primary-luxe. The brand color for the Airbnb Luxe product tier — villa/estate-level rentals.
  • Info Blue (#428bff): CSS variable --palette-text-legal. Used for legal/informational links (terms, privacy, disclosures) — the only non-monochrome link color in the system.

Surface & Background

  • Canvas White (#ffffff): The default page background. Every card, every container, every detail page starts here.
  • Soft Cloud (#f7f7f7): Subtle subsurface tint used on footer backgrounds, map-view wrappers, and "everything else" sections that want to step back from the primary white.
  • Hairline Gray (#dddddd): Ubiquitous 1px border color — separates cards, amenity rows, review panels, footer columns. The workhorse of the layout system.

Neutrals & Text

  • Ink Black (#222222): CSS variable --palette-text-primary. The system's near-black. Every heading, every body paragraph, every nav label, every price. Used for ~90% of all text on a page.
  • Charcoal (#3f3f3f): CSS variable --palette-text-focused. Used in focused-state input text and one-step-down emphasis copy.
  • Ash Gray (#6a6a6a): CSS variable --palette-bg-tertiary-hover. Secondary labels, "Cottage rentals" subtitle-style copy under city names, muted footer links.
  • Mute Gray (#929292): CSS variable --palette-text-link-disabled. Disabled buttons and low-priority metadata.
  • Stone Gray (#c1c1c1): Tertiary dividers, icon strokes, placeholder avatars.

Semantic & Accent

  • Error Red (#c13515): CSS variable --palette-text-primary-error. Form validation errors, destructive-action warnings.
  • Deep Error (#b32505): CSS variable --palette-text-secondary-error-hover. Pressed/active variants of error states.
  • Translucent Black (rgba(0, 0, 0, 0.24)): CSS variable --palette-text-material-disabled. Disabled material-style labels.

Gradient System

Airbnb's brand gradient appears sparingly, typically only on the wordmark and the search-button branded moment:

linear-gradient(90deg, #ff385c 0%, #e00b41 50%, #92174d 100%)

This coral → magenta sweep is the "branded moment" — never used as a full surface, only as a narrow pill fill or logo treatment.

3. Typography Rules

Font Family

  • Airbnb Cereal VF (primary and only): The proprietary variable-weight sans-serif that carries the entire system. Fallbacks (in order): Circular, -apple-system, system-ui, Roboto, Helvetica Neue, sans-serif.

Weights observed in the extracted tokens: 500, 600, 700. No 400-regular — the system's "body" weight is 500, which gives every block of text a subtle extra density that reads as confident and deliberate.

OpenType features: salt (stylistic alternates) is used on the compact 11px and 14px 600-weight labels — likely for tighter numerals and special-character shaping. No ligature or fractional-numeral features observed.

Hierarchy

Role Size Weight Line Height Letter Spacing Notes
Section Heading 28px / 1.75rem 700 1.43 0 "Inspiration for future getaways" — page-level headings
Subsection Heading 22px / 1.38rem 500 1.18 -0.44px "What this place offers", "Meet the hosts" — content dividers
Card Title 21px / 1.31rem 700 1.43 0 Review panel headings, card lead titles
Listing Title 20px / 1.25rem 600 1.20 -0.18px "Small Group Yacht Tour, Unlimited Wine & Fruits" — listing headlines on detail pages
Subtitle Bold 16px / 1.00rem 600 1.25 0 Host name, city name
Body Medium 16px / 1.00rem 500 1.25 0 Primary body copy on detail pages
Button Large 16px / 1.00rem 500 1.25 0 "Reserve", "Become a host"
Button Default 14px / 0.88rem 500 1.29 0 Standard button labels
Link 14px / 0.88rem 500 1.43 0 Nav links, footer links
Caption Medium 14px / 0.88rem 500 1.29 0 Metadata, subtitle lines ("Cottage rentals", "Villa rentals")
Caption Bold 14px / 0.88rem 600 1.43 0 salt feature enabled — numeric stats, small-text emphasis
Caption Small 13px / 0.81rem 400 1.23 0 Review dates, micro-metadata
Micro Default 12px / 0.75rem 400 1.33 0 Footer disclaimers, legal micro-copy
Micro Bold 12px / 0.75rem 700 1.33 0 "NEW" pill labels
Badge Uppercase 11px / 0.69rem 600 1.18 0 salt feature — compact category/status badges
Superscript 8px / 0.50rem 700 1.25 0.32px Uppercase — price footnotes, decimal tails

Principles

  • One family, many weights. Airbnb Cereal VF handles everything from 8px legal to 28px page headings — the visual identity comes from the family itself, not from typeface mixing.
  • 500 is the new 400. The system's "regular" weight is 500, giving every paragraph a slightly more confident texture than the web default.
  • Negative tracking on display type only. Headings 20px+ compress tracking by -0.18 to -0.44px to feel chiseled; body sizes stay at 0 tracking for readability.
  • Tight line-heights for headlines, generous for body. Display type runs at 1.181.25 (tight); body and caption open up to 1.43 for long-form comfort.
  • No all-caps except at 8px. The only uppercase transform in the system is the 8px superscript — everywhere else, sentence case with subtle weight shifts does the work.

Note on Font Substitutes

Airbnb Cereal VF is proprietary. The closest open-source substitute is Circular Std (still commercial) or Inter (free, Google Fonts) with letter-spacing reduced by -0.01em at display sizes. For strict brand fidelity, the documented fallback chain (Circular, -apple-system, system-ui) renders acceptably on macOS/iOS where system-ui resolves to San Francisco, which has similar proportions.

4. Component Stylings

Buttons

Primary CTA ("Reserve", "Search", "Add dates")

  • Background: Rausch #ff385c
  • Text: Canvas White #ffffff, Airbnb Cereal 500, 16px
  • Padding: ~14px vertical, 24px horizontal
  • Radius: 8px (rectangular) or 50% (circular icon variant)
  • Border: none
  • Active/pressed: transform: scale(0.92) plus a 2px #222222 focus ring at 0 0 0 2px

Secondary Button ("Become a host", outlined tertiary actions)

  • Background: #ffffff
  • Text: Ink Black #222222, Airbnb Cereal 500, 1416px
  • Padding: 10px 16px
  • Radius: 20px (pill) or 8px (rectangular)
  • Border: 1px solid Hairline Gray #dddddd

Icon-Only Circular Button (back arrow, share, favorite, carousel controls)

  • Background: #f2f2f2 (slightly off-white) or white with 1px translucent black border
  • Icon: #222222 outline stroke, 1620px
  • Size: 3244px diameter
  • Radius: 50%
  • Active/pressed: transform: scale(0.92); subtle 4px white ring 0 0 0 4px rgb(255,255,255) to separate from colorful photography backgrounds

Disabled Button

  • Background: #f2f2f2
  • Text: Stone Gray #c1c1c1
  • Opacity: 0.5

Pill Tab Button (category selector "Homes / Experiences / Services")

  • Background: transparent
  • Text: Ink Black #222222, Airbnb Cereal 500, 16px
  • Padding: 8px 14px
  • Active state: 2px Ink Black underline beneath the label
  • Paired with a 3648px 3D-rendered illustrated icon above the label

Cards & Containers

Listing Card (homepage grid, search results)

  • Background: #ffffff
  • Radius: 14px on the image, text sits directly below on transparent background
  • Image: 4:3 aspect ratio, full-bleed, rounded with the same 14px radius
  • Padding: none on the outer container; 12px spacing between image and metadata rows
  • Shadow: none — separation comes from whitespace and the intrinsic radius of the photograph
  • Metadata pattern: City/region on line 1 (16px 600), distance/duration on line 2 (14px 500 Ash Gray), date range on line 3, price row with "per night" at the bottom

Detail Page Booking Panel (sticky right rail on room/experience pages)

  • Background: #ffffff
  • Radius: 1420px
  • Border: 1px solid Hairline Gray #dddddd
  • 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 — a stacked three-layer subtle elevation
  • Padding: 24px
  • Width: ~370px, pinned 120140px below the viewport top
  • Content: price headline → date picker → guest dropdown → primary CTA → "You won't be charged yet" footnote

Amenity Grid Card (on listing detail pages)

  • Background: #ffffff
  • Border: 1px solid Hairline Gray #dddddd at the row level (not per item)
  • Padding: 16px vertical per amenity row
  • Icon + label pattern: 24px outline icon on the left, 16px 500-weight label on the right

Review Card (individual review on detail pages)

  • Background: #ffffff, no border
  • Padding: 0 (relies on grid gaps)
  • Content: 40px circular avatar + 16px 600-weight name + 14px 400 Ash Gray date on one row, then 14px 500 body paragraph below

Inputs & Forms

Search Bar (primary home page)

  • Background: #ffffff
  • Border: 1px solid Hairline Gray #dddddd wrapping all three segments (Where / When / Who)
  • Radius: 32px (full pill)
  • Shadow: rgba(0, 0, 0, 0.04) 0 2px 6px 0 — subtle floating feel
  • Structure: three segments divided by thin vertical dividers, each segment has a 12px 500 label above a 14px 500 placeholder
  • Submit: Rausch circular icon button at the right edge, 48px diameter

Text Input (generic forms)

  • Background: #ffffff
  • Border: 1px solid Hairline Gray #dddddd
  • Radius: 8px
  • Padding: 14px 16px
  • Focus: border switches to Ink Black, adds 0 0 0 2px black outer ring
  • Error: border switches to #c13515 (Error Red), helper text uses same color

Date Picker

  • Calendar grid: 7-column layout, circular 50% day cells 4044px wide
  • Selected range: Ink Black #222222 background with white numerals
  • Start/end anchors: larger filled circles; middle dates use Soft Cloud #f7f7f7 tint

Navigation

Top Nav (Desktop)

  • Height: ~80px
  • Background: #ffffff
  • Left: Airbnb wordmark+logo lockup in Rausch (102×32px)
  • Center: tri-tab category picker (Homes / Experiences / Services) with 3648px 3D icons stacked above 16px 500 labels; active tab has a 2px Ink Black underline
  • Right: "Become a host" text link, then 32px circular globe (language), then 36px hamburger avatar menu
  • Border-bottom: 1px solid Hairline Gray #dddddd

Top Nav (Mobile)

  • Single-row search pill occupies full width: "Start your search" placeholder with a small magnifier icon
  • Below: tri-tab category picker persists (Homes / Experiences / Services) — illustrated icons shrink to ~28px
  • Bottom-fixed tab bar: Explore (active state Rausch) / Wishlists / Log in — 24px icons above 12px labels

Listing Detail Secondary Nav

  • Sticky horizontal scroll of anchor links (Photos · Amenities · Reviews · Location · Host) appears on scroll past the hero image
  • Height: 56px
  • Border-bottom: 1px solid Hairline Gray

Image Treatment

  • Primary aspect ratios: 4:3 for homepage listing grids, 16:9 for experience hero photography, 1:1 for avatars
  • Radius: 14px on listing-grid images, 20px on detail-page hero photo frames, 50% on avatars
  • Image grid on detail pages: five-photo grid with a single large-left image (50% width) and four smaller photos in a 2×2 grid on the right, all sharing the 20px outer rounded container
  • Lazy loading: heavy use of loading="lazy" with blurred placeholder previews
  • Carousel: circular 32px arrow buttons overlay the image, centered vertically; dot indicators sit 12px above the bottom edge

Signature Components

Guest Favorite Award Lockup (featured prominently on high-rated listing detail pages)

  • Centered rating number rendered at 4456px 700-weight
  • Two hand-drawn laurel-wreath SVG illustrations flanking left and right at ~48px tall
  • Below: "Guest Favorite" label at 12px 700 uppercase with 0.32px tracking, and a short sub-label at 14px 500 Ash Gray
  • Full-width block, no container border — sits directly on white canvas

Tri-Tab Category Picker (appears at the top of every browse surface)

  • Three tabs: Homes / Experiences / Services
  • Each tab: 3D-rendered illustrated icon (~48px tall) above 16px 500 label
  • Experiences and Services currently carry a small navy-blue "NEW" pill (12px 700 white text on dark blue) floating top-right of the icon
  • Active tab: 2px Ink Black underline beneath the label

Inspiration City Grid (homepage "Inspiration for future getaways")

  • 6-column grid of destination links on desktop, 2-column on mobile
  • Each cell: 16px 600 city name on line 1, 14px 500 Ash Gray rental-type subtitle on line 2 ("Cottage rentals", "Villa rentals")
  • No images — text-only grid
  • Tabbed above by category (Popular / Arts & culture / Beach / Mountains / Outdoors / Things to do / Travel tips & inspiration / Airbnb-friendly apartments) — active tab has 2px underline and weight shift

Reserve Sticky Card (listing detail pages)

  • Stays fixed 120px below viewport top on desktop as the user scrolls past the hero
  • Collapses to a full-width bottom bar on mobile with a "From $X / night" label and a Rausch "Reserve" pill
  • Always shows: price headline → date display → guest selector → Rausch CTA → "You won't be charged yet" disclaimer

Experience Host Card (experience detail pages)

  • Full-width rounded container with a 3:2 cover photograph at top
  • Host avatar (circular, 56px) overlapping the bottom edge of the cover by 50%
  • Below overlap: host name at 16px 700, host tenure at 14px 500 Ash Gray, small Rausch "Message host" pill button
  • Used as the transition between reviews and the amenities/location block

"Things to know" Strip (listing detail pages)

  • 3-column grid of rule/policy blocks (House rules, Safety & property, Cancellation policy)
  • Each column: icon at the top, 16px 600 heading, 14px 500 Ash Gray body, "Show more" link in Ink Black underline
  • Separator: 1px Hairline Gray top and bottom borders on the overall strip

5. Layout Principles

Spacing System

  • Base unit: 8px
  • Extracted scale: 2, 3, 4, 5.5, 6, 8, 10, 11, 12, 15, 16, 18.5, 22, 24, 32px — fine-grained with a handful of off-grid values used for pixel-perfect icon alignment
  • Section padding: ~4864px top/bottom on desktop, 2432px on mobile
  • Card internal padding: 24px on booking panels and large cards, 16px on amenity rows, 12px on listing-card metadata
  • Gutter between listing cards: 24px desktop, 16px mobile
  • Between stacked text rows: 48px (very tight — reinforces the "dense information" feel of travel listings)

Grid & Container

  • Max content width: 17601920px on ultra-wide (Airbnb lets the grid breathe farther than most sites); 1280px on most detail pages
  • Homepage listing grid: 6 columns at ≥1760px, 5 at ≥1440px, 4 at ≥1128px, 3 at ≥800px, 2 at ≥550px, 1 below
  • Detail page: 2-column asymmetric — main content ~58%, sticky booking panel ~36% on the right, ~6% gutter
  • Footer: 3-column Support / Hosting / Airbnb

Whitespace Philosophy

Airbnb is densely informative but never cramped. Whitespace is used to group — listing cards have 24px of gutter so each photograph reads as a distinct object, but the metadata under each card uses 48px gaps so the price/city/date feels like a single unit. The detail-page booking panel has 24px internal padding, but rows within (date picker, guest selector, CTA) are stacked at 12px — the boundary between the card and the page does more separation work than the content within.

Border Radius Scale

Radius Use
4px Inline anchor tags, tag chips
8px Text buttons, dropdowns, small utility buttons
14px Listing card photography, generic content containers, badges
20px Primary rounded buttons (pill shape), large images, booking panel
32px Search bar pill, extra-large containers
50% All circular icon buttons, all avatars, wishlist hearts — the system's signature round geometry

6. Depth & Elevation

Level Treatment Use
0 No shadow Listing cards, body content, text-only sections
1 rgba(0, 0, 0, 0.08) 0 4px 12px Active/pressed icon buttons (e.g., back, share, favorite) — subtle lift to indicate interaction
2 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 Booking panel sticky card, modals, dropdown menus — the system's signature three-layer elevation
Focus Ring 0 0 0 2px #222222 Active-state buttons, focused search input
White Separator Ring rgb(255, 255, 255) 0 0 0 4px Circular buttons overlaid on photographs — a 4px white ring cleanly separates the button from colorful image backgrounds

Shadow philosophy: Airbnb uses stacked layered shadows rather than a single drop. The three-layer booking-panel shadow reads as one cohesive lift but is actually three separate shadows at different opacity/blur values — creating subtle anti-aliasing at the shadow's perimeter that feels premium without being heavy.

Decorative Depth

  • Photography as depth: the system relies heavily on full-bleed photography to create visual depth; shadows and gradients are used sparingly so the photographs do the heavy lifting
  • Laurel wreath lockup: the Guest Favorite award uses two SVG laurel illustrations that give the otherwise-flat rating number a ceremonial, trophy-like presence
  • 3D rendered category icons: Homes/Experiences/Services icons have their own soft internal lighting and subtle cast shadows baked into the artwork — the only place the brand allows "dimensional" illustration

7. Do's and Don'ts

Do

  • Reserve Rausch #ff385c for primary actions and the active-tab indicator — never dilute it with decorative uses.
  • Let photography breathe — 4:3 crops with 1420px rounded corners, no overlaid text, no gradient scrims.
  • Use Ink Black #222222 for every text layer below Rausch — this is the system's near-black, never true #000000.
  • Pair the tri-tab category picker's 3D illustrated icons with flat typography — don't mix illustration styles within a single surface.
  • Stack three low-opacity shadows (~2%, 4%, 10%) to create the signature booking-panel elevation.
  • Use Hairline Gray #dddddd 1px borders for every card-to-card and row-to-row divider.
  • Treat the booking panel as sticky on desktop, collapsing to a bottom-anchored reserve bar on mobile.
  • Use 48px spacing within metadata groups and 24px between cards — information density is intentional.

Don't

  • Don't introduce secondary accent colors outside the Rausch / Plus Magenta / Luxe Purple product-tier palette.
  • Don't place text inside photographs — captions always sit below the image, never overlaid.
  • Don't use all-caps labels except the single 8px superscript role.
  • Don't round icon buttons to anything other than 50% — circular is the system's signature geometry.
  • Don't add drop shadows to listing cards — they sit on white canvas with no elevation.
  • Don't use gradient backgrounds — the only gradient in the system is a narrow Rausch → magenta sweep on the wordmark.
  • Don't use the 400-regular font weight — Airbnb Cereal's body weight is 500.
  • Don't override Airbnb Cereal VF with a different display face — the system is intentionally single-family.

8. Responsive Behavior

Breakpoints

Airbnb declares ~60 breakpoints (design-time artifact from their component library), but the meaningful layout shifts happen at a much smaller set:

Name Width Key Changes
Ultra-wide ≥1760px 6-column listing grid, 17601920px max content width
Desktop XL 14401759px 5-column grid, full nav visible, sticky right-rail booking panel
Desktop 11281439px 4-column grid, sticky booking panel persists
Laptop 10241127px 34 column grid, category nav remains horizontal
Tablet 8001023px 3-column grid, global search may collapse to a single-row pill
Small tablet 550799px 2-column grid, booking panel drops to full-width inline block
Mobile 375549px 1-column stacked layout, bottom-fixed tab bar appears (Explore / Wishlists / Log in)
Small mobile <375px Edge padding tightens to 16px; category-picker icons shrink to ~28px

Touch Targets

All interactive elements meet or exceed 44×44px. The circular icon button family is specifically sized 3244px with 812px extended hit-area padding. The Rausch primary Reserve button is ~48px tall. The tri-tab category picker's hit area is the full label-plus-icon rectangle (typically ~64×80px per tab).

Collapsing Strategy

  • Nav: Top nav keeps Airbnb wordmark + tri-tab picker on tablet and above; on mobile the picker slides just below the search pill, and the globe/avatar controls move to a bottom-anchored tab bar.
  • Search bar: Three-segment pill (Where / When / Who) with a Rausch circular submit button on desktop; collapses to a single-row "Start your search" pill on mobile, tapping which opens a full-screen search sheet.
  • Booking panel: Sticky right-rail on ≥1128px; inline within the main content column between 8001127px; bottom-fixed "Reserve" pill on <800px.
  • Listing grid: Reflows 6 → 5 → 4 → 3 → 2 → 1 columns across breakpoints.
  • Detail-page image grid: Five-image layout (1 large + 4 small) on desktop; becomes a swipeable full-bleed carousel on mobile with page-dot indicators.
  • Footer: 3-column layout collapses to stacked single-column at <800px.

Image Behavior

  • loading="lazy" universal, with blurred im_w= URL-parameterized preview thumbs served first
  • Responsive images use Airbnb's muscache.com CDN with im_w query parameter for width-based delivery (im_w=240, im_w=720, im_w=1200, im_w=2400)
  • No art-direction crops — the same image is scaled up/down across breakpoints
  • Carousels auto-advance photo height to maintain a consistent 4:3 ratio regardless of source aspect

9. Agent Prompt Guide

Quick Color Reference

  • Primary CTA: "Rausch (#ff385c)"
  • Page background: "Canvas White (#ffffff)"
  • Subsurface: "Soft Cloud (#f7f7f7)"
  • Heading / body text: "Ink Black (#222222)"
  • Secondary text: "Ash Gray (#6a6a6a)"
  • Border / divider: "Hairline Gray (#dddddd)"
  • Error: "Error Red (#c13515)"
  • Info link: "Info Blue (#428bff)"
  • Luxe tier accent: "Luxe Purple (#460479)"
  • Plus tier accent: "Plus Magenta (#92174d)"

Example Component Prompts

  • "Create a primary Reserve button: Rausch (#ff385c) background, white Airbnb Cereal 500-weight label at 16px, 14px × 24px padding, 8px border-radius, no shadow. On active/pressed add transform: scale(0.92) with a 2px Ink Black focus ring (0 0 0 2px #222222)."
  • "Build a listing card with a 4:3 full-bleed photograph at 14px border-radius, no container shadow; below the image stack three text rows with 4px gaps: city name at 16px 600 Ink Black, rental type at 14px 500 Ash Gray (#6a6a6a), and price range in 16px 500 Ink Black with a 14px per night suffix."
  • "Design a sticky booking panel: white background, 14px border-radius, 1px Hairline Gray (#dddddd) border, 3-layer elevation 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), 24px padding, 370px width, pinned 120px below viewport top on desktop. Contents: price headline, date picker, guest dropdown, Rausch primary CTA, and a 12px Ash Gray You won't be charged yet disclaimer."
  • "Create a tri-tab category picker: three equal-width tabs labeled Homes, Experiences, Services; each tab has a ~48px 3D-rendered illustrated icon (house, balloon, bell) above a 16px 500 Ink Black label; active tab gets a 2px Ink Black underline; add a small 12px 700 white NEW pill on a dark navy background to the top-right of the Experiences and Services icons."
  • "Render the Guest Favorite award lockup: a centered rating number at 52px 700-weight Ink Black, flanked left and right by hand-drawn SVG laurel wreaths at ~48px tall; below, a 12px 700 uppercase GUEST FAVORITE label with 0.32px tracking; sub-label at 14px 500 Ash Gray; full-width block sitting directly on white canvas with no container border."

Iteration Guide

When refining existing screens generated with this design system:

  1. Focus on ONE component at a time.
  2. Reference specific color names and hex codes from this document (e.g., "Ink Black #222222", not "dark gray").
  3. Use natural language descriptions alongside measurements ("subtle three-layer elevation" rather than a long shadow string).
  4. Describe the desired "feel" ("magazine-like, photography-first" vs "dense utility").
  5. Always default to Airbnb Cereal VF 500-weight for body and 600700 for emphasis — never 400.
  6. Keep Rausch pink scarce — if more than one Rausch-colored element appears per viewport, consider whether one should be neutralized.

Known Gaps

  • Homepage listing grid cards: the main property-card grid (the primary visual surface of airbnb.com) was not fully captured in the extracted homepage screenshots — content loaded only partially. Listing Card specs above are inferred from the Inspiration grid structure and Airbnb's broader conventions; confirm exact aspect ratios and metadata hierarchy against the live site before production use.
  • Experiences category icons: the 3D illustrated icons for Homes / Experiences / Services are served as raster assets; their exact source-file specifications (SVG vs PNG, rendered pixel dimensions) are not documented here.
  • Animation and transition timings: not captured — static extraction scope.
  • Dark mode: Airbnb does not ship a native dark mode in the extracted product surfaces; this document describes the single light-mode theme only.