/* =========================================================================
   vitrine — витрина рейтинга casinoblox.co.nz (ЭТАП 08).
   Префикс cbxv- используется ТОЛЬКО внутри витрины (08.0а): ни служебных
   классов, ни имени этого файла с «cbxv» — иначе сторож C11.4 читает
   «витрина на обзоре». Фильтры и раскрытие — на голом CSS: чекбоксы ПЕРЕД
   списком, ярлыки после, ни строчки JS.

   ⚠️ Каждое внутреннее правило пишется от предка `.cbxv-wrap`, а не одним
   классом: витрина встаёт и ВНУТРИ `.cbx-prose`, и полосой на всю ширину.
   Правило листа `.cbx-prose p` — это (0,1,1) против (0,1,0) у `.cbxv-name`,
   и та же карточка внутри статьи вырастает со 165 px до 288 px.

   ⚠️ Раскладка строки переключается по ШИРИНЕ КОНТЕЙНЕРА, а не окна: на одном
   и том же экране витрина стоит и в колонке статьи (~860 px), и полосой на
   всю линейку (1120 px). Медиазапрос по окну развалил бы одну из двух.
   ========================================================================= */

.cbxv-wrap{ container-type:inline-size; margin:var(--cbx-air) 0;
  font-family:var(--cbx-body); font-size:16px; line-height:1.6;
  color:var(--cbx-slate); }
.cbxv-wrap *{ box-sizing:border-box; }
.cbxv-wrap p,.cbxv-wrap ul,.cbxv-wrap ol,.cbxv-wrap li,.cbxv-wrap h2,.cbxv-wrap dl,
.cbxv-wrap dt,.cbxv-wrap dd,.cbxv-wrap label,.cbxv-wrap time,.cbxv-wrap small,
.cbxv-wrap span,.cbxv-wrap summary{
  margin:0; padding:0; list-style:none; text-indent:0; background:none; border:0; }
.cbxv-wrap li::before,.cbxv-wrap li::marker{ content:none; }

/* --- заголовок и подпись ------------------------------------------------- */
.cbxv-wrap .cbxv-h{ margin:0 0 6px; font:700 27px/1.22 var(--cbx-head);
  color:var(--cbx-felt); letter-spacing:-.3px; }
.cbxv-wrap .cbxv-sub{ margin:0 0 15px; font-size:14px; color:var(--cbx-fog);
  line-height:1.55; }
.cbxv-wrap .cbxv-sub time{ font-weight:700; color:var(--cbx-slate); }

/* --- панель фильтров ----------------------------------------------------- */
/* position:fixed, а не absolute: у absolute-чекбокса без позиционированного
   предка клик по ярлыку уводит страницу в самый верх (фокус уезжает к нулю
   документа), и «фильтр не работает» — при рабочем CSS. */
.cbxv-wrap .cbxv-f{ position:fixed; top:0; left:0; width:1px; height:1px;
  opacity:0; pointer-events:none; }
/* норма отступа текста от рамки — 16 px на 1440/1024 и 12 px на 768/390 (gate_padding):
   было 11/14, и панель фильтра краснела на каждом проходе */
.cbxv-wrap .cbxv-bar{ display:flex; flex-wrap:wrap; gap:8px; align-items:center;
  padding:16px; margin:0 0 14px; background:var(--cbx-band);
  border:1px solid var(--cbx-rule); border-radius:10px; }
.cbxv-wrap .cbxv-bar__t{ margin:0 4px 0 0; font:700 12px/1 var(--cbx-head);
  text-transform:uppercase; letter-spacing:.08em; color:var(--cbx-fog); }
.cbxv-wrap .cbxv-lb{ display:inline-flex; align-items:center; gap:7px;
  padding:7px 13px; font:700 14px/1.2 var(--cbx-head); color:var(--cbx-royal-deep);
  cursor:pointer; background:var(--cbx-chalk); border:1px solid var(--cbx-rule);
  border-radius:99px; transition:background .12s,border-color .12s; }
.cbxv-wrap .cbxv-lb:hover{ border-color:var(--cbx-royal); }
.cbxv-wrap .cbxv-lb::before{ content:""; width:13px; height:13px; flex:0 0 13px;
  border-radius:3px; border:1.5px solid var(--cbx-rule); background:var(--cbx-chalk); }
.cbxv-wrap .cbxv-lb span{ font-weight:400; color:var(--cbx-fog); }
.cbxv-wrap .cbxv-f:focus-visible+.cbxv-bar .cbxv-lb{ outline:2px solid var(--cbx-royal);
  outline-offset:2px; }
