> Additional Owner correction: 1024 layout rejected. At 768–1199px use a full-width feed, move sidebar map and supporting content below it; preserve current game-card composition and Details/Share. Do not squeeze cards between square media and a permanent sidebar. > Owner review 29.10.2026 — REVISIONS REQUIRED, not approved. > Navigation on desktop: Back and page headers share the same left content rail across all pages, including login methods (#19). Narrow form controls may retain a readable width, but must not recenter navigation. > Existing game feed design is retained; v1 proposed feed redesign is REJECTED. Keep Details and Share. Desktop venue covers are square, never portrait; mobile composition stays existing and must not stretch a landscape photo into portrait. > Keep floating map CTA over feed; sidebar map preview itself is interactive. Remove duplicate CTA below map. > These explicit Owner corrections supersede conflicting v1 descriptions below; other proposals remain pending approval. # GoBadminton · композиция потребительского сайта · v1.0 **PROPOSED_NOT_OWNER_APPROVED · 29.10.2026** Авторская роль: Senior UI Designer. Один конечный дизайн-проход по прямому заданию Owner. Это предложение для согласования; не изменение канонического Guide, не реализация и не приёмка DEV. Вход: выбранный immutable source SHA `954601f3b9da8dddc471ab2ffbe855ced7cde3c0`; DEV `r40911472843-a1 ACCEPTED` — факт из задания, не повторно выполненный release. [Галерея](index.html) открывается локально, без сервера и сети. Сначала идут пять замечаний Owner; далее — все ключевые семейства. Переключатели: шаблон, состояние, Desktop / 1024 / Mobile 390. Desktop занимает доступную ширину до 1440 px; 1024 и 390 — максимальная ширина макета, без горизонтального скролла. На физически узком экране desktop сжимается: для просмотра широкого состояния нужен широкий viewport. ## 1. Уже утверждённая основа Прочитаны `docs/decisions/OWNER_DECISION_FRONTEND_STYLE_GUIDE_FIRST_V001.md`, `docs/product/DESKTOP_OVERLAY_STYLE_GUIDE.md`, frozen `/opt/gobadminton-clean-qa/style-guide/src/App.tsx` и `src/index.css`. Учитывается scoped supersession t420u: макеты ориентировочные; пиксельная идентичность не заявляется. Сохраняются: - Onest, существующие lime / purple / ink / paper, логотип и локальные брендовые иллюстрации; - Buttons, HeroBanner, ActionBanner, InformationalBanner, SurfacePanel, SectionHeader, ContentContainer, ListRow, FormGroup, Empty/Error/Skeleton, DesktopFooter; - существующие navigation, карточки игр и игроков, формы и различие page / inspector / dialog / sheet; - **«Просторный40»** с 1024 px: normal/view/wide content inset 40; small 400 — inset 32; popover 280 — inset 18; X 44×44, glyph 24, top/right 24; header 24/16, body 16, footer 12/16; radius 28, внутренние cards 18, fields 12; - ширины overlay: view 450 / create 640 при ≥1280; 400/520 при 1024–1279; modal normal 560, small 400, filters 480, picker 680, Radar list 360, popover 280; - accepted compact game #370: обложка 88×88 и единая семантика обычной игры / тренировки. Новое оформление inspector не предлагается. **Шрифт в артефакте:** доступных локальных байтов Onest не найдено в разрешённом source, frozen guide и предыдущей галерее. Запрос внешнего шрифта не выполнялся. CSS: `Onest, Arial, sans-serif`. Если Onest не установлен локально, галерея показывает Arial; оценка точной типографики Onest остаётся NOT_TESTED. Внедрение обязано использовать действующий `next/font` Onest. ## 2. Новое предложение: одна композиционная грамматика Новые элементы — только композиция имеющихся примитивов. Рекомендуется одна система, без параллельных тем. ```text Обычная детальная страница Global shell 32 desktop / 20 mobile Назад (target ≥44) 16 desktop / 12 mobile [H1 + метаданные] ИЛИ [герой с H1 + метаданные] 24 desktop / 20 mobile Контекстная панель: вторичные действия | статус + основное действие 24 desktop / 20 mobile Содержательные секции (body + rail → одна колонка) 64 desktop / 36 mobile + резерв нижней навигации Footer / mobile reading links ``` Back и H1 не дублируют друг друга. У профиля и игры имя/название внутри hero — единственный H1. У каталогов, настроек, форм — H1 в SectionHeader. У legal — узкий reading header. Карта остаётся самостоятельным full-screen контекстом со своим Back/X, не получает обычную page hero. Нельзя оставлять отдельную кнопку между Back и hero без структурного контейнера. Длинный заголовок увеличивает высоту; не обрезается до нечитаемого ellipsis. При отсутствии bio не резервируется пустой абзац. ## 3. Токены и размеры | Область | Основа / предложенное применение | |---|---| | Цвета | ink `#13221a`, secondary `#536159`, paper `#f5f6f2`, white, line `#dfe4dc`, lime `#a7f447`, purple `#7945de`, lavender `#eee6ff` — действующие | | Шаг | 4 / 8 / 12 / 16 / 24 / 32 / 48; 40 — утверждённый overlay inset | | Контейнер | 1380 max, gutter 32 desktop / 16 mobile; narrow form 816 inner max, reading 820 max | | Page H1 | предложение 48/≈52 desktop, 32/36 mobile; discovery 58/≈62 → 38/≈42; legal 42 → 32 | | Section H2 | 26/31 → 23/28; overlay остаётся 22/26 | | Body / meta | 16 с line-height ≈1.5; meta 14/20, вторичный caption ≥12 | | Hero | высота по содержимому; профиль visual около 300 desktop / 156 mobile; game cover около 320 / 196, не пустой hero на весь экран | | Layout | body + rail 340, gap 24; средний desktop rail 300; mobile один поток | | Поверхности | базовые radius 12 / 18 / 28 сохраняются; в галерее некоторые групповые page panels 20 как bounded композиционное расширение | | Actions | обычные кнопки min-height 48, target ≥44; icon 22–24; gap 12, padding 12/18; растут при длинном тексте | | Focus | видимый purple outline 3 px с offset; не только изменение цвета | Промежуточные ширины: композиция страницы складывается при ≤767 px; 768–1023 — промежуточный layout без принудительного применения desktop overlay. Утверждённые desktop overlays действуют строго с 1024. На 1024–1279 сохраняются 400/520. Не менять действующие mobile sheet breakpoints/gestures ради этой таблицы. ## 4. Пять решений Owner ### 01 · Возврат в профиле [Профиль](index.html#player/first/desktop): Back получает собственную строку, расстояние от shell и от hero. Герой двухколоночный на desktop, компактный cover/avatar + copy на mobile. Имя, роль, город и bio — одна ось. Поля уровня и района ниже не заменяют метаданные героя и показывают «Не указан». ### 02 · Рекомендация / share / участие [Игра](index.html#game/available/desktop): под hero одна светлая contextual SurfacePanel. Слева два **отдельных** вторичных действия «Посоветовать другу» и «Поделиться». Справа статус участия и основной CTA. Рекомендация не становится share, приглашением или бронью. Никакого добавления отправки без существующего capability и accepted friendship. `isRecommendableGame`, gate выбранной игры, friend picker и ограничения видимости сохраняются. Для pending: статус «Заявка на рассмотрении», пояснение про неподтверждённое место, secondary withdrawal. Для confirmed: «Место подтверждено», secondary refusal. Full/cancelled не имеют primary заявки. При неудачной проверке участия — «Проверить участие», без оптимистического состояния. В галерее используются нейтральные примеры вместимости с согласованными числами, не живые данные. ### 03 · Чат игры [Участник и чат](index.html#game-chat/confirmed/mobile): после условий участия отдельная панель «Общение по игре». Заголовок + короткий смысл + CTA, отступ 24/20. Секция полностью отсутствует, если `getGameChat` не дал разрешённый active chat. Не показывать disabled «Чат» гостю как обещание доступа. Не выводить участников/сообщения до проверки. Личная блокировка не меняет участие и общий чат. ### 04 · Карта над лентой [Лента](index.html#home/ready/desktop): существующий `GamesViewAction` распространяется на desktop. Кнопка центрируется **над колонкой игр**, а не над страницей или rail. Правая мини-карта сама становится отдельной доступной кнопкой; существующая текстовая кнопка рядом остаётся. Внутри кнопки карты — только декоративные элементы, никакого вложенного `