Решили: главное меню перестало быть модалкой (.gm-screen + панель-диалог) и стало колонкой текста у левой кромки кадра; контраст под ней держит новый контрол EdgeVeil — вершинный градиент от кромки, а не заливка всего экрана и не PNG.

Почему: текст лежит прямо на живом бою, и яркость под ним меняется каждый кадр — «замерить фон один раз» становится невозможно, если фон не подготовлен. Отвергнуто три пути. Глобальный scrim гасит весь кадр, то есть убивает то, ради чего бой за меню и заводится. PNG-градиент требует импорта ассета, то есть работы в редакторе Макса, и тянется пикселями при смене разрешения. Градиентная функция в USS отсутствует как класс возможностей — по той же причине свечение загрузочного экрана лежит файлом. Вершинный градиент даёт всё сразу: тянется на любой размер, красится из палитры через --gm-veil-color, рисуется кодом. Приём в проекте уже принят — вершинами рисуют PanelFrame и PlateButton.

Размеры взяты из разбора рефов (Art_Dev/UI Refs/_teardowns/01-main-menu.md) и пересчитаны из долей 720p в наши 1920x1080, потому что прежние в коридоры не попадали: колонка 620px = 32.3% ширины при потолке рефов 20.5%, шаг пунктов 7.6% высоты при медиане 5.7% и том же кегле, титул к пункту 1.85:1 против худшего рефа 2.0:1.

Сказано: «У нас зря меню все посередине и имеет за собой панель. Это надо для настроек и прочего, но в меню лучше - просто небольшие кнопки-текст без заднего фона и сам фон (например наша битва, что мы временно отказались от неё). Твое мнение?» (04.08.2026, сессия ca460396).

Грабли:

  • Ширину вуали задаёт титул, а не колонка пунктов. На --gm-font-display заголовок забирает около 42% ширины экрана — вуаль в 42% кончалась бы ровно под текстом, и её кромка прочиталась бы краем невидимой панели. Поставлено 50%; плотность от этого не страдает, затухание квадратичное.
  • Затухание обязано быть нелинейным. У линейного глаз ловит излом производной там, где градиент упирается в ноль, — появляется призрачная вертикальная кромка на пустом месте.
  • Пластину PlateButton мало погасить в базовом состоянии. Свои --gm-plate-* есть у :hover, :active, :focus и :disabled, и незакрытое состояние проявляет прямоугольник ровно там, куда наведут. Модификатор primary заведён СВОЙ (--primary у меню), а не общий .gm-button--primary: тот вешает заливку двумя классами, и гасить её пришлось бы войной специфичности ради кнопки, у которой заливки нет по замыслу.
  • Гейт наложений абсолютные элементы не сравнивает, но внутрь заходит — вуаль и штамп версии из сравнений выпадают законно, а вот колонку он проверяет целиком.

Владелец правды: Assets/_Project/Scripts/UI/Components/EdgeVeil.cs, блок «ГЛАВНОЕ МЕНЮ» в Assets/_Project/UI/Theme/components.uss, роль --gm-color-menu-shade в tokens.semantic.uss, тест ScreenLayoutOverlapTests.