.cbxv-wrap .cbxv-n{ margin-left:auto; font-size:13px; color:var(--cbx-fog); }

/* --- строка: база — узкий контейнер -------------------------------------- */
.cbxv-wrap .cbxv-list{ list-style:none; margin:0; padding:0; counter-reset:cbxv; }
/* ⛔ Узкая строка считана по высоте, а не нарисована на глаз (эталон ≈200 px мобилка,
   принято 150–290; замер 25.09.2026 дал 371 px). Что стоило высоты и куда девалось:
     • «место НАД знаком» отдельной стопкой — 40 px на пустом месте: номер уехал
       кружком НА плитку (absolute), оценка в узком виде скрыта — она и так выводится
       из места в этой же витрине;
     • столбец опознания шириной 128 px разгонял имя+траст+чипы до 158 px: имя и траст
       теперь идут во всю остатнюю ширину (~180 px), чипы одним рядом с прокруткой;
     • плитка знака (106 px) выше опознания (67 px) — в пустое место рядом с ней встала
       КНОПКА (`"logo body" "logo act"`), а не своя стопка под панелью: минус 45 px.
       Панель оффера и разворот идут во всю ширину ниже — на 172 px значение бонуса
       вставало двумя строками и панель раздувалась до 152 px (замер 25.09.2026).
   Знак при этом НЕ уменьшается: пол по знаку жёсткий (≥90 px телефон). */
.cbxv-wrap .cbxv-list>li{ counter-increment:cbxv; position:relative; display:grid;
  grid-template-columns:116px minmax(0,1fr);
  grid-template-areas:"logo body" "logo act" "offer offer" "det det";
  gap:8px 12px; align-items:start; padding:12px; margin:0 0 10px;
  background:var(--cbx-chalk); border:1px solid var(--cbx-rule); border-radius:10px; }
.cbxv-wrap .cbxv-list>li:hover{ box-shadow:0 8px 20px rgba(16,20,24,.09); }
.cbxv-wrap .cbxv-list>li.cbxv-hid{ display:none; }
/* Тройка первых мест — разметка положения, а не украшение. */
.cbxv-wrap .cbxv-list>li.cbxv-top{ border-left:3px solid var(--cbx-rose); }

/* В узком виде номер — кружком на углу плитки, с белым кольцом: своей стопки он не
   стоит. Кольцо обязательно — без него кружок сливается с белой подложкой знака. */
.cbxv-wrap .cbxv-rank{ grid-area:rank; position:absolute; top:6px; left:6px; z-index:2;
  display:flex; flex-direction:column; align-items:center; gap:2px; }
.cbxv-wrap .cbxv-rank__n{ display:flex; align-items:center; justify-content:center;
  width:26px; height:26px; flex:0 0 26px; border-radius:50%;
  background:var(--cbx-royal); color:var(--cbx-chalk); box-shadow:0 0 0 2px #fff;
  font:700 13px/1 var(--cbx-head); font-variant-numeric:tabular-nums; }
.cbxv-wrap .cbxv-rank__n::before{ content:counter(cbxv); }
/* Оценка выводится из МЕСТА в этой же витрине — отдельной «метрики» за ней нет. */
.cbxv-wrap .cbxv-score{ display:none; font:700 13px/1 var(--cbx-head);
  color:var(--cbx-fog); font-variant-numeric:tabular-nums; }

/* Рамка и БЕЛАЯ подложка — на самой плитке (ссылке), а не на картинке: плитка
   меряется по родителю <img>, и прозрачный родитель — это «плитка не белая»
   на каждой карточке сети, даже когда PNG белый от края до края. */
/* ⛔⛔⛔ ЗНАК КРУПНЫЙ В ПИКСЕЛЯХ (владелец, 25.09.2026): длинная сторона знака
   ≥100 px на десктопе и ≥90 px на телефоне, отсюда плитка 156×94 (D) и 112×72 (M)
   при padding 5 px и пропорции 5:3 — как у мастера логотипа. «Доля знака в плитке»
   этого не заменяет: при плитке 76 px доля была честные 100 %, а знак — 60 px. */
