一、④段整套同步(用户选候选 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。
394 lines
33 KiB
Markdown
394 lines
33 KiB
Markdown
# 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 VF` nosi 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 `#222222` przy `0 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ń 4px `0 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 `#dddddd` na 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 `#dddddd` owijają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 `#222222` z 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.32px` i 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 `#ff385c` dla 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 `#222222` dla 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 `#dddddd` 1px 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 URL `im_w=` serwowanych jako pierwsze
|
||
- Responsywne obrazy używają CDN `muscache.com` Airbnb z parametrem zapytania `im_w` do 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 night` 14px."
|
||
- "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 12px `You 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ę `NEW` o 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 FAVORITE` wielkie 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:
|
||
1. Skoncentruj się na JEDNYM komponencie na raz.
|
||
2. Odwołuj się do konkretnych nazw kolorów i kodów hex z tego dokumentu (np. "Ink Black #222222", nie "ciemny szary").
|
||
3. Używaj opisów w naturalnym języku obok pomiarów ("subtelna trójwarstwowa elewacja" zamiast długiego ciągu cieni).
|
||
4. Opisz pożądane "odczucie" ("jak magazyn, z priorytetem fotografii" vs "gęsta użyteczność").
|
||
5. Zawsze domyślnie stosuj Airbnb Cereal VF wagę 500 dla body i 600–700 dla akcentu — nigdy 400.
|
||
6. 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.
|