Решили: components.uss разнесён на 31 файл — блок на файл, экран на файл; порядок @import объявлен несущим и закреплён тестом; результат резки доказывается попиксельным сравнением контактного листа, а не осмотром.

Почему: в ленте на 3994 строки смешались два разных сорта правил. Компонентов конечное число, а правил экранов столько, сколько экранов, — файл рос линейно и не перестал бы никогда. Цена уже была уплачена: двенадцать селекторов объявлены дважды (секция dev-консоли получила внутри себя повторный подраздел), потому что в такой длине не видно, что правило есть выше.

Грабли: три, и каждая дороже предыдущей.

Первая: распределение по первому классу селектора теряет групповые правила. Ярус шрифтов — один селектор на тринадцать блоков — начинается с .gm-panel__title, уехал в panel.uss и оказался раньше components/unity.uss. Базовое .unity-text-element стало перебивать гарнитуру, и кнопки, вкладки и заголовки молча потеряли сериф. Многоблочных селекторов в файле девять; восемь сохранили относительный порядок случайно, девятый — нет. Их надо назначать вручную, а не формулой.

Вторая: контактный лист был недетерминирован, и это чуть не увело диагностику. Мелкие расхождения кадров я приняла за регрессию каскада и переставила card.uss — «починка» по шуму. Прямая проверка (два прогона ПОДРЯД без единой правки) дала три расходящихся кадра: захват заставал USS-переходы на полпути. С ожиданием в сорок кадров вместо двух лист стал побитово повторяемым, и только после этого его сравнение стало доказательством.

Третья, мелкая: правка .asmdef не видна compile-check — команды компиляции он берёт у Unity из Library/Bee, а те обновляются только рефрешем редактора. Новая ссылка между сборками требует рефреша, иначе «нет такого пространства имён» при верном файле.

Владелец правды: Assets/_Project/UI/Theme/theme.uss (порядок ярусов), тест UiStateGateTests.Порядок_ярусов_темы_не_менялся, Assets/_Project/Scripts/DevTools/UiContactSheet.cs (SettleFrames).