/* ⛔⛔ Плитка ВЫШЕ полосы: мастера знаков бывают квадратные (300×300 — SlotsMafia,
   CookieCasino, Gunsbet) и полосой (275×76). Пол по знаку (≥100 px десктоп, ≥90 px
   телефон) для квадрата задаёт поле по ВЫСОТЕ: отсюда плитка 156×112 (поле 144×100)
   и 112×102 (поле 100×90), а не 156×94.
   ⛔⛔ И знак меряется ПИКСЕЛЯМИ, а не `width:100%;height:100%`: в гриде проценты
   разрешаются от строки, строка сама подстраивается под картинку с `aspect-ratio`
   мастера — квадрат рисовался 144×144 в поле 82 и обрезался плиткой (`overflow:hidden`),
   то есть знак «крупный» и одновременно ПОРЕЗАННЫЙ. Проверка это видит (R15 «знак
   вылез за плитку» 60 из 92), глаз — нет: обрезано ровно поле вокруг знака (25.09.2026). */
.cbxv-wrap .cbxv-logo{ grid-area:logo; display:grid; place-items:center;
  width:116px; height:106px; margin:0; padding:5px; background:#fff; overflow:hidden;
  border:1px solid var(--cbx-rule); border-radius:9px; }
.cbxv-wrap .cbxv-logo img{ display:block; width:auto; height:auto;
  max-width:104px; max-height:94px; object-fit:contain; background:#fff; }

.cbxv-wrap .cbxv-body{ grid-area:body; min-width:0; }
.cbxv-wrap .cbxv-name{ margin:0 0 2px; font:700 17px/1.25 var(--cbx-head);
  color:var(--cbx-felt); }
/* Траст-строка: скорость выплат · регулятор · срок работы. В узкой полосе — одной
   строкой с прокруткой, как чипы: переносами она стоит карточке 35 px, а резать её
   нельзя (скорость выплат не сказана больше нигде; лицензия и год есть в развороте). */
.cbxv-wrap .cbxv-trust{ margin:0 0 6px; font-size:12.5px; line-height:1.45;
  color:var(--cbx-fog); white-space:nowrap; overflow-x:auto; scrollbar-width:none; }
.cbxv-wrap .cbxv-trust::-webkit-scrollbar{ display:none; }
/* Чипы в узкой строке — одним рядом с прокруткой: три чипа на 200 px встают тремя
   рядами и дают карточке лишние 48 px. Прятать их нельзя — это факты отбора. */
.cbxv-wrap .cbxv-facts{ display:flex; flex-wrap:nowrap; overflow-x:auto;
  scrollbar-width:none; gap:5px; margin:0; padding:0; list-style:none; }
.cbxv-wrap .cbxv-facts::-webkit-scrollbar{ display:none; }
.cbxv-wrap .cbxv-facts li{ font-size:11.5px; line-height:1.35; padding:2px 9px;
  border-radius:99px; background:var(--cbx-band); border:1px solid var(--cbx-rule);
  color:var(--cbx-fog); white-space:nowrap; }
.cbxv-wrap .cbxv-facts li.cbxv-crit{ background:#eeeafc; border-color:#d2c9f5;
  color:var(--cbx-royal-deep); font-weight:700; }

/* --- панель оффера ------------------------------------------------------- */
/* ⛔ Голой суммы рядом с кнопкой не бывает: бонус живёт панелью — что дают,
   чем это ограничено. Отыгрыш, минимальный депозит и код — строкой ниже. */
.cbxv-wrap .cbxv-offer{ grid-area:offer; padding:7px 10px; background:#fdf2f6;
  border:1px solid #f3d3e0; border-radius:9px; }
.cbxv-wrap .cbxv-offer__k{ margin:0 0 1px; font:700 10.5px/1.2 var(--cbx-head);
  text-transform:uppercase; letter-spacing:.09em; color:var(--cbx-rose-deep); }
.cbxv-wrap .cbxv-offer__v{ margin:0; font:700 15.5px/1.22 var(--cbx-head);
  color:var(--cbx-felt); font-variant-numeric:tabular-nums; }
.cbxv-wrap .cbxv-offer__v span{ display:block; font:700 12.5px/1.3 var(--cbx-head);
  color:var(--cbx-rose-deep); }
/* Отыгрыш · минимальный депозит · код — одним рядом с прокруткой, как чипы: в узкой
   полосе они переносятся на две-три строки и стоят карточке 30 px. */
.cbxv-wrap .cbxv-offer__t{ display:flex; flex-wrap:nowrap; overflow-x:auto;
  scrollbar-width:none; gap:2px 10px; margin:4px 0 0; padding:0; list-style:none; }
.cbxv-wrap .cbxv-offer__t::-webkit-scrollbar{ display:none; }
.cbxv-wrap .cbxv-offer__t li{ font-size:11.5px; line-height:1.4; color:var(--cbx-fog); }
.cbxv-wrap .cbxv-offer__t li+li{ position:relative; padding-left:11px; }
.cbxv-wrap .cbxv-offer__t li+li::before{ content:"·"; position:absolute; left:3px; }

/* --- кнопка ------------------------------------------------------------- */
.cbxv-wrap .cbxv-act{ grid-area:act; display:flex; flex-direction:column;
  align-items:stretch; gap:6px; text-align:center; }
.cbxv-wrap .cbxv-cta{ flex:0 0 auto; display:block; padding:10px 10px;
  text-align:center; background:var(--cbx-rose); color:var(--cbx-chalk)!important;
  text-decoration:none!important; font:700 13.5px/1.25 var(--cbx-head);
  letter-spacing:.2px; border-radius:6px; transition:background .12s; }
.cbxv-wrap .cbxv-cta:hover{ background:var(--cbx-rose-deep); }
/* «Read our review» в узкой полосе скрыта — так в сети и положено (урок
   showcase-row-must-be-compact: «в мобилке прятать длинное: чип лицензии, 4-й+ чип,
   второстепенные факты, „Leer la reseña“, подпись 18+»). Обзор достаётся с хаба и из
   блоков карточек, а строке эта пара стоила 18 px на каждой карточке. */
.cbxv-wrap .cbxv-rev{ display:none; flex:0 0 auto; font:700 13px/1.3 var(--cbx-head);
  color:var(--cbx-royal-deep); text-decoration:none; }
.cbxv-wrap .cbxv-rev:hover{ text-decoration:underline; }
/* Возрастная подпись в узкой строке скрыта (лишняя строка на карточку, а сказана
   она в сноске витрины: «Online casino play is for adults aged 20 and over»);
   «Read our review» остаётся — это единственная ссылка из строки на наш обзор. */
.cbxv-wrap .cbxv-terms{ display:none; flex:1 1 100%; margin:0; font-size:11px;
  color:var(--cbx-fog); line-height:1.4; }

/* --- раскрытие карточки -------------------------------------------------- */
/* В узкой полосе у разворота нет линейки сверху и отступа — строка «Operator details +»
   и так последняя в карточке, а линейка с отступом стоят ей 9 px. */
.cbxv-wrap .cbxv-det{ grid-area:det; margin:0; font-size:12.5px; }
.cbxv-wrap .cbxv-det summary{ cursor:pointer; font:700 12px/1.3 var(--cbx-head);
  color:var(--cbx-royal-deep); list-style:none; }
.cbxv-wrap .cbxv-det summary::-webkit-details-marker{ display:none; }
.cbxv-wrap .cbxv-det summary::after{ content:" +"; }
.cbxv-wrap .cbxv-det[open] summary::after{ content:" –"; }
.cbxv-wrap .cbxv-dl{ display:grid; grid-template-columns:auto minmax(0,1fr);
  gap:3px 12px; margin:7px 0 2px; font-size:12px; line-height:1.5; }
.cbxv-wrap .cbxv-dl dt{ font-weight:700; color:var(--cbx-slate); }
.cbxv-wrap .cbxv-dl dd{ margin:0; color:var(--cbx-fog); }

/* --- «показать все» ------------------------------------------------------ */
.cbxv-wrap .cbxv-more{ display:block; width:100%; padding:13px 16px; margin:2px 0 0;
  text-align:center; font:700 15px/1.2 var(--cbx-head); color:var(--cbx-royal-deep);
  background:var(--cbx-chalk); cursor:pointer; border:1px solid var(--cbx-rule);
  border-radius:8px; }
.cbxv-wrap .cbxv-more:hover{ border-color:var(--cbx-royal); }
.cbxv-wrap .cbxv-more__b{ display:none; }
.cbxv-wrap .cbxv-more__a{ display:inline; }

/* --- сноска -------------------------------------------------------------- */
.cbxv-wrap .cbxv-note{ margin:15px 0 0; padding:13px 15px; font-size:12.5px;
  line-height:1.6; color:var(--cbx-fog); background:var(--cbx-band);
  border:1px solid var(--cbx-rule); border-radius:10px; }
.cbxv-wrap .cbxv-note b{ color:var(--cbx-slate); }
.cbxv-wrap .cbxv-note a{ color:var(--cbx-royal-deep); }

/* --- строка: широкий контейнер ------------------------------------------- */
/* ⛔⛔ Столбцы считаны, а не подобраны: в колонке статьи 760 px на содержимое строки
   остаётся 726 px, из них жёстких 40+156+182+132 = 510 и 4 зазора по 14 = 56, значит
   на опознание идёт 160 — плитка 156 + зазор 14 + имя 160 = 330 px (пол столбца
   опознания 330). Панели оффера дано 182, а не 165: на 165 значение бонуса вставало
   тремя строками и панель тянула строку до 254 px (замер 25.09.2026). Ставить знаку
   `width:100%` нельзя: столбец 88 давал плитку 76 и знак 60 px при поле 100. */
@container (min-width:700px){
  .cbxv-wrap .cbxv-list>li{
    grid-template-columns:40px 156px minmax(0,1fr) 182px 132px;
    grid-template-areas:"rank logo body offer act" "det det det det det";
    gap:10px 14px; padding:14px 16px; align-items:center; }
  .cbxv-wrap .cbxv-rank{ position:static; gap:3px; justify-self:center; }
  .cbxv-wrap .cbxv-rank__n{ width:32px; height:32px; flex:0 0 32px; font-size:15px;
    box-shadow:none; }
  .cbxv-wrap .cbxv-score{ display:block; }
  .cbxv-wrap .cbxv-logo{ width:156px; height:116px; padding:5px; align-self:center; }
  .cbxv-wrap .cbxv-logo img{ max-width:144px; max-height:104px; }
  .cbxv-wrap .cbxv-facts{ flex-wrap:wrap; overflow:visible; }
  .cbxv-wrap .cbxv-offer{ padding:12px 14px; }
  .cbxv-wrap .cbxv-offer__v{ font-size:17px; line-height:1.25; }
  .cbxv-wrap .cbxv-offer__v span{ font-size:13px; }
  .cbxv-wrap .cbxv-offer__t{ flex-wrap:wrap; overflow:visible; }
  .cbxv-wrap .cbxv-cta{ padding:12px 16px; font-size:15px; }
  .cbxv-wrap .cbxv-terms{ display:block; }
  .cbxv-wrap .cbxv-rev{ display:inline-block; }
  .cbxv-wrap .cbxv-trust{ white-space:normal; overflow:visible; }
  .cbxv-wrap .cbxv-det{ margin-top:2px; padding-top:7px;
    border-top:1px solid var(--cbx-rule); }
}

/* --- состояния: раскрытие и фильтры -------------------------------------- */
#cbxv-more:checked~.cbxv-list>li.cbxv-hid{ display:grid; }
#cbxv-more:checked~.cbxv-more .cbxv-more__a{ display:none; }
#cbxv-more:checked~.cbxv-more .cbxv-more__b{ display:inline; }

/* ⛔ Активный фильтр НЕ раскрывает скрытый хвост: иначе число видимых строк не
   уменьшается, и проверка «фильтры реально режут» справедливо не проходит. */
#cbxv-fl:checked~.cbxv-list>li:not([data-live="1"]),
#cbxv-fc:checked~.cbxv-list>li:not([data-crypto="1"]),
#cbxv-fn:checked~.cbxv-list>li:not([data-new="1"]),
#cbxv-fs:checked~.cbxv-list>li:not([data-spins="1"]),
#cbxv-fb:checked~.cbxv-list>li:not([data-big="1"]),
#cbxv-fg:checked~.cbxv-list>li:not([data-studios="1"]){ display:none; }
#cbxv-fl:checked~.cbxv-bar label[for="cbxv-fl"],
#cbxv-fc:checked~.cbxv-bar label[for="cbxv-fc"],
#cbxv-fn:checked~.cbxv-bar label[for="cbxv-fn"],
#cbxv-fs:checked~.cbxv-bar label[for="cbxv-fs"],
#cbxv-fb:checked~.cbxv-bar label[for="cbxv-fb"],
#cbxv-fg:checked~.cbxv-bar label[for="cbxv-fg"]{ background:var(--cbx-royal);
  border-color:var(--cbx-royal); color:var(--cbx-chalk); }
#cbxv-fl:checked~.cbxv-bar label[for="cbxv-fl"] span,
#cbxv-fc:checked~.cbxv-bar label[for="cbxv-fc"] span,
#cbxv-fn:checked~.cbxv-bar label[for="cbxv-fn"] span,
#cbxv-fs:checked~.cbxv-bar label[for="cbxv-fs"] span,
#cbxv-fb:checked~.cbxv-bar label[for="cbxv-fb"] span,
#cbxv-fg:checked~.cbxv-bar label[for="cbxv-fg"] span{ color:rgba(255,255,255,.82); }
#cbxv-fl:checked~.cbxv-bar label[for="cbxv-fl"]::before,
#cbxv-fc:checked~.cbxv-bar label[for="cbxv-fc"]::before,
#cbxv-fn:checked~.cbxv-bar label[for="cbxv-fn"]::before,
#cbxv-fs:checked~.cbxv-bar label[for="cbxv-fs"]::before,
#cbxv-fb:checked~.cbxv-bar label[for="cbxv-fb"]::before,
#cbxv-fg:checked~.cbxv-bar label[for="cbxv-fg"]::before{ background:var(--cbx-chalk);
  border-color:var(--cbx-chalk); box-shadow:inset 0 0 0 2px var(--cbx-royal); }

