一、④段整套同步(用户选候选 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。
33 KiB
System Projektowania Inspirowany Airbnb
Category: E-commerce i handel detaliczny Platforma turystyczna. Ciepły koralowy akcent, dominacja fotografii, zaokrąglony interfejs.
1. Temat Wizualny i Atmosfera
Projekt Airbnb z 2026 roku przypomina magazyn podróżniczy, który przypadkiem stał się aplikacją — czyste białe płótna ustępują miejsca pełnoekranowej fotografii, a sam interfejs znika, by ogłoszenia mogły oddychać. Charakterystyczny koralowo-różowy kolor Rausch (#ff385c) używany jest oszczędnie, ale w sposób nie do pomylenia: CTA wyszukiwania, wskaźnik aktywnej zakładki, przycisk głównej akcji, od czasu do czasu cena lub serduszko listy życzeń. Wszystko pozostałe to zdyscyplinowana skala szarości, gdzie #222222 niesie niemal każdą linię tekstu.
To, co sprawia, że system jest niezaprzeczalnie Airbnb, to ilość wiary, jaką pokłada w treści. Zdjęcia nieruchomości wyświetlane są w skali hero, 4:3 z pełnoekranowym zaokrągleniem krawędzi. Przełączanie kategorii odbywa się przez selektor trzech zakładek (Homes / Experiences / Services) wykorzystujący trójwymiarowe ilustrowane ikony (dom ze spadzistym dachem, balon na ogrzane powietrze, dzwonek serwisowy) — fizyczne, dotykowe, niemal zabawkowe — w połączeniu z precyzyjnymi etykietami Airbnb Cereal VF. Jest to rzadki produkt konsumencki, w którym renderowania 3D i czysto typograficzny interfejs współistnieją bez napięcia.
Najnowszą powierzchnią jest linia produktów Experiences — ten sam chrom, ale gęstsze karty, więcej fotografii i centralnie zakotwiony panel rezerwacji ze stałą prawą sztywnością cenową. Strony szczegółów ogłoszeń (zarówno pokojów, jak i doświadczeń) podążają za ścisłym szablonem: pełnoekranowa siatka obrazów hero → nakładająca się zaokrąglona karta rezerwacji (przyklejona podczas przewijania) → udogodnienia → recenzje (nagrody Guest Favorite używają dużej wyśrodkowanej oceny 4.81 z wieńcem laurowym) → mapa → profil hosta → ujawnienia. Rytm jest spójny niezależnie od tego, czy rezerwujesz pokój, czy rejs jachtem.
Kluczowe Cechy:
- Koralowo-różowy Rausch (
#ff385c) jako jedyny kolor akcentowy marki, używany wyłącznie dla głównych CTA i przycisku wyszukiwania - Pełnoekranowa fotografia w proporcjach 4:3 / 16:9 z delikatnym zaokrągleniem narożników (14–20px) jako podstawowe słownictwo wizualne
- Trójwymiarowe ikony kategorii sparowane z typograficznymi zakładkami — jedyne miejsce, w którym system pozwala na ilustrację
- Okrągłe przyciski ikon
50%(strzałka wstecz, udostępnianie, ulubione, strzałki karuzeli) rozsiane po całym interfejsie Airbnb Cereal VFnosi każdą etykietę, od prawnego przypisu 8px do nagłówka sekcji 28px — system jednej rodziny- Kodowanie kolorów według tier produktu: Airbnb Plus (magenta
#92174d), Airbnb Luxe (głęboki fiolet#460479), Airbnb (koral Rausch) - Lockup nagrody Guest Favorite — wyśrodkowany olbrzymi numer oceny między dwoma wieńcami laurowymi, jeden z najbardziej rozpoznawalnych momentów w systemie
- Przyklejony panel rezerwacji z układem cena → daty → goście, przypięty do prawej szyny na pulpicie, przekształcający się w dolny pasek "Reserve" na urządzeniach mobilnych
- Przyklejona dolna nawigacja mobilna (Explore / Wishlists / Log in) z aktywnym odcieniem Rausch
2. Paleta Kolorów i Role
Podstawowy
- Rausch (
#ff385c): Charakterystyczny koralowo-różowy kolor marki. Zmienna CSS--palette-bg-primary-core. Używany dla: głównego przycisku "Reserve", przycisku submit wyszukiwania, podkreślenia aktywnej zakładki, wypełnienia serduszka listy życzeń, akcentowania ceny. Jedyny kolor o najwyższej widoczności na każdej stronie.
Drugorzędny i Akcentowy
- Deep Rausch (
#e00b41): Bardziej nasycony wariant. Zmienna CSS--palette-bg-tertiary-core. Używany dla wciśniętych/aktywnych stanów przycisku i punktów końcowych gradientu. - Plus Magenta (
#92174d): Zmienna CSS--palette-bg-primary-plus. Kolor marki dla tiera produktu Airbnb Plus — oferty z wyselekcjonowanymi ogłoszeniami wyższego rzędu. - Luxe Purple (
#460479): Zmienna CSS--palette-bg-primary-luxe. Kolor marki dla tiera produktu Airbnb Luxe — wynajem willi/posiadłości. - Info Blue (
#428bff): Zmienna CSS--palette-text-legal. Używany dla prawnych/informacyjnych linków (regulamin, prywatność, ujawnienia) — jedyny niemonochromatyczny kolor linku w systemie.
Powierzchnia i Tło
- Canvas White (
#ffffff): Domyślne tło strony. Każda karta, każdy kontener, każda strona szczegółów zaczyna się tutaj. - Soft Cloud (
#f7f7f7): Subtelny odcień powierzchni używany na tłach stopek, opakowaniach widoku mapy i sekcjach "wszystko inne", które chcą ustąpić miejsca głównemu białemu. - Hairline Gray (
#dddddd): Wszechobecny kolor obramowania 1px — oddziela karty, wiersze udogodnień, panele recenzji, kolumny stopek. Koń roboczy systemu układu.
Neutralne i Tekstowe
- Ink Black (
#222222): Zmienna CSS--palette-text-primary. Quasi-czarny systemu. Każdy nagłówek, każdy akapit treści, każda etykieta nawigacyjna, każda cena. Używany dla ~90% całego tekstu na stronie. - Charcoal (
#3f3f3f): Zmienna CSS--palette-text-focused. Używany w tekście pola wejściowego w stanie fokusa i kopii akcentowej o jeden stopień niżej. - Ash Gray (
#6a6a6a): Zmienna CSS--palette-bg-tertiary-hover. Drugorzędne etykiety, kopia w stylu podtytułu "Cottage rentals" pod nazwami miast, wyciszone linki stopki. - Mute Gray (
#929292): Zmienna CSS--palette-text-link-disabled. Wyłączone przyciski i metadane niskiego priorytetu. - Stone Gray (
#c1c1c1): Trzeciorzędne separatory, obrys ikon, awatary zastępcze.
Semantyczne i Akcentowe
- Error Red (
#c13515): Zmienna CSS--palette-text-primary-error. Błędy walidacji formularzy, ostrzeżenia o destrukcyjnych akcjach. - Deep Error (
#b32505): Zmienna CSS--palette-text-secondary-error-hover. Wciśnięte/aktywne warianty stanów błędów. - Translucent Black (
rgba(0, 0, 0, 0.24)): Zmienna CSS--palette-text-material-disabled. Wyłączone etykiety w stylu material.
System Gradientów
Gradient marki Airbnb pojawia się rzadko, zazwyczaj tylko na wordmarku i markowym momencie przycisku wyszukiwania:
linear-gradient(90deg, #ff385c 0%, #e00b41 50%, #92174d 100%)
To koralowo-magentowe przejście to "markowy moment" — nigdy nie używane jako pełna powierzchnia, jedynie jako wąskie wypełnienie pilułki lub traktowanie logotypu.
3. Zasady Typografii
Rodzina Fontów
- Airbnb Cereal VF (podstawowy i jedyny): Zastrzeżony bezszeryfowy font o zmiennej wadze, który niesie cały system. Zapasowe (w kolejności):
Circular, -apple-system, system-ui, Roboto, Helvetica Neue, sans-serif.
Wagi obserwowane w wyekstrahowanych tokenach: 500, 600, 700. Brak 400-regular — "body" wagą systemu jest 500, co nadaje każdemu blokowi tekstu subtelną dodatkową gęstość, która odczytuje się jako pewna i zamierzona.
Funkcje OpenType: salt (alternatywy stylistyczne) używane jest na kompaktowych etykietach 11px i 14px o wadze 600 — prawdopodobnie dla ściślejszych cyfr i kształtowania znaków specjalnych. Nie zaobserwowano funkcji ligatur ani ułamkowych cyfr.
Hierarchia
| Rola | Rozmiar | Waga | Wysokość linii | Odstęp liter | Notatki |
|---|---|---|---|---|---|
| Section Heading | 28px / 1.75rem | 700 | 1.43 | 0 | "Inspiration for future getaways" — nagłówki na poziomie strony |
| Subsection Heading | 22px / 1.38rem | 500 | 1.18 | -0.44px | "What this place offers", "Meet the hosts" — separatory treści |
| Card Title | 21px / 1.31rem | 700 | 1.43 | 0 | Nagłówki panelu recenzji, nagłówki wiodące kart |
| Listing Title | 20px / 1.25rem | 600 | 1.20 | -0.18px | "Small Group Yacht Tour, Unlimited Wine & Fruits" — nagłówki ogłoszeń na stronach szczegółów |
| Subtitle Bold | 16px / 1.00rem | 600 | 1.25 | 0 | Nazwa hosta, nazwa miasta |
| Body Medium | 16px / 1.00rem | 500 | 1.25 | 0 | Główna treść body na stronach szczegółów |
| Button Large | 16px / 1.00rem | 500 | 1.25 | 0 | "Reserve", "Become a host" |
| Button Default | 14px / 0.88rem | 500 | 1.29 | 0 | Standardowe etykiety przycisków |
| Link | 14px / 0.88rem | 500 | 1.43 | 0 | Linki nawigacyjne, linki stopki |
| Caption Medium | 14px / 0.88rem | 500 | 1.29 | 0 | Metadane, linie podtytułów ("Cottage rentals", "Villa rentals") |
| Caption Bold | 14px / 0.88rem | 600 | 1.43 | 0 | Włączona funkcja salt — statystyki liczbowe, akcent małego tekstu |
| Caption Small | 13px / 0.81rem | 400 | 1.23 | 0 | Daty recenzji, mikro-metadane |
| Micro Default | 12px / 0.75rem | 400 | 1.33 | 0 | Zastrzeżenia stopki, prawny mikro-tekst |
| Micro Bold | 12px / 0.75rem | 700 | 1.33 | 0 | Etykiety pilułek "NEW" |
| Badge Uppercase | 11px / 0.69rem | 600 | 1.18 | 0 | Funkcja salt — kompaktowe odznaki kategorii/statusu |
| Superscript | 8px / 0.50rem | 700 | 1.25 | 0.32px | Wielkie litery — przypisy cenowe, końcówki dziesiętne |
Zasady
- Jedna rodzina, wiele wag. Airbnb Cereal VF obsługuje wszystko od 8px prawniczego do 28px nagłówka strony — tożsamość wizualna pochodzi z samej rodziny, a nie z mieszania krojów pisma.
- 500 to nowe 400. "Regularna" waga systemu to 500, nadająca każdemu akapitowi nieco bardziej pewną fakturę niż domyślna webowa.
- Ujemny tracking tylko dla typografii displayowej. Nagłówki 20px+ kompresują tracking o -0.18 do -0.44px, by wyglądały dłutowato; rozmiary body zachowują tracking 0 dla czytelności.
- Ciasne interlinie dla nagłówków, luźne dla body. Typografia display działa przy 1.18–1.25 (ciasno); body i podpisy otwierają się do 1.43 dla komfortu długoformatowego.
- Bez wielkich liter poza 8px. Jedyna transformacja wielkich liter w systemie to superscript 8px — wszędzie indziej zdaniowe wielkie litery z subtelnymi zmianami wagi wykonują pracę.
Uwaga na Temat Zamienników Fontów
Airbnb Cereal VF jest zastrzeżony. Najbliższym zamiennikiem open-source jest Circular Std (nadal komercyjny) lub Inter (bezpłatny, Google Fonts) z letter-spacing zmniejszonym o -0.01em przy rozmiarach display. Dla ścisłej wierności marki, udokumentowany łańcuch zapasowy (Circular, -apple-system, system-ui) renderuje się akceptowalnie na macOS/iOS, gdzie system-ui rozwiązuje do San Francisco, który ma podobne proporcje.
4. Stylizacja Komponentów
Przyciski
Główny CTA ("Reserve", "Search", "Add dates")
- Tło: Rausch
#ff385c - Tekst: Canvas White
#ffffff, Airbnb Cereal 500, 16px - Padding: ~14px pionowo, 24px poziomo
- Radius: 8px (prostokątny) lub 50% (okrągły wariant ikonowy)
- Obramowanie: brak
- Aktywny/wciśnięty:
transform: scale(0.92)plus pierścień fokusu 2px#222222przy0 0 0 2px
Przycisk Drugorzędny ("Become a host", zarysowane akcje trzeciorzędne)
- Tło:
#ffffff - Tekst: Ink Black
#222222, Airbnb Cereal 500, 14–16px - Padding: 10px 16px
- Radius: 20px (pilułka) lub 8px (prostokątny)
- Obramowanie: 1px solid Hairline Gray
#dddddd
Okrągły Przycisk Tylko z Ikoną (strzałka wstecz, udostępnianie, ulubione, kontrolki karuzeli)
- Tło:
#f2f2f2(lekko off-white) lub biały z przezroczystym czarnym obramowaniem 1px - Ikona: obrys
#222222, 16–20px - Rozmiar: średnica 32–44px
- Radius: 50%
- Aktywny/wciśnięty:
transform: scale(0.92); subtelny biały pierścień 4px0 0 0 4px rgb(255,255,255)dla oddzielenia od kolorowych fotograficznych teł
Wyłączony Przycisk
- Tło:
#f2f2f2 - Tekst: Stone Gray
#c1c1c1 - Przezroczystość: 0.5
Przycisk Zakładki Pilułki (selektor kategorii "Homes / Experiences / Services")
- Tło: przezroczyste
- Tekst: Ink Black
#222222, Airbnb Cereal 500, 16px - Padding: 8px 14px
- Stan aktywny: podkreślenie Ink Black 2px pod etykietą
- Sparowany z ilustrowaną ikoną 3D 36–48px nad etykietą
Karty i Kontenery
Karta Ogłoszenia (siatka strony głównej, wyniki wyszukiwania)
- Tło:
#ffffff - Radius: 14px na obrazie, tekst siedzi bezpośrednio poniżej na przezroczystym tle
- Obraz: proporcje 4:3, pełnoekranowy, zaokrąglony z tym samym radiusem 14px
- Padding: brak na zewnętrznym kontenerze; 12px odstęp między obrazem a wierszami metadanych
- Cień: brak — separacja pochodzi z białej przestrzeni i wewnętrznego radiusu fotografii
- Wzorzec metadanych: miasto/region w wierszu 1 (16px 600), odległość/czas trwania w wierszu 2 (14px 500 Ash Gray), zakres dat w wierszu 3, wiersz ceny z "per night" na dole
Panel Rezerwacji Strony Szczegółów (przyklejona prawa szyna na stronach pokojów/doświadczeń)
- Tło:
#ffffff - Radius: 14–20px
- Obramowanie: 1px solid Hairline Gray
#dddddd - Cień:
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— ułożona trójwarstwowa subtelna elewacja - Padding: 24px
- Szerokość: ~370px, przypięta 120–140px poniżej górnej krawędzi viewportu
- Treść: nagłówek ceny → selektor dat → dropdown gości → główny CTA → przypis "You won't be charged yet"
Karta Siatki Udogodnień (na stronach szczegółów ogłoszeń)
- Tło:
#ffffff - Obramowanie: 1px solid Hairline Gray
#ddddddna poziomie wiersza (nie per element) - Padding: 16px pionowo na wiersz udogodnienia
- Wzorzec ikona + etykieta: ikona konturu 24px po lewej, etykieta o wadze 500 16px po prawej
Karta Recenzji (indywidualna recenzja na stronach szczegółów)
- Tło:
#ffffff, bez obramowania - Padding: 0 (polega na przerwach siatki)
- Treść: okrągły awatar 40px + nazwa o wadze 600 16px + data Ash Gray 400 14px w jednym wierszu, następnie akapit body o wadze 500 14px poniżej
Pola Wejściowe i Formularze
Pasek Wyszukiwania (główna strona główna)
- Tło:
#ffffff - Obramowanie: 1px solid Hairline Gray
#ddddddowijające wszystkie trzy segmenty (Where / When / Who) - Radius: 32px (pełna pilułka)
- Cień:
rgba(0, 0, 0, 0.04) 0 2px 6px 0— subtelne unoszące się odczucie - Struktura: trzy segmenty podzielone cienkimi pionowymi separatorami, każdy segment ma etykietę o wadze 500 12px nad symbolem zastępczym o wadze 500 14px
- Submit: okrągły przycisk ikony Rausch na prawej krawędzi, średnica 48px
Pole Tekstowe (ogólne formularze)
- Tło:
#ffffff - Obramowanie: 1px solid Hairline Gray
#dddddd - Radius: 8px
- Padding: 14px 16px
- Fokus: obramowanie zmienia się na Ink Black, dodaje zewnętrzny czarny pierścień
0 0 0 2px - Błąd: obramowanie zmienia się na
#c13515(Error Red), tekst pomocniczy używa tego samego koloru
Selektor Dat
- Siatka kalendarza: układ 7 kolumn, okrągłe
50%komórki dni szerokie 40–44px - Wybrany zakres: tło Ink Black
#222222z białymi cyframi - Kotwice początku/końca: większe wypełnione okręgi; środkowe daty używają odcienia Soft Cloud
#f7f7f7
Nawigacja
Górna Nawigacja (Desktop)
- Wysokość: ~80px
- Tło:
#ffffff - Lewa: wordmark+logo Airbnb w Rausch (102×32px)
- Środek: selektor kategorii trzech zakładek (Homes / Experiences / Services) z ikonami 3D 36–48px ułożonymi nad etykietami o wadze 500 16px; aktywna zakładka ma podkreślenie Ink Black 2px
- Prawa: link tekstowy "Become a host", następnie okrąg 32px (język), następnie menu awatara hamburger 36px
- Dolna krawędź: 1px solid Hairline Gray
#dddddd
Górna Nawigacja (Mobilna)
- Pilułka wyszukiwania w jednym wierszu zajmuje pełną szerokość: symbol zastępczy "Start your search" z małą ikoną lupy
- Poniżej: selektor kategorii trzech zakładek pozostaje (Homes / Experiences / Services) — ikony ilustracyjne zmniejszają się do ~28px
- Dolny pasek zakładek przyklejony: Explore (aktywny stan Rausch) / Wishlists / Log in — ikony 24px nad etykietami 12px
Drugorzędna Nawigacja Strony Szczegółów Ogłoszenia
- Przyklejone poziome przewijanie linków kotwic (Photos · Amenities · Reviews · Location · Host) pojawia się przy przewijaniu za obrazem hero
- Wysokość: 56px
- Dolna krawędź: 1px solid Hairline Gray
Traktowanie Obrazów
- Podstawowe proporcje: 4:3 dla siatek ogłoszeń strony głównej, 16:9 dla fotografii hero doświadczeń, 1:1 dla awatarów
- Radius: 14px na obrazach siatki ogłoszeń, 20px na ramkach zdjęć hero strony szczegółów,
50%na awatarach - Siatka obrazów na stronach szczegółów: pięcioobrazowa siatka z jednym dużym obrazem po lewej (szerokość 50%) i czterema mniejszymi zdjęciami w siatce 2×2 po prawej, wszystkie dzielące zewnętrzny zaokrąglony kontener 20px
- Leniwe ładowanie: intensywne użycie
loading="lazy"z rozmytymi podglądami zastępczymi - Karuzela: okrągłe przyciski strzałek 32px nakładają się na obraz, wyśrodkowane pionowo; wskaźniki kropek siedzą 12px powyżej dolnej krawędzi
Charakterystyczne Komponenty
Lockup Nagrody Guest Favorite (widoczny na stronach szczegółów wysoko ocenionych ogłoszeń)
- Wyśrodkowany numer oceny renderowany przy 44–56px wadze 700
- Dwie ręcznie rysowane ilustracje SVG wieńca laurowego flankujące lewo i prawo przy ~48px wysokości
- Poniżej: etykieta "Guest Favorite" przy 12px 700 wielkich literach z trackowaniem
0.32pxi krótka podetkieta przy 14px 500 Ash Gray - Blok pełnej szerokości, bez obramowania kontenera — siedzi bezpośrednio na białym płótnie
Selektor Kategorii Trzech Zakładek (pojawia się na górze każdej powierzchni przeglądania)
- Trzy zakładki: Homes / Experiences / Services
- Każda zakładka: ilustrowana ikona 3D (~48px wysoka) nad etykietą o wadze 500 16px
- Experiences i Services noszą małą granatową pilułkę "NEW" (biały tekst 700 12px na ciemnoniebieskim tle) unosząca się w prawym górnym rogu ikony
- Aktywna zakładka: podkreślenie Ink Black 2px pod etykietą
Siatka Miast Inspiracyjnych (strona główna "Inspiration for future getaways")
- 6-kolumnowa siatka linków do destynacji na pulpicie, 2-kolumnowa na mobile
- Każda komórka: nazwa miasta o wadze 600 16px w wierszu 1, podtytuł stylu wynajmu Ash Gray 500 14px w wierszu 2 ("Cottage rentals", "Villa rentals")
- Bez obrazów — siatka tylko tekstowa
- Podzielona zakładkami powyżej według kategorii (Popular / Arts & culture / Beach / Mountains / Outdoors / Things to do / Travel tips & inspiration / Airbnb-friendly apartments) — aktywna zakładka ma podkreślenie 2px i zmianę wagi
Przyklejona Karta Reserve (strony szczegółów ogłoszeń)
- Pozostaje przyklejona 120px poniżej górnej krawędzi viewportu na pulpicie gdy użytkownik przewija za hero
- Zwija się do dolnego pełnoszerokościowego paska na mobile z etykietą "From $X / night" i Rausch pilułką "Reserve"
- Zawsze pokazuje: nagłówek ceny → wyświetlanie dat → selektor gości → Rausch CTA → zastrzeżenie "You won't be charged yet"
Karta Hosta Doświadczeń (strony szczegółów doświadczeń)
- Zaokrąglony pełnoszerokościowy kontener z okładkową fotografią 3:2 na górze
- Awatar hosta (okrągły, 56px) nakładający się na dolną krawędź okładki o 50%
- Poniżej nakładki: imię hosta przy 16px 700, staż hosta przy 14px 500 Ash Gray, mały Rausch przycisk pilułkowy "Message host"
- Używany jako przejście między recenzjami a blokiem udogodnień/lokalizacji
Pasek "Things to know" (strony szczegółów ogłoszeń)
- 3-kolumnowa siatka bloków zasad/polityk (House rules, Safety & property, Cancellation policy)
- Każda kolumna: ikona na górze, nagłówek o wadze 600 16px, treść Ash Gray 500 14px, link "Show more" z podkreśleniem Ink Black
- Separator: górne i dolne obramowania Hairline Gray 1px na całym pasku
5. Zasady Układu
System Odstępów
- Jednostka bazowa: 8px
- Wyekstrahowana skala: 2, 3, 4, 5.5, 6, 8, 10, 11, 12, 15, 16, 18.5, 22, 24, 32px — szczegółowa z garścią wartości off-grid używanych do precyzyjnego wyrównania ikon piksel po pikselu
- Padding sekcji: ~48–64px góra/dół na pulpicie, 24–32px na mobile
- Wewnętrzny padding karty: 24px na panelach rezerwacji i dużych kartach, 16px na wierszach udogodnień, 12px na metadanych karty ogłoszenia
- Odstęp między kartami ogłoszeń: 24px pulpit, 16px mobile
- Między ułożonymi wierszami tekstu: 4–8px (bardzo ciasno — wzmacnia "gęstą informację" doświadczenia z ogłoszeniami podróżniczymi)
Siatka i Kontener
- Maksymalna szerokość treści: 1760–1920px na ultra-szerokim (Airbnb pozwala siatce oddychać szerzej niż większość stron); 1280px na większości stron szczegółów
- Siatka ogłoszeń strony głównej: 6 kolumn przy ≥1760px, 5 przy ≥1440px, 4 przy ≥1128px, 3 przy ≥800px, 2 przy ≥550px, 1 poniżej
- Strona szczegółów: 2-kolumnowa asymetryczna — główna treść ~58%, przyklejony panel rezerwacji ~36% po prawej, ~6% rynna
- Stopka: 3-kolumnowy Support / Hosting / Airbnb
Filozofia Białej Przestrzeni
Airbnb jest gęsto informatywny, ale nigdy zatłoczony. Biała przestrzeń używana jest do grupowania — karty ogłoszeń mają 24px rynny, by każda fotografia czytała się jako odrębny obiekt, ale metadane pod każdą kartą używają przerw 4–8px, by cena/miasto/data czuły się jak jedna jednostka. Panel rezerwacji strony szczegółów ma wewnętrzny padding 24px, ale wiersze w nim (selektor dat, selektor gości, CTA) są ułożone przy 12px — granica między kartą a stroną wykonuje więcej pracy separacyjnej niż treść wewnątrz.
Skala Zaokrągleń
| Radius | Użycie |
|---|---|
| 4px | Wbudowane tagi kotwic, chipy tagów |
| 8px | Przyciski tekstowe, dropdowny, małe przyciski narzędziowe |
| 14px | Fotografia karty ogłoszenia, ogólne kontenery treści, odznaki |
| 20px | Główne zaokrąglone przyciski (kształt pilułki), duże obrazy, panel rezerwacji |
| 32px | Pilułka paska wyszukiwania, bardzo duże kontenery |
| 50% | Wszystkie okrągłe przyciski ikon, wszystkie awatary, serduszka listy życzeń — charakterystyczna okrągła geometria systemu |
6. Głębokość i Elewacja
| Poziom | Traktowanie | Użycie |
|---|---|---|
| 0 | Brak cienia | Karty ogłoszeń, treść body, sekcje tylko tekstowe |
| 1 | rgba(0, 0, 0, 0.08) 0 4px 12px |
Aktywne/wciśnięte przyciski ikon (np. wstecz, udostępnianie, ulubione) — subtelne uniesienie wskazujące na interakcję |
| 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 |
Przyklejona karta panelu rezerwacji, modale, menu dropdown — charakterystyczna trójwarstwowa elewacja systemu |
| Focus Ring | 0 0 0 2px #222222 |
Przyciski w stanie aktywnym, skupione pole wyszukiwania |
| White Separator Ring | rgb(255, 255, 255) 0 0 0 4px |
Okrągłe przyciski nakładane na fotografie — biały pierścień 4px wyraźnie oddziela przycisk od kolorowych teł obrazów |
Filozofia cienia: Airbnb używa ułożonych wielowarstwowych cieni zamiast pojedynczego cienia. Trójwarstwowy cień panelu rezerwacji czyta się jako jeden spójny uniesienie, ale w rzeczywistości to trzy oddzielne cienie przy różnych wartościach przezroczystości/rozmycia — tworząc subtelne antyaliasowanie na obwodzie cienia, które czuje się premium bez przytłaczania.
Dekoracyjna Głębokość
- Fotografia jako głębokość: system w dużym stopniu polega na pełnoekranowej fotografii, aby tworzyć głębię wizualną; cienie i gradienty są używane oszczędnie, by fotografie wykonywały ciężką pracę
- Lockup wieńca laurowego: nagroda Guest Favorite używa dwóch ilustracji SVG wieńca laurowego, które nadają w innym przypadku płaskiej liczbie oceny ceremonialną, trofealną obecność
- Trójwymiarowe ikony kategorii: ikony Homes/Experiences/Services mają własne miękkie wewnętrzne oświetlenie i subtelne rzucane cienie wbudowane w dzieło — jedyne miejsce, w którym marka pozwala na "wymiarową" ilustrację
7. Zalecenia i Zakazy
Zalecenia
- Zarezerwuj Rausch
#ff385cdla głównych akcji i wskaźnika aktywnej zakładki — nigdy nie rozcieńczaj go dekoracyjnymi zastosowaniami. - Pozwól fotografii oddychać — przycinki 4:3 z zaokrąglonymi rogami 14–20px, bez nałożonego tekstu, bez scrims gradientowych.
- Używaj Ink Black
#222222dla każdej warstwy tekstu poniżej Rausch — to quasi-czarny systemu, nigdy prawdziwy#000000. - Sparuj trójwymiarowe ilustrowane ikony selektora kategorii z płaską typografią — nie mieszaj stylów ilustracji w obrębie jednej powierzchni.
- Układaj trzy cienie o niskiej przezroczystości (~2%, 4%, 10%), aby stworzyć charakterystyczną elewację panelu rezerwacji.
- Używaj obramowania Hairline Gray
#dddddd1px dla każdego separatora karta-karta i wiersz-wiersz. - Traktuj panel rezerwacji jako przyklejony na pulpicie, zwijający się do paska reserve zakotwiczonego na dole na mobile.
- Używaj odstępów 4–8px w grupach metadanych i 24px między kartami — gęstość informacji jest zamierzona.
Zakazy
- Nie wprowadzaj drugorzędnych kolorów akcentowych poza paletą tierów produktów Rausch / Plus Magenta / Luxe Purple.
- Nie umieszczaj tekstu wewnątrz fotografii — podpisy zawsze siedzą poniżej obrazu, nigdy nałożone.
- Nie używaj etykiet wielkich liter z wyjątkiem jedynej roli superscript 8px.
- Nie zaokrąglaj przycisków ikon do czegokolwiek innego niż 50% — okrągły to charakterystyczna geometria systemu.
- Nie dodawaj cieni do kart ogłoszeń — siedzą na białym płótnie bez elewacji.
- Nie używaj gradientowych teł — jedynym gradientem w systemie jest wąski sweep Rausch → magenta na wordmarku.
- Nie używaj wagi fontu 400-regular — wagą body Airbnb Cereal jest 500.
- Nie zastępuj Airbnb Cereal VF innym krojem displayowym — system jest celowo jednorodzinny.
8. Zachowanie Responsywne
Breakpointy
Airbnb deklaruje ~60 breakpointów (artefakt czasu projektowania z biblioteki komponentów), ale znaczące zmiany układu następują przy znacznie mniejszym zestawie:
| Nazwa | Szerokość | Kluczowe Zmiany |
|---|---|---|
| Ultra-wide | ≥1760px | 6-kolumnowa siatka ogłoszeń, maksymalna szerokość treści 1760–1920px |
| Desktop XL | 1440–1759px | Siatka 5-kolumnowa, pełna nawigacja widoczna, przyklejony panel rezerwacji na prawej szynie |
| Desktop | 1128–1439px | Siatka 4-kolumnowa, przyklejony panel rezerwacji pozostaje |
| Laptop | 1024–1127px | Siatka 3–4 kolumnowa, nawigacja kategorii pozostaje pozioma |
| Tablet | 800–1023px | Siatka 3-kolumnowa, globalne wyszukiwanie może zwinąć się do pilułki jednolinijkowej |
| Small tablet | 550–799px | Siatka 2-kolumnowa, panel rezerwacji spada do pełnoszerokościowego bloku inline |
| Mobile | 375–549px | 1-kolumnowy ułożony układ, dolny przyklejony pasek zakładek pojawia się (Explore / Wishlists / Log in) |
| Small mobile | <375px | Padding krawędzi zacieśnia się do 16px; ikony selektora kategorii zmniejszają się do ~28px |
Cele Dotykowe
Wszystkie interaktywne elementy spełniają lub przekraczają 44×44px. Rodzina okrągłych przycisków ikon jest specjalnie wyceniana na 32–44px z rozszerzonym paddingiem obszaru trafień 8–12px. Główny przycisk Rausch Reserve ma ~48px wysokości. Obszar trafień selektora kategorii trzech zakładek to pełny prostokąt etykieta-plus-ikona (zazwyczaj ~64×80px na zakładkę).
Strategia Zwijania
- Nav: Górna nawigacja zachowuje wordmark Airbnb + selektor trzech zakładek na tablecie i powyżej; na mobile selektor przesuwa się tuż pod pilułkę wyszukiwania, a kontrolki globe/awatar przenoszą się do dolnego paska zakładek.
- Pasek wyszukiwania: Trójsegmentowa pilułka (Where / When / Who) z okrągłym przyciskiem submit Rausch na pulpicie; zwija się do jednolinijkowej pilułki "Start your search" na mobile, której dotknięcie otwiera pełnoekranowy arkusz wyszukiwania.
- Panel rezerwacji: Przyklejona prawa szyna przy ≥1128px; inline w głównej kolumnie treści między 800–1127px; dolna przyklejona pilułka "Reserve" przy <800px.
- Siatka ogłoszeń: Przeformatowuje 6 → 5 → 4 → 3 → 2 → 1 kolumny przez breakpointy.
- Siatka obrazów strony szczegółów: Pięcioobrazowy układ (1 duży + 4 małe) na pulpicie; staje się przewijaną pełnoekranową karuzelą na mobile ze wskaźnikami kropek strony.
- Stopka: 3-kolumnowy układ zwija się do ułożonej pojedynczej kolumny przy <800px.
Zachowanie Obrazów
loading="lazy"powszechne, z rozmytymi podglądami miniatur parametryzowanych URLim_w=serwowanych jako pierwsze- Responsywne obrazy używają CDN
muscache.comAirbnb z parametrem zapytaniaim_wdo dostarczania opartego na szerokości (im_w=240,im_w=720,im_w=1200,im_w=2400) - Brak przycinania artystycznego — ten sam obraz jest skalowany w górę/dół przez breakpointy
- Karuzele automatycznie dostosowują wysokość zdjęcia, aby zachować stały stosunek 4:3 niezależnie od źródłowych proporcji
9. Przewodnik Po Promptach Agenta
Szybkie Odniesienie do Kolorów
- Główny CTA: "Rausch (#ff385c)"
- Tło strony: "Canvas White (#ffffff)"
- Powierzchnia podrzędna: "Soft Cloud (#f7f7f7)"
- Tekst nagłówka / body: "Ink Black (#222222)"
- Tekst drugorzędny: "Ash Gray (#6a6a6a)"
- Obramowanie / separator: "Hairline Gray (#dddddd)"
- Błąd: "Error Red (#c13515)"
- Link informacyjny: "Info Blue (#428bff)"
- Akcent tiera Luxe: "Luxe Purple (#460479)"
- Akcent tiera Plus: "Plus Magenta (#92174d)"
Przykładowe Prompty Komponentów
- "Utwórz główny przycisk Reserve: tło Rausch (#ff385c), biała etykieta Airbnb Cereal 500-weight przy 16px, padding 14px × 24px, border-radius 8px, brak cienia. Przy aktywnym/wciśniętym dodaj
transform: scale(0.92)z pierścieniem fokusu Ink Black 2px (0 0 0 2px #222222)." - "Zbuduj kartę ogłoszenia z pełnoekranową fotografią proporcji 4:3 przy border-radius 14px, bez cienia kontenera; poniżej obrazu ułóż trzy wiersze tekstu z przerwami 4px: nazwa miasta przy 16px 600 Ink Black, typ wynajmu przy 14px 500 Ash Gray (#6a6a6a) i zakres cen przy 16px 500 Ink Black z sufiksem
per night14px." - "Zaprojektuj przyklejony panel rezerwacji: białe tło, border-radius 14px, obramowanie Hairline Gray (#dddddd) 1px, 3-warstwowy cień elewacji (
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 24px, szerokość 370px, przypięty 120px poniżej górnej krawędzi viewportu na pulpicie. Treść: nagłówek ceny, selektor dat, dropdown gości, Rausch główny CTA i zastrzeżenie Ash Gray 12pxYou won't be charged yet." - "Utwórz selektor kategorii trzech zakładek: trzy zakładki o równej szerokości oznaczone Homes, Experiences, Services; każda zakładka ma ilustrowaną ikonę 3D (~48px wysoka) (dom, balon, dzwonek) nad etykietą Ink Black o wadze 500 16px; aktywna zakładka ma podkreślenie Ink Black 2px; dodaj małą pilułkę
NEWo wadze 700 białą 12px na ciemnoniebieskim tle w prawym górnym rogu ikon Experiences i Services." - "Wyrenderuj lockup nagrody Guest Favorite: wyśrodkowany numer oceny przy 52px wadze 700 Ink Black, flankowany lewo i prawo ręcznie rysowanymi SVG wieńcami laurowymi ~48px wysokimi; poniżej etykieta
GUEST FAVORITEwielkie litery waga 700 12px z trackowaniem 0.32px; podetkieta przy 14px 500 Ash Gray; blok pełnej szerokości siedzący bezpośrednio na białym płótnie bez obramowania kontenera."
Przewodnik po Iteracji
Przy udoskonalaniu istniejących ekranów wygenerowanych z tym systemem projektowania:
- Skoncentruj się na JEDNYM komponencie na raz.
- Odwołuj się do konkretnych nazw kolorów i kodów hex z tego dokumentu (np. "Ink Black #222222", nie "ciemny szary").
- Używaj opisów w naturalnym języku obok pomiarów ("subtelna trójwarstwowa elewacja" zamiast długiego ciągu cieni).
- Opisz pożądane "odczucie" ("jak magazyn, z priorytetem fotografii" vs "gęsta użyteczność").
- Zawsze domyślnie stosuj Airbnb Cereal VF wagę 500 dla body i 600–700 dla akcentu — nigdy 400.
- Zachowaj różowy Rausch w małej ilości — jeśli więcej niż jeden element w kolorze Rausch pojawi się na viewport, rozważ, czy jeden powinien być zneutralizowany.
Znane Luki
- Karty siatki ogłoszeń strony głównej: główna siatka kart nieruchomości (podstawowa powierzchnia wizualna airbnb.com) nie została w pełni uchwycona w wyekstrahowanych zrzutach ekranu strony głównej — treść załadowała się tylko częściowo. Specyfikacje Karty Ogłoszenia powyżej są wywnioskowane ze struktury siatki Inspiration i szerszych konwencji Airbnb; potwierdź dokładne proporcje i hierarchię metadanych na żywej witrynie przed użyciem produkcyjnym.
- Ikony kategorii Experiences: trójwymiarowe ilustrowane ikony dla Homes / Experiences / Services są serwowane jako zasoby rastrowe; ich dokładne specyfikacje pliku źródłowego (SVG vs PNG, wyrenderowane wymiary pikseli) nie są tutaj udokumentowane.
- Czasy animacji i przejść: nie uchwycone — zakres ekstrakcji statycznej.
- Tryb ciemny: Airbnb nie dostarcza natywnego trybu ciemnego w wyekstrahowanych powierzchniach produktu; ten dokument opisuje tylko jeden jasny motyw.