Решили: завести гейт UssImportGateTests — ни один лист набора не импортируется с жалобой
парсера; заодно убрать две такие жалобы, calc() в .gm-button--back и align-items: baseline
в .gm-tooltip__header.
Почему: USS отказывает молча. Непонятую декларацию импортёр выбрасывает, соседние применяет, и
экран выглядит почти правильно — вид расходится с файлом, а связать это с импортом некому.
Цена промаха была на кадрах: из четырёх экранов с кнопкой «Вернуться» у кромки стоял ровно один.
В .gm-button--back лежало left: calc(0px - var(--gm-space-3)); position: absolute применялся,
left отбрасывался, и по горизонтали кнопка замирала там, куда её клал поток, — по центру.
Работали только настройки, где место кнопке задавало своё правило экрана в обход общего.
Отвергнуто: раздать персональные правила каждому экрану (быстро, но «одно место двери наружу» рассыпается на четыре, и общее правило остаётся мёртвым). Отвергнуто: комментарий в файле — см. ниже, он уже был написан дважды.
Сказано: «вернуться находится не у левого края экрана, как мы обсуждали. Почему? Особенно это
видно в Создать игру (а это именно Выбор режима!!!) и в Выбор гильдии. В настройках тоже не
корректно. Найди единую причину и исправь, а то все еще вернуться как-то косит» (23.08.2026,
gdd/00-meta/qa-notes.md, заход 12:00).
Грабли: про calc() у нас уже было написано дважды — в tokens.primitives.uss («UI Toolkit
не поддерживает calc() и не умеет математику над переменными») и в loadout.uss («стоявшее здесь
calc(var(--gm-space-0) * -1) молча не применялось»). Оба раза с диагнозом, оба раза руками. Это не
помешало calc появиться в третий раз: комментарий виден только тому, кто открыл тот файл, а
правило кнопки писалось в третьем. Инвариант, живущий между файлами, комментарием не держится.
Второй виток граблей — сама диагностика. Гипотезу «декларация отброшена» по файлам доказать нельзя:
грепом видно, что правило есть, а вид ему не соответствует. Ответ лежал в двух местах, о которых
легко не вспомнить: флаг StyleSheet.importedWithWarnings (внутреннее свойство, публичного API нет)
и текст жалобы, который Unity печатает в момент импорта — то есть его надо ловить реимпортом,
в старой консоли его уже нет. Точная формулировка стоила того: warning: Unknown function 'calc' in declaration 'left: calc', файл и строка.
Чего гейт НЕ ловит: валидный USS, который просто не даёт нужного вида, и неизвестный токен —
var(--нет-такого) синтаксически верен, импортёр молчит, а декларация всё равно не применяется.
Второе стерегут токенные гейты.
Владелец правды: тест UssImportGateTests,
Assets/_Project/UI/Theme/components/button.uss, …/tooltip.uss.