Решили: доля в процентах у элемента считается от РАЗМЕРА РОДИТЕЛЯ, а родитель под align-items: center получает размер по содержимому — поэтому контейнер, внутри которого что-то меряется процентами, обязан объявить align-self: stretch.

Почему: карточки развилки заданы как 23% ширины кадра, а вышли по 241 пикселю вместо 420. Проценты применились честно — просто к ряду, который сам был шириной по содержимому. Симптом обманчив: выглядит как «доли не работают», хотя работают, и правка «поставить пиксели» увела бы раскладку от кадра. Тот же механизм ужал поле знака внутри карточки: у соседей с разной длиной описания заголовки встали на разной высоте, потому что flex-shrink по умолчанию единица.

Сказано: «Т.е. нажимаем профиль - у нас две такие карточки. Выбор профиля или кастомизация профиля» (21.08.2026, сессия 26182ec4).

Грабли:

  • Точечный ImportAsset нового .uss не доводит его до агрегатора. Файл импортируется (правила в нём есть), но в flattenedRecursiveImports темы не появляется, и стили молча не действуют. Лечится импортом ПАПКИ: ImportAsset("Assets/_Project/UI/Theme", ImportRecursive | ForceUpdate). Проверять надо не «импортировала ли», а есть ли имя файла в списке импортов темы.
  • Текст из локали побеждает fallback в коде. Укоротила описания карточек в C#, а на кадре остались длинные: ключи уже были заведены в таблице, и правка кода ни на что не влияла. Тексты, у которых есть ключ, правятся в таблице через API редактора.
  • Иконки не в Resources. Resources.Load по пути Art/UI/Icons-gm/... возвращает null молча. Картинка приходит из USS (url(...)), а код называет роль знака классом-модификатором.

Владелец правды: Assets/_Project/UI/Theme/components/mode-card.uss, Assets/_Project/Scripts/UI/ProfileHubView.cs.