Решили: карточка витрины лавки — не отдельная карточка, а вариант .gm-card--shop; кайма сведена к базовой, отдельная запись реестра снята.

Почему: с базовой она делила фон, центрирование и внешний отступ, а расходились ширина, внутренний отступ и кайма (--gm-border-2 цвета border-inner против --gm-outline-width цвета --gm-outline-color). Размер — честный вариант, у слота такой уже есть; кайма разошлась исторически, потому что витрину писали прямо в screens/shop.uss. Заодно карточка лавки держала СВОИ правила состояний, дублируя правила базовой, — теперь получает их по наследству.

Отвергли сохранение каймы вариантом --shop: это узаконило бы расхождение, за которым нет смысла. Цена решения названа заранее — вид витрины меняется, и решение принималось глядя на кадр.

Сказано: «Свести к базовой, покажу кадром» и «Вместе, одним заходом» (06.08.2026, сессия e32de921).

Грабли: роль gm-text-subtitle была заведена в теме и повешена в разметке пяти мест, но в UiComponentRegistry не внесена — и витрина её не показывала. Гейты при этом были зелёными: они проверяют, что заявленное реализовано, а не что реализованное заявлено. Обратной проверки у нас нет, и её отсутствие стоило ровно одного невидимого элемента набора. Нашлось случайно, при следующей правке реестра.

Строки (gm-shop__stash-row, gm-reward-drop__row) сведены НЕ были, и это решение: у одной разделитель снизу, у другой маркер слева, общее — только поведение под курсором. Свести их значило бы выбрать один приём отделения за оба списка.

Владелец правды: components/card.uss, UiComponentRegistry.