/* --- узкое окно ---------------------------------------------------------- */
@media (max-width:860px){
  .cbxv-wrap .cbxv-h{ font-size:22px; }
  .cbxv-wrap .cbxv-name{ font-size:16px; }
}
@media (max-width:430px){
  .cbxv-wrap .cbxv-bar{ padding:12px; }   /* мобильная норма — 12 px, не 10 */
  .cbxv-wrap .cbxv-lb{ font-size:13px; padding:6px 11px; }
  .cbxv-wrap .cbxv-facts li{ font-size:11px; }
}

/* --- изоляция от вёрстки статьи ------------------------------------------ */
/* Витрина внутри `.cbx-prose` не должна наследовать сетку абзацев и обтекание:
   ширина — во всю колонку, поплавки сняты, таблично-сеточные предки
   переводятся в блок, иначе строка съезжает на 178 px вправо. */
/* ⛔⛔ Селектор — ПОТОМОК, а не прямой ребёнок. Витрина лежит внутри донорских
   обёрток (`div.cbx-prose > article > section.entry-content > section.cbxv-wrap`),
   правило с `>` не срабатывало ни разу, и обтекание от фото (`.cbx-shot`,
   float:right 302px) сжимало витрину до 432 px в колонке 760 px. Дальше по цепочке:
   контейнерный запрос (`container-type:inline-size`) остаётся в УЗКОЙ раскладке →
   строка 356 px против нормы 150–290 (R9), плитка знака 76 px → знак 60 px против
   пола 100 px (R15). Один незаработавший селектор — три красных проверки; замер
   `node dis/cbx_probe_row.js` 25.09.2026. */
