一、④段整套同步(用户选候选 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
53 KiB
Markdown
394 lines
53 KiB
Markdown
# Дизайн-система, вдохновлённая Airbnb
|
||
|
||
> Category: Электронная коммерция и розничная торговля
|
||
> Маркетплейс путешествий. Тёплый коралловый акцент, фотографии в приоритете, скруглённый интерфейс.
|
||
|
||
## 1. Визуальная тема и атмосфера
|
||
|
||
Дизайн Airbnb в 2026 году напоминает тревел-журнал, который случайно оказался приложением — безупречно белые холсты уступают место фотографиям на всю ширину, а сам интерфейс исчезает, чтобы объявления могли дышать. Фирменный коралово-розовый Rausch (`#ff385c`) используется скупо, но безошибочно узнаваемо: CTA поиска, индикатор активной вкладки, основная кнопка действия, иногда цена или сердечко вишлиста. Всё остальное — дисциплинированная серая шкала, где `#222222` несёт почти каждую строку текста.
|
||
|
||
То, что делает систему неповторимо Airbnb — это та *вера*, которую она возлагает на контент. Фотографии объектов отображаются в героическом масштабе, 4:3 с обработкой от края до края с закруглением. Переключение категорий происходит через трёхвкладочный переключатель (Жильё / Впечатления / Услуги), использующий иконки с 3D-рендерингом (домик со скатной крышей, воздушный шар, сервисный колокольчик) — физические, тактильные, почти игрушечные — в паре с чёткими подписями `Airbnb Cereal VF`. Это редкий потребительский продукт, где 3D-рендеры и чисто типографский интерфейс сосуществуют без напряжения.
|
||
|
||
Новейшая поверхность — линейка продуктов **Впечатления** — тот же хром, но более богатая плотность карточек, больше фотографий и центрированная панель бронирования со sticky правой колонкой с ценой. Страницы с деталями объявлений (как комнат, так и впечатлений) следуют жёсткому шаблону: сетка изображений-героев на всю ширину → перекрывающаяся скруглённая карточка бронирования (sticky при прокрутке) → удобства → отзывы (награды Guest Favorite используют большой центрированный рейтинг `4.81` с медальоном из лавровых ветвей) → карта → профиль хозяина → раскрытия. Ритм последователен, бронируете ли вы комнату или яхт-тур.
|
||
|
||
**Ключевые характеристики:**
|
||
- Коралово-розовый Rausch (`#ff385c`) как единственный акцентный фирменный цвет, используется только для основных CTA и кнопки поиска
|
||
- Фотографии на всю ширину 4:3 / 16:9 с мягким скруглением углов (14–20px) как основной визуальный словарь
|
||
- 3D-рендеренные иконки категорий в паре с типографскими вкладками — единственное место, где система допускает иллюстрации
|
||
- Круглые кнопки-иконки `50%` (стрелка назад, поделиться, в избранное, стрелки карусели) разбросаны по всему интерфейсу
|
||
- `Airbnb Cereal VF` несёт каждую подпись, от 8px сноски до 28px заголовка раздела — система с единственной гарнитурой
|
||
- Цветовое кодирование по уровню продукта: Airbnb Plus (пурпурно-розовый `#92174d`), Airbnb Luxe (тёмно-фиолетовый `#460479`), Airbnb (коралловый Rausch)
|
||
- Медальон награды Guest Favorite — огромное число рейтинга по центру между двумя лавровыми венками, один из самых узнаваемых моментов системы
|
||
- Sticky панель бронирования со стеком цена → даты → гости, закреплённая в правой колонке на десктопе, трансформирующаяся в нижнюю закреплённую кнопку «Забронировать» на мобильных
|
||
- Нижняя мобильная навигация (Поиск / Списки желаний / Войти) с Rausch-оттенком в активном состоянии
|
||
|
||
## 2. Цветовая палитра и роли
|
||
|
||
### Основной
|
||
- **Rausch** (`#ff385c`): Фирменный коралово-розовый бренда. CSS-переменная `--palette-bg-primary-core`. Используется для: основной кнопки «Забронировать», кнопки отправки поиска, подчёркивания активной вкладки, заливки сердечка вишлиста, акцента на цену. Единственный наиболее заметный цвет на каждой странице.
|
||
|
||
### Вторичные и акцентные
|
||
- **Deep Rausch** (`#e00b41`): Более насыщенный вариант. CSS-переменная `--palette-bg-tertiary-core`. Используется для нажатых/активных состояний кнопок и конечных точек градиента.
|
||
- **Plus Magenta** (`#92174d`): CSS-переменная `--palette-bg-primary-plus`. Фирменный цвет продуктового уровня Airbnb Plus — предложение курируемых объявлений премиум-класса.
|
||
- **Luxe Purple** (`#460479`): CSS-переменная `--palette-bg-primary-luxe`. Фирменный цвет продуктового уровня Airbnb Luxe — аренда вилл и поместий.
|
||
- **Info Blue** (`#428bff`): CSS-переменная `--palette-text-legal`. Используется для юридических/информационных ссылок (условия, конфиденциальность, раскрытия) — единственный нехроматический цвет ссылок в системе.
|
||
|
||
### Поверхности и фоны
|
||
- **Canvas White** (`#ffffff`): Фон страницы по умолчанию. Каждая карточка, каждый контейнер, каждая страница с деталями начинается здесь.
|
||
- **Soft Cloud** (`#f7f7f7`): Тонкий оттенок подповерхности, используемый на фонах нижних колонтитулов, обёртках вида карты и секциях «всё остальное», которые хотят отступить от основного белого.
|
||
- **Hairline Gray** (`#dddddd`): Повсеместный цвет границы 1px — разделяет карточки, строки удобств, панели отзывов, колонки нижних колонтитулов. Рабочая лошадка системы макетирования.
|
||
|
||
### Нейтральные и текстовые
|
||
- **Ink Black** (`#222222`): CSS-переменная `--palette-text-primary`. Почти чёрный системы. Каждый заголовок, каждый абзац основного текста, каждая подпись навигации, каждая цена. Используется для ~90% всего текста на странице.
|
||
- **Charcoal** (`#3f3f3f`): CSS-переменная `--palette-text-focused`. Используется в тексте ввода в состоянии focused и текстовом акценте одной ступени ниже.
|
||
- **Ash Gray** (`#6a6a6a`): CSS-переменная `--palette-bg-tertiary-hover`. Вторичные подписи, подзаголовочный текст «Аренда коттеджей» под названиями городов, приглушённые ссылки нижнего колонтитула.
|
||
- **Mute Gray** (`#929292`): CSS-переменная `--palette-text-link-disabled`. Отключённые кнопки и метаданные низкого приоритета.
|
||
- **Stone Gray** (`#c1c1c1`): Третичные разделители, обводки иконок, аватары-заглушки.
|
||
|
||
### Семантические и акцентные
|
||
- **Error Red** (`#c13515`): CSS-переменная `--palette-text-primary-error`. Ошибки валидации форм, предупреждения о деструктивных действиях.
|
||
- **Deep Error** (`#b32505`): CSS-переменная `--palette-text-secondary-error-hover`. Нажатые/активные варианты состояний ошибок.
|
||
- **Translucent Black** (`rgba(0, 0, 0, 0.24)`): CSS-переменная `--palette-text-material-disabled`. Отключённые подписи в стиле material.
|
||
|
||
### Система градиентов
|
||
Фирменный градиент Airbnb появляется редко, как правило, только на словесном знаке и в фирменном моменте кнопки поиска:
|
||
|
||
```
|
||
linear-gradient(90deg, #ff385c 0%, #e00b41 50%, #92174d 100%)
|
||
```
|
||
|
||
Этот переход коралловый → пурпурный является «фирменным моментом» — никогда не используется в качестве полной поверхности, только как узкая заливка пилюли или обработка логотипа.
|
||
|
||
## 3. Правила типографики
|
||
|
||
### Семейство шрифтов
|
||
- **Airbnb Cereal VF** (основной и единственный): Проприетарный переменный sans-serif, который несёт всю систему. Запасные варианты (по порядку): `Circular, -apple-system, system-ui, Roboto, Helvetica Neue, sans-serif`.
|
||
|
||
Начертания, наблюдаемые в извлечённых токенах: 500, 600, 700. Нет 400-regular — «тело» системы имеет начертание 500, что придаёт каждому блоку текста слегка большую плотность, которая читается как уверенная и намеренная.
|
||
|
||
Функции OpenType: `salt` (стилистические альтернаты) используется на компактных подписях 11px и 14px 600 — вероятно, для более плотного формирования цифр и специальных символов. Функции лигатур или дробных цифр не наблюдались.
|
||
|
||
### Иерархия
|
||
|
||
| Роль | Размер | Начертание | Высота строки | Межбуквенный интервал | Примечания |
|
||
|------|--------|-----------|---------------|----------------------|-----------|
|
||
| Заголовок раздела | 28px / 1,75rem | 700 | 1,43 | 0 | «Вдохновение для будущих поездок» — заголовки уровня страницы |
|
||
| Заголовок подраздела | 22px / 1,38rem | 500 | 1,18 | -0,44px | «Что предлагает это место», «Познакомьтесь с хозяевами» — разделители контента |
|
||
| Заголовок карточки | 21px / 1,31rem | 700 | 1,43 | 0 | Заголовки панели отзывов, ведущие заголовки карточек |
|
||
| Заголовок объявления | 20px / 1,25rem | 600 | 1,20 | -0,18px | «Яхт-тур для небольших групп, безлимитное вино и фрукты» — заголовки объявлений на страницах деталей |
|
||
| Подзаголовок жирный | 16px / 1,00rem | 600 | 1,25 | 0 | Имя хозяина, название города |
|
||
| Основной текст | 16px / 1,00rem | 500 | 1,25 | 0 | Основной текст на страницах деталей |
|
||
| Кнопка большая | 16px / 1,00rem | 500 | 1,25 | 0 | «Забронировать», «Стать хозяином» |
|
||
| Кнопка стандартная | 14px / 0,88rem | 500 | 1,29 | 0 | Стандартные подписи кнопок |
|
||
| Ссылка | 14px / 0,88rem | 500 | 1,43 | 0 | Ссылки навигации, ссылки нижнего колонтитула |
|
||
| Подпись средняя | 14px / 0,88rem | 500 | 1,29 | 0 | Метаданные, строки подзаголовков («Аренда коттеджей», «Аренда вилл») |
|
||
| Подпись жирная | 14px / 0,88rem | 600 | 1,43 | 0 | Включена функция `salt` — числовые статистики, акцент в мелком тексте |
|
||
| Подпись мелкая | 13px / 0,81rem | 400 | 1,23 | 0 | Даты отзывов, микро-метаданные |
|
||
| Микро стандартный | 12px / 0,75rem | 400 | 1,33 | 0 | Оговорки нижнего колонтитула, юридический микротекст |
|
||
| Микро жирный | 12px / 0,75rem | 700 | 1,33 | 0 | Подписи пилюль «НОВОЕ» |
|
||
| Бейдж заглавные | 11px / 0,69rem | 600 | 1,18 | 0 | Функция `salt` — компактные бейджи категорий/статусов |
|
||
| Надстрочный | 8px / 0,50rem | 700 | 1,25 | 0,32px | Заглавные — сноски к ценам, хвосты десятичных |
|
||
|
||
### Принципы
|
||
- **Одна гарнитура, множество начертаний.** Airbnb Cereal VF справляется со всем, от юридических 8px до заголовков страниц 28px — визуальная идентичность исходит из самой гарнитуры, а не из смешения шрифтов.
|
||
- **500 — новый 400.** «Обычное» начертание системы — 500, что придаёт каждому абзацу слегка более уверенную текстуру, чем веб-стандарт.
|
||
- **Отрицательный кернинг только для отображения.** Заголовки 20px и выше сжимают кернинг на -0,18 до -0,44px для вычеканенного вида; размеры основного текста остаются с нулевым кернингом для читаемости.
|
||
- **Плотные межстрочные интервалы для заголовков, щедрые для текста.** Отображаемый тип работает при 1,18–1,25 (плотный); основной текст и подписи открываются до 1,43 для комфорта при длинном чтении.
|
||
- **Нет заглавных кроме 8px.** Единственное преобразование в заглавные в системе — надстрочный 8px — везде в остальном регистр предложения с тонкими изменениями начертания.
|
||
|
||
### Примечание о заменителях шрифтов
|
||
Airbnb Cereal VF является проприетарным. Ближайший open-source заменитель — **Circular Std** (всё ещё коммерческий) или **Inter** (бесплатный, Google Fonts) с уменьшенным межбуквенным интервалом на -0,01em для отображаемых размеров. Для строгой верности бренду задокументированная цепочка запасных вариантов (`Circular, -apple-system, system-ui`) нормально рендерится на macOS/iOS, где `system-ui` разрешается в San Francisco, который имеет схожие пропорции.
|
||
|
||
## 4. Стилизация компонентов
|
||
|
||
### Кнопки
|
||
|
||
**Основной CTA** («Забронировать», «Поиск», «Добавить даты»)
|
||
- Фон: Rausch `#ff385c`
|
||
- Текст: Canvas White `#ffffff`, Airbnb Cereal 500, 16px
|
||
- Отступы: ~14px по вертикали, 24px по горизонтали
|
||
- Радиус: 8px (прямоугольный) или 50% (вариант круглой иконки)
|
||
- Граница: нет
|
||
- Активное/нажатое: `transform: scale(0.92)` плюс кольцо фокуса 2px `#222222` при `0 0 0 2px`
|
||
|
||
**Вторичная кнопка** («Стать хозяином», обведённые третичные действия)
|
||
- Фон: `#ffffff`
|
||
- Текст: Ink Black `#222222`, Airbnb Cereal 500, 14–16px
|
||
- Отступы: 10px 16px
|
||
- Радиус: 20px (пилюля) или 8px (прямоугольный)
|
||
- Граница: 1px solid Hairline Gray `#dddddd`
|
||
|
||
**Круглая кнопка только с иконкой** (стрелка назад, поделиться, в избранное, элементы управления каруселью)
|
||
- Фон: `#f2f2f2` (слегка не белый) или белый с прозрачной чёрной границей 1px
|
||
- Иконка: обводка `#222222`, 16–20px
|
||
- Размер: диаметр 32–44px
|
||
- Радиус: 50%
|
||
- Активное/нажатое: `transform: scale(0.92)`; тонкое белое кольцо 4px `0 0 0 4px rgb(255,255,255)` для отделения от цветных фотографических фонов
|
||
|
||
**Отключённая кнопка**
|
||
- Фон: `#f2f2f2`
|
||
- Текст: Stone Gray `#c1c1c1`
|
||
- Прозрачность: 0,5
|
||
|
||
**Кнопка-вкладка пилюля** (переключатель категорий «Жильё / Впечатления / Услуги»)
|
||
- Фон: прозрачный
|
||
- Текст: Ink Black `#222222`, Airbnb Cereal 500, 16px
|
||
- Отступы: 8px 14px
|
||
- Активное состояние: подчёркивание Ink Black 2px под подписью
|
||
- В паре с 3D-рендеренной иллюстрированной иконкой 36–48px над подписью
|
||
|
||
### Карточки и контейнеры
|
||
|
||
**Карточка объявления** (сетка главной страницы, результаты поиска)
|
||
- Фон: `#ffffff`
|
||
- Радиус: 14px на изображении, текст располагается непосредственно под ним на прозрачном фоне
|
||
- Изображение: соотношение сторон 4:3, на всю ширину, скруглённое с тем же радиусом 14px
|
||
- Отступы: нет на внешнем контейнере; 12px отступ между изображением и строками метаданных
|
||
- Тень: нет — разделение обеспечивается пустым пространством и собственным радиусом фотографии
|
||
- Шаблон метаданных: город/регион в строке 1 (16px 600), расстояние/продолжительность в строке 2 (14px 500 Ash Gray), диапазон дат в строке 3, строка цены с «за ночь» внизу
|
||
|
||
**Панель бронирования страницы деталей** (sticky правая колонка на страницах комнат/впечатлений)
|
||
- Фон: `#ffffff`
|
||
- Радиус: 14–20px
|
||
- Граница: 1px solid Hairline Gray `#dddddd`
|
||
- Тень: `rgba(0, 0, 0, 0.02) 0 0 0 1px, rgba(0, 0, 0, 0.04) 0 2px 6px 0, rgba(0, 0, 0, 0.1) 0 4px 8px 0` — тонкое трёхслойное наложенное возвышение
|
||
- Отступ: 24px
|
||
- Ширина: ~370px, закреплена на 120–140px ниже верха области просмотра
|
||
- Содержание: заголовок цены → выбор дат → выпадающий список гостей → основной CTA → сноска «С вас ничего не будет списано сейчас»
|
||
|
||
**Карточка сетки удобств** (на страницах деталей объявлений)
|
||
- Фон: `#ffffff`
|
||
- Граница: 1px solid Hairline Gray `#dddddd` на уровне строки (не для каждого элемента)
|
||
- Отступ: 16px по вертикали на строку удобства
|
||
- Шаблон иконка + подпись: контурная иконка 24px слева, подпись 16px 500 справа
|
||
|
||
**Карточка отзыва** (отдельный отзыв на страницах деталей)
|
||
- Фон: `#ffffff`, без границы
|
||
- Отступ: 0 (опирается на отступы сетки)
|
||
- Содержание: круглый аватар 40px + имя 16px 600 + дата 14px 400 Ash Gray в одной строке, затем абзац основного текста 14px 500 ниже
|
||
|
||
### Поля ввода и формы
|
||
|
||
**Строка поиска** (основная страница)
|
||
- Фон: `#ffffff`
|
||
- Граница: 1px solid Hairline Gray `#dddddd`, охватывающий все три сегмента (Куда / Когда / Кто)
|
||
- Радиус: 32px (полная пилюля)
|
||
- Тень: `rgba(0, 0, 0, 0.04) 0 2px 6px 0` — тонкое ощущение парения
|
||
- Структура: три сегмента, разделённых тонкими вертикальными разделителями, каждый сегмент имеет подпись 12px 500 над заполнителем 14px 500
|
||
- Отправка: круглая кнопка-иконка Rausch у правого края, диаметр 48px
|
||
|
||
**Текстовый ввод** (общие формы)
|
||
- Фон: `#ffffff`
|
||
- Граница: 1px solid Hairline Gray `#dddddd`
|
||
- Радиус: 8px
|
||
- Отступ: 14px 16px
|
||
- Фокус: граница переключается на Ink Black, добавляется внешнее чёрное кольцо `0 0 0 2px`
|
||
- Ошибка: граница переключается на `#c13515` (Error Red), вспомогательный текст использует тот же цвет
|
||
|
||
**Выбор дат**
|
||
- Сетка календаря: 7-колонная разметка, круглые ячейки дней `50%` шириной 40–44px
|
||
- Выбранный диапазон: фон Ink Black `#222222` с белыми цифрами
|
||
- Начальные/конечные якоря: более крупные заполненные круги; средние даты используют оттенок Soft Cloud `#f7f7f7`
|
||
|
||
### Навигация
|
||
|
||
**Верхняя навигация (Десктоп)**
|
||
- Высота: ~80px
|
||
- Фон: `#ffffff`
|
||
- Слева: логотип Airbnb в Rausch (102×32px)
|
||
- По центру: трёхвкладочный переключатель категорий (Жильё / Впечатления / Услуги) с 3D-иконками 36–48px, сложенными над подписями 16px 500; активная вкладка имеет подчёркивание Ink Black 2px
|
||
- Справа: текстовая ссылка «Стать хозяином», затем круглый глобус 32px (язык), затем гамбургер-меню аватара 36px
|
||
- Border-bottom: 1px solid Hairline Gray `#dddddd`
|
||
|
||
**Верхняя навигация (Мобильная)**
|
||
- Поисковая пилюля в одну строку занимает всю ширину: заполнитель «Начните поиск» с маленькой иконкой лупы
|
||
- Ниже: трёхвкладочный переключатель категорий сохраняется (Жильё / Впечатления / Услуги) — иллюстрированные иконки сжимаются до ~28px
|
||
- Нижняя закреплённая панель вкладок: Поиск (активное состояние Rausch) / Списки желаний / Войти — иконки 24px над подписями 12px
|
||
|
||
**Вторичная навигация страницы деталей объявления**
|
||
- Sticky горизонтальная прокрутка якорных ссылок (Фото · Удобства · Отзывы · Расположение · Хозяин) появляется при прокрутке за изображение-герой
|
||
- Высота: 56px
|
||
- Border-bottom: 1px solid Hairline Gray
|
||
|
||
### Обработка изображений
|
||
|
||
- **Основные соотношения сторон**: 4:3 для сеток объявлений главной страницы, 16:9 для фотографий-героев впечатлений, 1:1 для аватаров
|
||
- **Радиус**: 14px на изображениях сетки объявлений, 20px на рамках фотографий-героев страниц деталей, `50%` на аватарах
|
||
- **Сетка изображений на страницах деталей**: сетка из пяти фотографий с одним большим изображением слева (50% ширины) и четырьмя меньшими фотографиями в сетке 2×2 справа, все разделяющие внешний скруглённый контейнер 20px
|
||
- **Отложенная загрузка**: широкое использование `loading="lazy"` с размытыми превью-заглушками
|
||
- **Карусель**: круглые кнопки-стрелки 32px накладываются на изображение, центрируются по вертикали; точечные индикаторы находятся на 12px выше нижнего края
|
||
|
||
### Фирменные компоненты
|
||
|
||
**Медальон награды Guest Favorite** (выделен на страницах деталей высокооценённых объявлений)
|
||
- Центрированный номер рейтинга, отрендеренный в 44–56px 700
|
||
- Две нарисованные от руки SVG иллюстрации лавровых венков слева и справа высотой ~48px
|
||
- Ниже: подпись «Guest Favorite» в 12px 700 заглавными с трекингом `0,32px`, и короткая подзаголовочная подпись в 14px 500 Ash Gray
|
||
- Блок на всю ширину, без границы контейнера — расположен непосредственно на белом холсте
|
||
|
||
**Трёхвкладочный переключатель категорий** (появляется вверху каждой поверхности просмотра)
|
||
- Три вкладки: Жильё / Впечатления / Услуги
|
||
- Каждая вкладка: 3D-рендеренная иллюстрированная иконка (~48px высотой) над подписью 16px 500
|
||
- Впечатления и Услуги в настоящее время несут маленькую тёмно-синюю пилюлю «НОВОЕ» (белый текст 12px 700 на тёмно-синем фоне), плавающую вверху справа от иконки
|
||
- Активная вкладка: подчёркивание Ink Black 2px под подписью
|
||
|
||
**Сетка вдохновляющих городов** (главная страница «Вдохновение для будущих поездок»)
|
||
- Сетка из 6 колонок ссылок на направления на десктопе, 2 колонки на мобильном
|
||
- Каждая ячейка: название города 16px 600 в строке 1, подзаголовок типа аренды 14px 500 Ash Gray в строке 2 («Аренда коттеджей», «Аренда вилл»)
|
||
- Нет изображений — только текстовая сетка
|
||
- Выше разделена по категориям (Популярное / Искусство и культура / Пляж / Горы / Активный отдых / Развлечения / Советы путешественникам и вдохновение / Апартаменты, дружелюбные к Airbnb) — активная вкладка имеет подчёркивание 2px и смену начертания
|
||
|
||
**Sticky карточка бронирования** (страницы деталей объявлений)
|
||
- Остаётся фиксированной на 120px ниже верха области просмотра на десктопе при прокрутке за герой
|
||
- Сворачивается в полноширинную нижнюю панель на мобильном с подписью «От X₽ / ночь» и пилюлей Rausch «Забронировать»
|
||
- Всегда отображает: заголовок цены → отображение дат → выбор гостей → CTA Rausch → оговорка «С вас ничего не будет списано сейчас»
|
||
|
||
**Карточка хозяина впечатлений** (страницы деталей впечатлений)
|
||
- Полноширинный скруглённый контейнер с фотографией обложки 3:2 вверху
|
||
- Аватар хозяина (круглый, 56px), перекрывающий нижний край обложки на 50%
|
||
- Под перекрытием: имя хозяина в 16px 700, стаж хозяина в 14px 500 Ash Gray, маленькая кнопка-пилюля Rausch «Написать хозяину»
|
||
- Используется как переход между отзывами и блоком удобств/расположения
|
||
|
||
**Полоса «Важно знать»** (страницы деталей объявлений)
|
||
- Сетка из 3 колонок блоков правил/политик (Правила дома, Безопасность и имущество, Политика отмены)
|
||
- Каждая колонка: иконка вверху, заголовок 16px 600, основной текст 14px 500 Ash Gray, ссылка «Показать больше» с подчёркиванием Ink Black
|
||
- Разделитель: верхние и нижние границы Hairline Gray 1px на всей полосе
|
||
|
||
## 5. Принципы макетирования
|
||
|
||
### Система отступов
|
||
- **Базовая единица**: 8px
|
||
- **Извлечённая шкала**: 2, 3, 4, 5,5, 6, 8, 10, 11, 12, 15, 16, 18,5, 22, 24, 32px — мелкозернистая с несколькими внесеточными значениями для пиксель-идеального выравнивания иконок
|
||
- **Отступ секции**: ~48–64px сверху/снизу на десктопе, 24–32px на мобильном
|
||
- **Внутренний отступ карточки**: 24px на панелях бронирования и больших карточках, 16px на строках удобств, 12px на метаданных карточки объявления
|
||
- **Промежуток между карточками объявлений**: 24px десктоп, 16px мобильный
|
||
- **Между сложенными текстовыми строками**: 4–8px (очень плотно — усиливает ощущение «плотной информации» листингов путешествий)
|
||
|
||
### Сетка и контейнер
|
||
- **Максимальная ширина контента**: 1760–1920px на ультрашироких (Airbnb позволяет сетке дышать дальше, чем большинство сайтов); 1280px на большинстве страниц деталей
|
||
- **Сетка объявлений главной страницы**: 6 колонок при ≥1760px, 5 при ≥1440px, 4 при ≥1128px, 3 при ≥800px, 2 при ≥550px, 1 ниже
|
||
- **Страница деталей**: 2 асимметричные колонки — основной контент ~58%, sticky панель бронирования ~36% справа, ~6% желоб
|
||
- **Нижний колонтитул**: 3 колонки Поддержка / Хостинг / Airbnb
|
||
|
||
### Философия пустого пространства
|
||
Airbnb информативно насыщен, но никогда не тесен. Пустое пространство используется для *группировки* — карточки объявлений имеют желоб 24px, чтобы каждая фотография читалась как отдельный объект, но метаданные под каждой карточкой используют промежутки 4–8px, чтобы цена/город/дата ощущались как единица. Панель бронирования страницы деталей имеет внутренний отступ 24px, но строки внутри (выбор дат, выбор гостей, CTA) сложены с 12px — граница между карточкой и страницей выполняет больше работы по разделению, чем содержимое внутри.
|
||
|
||
### Шкала радиусов границ
|
||
| Радиус | Использование |
|
||
|--------|---------------|
|
||
| 4px | Встроенные теги-якоря, чипы тегов |
|
||
| 8px | Текстовые кнопки, выпадающие списки, маленькие утилитарные кнопки |
|
||
| 14px | Фотографии карточек объявлений, общие контейнеры контента, значки |
|
||
| 20px | Основные скруглённые кнопки (форма пилюли), большие изображения, панель бронирования |
|
||
| 32px | Пилюля строки поиска, контейнеры экстра-большого размера |
|
||
| 50% | Все круглые кнопки-иконки, все аватары, сердечки вишлистов — фирменная круглая геометрия системы |
|
||
|
||
## 6. Глубина и возвышение
|
||
|
||
| Уровень | Обработка | Использование |
|
||
|---------|-----------|---------------|
|
||
| 0 | Без тени | Карточки объявлений, контент тела, только текстовые разделы |
|
||
| 1 | `rgba(0, 0, 0, 0.08) 0 4px 12px` | Активные/нажатые кнопки-иконки (напр., назад, поделиться, в избранное) — тонкий подъём для указания взаимодействия |
|
||
| 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` | Sticky карточка панели бронирования, модальные окна, выпадающие меню — фирменное трёхслойное возвышение системы |
|
||
| Кольцо фокуса | `0 0 0 2px #222222` | Кнопки в активном состоянии, строка поиска в фокусе |
|
||
| Белое кольцо-разделитель | `rgb(255, 255, 255) 0 0 0 4px` | Круглые кнопки, наложенные на фотографии — белое кольцо 4px чисто отделяет кнопку от цветных фотографических фонов |
|
||
|
||
Философия теней: Airbnb использует **наложенные многослойные тени** вместо одной падающей тени. Трёхслойная тень панели бронирования читается как одно цельное возвышение, но на самом деле представляет собой три отдельные тени с разными значениями непрозрачности/размытия — создавая тонкое сглаживание на периметре тени, которое выглядит премиально, но не тяжело.
|
||
|
||
### Декоративная глубина
|
||
- **Фотография как глубина**: система сильно опирается на фотографию на всю ширину для создания визуальной глубины; тени и градиенты используются экономно, чтобы фотографии выполняли тяжёлую работу
|
||
- **Медальон лавровых венков**: награда Guest Favorite использует две SVG иллюстрации лавра, которые придают иначе плоскому номеру рейтинга церемониальное, трофейное присутствие
|
||
- **3D-рендеренные иконки категорий**: иконки Жильё/Впечатления/Услуги имеют собственное мягкое внутреннее освещение и тонкие отброшенные тени, запечённые в иллюстрации — единственное место, где бренд допускает «объёмную» иллюстрацию
|
||
|
||
## 7. Что нужно и не нужно делать
|
||
|
||
### Нужно
|
||
- Резервировать Rausch `#ff385c` для основных действий и индикатора активной вкладки — никогда не разбавлять его декоративным использованием.
|
||
- Давать фотографии дышать — кадрирование 4:3 с закруглёнными углами 14–20px, без наложенного текста, без градиентных плашек.
|
||
- Использовать Ink Black `#222222` для каждого слоя текста ниже Rausch — это почти чёрный системы, никогда не настоящий `#000000`.
|
||
- Сочетать 3D-иллюстрированные иконки трёхвкладочного переключателя категорий с плоской типографикой — не смешивать стили иллюстраций на одной поверхности.
|
||
- Накладывать три тени с низкой непрозрачностью (~2%, 4%, 10%) для создания фирменного возвышения панели бронирования.
|
||
- Использовать границы Hairline Gray `#dddddd` 1px для каждого разделителя карточка-карточка и строка-строка.
|
||
- Обращаться с панелью бронирования как со sticky на десктопе, сворачивающейся в нижнюю закреплённую кнопку на мобильном.
|
||
- Использовать отступ 4–8px внутри групп метаданных и 24px между карточками — плотность информации намеренна.
|
||
|
||
### Не нужно
|
||
- Не вводить вторичные акцентные цвета за пределами палитры уровней продуктов Rausch / Plus Magenta / Luxe Purple.
|
||
- Не размещать текст внутри фотографий — подписи всегда располагаются под изображением, никогда не накладываются.
|
||
- Не использовать подписи заглавными буквами, кроме единственной роли надстрочного 8px.
|
||
- Не скруглять кнопки-иконки до чего-либо кроме 50% — круглое является фирменной геометрией системы.
|
||
- Не добавлять падающие тени к карточкам объявлений — они располагаются на белом холсте без возвышения.
|
||
- Не использовать градиентные фоны — единственный градиент в системе — узкий переход Rausch → пурпурный на словесном знаке.
|
||
- Не использовать начертание 400-regular — начертание тела Airbnb Cereal — 500.
|
||
- Не заменять Airbnb Cereal VF другой отображаемой гарнитурой — система намеренно однофамильная.
|
||
|
||
## 8. Адаптивное поведение
|
||
|
||
### Точки останова
|
||
|
||
Airbnb объявляет ~60 точек останова (артефакт дизайна из их библиотеки компонентов), но значимые сдвиги макета происходят на значительно меньшем наборе:
|
||
|
||
| Название | Ширина | Ключевые изменения |
|
||
|----------|--------|-------------------|
|
||
| Ультраширокий | ≥1760px | 6-колонная сетка объявлений, максимальная ширина контента 1760–1920px |
|
||
| Десктоп XL | 1440–1759px | 5-колонная сетка, полная навигация видна, sticky панель бронирования правой колонки |
|
||
| Десктоп | 1128–1439px | 4-колонная сетка, sticky панель бронирования сохраняется |
|
||
| Ноутбук | 1024–1127px | 3–4 колонная сетка, навигация категорий остаётся горизонтальной |
|
||
| Планшет | 800–1023px | 3-колонная сетка, глобальный поиск может свернуться в однострочную пилюлю |
|
||
| Маленький планшет | 550–799px | 2-колонная сетка, панель бронирования опускается до полноширинного встроенного блока |
|
||
| Мобильный | 375–549px | 1-колонная сложенная разметка, появляется нижняя закреплённая панель вкладок (Поиск / Списки желаний / Войти) |
|
||
| Маленький мобильный | <375px | Краевые отступы сжимаются до 16px; иконки переключателя категорий уменьшаются до ~28px |
|
||
|
||
### Цели касания
|
||
Все интерактивные элементы соответствуют или превышают 44×44px. Семейство круглых кнопок-иконок специально размером 32–44px с расширенным отступом области касания 8–12px. Основная кнопка Rausch «Забронировать» составляет ~48px в высоту. Область касания трёхвкладочного переключателя категорий — полный прямоугольник подпись-плюс-иконка (обычно ~64×80px на вкладку).
|
||
|
||
### Стратегия сворачивания
|
||
- **Навигация**: Верхняя навигация сохраняет логотип Airbnb + трёхвкладочный переключатель на планшете и выше; на мобильном переключатель скользит сразу под поисковую пилюлю, а элементы управления глобус/аватар перемещаются на нижнюю закреплённую панель вкладок.
|
||
- **Строка поиска**: Трёхсегментная пилюля (Куда / Когда / Кто) с круглой кнопкой отправки Rausch на десктопе; сворачивается в однострочную пилюлю «Начните поиск» на мобильном, нажатие открывает полноэкранный лист поиска.
|
||
- **Панель бронирования**: Sticky правая колонка при ≥1128px; встроенная в основную колонку контента между 800–1127px; закреплённая пилюля «Забронировать» внизу при <800px.
|
||
- **Сетка объявлений**: Переформатируется 6 → 5 → 4 → 3 → 2 → 1 колонок по точкам останова.
|
||
- **Сетка изображений страницы деталей**: Пятиизображенческая разметка (1 большое + 4 маленьких) на десктопе; становится прокручиваемой каруселью на всю ширину на мобильном с точечными индикаторами страниц.
|
||
- **Нижний колонтитул**: 3-колонная разметка сворачивается в сложенную одноколонную при <800px.
|
||
|
||
### Поведение изображений
|
||
- `loading="lazy"` универсально, с размытыми параметризованными `im_w=` превью-заглушками, загружаемыми первыми
|
||
- Адаптивные изображения используют CDN `muscache.com` Airbnb с параметром запроса `im_w` для доставки на основе ширины (`im_w=240`, `im_w=720`, `im_w=1200`, `im_w=2400`)
|
||
- Нет художественного кадрирования — одно и то же изображение масштабируется вверх/вниз по точкам останова
|
||
- Карусели автоматически подстраивают высоту фото для поддержания постоянного соотношения 4:3 независимо от ориентации источника
|
||
|
||
## 9. Руководство по промптам для агентов
|
||
|
||
### Краткий справочник цветов
|
||
- Основной CTA: «Rausch (#ff385c)»
|
||
- Фон страницы: «Canvas White (#ffffff)»
|
||
- Подповерхность: «Soft Cloud (#f7f7f7)»
|
||
- Текст заголовка / тела: «Ink Black (#222222)»
|
||
- Вторичный текст: «Ash Gray (#6a6a6a)»
|
||
- Граница / разделитель: «Hairline Gray (#dddddd)»
|
||
- Ошибка: «Error Red (#c13515)»
|
||
- Информационная ссылка: «Info Blue (#428bff)»
|
||
- Акцент уровня Luxe: «Luxe Purple (#460479)»
|
||
- Акцент уровня Plus: «Plus Magenta (#92174d)»
|
||
|
||
### Примеры промптов компонентов
|
||
- «Создать основную кнопку Забронировать: фон Rausch (#ff385c), белая подпись Airbnb Cereal 500 в 16px, отступы 14px × 24px, радиус границы 8px, без тени. При активном/нажатом добавить `transform: scale(0.92)` с кольцом фокуса Ink Black 2px (`0 0 0 2px #222222`).»
|
||
- «Создать карточку объявления с фотографией 4:3 на всю ширину с радиусом границы 14px, без тени контейнера; под изображением сложить три текстовые строки с промежутками 4px: название города в 16px 600 Ink Black, тип аренды в 14px 500 Ash Gray (#6a6a6a), и ценовой диапазон в 16px 500 Ink Black с суффиксом `за ночь` 14px.»
|
||
- «Спроектировать sticky панель бронирования: белый фон, радиус границы 14px, граница Hairline Gray (#dddddd) 1px, трёхслойная тень возвышения (`rgba(0,0,0,0.02) 0 0 0 1px, rgba(0,0,0,0.04) 0 2px 6px 0, rgba(0,0,0,0.1) 0 4px 8px 0`), отступ 24px, ширина 370px, закреплена на 120px ниже верха области просмотра на десктопе. Содержание: заголовок цены, выбор дат, выпадающий список гостей, основной CTA Rausch и оговорка Ash Gray 12px `С вас ничего не будет списано сейчас`.»
|
||
- «Создать трёхвкладочный переключатель категорий: три вкладки равной ширины с подписями Жильё, Впечатления, Услуги; каждая вкладка имеет 3D-рендеренную иллюстрированную иконку (~48px высотой) (дом, шар, колокольчик) над подписью 16px 500 Ink Black; активная вкладка получает подчёркивание Ink Black 2px; добавить маленькую пилюлю 12px 700 белая `НОВОЕ` на тёмно-синем фоне в верхний правый угол иконок Впечатления и Услуги.»
|
||
- «Отрендерить медальон награды Guest Favorite: центрированный номер рейтинга в 52px 700 Ink Black, фланкированный слева и справа нарисованными от руки SVG лавровыми венками высотой ~48px; ниже подпись 12px 700 заглавными `GUEST FAVORITE` с трекингом 0,32px; подзаголовочная подпись в 14px 500 Ash Gray; блок на всю ширину, расположенный непосредственно на белом холсте без границы контейнера.»
|
||
|
||
### Руководство по итерации
|
||
При доработке существующих экранов, сгенерированных с этой дизайн-системой:
|
||
1. Фокусироваться на ОДНОМ компоненте за раз.
|
||
2. Ссылаться на конкретные названия цветов и шестнадцатеричные коды из этого документа (напр., «Ink Black #222222», не «тёмно-серый»).
|
||
3. Использовать описания на естественном языке вместе с измерениями («тонкое трёхслойное возвышение» вместо длинной строки теней).
|
||
4. Описывать желаемое «ощущение» («стиль журнала, фотография на первом плане» vs «плотная утилитарность»).
|
||
5. Всегда использовать по умолчанию Airbnb Cereal VF 500 для тела и 600–700 для акцента — никогда не 400.
|
||
6. Держать розовый Rausch редким — если на один видовой экран приходится более одного элемента цвета Rausch, подумать, нужно ли нейтрализовать один из них.
|
||
|
||
### Известные пробелы
|
||
- **Карточки сетки объявлений главной страницы**: основная сетка карточек объектов (основная визуальная поверхность airbnb.com) не была полностью захвачена в извлечённых скриншотах главной страницы — контент загрузился лишь частично. Спецификации карточек объявлений выше выведены из структуры сетки вдохновения и более широких конвенций Airbnb; подтвердите точные соотношения сторон и иерархию метаданных на живом сайте перед использованием в производстве.
|
||
- **Иконки категорий Впечатления**: 3D-иллюстрированные иконки для Жильё / Впечатления / Услуги поставляются как растровые ресурсы; их точные спецификации исходных файлов (SVG vs PNG, отрендеренные пиксельные размеры) здесь не задокументированы.
|
||
- **Тайминги анимации и переходов**: не захвачены — область статичного извлечения.
|
||
- **Тёмный режим**: Airbnb не поставляет нативный тёмный режим в извлечённых поверхностях продукта; этот документ описывает только одну тему светлого режима.
|