Решили: у кнопки три РОЛИ (Обычная, Главная, Для удаления) и отдельная ось размера; классов вида «кнопка на таком-то экране» не существует — раскладку задаёт КОНТЕЙНЕР через селектор потомка (.gm-mainmenu__buttons > .gm-button).

Почему: реестр, собранный по факту дерева, показал не набор, а перепись: шесть записей из десяти в группе кнопок значили «кнопка вот здесь» — gm-mainmenu__btn, gm-loadout__start-btn, gm-event-choice, gm-profile__slot-pick, gm-guilds__slot-pick, gm-loadout__sort. Разобрав каждый, обнаружили, что все шесть держали РАСКЛАДКУ (ширина, отступы, выравнивание, растяжение в ряду) и лишь притворялись видом. Тем же оказался и модификатор --fill: flex-grow: 1, записанный вариантом кнопки. Отвергли нумерацию вариантов без роли («Кнопка 1/2/3»): номер не отвечает на вопрос «какую брать сюда», и через месяц за ответом придётся идти в картинку — принят формат «Кнопка (Роль) — Вариация N», где номер остаётся заделом на вторую вариацию роли.

Сказано: «У нас должны быть вариации кнопок. Кнопка 1, Кнопка 2, Кнопка 3. Мы вставляем их куда надо. А вот “пункт главного меню”, “начать забег” и “пластина” — это зачем?» (06.08.2026, сессия a66a54e9). Про роль удаления — там же: «Запиши “Кнопка (Для удаления / необратимого) — Вариация 1”».

Грабли: снос экранного класса вскрыл, что Главная выглядела двояко — в главном меню заливкой (собственный gm-mainmenu__btn--primary), а в остальных одиннадцати местах только каймой. Пока роль записана в двух местах разными приёмами, она перестаёт быть ролью; заливка перенесена в общее правило. Второе: снося класс gm-event-choice часом раньше, я сняла с контейнера класс gm-event-choices как «мёртвый» — он был пуст ровно потому, что раскладка сидела на кнопках. Пришлось вернуть под новым именем gm-choice-list. Пустой контейнерный класс рядом с «толстой» кнопкой — примета того, что раскладка живёт не там.

Владелец правды: UiComponentRegistry (набор ролей), components/button.uss (вид роли), screens/*.uss (раскладка), тест UssDeadCodeTests.