一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
· 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
· 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
· 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
横向流程图每步写清页面/功能/操作/完成判据。
· 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
· 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
· 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。
二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。
三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
31 KiB
Design System Inspired by Airbnb
Category: E-Commerce & Detailhandel Reismarktplaats. Warm koraalaccent, fotografiegedreven, afgeronde interface.
1. Visueel Thema & Sfeer
Airbnbs ontwerp van 2026 voelt als een reistijdschrift dat toevallig een app is — makeloos witte doeken maken plaats voor volledigscherm fotografie, en de interface zelf verdwijnt zodat de listings kunnen ademen. De kenmerkende Rausch koraalroze (#ff385c) wordt spaarzaam maar onmiskenbaar gebruikt: zoek-CTA, actieve tab-indicator, primaire actieknop, en het occasionele prijslabel of wenslijst-hart. Al het andere is een gedisciplineerde grijsschaal, waarbij #222222 bijna elke tekstregel draagt.
Wat het systeem onmiskenbaar Airbnb maakt, is hoeveel vertrouwen het in content stelt. Foto's van accommodaties worden op heroformaat weergegeven, 4:3 met een rand-aan-rand radiusbehandeling. Categoriewissel verloopt via een tri-tab-kiezer (Woningen / Ervaringen / Diensten) die 3D gerenderde geïllustreerde iconen gebruikt (een puntdakhuis, een heteluchtballon, een servicebel) — fysiek, tactiel, bijna speelgoedachtig — gecombineerd met scherpe Airbnb Cereal VF-labels. Dit is het zeldzame consumentenproduct waarbij 3D renders en puur typografische interface zonder spanning naast elkaar bestaan.
Het nieuwste oppervlak is de Ervaringen-productlijn — hetzelfde chroom, maar rijkere kaartdichtheid, meer fotografie en een centraal verankerd boekingspaneel met een vaste rechterrail voor de prijs. Detailpagina's van listings (zowel kamers als ervaringen) volgen een strak template: volledigscherm hero-afbeeldingsraster → overlappende afgeronde boekingskaart (vastgezet bij scrollen) → voorzieningen → beoordelingen (Gastfavoriet-awards gebruiken een grote gecentreerde 4.81-beoordeling met een laurierkransopzet) → kaart → gastprofielpagina → openbaarmakingen. Het ritme is consistent, of u nu een kamer of een jachttour boekt.
Kernkenmerken:
- Rausch koraalroze (
#ff385c) als enkelvoudige accentmerkkleur, alleen gebruikt voor primaire CTA's en de zoekknop - Volledigscherm fotografie in 4:3 / 16:9 met zachte hoekafronding (14–20 px) als primair visueel vocabulaire
- 3D gerenderde categorieiconen gecombineerd met typografische tabs — de ene plek waar het systeem illustratie toestaat
- Ronde
50%icoorknoppen (pijl terug, delen, favoriet, carrouselpijlen) verspreid door de interface Airbnb Cereal VFdraagt elk label, van de juridische voetnoot van 8 px tot de sectiekopregel van 28 px — een eenfamilie-systeem- Productlaag-kleurcodering: Airbnb Plus (magenta
#92174d), Airbnb Luxe (dieppaars#460479), Airbnb (Rausch koraal) - Gastfavoriet-award-opzet — gecentreerd reusachtig beoordelingsnummer tussen twee laurierkransen, een van de meest herkenbare momenten in het systeem
- Vastgezet boekingspaneel met een prijs → datums → gasten-stapel, verankerd aan de rechterrail op desktop, getransformeerd naar een onderaan verankerde "Reserveer"-balk op mobiel
- Vaste onderste mobiele navigatie (Verkennen / Verlanglijsten / Inloggen) met een actieve Rausch-tint
2. Kleurenpalet & Rollen
Primair
- Rausch (
#ff385c): De kenmerkende koraalroze van het merk. CSS-variabele--palette-bg-primary-core. Gebruikt voor: primaire "Reserveer"-knop, zoekknop, actieve tab-onderstreping, wenslijst-hartopvulling, prijsnadruk. De kleur met de hoogste zichtbaarheid op elke pagina.
Secundair & Accent
- Deep Rausch (
#e00b41): Een meer verzadigde variant. CSS-variabele--palette-bg-tertiary-core. Gebruikt voor ingedrukte/actieve knoepstatussen en gradiënteindpunten. - Plus Magenta (
#92174d): CSS-variabele--palette-bg-primary-plus. De merkkleur voor de Airbnb Plus-productlaag — een hogere gecureerde listingaanbieding. - Luxe Purple (
#460479): CSS-variabele--palette-bg-primary-luxe. De merkkleur voor de Airbnb Luxe-productlaag — villa/landgoed-verhuur. - Info Blue (
#428bff): CSS-variabele--palette-text-legal. Gebruikt voor juridische/informatieve links (voorwaarden, privacy, openbaarmakingen) — de enige niet-monochrome linkkleur in het systeem.
Oppervlak & Achtergrond
- Canvas White (
#ffffff): De standaard paginaachtergrond. Elke kaart, elke container, elke detailpagina begint hier. - Soft Cloud (
#f7f7f7): Subtiele suboppervlaktetint gebruikt op voettekst-achtergronden, kaartweergave-wrappers en "alles-andere"-secties die terug willen treden van het primaire wit. - Hairline Gray (
#dddddd): Alomtegenwoordige 1-px-randkleur — scheidt kaarten, voorzieningenrijen, beoordelingspanelen, voettekstkolommen. Het werkpaard van het lay-outsysteem.
Neutralen & Tekst
- Ink Black (
#222222): CSS-variabele--palette-text-primary. Het bijna-zwart van het systeem. Elke koptekst, elke alinea, elk navigatielabel, elke prijs. Gebruikt voor ~90% van alle tekst op een pagina. - Charcoal (
#3f3f3f): CSS-variabele--palette-text-focused. Gebruikt in gefocuste invoertekst en nadrukstekst van één stap lager. - Ash Gray (
#6a6a6a): CSS-variabele--palette-bg-tertiary-hover. Secundaire labels, "Cottage-verhuur"-ondertitelstijl onder stadsnamen, gedempte voettekstlinks. - Mute Gray (
#929292): CSS-variabele--palette-text-link-disabled. Uitgeschakelde knoppen en lage-prioriteit metadata. - Stone Gray (
#c1c1c1): Tertiaire scheidingslijnen, icoonstroeken, plaatshouder-avatars.
Semantisch & Accent
- Error Red (
#c13515): CSS-variabele--palette-text-primary-error. Formuliervalidatiefouten, waarschuwingen voor destructieve acties. - Deep Error (
#b32505): CSS-variabele--palette-text-secondary-error-hover. Ingedrukte/actieve varianten van foutstatus. - Translucent Black (
rgba(0, 0, 0, 0.24)): CSS-variabele--palette-text-material-disabled. Uitgeschakelde materiaalstijl-labels.
Gradiëntensysteem
Airbnbs merkgradiënt verschijnt spaarzaam, typisch alleen op het woordmerk en het gebrandmerkte zoekknop-moment:
linear-gradient(90deg, #ff385c 0%, #e00b41 50%, #92174d 100%)
Deze koraal → magenta-sweep is het "gebrandmerkte moment" — nooit gebruikt als volledig oppervlak, alleen als smalle pilvulling of logobehandeling.
3. Typografieregels
Lettertypefamilie
- Airbnb Cereal VF (primair en enig): Het gepatenteerde variabelgewicht sans-serif dat het hele systeem draagt. Fallbacks (in volgorde):
Circular, -apple-system, system-ui, Roboto, Helvetica Neue, sans-serif.
In de geëxtraheerde tokens waargenomen gewichten: 500, 600, 700. Geen 400-regulier — het "broodtekst"-gewicht van het systeem is 500, wat elk tekstblok een subtiele extra dichtheid geeft die als zelfverzekerd en doordacht leest.
OpenType-functies: salt (stilistische alternatieven) wordt gebruikt op de compacte 11-px- en 14-px-600-gewichtslabels — waarschijnlijk voor nauwere cijfers en speciale-tekenvorming. Geen ligatuur- of gebroken-cijfer-functies waargenomen.
Hiërarchie
| Rol | Grootte | Gewicht | Regelhoogte | Letterafstand | Opmerkingen |
|---|---|---|---|---|---|
| Sectiekop | 28 px / 1,75 rem | 700 | 1,43 | 0 | "Inspiratie voor toekomstige uitstapjes" — koppen op paginaniveau |
| Subsectiekop | 22 px / 1,38 rem | 500 | 1,18 | -0,44 px | "Wat deze plek biedt", "Maak kennis met de hosts" — inhoudsscheidingen |
| Kaarttitel | 21 px / 1,31 rem | 700 | 1,43 | 0 | Beoordelingspaneel koppen, hoofdtitels van kaarten |
| Listingtitel | 20 px / 1,25 rem | 600 | 1,20 | -0,18 px | "Kleine Groepsjachttour, Onbeperkte Wijn & Fruit" — listingkoppen op detailpagina's |
| Ondertitel Vet | 16 px / 1,00 rem | 600 | 1,25 | 0 | Hostnaam, stadsnaam |
| Broodtekst Medium | 16 px / 1,00 rem | 500 | 1,25 | 0 | Primaire broodtekst op detailpagina's |
| Knop Groot | 16 px / 1,00 rem | 500 | 1,25 | 0 | "Reserveer", "Word host" |
| Knop Standaard | 14 px / 0,88 rem | 500 | 1,29 | 0 | Standaard knooplabels |
| Link | 14 px / 0,88 rem | 500 | 1,43 | 0 | Navigatielinks, voettekstlinks |
| Bijschrift Medium | 14 px / 0,88 rem | 500 | 1,29 | 0 | Metadata, ondertitelregels ("Cottage-verhuur", "Villa-verhuur") |
| Bijschrift Vet | 14 px / 0,88 rem | 600 | 1,43 | 0 | salt-functie ingeschakeld — numerieke statistieken, kleintekst-nadruk |
| Bijschrift Klein | 13 px / 0,81 rem | 400 | 1,23 | 0 | Beoordelingsdatums, micro-metadata |
| Micro Standaard | 12 px / 0,75 rem | 400 | 1,33 | 0 | Voettekst-disclaimers, juridische micro-kopij |
| Micro Vet | 12 px / 0,75 rem | 700 | 1,33 | 0 | "NIEUW"-pillabels |
| Badge Hoofdletters | 11 px / 0,69 rem | 600 | 1,18 | 0 | salt-functie — compacte categorie-/statusbadges |
| Superscript | 8 px / 0,50 rem | 700 | 1,25 | 0,32 px | Hoofdletters — prijsvoetnoten, decimaalstaarten |
Principes
- Één familie, veel gewichten. Airbnb Cereal VF behandelt alles van juridische tekst van 8 px tot paginakoppen van 28 px — de visuele identiteit komt uit de familie zelf, niet uit lettertype-mengen.
- 500 is het nieuwe 400. Het "reguliere" gewicht van het systeem is 500, wat elke alinea een iets zelfverzekerder textuur geeft dan de webstandaard.
- Negatieve tracking alleen bij displaytypen. Koppen van 20 px en groter comprimeren de tracking met -0,18 tot -0,44 px om gebeiteld aan te voelen; broodtekstformaten blijven op 0 tracking voor leesbaarheid.
- Strakke regelhoogten voor koppen, ruimhartig voor broodtekst. Displaytypen draaien op 1,18–1,25 (strak); broodtekst en bijschriften openen naar 1,43 voor langvorm comfort.
- Geen hoofdletters behalve op 8 px. De enige hoofdlettertransformatie in het systeem is het 8-px-superscript — overal anders doet zinschrift met subtiele gewichtsverschuivingen het werk.
Opmerking over Lettertype-substituten
Airbnb Cereal VF is gepatenteerd. Het dichtstbijzijnde open-source substituut is Circular Std (nog commercieel) of Inter (gratis, Google Fonts) met letterafstand verminderd met -0,01 em bij displayformaten. Voor strikte merkentrouw rendert de gedocumenteerde fallback-keten (Circular, -apple-system, system-ui) acceptabel op macOS/iOS waar system-ui wordt omgezet naar San Francisco, dat vergelijkbare proporties heeft.
4. Component-opmaak
Knoppen
Primaire CTA ("Reserveer", "Zoeken", "Datums toevoegen")
- Achtergrond: Rausch
#ff385c - Tekst: Canvas White
#ffffff, Airbnb Cereal 500, 16 px - Opvulling: ~14 px verticaal, 24 px horizontaal
- Radius: 8 px (rechthoekig) of 50% (ronde icovariant)
- Rand: geen
- Actief/ingedrukt:
transform: scale(0.92)plus een 2-px-#222222-focusring op0 0 0 2px
Secundaire Knop ("Word host", omrande tertiaire acties)
- Achtergrond:
#ffffff - Tekst: Ink Black
#222222, Airbnb Cereal 500, 14–16 px - Opvulling: 10 px 16 px
- Radius: 20 px (pil) of 8 px (rechthoekig)
- Rand: 1 px solid Hairline Gray
#dddddd
Alleen-icoon Ronde Knop (pijl terug, delen, favoriet, carrouselbesturingen)
- Achtergrond:
#f2f2f2(licht gebroken wit) of wit met 1-px transparante zwarte rand - Icoon:
#222222contourstreek, 16–20 px - Grootte: 32–44 px diameter
- Radius: 50%
- Actief/ingedrukt:
transform: scale(0.92); subtiele 4-px witte ring0 0 0 4px rgb(255,255,255)om te scheiden van kleurrijke fotografieachtergronden
Uitgeschakelde Knop
- Achtergrond:
#f2f2f2 - Tekst: Stone Gray
#c1c1c1 - Doorzichtigheid: 0,5
Piltab-knop (categoriekiezer "Woningen / Ervaringen / Diensten")
- Achtergrond: transparant
- Tekst: Ink Black
#222222, Airbnb Cereal 500, 16 px - Opvulling: 8 px 14 px
- Actieve staat: 2-px Ink Black-onderstreping onder het label
- Gecombineerd met een 3D gerenderd geïllustreerd icoon van 36–48 px boven het label
Kaarten & Containers
Listingkaart (beranda-raster, zoekresultaten)
- Achtergrond:
#ffffff - Radius: 14 px op de afbeelding, tekst zit direct eronder op transparante achtergrond
- Afbeelding: 4:3-beeldverhouding, volledig scherm, afgerond met dezelfde 14-px radius
- Opvulling: geen op de buitenste container; 12 px ruimte tussen afbeelding en metadatarijen
- Schaduw: geen — scheiding komt van witruimte en de intrinsieke radius van de foto
- Metadatapatroon: Stad/regio op regel 1 (16 px 600), afstand/duur op regel 2 (14 px 500 Ash Gray), datumbereik op regel 3, prijsregel met "per nacht" onderaan
Detailpagina Boekingspaneel (vaste rechterrail op kamer-/ervaringspagina's)
- Achtergrond:
#ffffff - Radius: 14–20 px
- Rand: 1 px solid Hairline Gray
#dddddd - Schaduw:
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— een gestapelde drielaagse subtiele verhoging - Opvulling: 24 px
- Breedte: ~370 px, vastgezet 120–140 px onder de bovenkant van de viewport
- Inhoud: prijskop → datumkiezer → gastenkeuzelijst → primaire CTA → voetnoot "U wordt nog niet in rekening gebracht"
Voorzieningenraster-kaart (op listingdetailpagina's)
- Achtergrond:
#ffffff - Rand: 1 px solid Hairline Gray
#ddddddop rijniveau (niet per item) - Opvulling: 16 px verticaal per voorzieningsrij
- Icoon + label-patroon: 24-px contouricoon links, 16-px-500-gewichtslabel rechts
Beoordelingskaart (individuele beoordeling op detailpagina's)
- Achtergrond:
#ffffff, geen rand - Opvulling: 0 (afhankelijk van rasterafstanden)
- Inhoud: 40-px ronde avatar + 16-px-600-gewichtsnaam + 14-px-400 Ash Gray datum op één rij, dan 14-px-500 broodtekstalinie eronder
Invoer & Formulieren
Zoekbalk (primaire startpagina)
- Achtergrond:
#ffffff - Rand: 1 px solid Hairline Gray
#ddddddom alle drie segmenten (Waar / Wanneer / Wie) - Radius: 32 px (volledige pil)
- Schaduw:
rgba(0, 0, 0, 0.04) 0 2px 6px 0— subtiel zwevend gevoel - Structuur: drie segmenten gescheiden door dunne verticale scheidingslijnen, elk segment heeft een 12-px-500-label boven een 14-px-500-plaatshouder
- Verzenden: Rausch ronde icoknop aan de rechterrand, 48-px diameter
Tekstinvoer (generieke formulieren)
- Achtergrond:
#ffffff - Rand: 1 px solid Hairline Gray
#dddddd - Radius: 8 px
- Opvulling: 14 px 16 px
- Focus: rand schakelt over naar Ink Black, voegt
0 0 0 2pxzwarte buitenste ring toe - Fout: rand schakelt over naar
#c13515(Error Red), helptekst gebruikt dezelfde kleur
Datumkiezer
- Kalenderraster: 7-kolomindeling, ronde
50%dagcellen 40–44 px breed - Geselecteerd bereik: Ink Black
#222222achtergrond met witte cijfers - Start-/eindankers: grotere gevulde cirkels; middendatums gebruiken Soft Cloud
#f7f7f7-tint
Navigatie
Bovenste Nav (Desktop)
- Hoogte: ~80 px
- Achtergrond:
#ffffff - Links: Airbnb woordmerk+logo-opzet in Rausch (102×32 px)
- Midden: tri-tab categoriekiezer (Woningen / Ervaringen / Diensten) met 3D-iconen van 36–48 px gestapeld boven 16-px-500-labels; actieve tab heeft 2-px Ink Black-onderstreping
- Rechts: "Word host"-tekstlink, dan 32-px ronde bol (taal), dan 36-px hamburgermenu avatar
- Onderste rand: 1 px solid Hairline Gray
#dddddd
Bovenste Nav (Mobiel)
- Eénregels zoekpil neemt de volledige breedte in: "Begin uw zoekopdracht"-plaatshouder met klein vergrootglas-icoon
- Eronder: tri-tab categoriekiezer blijft bestaan (Woningen / Ervaringen / Diensten) — geïllustreerde iconen krimpen naar ~28 px
- Onderaan vaste tabbar: Verkennen (actieve status Rausch) / Verlanglijsten / Inloggen — 24-px-iconen boven 12-px-labels
Listing Detailpagina Secundaire Nav
- Vaste horizontale scroll van ankerlinks (Foto's · Voorzieningen · Beoordelingen · Locatie · Host) verschijnt bij scrollen voorbij de hero-afbeelding
- Hoogte: 56 px
- Onderste rand: 1 px solid Hairline Gray
Afbeeldingsbehandeling
- Primaire beeldverhoudingen: 4:3 voor listingrasters op de startpagina, 16:9 voor ervaring-herofotografie, 1:1 voor avatars
- Radius: 14 px op listingraster-afbeeldingen, 20 px op detailpagina-herofotoframes,
50%op avatars - Afbeeldingsraster op detailpagina's: vijf-foto-raster met één grote afbeelding links (50% breedte) en vier kleinere foto's in een 2×2-raster rechts, alle gedeeld in de buitenste afgeronde container van 20 px
- Lazy loading: intensief gebruik van
loading="lazy"met vervaagde plaatshoudervoorbeelden - Carrousel: ronde 32-px pijlknoppen overlappen de afbeelding, verticaal gecentreerd; puntindicatoren zitten 12 px boven de onderrand
Kenmerkende Componenten
Gastfavoriet-award-opzet (prominent weergegeven op detailpagina's van listings met hoge beoordeling)
- Gecentreerd beoordelingsnummer weergegeven op 44–56 px met 700-gewicht
- Twee handgetekende laurierkrans-SVG-illustraties flankeren links en rechts op ~48 px hoogte
- Eronder: "Gastfavoriet"-label op 12 px 700 hoofdletters met
0,32 px-tracking, en een kort sub-label op 14 px 500 Ash Gray - Volledige breedte blok, geen containerrand — zit direct op wit canvas
Tri-Tab Categoriekiezer (verschijnt bovenaan elk bladeroppervlak)
- Drie tabs: Woningen / Ervaringen / Diensten
- Elke tab: 3D gerenderd geïllustreerd icoon (~48 px hoog) boven 16-px-500-label
- Ervaringen en Diensten dragen momenteel een kleine donkerblauwe "NIEUW"-pil (12-px-700 witte tekst op donkerblauwe achtergrond) zwevend rechtsboven het icoon
- Actieve tab: 2-px Ink Black-onderstreping onder het label
Inspiratiestedenkader (startpagina "Inspiratie voor toekomstige uitstapjes")
- 6-kolomsraster van bestemmingslinks op desktop, 2 kolommen op mobiel
- Elke cel: 16-px-600-stadsnaam op regel 1, 14-px-500 Ash Gray-verhuurtype-ondertitel op regel 2 ("Cottage-verhuur", "Villa-verhuur")
- Geen afbeeldingen — alleen-tekstraster
- Bovenaan met tabs per categorie (Populair / Kunst & cultuur / Strand / Bergen / Buiten / Activiteiten / Reistips & inspiratie / Airbnb-vriendelijke appartementen) — actieve tab heeft 2-px-onderstreping en gewichtsverschuiving
Vaste Reserveerkaart (listingdetailpagina's)
- Blijft vast 120 px onder de bovenkant van de viewport op desktop terwijl de gebruiker voorbij de hero scrolt
- Klapt in tot een volledigbreedte onderbalk op mobiel met een "Vanaf $X / nacht"-label en een Rausch-"Reserveer"-pil
- Altijd weergegeven: prijskop → datumweergave → gastenkiezer → Rausch CTA → disclaimer "U wordt nog niet in rekening gebracht"
Ervaring Gastenkaart (detailpagina's van ervaringen)
- Volledigbreedte afgeronde container met een 3:2 omslagfoto bovenaan
- Gastavatar (rond, 56 px) overlapt de onderrand van de omslag met 50%
- Onder de overlap: hostnaam op 16 px 700, hostervaring op 14 px 500 Ash Gray, kleine Rausch-"Bericht aan host"-pilknop
- Gebruikt als overgang tussen beoordelingen en het voorzieningen-/locatieblok
"Wat u moet weten"-strip (listingdetailpagina's)
- 3-kolomsraster van regel-/beleidsblokken (Huisregels, Veiligheid & eigendom, Annuleringsbeleid)
- Elke kolom: icoon bovenaan, 16-px-600-kop, 14-px-500 Ash Gray-broodtekst, "Meer weergeven"-link in Ink Black-onderstreping
- Scheidingslijn: 1-px Hairline Gray boven- en onderrand op de gehele strip
5. Lay-outprincipes
Spatiëringssysteem
- Basiseenheid: 8 px
- Geëxtraheerde schaal: 2, 3, 4, 5,5, 6, 8, 10, 11, 12, 15, 16, 18,5, 22, 24, 32 px — fijnkorrelig met een handvol off-raster-waarden voor pixelperfecte icoonautozetting
- Sectie-opvulling: ~48–64 px boven/onder op desktop, 24–32 px op mobiel
- Kaart interne opvulling: 24 px op boekingspanelen en grote kaarten, 16 px op voorzieningsrijen, 12 px op listingkaart-metadata
- Tussenruimte tussen listingkaarten: 24 px desktop, 16 px mobiel
- Tussen gestapelde tekstrijen: 4–8 px (zeer krap — versterkt het "dichte informatie"-gevoel van reislistings)
Raster & Container
- Maximale inhoudsbreede: 1760–1920 px op ultrabreed (Airbnb laat het raster verder ademen dan de meeste sites); 1280 px op de meeste detailpagina's
- Startpagina-listingraster: 6 kolommen bij ≥1760 px, 5 bij ≥1440 px, 4 bij ≥1128 px, 3 bij ≥800 px, 2 bij ≥550 px, 1 eronder
- Detailpagina: 2-kolomsasymmetrisch — hoofdinhoud ~58%, vaste boekingspaneel ~36% rechts, ~6% tussenruimte
- Voettekst: 3 kolommen Ondersteuning / Hosting / Airbnb
Witruimtefilosofie
Airbnb is informatief maar nooit benauwd. Witruimte wordt gebruikt om te groeperen — listingkaarten hebben 24 px tussenruimte zodat elke foto als een afzonderlijk object leest, maar de metadata onder elke kaart gebruikt 4–8 px-tussenruimten zodat prijs/stad/datum als één eenheid aanvoelt. Het detailpagina-boekingspaneel heeft 24 px interne opvulling, maar rijen daarbinnen (datumkiezer, gastenkiezer, CTA) zijn gestapeld op 12 px — de grens tussen de kaart en de pagina doet meer scheidingswerk dan de inhoud daarbinnen.
Randradius-schaal
| Radius | Gebruik |
|---|---|
| 4 px | Inline ankertags, tag-chips |
| 8 px | Tekstknoppen, keuzelijsten, kleine hulpprogrammaknoppen |
| 14 px | Listingkaartfotografie, generieke inhoudscontainers, badges |
| 20 px | Primaire afgeronde knoppen (pilvorm), grote afbeeldingen, boekingspaneel |
| 32 px | Zoekbalk-pil, extra grote containers |
| 50% | Alle ronde icoorknoppen, alle avatars, wenslijst-harten — de kenmerkende ronde geometrie van het systeem |
6. Diepte & Verhoging
| Niveau | Behandeling | Gebruik |
|---|---|---|
| 0 | Geen schaduw | Listingkaarten, hoofdinhoud, alleen-tekst-secties |
| 1 | rgba(0, 0, 0, 0.08) 0 4px 12px |
Actieve/ingedrukte icoorknoppen (bijv. terug, delen, favoriet) — subtiele lift om interactie aan te geven |
| 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 |
Vaste boekingspaneel-kaart, modals, keuzelijstmenu's — de kenmerkende drielaagse verhoging van het systeem |
| Focusring | 0 0 0 2px #222222 |
Actieve-statussknoppen, gefocuste zoekinvoer |
| Witte Scheidingsring | rgb(255, 255, 255) 0 0 0 4px |
Ronde knoppen overlapt op foto's — een 4-px witte ring scheidt de knop netjes van kleurrijke afbeeldingsachtergronden |
Schaduwfilosofie: Airbnb gebruikt gestapelde gelaagde schaduwen in plaats van één enkele slagschaduw. De drielaagse boekingspaneel-schaduw leest als één samenhangende lift maar bestaat eigenlijk uit drie afzonderlijke schaduwen op verschillende dekking/vervagingswaarden — wat subtiele anti-aliasing creëert aan de omtrek van de schaduw die premium aanvoelt zonder zwaar te zijn.
Decoratieve Diepte
- Fotografie als diepte: het systeem vertrouwt sterk op volledigschermfotografie om visuele diepte te creëren; schaduwen en gradiënten worden spaarzaam gebruikt zodat de foto's het zware werk doen
- Laurierkransopzet: de Gastfavoriet-award gebruikt twee SVG-laurierkransillustaties die het anderszins platte beoordelingsnummer een ceremoniële, trofeeachtige aanwezigheid geven
- 3D gerenderde categorieiconen: de iconen voor Woningen/Ervaringen/Diensten hebben hun eigen zachte interne verlichting en subtiele gegoten schaduwen ingebakken in het artwork — de enige plek waar het merk "dimensionele" illustratie toestaat
7. Wat Wel en Wat Niet
Wat Wel
- Reserveer Rausch
#ff385cvoor primaire acties en de actieve tab-indicator — verdun het nooit met decoratief gebruik. - Laat fotografie ademen — 4:3-uitsneden met 14–20-px afgeronde hoeken, geen overlappende tekst, geen gradiëntschermen.
- Gebruik Ink Black
#222222voor elke tekstlaag onder Rausch — dit is het bijna-zwart van het systeem, nooit echt#000000. - Combineer de 3D-geïllustreerde iconen van de tri-tab categoriekiezer met platte typografie — meng geen illustratiestijlen binnen één enkel oppervlak.
- Stapel drie lage-dekking schaduwen (~2%, 4%, 10%) om de kenmerkende boekingspaneel-verhoging te creëren.
- Gebruik Hairline Gray
#dddddd1-px-randen voor elke kaart-naar-kaart- en rij-naar-rij-scheidingslijn. - Behandel het boekingspaneel als vastgezet op desktop, inklappend naar een onderaan verankerde reserveringsbalk op mobiel.
- Gebruik 4–8-px-afstand binnen metadatagroepen en 24 px tussen kaarten — informatiedichtheid is opzettelijk.
Wat Niet
- Voer geen secundaire accentkleuren in buiten het Rausch / Plus Magenta / Luxe Purple-productlaagpalet.
- Plaats geen tekst in foto's — bijschriften zitten altijd onder de afbeelding, nooit overlappend.
- Gebruik geen hoofdletterlabels behalve de enkele 8-px-superscript-rol.
- Rond icoorknoppen niet af tot iets anders dan 50% — cirkelvormig is de kenmerkende geometrie van het systeem.
- Voeg geen slagschaduwen toe aan listingkaarten — ze zitten op wit canvas zonder verhoging.
- Gebruik geen gradiëntachtergronden — de enige gradiënt in het systeem is een smalle Rausch → magenta sweep op het woordmerk.
- Gebruik het lettergewicht 400-regulier niet — het broodtekstgewicht van Airbnb Cereal is 500.
- Vervang Airbnb Cereal VF niet door een ander displaylettertype — het systeem is opzettelijk één familie.
8. Responsief Gedrag
Breekpunten
Airbnb declareert ~60 breekpunten (ontwerptijdartefact van hun componentenbibliotheek), maar de betekenisvolle lay-outverschuivingen vinden plaats bij een veel kleinere set:
| Naam | Breedte | Belangrijkste Wijzigingen |
|---|---|---|
| Ultra-breed | ≥1760 px | 6-kolomslistingraster, 1760–1920 px maximale inhoudsbreede |
| Desktop XL | 1440–1759 px | 5-kolomsraster, volledige nav zichtbaar, vaste boekingspaneel op de rechterrail |
| Desktop | 1128–1439 px | 4-kolomsraster, vaste boekingspaneel blijft bestaan |
| Laptop | 1024–1127 px | 3–4-kolomsraster, categorienavigatie blijft horizontaal |
| Tablet | 800–1023 px | 3-kolomsraster, globale zoekopdracht kan inklapten tot een enkele rijpil |
| Klein tablet | 550–799 px | 2-kolomsraster, boekingspaneel daalt naar volledigbreedte inline blok |
| Mobiel | 375–549 px | 1-koloms gestapelde indeling, onderaan vaste tabbar verschijnt (Verkennen / Verlanglijsten / Inloggen) |
| Klein mobiel | <375 px | Randopvulling trekt in naar 16 px; categoriekiezer-iconen krimpen naar ~28 px |
Aanraakdoelen
Alle interactieve elementen voldoen aan of overschrijden 44×44 px. De ronde icoorknoopfamilie is specifiek 32–44 px groot met 8–12 px uitgebreide trefgebied-opvulling. De primaire Rausch Reserveer-knop is ~48 px hoog. Het trefgebied van de tri-tab categoriekiezer is het volledige label-plus-icoon rechthoek (typisch ~64×80 px per tab).
Inklapstrategie
- Nav: Bovenste nav houdt Airbnb-woordmerk + tri-tab kiezer op tablet en groter; op mobiel schuift de kiezer net onder de zoekpil, en de bol-/avataronbesturingen verhuizen naar een onderaan verankerde tabbar.
- Zoekbalk: Driesegment-pil (Waar / Wanneer / Wie) met een ronde Rausch-verzendknop op desktop; klapt op mobiel in tot een eenregel "Begin uw zoekopdracht"-pil, waarop tikken een volledigscherm zoekblad opent.
- Boekingspaneel: Vaste rechterrail op ≥1128 px; inline binnen de hoofdinhoudskolom tussen 800–1127 px; onderaan vaste "Reserveer"-pil op <800 px.
- Listingraster: Doorloopt van 6 → 5 → 4 → 3 → 2 → 1 kolommen over breekpunten.
- Detailpagina-afbeeldingsraster: Vijf-afbeelding-indeling (1 groot + 4 klein) op desktop; wordt op mobiel een veegbaar volledigscherm carrousel met paginapuntindicatoren.
- Voettekst: 3-kolomsindeling klapt in naar gestapelde enkele kolom bij <800 px.
Afbeeldingsgedrag
loading="lazy"universeel, met vervaagdeim_w=-URL-geparametriseerde voorbeeldminiaturen als eerste geserveerd- Responsieve afbeeldingen gebruiken Airbnbs
muscache.com-CDN met deim_w-queryparameter voor breedtegebaseerde levering (im_w=240,im_w=720,im_w=1200,im_w=2400) - Geen art-direction-uitsneden — dezelfde afbeelding wordt op/neer geschaald over breekpunten
- Carrousels passen de foto-hoogte automatisch aan om een consistente 4:3-verhouding te behouden ongeacht de bronverhouding
9. Agent-promptgids
Snelle Kleurenreferentie
- Primaire CTA: "Rausch (#ff385c)"
- Paginaachtergrond: "Canvas White (#ffffff)"
- Suboppervlak: "Soft Cloud (#f7f7f7)"
- Kop-/broodtekst: "Ink Black (#222222)"
- Secundaire tekst: "Ash Gray (#6a6a6a)"
- Rand/scheidingslijn: "Hairline Gray (#dddddd)"
- Fout: "Error Red (#c13515)"
- Info-link: "Info Blue (#428bff)"
- Luxe-laag accent: "Luxe Purple (#460479)"
- Plus-laag accent: "Plus Magenta (#92174d)"
Voorbeeld Componentprompts
- "Maak een primaire Reserveer-knop: Rausch (
#ff385c) achtergrond, wit Airbnb Cereal 500-gewicht label op 16 px, 14 px × 24 px opvulling, 8 px border-radius, geen schaduw. Op actief/ingedrukt voegtransform: scale(0.92)toe met een 2-px Ink Black focusring (0 0 0 2px #222222)." - "Bouw een listingkaart met een 4:3 volledigscherm foto op 14-px border-radius, geen containerschaduw; onder de afbeelding stapel drie tekstrijen met 4-px-tussenruimten: stadsnaam op 16 px 600 Ink Black, verhuurtype op 14 px 500 Ash Gray (
#6a6a6a), en prijsrange in 16 px 500 Ink Black met een 14-pxper nachtachtervoegsel." - "Ontwerp een vast boekingspaneel: witte achtergrond, 14-px border-radius, 1-px Hairline Gray (
#dddddd) rand, 3-laags verhogingsschaduw (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), 24-px opvulling, 370-px breedte, vastgezet 120 px onder de viewport-bovenkant op desktop. Inhoud: prijskop, datumkiezer, gastenkeuzelijst, Rausch primaire CTA, en een 12-px Ash GrayU wordt nog niet in rekening gebrachtdisclaimer." - "Maak een tri-tab categoriekiezer: drie gelijkbrede tabs gelabeld Woningen, Ervaringen, Diensten; elke tab heeft een ~48-px 3D gerenderd geïllustreerd icoon (huis, ballon, bel) boven een 16-px-500 Ink Black label; actieve tab krijgt een 2-px Ink Black onderstreping; voeg een kleine 12-px-700 witte
NIEUWpil toe op een donker marineblauwe achtergrond rechtsboven de Ervaringen- en Diensten-iconen." - "Render de Gastfavoriet-award-opzet: een gecentreerd beoordelingsnummer op 52-px 700-gewicht Ink Black, geflankeerd links en rechts door handgetekende SVG-laurierkransen op ~48 px hoog; eronder een 12-px-700 hoofdletters
GASTFAVORIET-label met 0,32-px tracking; sub-label op 14 px 500 Ash Gray; volledigbreedte blok direct op wit canvas zonder containerrand."
Iteratiegids
Bij het verfijnen van bestaande schermen gegenereerd met dit ontwerpsysteem:
- Richt u op ÉÉN component tegelijk.
- Verwijs naar specifieke kleurnamen en hexcodes uit dit document (bijv. "Ink Black #222222", niet "donkergrijs").
- Gebruik beschrijvingen in natuurlijke taal naast metingen ("subtiele drielaagse verhoging" in plaats van een lange schaduwstring).
- Beschrijf het gewenste "gevoel" ("tijdschriftachtig, fotografie-eerst" vs. "dichte hulpprogramma").
- Standaard altijd Airbnb Cereal VF 500-gewicht voor broodtekst en 600–700 voor nadruk — nooit 400.
- Houd Rausch-roze schaars — als er meer dan één Rausch-gekleurd element per viewport verschijnt, overweeg of één geneutraliseerd moet worden.
Bekende Lacunes
- Startpagina-listingrasterkaarten: het primaire vastgoedkaartenraster (het primaire visuele oppervlak van airbnb.com) werd niet volledig vastgelegd in de geëxtraheerde startpagina-schermafbeeldingen — inhoud laadde slechts gedeeltelijk. De bovenstaande Listingkaart-specificaties zijn afgeleid van de Inspiratierasterstructuur en de bredere conventies van Airbnb; bevestig exacte beeldverhoudingen en metadatahiërarchie met de live site voor productiegebruik.
- Ervaringen-categorieiconen: de 3D geïllustreerde iconen voor Woningen / Ervaringen / Diensten worden geserveerd als raster-assets; hun exacte bronbestandsspecificaties (SVG vs PNG, gerenderde pixelafmetingen) zijn hier niet gedocumenteerd.
- Animatie- en overgangstimings: niet vastgelegd — statische extractiebereik.
- Donkere modus: Airbnb levert geen native donkere modus in de geëxtraheerde productoppervlakken; dit document beschrijft alleen het enkele lichte-modus-thema.