.cbx-prose .cbxv-wrap,.cbx-sheet .cbxv-wrap{ width:100%; max-width:100%;
  float:none; clear:both; }
.cbx-prose *:has(.cbxv-wrap),.cbx-sheet *:has(.cbxv-wrap){ display:block;
  float:none; width:100%; max-width:100%; }

/* --- номинация донора строкой текста ------------------------------------- */
/* Список казино с кнопками на странице ОДИН — витрина. Номинация донора остаётся
   смыслом: имена в том же порядке, ссылки на наши обзоры, указатель на ранжир. */
.cbx-nom{ margin:22px 0; padding:13px 16px; font-size:15px; line-height:1.55;
  border-left:3px solid var(--cbx-royal,#5b3fd6); border-radius:0 9px 9px 0;
  background:var(--cbx-band,#f2f1f8); color:var(--cbx-slate,#232a33); }
.cbx-nom a{ color:var(--cbx-royal-deep,#3d2a97); font-weight:600; }

/* --- строка ссылок на обзоры (бывшая сетка плиток донора) ----------------- */
.cbx-rev{ margin:22px 0; padding:14px 16px; border:1px solid var(--cbx-rule,#dcd9e8);
  border-radius:11px; background:#fff; }
.cbx-rev__h{ margin:0 0 9px; font-family:var(--cbx-head,inherit); font-weight:700;
  font-size:15px; color:var(--cbx-slate,#232a33); }
.cbx-rev__l{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap;
  gap:7px 9px; }
.cbx-rev__l>li{ margin:0; }
.cbx-rev__l a{ display:inline-block; padding:5px 11px; border-radius:99px; font-size:13px;
  font-weight:600; text-decoration:none; color:var(--cbx-royal-deep,#3d2a97);
  background:var(--cbx-band,#f2f1f8); border:1px solid var(--cbx-rule,#dcd9e8); }
.cbx-rev__l a:hover,.cbx-rev__l a:focus-visible{ color:#fff;
  background:var(--cbx-royal,#5b3fd6); border-color:var(--cbx-royal,#5b3fd6); }

