# Игроки по одному · #404 · Owner revision v2 **PROPOSED_NOT_OWNER_APPROVED · OWNER_REVIEW_REQUIRED · 30.10.2026** Ограниченная переработка существующего предложения по двум исходным PNG и обратной связи Owner. Приложение и утверждённый общий Style Guide не менялись. ## Композиция Desktop — одна большая карточка на всю рабочую область под компактным shell. На 1440×900 и 1920×1080 ширина сцены следует окну: внешние поля 32 px, боковые зоны шевронов 60 px, без прежнего ограничения rail 1380 / карточки 460 px. Высота поверхности — минимум `100dvh − 238px`; обложка растёт с высотой окна. Это обычный viewport layout, без Fullscreen API. 1024 / 768 сохраняют ту же цельную композицию, с полями 20 px и боковыми зонами 52 px. Обложка, круглый аватар с белой рамкой внутри неё, тёмный блок имени, фактический уровень/город/район, краткая биография и действия составляют одну поверхность. На desktop аватар располагается внизу слева внутри обложки, имя — под ним. Компактная биография и основные действия находятся в правой части той же тёмной поверхности, без отдельного inspector. «Подробнее об игроке» раскрывает сведения **внутри карточки**, увеличивая её высоту в общем потоке. Mobile ≤720 сохраняет обложку 174 px, центральный аватар 104 px, тёмную карточку и радиус 20 px. Кнопки пропуска и дружбы закреплены над нижней навигацией; под содержимое оставлен резерв. Боковые шевроны видны на краях обложки. Один вертикальный scroll owner — документ; раскрытие не создаёт вложенного скролла. Сохранены бренд, TEST-фото, `.pill` с тёмным текстом, ink `#13221a`, lime `#a7f447`, purple `#7945de`, paper `#f5f6f2`. Используются прежние packaged assets и лицензия шрифта. Onest берётся локально, если доступен, иначе используется вложенный DejaVu Sans; в продукте сохраняется Onest. ## Жесты, просмотр, обучение - Реальный свайп влево / «Пропустить» — локальный пропуск и переход вперёд. «Вернуть пропущенного» отменяет только локальный пропуск. - Реальный свайп вправо / «Предложить дружбу» — демо-запрос. Во время busy повторные действия и навигация блокируются. После подтверждённого демо-результата показывается «Запрос отправлен · демо» и автоматически открывается следующий доступный кандидат. Дополнительного Next-click нет. - Боковые ‹ › и клавиши ← → **на намеренно сфокусированном слайдере** только просматривают соседние карточки, не пропускают и не отправляют. На границах шевроны disabled. Enter/Space на явной кнопке дружбы сохраняют нативное действие. - История отношений хранится по ID в памяти макета: возврат показывает outgoing, incoming, friends, UNKNOWN или unavailable, без повторного request. Автопереход обходит уже известные отношения; ручной просмотр позволяет вернуться к ним. Постоянный баннер с инструкцией жестов удалён. На первом открытии карточки показано короткое обучение поверх слайдера: две иконки направлений, значение жестов и отличие навигационных стрелок. Закрытие — «Понятно», X или Escape; таймера нет. «?» открывает обучение снова. Версионированный ключ `gb-player-gallery-tutorial-v2` в sessionStorage хранит только `1` после закрытия, без данных игроков. При недоступном storage работает память текущей страницы; после reload обучение может повториться. Смена карточки/сценария не сбрасывает закрытие. Навигация приложения остаётся доступной; скрытые обучением действия карточки inert. Подсказка получает фокус, после закрытия фокус возвращается слайдеру. Сохранён прежний pointer handler: `touch-action: pan-y pinch-zoom`, начало горизонтали после 10 px и преимущества 1,5×, порог отпускания `clamp(84px, 24% ширины, 120px)`. Вертикальное чтение, частичный жест, pointercancel, потеря capture и Escape не выполняют mutation; конечные координаты проверяются и на pointerup. Кнопки, раскрытия и сведения исключены из начала drag. Статусы объявляются через aria-live; focus-visible и reduced-motion сохранены. Баннер **«Макет: запросы не отправляются»** остаётся: это предупреждение о демонстрации, а не инструкция жестов. ## Состояния и данные Сохранены все десять сценариев панели: просмотр, подробности, outgoing, incoming → friends, unavailable, loading, empty/end, ошибка чтения, UNKNOWN, лимит. Outgoing допускает отдельную отмену; incoming — только явные принять/отклонить; friends не предлагает запрос. UNKNOWN остаётся неизвестным после демо-проверки и не снимает блокировку. Лимит сохраняется на следующих карточках. Переключатель сценариев явно начинает новый независимый демо-сценарий. Без новых оценок, отзывов, расстояний, игр или расписаний. Уровень — самооценка; отсутствующий уровень обозначен явно. Ordinary games сохраняют fallback «пока недоступны» и локальный предпросмотр профиля. Ограничения данных из прежнего brief сохраняются без повторного исследования. ## Передача `index.html` — рабочая галерея: Авто / 1920 / 1440 / 1024 / 768 / 390 и состояния. Уменьшенный preview не заменяет нативный viewport; для него использовать `?screen=1`. Авторская проверка v2: синтаксис inline JS и ссылки на packaged assets. **Chromium/layout/реальные жесты v2 — NOT_TESTED**, переданы PMA для адресной проверки. Прежние Chromium evidence относились к v1 и не объявляются приёмкой v2. Product CI / QA / DEV release / UAT этим дизайн-проходом не выполнялись. ### Проверка PMA после завершения автора Реальный Chromium проверил большую карточку при1440×900/1920×1080, mobile390×844, стрелки без запросов, автопереход после запроса, сохранение pending при возврате, свайпы, одноразовое обучение после reload и повторное открытие через «?», запрет отправки при UNKNOWN. JS exceptions/реальные API mutations — 0. Это проверка макета, не приложения. Интегратор добавил только явный ink-цвет текста стандартных кнопок: после переноса в тёмную поверхность белый цвет наследовался некорректно. JS/компоновка не менялись; исходник автора сохранён. Авторское Chromium NOT_TESTED выше относится к среде Astra, отдельная проверка PMA проведена.