一、④段整套同步(用户选候选 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 & Ritel Marketplace perjalanan. Aksen koral hangat, berbasis fotografi, antarmuka membulat.
1. Tema Visual & Atmosfer
Desain Airbnb tahun 2026 terasa seperti majalah perjalanan yang kebetulan menjadi aplikasi — kanvas putih bersih memberi jalan pada fotografi penuh layar, dan antarmuka itu sendiri menghilang agar listing dapat bernapas. Koral-merah muda Rausch yang khas (#ff385c) digunakan dengan hemat namun tak salah kenal: CTA pencarian, indikator tab aktif, tombol aksi utama, dan sesekali harga atau ikon hati wishlist. Semua yang lain adalah skala abu-abu yang disiplin, dengan #222222 membawa hampir setiap baris teks.
Yang membuat sistem ini tak terbantahkan sebagai Airbnb adalah betapa besar kepercayaan yang ditempatkan pada konten. Foto properti ditampilkan dalam skala hero, 4:3 dengan perlakuan radius tepi-ke-tepi. Pergantian kategori terjadi melalui pemilih tri-tab (Rumah / Pengalaman / Layanan) yang menggunakan ikon bergambar render 3D (rumah dengan atap miring, balon udara panas, bel layanan) — fisik, taktil, hampir seperti mainan — dipasangkan dengan label Airbnb Cereal VF yang tajam. Ini adalah produk konsumen langka di mana render 3D dan antarmuka tipografi murni hadir berdampingan tanpa ketegangan.
Permukaan terbaru adalah lini produk Pengalaman — krom yang sama, namun kepadatan kartu yang lebih kaya, lebih banyak fotografi, dan panel pemesanan yang ditambatkan di tengah dengan harga rel-kanan yang menempel. Halaman detail listing (baik kamar maupun pengalaman) mengikuti template yang ketat: kisi gambar hero penuh layar → kartu pemesanan membulat yang tumpang tindih (menempel saat digulir) → fasilitas → ulasan (penghargaan Favorit Tamu menggunakan peringkat 4.81 besar di tengah dengan lockup lingkaran karangan bunga) → peta → profil tuan rumah → pengungkapan. Ritme ini konsisten baik saat memesan kamar maupun tur yacht.
Karakteristik Utama:
- Koral-merah muda Rausch (
#ff385c) sebagai warna merek aksen tunggal, hanya digunakan untuk CTA utama dan tombol pencarian - Fotografi penuh layar dalam format 4:3 / 16:9 dengan pembulatan sudut halus (14–20 px) sebagai kosakata visual utama
- Ikon kategori render 3D dipasangkan dengan tab tipografi — satu-satunya tempat sistem ini memperbolehkan ilustrasi
- Tombol ikon bulat
50%(panah kembali, bagikan, favorit, panah karusel) tersebar di seluruh antarmuka Airbnb Cereal VFmembawa setiap label, dari catatan hukum 8 px hingga heading seksi 28 px — sistem satu keluarga- Pengkodean warna tingkat produk: Airbnb Plus (magenta
#92174d), Airbnb Luxe (ungu gelap#460479), Airbnb (koral Rausch) - Lockup penghargaan Favorit Tamu — angka peringkat raksasa terpusat di antara dua karangan bunga laurel, salah satu momen paling dikenali dalam sistem
- Panel pemesanan menempel dengan tumpukan harga → tanggal → tamu, disematkan di rel kanan pada desktop, berubah menjadi bilah "Pesan" yang ditambatkan di bawah pada mobile
- Navigasi bawah mobile yang menempel (Jelajahi / Daftar Keinginan / Masuk) dengan tint Rausch status aktif
2. Palet Warna & Peran
Primer
- Rausch (
#ff385c): Koral-merah muda khas merek. Variabel CSS--palette-bg-primary-core. Digunakan untuk: tombol utama "Pesan", tombol kirim pencarian, garis bawah tab aktif, isian hati wishlist, penekanan harga. Warna dengan visibilitas tertinggi tunggal di setiap halaman.
Sekunder & Aksen
- Deep Rausch (
#e00b41): Varian yang lebih jenuh. Variabel CSS--palette-bg-tertiary-core. Digunakan untuk status tombol ditekan/aktif dan titik akhir gradien. - Plus Magenta (
#92174d): Variabel CSS--palette-bg-primary-plus. Warna merek untuk tingkat produk Airbnb Plus — penawaran listing yang dikurasi kelas atas. - Luxe Purple (
#460479): Variabel CSS--palette-bg-primary-luxe. Warna merek untuk tingkat produk Airbnb Luxe — sewa villa/perkebunan. - Info Blue (
#428bff): Variabel CSS--palette-text-legal. Digunakan untuk tautan hukum/informatif (syarat, privasi, pengungkapan) — satu-satunya warna tautan non-monokrom dalam sistem.
Permukaan & Latar Belakang
- Canvas White (
#ffffff): Latar belakang halaman default. Setiap kartu, setiap kontainer, setiap halaman detail dimulai di sini. - Soft Cloud (
#f7f7f7): Tint sub-permukaan halus yang digunakan pada latar belakang footer, pembungkus tampilan peta, dan bagian "segalanya" yang ingin mundur dari putih primer. - Hairline Gray (
#dddddd): Warna border 1 px yang ada di mana-mana — memisahkan kartu, baris fasilitas, panel ulasan, kolom footer. Kuda pekerja sistem tata letak.
Netral & Teks
- Ink Black (
#222222): Variabel CSS--palette-text-primary. Hampir-hitam sistem. Setiap heading, setiap paragraf teks, setiap label navigasi, setiap harga. Digunakan untuk ~90% dari semua teks di halaman. - Charcoal (
#3f3f3f): Variabel CSS--palette-text-focused. Digunakan dalam teks input yang difokuskan dan salinan penekanan satu langkah di bawah. - Ash Gray (
#6a6a6a): Variabel CSS--palette-bg-tertiary-hover. Label sekunder, salinan gaya subtitle "Sewa cottage" di bawah nama kota, tautan footer yang diredam. - Mute Gray (
#929292): Variabel CSS--palette-text-link-disabled. Tombol dinonaktifkan dan metadata prioritas rendah. - Stone Gray (
#c1c1c1): Pembagi tersier, goresan ikon, avatar placeholder.
Semantik & Aksen
- Error Red (
#c13515): Variabel CSS--palette-text-primary-error. Kesalahan validasi formulir, peringatan aksi destruktif. - Deep Error (
#b32505): Variabel CSS--palette-text-secondary-error-hover. Varian ditekan/aktif dari status kesalahan. - Translucent Black (
rgba(0, 0, 0, 0.24)): Variabel CSS--palette-text-material-disabled. Label bergaya material yang dinonaktifkan.
Sistem Gradien
Gradien merek Airbnb muncul dengan hemat, biasanya hanya pada wordmark dan momen tombol pencarian bermerek:
linear-gradient(90deg, #ff385c 0%, #e00b41 50%, #92174d 100%)
Sapuan koral → magenta ini adalah "momen bermerek" — tidak pernah digunakan sebagai permukaan penuh, hanya sebagai isian pil sempit atau perlakuan logo.
3. Aturan Tipografi
Keluarga Font
- Airbnb Cereal VF (primer dan satu-satunya): Sans-serif berbobot variabel yang membawa seluruh sistem. Fallback (secara berurutan):
Circular, -apple-system, system-ui, Roboto, Helvetica Neue, sans-serif.
Bobot yang diamati dalam token yang diekstrak: 500, 600, 700. Tidak ada 400-reguler — bobot "tubuh" sistem adalah 500, yang memberikan setiap blok teks kepadatan ekstra halus yang terbaca sebagai percaya diri dan disengaja.
Fitur OpenType: salt (alternatif stilistik) digunakan pada label 11 px dan 14 px berbobot 600 yang kompak — kemungkinan untuk angka yang lebih ketat dan pembentukan karakter khusus. Tidak ada fitur ligatur atau angka pecahan yang diamati.
Hierarki
| Peran | Ukuran | Bobot | Tinggi Baris | Spasi Huruf | Catatan |
|---|---|---|---|---|---|
| Heading Seksi | 28 px / 1,75 rem | 700 | 1,43 | 0 | "Inspirasi untuk perjalanan masa depan" — heading tingkat halaman |
| Heading Sub-seksi | 22 px / 1,38 rem | 500 | 1,18 | -0,44 px | "Yang ditawarkan tempat ini", "Temui tuan rumah" — pembagi konten |
| Judul Kartu | 21 px / 1,31 rem | 700 | 1,43 | 0 | Heading panel ulasan, judul utama kartu |
| Judul Listing | 20 px / 1,25 rem | 600 | 1,20 | -0,18 px | "Tur Yacht Kelompok Kecil, Anggur & Buah Tak Terbatas" — headline listing di halaman detail |
| Subjudul Tebal | 16 px / 1,00 rem | 600 | 1,25 | 0 | Nama tuan rumah, nama kota |
| Teks Medium | 16 px / 1,00 rem | 500 | 1,25 | 0 | Teks tubuh utama di halaman detail |
| Tombol Besar | 16 px / 1,00 rem | 500 | 1,25 | 0 | "Pesan", "Jadi tuan rumah" |
| Tombol Default | 14 px / 0,88 rem | 500 | 1,29 | 0 | Label tombol standar |
| Tautan | 14 px / 0,88 rem | 500 | 1,43 | 0 | Tautan nav, tautan footer |
| Keterangan Medium | 14 px / 0,88 rem | 500 | 1,29 | 0 | Metadata, baris subtitle ("Sewa cottage", "Sewa villa") |
| Keterangan Tebal | 14 px / 0,88 rem | 600 | 1,43 | 0 | Fitur salt diaktifkan — statistik numerik, penekanan teks kecil |
| Keterangan Kecil | 13 px / 0,81 rem | 400 | 1,23 | 0 | Tanggal ulasan, micro-metadata |
| Mikro Default | 12 px / 0,75 rem | 400 | 1,33 | 0 | Disclaimer footer, micro-copy hukum |
| Mikro Tebal | 12 px / 0,75 rem | 700 | 1,33 | 0 | Label pil "BARU" |
| Badge Huruf Kapital | 11 px / 0,69 rem | 600 | 1,18 | 0 | Fitur salt — badge kategori/status kompak |
| Superskrip | 8 px / 0,50 rem | 700 | 1,25 | 0,32 px | Huruf kapital — catatan kaki harga, ekor desimal |
Prinsip
- Satu keluarga, banyak bobot. Airbnb Cereal VF menangani segalanya dari teks hukum 8 px hingga heading halaman 28 px — identitas visual berasal dari keluarga itu sendiri, bukan dari pencampuran tipografi.
- 500 adalah 400 yang baru. Bobot "reguler" sistem adalah 500, memberikan setiap paragraf tekstur yang sedikit lebih percaya diri dari default web.
- Tracking negatif hanya pada tipe display. Heading 20 px ke atas mengompresi tracking sebesar -0,18 hingga -0,44 px untuk terasa terpahat; ukuran tubuh tetap pada 0 tracking untuk keterbacaan.
- Tinggi baris ketat untuk headline, longgar untuk tubuh. Tipe display berjalan pada 1,18–1,25 (ketat); tubuh dan keterangan membuka diri ke 1,43 untuk kenyamanan bentuk panjang.
- Tidak ada huruf kapital semua kecuali pada 8 px. Satu-satunya transformasi huruf kapital dalam sistem adalah superskrip 8 px — di tempat lain, huruf kalimat dengan pergeseran bobot halus melakukan pekerjaan.
Catatan tentang Pengganti Font
Airbnb Cereal VF adalah milik perusahaan. Pengganti open-source terdekat adalah Circular Std (masih komersial) atau Inter (gratis, Google Fonts) dengan spasi huruf dikurangi sebesar -0,01 em pada ukuran display. Untuk kesetiaan merek yang ketat, rantai fallback yang didokumentasikan (Circular, -apple-system, system-ui) merender dengan layak pada macOS/iOS di mana system-ui diselesaikan ke San Francisco, yang memiliki proporsi serupa.
4. Penataan Gaya Komponen
Tombol
CTA Utama ("Pesan", "Cari", "Tambah tanggal")
- Latar belakang: Rausch
#ff385c - Teks: Canvas White
#ffffff, Airbnb Cereal 500, 16 px - Padding: ~14 px vertikal, 24 px horizontal
- Radius: 8 px (persegi panjang) atau 50% (varian ikon bulat)
- Border: tidak ada
- Aktif/ditekan:
transform: scale(0.92)ditambah cincin fokus 2 px#222222pada0 0 0 2px
Tombol Sekunder ("Jadi tuan rumah", aksi tersier dengan garis tepi)
- Latar belakang:
#ffffff - Teks: Ink Black
#222222, Airbnb Cereal 500, 14–16 px - Padding: 10 px 16 px
- Radius: 20 px (pil) atau 8 px (persegi panjang)
- Border: 1 px solid Hairline Gray
#dddddd
Tombol Hanya Ikon Bulat (panah kembali, bagikan, favorit, kontrol karusel)
- Latar belakang:
#f2f2f2(putih sedikit mati) atau putih dengan border hitam transparan 1 px - Ikon: goresan garis
#222222, 16–20 px - Ukuran: diameter 32–44 px
- Radius: 50%
- Aktif/ditekan:
transform: scale(0.92); cincin putih halus 4 px0 0 0 4px rgb(255,255,255)untuk memisahkan dari latar belakang fotografi berwarna
Tombol Dinonaktifkan
- Latar belakang:
#f2f2f2 - Teks: Stone Gray
#c1c1c1 - Opasitas: 0,5
Tombol Tab Pil (pemilih kategori "Rumah / Pengalaman / Layanan")
- Latar belakang: transparan
- Teks: Ink Black
#222222, Airbnb Cereal 500, 16 px - Padding: 8 px 14 px
- Status aktif: garis bawah Ink Black 2 px di bawah label
- Dipasangkan dengan ikon bergambar render 3D 36–48 px di atas label
Kartu & Kontainer
Kartu Listing (kisi beranda, hasil pencarian)
- Latar belakang:
#ffffff - Radius: 14 px pada gambar, teks duduk langsung di bawah pada latar belakang transparan
- Gambar: rasio 4:3, penuh layar, dibulatkan dengan radius 14 px yang sama
- Padding: tidak ada pada kontainer luar; 12 px jarak antara gambar dan baris metadata
- Bayangan: tidak ada — pemisahan berasal dari ruang putih dan radius intrinsik foto
- Pola metadata: Kota/wilayah di baris 1 (16 px 600), jarak/durasi di baris 2 (14 px 500 Ash Gray), rentang tanggal di baris 3, baris harga dengan "per malam" di bagian bawah
Panel Pemesanan Halaman Detail (rel kanan yang menempel di halaman kamar/pengalaman)
- Latar belakang:
#ffffff - Radius: 14–20 px
- Border: 1 px solid Hairline Gray
#dddddd - Bayangan:
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— elevasi halus tiga lapis yang ditumpuk - Padding: 24 px
- Lebar: ~370 px, disematkan 120–140 px di bawah bagian atas viewport
- Konten: headline harga → pemilih tanggal → dropdown tamu → CTA utama → catatan kaki "Anda belum akan ditagih"
Kartu Kisi Fasilitas (di halaman detail listing)
- Latar belakang:
#ffffff - Border: 1 px solid Hairline Gray
#ddddddpada tingkat baris (bukan per item) - Padding: 16 px vertikal per baris fasilitas
- Pola ikon + label: ikon garis 24 px di sebelah kiri, label berbobot 500 16 px di sebelah kanan
Kartu Ulasan (ulasan individual di halaman detail)
- Latar belakang:
#ffffff, tidak ada border - Padding: 0 (mengandalkan celah kisi)
- Konten: avatar bulat 40 px + nama berbobot 600 16 px + tanggal Ash Gray 400 14 px dalam satu baris, kemudian paragraf tubuh berbobot 500 14 px di bawah
Input & Formulir
Bilah Pencarian (beranda utama)
- Latar belakang:
#ffffff - Border: 1 px solid Hairline Gray
#ddddddmembungkus ketiga segmen (Di mana / Kapan / Siapa) - Radius: 32 px (pil penuh)
- Bayangan:
rgba(0, 0, 0, 0.04) 0 2px 6px 0— rasa mengambang yang halus - Struktur: tiga segmen dibagi oleh pembagi vertikal tipis, setiap segmen memiliki label berbobot 500 12 px di atas placeholder berbobot 500 14 px
- Kirim: tombol ikon bulat Rausch di tepi kanan, diameter 48 px
Input Teks (formulir generik)
- Latar belakang:
#ffffff - Border: 1 px solid Hairline Gray
#dddddd - Radius: 8 px
- Padding: 14 px 16 px
- Fokus: border beralih ke Ink Black, menambahkan cincin luar hitam
0 0 0 2px - Kesalahan: border beralih ke
#c13515(Error Red), teks pembantu menggunakan warna yang sama
Pemilih Tanggal
- Kisi kalender: tata letak 7 kolom, sel hari bulat
50%lebar 40–44 px - Rentang yang dipilih: latar belakang Ink Black
#222222dengan angka putih - Jangkar awal/akhir: lingkaran terisi yang lebih besar; tanggal tengah menggunakan tint Soft Cloud
#f7f7f7
Navigasi
Nav Atas (Desktop)
- Tinggi: ~80 px
- Latar belakang:
#ffffff - Kiri: lockup wordmark+logo Airbnb dalam Rausch (102×32 px)
- Tengah: pemilih kategori tri-tab (Rumah / Pengalaman / Layanan) dengan ikon 3D 36–48 px ditumpuk di atas label berbobot 500 16 px; tab aktif memiliki garis bawah Ink Black 2 px
- Kanan: tautan teks "Jadi tuan rumah", kemudian globe bulat 32 px (bahasa), kemudian menu avatar hamburger 36 px
- Border bawah: 1 px solid Hairline Gray
#dddddd
Nav Atas (Mobile)
- Pil pencarian satu baris menempati lebar penuh: placeholder "Mulai pencarian Anda" dengan ikon kaca pembesar kecil
- Di bawah: pemilih kategori tri-tab bertahan (Rumah / Pengalaman / Layanan) — ikon bergambar menyusut ke ~28 px
- Bilah tab yang disematkan di bawah: Jelajahi (status aktif Rausch) / Daftar Keinginan / Masuk — ikon 24 px di atas label 12 px
Nav Sekunder Halaman Detail Listing
- Guliran horizontal yang menempel dari tautan jangkar (Foto · Fasilitas · Ulasan · Lokasi · Tuan Rumah) muncul saat menggulir melewati gambar hero
- Tinggi: 56 px
- Border bawah: 1 px solid Hairline Gray
Perlakuan Gambar
- Rasio aspek utama: 4:3 untuk kisi listing beranda, 16:9 untuk fotografi hero pengalaman, 1:1 untuk avatar
- Radius: 14 px pada gambar kisi listing, 20 px pada bingkai foto hero halaman detail,
50%pada avatar - Kisi gambar di halaman detail: kisi lima foto dengan satu gambar besar di sebelah kiri (lebar 50%) dan empat foto lebih kecil dalam kisi 2×2 di sebelah kanan, semua berbagi kontainer membulat luar 20 px
- Lazy loading: penggunaan intensif
loading="lazy"dengan pratinjau placeholder yang dikaburkan - Karusel: tombol panah bulat 32 px melapisi gambar, dipusatkan secara vertikal; indikator titik duduk 12 px di atas tepi bawah
Komponen Khas
Lockup Penghargaan Favorit Tamu (ditampilkan secara menonjol di halaman detail listing dengan peringkat tinggi)
- Angka peringkat terpusat dirender pada 44–56 px berbobot 700
- Dua ilustrasi SVG karangan bunga laurel yang digambar tangan mengapit kiri dan kanan pada ~48 px tinggi
- Di bawah: label "Favorit Tamu" pada 12 px 700 huruf kapital dengan tracking
0,32 px, dan sub-label pendek pada 14 px 500 Ash Gray - Blok lebar penuh, tidak ada border kontainer — duduk langsung di atas kanvas putih
Pemilih Kategori Tri-Tab (muncul di bagian atas setiap permukaan penelusuran)
- Tiga tab: Rumah / Pengalaman / Layanan
- Setiap tab: ikon bergambar render 3D (~48 px tinggi) di atas label berbobot 500 16 px
- Pengalaman dan Layanan saat ini membawa pil "BARU" biru navy kecil (teks putih 12 px 700 pada latar belakang biru gelap) yang mengambang di kanan atas ikon
- Tab aktif: garis bawah Ink Black 2 px di bawah label
Kisi Kota Inspirasi (beranda "Inspirasi untuk perjalanan masa depan")
- Kisi 6 kolom tautan destinasi di desktop, 2 kolom di mobile
- Setiap sel: nama kota 16 px 600 di baris 1, subtitle tipe sewa Ash Gray 500 14 px di baris 2 ("Sewa cottage", "Sewa villa")
- Tidak ada gambar — kisi hanya teks
- Dengan tab di atas berdasarkan kategori (Populer / Seni & budaya / Pantai / Pegunungan / Alam terbuka / Hal yang bisa dilakukan / Tips perjalanan & inspirasi / Apartemen ramah Airbnb) — tab aktif memiliki garis bawah 2 px dan pergeseran bobot
Kartu Pesan Tetap (halaman detail listing)
- Tetap tersemat 120 px di bawah bagian atas viewport di desktop saat pengguna menggulir melewati hero
- Mengempis menjadi bilah bawah lebar penuh di mobile dengan label "Dari $X / malam" dan pil Rausch "Pesan"
- Selalu menampilkan: headline harga → tampilan tanggal → pemilih tamu → CTA Rausch → disclaimer "Anda belum akan ditagih"
Kartu Tuan Rumah Pengalaman (halaman detail pengalaman)
- Kontainer membulat lebar penuh dengan foto sampul 3:2 di atas
- Avatar tuan rumah (bulat, 56 px) tumpang tindih tepi bawah sampul sebesar 50%
- Di bawah tumpang tindih: nama tuan rumah pada 16 px 700, lama tuan rumah pada 14 px 500 Ash Gray, tombol pil Rausch kecil "Hubungi tuan rumah"
- Digunakan sebagai transisi antara ulasan dan blok fasilitas/lokasi
Strip "Hal yang perlu diketahui" (halaman detail listing)
- Kisi 3 kolom blok aturan/kebijakan (Aturan rumah, Keamanan & properti, Kebijakan pembatalan)
- Setiap kolom: ikon di atas, heading 16 px 600, tubuh Ash Gray 14 px 500, tautan "Tampilkan lebih banyak" dalam garis bawah Ink Black
- Pemisah: border atas dan bawah Hairline Gray 1 px pada seluruh strip
5. Prinsip Tata Letak
Sistem Spasi
- Unit dasar: 8 px
- Skala yang diekstrak: 2, 3, 4, 5,5, 6, 8, 10, 11, 12, 15, 16, 18,5, 22, 24, 32 px — granular dengan segelintir nilai di luar kisi yang digunakan untuk penyelarasan ikon yang sempurna piksel
- Padding seksi: ~48–64 px atas/bawah di desktop, 24–32 px di mobile
- Padding internal kartu: 24 px pada panel pemesanan dan kartu besar, 16 px pada baris fasilitas, 12 px pada metadata kartu listing
- Celah antar kartu listing: 24 px desktop, 16 px mobile
- Antara baris teks bertumpuk: 4–8 px (sangat ketat — memperkuat rasa "informasi padat" dari listing perjalanan)
Kisi & Kontainer
- Lebar konten maksimum: 1760–1920 px pada ultra-wide (Airbnb membiarkan kisi bernafas lebih jauh dari kebanyakan situs); 1280 px di sebagian besar halaman detail
- Kisi listing beranda: 6 kolom pada ≥1760 px, 5 pada ≥1440 px, 4 pada ≥1128 px, 3 pada ≥800 px, 2 pada ≥550 px, 1 di bawahnya
- Halaman detail: 2 kolom asimetris — konten utama ~58%, panel pemesanan tetap ~36% di sebelah kanan, ~6% celah
- Footer: 3 kolom Dukungan / Hosting / Airbnb
Filosofi Ruang Putih
Airbnb sangat informatif namun tidak pernah sempit. Ruang putih digunakan untuk mengelompokkan — kartu listing memiliki 24 px celah sehingga setiap foto terbaca sebagai objek yang berbeda, tetapi metadata di bawah setiap kartu menggunakan celah 4–8 px sehingga harga/kota/tanggal terasa seperti satu unit. Panel pemesanan halaman detail memiliki padding internal 24 px, tetapi baris di dalamnya (pemilih tanggal, pemilih tamu, CTA) ditumpuk pada 12 px — batas antara kartu dan halaman melakukan lebih banyak pekerjaan pemisahan daripada konten di dalamnya.
Skala Radius Border
| Radius | Penggunaan |
|---|---|
| 4 px | Tag jangkar inline, chip tag |
| 8 px | Tombol teks, dropdown, tombol utilitas kecil |
| 14 px | Fotografi kartu listing, kontainer konten generik, badge |
| 20 px | Tombol membulat utama (bentuk pil), gambar besar, panel pemesanan |
| 32 px | Pil bilah pencarian, kontainer ekstra besar |
| 50% | Semua tombol ikon bulat, semua avatar, hati wishlist — geometri bulat khas sistem |
6. Kedalaman & Elevasi
| Level | Perlakuan | Penggunaan |
|---|---|---|
| 0 | Tanpa bayangan | Kartu listing, konten tubuh, bagian hanya teks |
| 1 | rgba(0, 0, 0, 0.08) 0 4px 12px |
Tombol ikon aktif/ditekan (mis. kembali, bagikan, favorit) — angkatan halus untuk menunjukkan interaksi |
| 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 |
Kartu panel pemesanan tetap, modal, menu dropdown — elevasi tiga lapis khas sistem |
| Cincin Fokus | 0 0 0 2px #222222 |
Tombol status aktif, input pencarian yang difokuskan |
| Cincin Pemisah Putih | rgb(255, 255, 255) 0 0 0 4px |
Tombol bulat yang dilapisi pada foto — cincin putih 4 px dengan bersih memisahkan tombol dari latar belakang gambar berwarna |
Filosofi bayangan: Airbnb menggunakan bayangan berlapis bertumpuk daripada satu bayangan tunggal. Bayangan tiga lapis panel pemesanan terbaca sebagai satu angkatan yang kohesif tetapi sebenarnya adalah tiga bayangan terpisah pada nilai opasitas/keburaman yang berbeda — menciptakan anti-aliasing halus di perimeter bayangan yang terasa premium tanpa menjadi berat.
Kedalaman Dekoratif
- Fotografi sebagai kedalaman: sistem sangat mengandalkan fotografi penuh layar untuk menciptakan kedalaman visual; bayangan dan gradien digunakan dengan hemat sehingga foto melakukan pekerjaan berat
- Lockup karangan bunga laurel: penghargaan Favorit Tamu menggunakan dua ilustrasi SVG laurel yang memberikan angka peringkat yang sebaliknya datar sebuah kehadiran seremonial, seperti piala
- Ikon kategori render 3D: ikon Rumah/Pengalaman/Layanan memiliki pencahayaan internal lembut mereka sendiri dan bayangan lempar halus yang dipanggang dalam karya seni — satu-satunya tempat merek memperbolehkan ilustrasi "dimensional"
7. Yang Boleh dan Tidak Boleh
Yang Boleh
- Cadangkan Rausch
#ff385cuntuk aksi utama dan indikator tab aktif — jangan pernah mengencerkannya dengan penggunaan dekoratif. - Biarkan fotografi bernafas — potongan 4:3 dengan sudut membulat 14–20 px, tidak ada teks yang dilapisi, tidak ada penutup gradien.
- Gunakan Ink Black
#222222untuk setiap lapisan teks di bawah Rausch — ini adalah hampir-hitam sistem, tidak pernah#000000yang sesungguhnya. - Pasangkan ikon bergambar 3D pemilih kategori tri-tab dengan tipografi datar — jangan mencampur gaya ilustrasi dalam satu permukaan.
- Tumpuk tiga bayangan buram rendah (~2%, 4%, 10%) untuk menciptakan elevasi panel pemesanan yang khas.
- Gunakan border Hairline Gray
#dddddd1 px untuk setiap pembagi kartu-ke-kartu dan baris-ke-baris. - Perlakukan panel pemesanan sebagai tetap di desktop, mengempis menjadi bilah pesan yang ditambatkan di bawah di mobile.
- Gunakan spasi 4–8 px dalam grup metadata dan 24 px antar kartu — kepadatan informasi adalah disengaja.
Yang Tidak Boleh
- Jangan memperkenalkan warna aksen sekunder di luar palet tingkat produk Rausch / Plus Magenta / Luxe Purple.
- Jangan menempatkan teks di dalam foto — keterangan selalu duduk di bawah gambar, tidak pernah dilapisi.
- Jangan menggunakan label huruf kapital semua kecuali untuk peran superskrip 8 px tunggal.
- Jangan membulatkan tombol ikon ke apapun selain 50% — bulat adalah geometri khas sistem.
- Jangan menambahkan bayangan ke kartu listing — mereka duduk di atas kanvas putih tanpa elevasi.
- Jangan menggunakan latar belakang gradien — satu-satunya gradien dalam sistem adalah sapuan Rausch → magenta yang sempit pada wordmark.
- Jangan menggunakan bobot font 400-regular — bobot tubuh Airbnb Cereal adalah 500.
- Jangan mengganti Airbnb Cereal VF dengan typeface display yang berbeda — sistem ini sengaja satu keluarga.
8. Perilaku Responsif
Breakpoint
Airbnb mendeklarasikan ~60 breakpoint (artefak waktu desain dari pustaka komponen mereka), tetapi pergeseran tata letak yang berarti terjadi pada kumpulan yang jauh lebih kecil:
| Nama | Lebar | Perubahan Utama |
|---|---|---|
| Ultra-wide | ≥1760 px | Kisi listing 6 kolom, lebar konten maksimum 1760–1920 px |
| Desktop XL | 1440–1759 px | Kisi 5 kolom, nav penuh terlihat, panel pemesanan tetap di rel kanan |
| Desktop | 1128–1439 px | Kisi 4 kolom, panel pemesanan tetap bertahan |
| Laptop | 1024–1127 px | Kisi 3–4 kolom, nav kategori tetap horizontal |
| Tablet | 800–1023 px | Kisi 3 kolom, pencarian global dapat mengempis menjadi pil satu baris |
| Tablet kecil | 550–799 px | Kisi 2 kolom, panel pemesanan turun ke blok inline lebar penuh |
| Mobile | 375–549 px | Tata letak bertumpuk 1 kolom, bilah tab yang disematkan di bawah muncul (Jelajahi / Daftar Keinginan / Masuk) |
| Mobile kecil | <375 px | Padding tepi mengencang ke 16 px; ikon pemilih kategori menyusut ke ~28 px |
Target Sentuh
Semua elemen interaktif memenuhi atau melebihi 44×44 px. Keluarga tombol ikon bulat secara khusus berukuran 32–44 px dengan padding area hit yang diperluas 8–12 px. Tombol Pesan Rausch utama adalah ~48 px tinggi. Area hit pemilih kategori tri-tab adalah seluruh persegi panjang label-plus-ikon (biasanya ~64×80 px per tab).
Strategi Mengempis
- Nav: Nav atas mempertahankan wordmark Airbnb + pemilih tri-tab di tablet dan lebih besar; di mobile pemilih meluncur tepat di bawah pil pencarian, dan kontrol globe/avatar berpindah ke bilah tab yang ditambatkan di bawah.
- Bilah pencarian: Pil tiga segmen (Di mana / Kapan / Siapa) dengan tombol kirim bulat Rausch di desktop; mengempis menjadi pil "Mulai pencarian Anda" satu baris di mobile, mengetuknya membuka lembar pencarian layar penuh.
- Panel pemesanan: Rel kanan tetap pada ≥1128 px; inline dalam kolom konten utama antara 800–1127 px; pil "Pesan" yang disematkan di bawah pada <800 px.
- Kisi listing: Mengalir 6 → 5 → 4 → 3 → 2 → 1 kolom di seluruh breakpoint.
- Kisi gambar halaman detail: Tata letak lima gambar (1 besar + 4 kecil) di desktop; menjadi karusel penuh layar yang dapat digesek di mobile dengan indikator titik halaman.
- Footer: Tata letak 3 kolom mengempis menjadi satu kolom bertumpuk pada <800 px.
Perilaku Gambar
loading="lazy"universal, dengan thumbnail pratinjauim_w=yang diparameter URL yang dikaburkan disajikan terlebih dahulu- Gambar responsif menggunakan CDN
muscache.comAirbnb dengan parameter kueriim_wuntuk pengiriman berbasis lebar (im_w=240,im_w=720,im_w=1200,im_w=2400) - Tidak ada pemotongan art-direction — gambar yang sama diskalakan naik/turun di seluruh breakpoint
- Karusel secara otomatis menyesuaikan tinggi foto untuk mempertahankan rasio 4:3 yang konsisten terlepas dari aspek sumber
9. Panduan Prompt untuk Agen
Referensi Warna Cepat
- CTA utama: "Rausch (#ff385c)"
- Latar belakang halaman: "Canvas White (#ffffff)"
- Sub-permukaan: "Soft Cloud (#f7f7f7)"
- Teks heading/tubuh: "Ink Black (#222222)"
- Teks sekunder: "Ash Gray (#6a6a6a)"
- Border/pembagi: "Hairline Gray (#dddddd)"
- Kesalahan: "Error Red (#c13515)"
- Tautan info: "Info Blue (#428bff)"
- Aksen tingkat Luxe: "Luxe Purple (#460479)"
- Aksen tingkat Plus: "Plus Magenta (#92174d)"
Contoh Prompt Komponen
- "Buat tombol Pesan utama: latar belakang Rausch (
#ff385c), label putih Airbnb Cereal berbobot 500 pada 16 px, padding 14 px × 24 px, border-radius 8 px, tanpa bayangan. Pada aktif/ditekan tambahkantransform: scale(0.92)dengan cincin fokus Ink Black 2 px (0 0 0 2px #222222)." - "Buat kartu listing dengan foto penuh layar 4:3 pada border-radius 14 px, tanpa bayangan kontainer; di bawah gambar tumpuk tiga baris teks dengan celah 4 px: nama kota pada 16 px 600 Ink Black, tipe sewa pada 14 px 500 Ash Gray (
#6a6a6a), dan rentang harga dalam 16 px 500 Ink Black dengan sufiksper malam14 px." - "Rancang panel pemesanan tetap: latar belakang putih, border-radius 14 px, border Hairline Gray (
#dddddd) 1 px, bayangan elevasi 3 lapis (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), padding 24 px, lebar 370 px, disematkan 120 px di bawah bagian atas viewport di desktop. Konten: headline harga, pemilih tanggal, dropdown tamu, CTA utama Rausch, dan disclaimer Ash Gray 12 pxAnda belum akan ditagih." - "Buat pemilih kategori tri-tab: tiga tab dengan lebar yang sama berlabel Rumah, Pengalaman, Layanan; setiap tab memiliki ikon bergambar render 3D ~48 px (rumah, balon, bel) di atas label Ink Black berbobot 500 16 px; tab aktif mendapat garis bawah Ink Black 2 px; tambahkan pil
BARUputih kecil 12 px 700 pada latar belakang biru navy gelap di kanan atas ikon Pengalaman dan Layanan." - "Render lockup penghargaan Favorit Tamu: angka peringkat terpusat pada 52 px berbobot 700 Ink Black, diapit kiri dan kanan oleh karangan bunga SVG laurel yang digambar tangan pada ~48 px tinggi; di bawah, label huruf kapital
FAVORIT TAMU12 px 700 dengan tracking 0,32 px; sub-label pada 14 px 500 Ash Gray; blok lebar penuh duduk langsung di atas kanvas putih tanpa border kontainer."
Panduan Iterasi
Saat menyempurnakan layar yang ada yang dibuat dengan sistem desain ini:
- Fokus pada SATU komponen sekaligus.
- Rujuk nama warna spesifik dan kode hex dari dokumen ini (mis. "Ink Black #222222", bukan "abu-abu gelap").
- Gunakan deskripsi bahasa alami di samping pengukuran ("elevasi tiga lapis halus" daripada string bayangan panjang).
- Deskripsikan "rasa" yang diinginkan ("seperti majalah, fotografi-pertama" vs "utilitas padat").
- Selalu default ke Airbnb Cereal VF berbobot 500 untuk tubuh dan 600–700 untuk penekanan — tidak pernah 400.
- Jaga merah muda Rausch tetap langka — jika lebih dari satu elemen berwarna Rausch muncul per viewport, pertimbangkan apakah salah satunya harus dinetralisasi.
Celah yang Diketahui
- Kartu kisi listing beranda: kisi kartu properti utama (permukaan visual utama airbnb.com) tidak sepenuhnya ditangkap dalam screenshot beranda yang diekstrak — konten hanya dimuat sebagian. Spesifikasi Kartu Listing di atas disimpulkan dari struktur kisi Inspirasi dan konvensi Airbnb yang lebih luas; konfirmasikan rasio aspek yang tepat dan hierarki metadata terhadap situs langsung sebelum digunakan dalam produksi.
- Ikon kategori Pengalaman: ikon bergambar 3D untuk Rumah / Pengalaman / Layanan disajikan sebagai aset raster; spesifikasi file sumber yang tepat (SVG vs PNG, dimensi piksel yang dirender) tidak didokumentasikan di sini.
- Timing animasi dan transisi: tidak ditangkap — ruang lingkup ekstraksi statis.
- Mode gelap: Airbnb tidak mengirimkan mode gelap asli dalam permukaan produk yang diekstrak; dokumen ini hanya mendeskripsikan tema mode terang tunggal.