/* _bundle.css — все компоненты 20-blocks/*. tokens+skins+base грузить ОТДЕЛЬНО до него. */

/* ===== about-mission-block ===== */
/* ============================================================
 * about-mission-block · block.css
 * Скоуплено на .about-mission. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (готовой разметки нет — своя).
 *   House-style: trust-врезки (.methodology / .stat-strip) на наших токенах;
 *   эталон структуры/нейминга — casino-item-card.
 * Премиум: фикс-слоты глифов, табличные цифры, ОДНА CTA, drawer держит карточку
 *   чистой, единые pad/radius/shadow, subtle motion. Один акцент — --brand.
 * Адаптив: 980 / 640. Touch-target ≥ --tap-min. prefers-reduced-motion — из base.
 * ========================================================== */

.about-mission {
  /* фикс-слоты: глиф принципа и мин-ширина слота метрики */
  --am-glyph: 36px;
  --am-stat-min: 120px;

  display: block;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text);
}

/* ---- Шапка: eyebrow + заголовок + лид-обещание ---- */
.about-mission__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.about-mission__eyebrow {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brand);
}
.about-mission__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.about-mission__lede {
  margin: 0;
  max-width: var(--container-prose);
  font-size: var(--t-h4);
  line-height: var(--lh-loose);
  color: var(--text-dim);
}

/* ---- Принципы: глиф в фикс-слоте + название + одна строка ---- */
.about-mission__pillars {
  list-style: none;
  margin: 0 0 var(--s-5);
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-5);
}
.about-mission__pillar {
  display: grid;
  grid-template-columns: var(--am-glyph) minmax(0, 1fr);
  gap: var(--s-3);
  align-items: start;
}
.about-mission__pillar-glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--am-glyph);
  height: var(--am-glyph);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
.about-mission__pillar-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}
.about-mission__pillar-name {
  font-size: var(--t-body);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}
.about-mission__pillar-text {
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- Метрики доверия: равные слоты, хайрлайн-разделители, tabular-nums ---- */
.about-mission__stats {
  margin: 0 0 var(--s-5);
  padding: var(--s-4) 0;
  border-top: var(--hairline);
  border-bottom: var(--hairline);
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(var(--am-stat-min), 1fr);
}
.about-mission__stat {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: 0;
  padding: 0 var(--s-5);
  /* вертикальный волосок-разделитель слева; у первого слота снимается */
  border-left: var(--hairline);
}
.about-mission__stat:first-child {
  padding-left: 0;
  border-left: 0;
}
.about-mission__stat-v {
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 1px;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}
.about-mission__stat-num { letter-spacing: .01em; }
/* единица/суффикс — приглушённая, не спорит с числом */
.about-mission__stat-unit {
  font-family: var(--font-body);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  color: var(--text-faint);
}
.about-mission__stat-k {
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

/* ---- Подвал: ОДНА CTA + drawer независимости ---- */
.about-mission__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
}
.about-mission__cta { flex: 0 0 auto; }
.about-mission__cta-ic {
  display: inline-flex;
  transition: transform var(--dur-quick) var(--ease);
}
.about-mission__cta:hover .about-mission__cta-ic { transform: translateX(2px); }

/* drawer-триггер: нейтральный, чтобы не спорить с CTA за акцент */
.about-mission__disclosure { position: relative; min-width: 0; }
.about-mission__disclosure-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
}
.about-mission__disclosure-btn:hover { color: var(--brand); }
.about-mission__disclosure-chev {
  display: inline-flex;
  transition: transform var(--dur-quick) var(--ease);
}
.about-mission__disclosure-btn[aria-expanded="true"] .about-mission__disclosure-chev { transform: rotate(180deg); }

.about-mission__disclosure-body {
  margin-top: var(--s-2);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.about-mission__disclosure-body[hidden] { display: none; }
.about-mission__disclosure-body p { margin: 0 0 var(--s-2); }
.about-mission__disclosure-body p:last-child { margin-bottom: 0; }

/* ============================================================
 * Модификатор: компактный (сайдбар/врезка) — один столбец принципов,
 * без метрик-ряда, меньше pad/gap.
 * ========================================================== */
.about-mission--compact { padding: var(--s-5); }
.about-mission--compact .about-mission__title { font-size: var(--t-h3); }
.about-mission--compact .about-mission__lede { font-size: var(--t-small); line-height: var(--lh-base); }
.about-mission--compact .about-mission__pillars {
  grid-template-columns: 1fr;
  gap: var(--s-4);
  margin-bottom: var(--s-4);
}
.about-mission--compact .about-mission__foot { justify-content: stretch; }
.about-mission--compact .about-mission__cta { flex: 1 1 auto; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .about-mission { padding: var(--s-5); }
  /* принципы в 1 колонку — длинные строки читаются лучше, чем сжатые столбцы */
  .about-mission__pillars { grid-template-columns: 1fr; gap: var(--s-4); }
  /* метрики: 3 равных слота не помещаются — переносим в сетку с хайрлайнами */
  .about-mission__stats {
    grid-auto-flow: row;
    grid-template-columns: 1fr 1fr 1fr;
  }
}
@media (max-width: 640px) {
  .about-mission { padding: var(--s-4); }
  .about-mission__title { font-size: var(--t-h3); }
  .about-mission__lede { font-size: var(--t-small); line-height: var(--lh-base); }
  /* метрики — один столбец: разделитель становится верхним волоском, метка слева */
  .about-mission__stats {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .about-mission__stat {
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--s-2);
    padding: var(--s-3) 0;
    border-left: 0;
    border-top: var(--hairline);
  }
  .about-mission__stat:first-child { border-top: 0; padding-top: 0; }
  .about-mission__stat-k { order: -1; }   /* метка слева, значение справа */
  .about-mission__foot { flex-direction: column; align-items: stretch; }
  .about-mission__cta { width: 100%; }
  .about-mission__disclosure-btn { justify-content: flex-start; }
}

/* ===== activity-feed-live ===== */
/* ============================================================
 * activity-feed-live · block.css
 * Скоуплено на .activity-feed-live / .afl. Только токены (10-tokens/).
 * Конвенция: html-base + feed-data в data-feed/aria-live. Адаптив: 640.
 * Один акцент = --brand; success/info — тип события, по смыслу.
 * ========================================================== */

.activity-feed-live { display: block; }

/* ---- Карточка ---- */
.afl {
  display: flex;
  flex-direction: column;
  max-width: 480px;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}

/* ---- 1 · Голова ---- */
.afl__head {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  padding: var(--s-4) var(--s-5);
  border-bottom: var(--hairline);
}
.afl__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4); font-weight: var(--fw-bold);
  color: var(--text);
}
.afl__live {
  display: inline-flex; align-items: center; gap: var(--s-1);
  flex: 0 0 auto;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .06em; text-transform: uppercase;
  color: var(--danger); background: var(--danger-soft);
  border-radius: var(--r-pill);
}
.afl__live-dot {
  width: 6px; height: 6px; border-radius: var(--r-pill);
  background: var(--danger);
  animation: afl-blink 1.6s var(--ease) infinite;
}
@keyframes afl-blink { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }
@media (prefers-reduced-motion: reduce) { .afl__live-dot { animation: none; } }

/* ---- 2 · Лента ---- */
.afl__list {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column;
}
.afl__row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-areas: "type who amount" "type who time";
  align-items: center;
  gap: 0 var(--s-3);
  padding: var(--s-3) var(--s-5);
  border-bottom: var(--hairline);
  animation: afl-in var(--dur-base) var(--ease-out) both;
}
.afl__row:last-child { border-bottom: none; }
@keyframes afl-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) { .afl__row { animation: none; } }

/* Тип события — bespoke иконка в круглом слоте (фикс-слот) */
.afl__type {
  grid-area: type;
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; flex: 0 0 auto;
  border-radius: var(--r-pill);
  color: var(--brand);
  background: var(--brand-soft);
}
.afl__row--win     .afl__type { color: var(--success); background: var(--success-soft); }
.afl__row--payout  .afl__type { color: var(--info);    background: var(--info-soft); }
.afl__row--cashout .afl__type { color: var(--brand);   background: var(--brand-soft); }

/* Кто + что */
.afl__who {
  grid-area: who;
  display: flex; flex-direction: column; gap: 1px; min-width: 0;
}
.afl__user {
  font-weight: var(--fw-semi); color: var(--text);
  font-variant-numeric: tabular-nums;
}
.afl__meta {
  font-size: var(--t-small); color: var(--text-mute);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.afl__game { color: var(--text-dim); font-weight: var(--fw-medium); }

/* Сумма — выровнена вправо, tabular */
.afl__amount {
  grid-area: amount;
  justify-self: end;
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.afl__row--win .afl__amount { color: var(--success); }

/* Время */
.afl__time {
  grid-area: time;
  justify-self: end;
  font-size: var(--t-tiny); color: var(--text-faint);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ---- 3 · Фут ---- */
.afl__foot {
  padding: var(--s-3) var(--s-5);
  border-top: var(--hairline);
  background: var(--bg-2);
}
.afl__note {
  margin: 0;
  font-size: var(--t-tiny); color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .afl { max-width: none; }
  .afl__head { padding: var(--s-3) var(--s-4); }
  .afl__row { padding: var(--s-3) var(--s-4); gap: 0 var(--s-2); }
  .afl__type { width: 32px; height: 32px; }
  .afl__foot { padding: var(--s-2) var(--s-4); }
}

/* ===== add-to-compare ===== */
/* ============================================================
 * add-to-compare · block.css
 * Скоуплено на .add-to-compare. Только токены (10-tokens/).
 * Назначение: компактный контрол «в сравнение» — чекбокс/кнопка-тоггл,
 * который помечает оператора для head-to-head (comparison-table / inline-compare).
 * Дефолт = нативный <input type=checkbox> + кастомный SVG-бокс (работает БЕЗ JS,
 * состояние держит сам инпут). Варианты: --button (button[aria-pressed]),
 * --icon (квадратный иконка-тоггл для угла карточки), --solid (залит брендом).
 * Один акцент (--brand); --success — НЕ используется (нет смысловой семантики);
 * галочка/состояние дублируются формой+текстом, не только цветом. tabular-nums на счётчике.
 * Конвенция-источник: ★research / premium-планка + _CONTRACT (эталон casino-item-card).
 * Адаптив: 640 (тап-таргеты, ширина). Motion: subtle (рисование галочки, tap).
 * ========================================================== */

.add-to-compare {
  /* фикс-геометрия бокса/иконки — единый ритм со всеми инстансами */
  --atc-box: 20px;            /* сторона чек-бокса */
  --atc-fill: var(--surface); /* фон контрола; в --solid → --brand-soft */

  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  position: relative;
  min-height: var(--tap-min);
  padding: var(--s-1) var(--s-3);
  margin: 0;
  background: var(--atc-fill);
  border: var(--hairline);
  border-radius: var(--r-pill);
  cursor: pointer;
  user-select: none;
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  -webkit-tap-highlight-color: transparent;
  transition:
    background var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease),
    color var(--dur-quick) var(--ease),
    transform var(--dur-quick) var(--ease);
}
.add-to-compare:hover {
  border-color: color-mix(in srgb, var(--brand) 55%, var(--rule));
  color: var(--text);
}
.add-to-compare:active { transform: translateY(1px); }

/* ---- Нативный инпут: визуально скрыт, но в потоке для фокуса/клавиатуры ---- */
.add-to-compare__input {
  position: absolute;
  width: 1px; height: 1px;
  margin: 0; padding: 0;
  opacity: 0;
  pointer-events: none;
}

/* Фокус-кольцо переносим на корень (инпут визуально скрыт) — base :focus-visible не отключаем */
.add-to-compare__input:focus-visible + .add-to-compare__box {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

/* ---- Кастомный бокс с галочкой (bespoke SVG, не icon-font) ---- */
.add-to-compare__box {
  flex: 0 0 auto;
  position: relative;
  display: inline-grid;
  place-items: center;
  width: var(--atc-box);
  height: var(--atc-box);
  background: var(--surface);
  border: 1.5px solid var(--rule-strong);
  border-radius: var(--r-soft);
  transition:
    background var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease);
}
.add-to-compare:hover .add-to-compare__box { border-color: var(--brand); }

.add-to-compare__check {
  width: 14px; height: 14px;
  color: var(--on-brand);
}
/* Рисование галочки штрихом (subtle motion) */
.add-to-compare__check path {
  stroke-dasharray: 18;
  stroke-dashoffset: 18;
  transition: stroke-dashoffset var(--dur-base) var(--ease-out);
}

/* ---- Состояние «выбрано» (нативно через :checked) ---- */
.add-to-compare__input:checked + .add-to-compare__box {
  background: var(--brand);
  border-color: var(--brand);
}
.add-to-compare__input:checked + .add-to-compare__box .add-to-compare__check path {
  stroke-dashoffset: 0;
}
/* Подсветка всей пилюли в выбранном состоянии (не только бокс/цвет — ещё рамка+фон) */
.add-to-compare:has(.add-to-compare__input:checked) {
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 45%, transparent);
  color: var(--brand);
}

/* ---- Лейбл-текст: «В сравнение» ↔ «В сравнении» через два узла ---- */
.add-to-compare__label { white-space: nowrap; }
.add-to-compare__label--on { display: none; }
.add-to-compare__input:checked ~ .add-to-compare__label .add-to-compare__label--off { display: none; }
.add-to-compare__input:checked ~ .add-to-compare__label .add-to-compare__label--on { display: inline; }

/* ============================================================
 * Вариант --button: button[aria-pressed] (нужен JS-тоггл, см. block.md)
 * Состояние держит aria-pressed (не :checked).
 * ========================================================== */
.add-to-compare--button {
  /* тот же визуал пилюли; бокс/галочка переключаются по [aria-pressed] */
  -webkit-appearance: none;
  appearance: none;
}
.add-to-compare--button .add-to-compare__check path {
  stroke-dasharray: 18;
  stroke-dashoffset: 18;
  transition: stroke-dashoffset var(--dur-base) var(--ease-out);
}
.add-to-compare--button:hover .add-to-compare__box { border-color: var(--brand); }
.add-to-compare--button[aria-pressed="true"] .add-to-compare__box {
  background: var(--brand);
  border-color: var(--brand);
}
.add-to-compare--button[aria-pressed="true"] .add-to-compare__check path { stroke-dashoffset: 0; }
.add-to-compare--button[aria-pressed="true"] {
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 45%, transparent);
  color: var(--brand);
}
.add-to-compare--button[aria-pressed="true"] .add-to-compare__label--off { display: none; }
.add-to-compare--button .add-to-compare__label--on { display: none; }
.add-to-compare--button[aria-pressed="true"] .add-to-compare__label--on { display: inline; }

/* ============================================================
 * Вариант --icon: квадратный иконка-тоггл (для угла карточки)
 * Текст — в .visually-hidden; видимая часть = бокс «+»→«✓».
 * ========================================================== */
.add-to-compare--icon {
  gap: 0;
  padding: 0;
  width: var(--tap-min);
  height: var(--tap-min);
  min-height: var(--tap-min);
  justify-content: center;
  border-radius: var(--r-md);
}
.add-to-compare--icon .add-to-compare__box {
  --atc-box: 22px;
  border-style: solid;
}
/* иконка «плюс» в невыбранном состоянии (рисуется тем же боксом) */
.add-to-compare--icon .add-to-compare__plus {
  position: absolute;
  width: 12px; height: 12px;
  color: var(--text-mute);
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.add-to-compare--icon:hover .add-to-compare__plus { color: var(--brand); }
.add-to-compare--icon .add-to-compare__check { position: absolute; opacity: 0; transform: scale(.6); transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease); }
.add-to-compare--icon .add-to-compare__input:checked + .add-to-compare__box .add-to-compare__plus,
.add-to-compare--icon.add-to-compare--button[aria-pressed="true"] .add-to-compare__plus { opacity: 0; transform: scale(.6) rotate(90deg); }
.add-to-compare--icon .add-to-compare__input:checked + .add-to-compare__box .add-to-compare__check,
.add-to-compare--icon.add-to-compare--button[aria-pressed="true"] .add-to-compare__box .add-to-compare__check { opacity: 1; transform: scale(1); }

/* ============================================================
 * Вариант --solid: залит брендовым тоном (для hero/промо-зон)
 * ========================================================== */
.add-to-compare--solid {
  --atc-fill: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 30%, transparent);
  color: var(--brand);
}
.add-to-compare--solid .add-to-compare__box { border-color: color-mix(in srgb, var(--brand) 55%, var(--rule-strong)); }

/* ============================================================
 * Счётчик «в сравнении: N» (опц. живой индикатор, обновляется JS)
 * Самостоятельный inline-элемент — ставится рядом с группой контролов.
 * ========================================================== */
.add-to-compare-count {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-small);
  color: var(--text-mute);
}
.add-to-compare-count__num {
  display: inline-grid;
  place-items: center;
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
}
/* Пусто (N=0) — приглушённый нейтральный бейдж */
.add-to-compare-count[data-count="0"] .add-to-compare-count__num {
  color: var(--text-mute);
  background: var(--bg-3);
}

/* ============================================================
 * Адаптив
 * ========================================================== */
@media (max-width: 640px) {
  .add-to-compare { padding: var(--s-2) var(--s-3); }
  /* в плотных листингах контрол можно растянуть на ширину строки */
  .add-to-compare--block { display: flex; width: 100%; justify-content: center; }
}

/* ============================================================
 * Reduced motion: без анимации рисования галочки/иконок
 * (длительности уже обнулены из base; явно гасим transition на штрихе)
 * ========================================================== */
@media (prefers-reduced-motion: reduce) {
  .add-to-compare__check path { transition: none; }
  .add-to-compare--icon .add-to-compare__plus,
  .add-to-compare--icon .add-to-compare__check { transition: none; }
}

/* ===== affiliate-disclosure ===== */
/* ============================================================
 * affiliate-disclosure · block.css
 * Скоуплено на .affiliate-disclosure. Только токены (10-tokens/).
 * Сдержанная плашка раскрытия: --bg-2 / --text-mute, один акцент (--brand).
 * Конвенция разметки/JS: html-base (data-* + прогрессивный drawer). Адаптив: 640.
 * ========================================================== */

.affiliate-disclosure {
  display: block;
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  color: var(--text-mute);
  font-family: var(--font-body);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
}

/* ---- Полоса (иконка · текст · тоггл) ---- */
.affiliate-disclosure__bar {
  display: flex;
  align-items: baseline;
  gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
}

.affiliate-disclosure__icon {
  flex: 0 0 auto;
  align-self: flex-start;
  display: inline-flex;
  margin-top: 1px;
  color: var(--text-faint);
}

.affiliate-disclosure__text {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  color: var(--text-mute);
}

.affiliate-disclosure__accent { color: var(--text-dim); font-weight: var(--fw-medium); }

.affiliate-disclosure__link {
  color: var(--brand);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.affiliate-disclosure__link:hover { color: var(--brand-2); }

/* ---- Тоггл «Подробнее» ---- */
.affiliate-disclosure__toggle {
  flex: 0 0 auto;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  margin: calc(-1 * var(--s-2)) 0;
  padding: var(--s-1) var(--s-2);
  font: inherit;
  font-size: var(--t-tiny);
  letter-spacing: .02em;
  color: var(--text-dim);
  background: none;
  border: 0;
  border-radius: var(--r-soft);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.affiliate-disclosure__toggle:hover { color: var(--brand); }

.affiliate-disclosure__chev {
  transition: transform var(--dur-base) var(--ease);
}
.affiliate-disclosure__toggle[aria-expanded="true"] .affiliate-disclosure__chev { transform: rotate(180deg); }

/* ---- Drawer условий ---- */
.affiliate-disclosure__drawer {
  padding: var(--s-3) var(--s-4) var(--s-4);
  border-top: var(--hairline);
  color: var(--text-mute);
}
.affiliate-disclosure__drawer[hidden] { display: none; }

.affiliate-disclosure__p {
  margin: 0 0 var(--s-2);
  color: var(--text-mute);
}
.affiliate-disclosure__p:last-of-type { margin-bottom: 0; }

.affiliate-disclosure__meta {
  margin: var(--s-3) 0 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}

.affiliate-disclosure__sublink,
.affiliate-disclosure__meta a {
  color: var(--text-mute);
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color var(--dur-quick) var(--ease);
}
.affiliate-disclosure__sublink:hover { color: var(--brand); }

/* ============ Вариант: инлайн-сноска ============ */
.affiliate-disclosure--inline {
  background: none;
  border: 0;
  border-radius: 0;
  font-size: var(--t-tiny);
}
.affiliate-disclosure--inline .affiliate-disclosure__bar {
  padding: var(--s-2) 0;
  gap: var(--s-2);
}
.affiliate-disclosure--inline .affiliate-disclosure__text { color: var(--text-faint); }
.affiliate-disclosure--inline .affiliate-disclosure__accent { color: var(--text-mute); }

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .affiliate-disclosure__bar {
    flex-wrap: wrap;
    padding: var(--s-3);
    row-gap: var(--s-2);
  }
  .affiliate-disclosure__text { flex-basis: 100%; order: 2; }
  .affiliate-disclosure__icon { order: 1; }
  .affiliate-disclosure__toggle { order: 3; margin-inline-start: auto; }
}

/* ===== age-gate ===== */
/* ============================================================
 * age-gate · block.css
 * Скоуплено на .age-gate (= id). Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (data-* тексты, bespoke inline SVG,
 *   прогрессивный JS по data-action). Эталон нейминга/слотов: casino-item-card.
 * Назначение: 18+ гейт на входе — модалка (A) + sticky-баннер (B).
 * Адаптив: 980 / 640.
 * ========================================================== */

.age-gate { --ag-mark: 64px; }

/* ============================================================
 * A · МОДАЛКА (overlay, блокирует вход до подтверждения)
 * ========================================================== */
.age-gate__overlay {
  position: fixed; inset: 0; z-index: var(--z-modal);
  display: grid; place-items: center;
  padding: var(--gutter);
  background: color-mix(in srgb, var(--text) 72%, transparent);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  animation: ag-fade var(--dur-base) var(--ease);
}
.age-gate__overlay[hidden] { display: none; }

.age-gate__dialog {
  width: 100%; max-width: 460px;
  display: flex; flex-direction: column; gap: var(--s-5);
  padding: var(--s-7) var(--s-6) var(--s-6);
  text-align: center;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-lift);
  animation: ag-rise var(--dur-base) var(--ease-out);
}

/* ---- Знак возрастного ценза 18+ ---- */
.age-gate__mark {
  align-self: center;
  display: inline-flex; align-items: center; justify-content: center;
  width: var(--ag-mark); height: var(--ag-mark);
  font-family: var(--font-display);
  font-size: var(--t-h3); font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums; letter-spacing: -0.02em;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}

/* ---- Текстовая часть ---- */
.age-gate__body { display: flex; flex-direction: column; gap: var(--s-2); }
.age-gate__eyebrow { /* .eyebrow из base + центрирование */ }
.age-gate__title { font-family: var(--font-display); font-size: var(--t-h2); line-height: var(--lh-snug); }
.age-gate__text { color: var(--text-mute); line-height: var(--lh-base); }
.age-gate__text strong { color: var(--text); font-weight: var(--fw-semi); }

/* ---- Действия ---- */
.age-gate__actions { display: flex; flex-direction: column; gap: var(--s-3); margin-top: var(--s-1); }
.age-gate__actions .btn { width: 100%; }

/* ---- Подвал: правовая сноска + ссылка на ответственную игру ---- */
.age-gate__legal {
  margin: 0; padding-top: var(--s-4);
  border-top: var(--hairline);
  font-size: var(--t-tiny); line-height: var(--lh-snug);
  color: var(--text-faint);
}
.age-gate__legal a { color: var(--text-mute); text-underline-offset: 2px; }
.age-gate__legal a:hover { color: var(--brand); }

/* ---- Экран отказа (после «Мне нет 18») ---- */
.age-gate__deny { display: flex; flex-direction: column; gap: var(--s-4); align-items: center; }
.age-gate__deny[hidden] { display: none; }
.age-gate__deny-mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: var(--ag-mark); height: var(--ag-mark);
  color: var(--danger); background: var(--danger-soft);
  border-radius: var(--r-pill);
}
.age-gate__deny .age-gate__title { color: var(--text); }
/* когда показан экран отказа — прячем основной интерактив */
.age-gate__dialog.is-denied > .age-gate__mark,
.age-gate__dialog.is-denied > .age-gate__body,
.age-gate__dialog.is-denied > .age-gate__actions,
.age-gate__dialog.is-denied > .age-gate__legal { display: none; }

/* ============================================================
 * B · STICKY-БАННЕР (менее навязчивый, низ экрана)
 * ========================================================== */
.age-gate--banner {
  position: fixed; inset-inline: 0; bottom: 0; z-index: var(--z-sticky);
  padding: var(--s-4) var(--gutter);
  background: var(--surface);
  border-top: var(--hairline);
  box-shadow: var(--shadow-pop);
  animation: ag-slide var(--dur-base) var(--ease-out);
}
.age-gate--banner[hidden] { display: none; }
.age-gate__bar {
  width: 100%; max-width: var(--container); margin-inline: auto;
  display: grid;
  grid-template-columns: var(--ag-mark) minmax(0, 1fr) auto;
  align-items: center; gap: var(--s-5);
}
.age-gate__bar .age-gate__mark { align-self: center; }
.age-gate__bar-body { text-align: left; min-width: 0; }
.age-gate__bar-title { font-family: var(--font-display); font-size: var(--t-h4); font-weight: var(--fw-bold); line-height: var(--lh-snug); }
.age-gate__bar-text { margin-top: 2px; font-size: var(--t-small); color: var(--text-mute); line-height: var(--lh-snug); }
.age-gate__bar-text a { color: var(--text-mute); text-underline-offset: 2px; }
.age-gate__bar-text a:hover { color: var(--brand); }
.age-gate__bar-actions { display: flex; align-items: center; gap: var(--s-3); flex: 0 0 auto; }

/* ============================================================
 * Анимации (функциональные; обнуляются в prefers-reduced-motion
 * через :root --dur-* → 0ms, наследуется из tokens.css)
 * ========================================================== */
@keyframes ag-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes ag-rise { from { opacity: 0; transform: translateY(12px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes ag-slide { from { transform: translateY(100%); } to { transform: none; } }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .age-gate__bar { grid-template-columns: var(--ag-mark) 1fr; grid-template-areas: "mark body" "act act"; gap: var(--s-4); }
  .age-gate__bar .age-gate__mark { grid-area: mark; }
  .age-gate__bar-body { grid-area: body; }
  .age-gate__bar-actions { grid-area: act; }
  .age-gate__bar-actions .btn { flex: 1 1 0; }
}
@media (max-width: 640px) {
  .age-gate { --ag-mark: 56px; }
  .age-gate__dialog { padding: var(--s-6) var(--s-5) var(--s-5); border-radius: var(--r-lg); }
  .age-gate__bar { grid-template-columns: 1fr; grid-template-areas: "mark" "body" "act"; justify-items: center; text-align: center; }
  .age-gate__bar-body { text-align: center; }
  .age-gate__bar-actions { width: 100%; flex-direction: column; }
  .age-gate__bar-actions .btn { width: 100%; }
}

/* ===== archive-title-bar ===== */
/* ============================================================
 * archive-title-bar · block.css
 * Скоуплено на .archive-title-bar. Только токены (10-tokens/).
 * Конвенция разметки: ★research / premium-планка (готовой разметки нет).
 * Один акцент — --brand (stamp-иконка + активный чип). Счётчик записей —
 * tabular-nums. Чипы — touch-target ≥ --tap-min. JS не требуется.
 * Адаптив: 980 / 640.
 * ========================================================== */

.archive-title-bar {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  /* Узкая шапка: дисциплинированный вертикальный ритм, без подложки —
     садится на любую секцию. Низ отбит тонкой линией как «крышка архива». */
  padding-block-end: var(--s-5);
  border-bottom: var(--hairline);
}

/* ---- Stamp: мета-метка категории (иконка + лейбл + счётчик) ---- */
.archive-title-bar__stamp {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  align-self: flex-start;
  margin: 0;
  /* Лёгкая пилюля-подложка в акценте — единственный цветной регистр шапки. */
  padding: var(--s-1) var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.archive-title-bar__stamp-ic {
  display: inline-flex;
  flex: 0 0 auto;
}
.archive-title-bar__stamp-ic svg { display: block; }
.archive-title-bar__stamp-label {
  /* лейбл наследует цвет/кейс пилюли */
}
/* Счётчик отбит вертикальным волоском, число — табличными цифрами */
.archive-title-bar__stamp-count {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
  padding-inline-start: var(--s-2);
  border-inline-start: 1px solid color-mix(in srgb, var(--brand) 30%, transparent);
}
.archive-title-bar__stamp-num {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  font-weight: var(--fw-bold);
}
.archive-title-bar__stamp-unit {
  color: color-mix(in srgb, var(--brand) 72%, var(--text-mute));
  font-weight: var(--fw-medium);
}

/* ---- Title: главный заголовок архива ---- */
.archive-title-bar__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.015em;
  color: var(--text);
}

/* ---- Lede: короткое описание (ограничиваем меру строки) ---- */
.archive-title-bar__lede {
  margin: 0;
  max-width: var(--container-prose);
}

/* ---- Index: ряд чипов-переходов (A–Z / под-категории) ---- */
.archive-title-bar__index {
  margin-top: var(--s-1);
}
.archive-title-bar__chips {
  list-style: none;
  margin: 0;
  padding: 0;
  /* .cluster уже даёт flex-wrap + gap; обнуляем ul-отступ от base.css */
}
.archive-title-bar__chips > li { display: inline-flex; }

.archive-title-bar__chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--tap-min);
  min-width: var(--tap-min);
  padding: var(--s-1) var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  line-height: 1;
  color: var(--text-dim);
  text-decoration: none;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  font-variant-numeric: tabular-nums;
  transition:
    border-color var(--dur-quick) var(--ease),
    background var(--dur-quick) var(--ease),
    color var(--dur-quick) var(--ease);
}
.archive-title-bar__chip:hover {
  border-color: var(--brand);
  color: var(--brand);
}

/* Текущий срез архива: залит акцентом (состояние не только цветом —
   несёт aria-current="true" в разметке + плотный фон/контраст). */
.archive-title-bar__chip.is-current,
.archive-title-bar__chip[aria-current="true"] {
  color: var(--on-brand);
  background: var(--brand);
  border-color: var(--brand);
}
.archive-title-bar__chip.is-current:hover,
.archive-title-bar__chip[aria-current="true"]:hover {
  color: var(--on-brand);
  background: color-mix(in srgb, var(--brand) 88%, #000);
}

/* ============ Вариант: --compact (тоньше ритм, мета-ряд плотнее) ============ */
.archive-title-bar--compact {
  gap: var(--s-2);
  padding-block-end: var(--s-4);
}
.archive-title-bar--compact .archive-title-bar__title {
  font-size: var(--t-h2);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
}
.archive-title-bar--compact .archive-title-bar__lede {
  font-size: var(--t-body);
  line-height: var(--lh-base);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .archive-title-bar { gap: var(--s-2); }
}
@media (max-width: 640px) {
  .archive-title-bar {
    padding-block-end: var(--s-4);
  }
  /* На узком экране stamp может переноситься — снимаем nowrap,
     чтобы счётчик не уезжал за край. */
  .archive-title-bar__stamp {
    white-space: normal;
    flex-wrap: wrap;
    row-gap: var(--s-1);
  }
  /* Индекс остаётся в один скролл-ряд: на телефоне A–Z удобнее
     листать горизонтально, чем переносить в несколько строк. */
  .archive-title-bar__chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    /* плавный край без обрезки фокус-кольца у крайних чипов */
    padding-block: var(--s-1);
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .archive-title-bar__chips::-webkit-scrollbar { display: none; }
  .archive-title-bar__chips > li { flex: 0 0 auto; }
}

/* ===== ask-the-experts-prompt ===== */
/* ============================================================
 * ask-the-experts-prompt · block.css
 * Скоуплено на .ask-the-experts-prompt. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка),
 * ориентир newsletter / contact-cta-block (форма-панель) + единый surface/radius/shadow.
 * Один акцент --brand (submit + аватар-кольцо + чип-hover + фокус-ринг textarea).
 * ОДНА основная CTA (submit); чипы — вспомогательные (нейтраль до hover). Числа — tabular-nums.
 * Форма нативная — без JS работает. Адаптив: 640. Reduced-motion гасит transition.
 * ========================================================== */

.ask-the-experts-prompt { display: block; }

.ate-panel {
  padding: var(--s-6) var(--s-7);
  /* .surface даёт surface/hairline/r-lg/shadow-card */
}

/* ---- Мини-профиль эксперта (trust) ---- */
.ate-expert {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  padding-bottom: var(--s-4);
  margin-bottom: var(--s-4);
  border-bottom: var(--hairline);
}
.ate-expert__avatar {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  color: var(--brand);
  background: var(--brand-soft);
  border: 1px solid color-mix(in srgb, var(--brand) 30%, transparent);
  border-radius: var(--r-pill);
}
.ate-expert__id { min-width: 0; }
.ate-expert__name {
  margin: 0;
  font-weight: var(--fw-semi);
  color: var(--text);
  line-height: var(--lh-snug);
}
.ate-expert__meta {
  margin: 2px 0 0;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-tiny);
  color: var(--text-mute);
}
.ate-expert__meta-ic { flex: 0 0 auto; color: var(--success); }
.ate-expert__num { font-variant-numeric: tabular-nums; }

/* ---- Заголовок ---- */
.ate-panel__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.ate-panel__lede { margin: var(--s-2) 0 0; }

/* ============================================================
 * Форма
 * ========================================================== */
.ate-form { margin-top: var(--s-5); }
.ate-form__label {
  display: block;
  margin-bottom: var(--s-2);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
}
.ate-form__field { position: relative; }
.ate-form__input {
  width: 100%;
  min-height: calc(var(--tap-min) * 2);
  padding: var(--s-3) var(--s-4);
  font-family: var(--font-body);
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-md);
  resize: vertical;
  transition: border-color var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease);
}
.ate-form__input::placeholder { color: var(--text-faint); }
.ate-form__input:hover { border-color: var(--brand); }
.ate-form__input:focus-visible {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-soft);
}

/* ---- Чип-подсказки ---- */
.ate-form__suggests {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2);
  margin-top: var(--s-3);
}
.ate-form__suggests-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.ate-form__chip {
  min-height: 34px;
  padding: 0 var(--s-3);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: border-color var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.ate-form__chip:hover,
.ate-form__chip:focus-visible {
  border-color: var(--brand);
  color: var(--brand);
  background: var(--brand-soft);
}

/* ---- Действия: ОДНА primary + privacy-нота ---- */
.ate-form__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-3) var(--s-4);
  margin-top: var(--s-5);
}
.ate-form__submit-ic { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease-out); }
.ate-form__submit:hover .ate-form__submit-ic,
.ate-form__submit:focus-visible .ate-form__submit-ic { transform: translate(2px, -2px); }
.ate-form__privacy {
  flex: 1 1 220px;
  margin: 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .ate-panel { padding: var(--s-5); }
  .ate-panel__title { font-size: var(--t-h3); }
  .ate-form__actions { flex-direction: column; align-items: stretch; }
  .ate-form__submit { width: 100%; }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .ate-form__input,
  .ate-form__chip,
  .ate-form__submit-ic { transition: none; }
}

/* ===== audit-trail ===== */
/* ============================================================
 * audit-trail · block.css
 * Скоуплено на .audit-trail. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   вертикальный «гроссбух проверок» в фикс-слотах (колонка иконки-узла,
 *   рельс последовательности), хайрлайн-разделители, tabular-nums,
 *   дисциплина нейтралей. Рельс-коннектор и счётчик-логика — из howto-steps
 *   / timeline (::after-рельс). Drawer деталей (метод/параметры) — как
 *   rating-ledger. Хэш-чип c copy-on-click — как промокод casino-item-card.
 * Один акцент — --brand (заголовок/итог/CTA); статус шага --success/--warning/
 *   --danger/--info — ТОЛЬКО по смыслу (исход проверки). Состояние — не только
 *   цветом: иконка + текстовый статус-пилл дублируют исход.
 * Эталон нейминга/слотов/CSS-counter позиции — casino-item-card.
 * Адаптив: 980 / 640. touch ≥ --tap-min. Motion функц. (наследует reduced-motion).
 * ========================================================== */

.audit-trail {
  /* фикс-слоты: узел-иконка проверки, толщина рельса, колонка узла (узел + воздух) */
  --at-node: 40px;
  --at-rail: 2px;
  --at-node-col: var(--at-node);

  display: flow-root;
  color: var(--text);
}

/* ---- Шапка блока: подпись-источник + бейдж «проверено/обновлено» ---- */
.audit-trail__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-5);
  flex-wrap: wrap;
}
.audit-trail__caption {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.audit-trail__verified {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.audit-trail__verified-ic { display: inline-flex; }

/* ---- Список шагов аудита (вертикальный, нумерация — CSS-counter) ---- */
.audit-trail__list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: at;
  display: flex;
  flex-direction: column;
}

/* ---- Шаг проверки: грид «узел+рельс | карточка» ---- */
.audit-trail__step {
  counter-increment: at;
  position: relative;
  display: grid;
  grid-template-columns: var(--at-node-col) minmax(0, 1fr);
  grid-template-areas: "node card";
  column-gap: var(--s-5);
  align-items: start;
  padding-bottom: var(--s-5);
}
.audit-trail__step:last-child { padding-bottom: 0; }

/* Вертикальный рельс — функциональный индикатор последовательности проверок.
   Тянется от центра узла до следующего; у последнего шага обрезан. */
.audit-trail__step:not(:last-child)::after {
  content: "";
  position: absolute;
  top: var(--at-node);
  left: calc(var(--at-node-col) / 2);
  width: var(--at-rail);
  height: calc(100% - var(--at-node) + var(--s-5));
  background: var(--rule);
  transform: translateX(-50%);
}

/* ---- 1 · Узел-иконка проверки (на рельсе) ---- */
.audit-trail__node {
  grid-area: node;
  position: relative;
  z-index: var(--z-base);
  width: var(--at-node);
  height: var(--at-node);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-mute);
  background: var(--surface);
  border: var(--at-rail) solid var(--rule-strong);
  border-radius: var(--r-pill);
  box-shadow: 0 0 0 var(--s-1) var(--bg);
}
.audit-trail__node svg { width: 18px; height: 18px; }

/* Исход проверки задаётся ТОЛЬКО по смыслу (заливка узла) — не для декора:
   pass=пройдено, warn=замечание, fail=провал, pending=в процессе, info=справка. */
.audit-trail__step--pass    .audit-trail__node { color: var(--on-brand); background: var(--success); border-color: var(--success); }
.audit-trail__step--warn    .audit-trail__node { color: var(--on-brand); background: var(--warning); border-color: var(--warning); }
.audit-trail__step--fail    .audit-trail__node { color: var(--on-brand); background: var(--danger);  border-color: var(--danger); }
.audit-trail__step--info    .audit-trail__node { color: var(--on-brand); background: var(--info);    border-color: var(--info); }
.audit-trail__step--pending .audit-trail__node { color: var(--text-mute); background: var(--bg-2);   border-color: var(--rule-strong); border-style: dashed; }

/* ---- 2 · Карточка проверки ---- */
.audit-trail__card {
  grid-area: card;
  min-width: 0;
  padding: var(--s-4) var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.audit-trail__card:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }

/* Шапка карточки: № + название проверки слева, статус-пилл справа */
.audit-trail__card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  flex-wrap: wrap;
}
.audit-trail__heading { display: flex; align-items: baseline; gap: var(--s-2); min-width: 0; }
.audit-trail__index {
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.audit-trail__index::before { content: counter(at, decimal-leading-zero); }
.audit-trail__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Статус-пилл: исход дублируется ТЕКСТОМ + точкой, не только цветом */
.audit-trail__status {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.audit-trail__status-dot {
  width: 6px;
  height: 6px;
  flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: var(--text-faint);
}
.audit-trail__step--pass    .audit-trail__status { color: var(--success); background: var(--success-soft); border-color: transparent; }
.audit-trail__step--pass    .audit-trail__status-dot { background: var(--success); }
.audit-trail__step--warn    .audit-trail__status { color: var(--warning); background: var(--warning-soft); border-color: transparent; }
.audit-trail__step--warn    .audit-trail__status-dot { background: var(--warning); }
.audit-trail__step--fail    .audit-trail__status { color: var(--danger);  background: var(--danger-soft);  border-color: transparent; }
.audit-trail__step--fail    .audit-trail__status-dot { background: var(--danger); }
.audit-trail__step--info    .audit-trail__status { color: var(--info);    background: var(--info-soft);    border-color: transparent; }
.audit-trail__step--info    .audit-trail__status-dot { background: var(--info); }
.audit-trail__step--pending .audit-trail__status-dot { background: var(--text-faint); }

.audit-trail__text {
  margin: var(--s-2) 0 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.audit-trail__num { font-variant-numeric: tabular-nums; }

/* ---- 3 · Мета-полоса значений проверки (фикс-слоты, tabular-nums) ---- */
.audit-trail__metrics {
  list-style: none;
  margin: var(--s-3) 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2) var(--s-5);
}
.audit-trail__metric { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.audit-trail__metric dt {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.audit-trail__metric dd {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
/* функциональная дельта значения — только по смыслу (в норме / отклонение) */
.audit-trail__delta--ok   { color: var(--success); }
.audit-trail__delta--down { color: var(--danger); }

/* ---- 4 · Хэш-чип верификации (HMAC/seed/tx) — copy-on-click ---- */
.audit-trail__hash {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  position: relative;
  max-width: 100%;
  margin-top: var(--s-3);
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: background var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.audit-trail__hash:hover { background: var(--brand-soft); border-color: color-mix(in srgb, var(--brand) 40%, transparent); }
.audit-trail__hash-k {
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.audit-trail__hash-v {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.audit-trail__hash-ic { display: inline-flex; flex: 0 0 auto; color: var(--text-mute); }
.audit-trail__hash:hover .audit-trail__hash-ic { color: var(--brand); }
.audit-trail__hash-toast {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + 6px);
  transform: translateX(-50%);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  white-space: nowrap;
  color: var(--on-brand);
  background: var(--text);
  border-radius: var(--r-soft);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease);
}
.audit-trail__hash.is-copied .audit-trail__hash-toast { opacity: 1; }

/* ---- 5 · Drawer деталей (метод/параметры/источник) — держит карточку чистой ---- */
.audit-trail__more {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  margin-top: var(--s-2);
  padding: 0;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.audit-trail__more:hover { color: var(--brand); }
.audit-trail__more[aria-expanded="true"] { color: var(--brand); }
.audit-trail__more-ic { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.audit-trail__more[aria-expanded="true"] .audit-trail__more-ic { transform: rotate(180deg); }

.audit-trail__drawer {
  margin-top: var(--s-3);
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.audit-trail__drawer[hidden] { display: none; }
.audit-trail__drawer p { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-mute); }
.audit-trail__drawer p + p { margin-top: var(--s-2); }

/* Сетка параметров проверки внутри drawer (метод/реестр/лаборатория) */
.audit-trail__params {
  list-style: none;
  margin: 0 0 var(--s-3);
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--s-3) var(--s-5);
}
.audit-trail__param { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.audit-trail__param dt {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.audit-trail__param dd {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}

/* ---- Итоговая сводка аудита (одна CTA на блок: проверить отчёт) ---- */
.audit-trail__summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-4);
  margin-top: var(--s-6);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
/* тонкая акцент-рамка слева — без второго цвета */
.audit-trail__summary--pass { border-color: var(--rule-strong); box-shadow: inset 3px 0 0 0 var(--brand), var(--shadow-card); }
.audit-trail__summary-body { flex: 1 1 14rem; min-width: 0; }
.audit-trail__summary-score {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-2);
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--text);
}
.audit-trail__summary-score b { color: var(--brand); font-variant-numeric: tabular-nums; }
.audit-trail__summary-score small { font-size: var(--t-small); font-weight: var(--fw-medium); color: var(--text-faint); }
.audit-trail__summary-note {
  display: block;
  margin-top: 2px;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.audit-trail__summary .btn { flex: 0 0 auto; }

/* ---- Подвал: примечание/дисклеймер 18+ ---- */
.audit-trail__foot {
  margin-top: var(--s-4);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-faint);
}

/* ============================================================
 * Адаптив ≤980px — узел прижимается влево, колонка уже, рельс следует.
 * ========================================================== */
@media (max-width: 980px) {
  .audit-trail__step { column-gap: var(--s-4); }
  .audit-trail__step:not(:last-child)::after { left: calc(var(--at-node-col) / 2); }
}

@media (max-width: 640px) {
  .audit-trail { --at-node: 34px; }
  .audit-trail__step { column-gap: var(--s-3); }
  .audit-trail__card { padding: var(--s-3) var(--s-4); }
  .audit-trail__node svg { width: 16px; height: 16px; }
  .audit-trail__metrics { gap: var(--s-2) var(--s-4); }
  .audit-trail__summary { flex-direction: column; align-items: stretch; }
  .audit-trail__summary .btn { width: 100%; }
}

/* ===== author-byline ===== */
/* ============================================================
 * author-byline · block.css
 * Скоуплено на .author-byline. Только токены (10-tokens/).
 * Конвенция разметки: html-base (БЛОК АВТОРА) — инлайн-вариант подписи.
 * Адаптив: 980 / 640. Один акцент = --brand; нейтрали дисциплинированы.
 * ========================================================== */

.author-byline {
  --ab-avatar: 40px;            /* малый фикс-слот аватара (40×40) */

  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) var(--s-3);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

/* ---- 1 · Аватар (малый фикс-слот, кликабельный) ---- */
.author-byline__avatar {
  flex: 0 0 auto;
  display: block;
  width: var(--ab-avatar);
  height: var(--ab-avatar);
  border-radius: var(--r-pill);
  overflow: hidden;
  background: var(--bg-2);
  border: var(--hairline);
}
.author-byline__avatar-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Fallback-инициал, когда фото нет */
.author-byline__avatar--mono {
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, var(--bg-3), var(--surface-2));
}
.author-byline__fallback {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--text-faint);
}

/* ---- 2 · Имя + роль ---- */
.author-byline__by {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 2px var(--s-2);
  min-width: 0;
}
.author-byline__intro {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.author-byline__name {
  font-weight: var(--fw-semi);
  color: var(--text);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.author-byline__name:hover {
  color: var(--brand);
  border-bottom-color: color-mix(in srgb, var(--brand) 45%, transparent);
}
.author-byline__role {
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);              /* единственный акцент */
}

/* ---- 3 · Мета: дата + reading-time (· разделители) ---- */
.author-byline__meta {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) var(--s-3);
  min-width: 0;
}
.author-byline__date,
.author-byline__read {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;   /* выравнивание дат/минут */
}
.author-byline__updated {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.author-byline__num { font-variant-numeric: tabular-nums; }

/* Точка-разделитель перед каждым мета-пунктом (декор → не для скринридера) */
.author-byline__meta > * + *::before,
.author-byline__updated + .author-byline__date::before {
  content: "";
  flex: 0 0 auto;
  width: 3px;
  height: 3px;
  margin-inline-end: var(--s-2);
  border-radius: var(--r-pill);
  background: var(--rule-strong);
}
/* «Обновлено» примыкает к дате — без точки между ними */
.author-byline__updated + .author-byline__date {
  margin-inline-start: calc(-1 * var(--s-2));
}
.author-byline__updated + .author-byline__date::before { content: none; }

/* ---- Иконки (часы / щит) ---- */
.author-byline__icn {
  display: inline-flex;
  align-items: center;
  color: var(--text-faint);
}

/* ---- 4 · Ссылка на методологию ---- */
.author-byline__method {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);        /* touch-target ≥ 44px */
  font-weight: var(--fw-medium);
  color: var(--text-dim);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.author-byline__method:hover {
  color: var(--brand);
  border-bottom-color: color-mix(in srgb, var(--brand) 45%, transparent);
}
.author-byline__method:hover .author-byline__icn { color: var(--brand); }

/* На широких экранах методология прижата к правому краю строки */
.author-byline__method { margin-inline-start: auto; }

/* ---- Вариант: на тёмной/цветной подложке (hero) ---- */
.author-byline--on-surface {
  padding: var(--s-3) var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .author-byline__method { margin-inline-start: 0; }   /* перестаёт прижиматься вправо */
}

@media (max-width: 640px) {
  .author-byline {
    align-items: flex-start;
    gap: var(--s-2);
  }
  .author-byline__intro { display: none; }             /* экономим строку на узких экранах */
}

/* ===== author-card ===== */
/* ============================================================
 * author-card · block.css
 * Скоуплено на .author-card. Только токены (10-tokens/).
 * Конвенция разметки: html-base (БЛОК АВТОРА). E-E-A-T-блок.
 * Адаптив: 980 / 640. Один акцент = --brand; нейтрали дисциплинированы.
 * ========================================================== */

.author-card {
  --au-avatar: 260px;          /* фикс-слот аватара (260×260) */

  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

.author-top {
  display: grid;
  grid-template-columns: var(--au-avatar) minmax(0, 1fr);
  gap: var(--s-6);
  align-items: start;
}

/* ---- 1 · Аватар (фикс-слот) ---- */
.author-avatar {
  margin: 0;
  width: var(--au-avatar);
  aspect-ratio: 1 / 1;
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--bg-2);
  border: var(--hairline);
}
.author-avatar__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Fallback-инициал, когда фото нет */
.author-avatar--mono {
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, var(--bg-3), var(--surface-2));
}
.author-avatar__fallback {
  font-family: var(--font-display);
  font-size: var(--t-display);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--text-faint);
}

/* ---- 2 · Мета: имя / роль / bio / факты ---- */
.author-meta {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  min-width: 0;
}
.author-meta__eyebrow { margin: 0; }

.author-name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
}

.author-role {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
}

.author-bio {
  margin: var(--s-1) 0 0;
  max-width: var(--container-prose);
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* ---- Факты (E-E-A-T): сетка фикс-слотов ключ/значение ---- */
.author-feats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-3);
  margin: var(--s-4) 0 0;
  padding-top: var(--s-5);
  border-top: var(--hairline);
}

.author-feat {
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
  min-width: 0;
}

.author-feat__icn {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}

.author-feat__txt { min-width: 0; }
.author-feat__k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.author-feat__v {
  margin: 2px 0 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}
.author-feat__num { font-variant-numeric: tabular-nums; }

/* ---- Вариант: компактный (врезка/сайдбар) ---- */
.author-card--compact {
  --au-avatar: 120px;
  padding: var(--s-5);
}
.author-card--compact .author-feats {
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s-2);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .author-card { padding: var(--s-5); }
  .author-top {
    grid-template-columns: var(--au-avatar) minmax(0, 1fr);
    gap: var(--s-5);
  }
}

@media (max-width: 640px) {
  .author-card { --au-avatar: 96px; }
  .author-top {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--s-4);
    justify-items: center;
    text-align: center;
  }
  .author-meta { align-items: center; }
  .author-bio { text-align: left; }
  .author-feats {
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
    text-align: left;
  }
}

/* ===== auto-cashout-explainer ===== */
/* ============================================================
 * auto-cashout-explainer · block.css
 * Скоуплено на .cashout-explainer. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Диаграмма-кривая (bespoke SVG) + шаги + мини-калькулятор.
 * ОДИН акцент --brand (линия авто-вывода, выплата, маркер). Краш-точка = --danger по смыслу.
 * Числа — tabular-nums. Адаптив: 980 — в колонку; 640 — компактные поля.
 * ========================================================== */

.cashout-explainer {
  display: block;
  font-variant-numeric: tabular-nums;
}

/* ---- Заголовок ---- */
.cashout-explainer__head { max-width: var(--container-prose); margin-bottom: var(--s-5); }
.cashout-explainer__title {
  margin: var(--s-2) 0 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.cashout-explainer__lede { margin-top: var(--s-3); }

/* ---- Тело: диаграмма | aside ---- */
.cashout-explainer__body {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  gap: var(--s-5);
  align-items: stretch;
}

/* ---- Диаграмма (surface-card) ---- */
.cashout-diagram {
  margin: 0;
  display: flex; flex-direction: column;
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
.cashout-diagram__svg { width: 100%; height: auto; }

.cashout-diagram__grid line { stroke: var(--rule); stroke-width: 1; opacity: .6; }

.cashout-diagram__area { fill: var(--brand-soft); }
.cashout-diagram__curve {
  fill: none;
  stroke: var(--text-dim);
  stroke-width: 2.5;
  stroke-linecap: round;
}
/* линия целевого авто-вывода — акцент --brand */
.cashout-diagram__target {
  stroke: var(--brand);
  stroke-width: 1.5;
  stroke-dasharray: 4 4;
}
.cashout-diagram__marker circle { fill: var(--brand); }
.cashout-diagram__marker-ring {
  fill: none; stroke: var(--brand); stroke-width: 1.5; opacity: .45;
}
/* точка краша — --danger по смыслу */
.cashout-diagram__crash path { stroke: var(--danger); stroke-width: 2.6; stroke-linecap: round; }

.cashout-diagram__cap {
  display: flex; flex-wrap: wrap; gap: var(--s-4);
  margin-top: var(--s-3);
  font-size: var(--t-tiny); color: var(--text-mute);
}
.cashout-diagram__legend { display: inline-flex; align-items: center; gap: var(--s-2); font-variant-numeric: tabular-nums; }
.cashout-diagram__legend b { color: var(--text); font-weight: var(--fw-bold); }
.cashout-diagram__sw { width: 14px; height: 4px; border-radius: var(--r-pill); }
.cashout-diagram__sw--target { background: var(--brand); }
.cashout-diagram__sw--crash { background: var(--danger); }

/* ---- Aside: шаги + калькулятор ---- */
.cashout-explainer__aside { display: flex; flex-direction: column; gap: var(--s-5); }

.cashout-steps {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: var(--s-4);
  counter-reset: co-step;
}
.cashout-step { display: flex; gap: var(--s-3); align-items: flex-start; }
.cashout-step__n {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px;
  font-weight: var(--fw-bold); font-size: var(--t-small);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
}
.cashout-step__t { margin: 0; font-family: var(--font-display); font-size: var(--t-h4); font-weight: var(--fw-bold); color: var(--text); line-height: var(--lh-snug); }
.cashout-step__d { margin: var(--s-1) 0 0; font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-mute); }

/* ---- Мини-калькулятор (surface-2) ---- */
.cashout-calc {
  padding: var(--s-4);
  background: var(--surface-2);
  border: var(--hairline);
  border-radius: var(--r-lg);
}
.cashout-calc__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-3); }

.cashout-field { display: flex; flex-direction: column; gap: var(--s-1); }
.cashout-field__label { font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); font-weight: var(--fw-semi); }
.cashout-control {
  display: inline-flex; align-items: center; gap: var(--s-1);
  padding: 0 var(--s-3);
  min-height: var(--tap-min);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  transition: border-color var(--dur-quick) var(--ease);
}
.cashout-control:focus-within { border-color: var(--brand); }
.cashout-control__unit { color: var(--text-faint); font-weight: var(--fw-medium); }
.cashout-input {
  width: 100%;
  border: none; background: none;
  font-weight: var(--fw-semi); font-size: var(--t-body);
  color: var(--text); font-variant-numeric: tabular-nums;
}
.cashout-input:focus { outline: none; }

/* ползунок цели */
.cashout-range {
  -webkit-appearance: none; appearance: none;
  width: 100%; height: 6px; margin: var(--s-4) 0 var(--s-1);
  background: var(--bg-3);
  border-radius: var(--r-pill);
}
.cashout-range::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 20px; height: 20px; border-radius: var(--r-pill);
  background: var(--brand); border: 2px solid var(--surface);
  box-shadow: var(--shadow-card); cursor: pointer;
}
.cashout-range::-moz-range-thumb {
  width: 20px; height: 20px; border-radius: var(--r-pill);
  background: var(--brand); border: 2px solid var(--surface);
  box-shadow: var(--shadow-card); cursor: pointer;
}
.cashout-range__scale { display: flex; justify-content: space-between; font-size: var(--t-tiny); color: var(--text-faint); font-variant-numeric: tabular-nums; }

/* вывод выплаты */
.cashout-calc__out {
  display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 2px var(--s-3);
  margin-top: var(--s-4);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.cashout-calc__out-k { font-size: var(--t-small); color: var(--text-mute); }
.cashout-calc__out-v {
  grid-row: span 2;
  display: inline-flex; align-items: baseline; gap: 1px;
  font-family: var(--font-display);
  font-size: var(--t-h2); font-weight: var(--fw-bold);
  color: var(--brand); line-height: var(--lh-tight);
  font-variant-numeric: tabular-nums;
}
.cashout-calc__cur { font-size: var(--t-h4); color: color-mix(in srgb, var(--brand) 70%, var(--text-faint)); }
.cashout-calc__out-sub { font-size: var(--t-tiny); color: var(--success); font-weight: var(--fw-semi); font-variant-numeric: tabular-nums; }

.cashout-explainer__foot { margin-top: var(--s-5); font-size: var(--t-small); line-height: var(--lh-snug); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .cashout-explainer__body { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .cashout-diagram, .cashout-calc { padding: var(--s-3); }
  .cashout-calc__out-v { font-size: var(--t-h3); }
}

/* ===== awards-strip ===== */
/* ============================================================
 * awards-strip · block.css
 * Скоуплено на .awards-strip. Только токены (10-tokens/).
 * Полоса наград/сертификатов + упоминаний прессы (trust-сигнал).
 * Один акцент --brand — только ранг медали. Адаптив: 980 / 640.
 * ========================================================== */

.awards-strip {
  --aw-mark: 44px;          /* фикс-слот наградной иконки */
  --aw-logo-h: 32px;        /* высота лого прессы (фикс-слот) */
  padding-block: var(--s-7);
}

/* ---- Шапка ---- */
.awards-strip__head {
  display: flex; flex-direction: column; gap: var(--s-1);
  margin-bottom: var(--s-5);
}
.awards-strip__sub { font-size: var(--t-small); }

/* ---- Трек наград ---- */
.awards-strip__track {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s-4);
}

/* ---- Наградной чип (карточка-поверхность) ---- */
.award-chip {
  display: flex; align-items: center; gap: var(--s-3);
  min-width: 0;
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.award-chip:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }

/* Фикс-слот иконки: brand-soft подложка, brand-штрих = единственный акцент */
.award-chip__mark {
  flex: 0 0 var(--aw-mark);
  width: var(--aw-mark); height: var(--aw-mark);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
/* Сертификат честности — нейтральный знак (success по смыслу: «проверено») */
.award-chip__mark--verified {
  color: var(--success);
  background: var(--success-soft);
}

.award-chip__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.award-chip__rank {
  font-family: var(--font-display);
  font-size: var(--t-h4); font-weight: var(--fw-bold);
  line-height: var(--lh-snug); color: var(--text);
  overflow-wrap: break-word;
}
.award-chip__org {
  font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-mute);
}
.award-chip__year { font-variant-numeric: tabular-nums; color: var(--text-faint); }

/* ---- Упоминание прессы ---- */
.awards-strip__press {
  position: relative;
  margin: var(--s-5) 0 0;
  padding: var(--s-5) var(--s-5) var(--s-5) var(--s-7);
  background: var(--bg-2);
  border-left: 3px solid var(--brand);
  border-radius: var(--r-md);
}
.awards-strip__quote-mark {
  position: absolute; top: var(--s-3); left: var(--s-3);
  color: var(--brand);
  opacity: .22;
}
.awards-strip__quote {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3); line-height: var(--lh-snug);
  color: var(--text-dim);
}
.awards-strip__cite {
  display: flex; align-items: center; flex-wrap: wrap; gap: var(--s-2);
  margin-top: var(--s-3);
  font-size: var(--t-small);
}
.awards-strip__source { font-style: normal; font-weight: var(--fw-semi); color: var(--text); }
.awards-strip__dot { color: var(--rule-strong); }
.awards-strip__date { color: var(--text-mute); font-variant-numeric: tabular-nums; }

/* ---- Методология (disclosure) ---- */
.awards-strip__method { margin-top: var(--s-4); }
.awards-strip__method-btn {
  display: inline-flex; align-items: center; gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small); font-weight: var(--fw-semi);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.awards-strip__method-btn:hover { color: var(--brand); }
.awards-strip__chevron { transition: transform var(--dur-base) var(--ease); }
.awards-strip__method-btn[aria-expanded="true"] .awards-strip__chevron { transform: rotate(180deg); }
.awards-strip__method-body {
  max-width: var(--container-prose);
  margin-top: var(--s-2);
  padding: var(--s-4);
  font-size: var(--t-small); line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.awards-strip__method-body[hidden] { display: none; }

/* ============================================================
 * Вариант --logos · компактная лента логотипов прессы
 * ========================================================== */
.awards-strip--logos { padding-block: var(--s-6); }
.awards-strip__inline-label { margin-bottom: var(--s-4); text-align: center; }
.awards-strip__logos {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: var(--s-6);
}
.press-logo { display: inline-flex; }
.press-logo__img {
  height: var(--aw-logo-h); width: auto;
  /* единый монохром-вид логотипов; на hover — полный контраст */
  filter: grayscale(1); opacity: .55;
  transition: filter var(--dur-base) var(--ease), opacity var(--dur-base) var(--ease);
}
.press-logo__img:hover { filter: grayscale(0); opacity: 1; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .awards-strip__track { grid-template-columns: repeat(2, 1fr); }
  .awards-strip__quote { font-size: var(--t-h4); }
}
@media (max-width: 640px) {
  .awards-strip { --aw-mark: 40px; }
  .awards-strip__track { grid-template-columns: 1fr; gap: var(--s-3); }
  .awards-strip__press { padding-left: var(--s-5); }
  .awards-strip__quote-mark { display: none; }
  .awards-strip__logos { gap: var(--s-5); }
}

/* ===== back-to-top ===== */
/* ============================================================
 * back-to-top · block.css
 * Скоуплено на .back-to-top. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (кнопка «Наверх»). Адаптив: 980 / 640.
 * Появление/скрытие — функциональный motion (fade + lift), prefers-reduced-motion из base.
 * ========================================================== */

.back-to-top {
  /* размер кнопки ≥ --tap-min (touch-target) */
  --btt-size: 52px;

  position: fixed;
  inset-inline-end: var(--s-5);
  inset-block-end: var(--s-5);
  z-index: var(--z-popover);

  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  height: var(--btt-size);
  padding-inline: var(--s-4);

  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  line-height: var(--lh-tight);
  color: var(--on-brand);

  background: var(--brand);
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop);
  cursor: pointer;

  /* стартовое (скрытое) состояние для плавного появления */
  opacity: 0;
  transform: translateY(var(--s-3));
  transition:
    opacity var(--dur-base) var(--ease),
    transform var(--dur-base) var(--ease),
    box-shadow var(--dur-quick) var(--ease),
    background var(--dur-quick) var(--ease);
}

/* JS снимает [hidden] и добавляет .is-visible → плавный ввод.
   Без JS кнопка остаётся hidden (страница использует нативный скролл). */
.back-to-top[hidden] { display: none; }
.back-to-top.is-visible { opacity: 1; transform: translateY(0); }

.back-to-top:hover {
  background: var(--brand-2);
  box-shadow: var(--shadow-lift);
}
.back-to-top:active { transform: translateY(1px); }

/* :focus-visible наследуется из base — не переопределяем толщину/видимость,
   только смещаем ринг от залитого фона для контраста. */
.back-to-top:focus-visible { outline-offset: 3px; }

/* ---- Иконка (bespoke SVG) ---- */
.back-to-top__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}
.back-to-top__icon svg { display: block; }

/* ---- Подпись ---- */
.back-to-top__label {
  white-space: nowrap;
  letter-spacing: .02em;
}

/* ---- Модификатор: только стрелка (круглая иконка-кнопка) ---- */
.back-to-top--bare {
  width: var(--btt-size);
  padding-inline: 0;
  justify-content: center;
}
.back-to-top--bare .back-to-top__label { display: none; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .back-to-top {
    inset-inline-end: var(--s-4);
    inset-block-end: var(--s-4);
  }
}

@media (max-width: 640px) {
  /* на мобайле — компактная круглая кнопка, подпись прячем (экономим место) */
  .back-to-top {
    --btt-size: 48px;
    width: var(--btt-size);
    padding-inline: 0;
    justify-content: center;
  }
  .back-to-top__label { display: none; }
}

/* ===== big-wins-video-rail ===== */
/* ============================================================
 * big-wins-video-rail · block.css
 * Скоуплено на .big-wins-video-rail. Только токены (10-tokens/).
 * Owns: заголовок-блок + дисклеймер + ГОРИЗОНТАЛЬНЫЙ рельс (scroll-snap) карточек
 *       видео с постером (click-to-load) + тело карточки (название/сумма + метр).
 * Один акцент --brand (play/множитель/фокус). Сумма — dataviz-метр + tabular-nums.
 * Постер→iframe: заглушка absolute поверх iframe; .is-loaded скрывает заглушку.
 * Конвенция house-style: рельс как similar-slots-rail, постер как demo-iframe.
 * Адаптив: 980 / 640.
 * ========================================================== */

.big-wins-video-rail {
  --bwv-card: 320px;        /* фикс-ширина снап-ячейки */
  --bwv-gap: var(--s-5);    /* шаг = шаг снапа */
  --bwv-fade: var(--s-7);   /* edge-fade у краёв рельса */
}

/* ---- Заголовок ленты ---- */
.big-wins-video-rail__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-3);
}
.big-wins-video-rail__heading { min-width: 0; }
.big-wins-video-rail__head .eyebrow { margin: 0 0 var(--s-2); }
.big-wins-video-rail__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.big-wins-video-rail__all {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  text-decoration: none;
  white-space: nowrap;
}
.big-wins-video-rail__all-ic { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease-out); }
.big-wins-video-rail__all:hover .big-wins-video-rail__all-ic,
.big-wins-video-rail__all:focus-visible .big-wins-video-rail__all-ic { transform: translateX(3px); }

/* ---- Дисклеймер (важно для гемблинга) ---- */
.big-wins-video-rail__disclaimer {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
  font-size: var(--t-tiny);
  color: var(--text-mute);
}
.big-wins-video-rail__disclaimer-ic { display: inline-flex; flex: 0 0 auto; color: var(--warning); }

/* ---- Горизонтальный рельс (scroll-snap) ---- */
.big-wins-video-rail__track {
  list-style: none;
  margin: 0;
  margin-inline: calc(-1 * var(--gutter));
  padding-inline: var(--gutter);
  padding-block: var(--s-2);
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: var(--bwv-card);
  gap: var(--bwv-gap);
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: var(--gutter);
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--rule-strong) transparent;
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--bwv-fade), #000 calc(100% - var(--bwv-fade)), transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 var(--bwv-fade), #000 calc(100% - var(--bwv-fade)), transparent 100%);
}
.big-wins-video-rail__track::-webkit-scrollbar { height: 8px; }
.big-wins-video-rail__track::-webkit-scrollbar-track { background: transparent; }
.big-wins-video-rail__track::-webkit-scrollbar-thumb { background: var(--rule); border-radius: var(--r-pill); }
.big-wins-video-rail__track:hover::-webkit-scrollbar-thumb { background: var(--rule-strong); }

.big-wins-video-rail__cell {
  scroll-snap-align: start;
  scroll-snap-stop: always;
  display: flex;
  min-width: 0;
}

/* ---- Карточка видео ---- */
.bwv-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.bwv-card:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }

/* ---- Медиа 16:9 (постер поверх ленивого iframe) ---- */
.bwv-card__media {
  position: relative;
  aspect-ratio: 16 / 9;
  background: var(--bg-3);
}
.bwv-card__frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  z-index: var(--z-base); /* по умолчанию под постером */
}
/* Как только у iframe появился src (клик по постеру → loadDemo) — поднимаем
   его НАД постером, постер уходит из потока кликов. CSS-only, без доп.JS. */
.bwv-card__frame[src] { z-index: var(--z-sticky); }

/* Постер (click-to-load) */
.bwv-card__poster {
  position: absolute;
  inset: 0;
  z-index: var(--z-sticky); /* поверх пустого iframe до загрузки */
  display: block;
  cursor: pointer;
  border: 0;
  transition: opacity var(--dur-base) var(--ease);
}
/* После активации iframe (есть src) постер прячем и выключаем клики */
.bwv-card__media:has(.bwv-card__frame[src]) .bwv-card__poster,
.bwv-card__poster.is-hidden { opacity: 0; pointer-events: none; }
.bwv-card__cover {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.bwv-card__poster--fallback {
  background:
    radial-gradient(120% 120% at 50% 0%, color-mix(in srgb, var(--brand) 14%, transparent), transparent 60%),
    var(--bg-3);
}
.bwv-card__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    transparent 40%,
    color-mix(in srgb, var(--text) 55%, transparent) 100%
  );
}
.bwv-card__play {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: 50%;
  transform: translate(-50%, -50%);
  width: 56px;
  height: 56px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop);
  transition: transform var(--dur-quick) var(--ease-out);
}
.bwv-card__play-ic { margin-inline-start: 2px; }
.bwv-card__poster:hover .bwv-card__play,
.bwv-card__poster:focus-visible .bwv-card__play { transform: translate(-50%, -50%) scale(1.08); }

/* Бейдж множителя — один акцент */
.bwv-card__mult {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-start: var(--s-3);
  display: inline-flex;
  align-items: baseline;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .02em;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.bwv-card__mult-n { font-variant-numeric: tabular-nums; }

/* Длительность */
.bwv-card__dur {
  position: absolute;
  inset-block-end: var(--s-3);
  inset-inline-end: var(--s-3);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  color: var(--on-brand);
  background: color-mix(in srgb, var(--text) 64%, transparent);
  border-radius: var(--r-soft);
}
.bwv-card__dur-t { font-variant-numeric: tabular-nums; }

/* ---- Тело карточки ---- */
.bwv-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: var(--s-4);
}
.bwv-card__name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.bwv-card__provider { font-size: var(--t-tiny); color: var(--text-mute); }

.bwv-card__win {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-top: var(--s-1);
}
.bwv-card__win-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.bwv-card__win-v {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* dataviz-метр относительной величины выигрыша (не звёзды) */
.bwv-card__meter {
  display: block;
  height: 6px;
  margin-top: var(--s-1);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.bwv-card__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .big-wins-video-rail { --bwv-card: 300px; --bwv-gap: var(--s-4); }
}
@media (max-width: 640px) {
  .big-wins-video-rail { --bwv-card: 80vw; --bwv-fade: var(--s-5); }
  .big-wins-video-rail__title { font-size: var(--t-h3); }
  .big-wins-video-rail__head { flex-direction: column; align-items: flex-start; gap: var(--s-2); }
  .big-wins-video-rail__track { grid-auto-columns: min(var(--bwv-card), 340px); }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .big-wins-video-rail__track { scroll-behavior: auto; }
  .bwv-card__play,
  .bwv-card__poster { transition: none; }
}

/* ===== blog-card ===== */
/* ============================================================
 * blog-card · block.css
 * Скоуплено на .blog-card (грид) / .guide-card (карточка статьи).
 * Только токены (10-tokens/). Конвенция разметки: html-rating-guide
 * (Guide/Wiki · карточка статьи, вариант A — сетка 3/2/1).
 * Один акцент: --brand (категория-чип + ссылка-заголовок на hover). Адаптив: 980 / 640.
 * Визуал: премиум-глубина (surface-grad + shadow-card), hover = lift + brand-glow
 *         + brand-бордер; категория = grad-brand чип. Эффекты через токены →
 *         работают на всех скинах.
 * ========================================================== */

/* ---- Грид-обёртка: 3 → 2 → 1 колонка ---- */
.blog-card {
  --bc-cols: 3;
  --bc-media: 58.5%;          /* aspect-ratio медиа (~1.71:1, editorial 16:9-ish) */
  display: grid;
  grid-template-columns: repeat(var(--bc-cols), minmax(0, 1fr));
  gap: var(--s-5);
  margin: 0;
  padding: 0;
  list-style: none;
}
.blog-card__cell { display: flex; }

/* ---- Карточка статьи ---- */
.guide-card {
  position: relative;                 /* контекст для overlay-ссылки заголовка */
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  background-color: var(--surface);
  background-image: var(--surface-grad);          /* тонкий градиент-оверлей сверху */
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);                 /* глубина + inset верхний хайлайт */
  overflow: hidden;
  transition:
    box-shadow var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out);
}
.guide-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-pop), var(--shadow-glow);   /* lift + мягкое свечение акцентом */
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
}

/* ---- Медиа: фикс-слот (aspect-ratio) + категория-чип ---- */
.guide-card__img-wrap {
  position: relative;
  display: block;
  aspect-ratio: 16 / 9;
  background: var(--bg-2);
  overflow: hidden;
  text-decoration: none;
}
.guide-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--dur-slow) var(--ease-out);
}
.guide-card:hover .guide-card__img { transform: scale(1.05); }

.guide-card__cat {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-start: var(--s-3);
  z-index: var(--z-base);
  display: inline-flex;
  align-items: center;
  padding: var(--s-1) var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--on-brand);
  background-color: var(--brand);
  background-image: var(--grad-brand);            /* градиентная заливка бренда */
  border-radius: var(--r-pill);
  box-shadow:
    var(--border-highlight),
    0 6px 18px -8px color-mix(in srgb, var(--brand) 55%, transparent);
}

/* ---- Тело: заголовок + описание + мета ---- */
.guide-card__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: var(--s-2);
  padding: var(--s-4) var(--s-5) var(--s-5);
}
.guide-card__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
}
.guide-card__title a {
  color: inherit;
  text-decoration: none;
  text-decoration-color: transparent;
  transition: color var(--dur-quick) var(--ease);
}
/* Растягиваем ссылку на всю карточку (кликабелен весь юнит), мета остаётся выше по z. */
.guide-card__title a::after {
  content: "";
  position: absolute;
  inset: 0;
}
.guide-card__title a:hover { color: var(--brand); }

.guide-card__desc {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  /* фикс-слот описания: ровно 3 строки, единая высота карточек в ряду */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
}

/* ---- Мета: дата + время чтения ---- */
.guide-card__meta {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  margin-top: auto;
  padding-top: var(--s-3);
  border-top: var(--hairline);
  font-size: var(--t-tiny);
  color: var(--text-faint);
}
.guide-card__date,
.guide-card__read {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
}
.guide-card__date { font-variant-numeric: tabular-nums; }
.guide-card__read {
  position: relative;
  z-index: var(--z-base);          /* выше overlay-ссылки заголовка */
  margin-inline-start: auto;
  font-variant-numeric: tabular-nums;
}
.guide-card__meta-ic {
  flex: 0 0 auto;
  color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .blog-card { --bc-cols: 2; gap: var(--s-4); }
}
@media (max-width: 640px) {
  .blog-card { --bc-cols: 1; gap: var(--s-4); }
  .guide-card__body { padding: var(--s-4); }
}

/* ============ Reduced motion: гасим доп. трансформы (база зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .guide-card,
  .guide-card__img { transition: none; }
  .guide-card:hover { transform: none; }
  .guide-card:hover .guide-card__img { transform: none; }
}

/* ===== bonus-card ===== */
/* ============================================================
 * bonus-card · block.css
 * Скоуплено на .bonus-card. Только токены (10-tokens/).
 * Карточка оффера: badge + headline (% / сумма) + фикс-слоты
 * (min-dep / wager / …) + T&C-drawer + ОДНА CTA. tabular-nums.
 * Конвенция: html-rating-guide + _CONTRACT. Адаптив: 980 / 640.
 * T&C-drawer — нативный <details>, раскрытие grid-rows 0fr→1fr
 * (плавно, без замера высоты в JS).
 * Визуал: surface-grad-оверлей + premium-тень (верхний хайлайт внутри),
 * hover = lift + brand-glow + brand-бордер. Featured — градиентный бордер
 * (mask-техника). Эффекты на токенах → работают на всех скинах.
 * ========================================================== */

.bonus-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  padding: var(--s-5);
  background-color: var(--surface);
  background-image: var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}
@media (prefers-reduced-motion: no-preference) {
  .bonus-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-pop), var(--shadow-glow);
    border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
  }
}
@media (prefers-reduced-motion: reduce) {
  .bonus-card:hover {
    box-shadow: var(--shadow-pop), var(--shadow-glow);
    border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
  }
}

/* Рекомендованный оффер — градиентный brand-бордер (mask) + мягкое свечение.
   Один акцент --brand; бордер рисуется поверх, контент не смещается. */
.bonus-card--featured {
  border-color: transparent;
  box-shadow: var(--shadow-pop), var(--shadow-glow);
}
.bonus-card--featured::before {
  content: "";
  position: absolute;
  inset: 0;
  padding: 1px;
  border-radius: inherit;
  background: var(--grad-brand);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
  .bonus-card--featured:hover { box-shadow: var(--shadow-lift), var(--shadow-glow); }
}

/* ---- Шапка: badge + тип ---- */
.bonus-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
}
.bonus-card__badge {
  display: inline-flex;
  align-items: center;
  min-height: var(--s-5);
  padding: 2px var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
}
/* Бейдж: акцентный (рекомендуем — мягкий glow) и нейтральный (стекло) */
.bonus-card__badge[data-tone="brand"] {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 30%, transparent);
  box-shadow: var(--shadow-glow);
}
.bonus-card__badge[data-tone="neutral"] {
  color: var(--text-mute);
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
          backdrop-filter: var(--glass-blur);
  border-color: var(--glass-border);
}

.bonus-card__type {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Headline: главная цифра оффера (фикс-слот) ---- */
.bonus-card__headline {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-height: calc(var(--t-display) + var(--s-4)); /* фикс-высота: ровный ряд карточек */
}
.bonus-card__amount {
  font-family: var(--font-display);
  font-size: var(--t-display);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  /* Gradient display-число (читаемость не страдает — короткий числовой токен) */
  background: var(--grad-text);
  -webkit-background-clip: text;
          background-clip: text;
  color: var(--brand);
  -webkit-text-fill-color: transparent;
}
.bonus-card__upto {
  font-size: var(--t-body);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}
.bonus-card__num { font-weight: var(--fw-semi); color: var(--text); font-variant-numeric: tabular-nums; }

/* ---- Спеки: фикс-слоты (min-dep / wager / срок …) ---- */
.bonus-card__specs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-2);
  margin: 0;
  padding-block: var(--s-3);
  border-top: var(--hairline);
  border-bottom: var(--hairline);
}
.bonus-card__spec {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  text-align: center;
}
.bonus-card__spec + .bonus-card__spec { border-left: var(--hairline); }
.bonus-card__spec-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.bonus-card__spec-v {
  margin: 0;
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---- T&C-drawer: нативный <details>, держит карточку чистой ---- */
.bonus-card__terms { margin-top: auto; } /* прижать CTA к низу при разной высоте */
.bonus-card__terms-q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
  min-height: var(--tap-min);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.bonus-card__terms-q::-webkit-details-marker { display: none; } /* убрать дефолтный треугольник */
.bonus-card__terms-q:hover { color: var(--brand); }
.bonus-card__terms[open] .bonus-card__terms-q { color: var(--brand); }

.bonus-card__terms-chevron {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.bonus-card__terms-q:hover .bonus-card__terms-chevron { color: var(--brand); }
.bonus-card__terms[open] .bonus-card__terms-chevron { transform: rotate(180deg); color: var(--brand); }

/* Раскрытие: grid-rows 0fr→1fr (плавная высота без JS-замера) */
.bonus-card__terms-a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.bonus-card__terms[open] .bonus-card__terms-a { grid-template-rows: 1fr; }
.bonus-card__terms-inner {
  overflow: hidden;
  min-height: 0; /* критично для коллапса grid-строки */
}
.bonus-card__terms-inner p {
  padding-top: var(--s-2);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* ---- CTA: одна на карточку ---- */
.bonus-card__cta { margin-top: auto; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .bonus-card { gap: var(--s-3); }
}
@media (max-width: 640px) {
  .bonus-card { padding: var(--s-4); }
  .bonus-card__headline { min-height: 0; }
  /* Спеки в одну колонку: разделитель сверху, не слева */
  .bonus-card__specs { grid-template-columns: 1fr; gap: 0; }
  .bonus-card__spec {
    flex-direction: row;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--s-3);
    text-align: left;
    padding-block: var(--s-2);
  }
  .bonus-card__spec + .bonus-card__spec { border-left: none; border-top: var(--hairline); }
}

/* ============ Reduced motion: без анимации высоты/шеврона ============ */
@media (prefers-reduced-motion: reduce) {
  .bonus-card__terms-a { transition: none; }
  .bonus-card__terms-chevron { transition: color var(--dur-quick) var(--ease); }
}

/* ===== bonus-terms-popover ===== */
/* ============================================================
 * bonus-terms-popover · block.css
 * Скоуплено на .bonus-terms-popover. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-rating-guide (T&C-drawer). Адаптив: 980 / 640.
 * Раскрытие: JS-вариант — [hidden] на регионе; <details>-вариант —
 * grid-rows 0fr→1fr (плавно, без замера высоты в JS).
 * ========================================================== */

.bonus-terms-popover {
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: box-shadow var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease);
}
.bonus-terms-popover:hover { box-shadow: var(--shadow-pop); }

/* ---- Шапка: суть бонуса + триггер (JS-вариант) ---- */
.bonus-terms-popover__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  padding: var(--s-4) var(--s-5);
}

.bonus-terms-popover__lead { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bonus-terms-popover__eyebrow {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.bonus-terms-popover__offer {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Числа/проценты/суммы — табличные цифры, акцент */
.bonus-terms-popover__num {
  font-variant-numeric: tabular-nums;
  color: var(--brand);
}

/* ---- Триггер раскрытия ---- */
.bonus-terms-popover__toggle {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-4);
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  background: var(--brand-soft);
  border: 1px solid color-mix(in srgb, var(--brand) 20%, transparent);
  border-radius: var(--r-pill);
  transition: background var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.bonus-terms-popover__toggle:hover { background: color-mix(in srgb, var(--brand) 16%, transparent); }
.bonus-terms-popover__toggle-ic { flex: 0 0 auto; opacity: .85; }
.bonus-terms-popover__toggle-txt { white-space: nowrap; }

/* Шеврон — единый индикатор состояния (поворот при раскрытии) */
.bonus-terms-popover__chev {
  flex: 0 0 auto;
  color: currentColor;
  transition: transform var(--dur-base) var(--ease-out);
}
.bonus-terms-popover__toggle[aria-expanded="true"] .bonus-terms-popover__chev { transform: rotate(180deg); }

/* ---- Регион условий (JS-вариант: [hidden] переключается скриптом) ---- */
.bonus-terms-popover__drawer {
  padding: 0 var(--s-5) var(--s-5);
  border-top: var(--hairline);
}
.bonus-terms-popover__drawer[hidden] { display: none; }
.bonus-terms-popover__drawer > :first-child { margin-top: var(--s-4); }

/* ---- Ключевые факты — фикс-слоты 4-в-ряд ---- */
.bonus-terms-popover__facts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s-2);
  margin: 0 0 var(--s-4);
}
.bonus-terms-popover__fact {
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
  text-align: center;
}
.bonus-terms-popover__fact-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.bonus-terms-popover__fact-v {
  margin: 2px 0 0;
  font-weight: var(--fw-bold);
  font-size: var(--t-h4);
  color: var(--text);
}

/* ---- Список условий ---- */
.bonus-terms-popover__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}
.bonus-terms-popover__li {
  position: relative;
  padding-left: var(--s-5);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.bonus-terms-popover__li::before {
  content: "";
  position: absolute;
  left: var(--s-1);
  top: .6em;
  width: 6px;
  height: 6px;
  border-radius: var(--r-pill);
  background: var(--brand);
}

/* ---- Мета: ответственная игра + ссылка на правила ---- */
.bonus-terms-popover__meta {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin-top: var(--s-4);
  padding-top: var(--s-3);
  border-top: var(--hairline);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-faint);
}
.bonus-terms-popover__age {
  display: inline-flex;
  align-items: center;
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background: var(--text-mute);
  border-radius: var(--r-soft);
}
.bonus-terms-popover__cta {
  font-weight: var(--fw-semi);
  color: var(--brand);
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.bonus-terms-popover__cta:hover { color: color-mix(in srgb, var(--brand) 80%, #000); }

/* ============================================================
 * Вариант --inline · нативный <details>/<summary> (без JS)
 * Раскрытие через grid-rows 0fr→1fr на .drawer.
 * ========================================================== */
.bonus-terms-popover--inline { overflow: hidden; }

.bonus-terms-popover__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: var(--t-small);
  color: var(--text);
}
.bonus-terms-popover__summary::-webkit-details-marker { display: none; }

.bonus-terms-popover__summary-lead { min-width: 0; font-weight: var(--fw-semi); }
.bonus-terms-popover__summary-sep { color: var(--rule-strong); margin-inline: var(--s-1); }
.bonus-terms-popover__summary-mute { color: var(--text-mute); font-weight: var(--fw-medium); }

.bonus-terms-popover__summary-toggle {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
}
.bonus-terms-popover__summary:hover .bonus-terms-popover__summary-toggle { color: color-mix(in srgb, var(--brand) 80%, #000); }
.bonus-terms-popover--inline[open] .bonus-terms-popover__chev { transform: rotate(180deg); }

/* Регион внутри <details>: плавное раскрытие высотой через grid */
.bonus-terms-popover--inline .bonus-terms-popover__drawer {
  display: grid;
  grid-template-rows: 0fr;
  padding: 0;
  border-top: 0;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.bonus-terms-popover--inline[open] .bonus-terms-popover__drawer { grid-template-rows: 1fr; }
.bonus-terms-popover--inline .bonus-terms-popover__drawer > * {
  overflow: hidden;
  min-width: 0; /* критично для коллапса grid-строки */
}
/* Внутренний паддинг кладём на содержимое, чтобы коллапс схлопывался в ноль */
.bonus-terms-popover--inline .bonus-terms-popover__list {
  padding: var(--s-4) var(--s-4) 0;
  border-top: var(--hairline);
}
.bonus-terms-popover--inline .bonus-terms-popover__meta { margin: var(--s-3) var(--s-4) var(--s-4); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .bonus-terms-popover__facts { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .bonus-terms-popover__head {
    flex-direction: column;
    align-items: stretch;
    gap: var(--s-3);
    padding: var(--s-4);
  }
  .bonus-terms-popover__toggle { justify-content: center; }
  .bonus-terms-popover__drawer { padding-inline: var(--s-4); }
  .bonus-terms-popover__drawer[hidden] { display: none; }
}

/* ============ Reduced motion: без анимации высоты/шеврона ============ */
@media (prefers-reduced-motion: reduce) {
  .bonus-terms-popover--inline .bonus-terms-popover__drawer { transition: none; }
  .bonus-terms-popover__chev { transition: none; }
}

/* ===== brand-attribution ===== */
/* ============================================================
 * brand-attribution · block.css
 * Скоуплено на .brand-attribution / .ba-* . Только токены (10-tokens/).
 * Назначение: атрибуция владельца/оператора бренда (legal entity behind
 *   the brand): кто оператор, под какой юрисдикцией, какие бренды в портфеле.
 * Конвенция: ★research / premium-планка (готовой разметки нет —
 *   спроектировано по premium-signals.md). Ориентир house-style:
 *   casino-item-card (поверхность/радиус/тень/tabular-nums),
 *   featured-card / provider-card (фикс-слоты, ОДНА CTA, <details>-drawer).
 *   Сосед по смыслу — license-badge / affiliate-disclosure.
 * Один акцент — --brand (verify-ссылка + hover); остальное — нейтрали.
 *   --success/--info — только по смыслу (статус «активна» / инфо-нота).
 * Числа (рег.№ / год / счётчик брендов) — tabular-nums. Адаптив: 980 / 640.
 * ========================================================== */

.brand-attribution {
  --ba-mark: 56px;                    /* фикс-слот марки оператора */
}

/* Карточка-поверхность (как casino-item: surface + hairline + r-lg + shadow-card) */
.brand-attribution {
  display: block;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;                   /* радиусы внутренних полос совпадают с карточкой */
}

/* Числа везде табличные */
.ba__num { font-variant-numeric: tabular-nums; }

/* ============================================================
 * 1 · Шапка: метка-eyebrow + марка оператора + имя + статус
 * ========================================================== */
.ba__head {
  display: grid;
  grid-template-columns: var(--ba-mark) minmax(0, 1fr) auto;
  grid-template-areas: "mark name status";
  align-items: center;
  gap: var(--s-2) var(--s-4);
  padding: var(--s-5) var(--s-5) var(--s-4);
}

/* Марка оператора — фикс-слот (лого вписывается; нет лого → инициалы-градиент) */
.ba-mark {
  grid-area: mark;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: var(--ba-mark);
  height: var(--ba-mark);
  padding: var(--s-2);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  overflow: hidden;
}
.ba-mark__img { max-width: 100%; max-height: 100%; object-fit: contain; }
/* Fallback без лого: фирменный градиент + инициалы оператора */
.ba-mark--fallback {
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 100%);
  border-color: transparent;
}
.ba-mark--fallback::after {
  content: attr(data-initial);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  letter-spacing: .02em;
  line-height: 1;
  color: color-mix(in srgb, var(--on-brand) 92%, transparent);
}

.ba__head-meta { grid-area: name; min-width: 0; }
.ba__eyebrow { margin: 0 0 2px; color: var(--text-mute); }
.ba__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.ba__legal {
  margin: 2px 0 0;
  font-size: var(--t-small);
  color: var(--text-mute);
  line-height: var(--lh-snug);
}

/* Статус-чип — носитель функц. цвета (по смыслу), не декор.
   --active = лицензия активна (--success); базовый = нейтральный info. */
.ba__status {
  grid-area: status;
  align-self: start;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--info);
  background: var(--info-soft);
  border-radius: var(--r-pill);
}
.ba__status--active { color: var(--success); background: var(--success-soft); }
.ba__status-dot { flex: 0 0 auto; width: 6px; height: 6px; border-radius: var(--r-pill); background: currentColor; }

/* ============================================================
 * 2 · Факт-грид: оператор / юрисдикция / лицензия / основан
 * ========================================================== */
.ba-facts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;                           /* = hairline-ширина: 1px-зазоры рисуют решётку */
  margin: 0;
  padding: 0;
  border-top: var(--hairline);
  border-bottom: var(--hairline);
  background: var(--rule);            /* фон проступает в зазорах как 1px-линии */
}
.ba-fact {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--s-3) var(--s-5);
  background: var(--surface);         /* перекрывает фон-решётку, оставляя 1px линии */
}
.ba-fact__k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.ba-fact__v {
  margin: 0;
  font-weight: var(--fw-semi);
  color: var(--text);
  line-height: var(--lh-snug);
}
.ba-fact__v small { color: var(--text-faint); font-weight: var(--fw-medium); }
/* Лицензия — моноширинный номер (как license-badge) */
.ba-fact__v--mono { font-family: var(--font-mono); font-size: var(--t-small); letter-spacing: .02em; }

/* ============================================================
 * 3 · Портфель брендов того же оператора (dataviz: счётчик + чипы)
 * ========================================================== */
.ba-portfolio { padding: var(--s-4) var(--s-5); }
.ba-portfolio__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin: 0 0 var(--s-3);
}
.ba-portfolio__k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.ba-portfolio__count {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.ba-portfolio__count small { color: var(--text-faint); font-weight: var(--fw-medium); }

/* Чипы соседних брендов — нейтральные пилюли; «этот бренд» помечен акцентом */
.ba-siblings {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.ba-sibling {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-small);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  text-decoration: none;
  transition: border-color var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
a.ba-sibling:hover { border-color: var(--rule-strong); color: var(--text); background: var(--surface-2); }
.ba-sibling__dot {
  flex: 0 0 auto;
  width: 6px; height: 6px;
  border-radius: var(--r-pill);
  background: var(--rule-strong);
}
/* Текущий бренд страницы — единственный акцент в портфеле */
.ba-sibling--current {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 35%, transparent);
  font-weight: var(--fw-semi);
}
.ba-sibling--current .ba-sibling__dot { background: var(--brand); }

/* ============================================================
 * 4 · Подвал: ОДНА CTA (проверка реестра) + disclosure-drawer
 * ========================================================== */
.ba__foot {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  padding: var(--s-4) var(--s-5) var(--s-5);
  border-top: var(--hairline);
}
.ba__cta-ic { transition: transform var(--dur-quick) var(--ease-out); }
.ba__cta:hover .ba__cta-ic,
.ba__cta:focus-visible .ba__cta-ic { transform: translateX(3px); }

/* disclosure-drawer (нативный <details>) — держит карточку чистой по умолчанию */
.ba-note__sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  list-style: none;
  cursor: pointer;
  user-select: none;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.ba-note__sum::-webkit-details-marker { display: none; }   /* убрать дефолтный треугольник */
.ba-note__sum:hover { color: var(--brand); }
.ba-note[open] .ba-note__sum { color: var(--text); }

.ba-note__chevron {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.ba-note__sum:hover .ba-note__chevron { color: var(--brand); }
.ba-note[open] .ba-note__chevron { transform: rotate(180deg); color: var(--brand); }

/* Раскрытие: grid-rows 0fr→1fr (плавно, без JS-замера высоты) */
.ba-note__body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.ba-note[open] .ba-note__body { grid-template-rows: 1fr; }
.ba-note__body > p {
  overflow: hidden;
  min-height: 0;                      /* критично для коллапса grid-строки */
  margin: 0;
  padding-top: var(--s-2);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .ba-facts { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .brand-attribution { --ba-mark: 48px; }
  .ba__head {
    grid-template-columns: var(--ba-mark) minmax(0, 1fr);
    grid-template-areas:
      "mark name"
      "status status";
    padding: var(--s-4) var(--s-4) var(--s-3);
  }
  .ba__status { justify-self: start; margin-top: var(--s-1); }
  .ba-facts { grid-template-columns: 1fr; }
  .ba-fact { padding: var(--s-3) var(--s-4); }
  .ba-portfolio { padding: var(--s-3) var(--s-4); }
  .ba__foot { padding: var(--s-3) var(--s-4) var(--s-4); }
}

/* ============ Reduced motion: гасим доп. анимации (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .ba-note__body { transition: none; }
}

/* ===== breadcrumb ===== */
/* ============================================================
 * breadcrumb · block.css
 * Скоуплено на .breadcrumb. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (Schema BreadcrumbList — в block.md).
 * Адаптив: 980 / 640. JS не требуется.
 * ========================================================== */

.breadcrumb {
  font-family: var(--font-body);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

.breadcrumb__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-1) 0;
  /* Цифры в названиях разделов/страниц — выровнены по табличным */
  font-variant-numeric: tabular-nums;
}

.breadcrumb__item {
  display: inline-flex;
  align-items: center;
  min-width: 0;
}

/* ---- Ссылка-сегмент ---- */
.breadcrumb__link {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding-inline: var(--s-1);
  color: var(--text-mute);
  text-decoration: none;
  border-radius: var(--r-soft);
  transition: color var(--dur-quick) var(--ease);
}
.breadcrumb__link:hover {
  color: var(--brand);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.breadcrumb__ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}
.breadcrumb__link:hover .breadcrumb__ic { color: var(--brand); }

.breadcrumb__label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ---- Разделитель (декоративный) ---- */
.breadcrumb__sep {
  display: inline-flex;
  flex: 0 0 auto;
  margin-inline: var(--s-1);
  color: var(--text-faint);
}

/* ---- Текущая страница (не ссылка) ---- */
.breadcrumb__current {
  display: inline-block;
  max-width: min(60ch, 100%);
  padding-inline: var(--s-1);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  font-weight: var(--fw-semi);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  /* Не переносим — даём горизонтальный скролл, цепочка остаётся читаемой */
  .breadcrumb__list {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;            /* Firefox */
    -webkit-overflow-scrolling: touch;
  }
  .breadcrumb__list::-webkit-scrollbar { display: none; } /* WebKit */
  .breadcrumb__item { flex: 0 0 auto; }
  .breadcrumb__current { max-width: 36ch; }
}

@media (max-width: 640px) {
  /* Схлоп: оставляем только первый сегмент и текущую страницу.
     Промежуточные пункты прячем, перед текущей — многоточие-маркер. */
  .breadcrumb__item:not(:first-child):not(.breadcrumb__item--current) {
    display: none;
  }
  .breadcrumb__item--current::before {
    content: "…";
    margin-inline: var(--s-1) var(--s-2);
    color: var(--text-faint);
  }
  /* Если цепочка из 2 уровней (текущая идёт сразу за первым) — маркер не нужен */
  .breadcrumb__item:first-child + .breadcrumb__item--current::before {
    content: none;
  }
  .breadcrumb__current { max-width: 24ch; }
}

/* ===== callout-note ===== */
/* ============================================================
 * callout-note · block.css
 * Скоуплено на .callout-note. Только токены (10-tokens/).
 * Конвенция разметки: ★research / premium-планка (своя разметка — готовой нет).
 * Цвет = СМЫСЛ типа врезки, не декор: note→--brand (единственный акцент),
 *   info→--info, tip→--success, warning→--warning, danger→--danger.
 *   Тип задаётся ОДНОЙ парой локальных переменных (--cn-accent/--cn-accent-soft),
 *   тело блока их только потребляет — добавить тип = одна строка-модификатор.
 * Анатомия: left-border-акцент + мягкая подложка + фикс-слот иконки + текст.
 * Адаптив: 980 / 640.
 * ========================================================== */

.callout-note {
  /* тип по умолчанию = note: единственный бренд-акцент (нейтрально-редакторский) */
  --cn-accent: var(--brand);
  --cn-accent-soft: var(--brand-soft);
  /* фикс-слот иконки — единый вертикальный ритм всех врезок */
  --cn-ic: 28px;

  display: grid;
  grid-template-columns: var(--cn-ic) minmax(0, 1fr);
  gap: var(--s-3);
  align-items: start;
  padding: var(--s-4) var(--s-5);
  /* left-border-акцент + парная мягкая подложка тем же цветом темы */
  border: var(--hairline);
  border-left: 3px solid var(--cn-accent);
  border-radius: var(--r-md);
  background:
    linear-gradient(var(--cn-accent-soft), var(--cn-accent-soft)),
    var(--surface);
  color: var(--text-dim);
}

/* ---- Иконка: фикс-слот, цвет наследует тип, подложка — мягкий тон ---- */
.callout-note__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--cn-ic);
  height: var(--cn-ic);
  color: var(--cn-accent);
  background: var(--cn-accent-soft);
  border-radius: var(--r-md);
}
/* пер-тип иконка показывается, лишние — спрятаны (одна разметка на все типы
   не нужна: иконка инлайнится в HTML, этот слот лишь центрирует SVG) */
.callout-note__icon svg { display: block; }

/* ---- Тело ---- */
.callout-note__body {
  min-width: 0;
  /* выравнивание текста по оптической середине иконки-слота */
  padding-top: calc((var(--cn-ic) - 1.2em) / 2);
}

.callout-note__title {
  margin: 0 0 var(--s-1);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

.callout-note__text {
  margin: 0;
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.callout-note__text + .callout-note__text { margin-top: var(--s-2); }

/* ссылки внутри тела подхватывают цвет типа, а не общий --brand */
.callout-note__text a {
  color: var(--cn-accent);
  text-decoration-color: color-mix(in srgb, var(--cn-accent) 40%, transparent);
}
.callout-note__text a:hover { text-decoration-color: var(--cn-accent); }

/* числа в теле (лимиты ставок/проценты/возраст) — табличные цифры */
.callout-note__num {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* ---- Типы (цвет = смысл) ---- */
.callout-note--info    { --cn-accent: var(--info);    --cn-accent-soft: var(--info-soft); }
.callout-note--tip     { --cn-accent: var(--success); --cn-accent-soft: var(--success-soft); }
.callout-note--warning { --cn-accent: var(--warning); --cn-accent-soft: var(--warning-soft); }
.callout-note--danger  { --cn-accent: var(--danger);  --cn-accent-soft: var(--danger-soft); }
/* note — дефолт (--brand), отдельный класс не нужен */

/* ---- Модификатор: компактный (без заголовка, плотнее) ---- */
.callout-note--compact {
  padding: var(--s-3) var(--s-4);
  --cn-ic: 24px;
}
.callout-note--compact .callout-note__text { font-size: var(--t-small); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .callout-note { padding: var(--s-4); }
}
@media (max-width: 640px) {
  .callout-note { gap: var(--s-2); padding: var(--s-3) var(--s-4); }
  .callout-note__text { font-size: var(--t-small); }
}

/* ===== casino-item-card ===== */
/* ============================================================
 * casino-item-card · block.css
 * Скоуплено на .rating-block / .casino-item. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-rating-guide. Адаптив: 980 / 640.
 * Визуал: surface-grad-оверлей + premium-тень (верхний хайлайт),
 * hover = lift + brand-glow + brand-бордер; рейтинг-бар светится акцентом.
 * Всё на токенах → эффекты работают на всех скинах (вкл. midnight-crypto).
 * ========================================================== */

.rating-block { --ci-logo: 124px; }

.casino-list {
  list-style: none; margin: 0; padding: 0;
  counter-reset: ci;
  display: flex; flex-direction: column; gap: var(--s-4);
}
.casino-list__row { display: block; }

/* ---- Карточка ---- */
.casino-item {
  counter-increment: ci;
  display: grid;
  grid-template-columns: var(--ci-logo) minmax(0, 1.5fr) 0.9fr 1.05fr minmax(150px, auto);
  grid-template-areas: "logo main nd mini cta";
  gap: var(--s-5);
  align-items: center;
  padding: var(--s-4);
  background-color: var(--surface);
  background-image: var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}
@media (prefers-reduced-motion: no-preference) {
  .casino-item:hover {
    box-shadow: var(--shadow-pop), var(--shadow-glow);
    transform: translateY(-3px);
    border-color: color-mix(in srgb, var(--brand) 42%, var(--rule));
  }
}
@media (prefers-reduced-motion: reduce) {
  .casino-item:hover {
    box-shadow: var(--shadow-pop), var(--shadow-glow);
    border-color: color-mix(in srgb, var(--brand) 42%, var(--rule));
  }
}

/* ---- 1 · Логотип + бейдж позиции ---- */
.ci-logo { grid-area: logo; position: relative; }
.ci-logo__img {
  width: var(--ci-logo); height: var(--ci-logo);
  object-fit: cover; border-radius: var(--r-md);
  background: var(--bg-2); border: var(--hairline);
}
.ci-logo::after {
  content: counter(ci);
  position: absolute; top: calc(-1 * var(--s-2)); left: calc(-1 * var(--s-2));
  min-width: 26px; height: 26px; padding: 0 6px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: var(--t-tiny); font-weight: var(--fw-bold); font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background-color: var(--brand); background-image: var(--grad-brand);
  border-radius: var(--r-pill); box-shadow: var(--shadow-glow), 0 1px 2px rgba(0,0,0,.18);
}

/* ---- 2 · Имя + рейтинг + промо ---- */
.ci-main { grid-area: main; display: flex; flex-direction: column; gap: var(--s-2); min-width: 0; }
.ci-name { font-family: var(--font-display); font-size: var(--t-h4); font-weight: var(--fw-bold); line-height: var(--lh-snug); }

.ci-rating__row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2); }
.ci-rating__k { font-size: var(--t-tiny); letter-spacing: .08em; text-transform: uppercase; color: var(--text-mute); }
.ci-rating__v { font-weight: var(--fw-bold); color: var(--brand); font-variant-numeric: tabular-nums; }
.ci-rating__v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.ci-rating__bar { height: 8px; margin-top: var(--s-1); background: var(--bg-3); border-radius: var(--r-pill); overflow: hidden; }
.ci-rating__fill {
  display: block; height: 100%; border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  /* мягкое свечение шкале (dataviz-акцент) */
  box-shadow: 0 0 12px -2px color-mix(in srgb, var(--rating-to) 60%, transparent);
}

.ci-promo__box {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: var(--s-2); position: relative;
  padding: var(--s-2) var(--s-3); margin-top: var(--s-1);
  background: var(--brand-soft); color: var(--brand);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md); cursor: pointer;
  transition: background var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease);
}
.ci-promo__box:hover {
  background: color-mix(in srgb, var(--brand) 16%, transparent);
  border-color: color-mix(in srgb, var(--brand) 60%, transparent);
  box-shadow: var(--shadow-glow);
}
.ci-promo__code { font-family: var(--font-mono); font-weight: var(--fw-semi); letter-spacing: .03em; }
.ci-promo__ic { display: inline-flex; }
.ci-promo__toast {
  position: absolute; inset-inline-start: 50%; bottom: calc(100% + 6px); transform: translateX(-50%);
  padding: 2px var(--s-2); font-size: var(--t-tiny); white-space: nowrap;
  color: var(--on-brand); background: var(--text); border-radius: var(--r-soft);
  opacity: 0; pointer-events: none; transition: opacity var(--dur-quick) var(--ease);
}
.ci-promo__box.is-copied .ci-promo__toast { opacity: 1; }

/* ---- 3 · Бездеп ---- */
.ci-nd { grid-area: nd; text-align: center; display: flex; flex-direction: column; gap: 2px; align-items: center; }
.ci-nd__title { font-size: var(--t-tiny); letter-spacing: .08em; text-transform: uppercase; color: var(--text-mute); }
.ci-nd__fs { font-family: var(--font-display); font-size: var(--t-h3); font-weight: var(--fw-bold); color: var(--text); font-variant-numeric: tabular-nums; }
.ci-nd__wager { font-size: var(--t-small); color: var(--text-mute); }
.ci-nd__terms { position: relative; margin-top: var(--s-1); }
.ci-nd__terms-btn { font-size: var(--t-tiny); color: var(--text-mute); text-decoration: underline; text-underline-offset: 2px; }
.ci-nd__terms-btn:hover { color: var(--brand); }
.ci-nd__terms-pop {
  position: absolute; inset-inline: 50% auto; left: 50%; transform: translateX(-50%); top: calc(100% + 6px);
  width: max(220px, 100%); z-index: var(--z-popover);
  padding: var(--s-3); text-align: left; font-size: var(--t-small); line-height: var(--lh-snug);
  color: var(--text-dim);
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
          backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border); border-radius: var(--r-md); box-shadow: var(--shadow-pop);
}
.ci-nd__terms-pop[hidden] { display: none; }

/* ---- 4 · Мини-грид ---- */
.ci-mini-grid { grid-area: mini; display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-2); margin: 0; }
.ci-mini { padding: var(--s-2) var(--s-3); background: var(--bg-2); border-radius: var(--r-md); }
.ci-mini__k { margin: 0; font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }
.ci-mini__v { margin: 2px 0 0; font-weight: var(--fw-semi); font-variant-numeric: tabular-nums; }

/* ---- 5 · CTA + страны ---- */
.ci-cta { grid-area: cta; display: flex; flex-direction: column; gap: var(--s-2); }
.ci-countries { font-size: var(--t-tiny); line-height: var(--lh-snug); }
.ci-countries__k { display: block; letter-spacing: .06em; text-transform: uppercase; color: var(--text-faint); }
.ci-countries__v { color: var(--text-mute); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .casino-item {
    grid-template-columns: var(--ci-logo) 1fr 1fr;
    grid-template-areas:
      "logo main main"
      "logo nd   mini"
      "cta  cta  cta";
    gap: var(--s-4);
  }
  .ci-cta { flex-direction: row; align-items: center; justify-content: space-between; gap: var(--s-4); }
  .ci-cta .btn { width: auto; flex: 0 0 auto; min-width: 160px; }
}
@media (max-width: 640px) {
  .rating-block { --ci-logo: 96px; }
  .casino-item {
    grid-template-columns: var(--ci-logo) 1fr;
    grid-template-areas:
      "logo main"
      "nd   nd"
      "mini mini"
      "cta  cta";
    gap: var(--s-3);
  }
  .ci-nd { flex-direction: row; gap: var(--s-3); text-align: left; justify-content: center; align-items: baseline; flex-wrap: wrap; }
  .ci-cta { flex-direction: column; }
  .ci-cta .btn { width: 100%; }
}

/* ===== casino-matcher-quiz ===== */
/* ============================================================
 * casino-matcher-quiz · block.css
 * Квиз-подбор казино: анкета (single-select option-cards) → матч-карточка
 * с dataviz-мерой совпадения и ОДНОЙ CTA. Скоуплено на .casino-matcher-quiz.
 * Только токены (10-tokens/). Конвенция: ★research (премиум-сигналы) +
 * переиспользование паттернов wagering-calculator (segmented/radio, dataviz-мера
 * на --val, T&C-drawer на <details>) и casino-item-card (фикс-слот лого, рейтинг-
 * бар на --bg-3-треке с градиентом, tabular-nums, --surface+--hairline+--r-lg+
 * --shadow-card). Один акцент --brand. Адаптив: 980 / 640.
 * JS: quiz.js (data-action="casinoQuiz") — прогрессивно; без JS виден 1-й шаг +
 * статичная демо-матч-карточка. Источник истины меры совпадения — --val 0..100.
 * ========================================================== */

.casino-matcher-quiz {
  --cmq-fit-h: 10px;            /* высота меры совпадения */
  --cmq-progress-h: 6px;        /* высота прогресс-бара */
  --cmq-logo: 120px;            /* фикс-слот лого матча */

  display: flex;
  flex-direction: column;
  gap: var(--s-5);
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  font-variant-numeric: tabular-nums;
}

/* ============ Шапка: eyebrow + заголовок + прогресс ============ */
.cmq-head { display: flex; flex-direction: column; gap: var(--s-3); }
.cmq-head__top {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--s-3); flex-wrap: wrap;
}
.cmq-eyebrow {
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .12em; text-transform: uppercase; color: var(--text-mute);
}
.cmq-title {
  margin: 0;
  font-family: var(--font-display); font-size: var(--t-h2);
  font-weight: var(--fw-bold); line-height: var(--lh-snug); color: var(--text);
}

/* Счётчик шага (tabular-nums, не «прыгает») */
.cmq-step {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px var(--s-3);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-mute); background: var(--bg-2);
  border-radius: var(--r-pill);
}
.cmq-step__n, .cmq-step__total { font-variant-numeric: tabular-nums; }
.cmq-step--done { color: var(--brand); background: var(--brand-soft); }

/* Прогресс — dataviz-мера (не точки): ширина = шаг/всего */
.cmq-progress {
  height: var(--cmq-progress-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.cmq-progress__fill {
  display: block; height: 100%; border-radius: inherit;
  width: calc(clamp(0, var(--val, 25), 100) * 1%);
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
  transition: width var(--dur-slow) var(--ease-out);
}

/* ============ Форма / шаги ============ */
.cmq-form { display: flex; flex-direction: column; gap: var(--s-5); margin: 0; border: none; padding: 0; }

/* Панель шага = <fieldset> без рамки. Скрытый шаг — [hidden] (рулит quiz.js) */
.cmq-step-panel { display: flex; flex-direction: column; gap: var(--s-4); margin: 0; border: none; padding: 0; min-width: 0; }
.cmq-step-panel[hidden] { display: none; }
.cmq-q {
  margin: 0; padding: 0;
  font-family: var(--font-display); font-size: var(--t-h3);
  font-weight: var(--fw-bold); line-height: var(--lh-snug); color: var(--text);
}

/* ---- Сетка вариантов (option-cards) ---- */
.cmq-options {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-3);
}

/* Карточка-вариант на нативном radio (паттерн segmented control, но крупный) */
.cmq-option { display: block; min-width: 0; }
.cmq-option__input { position: absolute; opacity: 0; width: 0; height: 0; }
.cmq-option__face {
  position: relative;
  display: flex; align-items: flex-start; gap: var(--s-3);
  min-height: var(--tap-min);
  height: 100%;
  padding: var(--s-4);
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: border-color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease),
              box-shadow var(--dur-quick) var(--ease),
              transform var(--dur-quick) var(--ease);
}
.cmq-option__face:hover { border-color: var(--rule-strong); background: var(--surface); }

/* Глиф критерия — фикс-слот, bespoke inline SVG */
.cmq-option__glyph {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px;
  color: var(--text-mute); background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: var(--r-soft);
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.cmq-option__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cmq-option__label { font-size: var(--t-body); font-weight: var(--fw-semi); color: var(--text); line-height: var(--lh-snug); }
.cmq-option__sub { font-size: var(--t-tiny); color: var(--text-faint); line-height: var(--lh-snug); }

/* Галочка-индикатор выбора (появляется при checked) */
.cmq-option__tick {
  position: absolute; top: var(--s-3); right: var(--s-3);
  color: var(--on-brand);
  opacity: 0; transform: scale(.6);
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}

/* Выбранное состояние — акцент рамкой + заливкой + глиф в бренд (не только цвет: ещё галочка + сдвиг) */
.cmq-option__input:checked + .cmq-option__face {
  border-color: var(--brand);
  background: var(--brand-soft);
  box-shadow: 0 0 0 1px var(--brand);
}
.cmq-option__input:checked + .cmq-option__face .cmq-option__glyph {
  color: var(--on-brand); background: var(--brand); border-color: var(--brand);
}
.cmq-option__input:checked + .cmq-option__face .cmq-option__label { color: var(--text); }
.cmq-option__input:checked + .cmq-option__face .cmq-option__tick {
  opacity: 1; transform: scale(1); color: var(--brand);
}
/* Фокус-кольцо рисует face (инпут визуально скрыт) */
.cmq-option__input:focus-visible + .cmq-option__face { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ============ Результат · матч-карточка ============ */
.cmq-result { display: flex; flex-direction: column; gap: var(--s-4); }
.cmq-result[hidden] { display: none; }
.cmq-result__k {
  margin: 0;
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .12em; text-transform: uppercase; color: var(--text-mute);
}

/* Матч-карточка: лого-слот + тело (единые pad/radius/shadow с casino-item-card) */
.cmq-match {
  display: grid;
  grid-template-columns: var(--cmq-logo) minmax(0, 1fr);
  gap: var(--s-5);
  align-items: start;
  padding: var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.cmq-match__logo { flex: 0 0 auto; }
.cmq-match__img {
  width: var(--cmq-logo); height: var(--cmq-logo);
  object-fit: cover; border-radius: var(--r-md);
  background: var(--surface); border: var(--hairline);
}
.cmq-match__body { display: flex; flex-direction: column; gap: var(--s-3); min-width: 0; }
.cmq-match__top {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: var(--s-3); flex-wrap: wrap;
}
.cmq-match__name {
  margin: 0;
  font-family: var(--font-display); font-size: var(--t-h3);
  font-weight: var(--fw-bold); line-height: var(--lh-snug); color: var(--text);
}
/* Тег совпадения: тон по силе матча (high=brand / mid=warning / low=neutral) */
.cmq-match__tag {
  flex: 0 0 auto;
  display: inline-flex; align-items: center;
  padding: 2px var(--s-3);
  font-size: var(--t-tiny); font-weight: var(--fw-bold);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--brand); background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.cmq-match__tag--mid { color: var(--warning); background: var(--warning-soft); }
.cmq-match__tag--low { color: var(--text-mute); background: var(--surface); border: var(--hairline); }

/* ---- Индекс совпадения — dataviz-мера (вместо звёзд) ---- */
.cmq-fit { display: flex; flex-direction: column; gap: var(--s-2); }
.cmq-fit__row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-3); }
.cmq-fit__k { font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase; color: var(--text-mute); }
.cmq-fit__v { font-weight: var(--fw-bold); color: var(--brand); font-variant-numeric: tabular-nums; }
.cmq-fit__v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.cmq-fit__bar {
  height: var(--cmq-fit-h);
  background: var(--bg-3); border-radius: var(--r-pill); overflow: hidden;
}
.cmq-fit__fill {
  display: block; height: 100%; border-radius: inherit;
  width: calc(clamp(0, var(--val, 0), 100) * 1%);
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease-out);
}

/* ---- Почему подошёл: фикс-слоты совпавших критериев ---- */
.cmq-reasons {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: var(--s-2);
}
.cmq-reason {
  display: flex; align-items: flex-start; gap: var(--s-2);
  font-size: var(--t-small); line-height: var(--lh-snug); color: var(--text-dim);
}
.cmq-reason__ic { flex: 0 0 auto; margin-top: 2px; color: var(--success); }
/* Несовпавший пункт — по смыслу --danger, и иконкой-крестом (не только цветом) */
.cmq-reason--miss { color: var(--text-mute); }
.cmq-reason--miss .cmq-reason__ic { color: var(--danger); }

.cmq-match__cta { align-self: flex-start; margin-top: var(--s-1); }

/* ============ Drawer «как считаем» — нативный <details> ============ */
.cmq-how { border-top: var(--hairline); padding-top: var(--s-3); }
.cmq-how__q {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-2);
  min-height: var(--tap-min);
  list-style: none; cursor: pointer; user-select: none;
  font-size: var(--t-small); font-weight: var(--fw-medium); color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.cmq-how__q::-webkit-details-marker { display: none; }
.cmq-how__q:hover { color: var(--brand); }
.cmq-how[open] .cmq-how__q { color: var(--brand); }
.cmq-how__chev {
  flex: 0 0 auto; color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.cmq-how__q:hover .cmq-how__chev { color: var(--brand); }
.cmq-how[open] .cmq-how__chev { transform: rotate(180deg); color: var(--brand); }
/* Раскрытие grid-rows 0fr→1fr (плавно, без JS-замера) */
.cmq-how__a { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--dur-base) var(--ease-out); }
.cmq-how[open] .cmq-how__a { grid-template-rows: 1fr; }
.cmq-how__inner { overflow: hidden; min-height: 0; }
.cmq-how__inner p { padding-top: var(--s-2); font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-dim); }

/* ============ Навигация ============ */
.cmq-nav {
  display: flex; align-items: center; gap: var(--s-3);
  flex-wrap: wrap;
  padding-top: var(--s-2);
}
.cmq-nav__spacer { flex: 1 1 auto; }
.cmq-nav__back[hidden], .cmq-nav__next[hidden], .cmq-nav__restart[hidden] { display: none; }

/* ============ Вариант --landed (карточка результата как самостоятельный блок) ============ */
.casino-matcher-quiz--landed .cmq-match__cta { align-self: stretch; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .casino-matcher-quiz { padding: var(--s-5); }
  .cmq-options { grid-template-columns: repeat(3, 1fr); gap: var(--s-2); }
  .cmq-option__face { flex-direction: column; gap: var(--s-2); padding: var(--s-3); }
  .cmq-option__tick { top: var(--s-2); right: var(--s-2); }
}
@media (max-width: 640px) {
  .casino-matcher-quiz { --cmq-logo: 84px; padding: var(--s-4); gap: var(--s-4); }
  /* Варианты в столбик: снова горизонтальная раскладка с глифом слева */
  .cmq-options { grid-template-columns: 1fr; }
  .cmq-option__face { flex-direction: row; align-items: center; padding: var(--s-3) var(--s-4); }
  .cmq-option__tick { position: static; opacity: 0; transform: scale(.6); margin-left: auto; }
  .cmq-option__input:checked + .cmq-option__face .cmq-option__tick { opacity: 1; transform: scale(1); }
  /* Матч-карточка: лого над телом */
  .cmq-match { grid-template-columns: 1fr; gap: var(--s-4); padding: var(--s-4); justify-items: start; }
  .cmq-match__cta { align-self: stretch; width: 100%; }
  .cmq-nav__next { flex: 1 1 auto; }
}

/* ============ Reduced motion: без анимации меры/прогресса/шеврона/тика ============ */
@media (prefers-reduced-motion: reduce) {
  .cmq-progress__fill, .cmq-fit__fill { transition: none; }
  .cmq-how__a { transition: none; }
  .cmq-how__chev { transition: color var(--dur-quick) var(--ease); }
  .cmq-option__tick { transition: none; }
}

/* ===== casino-rep-response ===== */
/* ============================================================
 * casino-rep-response · block.css
 * Скоуплено на .casino-rep-response / .crr. Только токены (10-tokens/).
 * Конвенция: html-base + details-drawer (data-action="tncToggle"). Адаптив: 640.
 * Один акцент = --brand (плашка бренда); success/warning/danger — статус спора.
 * ========================================================== */

.casino-rep-response { display: block; }

/* ---- Карточка ---- */
.crr {
  display: flex; flex-direction: column;
  max-width: 720px;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}

/* ---- Общий аватар-слот ---- */
.crr__avatar {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; flex: 0 0 auto;
  font-family: var(--font-display);
  font-size: var(--t-small); font-weight: var(--fw-bold);
  border-radius: var(--r-pill);
  border: var(--hairline);
}
.crr__avatar--user { color: var(--text-mute); background: var(--bg-3); }
.crr__avatar--rep  { color: var(--brand); background: var(--brand-soft); border-color: color-mix(in srgb, var(--brand) 35%, transparent); }

/* ---- 1 · Жалоба ---- */
.crr__complaint {
  display: flex; flex-direction: column; gap: var(--s-3);
  padding: var(--s-5);
  background: var(--bg-2);
  border-bottom: var(--hairline);
}
.crr__c-head { display: flex; align-items: center; gap: var(--s-3); }
.crr__c-meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1 1 auto; }
.crr__c-name { font-weight: var(--fw-bold); color: var(--text); }
.crr__c-sub { font-size: var(--t-tiny); color: var(--text-mute); font-variant-numeric: tabular-nums; }
.crr__id { font-family: var(--font-mono); font-size: .95em; }

/* Статус-бейдж (по смыслу: решено/в работе/отклонено) */
.crr__status {
  display: inline-flex; align-items: center; gap: var(--s-1);
  flex: 0 0 auto;
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  border-radius: var(--r-pill);
}
.crr__status-dot { width: 7px; height: 7px; flex: 0 0 auto; border-radius: var(--r-pill); background: currentColor; }
.crr__status--resolved { color: var(--success); background: var(--success-soft); }
.crr__status--progress { color: var(--warning); background: var(--warning-soft); }
.crr__status--rejected { color: var(--danger);  background: var(--danger-soft); }

.crr__c-text {
  margin: 0;
  font-size: var(--t-body); line-height: var(--lh-base);
  color: var(--text-dim);
}
.crr__c-facts { display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-5); margin: 0; }
.crr__fact { display: flex; align-items: baseline; gap: var(--s-2); }
.crr__fact dt { font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-faint); }
.crr__fact dd { margin: 0; font-weight: var(--fw-semi); color: var(--text); font-variant-numeric: tabular-nums; }

/* ---- 2 · Ответ представителя ---- */
.crr__reply {
  position: relative;
  display: flex; flex-direction: column; gap: var(--s-4);
  padding: var(--s-5) var(--s-5) var(--s-5) calc(var(--s-5) + var(--s-2));
}
/* Акцентная «нить» слева = ответ официального лица */
.crr__reply-spine {
  position: absolute; inset-block: var(--s-5); inset-inline-start: 0;
  width: 3px; border-radius: var(--r-pill);
  background: var(--brand);
}
.crr__r-head { display: flex; align-items: center; gap: var(--s-3); }
.crr__r-meta { display: flex; flex-direction: column; gap: var(--s-1); min-width: 0; }
.crr__r-name {
  display: inline-flex; align-items: center; flex-wrap: wrap; gap: var(--s-2);
  font-family: var(--font-display);
  font-size: var(--t-h4); font-weight: var(--fw-bold);
  color: var(--text);
}
.crr__badge {
  display: inline-flex; align-items: center; gap: var(--s-1);
  padding: 2px var(--s-2);
  font-family: var(--font-body);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .02em; text-transform: none;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
}
.crr__r-sub { font-size: var(--t-tiny); color: var(--text-mute); font-variant-numeric: tabular-nums; }

.crr__r-text { display: flex; flex-direction: column; gap: var(--s-3); }
.crr__r-text p { margin: 0; font-size: var(--t-body); line-height: var(--lh-base); color: var(--text-dim); }

/* Метрики реакции */
.crr__r-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-3);
  margin: 0;
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.crr__stat { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.crr__stat-k { font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }
.crr__stat-v { margin: 0; font-family: var(--font-display); font-size: var(--t-h4); font-weight: var(--fw-bold); color: var(--text); font-variant-numeric: tabular-nums; }
.crr__stat--meter { grid-column: 1 / -1; }
.crr__meter-bar { display: block; height: 6px; margin-top: var(--s-1); background: var(--bg-3); border-radius: var(--r-pill); overflow: hidden; }
.crr__meter-fill { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--rating-from), var(--rating-to)); }

/* ---- 3 · Хронология (drawer) ---- */
.crr__timeline-wrap { position: relative; }
.crr__timeline-btn {
  display: inline-flex; align-items: center; gap: var(--s-1);
  min-height: var(--tap-min);
  font-size: var(--t-small); font-weight: var(--fw-medium);
  color: var(--text-mute);
}
.crr__timeline-btn:hover { color: var(--brand); }
.crr__chev { display: inline-flex; transition: transform var(--dur-quick) var(--ease); }
.crr__timeline-btn[aria-expanded="true"] .crr__chev { transform: rotate(180deg); }

.crr__timeline {
  list-style: none;
  margin: var(--s-2) 0 0; padding: var(--s-4) var(--s-4) var(--s-4) var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.crr__timeline[hidden] { display: none; }
.crr__tl-item {
  position: relative;
  display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-1) var(--s-3);
  padding: var(--s-2) 0 var(--s-2) var(--s-4);
}
.crr__tl-item::before {
  content: ""; position: absolute; inset-inline-start: 0; top: calc(var(--s-2) + 6px);
  width: 8px; height: 8px; border-radius: var(--r-pill);
  background: var(--rule-strong);
}
/* линия-коннектор между точками */
.crr__tl-item:not(:last-child)::after {
  content: ""; position: absolute; inset-inline-start: 3px; top: calc(var(--s-2) + 14px); bottom: -2px;
  width: 2px; background: var(--rule);
}
.crr__tl-item--done::before { background: var(--success); }
.crr__tl-item time { font-size: var(--t-tiny); font-weight: var(--fw-semi); color: var(--text-mute); font-variant-numeric: tabular-nums; flex: 0 0 auto; min-width: 56px; }
.crr__tl-item span { font-size: var(--t-small); color: var(--text-dim); }

/* ---- Фут ---- */
.crr__foot { padding: var(--s-3) var(--s-5); border-top: var(--hairline); background: var(--bg-2); }
.crr__note { margin: 0; font-size: var(--t-tiny); color: var(--text-faint); }

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .crr { max-width: none; }
  .crr__complaint { padding: var(--s-4); }
  .crr__c-head { flex-wrap: wrap; }
  .crr__status { order: 3; }
  .crr__reply { padding: var(--s-4) var(--s-4) var(--s-4) calc(var(--s-4) + var(--s-2)); }
  .crr__reply-spine { inset-block: var(--s-4); }
  .crr__r-stats { grid-template-columns: 1fr 1fr; }
  .crr__foot { padding: var(--s-3) var(--s-4); }
}

/* ===== casinos-to-avoid-card ===== */
/* ============================================================
 * casinos-to-avoid-card · block.css
 * Скоуплено на .avoid-card. Только токены (10-tokens/).
 * Назначение: карточка «Избегать»/blacklist — оператор с серьёзными проблемами:
 *   статус-лента, severity-мера риска (dataviz, не звёзды), список красных
 *   флагов, drawer с пруфами, ОДНА CTA на БЕЗОПАСНУЮ альтернативу (не на сам
 *   blacklist-бренд). Защита игрока, не конверсия проблемной площадки.
 * Эталон нейминга/слотов/тени/меры/drawer: casino-item-card +
 *   rating-ledger-table (disclosure). Антипод bonus-card/featured-card.
 * Дисциплина цвета: --danger несёт СМЫСЛ (статус, флаги, мера), но НЕ заливает
 *   карточку — поверхность остаётся --surface, danger держится в акценте-канте,
 *   чипах-флагах и мере. Единственная «положительная» CTA — --brand
 *   (рекомендованная замена), чтобы не было мульти-акцента.
 * Числа — tabular-nums. Адаптив: 980 / 640. touch ≥ --tap-min.
 * ========================================================== */

.avoid-card {
  --av-logo: 64px;
  display: flow-root;
  color: var(--text);
}

/* ---- Карточка: surface + danger-кант слева (смысловой акцент, не заливка) ---- */
.avoid-card__inner {
  display: grid;
  gap: var(--s-4);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-left: 3px solid var(--danger);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- Статус-лента «Избегать» ---- */
.avoid-card__flagline {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  align-self: start;
  margin: 0;
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--danger);
  background: var(--danger-soft);
  border-radius: var(--r-pill);
}
.avoid-card__flag-ic { display: inline-flex; }

/* ---- Идентификация ---- */
.avoid-card__head { display: flex; align-items: flex-start; gap: var(--s-4); min-width: 0; }
.avoid-card__logo {
  width: var(--av-logo);
  height: var(--av-logo);
  flex: 0 0 auto;
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
  /* приглушаем лого — не рекламируем бренд */
  filter: grayscale(1);
  opacity: .85;
}
.avoid-card__id { min-width: 0; flex: 1 1 auto; }
.avoid-card__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.avoid-card__tags { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-2); margin: var(--s-1) 0 var(--s-3); }
.avoid-card__tag {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-soft);
  white-space: nowrap;
}

/* ---- Severity-мера риска (dataviz; --danger по смыслу) ---- */
.avoid-card__severity { min-width: 0; }
.avoid-card__severity-cap {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-bottom: var(--s-2);
}
.avoid-card__severity-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.avoid-card__severity-v {
  font-weight: var(--fw-bold);
  color: var(--danger);
  font-variant-numeric: tabular-nums;
  flex: 0 0 auto;
}
.avoid-card__meter {
  display: block;
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.avoid-card__meter-fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) * 1%);
  border-radius: inherit;
  /* высокий риск = насыщенный danger (смысл, а не декор) */
  background: var(--danger);
  transition: width var(--dur-slow) var(--ease);
}

/* ---- Красные флаги ---- */
.avoid-card__reasons-title {
  margin: 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.avoid-card__reasons {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}
.avoid-card__reason {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.avoid-card__reason-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  margin-top: 1px;
  color: var(--danger);
  background: var(--danger-soft);
  border-radius: var(--r-pill);
}
.avoid-card__reason-text b { font-weight: var(--fw-semi); color: var(--text); }

/* ---- Доказательства: drawer ---- */
.avoid-card__detail { min-width: 0; }
.avoid-card__more {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding: var(--s-2) 0;
  font: inherit;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.avoid-card__more:hover { color: var(--text); }
.avoid-card__more-ic { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.avoid-card__more[aria-expanded="true"] { color: var(--text); }
.avoid-card__more[aria-expanded="true"] .avoid-card__more-ic { transform: rotate(180deg); }

.avoid-card__drawer { margin-top: var(--s-2); }
.avoid-card__drawer[hidden] { display: none; }
.avoid-card__evidence {
  margin: 0;
  padding: var(--s-4);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--s-3) var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.avoid-card__ev { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.avoid-card__ev dt {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.avoid-card__ev dd {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.avoid-card__note {
  margin: var(--s-3) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- Действие: ОДНА CTA на безопасную альтернативу ---- */
.avoid-card__cta-row {
  display: flex;
  align-items: center;
  gap: var(--s-4);
  flex-wrap: wrap;
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.avoid-card__cta.btn { flex: 0 0 auto; }
.avoid-card__cta-ic { display: inline-flex; }
.avoid-card__cta-hint {
  margin: 0;
  flex: 1 1 220px;
  min-width: 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .avoid-card__inner { padding: var(--s-4); gap: var(--s-3); }
  .avoid-card__name { font-size: var(--t-h4); }
  .avoid-card__evidence { grid-template-columns: 1fr 1fr; }
  .avoid-card__cta-row { flex-direction: column; align-items: stretch; }
  .avoid-card__cta.btn { width: 100%; }
}

/* ===== category-index ===== */
/* ============================================================
 * category-index · block.css
 * Скоуплено на .category-index. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   плотный сканируемый «указатель» категорий: фикс-слот bespoke-иконки +
 *   ярлык + tabular-счётчик + chevron, хайрлайн-разделители строк, левый
 *   акцент-рельс на hover/active, дисциплина нейтралей. Эталон нейминга/
 *   слотов/shadow-card: casino-item-card. Отличие от category-showcase:
 *   там промо-тайлы (грид), здесь — компактный список-навигация.
 * Один акцент — --brand (иконка-слот, рельс, hover, активный пункт);
 *   --text-* нейтрали несут всё остальное. Числа — tabular-nums.
 * Вся строка кликабельна: ОДНА <a> со stretched-link (::after на всю строку).
 * CSS-only, JS не требуется. Адаптив: 980 / 640. touch ≥ --tap-min.
 * ========================================================== */

.category-index {
  /* фикс-слоты: квадрат иконки + ширина числовой колонки счётчика */
  --cidx-icon: 36px;
  --cidx-count-col: 4ch;

  /* карточка-поверхность по контракту: surface + hairline + r-lg + shadow-card */
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  padding: var(--s-5);

  color: var(--text);
  font-family: var(--font-body);
}

/* ---- Шапка: eyebrow + заголовок + бейдж «всего N» ---- */
.category-index__head {
  margin-bottom: var(--s-4);
}
.category-index__head .eyebrow { margin: 0 0 var(--s-2); }

.category-index__head-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3) var(--s-4);
  flex-wrap: wrap;
}
.category-index__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Бейдж «всего»: крупное число (tabular) + нейтральная подпись */
.category-index__total {
  margin: 0;
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-2);
  flex: 0 0 auto;
}
.category-index__total-num {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.category-index__total-label {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Группа (опц.): подпись-рубрика + список ---- */
.category-index__group + .category-index__group { margin-top: var(--s-5); }

.category-index__group-title {
  margin: 0 0 var(--s-1);
  padding-inline: var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* ---- Список (плоский, хайрлайн между строками) ---- */
.category-index__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.category-index__row {
  display: block;
  border-top: var(--hairline);
}
.category-index__list > .category-index__row:first-child { border-top: 0; }

/* ---- Строка-ссылка: фикс-слоты [icon] label …… [count] [chevron] ---- */
.category-index__item {
  position: relative;                 /* контекст для stretched-link */
  display: grid;
  grid-template-columns: var(--cidx-icon) minmax(0, 1fr) var(--cidx-count-col) auto;
  align-items: center;
  gap: var(--s-3);
  min-height: var(--tap-min);         /* touch-target */
  padding: var(--s-2) var(--s-2);
  color: var(--text-dim);
  text-decoration: none;
  border-radius: var(--r-md);
  /* левый «рельс» под индикатор активного/наведённого пункта (inset box-shadow) */
  box-shadow: inset 2px 0 0 transparent;
  transition:
    color var(--dur-quick) var(--ease),
    background var(--dur-quick) var(--ease),
    box-shadow var(--dur-quick) var(--ease);
}

/* stretched-link: вся строка кликабельна одной ссылкой */
.category-index__item::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
}

/* hover / focus — один акцент (--brand), мягкая подложка + рельс */
.category-index__item:hover,
.category-index__item:focus-visible {
  color: var(--brand);
  background: var(--brand-soft);
  box-shadow: inset 2px 0 0 var(--brand);
}
/* :focus-visible наследуется из base — ринг внутрь скруглённого пункта */
.category-index__item:focus-visible { outline-offset: -2px; }

/* активный пункт (= «вы здесь») */
.category-index__item[aria-current="page"] {
  color: var(--brand);
  background: var(--brand-soft);
  box-shadow: inset 2px 0 0 var(--brand);
}
.category-index__item[aria-current="page"] .category-index__label { font-weight: var(--fw-semi); }

/* ---- 1 · Фикс-слот bespoke-иконки (единственный носитель акцента в строке) ---- */
.category-index__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--cidx-icon);
  height: var(--cidx-icon);
  flex: 0 0 auto;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
  transition: background var(--dur-base) var(--ease);
}
.category-index__icon svg { display: block; }
.category-index__item:hover .category-index__icon,
.category-index__item:focus-visible .category-index__icon,
.category-index__item[aria-current="page"] .category-index__icon {
  background: color-mix(in srgb, var(--brand) 16%, transparent);
}

/* ---- 2 · Ярлык категории (усечение в одну строку) ---- */
.category-index__label {
  min-width: 0;
  font-size: var(--t-body);
  font-weight: var(--fw-medium);
  line-height: var(--lh-snug);
  color: inherit;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- 3 · Счётчик (tabular, выровнен по правому краю слота) ---- */
.category-index__count {
  justify-self: end;
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.category-index__item:hover .category-index__count,
.category-index__item:focus-visible .category-index__count,
.category-index__item[aria-current="page"] .category-index__count { color: var(--brand); }

/* пустая категория — приглушённый прочерк, без ложного «0» как акцента */
.category-index__count--empty { color: var(--text-faint); }
.category-index__item:hover .category-index__count--empty,
.category-index__item:focus-visible .category-index__count--empty { color: var(--text-mute); }

/* ---- 4 · Chevron (нейтральный, едет вправо на hover) ---- */
.category-index__chevron {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease), color var(--dur-quick) var(--ease);
}
.category-index__item:hover .category-index__chevron,
.category-index__item:focus-visible .category-index__chevron {
  color: var(--brand);
  transform: translateX(3px);
}

/* строка-«заглушка» (нет предложений) — слегка приглушена целиком */
.category-index__row--muted .category-index__label { color: var(--text-mute); }

/* ============ Вариант: --compact (без иконок, плотный сайдбар) ============ */
.category-index--compact { padding: var(--s-4); }
.category-index--compact .category-index__item {
  grid-template-columns: minmax(0, 1fr) var(--cidx-count-col) auto;
}
.category-index--compact .category-index__icon { display: none; }
.category-index--compact .category-index__label { font-size: var(--t-small); font-weight: var(--fw-semi); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .category-index { padding: var(--s-4); }
}
@media (max-width: 640px) {
  .category-index { --cidx-icon: 32px; padding: var(--s-4); }
  .category-index__head-row { gap: var(--s-1) var(--s-3); }
  .category-index__label { white-space: normal; }
}

/* ============ Reduced motion: гасим доп. сдвиги (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .category-index__item,
  .category-index__chevron,
  .category-index__icon { transition: none; }
  .category-index__item:hover .category-index__chevron,
  .category-index__item:focus-visible .category-index__chevron { transform: none; }
}

/* ===== category-showcase ===== */
/* ============================================================
 * category-showcase · block.css
 * Скоуплено на .category-showcase / .category-card. Только токены (10-tokens/).
 * Конвенция разметки: ★research / premium-планка (готовой разметки нет).
 * Один акцент — --brand (иконка + cue + hover-обводка). Счётчики —
 * tabular-nums. Вся карточка кликабельна через stretched-link (ОДНА <a>).
 * Адаптив: 980 / 640.
 * ========================================================== */

.category-showcase {
  /* фикс-слот иконки: единый размер во всех тайлах (premium-ритм) */
  --cc-icon: 56px;
  /* минимальная ширина тайла → авто 2–4 колонки */
  --cc-min: 240px;
}

/* ---- Шапка ---- */
.category-showcase__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-6);
}
.category-showcase__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.category-showcase__lede {
  margin: 0;
  max-width: var(--container-prose);
}

/* ---- Грид тайлов (owns колонки/gap) ---- */
.category-showcase__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--cc-min), 1fr));
  gap: var(--s-4);
}
.category-showcase__cell { display: flex; min-width: 0; }

/* ---- Тайл: единые padding/radius/shadow (как .surface) ---- */
.category-card {
  position: relative;            /* контекст для stretched-link */
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-3);
  width: 100%;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease);
}
/* hover/focus всей карточки (фокус ловит вложенная ссылка) */
.category-card:hover,
.category-card:focus-within {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
  transform: translateY(-2px);
}

/* ---- Фикс-слот bespoke-иконки (единственный акцент в теле) ---- */
.category-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--cc-icon);
  height: var(--cc-icon);
  border-radius: var(--r-md);
  background: var(--brand-soft);
  color: var(--brand);
  transition: background var(--dur-base) var(--ease);
}
.category-card__icon svg { display: block; }
.category-card:hover .category-card__icon,
.category-card:focus-within .category-card__icon {
  background: color-mix(in srgb, var(--brand) 16%, transparent);
}

/* ---- Заголовок + stretched-link (ОДНА CTA, вся карточка кликабельна) ---- */
.category-card__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.category-card__link {
  color: inherit;
  text-decoration: none;
}
/* растягиваем хит-область ссылки на всю карточку */
.category-card__link::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
}
.category-card:hover .category-card__link,
.category-card__link:focus-visible { color: var(--brand); }

/* ---- Счётчик: число (tabular) + подпись-нейтраль ---- */
.category-card__count {
  margin: 0;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s-1) var(--s-2);
}
.category-card__num {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.category-card__count-label {
  font-size: var(--t-small);
  color: var(--text-mute);
}

/* ---- Описание (clamp 3 строки — ровный нижний край) ---- */
.category-card__desc {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
}

/* ---- Cue «Смотреть →» прижат к низу (фикс-слот, единый ритм) ---- */
.category-card__cue {
  margin-top: auto;
  padding-top: var(--s-2);
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  letter-spacing: .01em;
  color: var(--brand);
}
.category-card__cue-ic {
  transition: transform var(--dur-base) var(--ease);
}
.category-card:hover .category-card__cue-ic,
.category-card:focus-within .category-card__cue-ic {
  transform: translateX(3px);
}

/* ============ Модификатор: компактные тайлы ============ */
.category-showcase--compact { --cc-icon: 44px; --cc-min: 200px; }
.category-showcase--compact .category-card { padding: var(--s-4); gap: var(--s-2); }
.category-showcase--compact .category-card__title,
.category-showcase--compact .category-card__num { font-size: var(--t-h4); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  /* до 2 колонок: подбираем минимум, чтобы не сваливаться в 1 раньше времени */
  .category-showcase { --cc-min: min(280px, 100%); }
  .category-showcase__grid { gap: var(--s-3); }
}
@media (max-width: 640px) {
  /* одна колонка: тайл во всю ширину, touch-friendly */
  .category-showcase { --cc-icon: 48px; --cc-min: 100%; }
  .category-card { padding: var(--s-4); }
}

/* ===== chain-badges ===== */
/* ============================================================
 * chain-badges · block.css
 * Скоуплено на .chain-badges. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка). Компактные пилюли-
 *   бейджи сетей с CSS-tooltip (hover/focus, без JS). Один акцент — --brand
 *   (точка/обводка активного бейджа + одна опц. CTA). Числа — tabular-nums.
 *   bespoke inline SVG. Адаптив: 980 / 640.
 * ========================================================== */

.chain-badges { display: block; }

/* ---- Шапка ---- */
.chain-badges__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.chain-badges__head .eyebrow { margin: 0; }
.chain-badges__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.chain-badges__lede { margin: 0; max-width: var(--container-prose); }

/* Числа — табличные */
.chain-badges__num { font-variant-numeric: tabular-nums; }

/* ---- Полоса бейджей (wrap, как .cluster, но скоуплено) ---- */
.chain-badges__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-3);
}
.chain-badges__item { display: block; }

/* ---- Бейдж-пилюля: точка + имя + тип-чип ---- */
.chain-badges__badge {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  color: var(--text-dim);
  cursor: pointer;
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease);
}
.chain-badges__badge:hover,
.chain-badges__badge:focus-visible {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
  color: var(--text);
}

/* точка-марка — нейтральная, красится currentColor от бейджа */
.chain-badges__dot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.chain-badges__dot svg { display: block; }
.chain-badges__badge:hover .chain-badges__dot,
.chain-badges__badge:focus-visible .chain-badges__dot { color: var(--brand); }

.chain-badges__name {
  font-weight: var(--fw-semi);
  font-size: var(--t-small);
  color: var(--text);
  white-space: nowrap;
}

/* тип-чип сети (ERC-20/TRC-20…) — нейтральный, mono */
.chain-badges__chip {
  padding: 1px var(--s-2);
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  letter-spacing: .02em;
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-pill);
  font-variant-numeric: tabular-nums;
}

/* ---- Tooltip (CSS-only) ---- */
.chain-badges__tip {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + var(--s-2));
  transform: translateX(-50%) translateY(4px);
  z-index: var(--z-popover);
  width: max-content;
  max-width: 230px;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: var(--s-3);
  text-align: left;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.chain-badges__tip::after {
  content: "";
  position: absolute;
  top: 100%;
  inset-inline-start: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: var(--surface);
}
.chain-badges__badge:hover .chain-badges__tip,
.chain-badges__badge:focus-visible .chain-badges__tip {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.chain-badges__tip-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
}
.chain-badges__tip-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.chain-badges__tip-v {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  text-align: right;
}

/* ---- CTA (опц., ровно одна) ---- */
.chain-badges__cta {
  margin-top: var(--s-5);
  display: flex;
  justify-content: flex-start;
}

/* ============ Модификатор: по центру ============ */
.chain-badges--center .chain-badges__list { justify-content: center; }
.chain-badges--center .chain-badges__head { align-items: center; text-align: center; }
.chain-badges--center .chain-badges__cta { justify-content: center; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .chain-badges__title { font-size: var(--t-h3); }
}
@media (max-width: 640px) {
  .chain-badges__list { gap: var(--s-2); }
  .chain-badges__tip { max-width: min(230px, 72vw); }
  .chain-badges__cta { justify-content: stretch; }
  .chain-badges__cta .btn { width: 100%; }
}

/* ============ Reduced motion (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .chain-badges__badge,
  .chain-badges__tip { transition: none; }
}

/* ===== citation-box ===== */
/* ============================================================
 * citation-box · block.css
 * Скоуплено на .citation-box. Только токены (10-tokens/).
 * Конвенция разметки/JS: ★research / премиум-планка (готовой разметки нет —
 *   спроектировано по premium-сигналам и эталону casino-item-card).
 * Один акцент — --brand: акцент-планка слева + кавычка-глиф + иконка-тип.
 *   Тип источника задаётся ОДНОЙ парой локальных переменных
 *   (--cb-accent / --cb-accent-soft); тело только их потребляет → новый тип =
 *   одна строка-модификатор. --info/--success берутся ТОЛЬКО по смыслу
 *   (регулятор / рецензируемое исследование), не для декора.
 *   Нейтрали несут текст/атрибуцию/мету; числа и даты — tabular-nums (dataviz,
 *   не «звёзды»). Фикс-слоты: иконка-тип (--cb-ic), кавычка (--cb-mark).
 *   Единые с карточками surface/hairline/radius/shadow.
 * Анатомия: head(тип+ярлык+ref) + mark + body(blockquote) + cite + actions
 *   (link / copy / more-toggle) + meta-drawer ([hidden] или <details>).
 * Адаптив: 980 / 640. Motion — subtle/функциональный (наследует reduced-motion).
 * ========================================================== */

.citation-box {
  /* тип по умолчанию = brand (нейтрально-редакторский, единственный акцент) */
  --cb-accent: var(--brand);
  --cb-accent-soft: var(--brand-soft);
  /* фикс-слоты — единый вертикальный ритм всех вариантов */
  --cb-ic: 32px;
  --cb-mark: 34px;

  position: relative;
  display: grid;
  /* кавычка в фикс-слоте + текстовая авто-колонка; остальные ряды тянутся на 2 */
  grid-template-columns: var(--cb-mark) minmax(0, 1fr);
  grid-template-areas:
    "head   head"
    "mark   body"
    ".      cite"
    "actions actions"
    "meta   meta";
  column-gap: var(--s-4);
  row-gap: var(--s-3);
  /* редакторская врезка: акцент-планка слева + лёгкая подложка тем же тоном */
  padding: var(--s-4) 0 var(--s-4) var(--s-5);
  border-left: 3px solid var(--cb-accent);
  color: var(--text-dim);
}

/* ---- Шапка: тип источника + ярлык + порядковый ref ---- */
.citation-box__head {
  grid-area: head;
  display: flex;
  align-items: center;
  gap: var(--s-2);
  min-width: 0;
}
.citation-box__type {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--cb-ic);
  height: var(--cb-ic);
  color: var(--cb-accent);
  background: var(--cb-accent-soft);
  border-radius: var(--r-md);
}
.citation-box__type svg { display: block; }
.citation-box__kicker {
  min-width: 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--cb-accent);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* порядковый номер сноски [n] — прижат вправо, табличные цифры */
.citation-box__ref {
  margin-left: auto;
  flex: 0 0 auto;
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-variant-numeric: tabular-nums;
  color: var(--text-faint);
}

/* ---- Кавычка-глиф: фикс-слот, цветовое пятно акцента ---- */
.citation-box__mark {
  grid-area: mark;
  width: var(--cb-mark);
  height: var(--cb-mark);
  color: var(--cb-accent);
  /* оптически приподнимаем к baseline первой строки текста */
  margin-top: calc(-1 * var(--s-1));
  opacity: .85;
}

/* ---- Тело цитаты ---- */
.citation-box__body {
  grid-area: body;
  min-width: 0;
  margin: 0;
  padding: 0; /* срезаем ua-отступ blockquote */
}
.citation-box__text {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-medium);
  line-height: var(--lh-base);
  color: var(--text);
  text-wrap: pretty;
}
.citation-box__text + .citation-box__text { margin-top: var(--s-3); }

/* числа/даты/проценты внутри цитаты и меты — табличные цифры */
.citation-box__num {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

/* ---- Атрибуция источника (одна строка, переносится) ---- */
.citation-box__cite {
  grid-area: cite;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s-2);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.citation-box__source {
  font-style: normal; /* <cite> по дефолту курсив — снимаем для разборчивости */
  font-weight: var(--fw-semi);
  color: var(--text);
}
.citation-box__pub { color: var(--text-mute); }
.citation-box__date { color: var(--text-faint); }
.citation-box__sep { color: var(--rule-strong); user-select: none; }

/* ---- Действия: ссылка / copy / тоггл библио-справки ---- */
.citation-box__actions {
  grid-area: actions;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) var(--s-4);
  margin-top: var(--s-1);
}

/* основная ссылка на источник (всегда видна; не партнёрская → обычный <a>) */
.citation-box__link {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--cb-accent);
  text-decoration: none;
}
.citation-box__link-txt {
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--cb-accent) 40%, transparent);
  text-underline-offset: 3px;
  transition: text-decoration-color var(--dur-quick) var(--ease);
}
.citation-box__link:hover .citation-box__link-txt { text-decoration-color: var(--cb-accent); }
.citation-box__link-ic { flex: 0 0 auto; }

/* copy-ссылки: нейтральная кнопка + toast (паттерн промокода) */
.citation-box__copy {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.citation-box__copy:hover { color: var(--cb-accent); }
.citation-box__copy-ic { flex: 0 0 auto; }
.citation-box__copy.is-copied { color: var(--success); }
.citation-box__toast {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + 6px);
  transform: translateX(-50%);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  white-space: nowrap;
  color: var(--on-brand);
  background: var(--text);
  border-radius: var(--r-soft);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease);
}
.citation-box__copy.is-copied .citation-box__toast { opacity: 1; }

/* тоггл раскрытия библио-справки (JS-drawer) */
.citation-box__more {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  margin-left: auto; /* прижимаем «справку» к правому краю строки действий */
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.citation-box__more:hover { color: var(--cb-accent); }
.citation-box__chev {
  flex: 0 0 auto;
  transition: transform var(--dur-base) var(--ease);
}
.citation-box__more[aria-expanded="true"] .citation-box__chev { transform: rotate(180deg); }

/* ---- Drawer: полная библио-справка (фикс-слоты ключ/значение) ---- */
.citation-box__meta {
  grid-area: meta;
  margin: 0;
  padding: var(--s-4);
  display: grid;
  gap: var(--s-2);
  background: var(--cb-accent-soft);
  border-radius: var(--r-md);
}
.citation-box__meta[hidden] { display: none; }
.citation-box__meta-row {
  display: grid;
  grid-template-columns: minmax(96px, 0.4fr) minmax(0, 1fr);
  gap: var(--s-2) var(--s-4);
  align-items: baseline;
  padding-bottom: var(--s-2);
  border-bottom: 1px solid color-mix(in srgb, var(--rule) 60%, transparent);
}
.citation-box__meta-row:last-child { padding-bottom: 0; border-bottom: 0; }
.citation-box__meta-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.citation-box__meta-v {
  min-width: 0;
  font-size: var(--t-small);
  color: var(--text-dim);
  overflow-wrap: anywhere;
}
.citation-box__meta-url {
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  color: var(--text-mute);
}

/* ============================================================
 * Тип источника (цвет = смысл; brand = дефолт)
 * ========================================================== */
.citation-box--regulator { --cb-accent: var(--info);    --cb-accent-soft: var(--info-soft); }
.citation-box--research  { --cb-accent: var(--success); --cb-accent-soft: var(--success-soft); }
/* data / press — нейтральный бренд-акцент (дефолт), отдельный класс не нужен */

/* ============================================================
 * Варианты
 * ========================================================== */

/* --card — боксированная поверхность (единые surface/hairline/radius/shadow) */
.citation-box--card {
  padding: var(--s-6);
  background:
    linear-gradient(var(--cb-accent-soft), var(--cb-accent-soft)),
    var(--surface);
  border: var(--hairline);
  border-left: 3px solid var(--cb-accent);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease);
}
.citation-box--card:hover { box-shadow: var(--shadow-pop); }

/* --compact — плотная inline-врезка: drawer на нативном <details>, без mark-слота;
   действия линейны, цитата чуть мельче. Кладётся прямо в поток прозы. */
.citation-box--compact {
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas:
    "head"
    "body"
    "cite"
    "meta"
    "actions";
  row-gap: var(--s-2);
  padding: var(--s-3) 0 var(--s-3) var(--s-4);
}
.citation-box--compact .citation-box__text { font-size: var(--t-body); }

/* нативный <details>-drawer (Демо 2) занимает место meta-слота */
.citation-box__details { grid-area: meta; }
.citation-box__summary {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  list-style: none;
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.citation-box__summary::-webkit-details-marker { display: none; }
.citation-box__summary:hover { color: var(--cb-accent); }
.citation-box__details[open] .citation-box__summary .citation-box__chev { transform: rotate(180deg); }
.citation-box__details .citation-box__meta { margin-top: var(--s-2); }
.citation-box__details-note {
  margin: var(--s-2) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}
.citation-box__age {
  display: inline-flex;
  align-items: center;
  margin-right: var(--s-1);
  padding: 0 6px;
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-pill);
}

/* в compact-варианте основная ссылка идёт последним рядом (actions) */
.citation-box--compact .citation-box__link { grid-area: actions; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .citation-box--card { padding: var(--s-5); }
  .citation-box__text { font-size: var(--t-body); }
}

@media (max-width: 640px) {
  /* узкий экран: кавычка над текстом, всё в одну колонку */
  .citation-box {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "head"
      "mark"
      "body"
      "cite"
      "actions"
      "meta";
    row-gap: var(--s-3);
    padding: var(--s-3) 0 var(--s-3) var(--s-4);
  }
  .citation-box__mark { margin-top: 0; }
  .citation-box--card { padding: var(--s-4); }
  /* действия в столбик: ссылка/копирование/справка не жмутся */
  .citation-box__actions {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-1);
  }
  .citation-box__more { margin-left: 0; }
  .citation-box__meta-row { grid-template-columns: minmax(0, 1fr); gap: 2px; }
}

/* ===== cluster-section ===== */
/* ============================================================
 * cluster-section · block.css
 * Скоуплено на .cluster-section. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   тематическая группа контента: cluster-«рельс» (акцент кластера) +
 *   eyebrow + H2 + lede + опц. tabular-счётчик и текстовая «смотреть все»;
 *   ниже — нейтральный __grid (owns колонки/gap), куда кладутся ЛЮБЫЕ
 *   карточки (blog-card / review-card / game-card …). Эталон нейминга/
 *   слотов/shadow: casino-item-card; паттерн «секция-обёртка + грид owns
 *   колонки» — как related-rail / category-showcase.
 * Один акцент — --brand (рельс кластера, цифра-счётчик, «смотреть все»);
 *   привязка к теме кластера — через body[data-cluster=…] из tokens.css
 *   (блок не хардкодит цвет, наследует --brand/--brand-2 кластера).
 * Числа — tabular-nums. CSS-only, JS не требуется. Адаптив: 980 / 640.
 * ========================================================== */

.cluster-section {
  /* колонок грида на десктопе (переопределяется модификаторами/страницей) */
  --cls-cols: 3;
  /* минимум ячейки для авто-режима (--auto) */
  --cls-min: 260px;
  /* толщина акцент-рельса у заголовка кластера */
  --cls-rail: 3px;
}

/* ---- Шапка кластера: рельс + (eyebrow + H2 + lede) + (счётчик + «смотреть все») ---- */
.cluster-section__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: var(--s-3) var(--s-5);
  margin-bottom: var(--s-6);
  /* акцент-рельс кластера слева (носитель темы кластера, единственный акцент) */
  padding-left: var(--s-4);
  border-left: var(--cls-rail) solid var(--brand);
}
.cluster-section__heading { grid-column: 1; min-width: 0; }
.cluster-section__head .eyebrow { margin: 0 0 var(--s-2); }
.cluster-section__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.cluster-section__lede {
  margin: var(--s-3) 0 0;
  max-width: var(--container-prose);
}

/* Правая колонка шапки — мета (счётчик) + действие «смотреть все» */
.cluster-section__aside {
  grid-column: 2;
  display: flex;
  align-items: baseline;
  gap: var(--s-4);
  flex-wrap: wrap;
  justify-content: flex-end;
}

/* Счётчик «N материалов» — крупная цифра (tabular) + нейтральная подпись */
.cluster-section__count {
  margin: 0;
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-2);
}
.cluster-section__count-num {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.cluster-section__count-label {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* «Смотреть все» — текстовая ссылка, НЕ вторая кнопка-акцент */
.cluster-section__all {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  text-decoration: none;
  white-space: nowrap;
}
.cluster-section__all-ic {
  flex: 0 0 auto;
  transition: transform var(--dur-quick) var(--ease-out);
}
.cluster-section__all:hover .cluster-section__all-ic,
.cluster-section__all:focus-visible .cluster-section__all-ic { transform: translateX(3px); }

/* ---- Грид: owns колонки/gap; КАРТОЧКИ себя по странице не раскладывают ---- */
.cluster-section__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(var(--cls-cols), minmax(0, 1fr));
  gap: var(--s-5);
}
.cluster-section__cell { display: flex; min-width: 0; }

/* подвал-сноска кластера (опц.): «обновлено …», дисклеймер и т.п. */
.cluster-section__foot {
  margin-top: var(--s-5);
  font-size: var(--t-small);
  color: var(--text-mute);
}

/* ---- Демо-плейсхолдер ячейки (ТОЛЬКО для витрины block.html; на бою
 *      сюда кладётся реальная карточка-блок) ---- */
.cluster-section__demo {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  width: 100%;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition:
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease);
}
.cluster-section__demo:hover,
.cluster-section__demo:focus-within {
  box-shadow: var(--shadow-pop);
  transform: translateY(-2px);
  border-color: var(--rule-strong);
}
.cluster-section__demo-kind {
  align-self: flex-start;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--brand);
}
.cluster-section__demo-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.cluster-section__demo-title a { color: inherit; text-decoration: none; }
.cluster-section__demo:hover .cluster-section__demo-title a,
.cluster-section__demo-title a:focus-visible { color: var(--brand); }
.cluster-section__demo-text {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  text-wrap: pretty;
}
.cluster-section__demo-meta {
  margin-top: auto;
  padding-top: var(--s-3);
  border-top: var(--hairline);
  font-size: var(--t-tiny);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}

/* ============ Варианты ============ */

/* Кол-во колонок (соседи с одинаковой картой → одинаковый ритм) */
.cluster-section--2col { --cls-cols: 2; }
.cluster-section--4col { --cls-cols: 4; }

/* Авто-сетка: число колонок диктует ширина ячейки (для разнородного контента) */
.cluster-section--auto .cluster-section__grid {
  grid-template-columns: repeat(auto-fill, minmax(var(--cls-min), 1fr));
}

/* Тихая шапка: H3-масштаб без акцент-рельса (вложенный/второстепенный кластер) */
.cluster-section--quiet .cluster-section__head {
  padding-left: 0;
  border-left: 0;
}
.cluster-section--quiet .cluster-section__title { font-size: var(--t-h3); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .cluster-section,
  .cluster-section--4col { --cls-cols: 2; }
  .cluster-section { --cls-min: min(280px, 100%); }
  .cluster-section__grid { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .cluster-section,
  .cluster-section--2col,
  .cluster-section--4col { --cls-cols: 1; }
  .cluster-section { --cls-min: 100%; }
  .cluster-section__title { font-size: var(--t-h3); }
  /* шапка в столбик: заголовок над мета/действием, рельс остаётся */
  .cluster-section__head {
    grid-template-columns: 1fr;
    align-items: start;
    gap: var(--s-3);
    margin-bottom: var(--s-5);
  }
  .cluster-section__heading,
  .cluster-section__aside { grid-column: 1; }
  .cluster-section__aside { justify-content: flex-start; }
  .cluster-section__grid { gap: var(--s-4); }
}

/* ============ Reduced motion (база уже зануляет --dur-*; гасим сдвиги) ============ */
@media (prefers-reduced-motion: reduce) {
  .cluster-section__all-ic,
  .cluster-section__demo { transition: none; }
  .cluster-section__all:hover .cluster-section__all-ic,
  .cluster-section__all:focus-visible .cluster-section__all-ic { transform: none; }
  .cluster-section__demo:hover { transform: none; }
}

/* ===== coins-grid ===== */
/* ============================================================
 * coins-grid · block.css
 * Скоуплено на .coins-grid. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка), сестра payment-grid.
 * Один акцент — --brand (обводка активного слота + единственная CTA). Тикеры/
 * лимиты — tabular-nums. Tooltip и T&C-drawer — без JS (CSS hover/focus +
 * <details>). bespoke inline SVG (нейтральные марки). Адаптив: 980 / 640.
 * ========================================================== */

.coins-grid {
  --cg-slot: 124px;          /* фикс-слот: единый размер во всём гриде */
  display: block;
}

/* ---- Шапка ---- */
.coins-grid__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.coins-grid__head .eyebrow { margin: 0; }
.coins-grid__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.coins-grid__lede { margin: 0; max-width: var(--container-prose); }

/* Все числа/лимиты — табличные */
.coins-grid__num { font-variant-numeric: tabular-nums; }

/* ---- Грид равных слотов ---- */
.coins-grid__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--cg-slot), 1fr));
  gap: var(--s-3);
}
.coins-grid__item { display: block; min-width: 0; }

/* ---- Слот: марка + тикер + имя, единые pad/radius/shadow ---- */
.coins-grid__slot {
  position: relative;
  width: 100%;
  min-height: var(--tap-min);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  padding: var(--s-4) var(--s-3);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text-dim);
  cursor: pointer;
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease);
}
.coins-grid__slot:hover,
.coins-grid__slot:focus-visible {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
  color: var(--text);
}

/* марка — нейтральная, красится currentColor от слота */
.coins-grid__logo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 32px;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.coins-grid__logo svg { display: block; height: 32px; width: auto; }
.coins-grid__slot:hover .coins-grid__logo,
.coins-grid__slot:focus-visible .coins-grid__logo { color: var(--brand); }

.coins-grid__ticker {
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.coins-grid__name {
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: .02em;
  color: var(--text-mute);
}
.coins-grid__slot:hover .coins-grid__name,
.coins-grid__slot:focus-visible .coins-grid__name { color: var(--text-dim); }

/* ---- Tooltip с лимитами (CSS-only) ---- */
.coins-grid__tip {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + var(--s-2));
  transform: translateX(-50%) translateY(4px);
  z-index: var(--z-popover);
  width: max-content;
  max-width: 220px;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: var(--s-3);
  text-align: left;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.coins-grid__tip::after {
  content: "";
  position: absolute;
  top: 100%;
  inset-inline-start: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: var(--surface);
}
.coins-grid__slot:hover .coins-grid__tip,
.coins-grid__slot:focus-visible .coins-grid__tip {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.coins-grid__tip-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
}
.coins-grid__tip-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.coins-grid__tip-v {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* ---- T&C-drawer (нативный <details>) ---- */
.coins-grid__terms {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.coins-grid__terms-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.coins-grid__terms-sum::-webkit-details-marker { display: none; }
.coins-grid__terms-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.coins-grid__terms[open] .coins-grid__terms-chev { transform: rotate(180deg); }
.coins-grid__terms-body {
  padding: 0 var(--s-4) var(--s-4);
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.coins-grid__terms-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ---- Таблица легенды (tabular) ---- */
.coins-grid__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
}
.coins-grid__table th,
.coins-grid__table td {
  padding: var(--s-2) var(--s-3);
  text-align: left;
  border-bottom: var(--hairline);
}
.coins-grid__table thead th {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.coins-grid__table tbody th {
  font-weight: var(--fw-semi);
  color: var(--text);
}
.coins-grid__table tbody td { color: var(--text-dim); }
.coins-grid__table tbody tr:last-child th,
.coins-grid__table tbody tr:last-child td { border-bottom: 0; }
.coins-grid__col-num { text-align: right; font-variant-numeric: tabular-nums; }

/* ---- CTA (ровно одна на блок) ---- */
.coins-grid__cta {
  margin-top: var(--s-5);
  display: flex;
  justify-content: center;
}

/* ============ Модификатор: компактный ============ */
.coins-grid--compact { --cg-slot: 100px; }
.coins-grid--compact .coins-grid__slot { padding: var(--s-3) var(--s-2); }
.coins-grid--compact .coins-grid__logo,
.coins-grid--compact .coins-grid__logo svg { height: 28px; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .coins-grid { --cg-slot: 110px; }
  .coins-grid__grid { gap: var(--s-2); }
  .coins-grid__title { font-size: var(--t-h3); }
}
@media (max-width: 640px) {
  .coins-grid { --cg-slot: 94px; }
  .coins-grid__tip { max-width: min(220px, 70vw); }
  .coins-grid__table { display: block; overflow-x: auto; white-space: nowrap; }
  .coins-grid__cta .btn { width: 100%; }
}

/* ============ Reduced motion (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .coins-grid__slot,
  .coins-grid__tip { transition: none; }
}

/* ===== coins-shop-items-grid ===== */
/* ============================================================
 * coins-shop-items-grid · block.css  (scope: .coins-shop)
 * Только токены (10-tokens/). Назначение: грид товаров за внутриигровые монеты + ОДНА CTA «Обменять».
 * Премиум: один акцент --brand, фикс-слот медиа + bespoke SVG-иконка товара (не сток-фото),
 *   единые padding/radius/shadow, ОДНА CTA на карточку, tabular-nums на ценах/балансе.
 * Состояние (доступен/не хватает/распродан) — текст + иконка + disabled, НЕ только цвет.
 * Эталон поверхности/нейминга/фикс-слотов/fake-link: casino-item-card. Адаптив: 980 / 640.
 * Монеты — внутриигровая валюта (см. block.md), не деньги.
 * ========================================================== */

.coins-shop {
  --cs-media-h: 104px;        /* фикс-высота медиа-зоны */
  --cs-min: 220px;            /* мин-ширина колонки грида */

  display: block;
  font-family: var(--font-body);
  color: var(--text);
}

/* ---- Шапка: заголовок ↔ баланс игрока ---- */
.coins-shop__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
  flex-wrap: wrap;
}
.coins-shop__eyebrow { margin: 0 0 var(--s-1); }
.coins-shop__title { margin: 0; font-size: var(--t-h2); line-height: var(--lh-snug); }

.coins-shop__balance {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-2) var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}
.coins-shop__balance-ic { display: inline-flex; flex: 0 0 auto; color: var(--gold); }
.coins-shop__balance-v {
  font-family: var(--font-mono);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.coins-shop__balance-k { font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }

/* ---- Грид ---- */
.coins-shop__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--cs-min), 1fr));
  gap: var(--s-4);
}
.coins-shop__cell { display: flex; }

/* ---- Карточка товара (единые padding/radius/shadow) ---- */
.coins-shop__item {
  display: flex;
  flex-direction: column;
  width: 100%;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.coins-shop__item:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); }

.coins-shop__media {
  position: relative;
  height: var(--cs-media-h);
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(120% 140% at 50% 0%, var(--brand-soft), transparent 70%),
    var(--bg-2);
  border-bottom: var(--hairline);
  color: var(--brand);
}
.coins-shop__item-ic { display: inline-flex; }
.coins-shop__ribbon {
  position: absolute;
  top: var(--s-2);
  inset-inline-end: var(--s-2);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .03em;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  font-variant-numeric: tabular-nums;
}

.coins-shop__body {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  padding: var(--s-4);
  flex: 1 1 auto;
}
.coins-shop__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.coins-shop__desc { margin: 0; font-size: var(--t-small); }

/* Цена в монетах */
.coins-shop__price {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
  margin: var(--s-1) 0;
}
.coins-shop__price-ic { align-self: center; display: inline-flex; flex: 0 0 auto; color: var(--gold); }
.coins-shop__price-v {
  font-family: var(--font-mono);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.coins-shop__price-was {
  font-family: var(--font-mono);
  font-size: var(--t-small);
  color: var(--text-faint);
  text-decoration: line-through;
  font-variant-numeric: tabular-nums;
}
.coins-shop__price-k { font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }

/* CTA — ЕДИНСТВЕННАЯ на карточку, прижата к низу */
.coins-shop__cta { margin-top: auto; }

/* «Не хватает» — подпись под disabled-CTA: смысл текстом + иконкой замка, не только цветом */
.coins-shop__need {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  margin: var(--s-2) 0 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  color: var(--warning);
  font-variant-numeric: tabular-nums;
}
.coins-shop__need-ic { display: inline-flex; flex: 0 0 auto; }

/* ============================================================
 * Состояния товара
 * ========================================================== */

/* --featured — выделенный (со скидкой): акцент-рамка, без второго цвета */
.coins-shop__item--featured { border-color: color-mix(in srgb, var(--brand) 45%, var(--rule)); }

/* --locked — не хватает монет: приглушаем иконку; CTA уже disabled в разметке */
.coins-shop__item--locked .coins-shop__media { color: var(--text-mute); filter: saturate(.6); }

/* --soldout — распродан: приглушение всей карточки + серая иконка */
.coins-shop__item--soldout { opacity: .82; }
.coins-shop__item--soldout .coins-shop__media { filter: grayscale(.55); color: var(--text-mute); }
.coins-shop__item--soldout:hover { transform: none; box-shadow: var(--shadow-card); }

/* disabled-CTA */
.coins-shop__cta:disabled { opacity: .6; cursor: not-allowed; }
.coins-shop__cta:disabled:active { transform: none; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .coins-shop__grid { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .coins-shop { --cs-min: 47%; }
  .coins-shop__head { gap: var(--s-2); }
  .coins-shop__balance { align-self: flex-start; }
}
@media (max-width: 420px) {
  .coins-shop { --cs-min: 100%; }
}

/* ===== comments-form ===== */
/* ============================================================
 * comments-form · block.css
 * Скоуплено на .comments-form / .cmf. Только токены (10-tokens/).
 * Конвенция: html-base + newsletter-submit (components.js). Адаптив: 640.
 * Один акцент = --brand; состояние полей — рамка/фон, не только цвет.
 * ========================================================== */

.comments-form { display: block; }

/* ---- Карточка-форма ---- */
.cmf {
  display: flex; flex-direction: column; gap: var(--s-5);
  max-width: 640px;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- 1 · Голова ---- */
.cmf__head { display: flex; flex-direction: column; gap: var(--s-2); }
.cmf__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3); font-weight: var(--fw-bold);
  color: var(--text);
}
.cmf__sub { margin: 0; font-size: var(--t-small); }

/* ---- Поля (общее) ---- */
.cmf__field { display: flex; flex-direction: column; gap: var(--s-2); margin: 0; border: none; padding: 0; }
.cmf__row {
  display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-4);
}
.cmf__label {
  font-size: var(--t-small); font-weight: var(--fw-semi);
  color: var(--text-dim);
  padding: 0;
}
.cmf__req { color: var(--brand); }
.cmf__hint, .cmf__counter { font-weight: var(--fw-body); color: var(--text-faint); font-size: var(--t-tiny); }
.cmf__counter { margin-top: calc(-1 * var(--s-1)); }

.cmf__input {
  width: 100%;
  padding: var(--s-3) var(--s-4);
  min-height: var(--tap-min);
  font-family: var(--font-body);
  font-size: var(--t-body);
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--rule);
  border-radius: var(--r-md);
  transition: border-color var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.cmf__input::placeholder { color: var(--text-faint); }
.cmf__input:hover { border-color: var(--rule-strong); }
.cmf__input:focus {
  outline: none;
  border-color: var(--brand);
  background: var(--surface);
  box-shadow: 0 0 0 3px var(--brand-soft);
}
/* Нативная валидация: состояние не только цветом — есть рамка + (в разметке) текст */
.cmf__input:user-invalid { border-color: var(--danger); box-shadow: 0 0 0 3px var(--danger-soft); }

.cmf__textarea { resize: vertical; min-height: 120px; line-height: var(--lh-base); }

/* ---- 3 · Оценка — radio-группа как сегмент-метр (dataviz) ---- */
.cmf__rate { gap: var(--s-3); }
.cmf__segs {
  display: grid;
  grid-template-columns: repeat(10, 1fr);
  gap: var(--s-1);
}
.cmf__seg { position: relative; display: block; }
/* Нативный radio визуально скрыт, но доступен и фокусируем */
.cmf__seg input {
  position: absolute; inset: 0; width: 100%; height: 100%;
  margin: 0; opacity: 0; cursor: pointer;
}
.cmf__seg-box {
  display: flex; align-items: center; justify-content: center;
  min-height: var(--tap-min);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--r-md);
  transition: background var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.cmf__seg:hover .cmf__seg-box { border-color: var(--brand); color: var(--brand); }
/* Выбранный сегмент = акцент-заливка */
.cmf__seg input:checked + .cmf__seg-box {
  color: var(--on-brand);
  background: var(--brand);
  border-color: var(--brand);
}
/* Клавиатурный фокус на скрытом radio подсвечивает бокс */
.cmf__seg input:focus-visible + .cmf__seg-box {
  outline: 2px solid var(--brand); outline-offset: 2px;
}
.cmf__scale {
  display: flex; justify-content: space-between;
  font-size: var(--t-tiny); color: var(--text-faint);
}

/* ---- 5 · Согласие ---- */
.cmf__consent { margin-top: calc(-1 * var(--s-1)); }
.cmf__check {
  display: grid; grid-template-columns: auto 1fr; align-items: start; gap: var(--s-3);
  cursor: pointer;
}
.cmf__check input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cmf__check-box {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; flex: 0 0 auto;
  margin-top: 2px;
  color: transparent;
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--r-soft);
  transition: background var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.cmf__check input:checked + .cmf__check-box {
  color: var(--on-brand); background: var(--brand); border-color: var(--brand);
}
.cmf__check input:focus-visible + .cmf__check-box {
  outline: 2px solid var(--brand); outline-offset: 2px;
}
.cmf__check-text { font-size: var(--t-small); line-height: var(--lh-snug); color: var(--text-mute); }

/* ---- 6 · Действия ---- */
.cmf__actions {
  display: flex; align-items: center; gap: var(--s-4); flex-wrap: wrap;
  padding-top: var(--s-2);
}
.cmf__submit { flex: 0 0 auto; min-width: 200px; }
.cmf__status {
  margin: 0;
  font-size: var(--t-small); font-weight: var(--fw-medium);
  color: var(--success);
}
.cmf__status:empty { display: none; }

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .cmf { padding: var(--s-5); gap: var(--s-4); }
  .cmf__row { grid-template-columns: 1fr; gap: var(--s-4); }
  .cmf__segs { grid-template-columns: repeat(5, 1fr); }
  .cmf__submit { width: 100%; min-width: 0; }
  .cmf__actions { gap: var(--s-3); }
}

/* ===== community-big-win-replays ===== */
/* ============================================================
 * community-big-win-replays · block.css
 * Скоуплено на .community-big-win-replays / .cbwr. Только токены (10-tokens/).
 * Конвенция: html-base + details-drawer (data-action="tncToggle"). Адаптив: 980 / 640.
 * Один акцент = --brand; множитель — нейтральная dataviz-шкала (не звёзды).
 * ========================================================== */

.community-big-win-replays { display: block; }

/* ---- Интро-шапка секции ---- */
.cbwr__intro {
  display: flex; flex-direction: column; gap: var(--s-2);
  margin-bottom: var(--s-6);
  max-width: var(--container-prose);
}
.cbwr__head {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2); font-weight: var(--fw-bold);
  color: var(--text);
}
.cbwr__sub { margin: 0; font-size: var(--t-body); }

/* ---- Грид ---- */
.cbwr__grid {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--s-5);
}
.cbwr__cell { display: flex; min-width: 0; }

/* ---- Карточка ---- */
.cbwr {
  display: flex; flex-direction: column; width: 100%;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.cbwr:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); }
.cbwr:focus-within { box-shadow: var(--shadow-pop); }

/* ---- 1 · Медиа ---- */
.cbwr__media {
  position: relative;
  aspect-ratio: 16 / 9;
  background: var(--bg-3);
}
.cbwr__thumb {
  width: 100%; height: 100%;
  object-fit: cover;
  border-bottom: var(--hairline);
}
/* Play-кнопка по центру (декор; реальный триггер — CTA ниже) */
.cbwr__play {
  position: absolute; inset: 0; margin: auto;
  width: 56px; height: 56px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--on-brand);
  background: color-mix(in srgb, var(--brand) 88%, #000);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop);
  padding-left: 3px;
  transition: transform var(--dur-quick) var(--ease);
}
.cbwr:hover .cbwr__play { transform: scale(1.06); }
@media (prefers-reduced-motion: reduce) { .cbwr:hover .cbwr__play { transform: none; } }

/* Множитель — акцентный бейдж (главный показатель) */
.cbwr__mult {
  position: absolute; top: var(--s-3); left: var(--s-3);
  display: inline-flex; align-items: center;
  padding: var(--s-1) var(--s-3);
  font-family: var(--font-display);
  font-size: var(--t-small); font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.cbwr__dur {
  position: absolute; bottom: var(--s-3); right: var(--s-3);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-medium);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background: color-mix(in srgb, var(--text) 78%, transparent);
  border-radius: var(--r-soft);
}

/* ---- 2 · Тело ---- */
.cbwr__body {
  display: flex; flex-direction: column; gap: var(--s-4);
  flex: 1 1 auto;
  padding: var(--s-4) var(--s-5);
}

/* Стример: фикс-слот аватара (инициалы) + имя + игра */
.cbwr__streamer { display: flex; align-items: center; gap: var(--s-3); min-width: 0; }
.cbwr__avatar {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; flex: 0 0 auto;
  font-family: var(--font-display);
  font-size: var(--t-small); font-weight: var(--fw-bold);
  color: var(--brand); background: var(--brand-soft);
  border: var(--hairline);
  border-radius: var(--r-pill);
}
.cbwr__streamer-meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cbwr__streamer-name { font-weight: var(--fw-bold); color: var(--text); }
.cbwr__game {
  font-size: var(--t-small); color: var(--text-mute);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* Мультипликатор-метр (dataviz вместо звёзд) */
.cbwr__meter { margin-top: auto; }
.cbwr__meter-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2);
  margin-bottom: var(--s-1);
}
.cbwr__meter-k {
  font-size: var(--t-tiny); letter-spacing: .08em; text-transform: uppercase;
  color: var(--text-mute);
}
.cbwr__meter-v {
  font-weight: var(--fw-bold); color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.cbwr__meter-bar {
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.cbwr__meter-fill {
  display: block; height: 100%; border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- 3 · Футер: ОДНА CTA + details-drawer ---- */
.cbwr__footer {
  display: flex; flex-direction: column; gap: var(--s-2);
  padding: 0 var(--s-5) var(--s-5);
}
.cbwr__cta-ic { display: inline-flex; }

.cbwr__details { position: relative; }
.cbwr__details-btn {
  display: inline-flex; align-items: center; gap: var(--s-1);
  min-height: var(--tap-min);
  font-size: var(--t-tiny); color: var(--text-mute);
}
.cbwr__details-btn:hover { color: var(--brand); }
.cbwr__chev { display: inline-flex; transition: transform var(--dur-quick) var(--ease); }
.cbwr__details-btn[aria-expanded="true"] .cbwr__chev { transform: rotate(180deg); }

.cbwr__details-body {
  margin: var(--s-1) 0 0;
  padding: var(--s-3);
  font-size: var(--t-small);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.cbwr__details-body[hidden] { display: none; }
.cbwr__d-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-3);
  padding: 2px 0;
}
.cbwr__d-row dt { color: var(--text-mute); }
.cbwr__d-row dd { margin: 0; font-weight: var(--fw-semi); font-variant-numeric: tabular-nums; }
.cbwr__d-note {
  margin: var(--s-2) 0 0;
  padding-top: var(--s-2);
  border-top: var(--hairline);
  font-size: var(--t-tiny); line-height: var(--lh-snug);
  color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .cbwr__grid { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--s-4); }
}
@media (max-width: 640px) {
  .cbwr__grid { grid-template-columns: 1fr; gap: var(--s-4); }
  .cbwr__intro { margin-bottom: var(--s-5); }
  .cbwr__body { padding: var(--s-4); }
  .cbwr__footer { padding: 0 var(--s-4) var(--s-4); }
}

/* ===== community-qa-list ===== */
/* ============================================================
 * community-qa-list · block.css
 * Скоуплено на .community-qa-list. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base + faq-accordion (Q&A на нативных <details>).
 * Раскрытие — grid-rows 0fr→1fr (плавно, без замера высоты в JS).
 * dataviz-метр «полезно» вместо звёзд. Один акцент --brand; роль ответа — info/success.
 * Адаптив: 980 / 640.
 * ========================================================== */

.community-qa-list__head {
  max-width: var(--container-prose);
  margin-inline: auto;
  margin-bottom: var(--s-6);
}
.community-qa-list__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin-bottom: var(--s-2);
}
.community-qa-list__eyebrow-ic { display: inline-flex; color: var(--brand); }
.community-qa-list__title {
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  font-weight: var(--fw-bold);
  color: var(--text);
}
.community-qa-list__lede { margin-top: var(--s-3); }

/* ---- Строка-статистика ---- */
.community-qa-list__stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-5);
  margin: var(--s-4) 0 0;
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.community-qa-list__stat { display: flex; flex-direction: column; gap: 2px; }
.community-qa-list__stat-k {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.community-qa-list__stat-v {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---- Список тредов ---- */
.community-qa-list__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}

/* ---- Карточка треда (details) ---- */
.cqa-item {
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: box-shadow var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease);
}
.cqa-item:hover { box-shadow: var(--shadow-pop); }
.cqa-item[open] { border-color: var(--rule-strong); }

/* ---- Вопрос (summary = нативная кнопка) ---- */
.cqa-item__q {
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-4) var(--s-5);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.cqa-item__q::-webkit-details-marker { display: none; }

.cqa-item__avatar {
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}

.cqa-item__q-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: var(--s-1); }
.cqa-item__q-text {
  font-family: var(--font-body);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
  transition: color var(--dur-quick) var(--ease);
}
.cqa-item__q:hover .cqa-item__q-text,
.cqa-item[open] .cqa-item__q-text { color: var(--brand); }

.cqa-item__q-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-tiny);
  color: var(--text-mute);
}
.cqa-item__author { font-weight: var(--fw-medium); color: var(--text-dim); }
.cqa-item__dot { color: var(--text-faint); }
.cqa-item__count-n { font-variant-numeric: tabular-nums; font-weight: var(--fw-semi); }
.cqa-item__count--open { color: var(--text-faint); }

/* ---- Шеврон ---- */
.cqa-item__chevron {
  flex: 0 0 auto;
  margin-top: var(--s-1);
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.cqa-item__q:hover .cqa-item__chevron { color: var(--brand); }
.cqa-item[open] .cqa-item__chevron { transform: rotate(180deg); color: var(--brand); }

/* ---- Раскрытие ответов ---- */
.cqa-item__a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.cqa-item[open] .cqa-item__a { grid-template-rows: 1fr; }
.cqa-item__a-inner { overflow: hidden; min-height: 0; }

/* ---- Ответ ---- */
.cqa-answer {
  padding: var(--s-4) var(--s-5);
  border-top: var(--hairline);
}
.cqa-answer--editor { background: var(--brand-soft); }

.cqa-answer__head {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  margin-bottom: var(--s-2);
}
.cqa-answer__badge {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-pill);
}
.cqa-answer__badge-ic { display: inline-flex; }
.cqa-answer__badge--editor { color: var(--success); background: var(--success-soft); }
.cqa-answer__author { font-size: var(--t-small); font-weight: var(--fw-medium); color: var(--text-dim); }

.cqa-answer__text {
  font-size: var(--t-body);
  line-height: var(--lh-loose);
  color: var(--text-dim);
}

/* ---- Подвал ответа: dataviz-метр «полезно» + голоса ---- */
.cqa-answer__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  margin-top: var(--s-3);
}
.cqa-answer__helpful {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-width: 0;
}
.cqa-answer__helpful-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.cqa-answer__meter {
  width: 96px;
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.cqa-answer__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}
.cqa-answer__helpful-v { font-weight: var(--fw-bold); color: var(--text); font-variant-numeric: tabular-nums; }
.cqa-answer__helpful-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.cqa-answer__votes { font-size: var(--t-tiny); color: var(--text-faint); white-space: nowrap; }
.cqa-answer__votes-n { font-variant-numeric: tabular-nums; }

/* ---- Тред без ответа ---- */
.cqa-item__empty {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-4) var(--s-5);
  border-top: var(--hairline);
  font-size: var(--t-small);
  color: var(--text-mute);
}
.cqa-item__empty-ic { display: inline-flex; flex: 0 0 auto; color: var(--text-faint); }

/* ---- Числа в ответе ---- */
.cqa-item__num { font-weight: var(--fw-semi); color: var(--text); font-variant-numeric: tabular-nums; }

/* ---- CTA блока (одна) ---- */
.community-qa-list__cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--s-4);
  margin-top: var(--s-6);
  padding-top: var(--s-6);
  border-top: var(--hairline);
  text-align: center;
}
.community-qa-list__cta-text { color: var(--text-mute); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .community-qa-list__head { margin-bottom: var(--s-5); }
}
@media (max-width: 640px) {
  .cqa-item__q { padding: var(--s-3) var(--s-4); gap: var(--s-3); }
  .cqa-item__avatar { width: 30px; height: 30px; }
  .cqa-item__q-text { font-size: var(--t-body); }
  .cqa-answer { padding: var(--s-3) var(--s-4); }
  .cqa-answer__foot { flex-direction: column; align-items: flex-start; gap: var(--s-2); }
  .cqa-answer__meter { width: 120px; }
  .cqa-item__empty { padding: var(--s-3) var(--s-4); }
  .community-qa-list__cta { flex-direction: column; gap: var(--s-3); }
  .community-qa-list__cta-btn { width: 100%; }
}

/* ============ Reduced motion: без анимации высоты/шеврона ============ */
@media (prefers-reduced-motion: reduce) {
  .cqa-item__a { transition: none; }
  .cqa-item__chevron { transition: color var(--dur-quick) var(--ease); }
}

/* ===== comparison-table ===== */
/* ============================================================
 * comparison-table · block.css
 * Скоуплено на .comparison-table. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Реальная <table> (строки=параметры,
 * колонки=операторы). ОДИН акцент --brand (колонка-победитель .is-winner);
 * --success/--danger — только по смыслу (булевы да/нет). Метр-бары вместо звёзд.
 * Адаптив: 980 — уплотнение; 640 — горизонтальный скролл + липкая колонка параметров.
 * ========================================================== */

.comparison-table {
  --cmp-logo: 56px;          /* фикс-слот лого в шапке */
  --cmp-param-w: minmax(120px, 0.9fr);  /* колонка названий параметров */
  --cmp-op-w: minmax(150px, 1fr);        /* колонка оператора */
  display: block;
  font-variant-numeric: tabular-nums;
}

/* ---- Заголовок блока ---- */
.comparison-table__head { margin-bottom: var(--s-5); }
.comparison-table__eyebrow { margin-bottom: var(--s-2); }
.comparison-table__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.comparison-table__lede { margin-top: var(--s-2); }

/* ---- Обёртка-скролл (на узких экранах не теряем семантику table) ---- */
.comparison-table__scroll {
  overflow-x: auto;
  border-radius: var(--r-lg);
  -webkit-overflow-scrolling: touch;
}
.comparison-table__scroll:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ---- Таблица (карточная поверхность: surface + hairline + r-lg + shadow) ---- */
.comparison-table__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  table-layout: fixed;
  overflow: hidden;          /* радиус подрезает угловые ячейки */
}

/* Раскладка колонок через colgroup (display:table сохраняет семантику) */
.comparison-table__col-param { width: 24%; }
.comparison-table__table--2 .comparison-table__col-op { width: 38%; }
.comparison-table__table--3 .comparison-table__col-op { width: 25.33%; }

/* ============ Шапка: лого + имя + score + CTA ============ */
.comparison-table__corner {
  padding: var(--s-4);
  background: var(--surface);
  border-bottom: var(--hairline);
}

.comparison-table__op {
  padding: var(--s-4) var(--s-3) var(--s-4);
  text-align: center;
  vertical-align: top;
  background: var(--surface);
  border-bottom: var(--hairline);
  border-left: var(--hairline);
  position: relative;
}
.comparison-table__op-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-2);
}
.comparison-table__logo {
  width: var(--cmp-logo);
  height: var(--cmp-logo);
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
}
.comparison-table__op-name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Итоговый score: число + метр-бар (ширина = балл×10%, градиент rating-from→to) */
.comparison-table__score {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-1);
  width: 100%;
}
.comparison-table__score-val {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--t-h3);
  line-height: var(--lh-tight);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.comparison-table__score-val small { color: var(--text-faint); font-weight: var(--fw-medium); font-size: var(--t-small); }
.comparison-table__meter {
  width: 100%;
  max-width: 120px;
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.comparison-table__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ОДНА CTA на колонку */
.comparison-table__cta { margin-top: var(--s-1); }

/* Бейдж победителя в шапке */
.comparison-table__badge {
  position: absolute;
  top: calc(-1 * var(--s-2));
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  white-space: nowrap;
}

/* ============ Тело: ряды параметров ============ */
.comparison-table__param {
  padding: var(--s-3) var(--s-4);
  text-align: left;
  vertical-align: middle;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: var(--hairline);
}
.comparison-table__cell {
  padding: var(--s-3) var(--s-4);
  text-align: center;
  vertical-align: middle;
  font-size: var(--t-body);
  color: var(--text-dim);
  border-bottom: var(--hairline);
  border-left: var(--hairline);
}
/* зебра по рядам тела (читаемость при широких таблицах) */
.comparison-table__body tr:nth-child(even) .comparison-table__param { background: var(--surface-3); }
.comparison-table__body tr:nth-child(even) .comparison-table__cell { background: var(--bg-2); }
.comparison-table__body tr:last-child .comparison-table__param,
.comparison-table__body tr:last-child .comparison-table__cell { border-bottom: none; }

/* Числа — табличные цифры, акцент-вес */
.comparison-table__num {
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.comparison-table__sub {
  display: block;
  margin-top: 2px;
  font-size: var(--t-tiny);
  color: var(--text-faint);
}

/* Метр внутри ячейки (dataviz вместо звёзд) */
.comparison-table__metric {
  display: block;
  width: min(120px, 100%);
  margin: var(--s-2) auto 0;
  height: 5px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.comparison-table__metric-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* Булевы да/нет — глиф по смыслу (--success/--danger), состояние не только цветом */
.comparison-table__bool {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
}
.comparison-table__bool svg {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  padding: 3px;
  border-radius: var(--r-pill);
}
.comparison-table__bool--yes { color: var(--success); }
.comparison-table__bool--yes svg { background: var(--success-soft); }
.comparison-table__bool--no { color: var(--danger); }
.comparison-table__bool--no svg { background: var(--danger-soft); }

/* Промокод (copy-on-click + тост) */
.comparison-table__promo {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  position: relative;
  padding: var(--s-1) var(--s-3);
  min-height: var(--tap-min);
  background: var(--brand-soft);
  color: var(--brand);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md);
  transition: background var(--dur-quick) var(--ease);
}
.comparison-table__promo:hover { background: color-mix(in srgb, var(--brand) 16%, transparent); }
.comparison-table__promo-code {
  font-family: var(--font-mono);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
}
.comparison-table__promo-ic { display: inline-flex; }
.comparison-table__promo-toast {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + 6px);
  transform: translateX(-50%);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  white-space: nowrap;
  color: var(--on-brand);
  background: var(--text);
  border-radius: var(--r-soft);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease);
}
.comparison-table__promo.is-copied .comparison-table__promo-toast { opacity: 1; }

/* ============ Колонка-победитель (ОДИН акцент --brand) ============ */
.comparison-table__op.is-winner {
  background: var(--brand-soft);
  box-shadow: inset 0 3px 0 0 var(--brand);
}
.comparison-table__cell.is-winner,
.comparison-table__foot-cell.is-winner {
  background: var(--brand-soft);
}
.comparison-table__body tr:nth-child(even) .comparison-table__cell.is-winner {
  background: color-mix(in srgb, var(--brand) 12%, transparent);
}
.comparison-table__op.is-winner .comparison-table__op-name { color: var(--brand); }

/* ============ Подвал: T&C-drawer на колонку ============ */
.comparison-table__foot-corner {
  background: var(--surface-2);
  border-top: var(--hairline);
}
.comparison-table__foot-cell {
  padding: var(--s-2) var(--s-3) var(--s-3);
  vertical-align: top;
  text-align: center;
  background: var(--surface-2);
  border-top: var(--hairline);
  border-left: var(--hairline);
}
.comparison-table__terms { text-align: left; }
.comparison-table__terms-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.comparison-table__terms-btn:hover { color: var(--brand); }
.comparison-table__chevron { transition: transform var(--dur-base) var(--ease); }
.comparison-table__terms-btn[aria-expanded="true"] .comparison-table__chevron { transform: rotate(180deg); }
.comparison-table__terms-body {
  margin-top: var(--s-2);
  padding: var(--s-3);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.comparison-table__terms-body[hidden] { display: none; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .comparison-table { --cmp-logo: 48px; }
  .comparison-table__op { padding: var(--s-3) var(--s-2); }
  .comparison-table__param,
  .comparison-table__cell { padding: var(--s-3); }
  .comparison-table__cell { font-size: var(--t-small); }
  .comparison-table__score-val { font-size: var(--t-h4); }
}

@media (max-width: 640px) {
  /* Горизонтальный скролл: минимум ширины на колонку, чтобы не сплющивалось.
     Колонка параметров — липкая, остаётся видимой при прокрутке. */
  .comparison-table__table { table-layout: auto; min-width: 520px; }
  .comparison-table__table--3 { min-width: 600px; }

  .comparison-table__col-param,
  .comparison-table__col-op { width: auto; }

  .comparison-table__corner,
  .comparison-table__param,
  .comparison-table__foot-corner {
    position: sticky;
    left: 0;
    z-index: var(--z-base);
    min-width: 110px;
    /* непрозрачный фон обязателен — иначе содержимое просвечивает при скролле */
    box-shadow: 1px 0 0 0 var(--rule);
  }
  .comparison-table__op { min-width: 150px; }
  .comparison-table__cell,
  .comparison-table__foot-cell { min-width: 150px; }

  .comparison-table__badge { font-size: 10px; padding: 2px var(--s-2); }
}

/* ===== contact-cta-block ===== */
/* ============================================================
 * contact-cta-block · block.css
 * Скоуплено на .contact-cta-block. ТОЛЬКО токены (10-tokens/).
 * Один акцент (--brand) + дисциплинированные нейтрали.
 * --success/--danger — ТОЛЬКО для статуса отправки формы (по смыслу), не декор.
 * Карточка/форма: --surface + --hairline + --r-lg + --shadow-card. Конвенция: html-base (data-*).
 * Числа (время ответа, часы) — tabular-nums. Адаптив: 980 / 640. Touch-target ≥ --tap-min.
 * ========================================================== */

.contact-cta-block {
  display: block;
  padding: var(--s-7);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

.contact-cta-block__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  align-items: start;
  gap: var(--s-6) var(--s-8);
  max-width: var(--container);
  margin-inline: auto;
}

/* ---- Левая колонка: hook + каналы ---- */
.contact-cta-block__intro { min-width: 0; }

.contact-cta-block__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin-bottom: var(--s-3);
}
.contact-cta-block__eyebrow-mark {
  display: inline-flex;
  color: var(--brand);
}

.contact-cta-block__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-snug);
  font-weight: var(--fw-bold);
  color: var(--text);
}
.contact-cta-block__title-accent { color: var(--brand); }

.contact-cta-block__lede {
  margin: var(--s-3) 0 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

.contact-cta-block__num {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semi);
  color: var(--text-dim);
}

/* ---- Каналы связи (фикс-слоты) ---- */
.contact-cta-block__channels {
  list-style: none;
  margin: var(--s-5) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}

.contact-cta-block__channel {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  transition: border-color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.contact-cta-block__channel:hover {
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
  background: var(--surface);
}

.contact-cta-block__channel-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}

.contact-cta-block__channel-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.contact-cta-block__channel-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.contact-cta-block__channel-v {
  font-weight: var(--fw-semi);
  color: var(--text);
  overflow-wrap: anywhere;
}

.contact-cta-block__channel-go {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  flex: 0 0 auto;
  color: var(--text-faint);
  border-radius: var(--r-md);
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.contact-cta-block__channel-go:hover {
  color: var(--brand);
  background: var(--brand-soft);
}
.contact-cta-block__channel-go:hover svg { transform: translateX(2px); }
.contact-cta-block__channel-go svg { transition: transform var(--dur-quick) var(--ease); }

/* ---- Reassurance ---- */
.contact-cta-block__assure {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: var(--s-5) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}
.contact-cta-block__assure b {
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.contact-cta-block__assure-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-mute);
}

/* ---- Правая колонка: форма ---- */
.contact-cta-block__form {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  padding: var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-lg);
}

.contact-cta-block__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-4);
}

.contact-cta-block__field {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: 0;
}

.contact-cta-block__label {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}

.contact-cta-block__input {
  width: 100%;
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-body);
  color: var(--text);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  appearance: none;
  transition: border-color var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease);
}
.contact-cta-block__input::placeholder { color: var(--text-faint); }
.contact-cta-block__input:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-soft);
}
.contact-cta-block__input:-webkit-autofill { transition: background-color 600000s 0s; }

.contact-cta-block__textarea {
  min-height: calc(var(--tap-min) * 2);
  line-height: var(--lh-base);
  resize: vertical;
}

/* Select со своим шевроном */
.contact-cta-block__select-wrap { position: relative; }
.contact-cta-block__select { padding-right: var(--s-7); cursor: pointer; }
.contact-cta-block__select-ic {
  position: absolute;
  inset-inline-end: var(--s-3);
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  pointer-events: none;
  color: var(--text-faint);
}

/* ---- Кнопка отправки ---- */
.contact-cta-block__submit-ic { transition: transform var(--dur-quick) var(--ease); }
.contact-cta-block__submit:hover .contact-cta-block__submit-ic { transform: translate(2px, -2px); }

/* ---- Строка статуса (success / error по смыслу) ---- */
.contact-cta-block__status {
  margin: 0;
  max-height: 0;
  overflow: hidden;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
  opacity: 0;
  transition: max-height var(--dur-base) var(--ease), opacity var(--dur-base) var(--ease), margin var(--dur-base) var(--ease);
}
.contact-cta-block__status:not(:empty) {
  margin-top: calc(-1 * var(--s-2));
  max-height: 6em;
  opacity: 1;
}
.contact-cta-block__form.is-success .contact-cta-block__status { color: var(--success); }
.contact-cta-block__form.is-error   .contact-cta-block__status { color: var(--danger); }
/* Состояние не только цветом — ещё контур поля + текст статуса */
.contact-cta-block__form.is-error .contact-cta-block__input:invalid {
  border-color: var(--danger);
  box-shadow: 0 0 0 3px var(--danger-soft);
}

/* ---- Disclaimer ---- */
.contact-cta-block__note {
  margin: 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}
.contact-cta-block__note-link {
  color: var(--text-mute);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  transition: color var(--dur-quick) var(--ease);
}
.contact-cta-block__note-link:hover { color: var(--brand); }

/* ---- CTA-колонка (инстанс 2) ---- */
.contact-cta-block__cta {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-3);
}
.contact-cta-block__cta-btn svg { transition: transform var(--dur-quick) var(--ease); }
.contact-cta-block__cta-btn:hover svg { transform: translateX(2px); }

/* ============ Вариант: мягкая плашка ============ */
.contact-cta-block--soft {
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 22%, transparent);
}

/* ============ Вариант: компактная inline-плашка (hook+каналы | CTA) ============ */
.contact-cta-block--inline { padding: var(--s-6); }
.contact-cta-block--inline .contact-cta-block__inner {
  align-items: center;
  gap: var(--s-5) var(--s-7);
}
.contact-cta-block--inline .contact-cta-block__title { font-size: var(--t-h3); }
.contact-cta-block--inline .contact-cta-block__cta { align-items: stretch; }

/* Каналы в ряд (для inline-плашки) */
.contact-cta-block__channels--row {
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--s-3);
}
.contact-cta-block__channels--row .contact-cta-block__channel {
  grid-template-columns: auto minmax(0, 1fr);
  flex: 1 1 220px;
  background: var(--surface);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .contact-cta-block__inner { grid-template-columns: minmax(0, 1fr); gap: var(--s-6); }
  .contact-cta-block--inline .contact-cta-block__cta { align-items: flex-start; }
  .contact-cta-block--inline .contact-cta-block__cta-btn { width: auto; }
}

@media (max-width: 640px) {
  .contact-cta-block { padding: var(--s-5); }
  .contact-cta-block--inline { padding: var(--s-5); }
  .contact-cta-block__form { padding: var(--s-4); }
  .contact-cta-block__row { grid-template-columns: minmax(0, 1fr); }
  .contact-cta-block__channels--row .contact-cta-block__channel { flex-basis: 100%; }
  .contact-cta-block__cta { align-items: stretch; }
  .contact-cta-block__cta-btn { width: 100%; }
}

/* ===== cookie-bar ===== */
/* ============================================================
 * cookie-bar · block.css
 * Скоуплено на .cookie-bar. Только токены (10-tokens/).
 * Сдержанная плашка согласия: --surface + --hairline + --shadow-pop, один акцент (--brand).
 * Конвенция разметки/JS: html-base (data-* + прогрессивный disclosure/consent). Адаптив: 980 / 640.
 * Появление — функциональный motion (slide-up + fade); prefers-reduced-motion наследуется из base.
 * ========================================================== */

.cookie-bar {
  position: fixed;
  inset-inline: var(--s-5);
  inset-block-end: var(--s-5);
  z-index: var(--z-modal);

  max-width: var(--container);
  margin-inline: auto;

  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop);

  font-family: var(--font-body);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);

  /* Стартовое (видимое) состояние; .is-dismissed уводит вниз перед [hidden] */
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity var(--dur-base) var(--ease),
    transform var(--dur-base) var(--ease);
}

/* JS прячет баннер после выбора: .is-dismissed → анимация ухода → [hidden]. */
.cookie-bar.is-dismissed { opacity: 0; transform: translateY(var(--s-4)); }
.cookie-bar[hidden] { display: none; }

/* ---- Шапка: текст + действия ---- */
.cookie-bar__inner {
  display: flex;
  align-items: center;
  gap: var(--s-5);
  padding: var(--s-4) var(--s-5);
}

.cookie-bar__main {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
}

.cookie-bar__icon {
  flex: 0 0 auto;
  display: inline-flex;
  margin-top: 1px;
  color: var(--brand);
}
.cookie-bar__icon svg { display: block; }

.cookie-bar__copy { min-width: 0; }

.cookie-bar__title {
  margin: 0 0 var(--s-1);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

.cookie-bar__text {
  margin: 0;
  color: var(--text-mute);
}

.cookie-bar__link {
  color: var(--brand);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  transition: color var(--dur-quick) var(--ease);
}
.cookie-bar__link:hover { color: var(--brand-2); }

.cookie-bar__age {
  display: inline-block;
  margin-top: var(--s-1);
  font-size: var(--t-tiny);
  letter-spacing: .03em;
  color: var(--text-faint);
}

/* ---- Действия ---- */
.cookie-bar__actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--s-2);
}

/* .btn-примитивы наследуются из base; здесь — только нюанс размера в баре. */
.cookie-bar__btn { white-space: nowrap; }

.cookie-bar__chev { transition: transform var(--dur-base) var(--ease); }
.cookie-bar__btn--settings[aria-expanded="true"] .cookie-bar__chev { transform: rotate(180deg); }

/* ============ Панель категорий (drawer) ============ */
.cookie-bar__prefs {
  padding: 0 var(--s-5) var(--s-4);
  border-top: var(--hairline);
  margin-top: calc(-1 * var(--s-1));
}
.cookie-bar__prefs[hidden] { display: none; }

.cookie-bar__cats {
  list-style: none;
  margin: var(--s-4) 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-3);
}

.cookie-bar__cat {
  padding: var(--s-3);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}

.cookie-bar__cat-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  cursor: pointer;
}
.cookie-bar__cat:first-child .cookie-bar__cat-head { cursor: default; }

.cookie-bar__cat-name {
  font-weight: var(--fw-semi);
  color: var(--text);
}

.cookie-bar__cat-state {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--success);
}
.cookie-bar__cat-state--locked { color: var(--text-faint); }

.cookie-bar__cat-desc {
  margin: var(--s-1) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

/* ---- Toggle-переключатель (bespoke, не нативный чекбокс) ---- */
.cookie-bar__switch {
  position: relative;
  flex: 0 0 auto;
  display: inline-flex;
  width: 40px;
  height: 22px;
}
.cookie-bar__switch-input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
.cookie-bar__switch-track {
  position: relative;
  flex: 1 1 auto;
  width: 100%;
  height: 100%;
  background: var(--surface-3);
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  transition: background var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.cookie-bar__switch-track::after {
  content: "";
  position: absolute;
  inset-block-start: 2px;
  inset-inline-start: 2px;
  width: 16px;
  height: 16px;
  background: var(--surface);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  transition: transform var(--dur-quick) var(--ease);
}
.cookie-bar__switch-input:checked ~ .cookie-bar__switch-track {
  background: var(--brand);
  border-color: var(--brand);
}
.cookie-bar__switch-input:checked ~ .cookie-bar__switch-track::after {
  transform: translateX(18px);
}
/* :focus-visible наследуется из base — кольцо на видимом треке (input прозрачен сверху) */
.cookie-bar__switch-input:focus-visible ~ .cookie-bar__switch-track {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

/* ---- Низ панели: статус + сохранить ---- */
.cookie-bar__prefs-foot {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--s-3);
  margin-top: var(--s-4);
}
.cookie-bar__status {
  margin: 0;
  margin-inline-end: auto;
  font-size: var(--t-tiny);
  color: var(--success);
}
.cookie-bar__status:empty { display: none; }

/* ============ Вариант: карточка в углу ============ */
.cookie-bar--corner {
  inset-inline: auto var(--s-5);
  max-width: 360px;
  margin-inline: 0;
}
.cookie-bar--corner .cookie-bar__inner {
  flex-direction: column;
  align-items: stretch;
  gap: var(--s-4);
}
.cookie-bar--corner .cookie-bar__actions { justify-content: flex-end; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .cookie-bar {
    inset-inline: var(--s-4);
    inset-block-end: var(--s-4);
  }
  .cookie-bar__inner { flex-wrap: wrap; gap: var(--s-4); }
  .cookie-bar__actions { width: 100%; justify-content: flex-end; }
  .cookie-bar__cats { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 640px) {
  .cookie-bar {
    inset-inline: var(--s-3);
    inset-block-end: var(--s-3);
  }
  .cookie-bar__inner { padding: var(--s-4); }
  .cookie-bar__actions { flex-wrap: wrap; gap: var(--s-2); }
  /* CTA на всю ширину, чтобы touch-target был крупным; «Настройки» — отдельной строкой */
  .cookie-bar__actions .cookie-bar__btn { flex: 1 1 auto; }
  .cookie-bar__btn--settings { flex-basis: 100%; }

  .cookie-bar__prefs { padding-inline: var(--s-4); }
  .cookie-bar__cats { grid-template-columns: 1fr; }

  .cookie-bar--corner {
    inset-inline: var(--s-3);
    max-width: none;
  }
}

/* ===== country-grid ===== */
/* ============================================================
 * country-grid · block.css
 * Скоуплено на .country-grid. Только токены (10-tokens/).
 * Конвенция разметки: ★research / premium-планка (своя разметка),
 * grid+chip+drawer по образцу payment-grid.
 * Один акцент — --brand (обводка чипа на hover/focus, единственная CTA).
 * Статусный цвет --success/--danger — ТОЛЬКО по смыслу (доступна/ограничена)
 * и всегда дублируется текстом+иконкой. Флаги — bespoke inline SVG,
 * красятся currentColor от чипа. Числа/коды — tabular-nums.
 * Tooltip и drawer — без JS (CSS hover/focus + <details>). Адаптив: 980 / 640.
 * ========================================================== */

.country-grid {
  /* фикс-слот чипа: единый размер во всём гриде (premium-ритм) */
  --cg-chip: 168px;
  /* семантический статусный цвет: дефолт = «доступна» (--success).
     Модификатор --restricted переопределяет на --danger.
     Чипы наследуют через локальные --cg-ok / --cg-no. */
  --cg-ok:      var(--success);
  --cg-ok-soft: var(--success-soft);
  --cg-no:      var(--danger);
  --cg-no-soft: var(--danger-soft);
  display: block;
}

/* ---- Шапка ---- */
.country-grid__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.country-grid__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.country-grid__lede {
  margin: 0;
  max-width: var(--container-prose);
}

/* ---- Грид равных чипов ---- */
.country-grid__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--cg-chip), 1fr));
  gap: var(--s-3);
}
.country-grid__item { display: block; min-width: 0; }

/* ---- Чип: bespoke SVG-флаг + название + статус, единые padding/radius/shadow ---- */
.country-grid__chip {
  position: relative;
  width: 100%;
  min-height: var(--tap-min);
  display: flex;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-3);
  text-align: left;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text-dim);
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease);
}
/* интерактивный чип (button) — hover/focus подсветка обводкой --brand */
button.country-grid__chip { cursor: pointer; }
button.country-grid__chip:hover,
button.country-grid__chip:focus-visible {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
  color: var(--text);
}

/* ---- Флаг: bespoke дуотон-силуэт; красится currentColor от чипа ---- */
.country-grid__flag {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 22px;
  color: var(--text-mute);
  border-radius: var(--r-soft);
  overflow: hidden;
}
.country-grid__flag svg { display: block; width: 32px; height: 22px; }
button.country-grid__chip:hover .country-grid__flag,
button.country-grid__chip:focus-visible .country-grid__flag { color: var(--text); }

/* ---- Текстовый блок чипа (имя + статус) ---- */
.country-grid__name {
  flex: 1 1 auto;
  min-width: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  line-height: var(--lh-snug);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ---- Статус-пилюля: текст + bespoke-иконка + статусный цвет ---- */
.country-grid__status {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .02em;
  border-radius: var(--r-pill);
}
.country-grid__status-ic { flex: 0 0 auto; }
.country-grid__status--ok { color: var(--cg-ok); background: var(--cg-ok-soft); }
.country-grid__status--no { color: var(--cg-no); background: var(--cg-no-soft); }

/* ---- Tooltip с валютой/языком (CSS-only, hover/focus) ---- */
.country-grid__tip {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + var(--s-2));
  transform: translateX(-50%) translateY(4px);
  z-index: var(--z-popover);
  width: max-content;
  max-width: 220px;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: var(--s-3);
  text-align: left;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
/* стрелка-указатель */
.country-grid__tip::after {
  content: "";
  position: absolute;
  top: 100%;
  inset-inline-start: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: var(--surface);
}
button.country-grid__chip:hover .country-grid__tip,
button.country-grid__chip:focus-visible .country-grid__tip {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.country-grid__tip-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
}
.country-grid__tip-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.country-grid__tip-v {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* ---- Все коды/числа — табличные цифры ---- */
.country-grid__num { font-variant-numeric: tabular-nums; }

/* ---- Drawer (нативный <details>) ---- */
.country-grid__terms {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.country-grid__terms-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.country-grid__terms-sum::-webkit-details-marker { display: none; }
.country-grid__terms-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.country-grid__terms[open] .country-grid__terms-chev { transform: rotate(180deg); }
.country-grid__terms-body {
  padding: 0 var(--s-4) var(--s-4);
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.country-grid__terms-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ---- Гео-таблица (tabular) ---- */
.country-grid__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
}
.country-grid__table th,
.country-grid__table td {
  padding: var(--s-2) var(--s-3);
  text-align: left;
  vertical-align: top;
  border-bottom: var(--hairline);
}
.country-grid__table thead th {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.country-grid__table tbody th {
  font-weight: var(--fw-semi);
  color: var(--text);
}
.country-grid__table tbody td { color: var(--text-dim); }
.country-grid__table tbody tr:last-child th,
.country-grid__table tbody tr:last-child td { border-bottom: 0; }

/* статус-таги внутри таблицы (тот же семантический язык, что и пилюли) */
.country-grid__tag {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  white-space: nowrap;
  border-radius: var(--r-pill);
}
.country-grid__tag--ok { color: var(--cg-ok); background: var(--cg-ok-soft); }
.country-grid__tag--no { color: var(--cg-no); background: var(--cg-no-soft); }

/* ---- CTA (ровно одна на блок) ---- */
.country-grid__cta {
  margin-top: var(--s-5);
  display: flex;
  justify-content: center;
}

/* ============ Модификатор: ограниченные страны ============
 * Только статусный цвет чипов/тагов переключается на --danger.
 * Акцент --brand (обводка/CTA) НЕ трогаем — один акцент. */
.country-grid--restricted {
  --cg-ok:      var(--danger);
  --cg-ok-soft: var(--danger-soft);
}

/* ============ Модификатор: компактный ============ */
.country-grid--compact { --cg-chip: 150px; }
.country-grid--compact .country-grid__chip { padding: var(--s-2) var(--s-3); gap: var(--s-2); }
.country-grid--compact .country-grid__flag,
.country-grid--compact .country-grid__flag svg { width: 26px; height: 18px; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .country-grid { --cg-chip: 156px; }
  .country-grid__grid { gap: var(--s-2); }
}
@media (max-width: 640px) {
  .country-grid { --cg-chip: 144px; }
  /* на узких экранах tooltip может упереться в край — ограничиваем ширину;
     стрелка остаётся под чипом */
  .country-grid__tip { max-width: min(220px, 72vw); }
  /* таблица: горизонтальный скролл вместо ломки колонок */
  .country-grid__table { display: block; overflow-x: auto; }
  .country-grid__cta .btn { width: 100%; }
}

/* ===== crash-strategy-table ===== */
/* ============================================================
 * crash-strategy-table · block.css
 * Скоуплено на .crash-strategy. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Реальная <table> (строки=стратегии).
 * ОДИН акцент --brand (рекомендуемая строка .is-pick). Риск-метр = dataviz-бар
 * (--success→--danger по величине, как rating-bar), не звёзды. Допущения — <details>-drawer.
 * Адаптив: 980 — уплотнение; 640 — горизонтальный скролл + липкая 1-я колонка.
 * ========================================================== */

.crash-strategy {
  display: block;
  font-variant-numeric: tabular-nums;
}

/* ---- Заголовок блока ---- */
.crash-strategy__head { max-width: var(--container-prose); margin-bottom: var(--s-5); }
.crash-strategy__eyebrow { margin-bottom: var(--s-2); }
.crash-strategy__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.crash-strategy__lede { margin-top: var(--s-2); }

/* ---- Скролл-обёртка (сохраняем семантику table на узких) ---- */
.crash-strategy__scroll {
  overflow-x: auto;
  border-radius: var(--r-lg);
  -webkit-overflow-scrolling: touch;
}
.crash-strategy__scroll:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ---- Таблица (карточная поверхность) ---- */
.crash-strategy__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  table-layout: fixed;
  overflow: hidden;
}

.crash-strategy__col-name { width: 22%; }
.crash-strategy__col-x    { width: 15%; }
.crash-strategy__col-wr   { width: 13%; }
.crash-strategy__col-risk { width: 20%; }
.crash-strategy__col-note { width: 30%; }

/* ---- Шапка ---- */
.crash-strategy__th {
  padding: var(--s-3) var(--s-4);
  text-align: left;
  vertical-align: middle;
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: var(--hairline);
}
.crash-strategy__th + .crash-strategy__th { border-left: var(--hairline); }
.crash-strategy__th--name { background: var(--surface-2); }

/* ---- Строки ---- */
.crash-strategy__name {
  padding: var(--s-4);
  text-align: left;
  vertical-align: middle;
  background: var(--surface-2);
  border-bottom: var(--hairline);
}
.crash-strategy__name-main {
  display: block;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  line-height: var(--lh-snug);
}
.crash-strategy__name-sub { display: block; margin-top: 2px; font-size: var(--t-tiny); color: var(--text-mute); }

.crash-strategy__cell {
  padding: var(--s-4);
  vertical-align: middle;
  border-bottom: var(--hairline);
  border-left: var(--hairline);
  color: var(--text-dim);
}
.crash-strategy__cell--note { font-size: var(--t-small); line-height: var(--lh-snug); color: var(--text-mute); }

.crash-strategy__table tbody tr:last-child .crash-strategy__name,
.crash-strategy__table tbody tr:last-child .crash-strategy__cell { border-bottom: none; }

/* Целевой множитель — крупно, табличные цифры */
.crash-strategy__x {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.crash-strategy__xu { font-size: var(--t-small); color: var(--text-faint); margin-left: 1px; }

.crash-strategy__num {
  font-weight: var(--fw-semi);
  font-size: var(--t-body);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---- Риск-метр (dataviz, шкала success→danger) ---- */
.crash-strategy__risk { display: flex; flex-direction: column; gap: var(--s-1); }
.crash-strategy__risk-bar {
  width: min(140px, 100%);
  height: 7px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.crash-strategy__risk-fill {
  display: block; height: 100%;
  width: calc(var(--val) * 1%);
  border-radius: inherit;
  /* низкий риск = зелёный, высокий = красный (по смыслу) */
  background: linear-gradient(90deg, var(--success), var(--warning) 55%, var(--danger));
}
.crash-strategy__risk-tag { font-size: var(--t-tiny); font-weight: var(--fw-semi); color: var(--text-mute); }

/* ---- Рекомендуемая строка — ОДИН акцент --brand ---- */
.crash-strategy__row.is-pick .crash-strategy__name {
  background: var(--brand-soft);
  box-shadow: inset 3px 0 0 0 var(--brand);
}
.crash-strategy__row.is-pick .crash-strategy__cell { background: var(--brand-soft); }
.crash-strategy__row.is-pick .crash-strategy__name-main { color: var(--brand); }

.crash-strategy__pick-badge {
  display: inline-flex; align-items: center;
  margin-bottom: var(--s-2);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-bold);
  letter-spacing: .06em; text-transform: uppercase;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
}

/* ---- Drawer допущений (<details>) ---- */
.crash-strategy__assume {
  margin-top: var(--s-4);
  background: var(--surface-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.crash-strategy__assume-q {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-2);
  list-style: none;
  padding: var(--s-3) var(--s-4);
  min-height: var(--tap-min);
  font-size: var(--t-small); font-weight: var(--fw-semi);
  color: var(--text-dim);
  cursor: pointer;
}
.crash-strategy__assume-q::-webkit-details-marker { display: none; }
.crash-strategy__assume-chev { flex: 0 0 auto; transition: transform var(--dur-base) var(--ease); }
.crash-strategy__assume[open] .crash-strategy__assume-chev { transform: rotate(180deg); }
.crash-strategy__assume-body {
  padding: 0 var(--s-4) var(--s-4);
  font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-mute);
}

/* ---- Подвал: ОДНА CTA ---- */
.crash-strategy__foot {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: var(--s-4);
  margin-top: var(--s-5);
}
.crash-strategy__verdict { flex: 1 1 320px; font-size: var(--t-small); line-height: var(--lh-snug); }
.crash-strategy__cta { flex: 0 0 auto; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .crash-strategy__th,
  .crash-strategy__name,
  .crash-strategy__cell { padding: var(--s-3); }
  .crash-strategy__name-main { font-size: var(--t-body); }
}

@media (max-width: 640px) {
  .crash-strategy__table { table-layout: auto; min-width: 640px; }
  .crash-strategy__col-name, .crash-strategy__col-x, .crash-strategy__col-wr,
  .crash-strategy__col-risk, .crash-strategy__col-note { width: auto; }

  /* 1-я колонка липкая, остаётся видимой при скролле */
  .crash-strategy__th--name,
  .crash-strategy__name {
    position: sticky; left: 0; z-index: var(--z-base);
    min-width: 150px;
    box-shadow: 1px 0 0 0 var(--rule);
  }
  .crash-strategy__cell { min-width: 130px; }
  .crash-strategy__cell--note { min-width: 200px; }

  .crash-strategy__foot { flex-direction: column; align-items: stretch; }
  .crash-strategy__cta { width: 100%; }
}

/* ===== criteria-weights ===== */
/* ============================================================
 * criteria-weights · block.css
 * Скоуплено на .criteria-weights. Только токены (10-tokens/).
 * Назначение: атом-датавиз — веса критериев методологии (gauge-бары).
 * Эталон структуры/нейминга: casino-item-card (.ci-rating__bar/__fill,
 *   tabular-nums, --surface+--hairline+--r-lg+--shadow-card). Конвенция: ★research / premium.
 * Один акцент (--brand→--brand-2); состояние — не только цветом. Адаптив: 980 / 640.
 * Соотношение с methodology: тот блок ОБЪЯСНЯЕТ (шапка/лид/drawer и встраивает эту
 *   визуализацию как часть «Варианта A»); criteria-weights — переиспользуемый
 *   датавиз-атом (как rating-score рядом с casino-item-card).
 * ========================================================== */

.criteria-weights {
  /* фикс-слоты: ширина числовой колонки веса + размер слота под глиф */
  --cw-weight-col: 52px;
  --cw-glyph: 22px;
  --cw-bar-h: 8px;
  /* доля каждого критерия от максимума шкалы (по умолчанию 100% = вес в % напрямую) */
  --cw-scale: 100;

  display: block;
  font-family: var(--font-body);
  color: var(--text);
}

/* ---- Опц. компактная шапка (для standalone-использования вне methodology) ---- */
.criteria-weights__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-4);
}
.criteria-weights__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.criteria-weights__hint {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Список критериев ---- */
.criteria-weights__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}

/* Строка критерия: имя ↔ вес сверху, gauge-бар во всю ширину снизу */
.criteria-weights__item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--cw-weight-col);
  grid-template-areas:
    "name weight"
    "bar  bar";
  align-items: baseline;
  column-gap: var(--s-4);
  row-gap: var(--s-2);
}

/* Имя критерия + фикс-слот под bespoke-глиф (выравнивает названия) */
.criteria-weights__name {
  grid-area: name;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-width: 0;
  font-size: var(--t-body);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}
.criteria-weights__glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--cw-glyph);
  height: var(--cw-glyph);
  border-radius: var(--r-soft);
  color: var(--brand);
  background: var(--brand-soft);
}
.criteria-weights__label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }

/* Вес в % — mono + tabular-nums (число всегда продублировано текстом, не только полосой) */
.criteria-weights__weight {
  grid-area: weight;
  justify-self: end;
  font-family: var(--font-mono);
  font-size: var(--t-body);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* Gauge-бар: трек + заливка. Ширина = вес критерия (inline --w, data-driven).
 * Доля рисуется как (вес / шкала). По умолчанию шкала = 100 → ширина = весу в %. */
.criteria-weights__bar {
  grid-area: bar;
  height: var(--cw-bar-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.criteria-weights__fill {
  display: block;
  height: 100%;
  width: calc(var(--w, 0) / var(--cw-scale) * 100%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
  transition: width var(--dur-slow) var(--ease-out), filter var(--dur-quick) var(--ease);
}
/* subtle hover/focus highlight всей строки — функционально, без смены данных */
.criteria-weights__item:hover .criteria-weights__fill,
.criteria-weights__item:focus-within .criteria-weights__fill {
  filter: saturate(1.15) brightness(1.04);
}

/* ---- Опц. итоговая строка (∑ весов) — часть датавиза, не отдельный блок ---- */
.criteria-weights__total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.criteria-weights__total-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.criteria-weights__total-v {
  font-family: var(--font-mono);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ============================================================
 * Модификаторы
 * ========================================================== */

/* --card — обернуть атом в самостоятельную карточку (--surface+--hairline+--r-lg+--shadow-card) */
.criteria-weights--card {
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* --compact — плотный вариант для сайдбара/врезки: меньше gap, мельче бар и шрифт имени */
.criteria-weights--compact { --cw-bar-h: 6px; }
.criteria-weights--compact .criteria-weights__list { gap: var(--s-3); }
.criteria-weights--compact .criteria-weights__name { font-size: var(--t-small); }
.criteria-weights--compact .criteria-weights__weight { font-size: var(--t-small); }
.criteria-weights--compact.criteria-weights--card { padding: var(--s-5); }

/* --cols — двухколоночная сетка плотного списка (для широких контейнеров) */
@media (min-width: 781px) {
  .criteria-weights--cols .criteria-weights__list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: var(--s-6);
    row-gap: var(--s-4);
  }
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .criteria-weights--card { padding: var(--s-5); }
}
@media (max-width: 640px) {
  .criteria-weights--card { padding: var(--s-4); }
  .criteria-weights__item { column-gap: var(--s-3); }
  .criteria-weights__head { flex-wrap: wrap; gap: var(--s-2); }
  .criteria-weights__total { flex-wrap: wrap; gap: var(--s-2); }
}

/* ===== crypto-price-ticker ===== */
/* ============================================================
 * crypto-price-ticker · block.css
 * Скоуплено на .crypto-ticker. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Горизонтальная лента карточек-курсов.
 * ОДИН акцент --brand (.is-featured «горячая» монета); up=--success / down=--danger
 * ТОЛЬКО по смыслу (направление Δ), не для декора. Спарклайны — bespoke inline SVG.
 * Адаптив: 980 — компактнее; 640 — скролл-снап, карточки уже.
 * ========================================================== */

.crypto-ticker {
  display: block;
  font-variant-numeric: tabular-nums;
}

/* ---- Шапка ---- */
.crypto-ticker__head {
  display: flex; align-items: flex-end; justify-content: space-between;
  flex-wrap: wrap; gap: var(--s-3);
  margin-bottom: var(--s-4);
}
.crypto-ticker__title {
  margin: 2px 0 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.crypto-ticker__status {
  display: inline-flex; align-items: center; gap: var(--s-2);
  font-size: var(--t-tiny); color: var(--text-mute);
}
.crypto-ticker__dot {
  width: 8px; height: 8px; border-radius: var(--r-pill);
  background: var(--success);
  box-shadow: 0 0 0 3px var(--success-soft);
}

/* ---- Лента ---- */
.crypto-ticker__track {
  list-style: none; margin: 0; padding: var(--s-1) 0;
  display: flex; gap: var(--s-3);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.crypto-ticker__track:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: var(--r-md); }

/* ---- Карточка-курс (surface + hairline + r-lg + shadow) ---- */
.crypto-coin {
  flex: 0 0 auto;
  width: 220px;
}
.crypto-coin__inner {
  display: flex; flex-direction: column; gap: var(--s-3);
  height: 100%;
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.crypto-coin__inner:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }

/* Горячая монета — единственный акцент --brand */
.crypto-coin.is-featured .crypto-coin__inner {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop), inset 0 3px 0 0 var(--brand);
}

/* ---- Верх: знак + символ + имя ---- */
.crypto-coin__top { display: flex; align-items: center; gap: var(--s-2); }
.crypto-coin__mark {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px;
  color: var(--text-dim);
  background: var(--bg-2);
  border-radius: var(--r-pill);
}
/* акцент-знак только у featured (один акцент) */
.crypto-coin.is-featured .crypto-coin__mark { color: var(--brand); background: var(--brand-soft); }

.crypto-coin__id { display: flex; flex-direction: column; line-height: var(--lh-tight); min-width: 0; }
.crypto-coin__sym { font-weight: var(--fw-bold); font-size: var(--t-body); color: var(--text); letter-spacing: .02em; }
.crypto-coin__name { font-size: var(--t-tiny); color: var(--text-mute); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.crypto-coin__hot {
  margin-left: auto;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-bold);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
}

/* ---- Цена ---- */
.crypto-coin__price {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--text);
  line-height: var(--lh-tight);
  font-variant-numeric: tabular-nums;
}
.crypto-coin__cur { color: var(--text-faint); font-weight: var(--fw-medium); }

/* ---- Мета: Δ24h + спарклайн ---- */
.crypto-coin__meta {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  margin-top: auto;
}
.crypto-coin__delta {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 2px var(--s-2);
  font-size: var(--t-small); font-weight: var(--fw-semi);
  border-radius: var(--r-soft);
  font-variant-numeric: tabular-nums;
}
/* направление: цвет + СТРЕЛКА (состояние не только цветом) */
.crypto-coin__delta--up   { color: var(--success); background: var(--success-soft); }
.crypto-coin__delta--down { color: var(--danger);  background: var(--danger-soft); }
.crypto-coin__delta--flat { color: var(--text-mute); background: var(--bg-3); }

.crypto-coin__spark { width: 86px; height: 30px; flex: 0 0 auto; }
.crypto-coin__spark--up   { color: var(--success); }
.crypto-coin__spark--down { color: var(--danger); }
.crypto-coin__spark--flat { color: var(--text-faint); }

.crypto-ticker__foot { margin-top: var(--s-4); font-size: var(--t-tiny); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .crypto-coin { width: 200px; }
  .crypto-coin__inner { padding: var(--s-3); }
}
@media (max-width: 640px) {
  /* скролл-снап для свайпа по карточкам */
  .crypto-ticker__track { scroll-snap-type: x mandatory; }
  .crypto-coin { width: 78vw; max-width: 280px; scroll-snap-align: start; }
}

/* ===== crypto-wallets-grid ===== */
/* ============================================================
 * crypto-wallets-grid · block.css
 * Скоуплено на .wallets-grid. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка), сестра payment-grid /
 *   coins-grid. Один акцент — --brand (обводка активного слота + единственная
 *   CTA). Tooltip и drawer — без JS (CSS hover/focus + <details>). bespoke
 *   inline SVG (нейтральные марки). Числа — tabular-nums. Адаптив: 980 / 640.
 * ========================================================== */

.wallets-grid {
  --wg-slot: 140px;          /* фикс-слот: единый размер во всём гриде */
  display: block;
}

/* ---- Шапка ---- */
.wallets-grid__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.wallets-grid__head .eyebrow { margin: 0; }
.wallets-grid__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.wallets-grid__lede { margin: 0; max-width: var(--container-prose); }

/* Числа — табличные */
.wallets-grid__num { font-variant-numeric: tabular-nums; }

/* ---- Грид равных слотов ---- */
.wallets-grid__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--wg-slot), 1fr));
  gap: var(--s-3);
}
.wallets-grid__item { display: block; min-width: 0; }

/* ---- Слот: марка + имя + тип-чип, единые pad/radius/shadow ---- */
.wallets-grid__slot {
  position: relative;
  width: 100%;
  min-height: var(--tap-min);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  padding: var(--s-4) var(--s-3);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text-dim);
  cursor: pointer;
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease);
}
.wallets-grid__slot:hover,
.wallets-grid__slot:focus-visible {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
  color: var(--text);
}

/* марка — нейтральная, красится currentColor от слота */
.wallets-grid__logo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 34px;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.wallets-grid__logo svg { display: block; height: 34px; width: auto; }
.wallets-grid__slot:hover .wallets-grid__logo,
.wallets-grid__slot:focus-visible .wallets-grid__logo { color: var(--brand); }

.wallets-grid__name {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  letter-spacing: .01em;
  color: var(--text);
  text-align: center;
  line-height: var(--lh-snug);
}

/* тип-чип — нейтральный, на --bg-2 (не носитель акцента) */
.wallets-grid__type {
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-pill);
}

/* ---- Tooltip (CSS-only) ---- */
.wallets-grid__tip {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + var(--s-2));
  transform: translateX(-50%) translateY(4px);
  z-index: var(--z-popover);
  width: max-content;
  max-width: 240px;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: var(--s-3);
  text-align: left;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.wallets-grid__tip::after {
  content: "";
  position: absolute;
  top: 100%;
  inset-inline-start: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: var(--surface);
}
.wallets-grid__slot:hover .wallets-grid__tip,
.wallets-grid__slot:focus-visible .wallets-grid__tip {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.wallets-grid__tip-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
}
.wallets-grid__tip-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.wallets-grid__tip-v {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  text-align: right;
}

/* ---- T&C-drawer (нативный <details>) ---- */
.wallets-grid__terms {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.wallets-grid__terms-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.wallets-grid__terms-sum::-webkit-details-marker { display: none; }
.wallets-grid__terms-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.wallets-grid__terms[open] .wallets-grid__terms-chev { transform: rotate(180deg); }
.wallets-grid__terms-body {
  padding: 0 var(--s-4) var(--s-4);
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.wallets-grid__terms-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ---- Таблица легенды ---- */
.wallets-grid__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
}
.wallets-grid__table th,
.wallets-grid__table td {
  padding: var(--s-2) var(--s-3);
  text-align: left;
  border-bottom: var(--hairline);
}
.wallets-grid__table thead th {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.wallets-grid__table tbody th { font-weight: var(--fw-semi); color: var(--text); }
.wallets-grid__table tbody td { color: var(--text-dim); }
.wallets-grid__table tbody tr:last-child th,
.wallets-grid__table tbody tr:last-child td { border-bottom: 0; }

/* ---- CTA (ровно одна на блок) ---- */
.wallets-grid__cta {
  margin-top: var(--s-5);
  display: flex;
  justify-content: center;
}

/* ============ Модификатор: компактный ============ */
.wallets-grid--compact { --wg-slot: 112px; }
.wallets-grid--compact .wallets-grid__slot { padding: var(--s-3) var(--s-2); }
.wallets-grid--compact .wallets-grid__logo,
.wallets-grid--compact .wallets-grid__logo svg { height: 28px; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .wallets-grid { --wg-slot: 124px; }
  .wallets-grid__grid { gap: var(--s-2); }
  .wallets-grid__title { font-size: var(--t-h3); }
}
@media (max-width: 640px) {
  .wallets-grid { --wg-slot: 104px; }
  .wallets-grid__tip { max-width: min(240px, 74vw); }
  .wallets-grid__table { display: block; overflow-x: auto; white-space: nowrap; }
  .wallets-grid__cta .btn { width: 100%; }
}

/* ============ Reduced motion (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .wallets-grid__slot,
  .wallets-grid__tip { transition: none; }
}

/* ===== cta-primary ===== */
/* ============================================================
 * cta-primary · block.css
 * Скоуплено на .cta-primary. Только токены (10-tokens/).
 * Конверсионный блок: hook (eyebrow + headline + lede) + value-чипы
 * + ОДНА primary CTA (fake-link) + опц. secondary + reassurance
 * + раскрываемый T&C-drawer. Контейнер на --brand-soft/--surface.
 * Один акцент (--brand) + дисциплина нейтралей. tabular-nums.
 * Конвенция: html-base + _CONTRACT (эталон casino-item-card). Адаптив: 980 / 640.
 * T&C-drawer — нативный <details>, раскрытие grid-rows 0fr→1fr (без JS-замера).
 * ========================================================== */

.cta-primary {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-4);
  padding: var(--s-7);
  /* Премиум-контейнер: surface + внутренний радиальный brand-glow в углу
     + тонкий верхний градиент-оверлей (амбиент завязан на --brand → адаптив под скин). */
  background-color: var(--surface);
  background-image:
    radial-gradient(85% 120% at 96% -8%, color-mix(in srgb, var(--brand) 14%, transparent) 0%, transparent 58%),
    var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
  transition: transform var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out),
              border-color var(--dur-base) var(--ease-out);
}
/* Hover: lift + акцент-glow + бренд-бордер (конверсионный блок — заметнее) */
.cta-primary:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-card), var(--shadow-glow);
  border-color: color-mix(in srgb, var(--brand) 40%, var(--rule));
}

/* ---- Hook: eyebrow + headline + lede ---- */
.cta-primary__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  /* наследует .eyebrow из base; локально — акцентный mark */
}
.cta-primary__eyebrow-mark {
  display: inline-flex;
  color: var(--brand);
}

.cta-primary__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
}
.cta-primary__title-accent { color: var(--brand); }

.cta-primary__lede {
  margin: 0;
  max-width: var(--container-prose);
  font-size: var(--t-h4);
  line-height: var(--lh-loose);
  color: var(--text-dim);
}
.cta-primary__num { font-weight: var(--fw-semi); color: var(--text); font-variant-numeric: tabular-nums; }

/* ---- Value-чипы: фикс-слоты выгод (опц.) ---- */
.cta-primary__values {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin: 0;
  padding: 0;
}
.cta-primary__value {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-dim);
  /* frosted-стекло-чип: translucent + backdrop blur (тонкий премиум-акцент) */
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-pill);
  box-shadow: var(--border-highlight);
}
.cta-primary__value-ic { display: inline-flex; color: var(--brand); }
.cta-primary__value b { font-weight: var(--fw-semi); color: var(--text); font-variant-numeric: tabular-nums; }

/* ---- Actions: ОДНА primary + опц. secondary ---- */
.cta-primary__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-3);
  width: 100%;
  margin-top: var(--s-1);
}
/* primary CTA — акцентная, чуть крупнее (наследует .btn.--primary.--lg из base) */
.cta-primary__cta { flex: 0 0 auto; }
/* secondary — тихая ссылка-кнопка, не конкурирует с primary */
.cta-primary__alt { flex: 0 0 auto; }

/* ---- Reassurance: микрокопия снятия трения ---- */
.cta-primary__assure {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.cta-primary__assure-ic { flex: 0 0 auto; display: inline-flex; color: var(--success); }
.cta-primary__assure b { font-weight: var(--fw-semi); color: var(--text-dim); font-variant-numeric: tabular-nums; }

/* ---- T&C-drawer: нативный <details>, держит блок чистым ---- */
.cta-primary__terms {
  width: 100%;
  margin-top: calc(-1 * var(--s-1));
  border-top: var(--hairline);
}
.cta-primary__terms-q {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.cta-primary__terms-q::-webkit-details-marker { display: none; } /* убрать дефолтный треугольник */
.cta-primary__terms-q:hover { color: var(--brand); }
.cta-primary__terms[open] .cta-primary__terms-q { color: var(--brand); }

.cta-primary__terms-chevron {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.cta-primary__terms-q:hover .cta-primary__terms-chevron { color: var(--brand); }
.cta-primary__terms[open] .cta-primary__terms-chevron { transform: rotate(180deg); color: var(--brand); }

/* Раскрытие: grid-rows 0fr→1fr (плавная высота без JS-замера) */
.cta-primary__terms-a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.cta-primary__terms[open] .cta-primary__terms-a { grid-template-rows: 1fr; }
.cta-primary__terms-inner {
  overflow: hidden;
  min-height: 0; /* критично для коллапса grid-строки */
}
.cta-primary__terms-inner p {
  padding-bottom: var(--s-3);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* ============================================================
 * Варианты
 * ========================================================== */

/* --soft · контейнер целиком на --brand-soft (тёплая плашка) */
.cta-primary--soft {
  /* двойной амбиент: brand-glow сверху-справа + тёплый отлив снизу-слева */
  background-color: var(--brand-soft);
  background-image:
    radial-gradient(95% 120% at 96% -8%, color-mix(in srgb, var(--brand) 16%, transparent) 0%, transparent 56%),
    radial-gradient(120% 120% at 0% 100%, color-mix(in srgb, var(--brand) 8%, transparent) 0%, transparent 60%);
  border-color: color-mix(in srgb, var(--brand) 28%, transparent);
}
.cta-primary--soft:hover {
  border-color: color-mix(in srgb, var(--brand) 44%, transparent);
}

/* --banner · широкий горизонтальный сплит (hook слева, actions справа) */
@media (min-width: 981px) {
  .cta-primary--banner {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(260px, 0.9fr);
    grid-template-areas:
      "hook    actions"
      "values  actions"
      "terms   terms";
    align-items: center;
    column-gap: var(--s-7);
    row-gap: var(--s-4);
  }
  .cta-primary--banner .cta-primary__eyebrow,
  .cta-primary--banner .cta-primary__title,
  .cta-primary--banner .cta-primary__lede { grid-column: hook; }
  .cta-primary--banner .cta-primary__values { grid-area: values; }
  .cta-primary--banner .cta-primary__terms { grid-area: terms; }
  .cta-primary--banner .cta-primary__actions {
    grid-area: actions;
    flex-direction: column;
    align-items: stretch;
    gap: var(--s-3);
  }
  .cta-primary--banner .cta-primary__cta,
  .cta-primary--banner .cta-primary__alt { width: 100%; }
  .cta-primary--banner .cta-primary__assure { justify-content: center; }
}

/* --center · центрированная композиция (для секции на всю ширину) */
.cta-primary--center {
  align-items: center;
  text-align: center;
}
.cta-primary--center .cta-primary__lede { margin-inline: auto; }
.cta-primary--center .cta-primary__actions,
.cta-primary--center .cta-primary__values { justify-content: center; }
.cta-primary--center .cta-primary__terms { text-align: left; }
.cta-primary--center .cta-primary__terms-q { justify-content: center; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .cta-primary { padding: var(--s-6); gap: var(--s-4); }
}
@media (max-width: 640px) {
  .cta-primary { padding: var(--s-5); }
  /* CTA на всю ширину — крупный touch-target, ясная иерархия */
  .cta-primary__actions { flex-direction: column; align-items: stretch; }
  .cta-primary__cta,
  .cta-primary__alt { width: 100%; }
}

/* ============ Reduced motion: без анимации высоты/шеврона/lift ============ */
@media (prefers-reduced-motion: reduce) {
  .cta-primary__terms-a { transition: none; }
  .cta-primary__terms-chevron { transition: color var(--dur-quick) var(--ease); }
  .cta-primary { transition: box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); }
  .cta-primary:hover { transform: none; }
}

/* ===== cta-secondary ===== */
/* ============================================================
 * cta-secondary · block.css
 * Скоуплено на .cta-secondary. Только токены (10-tokens/).
 * ВТОРИЧНАЯ навигационная CTA (Compare / Browse) — НЕ партнёрская конверсия.
 * Доминирующее действие — ВНУТРЕННЯЯ ссылка (.btn--outline/--ghost): тише,
 * чем gold-fill primary из cta-primary, и не конкурирует с ней на странице.
 * Анатомия: иконка-слот (bespoke SVG) + копи + ОДНА internal-CTA + опц. тихий
 * запасной выход + опц. фикс-слоты лого (browse-affordance, tabular-nums).
 * Контейнер: --surface + --hairline + --r-lg + --shadow-card. Один акцент --brand.
 * Конвенция: html-base + _CONTRACT (эталон casino-item-card). Адаптив: 980 / 640.
 * ========================================================== */

.cta-secondary {
  /* Локальные слоты (в шкале токенов: 8pt-кратные) */
  --cta-sec-icon: var(--s-7);   /* 48px — фикс-слот иконки */
  --cta-sec-chip: var(--s-7);   /* 48px — фикс-слот лого в browse-стопке */

  display: flex;
  align-items: center;
  gap: var(--s-5);
  padding: var(--s-5) var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- Иконка-слот: фикс-размер, мягкая «печать» бренда (один акцент) ---- */
.cta-secondary__icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--cta-sec-icon);
  height: var(--cta-sec-icon);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}

/* ---- Копи: заголовок + опц. eyebrow + подпись ---- */
.cta-secondary__body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}
.cta-secondary__eyebrow { margin: 0; }     /* наследует .eyebrow из base */

.cta-secondary__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
}

.cta-secondary__text {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}
.cta-secondary__num {
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}

/* ---- Actions: ОДНА доминирующая internal-CTA + опц. тихий «запасной выход» ---- */
.cta-secondary__actions {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--s-2);
}
/* Доминирующая CTA — .btn--outline/--ghost из base (тише, чем primary). */
.cta-secondary__cta {
  flex: 0 0 auto;
  white-space: nowrap;
}
.cta-secondary__cta-ic { display: inline-flex; }

/* «Запасной выход» — текстовая ссылка-стрелка, ещё тише CTA */
.cta-secondary__alt {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
.cta-secondary__alt svg { transition: transform var(--dur-base) var(--ease-out); }
.cta-secondary__alt:hover { color: var(--brand); }
.cta-secondary__alt:hover svg { transform: translateX(2px); }

/* ============================================================
 * Вариант --browse · фикс-слоты лого как browse-affordance
 * ========================================================== */
.cta-secondary__stack {
  flex: 0 0 auto;
  list-style: none;
  display: flex;
  margin: 0;
  padding: 0;
}
.cta-secondary__chip {
  width: var(--cta-sec-chip);
  height: var(--cta-sec-chip);
  margin-inline-start: calc(-1 * var(--s-3)); /* перехлёст «стопкой» */
  border-radius: var(--r-pill);
  background: var(--bg-2);
  border: 2px solid var(--surface);          /* кромкой отделяет слои стопки */
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
.cta-secondary__chip:first-child { margin-inline-start: 0; }
.cta-secondary__chip img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}
/* Последний «+N» слот — счётчик скрытых на акценте, tabular-nums */
.cta-secondary__chip--more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--brand);
}
.cta-secondary__chip--more .cta-secondary__num {
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  color: var(--on-brand);
  font-variant-numeric: tabular-nums;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .cta-secondary { padding: var(--s-5); gap: var(--s-4); }
}
@media (max-width: 640px) {
  /* Стек: иконка/стопка → копи → CTA на всю ширину (ясная иерархия, крупный tap) */
  .cta-secondary {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-4);
  }
  .cta-secondary__actions {
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-3);
  }
  .cta-secondary__cta { flex: 1 1 auto; }
  .cta-secondary__alt { flex: 0 0 auto; }
}

/* ===== data-table ===== */
/* ============================================================
 * data-table · block.css
 * Скоуплено на .data-table. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка).
 * Один акцент — --brand (активная сортировка, единственная CTA/строка).
 * Все числовые ячейки — tabular-nums; рейтинг/доля — dataviz-метр (бар), не звёзды.
 * Сортировка — _shared/components.js (data-action="sort"). T&C-drawer — нативный <details>.
 * Адаптив: 980 / 640 (на <640 таблица «схлопывается» в карточки-строки через data-label).
 * ========================================================== */

.data-table {
  /* фикс-слот логотипа оператора в ячейке имени (единый ритм) */
  --dt-logo: 32px;
  display: block;
}

/* ---- Шапка ---- */
.data-table__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.data-table__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.data-table__lede {
  margin: 0;
  max-width: var(--container-prose);
}
.data-table__meta {
  display: block;
  margin-top: var(--s-2);
  font-size: var(--t-small);
  color: var(--text-mute);
}
.data-table__meta time { color: var(--text-dim); }

/* ---- Все числа — табличные цифры ---- */
.data-table__num { font-variant-numeric: tabular-nums; }

/* ---- Обёртка-скролл (горизонтальный на узких экранах) ---- */
.data-table__scroll {
  width: 100%;
  overflow-x: auto;
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
  -webkit-overflow-scrolling: touch;
}

/* ---- Таблица ---- */
.data-table__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
}
.data-table__col--rank { width: 1%; }
.data-table__col--cta  { width: 1%; }

/* ---- Заголовки колонок ---- */
.data-table__th {
  position: sticky;
  top: 0;
  z-index: var(--z-base);
  padding: var(--s-3) var(--s-4);
  text-align: left;
  vertical-align: middle;
  white-space: nowrap;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: var(--hairline);
}
.data-table__th--num { text-align: right; }
.data-table__th--cta { width: 1%; }

/* Сортируемый заголовок — кнопка-триггер */
.data-table__th--sortable { padding: 0; }
.data-table__sort {
  width: 100%;
  min-height: var(--tap-min);
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--s-1);
  padding: var(--s-3) var(--s-4);
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: var(--text-mute);
  background: none;
  border: 0;
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.data-table__sort:hover { color: var(--text); }
.data-table__sort-ic { flex: 0 0 auto; opacity: .5; transition: opacity var(--dur-quick) var(--ease); }
.data-table__sort:hover .data-table__sort-ic { opacity: .9; }
/* активная сортировка — единственное место акцента в шапке */
.data-table__sort[aria-pressed="true"] { color: var(--brand); }
.data-table__sort[aria-pressed="true"] .data-table__sort-ic { opacity: 1; }
/* направление: стрелка вниз для desc, вверх для asc (по следующему клику data-dir инвертируется,
   поэтому показываем текущее состояние — desc когда следующий клик даст asc) */
.data-table__sort[aria-pressed="true"][data-dir="asc"]  .data-table__sort-ic { transform: rotate(180deg); }

/* ---- Ячейки ---- */
.data-table__td {
  padding: var(--s-3) var(--s-4);
  text-align: left;
  vertical-align: middle;
  color: var(--text-dim);
  border-bottom: var(--hairline);
}
.data-table__td--num { text-align: right; }
.data-table__td--cta { text-align: right; white-space: nowrap; }

.data-table__row { transition: background var(--dur-quick) var(--ease); }
.data-table__row:hover { background: var(--bg-2); }
.data-table__table tbody tr:last-child .data-table__td { border-bottom: 0; }

/* ---- Позиция (#) ---- */
.data-table__rank {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
}

/* ---- Ячейка имени (фикс-слот лого + название) ---- */
.data-table__name-cell { color: var(--text); }
.data-table__brand {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-width: 0;
}
.data-table__logo {
  flex: 0 0 auto;
  width: var(--dt-logo);
  height: var(--dt-logo);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
.data-table__logo svg { display: block; }
.data-table__brand-name {
  font-weight: var(--fw-semi);
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- Dataviz-метр (рейтинг/доля вместо звёзд) ---- */
.data-table__rate {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
  min-width: 64px;
}
.data-table__rate-v {
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.data-table__rate-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.data-table__meter {
  width: 100%;
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.data-table__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- Итоговая строка (tfoot) ---- */
.data-table__foot-row { background: var(--surface-2); }
.data-table__foot {
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  border-top: var(--hairline);
}

/* ---- T&C-drawer (нативный <details>, без JS) ---- */
.data-table__terms {
  margin-top: var(--s-4);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.data-table__terms-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.data-table__terms-sum::-webkit-details-marker { display: none; }
.data-table__terms-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.data-table__terms[open] .data-table__terms-chev { transform: rotate(180deg); }
.data-table__terms-body { padding: 0 var(--s-4) var(--s-4); }
.data-table__terms-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ============ Модификатор: компактный ============ */
.data-table--compact .data-table__table { font-size: var(--t-tiny); }
.data-table--compact .data-table__th { padding: var(--s-2) var(--s-3); }
.data-table--compact .data-table__td { padding: var(--s-2) var(--s-3); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .data-table__th,
  .data-table__td { padding: var(--s-3); }
  .data-table__sort { padding: var(--s-3); }
}

/* На узких экранах таблица «схлопывается» в стопку карточек-строк.
   Подпись колонки выводится из data-label каждой ячейки. */
@media (max-width: 640px) {
  .data-table__scroll {
    overflow-x: visible;
    border: 0;
    background: transparent;
    box-shadow: none;
  }
  .data-table__table { font-size: var(--t-small); }

  /* прячем визуальные thead/tfoot/colgroup — заголовки переезжают в строки */
  .data-table__table thead,
  .data-table__table tfoot { display: none; }

  .data-table__table tbody { display: block; }

  .data-table__row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: var(--s-2) var(--s-3);
    align-items: center;
    margin-bottom: var(--s-4);
    padding: var(--s-4);
    background: var(--surface);
    border: var(--hairline);
    border-radius: var(--r-lg);
    box-shadow: var(--shadow-card);
  }
  .data-table__row:hover { background: var(--surface); }

  .data-table__td {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-3);
    padding: 0;
    text-align: right;
    border-bottom: 0;
  }
  .data-table__td--num { text-align: right; }

  /* подпись колонки перед значением */
  .data-table__td::before {
    content: attr(data-label);
    flex: 0 0 auto;
    font-size: var(--t-tiny);
    letter-spacing: .04em;
    text-transform: uppercase;
    font-weight: var(--fw-semi);
    color: var(--text-mute);
    text-align: left;
  }

  /* имя оператора — на всю ширину карточки, как заголовок строки */
  .data-table__name-cell {
    grid-column: 1 / -1;
    justify-content: flex-start;
    padding-bottom: var(--s-3);
    margin-bottom: var(--s-1);
    border-bottom: var(--hairline);
  }
  .data-table__name-cell::before { content: none; }
  .data-table__brand-name { white-space: normal; font-size: var(--t-body); }

  /* позиция (#) — компактный бейдж рядом с именем */
  .data-table__td[data-label="#"] {
    grid-column: 1 / -1;
    justify-content: flex-start;
    order: -1;
    margin-bottom: calc(-1 * var(--s-1));
  }
  .data-table__td[data-label="#"]::before { content: none; }

  /* рейтинг-метр растягивается на всю строку под подписью */
  .data-table__rate { width: 100%; min-width: 0; }

  /* CTA — на всю ширину карточки */
  .data-table__td--cta {
    grid-column: 1 / -1;
    justify-content: stretch;
    margin-top: var(--s-2);
  }
  .data-table__td--cta::before { content: none; }
  .data-table__td--cta .btn { width: 100%; }
}

/* ===== decorative-space-shapes ===== */
/* ============================================================
 * decorative-space-shapes · block.css
 * Скоуплено на .decorative-space-shapes (+ демо-обёртка .dss-demo). Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка). Осознанный декор, не шум:
 *   фикс-набор фигур, низкая плотность, нейтральные тона (--rule / --brand-soft /
 *   --highlight-pale), НЕ конкурирует с акцентом контента.
 * Полностью неинтерактивен: position:absolute, inset:0, pointer-events:none, z-index ниже контента.
 * Subtle motion (медленный спин/мерцание) — целиком гасится prefers-reduced-motion.
 * Модификаторы: --dense, --quiet, --corner. Адаптив: 640 (упрощаем плотность).
 * ========================================================== */

/* ============================================================
 * Слой
 * ========================================================== */
.decorative-space-shapes {
  position: absolute;
  inset: 0;
  z-index: 0;                  /* контент секции — выше (см. .dss-demo__content) */
  overflow: hidden;
  pointer-events: none;        /* НИКОГДА не перехватывает клики/тач */
  color: var(--rule);          /* базовый тон линий/точек (currentColor) */
  /* мягко гасим края, чтобы фигуры не «упирались» в границы секции */
  -webkit-mask-image: radial-gradient(120% 120% at 50% 40%, #000 60%, transparent 100%);
          mask-image: radial-gradient(120% 120% at 50% 40%, #000 60%, transparent 100%);
}

/* ---- Орбиты (SVG) ---- */
.dss-orbits {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-end: calc(-1 * var(--s-9));
  transform: translateY(-50%);
  width: clamp(360px, 48vw, 640px);
  height: auto;
  opacity: .5;
}
.dss-orbit { vector-effect: non-scaling-stroke; }
.dss-orbit--1 { opacity: .9; }
.dss-orbit--2 { opacity: .65; }
.dss-orbit--3 { opacity: .4; }
.dss-dot { color: var(--brand); opacity: .5; }

/* вращение групп-«планет» — медленный, деликатный спин вокруг центра орбит */
.dss-spin { transform-box: view-box; transform-origin: 300px 300px; }
.dss-spin--a { animation: dss-rotate 64s linear infinite; }
.dss-spin--b { animation: dss-rotate 96s linear infinite reverse; }
@keyframes dss-rotate { to { transform: rotate(360deg); } }

/* ---- Комета: мягкий радиальный блик в углу ---- */
.dss-comet {
  position: absolute;
  inset-block-start: calc(-1 * var(--s-8));
  inset-inline-start: calc(-1 * var(--s-8));
  width: clamp(220px, 34vw, 440px);
  height: clamp(220px, 34vw, 440px);
  background: radial-gradient(circle at 30% 30%,
              var(--highlight-pale) 0%,
              var(--brand-soft) 38%,
              transparent 70%);
  opacity: .7;
  filter: blur(2px);
}

/* ---- Звёздная пыль: фикс-набор точек (низкая плотность, не рандом) ---- */
.dss-stars { position: absolute; inset: 0; }
.dss-star {
  position: absolute;
  inset-block-start: var(--y);
  inset-inline-start: var(--x);
  width: 3px;
  height: 3px;
  border-radius: var(--r-pill);
  background: var(--rule-strong);
  opacity: .55;
  animation: dss-twinkle var(--d, 3s) var(--ease) infinite alternate;
}
@keyframes dss-twinkle {
  from { opacity: .2; transform: scale(.7); }
  to   { opacity: .7; transform: scale(1.1); }
}

/* ============================================================
 * Модификаторы
 * ========================================================== */
/* плотнее (для крупных hero) */
.decorative-space-shapes--dense .dss-orbits { opacity: .7; }
.decorative-space-shapes--dense .dss-comet  { opacity: .85; }
.decorative-space-shapes--dense .dss-star   { opacity: .7; }

/* тихий: фигуры без движения (если контент сам активен/много данных) */
.decorative-space-shapes--quiet .dss-spin,
.decorative-space-shapes--quiet .dss-star { animation: none; }

/* угловой: только орбиты в одном углу (минимальное вмешательство) */
.decorative-space-shapes--corner .dss-comet,
.decorative-space-shapes--corner .dss-stars { display: none; }
.decorative-space-shapes--corner .dss-orbits {
  inset-block-start: auto;
  inset-block-end: calc(-1 * var(--s-9));
  transform: none;
  opacity: .4;
}

/* ============================================================
 * Демо-обёртка (иллюстративная — показывает слой ПОД контентом)
 * ========================================================== */
.dss-demo { position: relative; overflow: hidden; }
.dss-demo__content {
  position: relative;
  z-index: var(--z-base);      /* контент над декором */
  max-width: var(--container-prose);
}
.dss-demo__content .lede { margin-top: var(--s-3); }
.dss-demo__content code {
  padding: 1px var(--s-1);
  background: var(--bg-2);
  border-radius: var(--r-soft);
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  /* на узких экранах упрощаем: убираем мелкую пыль (визуальный шум на малом холсте) */
  .dss-stars { display: none; }
  .dss-orbits { inset-inline-end: calc(-1 * var(--s-7)); opacity: .4; }
  .dss-comet { opacity: .5; }
}

/* ============ Reduced motion: декор статичен (приоритет a11y) ============ */
@media (prefers-reduced-motion: reduce) {
  .dss-spin,
  .dss-star { animation: none; }
}

/* ===== demo-iframe ===== */
/* ============================================================
 * demo-iframe · block.css
 * Скоуплено на .demo-iframe. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-slots (+ html-base). Адаптив: 980 / 640.
 * Демо-слот: рамка (chrome-бар) + заглушка click-to-load ПОВЕРХ <iframe data-src>.
 * Заглушка НЕ скрывается чистым CSS — её гасит slots.js после старта (data-src→src).
 * ========================================================== */

.demo-iframe {
  display: flex;
  flex-direction: column;
  gap: var(--s-6);
}

/* ---- Каркас слота (карточка-поверхность) ---- */
.demo-iframe__slot {
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}

/* ============ Chrome-бар: dots · title · actions ============ */
.demo-iframe__bar {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border-bottom: var(--hairline);
}

.demo-iframe__dots {
  display: inline-flex;
  gap: 6px;
  flex: 0 0 auto;
}
.demo-iframe__dot {
  width: 10px;
  height: 10px;
  border-radius: var(--r-pill);
  background: var(--rule-strong);
}

.demo-iframe__title {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.demo-iframe__actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--s-2);
}

/* Действия в баре — компактные пилюли, единый размер (touch ≥ --tap-min) */
.demo-iframe__act {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: var(--tap-min);
  padding: 0 var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  color: var(--text-dim);
  background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease),
              border-color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease);
}
.demo-iframe__act:hover {
  color: var(--brand);
  border-color: var(--brand);
  background: var(--brand-soft);
}
.demo-iframe__act-ic { display: inline-flex; flex: 0 0 auto; }

/* ============ Тело: заглушка ПОВЕРХ ленивого iframe ============ */
.demo-iframe__body {
  position: relative;
  aspect-ratio: 16 / 9;
  background: var(--bg-3);
}

.demo-iframe__frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.demo-iframe__frame:fullscreen { background: var(--bg); }

/* ---- Заглушка (click-to-load) ---- */
.demo-iframe__placeholder {
  position: absolute;
  inset: 0;
  z-index: var(--z-base);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s-3);
  padding: var(--s-5);
  text-align: center;
  cursor: pointer;
  background: var(--bg-3);
  transition: opacity var(--dur-base) var(--ease);
}
/* JS добавляет [hidden] после старта; страховка — класс is-loaded */
.demo-iframe__placeholder[hidden],
.demo-iframe__placeholder.is-loaded { display: none; }

.demo-iframe__cover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Fallback-обложки нет: фирменный градиент + крупный инициал слота */
.demo-iframe__placeholder--fallback {
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 100%);
}
.demo-iframe__placeholder--fallback::after {
  content: attr(data-initial);
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-size: var(--t-display);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: color-mix(in srgb, var(--on-brand) 20%, transparent);
  pointer-events: none;
}

/* Затемнение для читаемости play/label поверх любого cover */
.demo-iframe__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--text) 30%, transparent) 0%,
    color-mix(in srgb, var(--text) 52%, transparent) 100%
  );
}

/* Содержимое заглушки над overlay */
.demo-iframe__play,
.demo-iframe__cta-label,
.demo-iframe__hint { position: relative; z-index: var(--z-base); }

.demo-iframe__play {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
  color: var(--on-brand);
  background: var(--brand);
  border: 2px solid color-mix(in srgb, var(--on-brand) 70%, transparent);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop);
  transition: transform var(--dur-base) var(--ease),
              background var(--dur-quick) var(--ease);
}
.demo-iframe__play-ic { margin-inline-start: 3px; } /* оптическая центровка треугольника */

.demo-iframe__cta-label {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--on-brand);
}
.demo-iframe__hint {
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: color-mix(in srgb, var(--on-brand) 86%, transparent);
}

/* Hover/focus всей заглушки — реагирует play-кнопка */
.demo-iframe__placeholder:hover .demo-iframe__play,
.demo-iframe__placeholder:focus-visible .demo-iframe__play {
  transform: scale(1.06);
  background: color-mix(in srgb, var(--brand) 88%, #000);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .demo-iframe__play { width: 64px; height: 64px; }
}

@media (max-width: 640px) {
  /* Бар переносится: заголовок сверху, действия — в строку под ним */
  .demo-iframe__bar { flex-wrap: wrap; gap: var(--s-2); }
  .demo-iframe__title { flex-basis: 100%; }
  .demo-iframe__actions { width: 100%; }
  .demo-iframe__act { flex: 1 1 auto; }

  .demo-iframe__play { width: 56px; height: 56px; }
  .demo-iframe__cta-label { font-size: var(--t-h4); }
  .demo-iframe__hint { font-size: var(--t-tiny); }
}

/* ===== exclusive-banner ===== */
/* ============================================================
 * exclusive-banner · block.css
 * Скоуплено на .exclusive-banner. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-rating-guide + эталон casino-item-card.
 * Адаптив: 980 / 640. Один акцент (--brand); --gold — только марка «эксклюзив».
 * ========================================================== */

.exclusive-banner {
  --exb-logo: 88px;
  display: block;
  position: relative;
  /* акцентная врезка: surface + тонкая brand-рамка + лёгкий «свет» сверху */
  background:
    linear-gradient(180deg, var(--brand-soft), transparent 96px),
    var(--surface);
  border: 1px solid color-mix(in srgb, var(--brand) 38%, var(--rule));
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
/* верхняя акцентная кромка — фирменный «эксклюзив»-сигнал */
.exclusive-banner::before {
  content: "";
  position: absolute; inset-inline: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--brand), var(--gold));
}

.exclusive-banner__inner {
  display: grid;
  grid-template-columns: var(--exb-logo) minmax(0, 1fr) minmax(260px, 320px);
  grid-template-areas: "media offer action";
  align-items: center;
  gap: var(--s-5);
  padding: var(--s-5);
}

/* ---- 1 · Медиа: фикс-слот лого + марка «эксклюзив» ---- */
.exclusive-banner__media {
  grid-area: media;
  display: flex; flex-direction: column; align-items: center; gap: var(--s-2);
}
.exclusive-banner__logo {
  width: var(--exb-logo); height: var(--exb-logo);
  object-fit: cover; border-radius: var(--r-md);
  background: var(--bg-2); border: var(--hairline);
}
.exclusive-banner__mark {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px var(--s-2);
  font-family: var(--font-body);
  font-size: var(--t-tiny); font-weight: var(--fw-bold);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--gold);
  background: color-mix(in srgb, var(--gold) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--gold) 40%, transparent);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.exclusive-banner__mark svg { flex: 0 0 auto; }

/* ---- 2 · Оффер: эйброу + имя + headline + инлайн-термы ---- */
.exclusive-banner__offer {
  grid-area: offer;
  display: flex; flex-direction: column; gap: var(--s-1);
  min-width: 0;
}
.exclusive-banner__eyebrow { margin: 0; color: var(--brand); }
.exclusive-banner__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3); font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.exclusive-banner__headline {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-2);
  margin: var(--s-1) 0 2px;
  font-size: var(--t-body); color: var(--text-dim);
}
.exclusive-banner__amount {
  font-family: var(--font-display);
  font-size: var(--t-h2); font-weight: var(--fw-bold);
  line-height: 1; color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.exclusive-banner__upto,
.exclusive-banner__plus { font-weight: var(--fw-medium); }
.exclusive-banner__plus { color: var(--text-mute); }

.exclusive-banner__terms {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2);
  margin: 0;
  font-size: var(--t-small); color: var(--text-mute);
  line-height: var(--lh-snug);
}
.exclusive-banner__term b { color: var(--text-dim); font-weight: var(--fw-semi); }
.exclusive-banner__sep { color: var(--text-faint); }

/* числа — единый tabular-nums во всём блоке */
.exclusive-banner__num { font-variant-numeric: tabular-nums; }

/* ---- 3 · Действие: промокод + scarcity + дедлайн + CTA + T&C ---- */
.exclusive-banner__action {
  grid-area: action;
  display: flex; flex-direction: column; gap: var(--s-3);
}

/* Промокод (copy-on-click) — dashed «купон» */
.exclusive-banner__promo {
  position: relative;
  display: inline-flex; align-items: center; gap: var(--s-2);
  width: 100%;
  padding: var(--s-2) var(--s-3);
  font: inherit; text-align: left;
  background: var(--brand-soft); color: var(--brand);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: background var(--dur-quick) var(--ease);
}
.exclusive-banner__promo:hover { background: color-mix(in srgb, var(--brand) 16%, transparent); }
.exclusive-banner__promo-k {
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-mute);
}
.exclusive-banner__promo-code {
  font-family: var(--font-mono); font-weight: var(--fw-semi);
  letter-spacing: .03em;
  font-variant-numeric: tabular-nums;
  margin-inline-start: auto;
}
.exclusive-banner__promo-ic { display: inline-flex; flex: 0 0 auto; }
/* по умолчанию виден copy, check спрятан; после .is-copied — наоборот */
.exclusive-banner__ic-done { display: none; }
.exclusive-banner__promo.is-copied .exclusive-banner__ic-copy { display: none; }
.exclusive-banner__promo.is-copied .exclusive-banner__ic-done { display: inline; }

.exclusive-banner__toast {
  position: absolute; inset-inline-start: 50%; bottom: calc(100% + 6px);
  transform: translateX(-50%);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); white-space: nowrap;
  color: var(--on-brand); background: var(--text);
  border-radius: var(--r-soft);
  opacity: 0; pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease);
}
.exclusive-banner__promo.is-copied .exclusive-banner__toast { opacity: 1; }

/* Scarcity-метр (dataviz, не звёзды) */
.exclusive-banner__scarcity { display: flex; flex-direction: column; gap: var(--s-1); }
.exclusive-banner__scarcity-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2);
}
.exclusive-banner__scarcity-k {
  font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase;
  color: var(--text-mute);
}
.exclusive-banner__scarcity-v {
  font-weight: var(--fw-bold); color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.exclusive-banner__scarcity-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.exclusive-banner__meter {
  height: 8px; background: var(--bg-3);
  border-radius: var(--r-pill); overflow: hidden;
}
.exclusive-banner__meter-fill {
  display: block; height: 100%; border-radius: inherit;
  background: linear-gradient(90deg, var(--brand), var(--gold));
}

/* Дедлайн */
.exclusive-banner__deadline {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2);
  margin: 0;
  font-size: var(--t-tiny); color: var(--text-mute);
}
.exclusive-banner__deadline-ic { flex: 0 0 auto; color: var(--text-faint); }
.exclusive-banner__deadline-k { letter-spacing: .04em; text-transform: uppercase; }
.exclusive-banner__deadline-v { font-weight: var(--fw-semi); color: var(--text-dim); }
.exclusive-banner__clock {
  display: inline-flex; gap: var(--s-1); margin-inline-start: auto;
  font-variant-numeric: tabular-nums;
}
.exclusive-banner__clock-cell {
  display: inline-flex; align-items: baseline; gap: 1px;
  padding: 2px 6px;
  font-weight: var(--fw-bold); color: var(--text-dim);
  background: var(--bg-2); border-radius: var(--r-soft);
}
.exclusive-banner__clock-cell small {
  font-size: .8em; font-weight: var(--fw-medium); color: var(--text-faint);
}

/* CTA — одна, primary */
.exclusive-banner__cta { margin-top: 2px; }

/* T&C-drawer (нативный <details>) */
.exclusive-banner__tnc { font-size: var(--t-small); }
.exclusive-banner__tnc-q {
  display: inline-flex; align-items: center; gap: var(--s-1);
  list-style: none; cursor: pointer;
  font-size: var(--t-tiny); color: var(--text-mute);
  text-decoration: underline; text-underline-offset: 2px;
}
.exclusive-banner__tnc-q::-webkit-details-marker { display: none; }
.exclusive-banner__tnc-q:hover { color: var(--brand); }
.exclusive-banner__tnc-chevron { transition: transform var(--dur-quick) var(--ease); }
.exclusive-banner__tnc[open] .exclusive-banner__tnc-chevron { transform: rotate(180deg); }
.exclusive-banner__tnc-a {
  margin-top: var(--s-2); padding: var(--s-3);
  font-size: var(--t-small); line-height: var(--lh-snug);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline); border-radius: var(--r-md);
}
.exclusive-banner__tnc-a p { margin: 0; }

/* ---- Вариант --compact (без scarcity-метра, плотнее) ---- */
.exclusive-banner--compact .exclusive-banner__action { gap: var(--s-2); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .exclusive-banner__inner {
    grid-template-columns: var(--exb-logo) 1fr;
    grid-template-areas:
      "media offer"
      "action action";
    gap: var(--s-4);
  }
  .exclusive-banner__action { gap: var(--s-3); }
  /* на планшете промокод и метр — в ряд, CTA на всю ширину снизу */
  .exclusive-banner__action {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
  }
  .exclusive-banner__promo { grid-column: 1; }
  .exclusive-banner__scarcity { grid-column: 2; }
  .exclusive-banner__deadline { grid-column: 1 / -1; }
  .exclusive-banner__cta { grid-column: 1 / -1; }
  .exclusive-banner__tnc { grid-column: 1 / -1; }
  .exclusive-banner--compact .exclusive-banner__action { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .exclusive-banner { --exb-logo: 64px; }
  .exclusive-banner__inner {
    grid-template-areas:
      "media offer"
      "action action";
    gap: var(--s-3);
    padding: var(--s-4);
  }
  .exclusive-banner__media { flex-direction: row; align-items: center; gap: var(--s-2); }
  .exclusive-banner__amount { font-size: var(--t-h3); }
  /* всё в один столбец — порядок чтения сохранён */
  .exclusive-banner__action { grid-template-columns: 1fr; }
  .exclusive-banner__clock { margin-inline-start: 0; }
}

/* ===== exit-intent-newsletter-modal ===== */
/* ============================================================
 * exit-intent-newsletter-modal · block.css
 * Скоуплено на .eim (= id). Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (data-* тексты, bespoke inline SVG,
 *   прогрессивный JS по data-action). Эталон нейминга/слотов: casino-item-card;
 *   overlay/focus-trap согласованы с age-gate, форма — с newsletter.
 * Назначение: exit-intent модалка подписки (оффер + форма + экран успеха).
 * Один акцент --brand. Адаптив: 980 / 640.
 * ========================================================== */

.eim {
  --eim-mark: 52px;        /* фикс-слот иконки оффера */
  --eim-pitch: 1.05fr;     /* доля левой (оффер) колонки */
  --eim-form:  0.95fr;     /* доля правой (форма) колонки */
}

/* ---- Overlay (затемнение + blur, центрирует диалог) ---- */
.eim__overlay {
  position: fixed; inset: 0; z-index: var(--z-modal);
  display: grid; place-items: center;
  padding: var(--gutter);
  background: color-mix(in srgb, var(--text) 72%, transparent);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  animation: eim-fade var(--dur-base) var(--ease);
}
.eim[hidden] { display: none; }

/* ---- Диалог: 2 зоны (оффер | форма) ---- */
.eim__dialog {
  position: relative;
  width: 100%; max-width: 760px;
  display: grid;
  grid-template-columns: var(--eim-pitch) var(--eim-form);
  overflow: hidden;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-lift);
  animation: eim-rise var(--dur-base) var(--ease-out);
}

/* ---- Крестик закрытия ---- */
.eim__close {
  position: absolute; top: var(--s-3); right: var(--s-3); z-index: 2;
  display: inline-flex; align-items: center; justify-content: center;
  width: var(--tap-min); height: var(--tap-min);
  color: var(--text-mute); background: color-mix(in srgb, var(--surface) 70%, transparent);
  border-radius: var(--r-pill);
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.eim__close:hover { color: var(--text); background: var(--bg-2); }

/* ============================================================
 * A · Зона оффера (левая)
 * ========================================================== */
.eim__pitch {
  display: flex; flex-direction: column; gap: var(--s-3);
  padding: var(--s-7) var(--s-6);
  background: var(--bg-2);
  border-right: var(--hairline);
}

.eim__mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: var(--eim-mark); height: var(--eim-mark);
  margin-bottom: var(--s-1);
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
}

.eim__eyebrow { /* .eyebrow из base */ }
.eim__title { font-family: var(--font-display); font-size: var(--t-h2); line-height: var(--lh-snug); }
.eim__lede { color: var(--text-mute); font-size: var(--t-small); line-height: var(--lh-base); }

/* Список выгод */
.eim__perks { list-style: none; margin: var(--s-2) 0 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-3); }
.eim__perk { display: flex; gap: var(--s-3); align-items: flex-start; }
.eim__perk-ic {
  flex: 0 0 auto; margin-top: 1px;
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px;
  color: var(--brand); background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.eim__perk-txt { font-size: var(--t-small); line-height: var(--lh-snug); color: var(--text-dim); }

/* Оффер-чип (иллюстративный бонус за подписку) */
.eim__offer {
  margin-top: auto;
  display: inline-flex; align-items: baseline; gap: var(--s-2); flex-wrap: wrap;
  align-self: flex-start;
  padding: var(--s-2) var(--s-4);
  background: var(--surface);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md);
}
.eim__offer-k { font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase; color: var(--text-mute); }
.eim__offer-v { font-family: var(--font-display); font-weight: var(--fw-bold); color: var(--brand); font-variant-numeric: tabular-nums; }

/* ============================================================
 * B · Зона формы (правая)
 * ========================================================== */
.eim__form {
  display: flex; flex-direction: column; gap: var(--s-3);
  padding: var(--s-7) var(--s-6);
  justify-content: center;
}

/* Поле e-mail (пилюля с иконкой) */
.eim__field {
  display: flex; align-items: center; gap: var(--s-2);
  padding-inline: var(--s-4);
  background: var(--bg);
  border: var(--hairline);
  border-radius: var(--r-pill);
  transition: border-color var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease);
}
.eim__field:focus-within { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-soft); }
.eim__field-ic { display: inline-flex; color: var(--text-faint); flex: 0 0 auto; }
.eim__input {
  flex: 1 1 auto; min-width: 0;
  min-height: var(--tap-min);
  padding-block: var(--s-2);
  background: transparent; border: none; outline: none;
  font-size: var(--t-body); color: var(--text);
}
.eim__input::placeholder { color: var(--text-faint); }

/* CTA (.btn.btn--primary.btn--block.btn--lg из base) — одна */
.eim__btn-ic { transition: transform var(--dur-quick) var(--ease); }
.eim__btn:hover .eim__btn-ic { transform: translateX(3px); }

/* Строка статуса (success/invalid/error) — пустая по умолчанию схлопнута */
.eim__status { margin: 0; font-size: var(--t-small); line-height: var(--lh-snug); color: var(--text-mute); }
.eim__status:empty { display: none; }
.eim__form.is-success .eim__status { color: var(--success); }
.eim__form.is-error   .eim__status { color: var(--danger); }
.eim__form.is-error .eim__field    { border-color: var(--danger); }

/* Соц-пруф */
.eim__proof { margin: 0; font-size: var(--t-tiny); color: var(--text-mute); line-height: var(--lh-snug); }
.eim__proof-n { font-weight: var(--fw-bold); color: var(--text); font-variant-numeric: tabular-nums; }

/* Disclaimer */
.eim__note { margin: 0; font-size: var(--t-tiny); line-height: var(--lh-snug); color: var(--text-faint); }
.eim__note-link { color: var(--text-mute); text-underline-offset: 2px; }
.eim__note-link:hover { color: var(--brand); }

/* Мягкий dismiss (текстовая ссылка, не CTA) */
.eim__dismiss {
  align-self: center; margin-top: var(--s-1);
  padding: var(--s-1) var(--s-2);
  font-size: var(--t-tiny); color: var(--text-faint);
  text-decoration: underline; text-underline-offset: 2px;
  transition: color var(--dur-quick) var(--ease);
}
.eim__dismiss:hover { color: var(--text-mute); }

/* ============================================================
 * Экран успеха — раскрывается классом .is-success на диалоге
 * (ставит initNewsletter на форме → пробрасываем на диалог).
 * По умолчанию скрыт; при успехе показывается и накрывает обе зоны.
 * ========================================================== */
.eim__success {
  display: none;
  grid-column: 1 / -1;
  flex-direction: column; align-items: center; text-align: center; gap: var(--s-4);
  padding: var(--s-8) var(--s-6);
  background: var(--surface);
}
.eim__success-ic {
  display: inline-flex; align-items: center; justify-content: center;
  width: 64px; height: 64px;
  color: var(--success); background: var(--success-soft);
  border-radius: var(--r-pill);
}
.eim__success .eim__title { font-size: var(--t-h2); }
.eim__success-txt { max-width: 42ch; color: var(--text-mute); line-height: var(--lh-base); }

/* Переключение зон при успехе */
.eim__dialog.is-success { grid-template-columns: 1fr; }
.eim__dialog.is-success .eim__pitch,
.eim__dialog.is-success .eim__form { display: none; }
.eim__dialog.is-success .eim__success { display: flex; }

/* ============================================================
 * Анимации (функциональные; обнуляются в prefers-reduced-motion
 * через :root --dur-* → 0ms, наследуется из tokens.css)
 * ========================================================== */
@keyframes eim-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes eim-rise { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .eim__dialog {
    grid-template-columns: 1fr;
    max-width: 480px;
    max-height: calc(100dvh - var(--gutter) * 2);
    overflow-y: auto;
  }
  .eim__pitch { border-right: none; border-bottom: var(--hairline); padding: var(--s-6) var(--s-5); }
  .eim__form { padding: var(--s-5); }
  .eim__offer { margin-top: var(--s-2); }
}
@media (max-width: 640px) {
  .eim { --eim-mark: 46px; }
  .eim__overlay { padding: var(--s-3); place-items: end center; }
  .eim__dialog { border-radius: var(--r-lg); max-height: calc(100dvh - var(--s-5)); }
  .eim__title { font-size: var(--t-h3); }
  .eim__pitch { gap: var(--s-2); padding: var(--s-6) var(--s-4) var(--s-5); }
  .eim__success { padding: var(--s-7) var(--s-5); }
}

/* ===== expert-tip ===== */
/* ============================================================
 * expert-tip · block.css
 * Скоуплено на .expert-tip. Только токены (10-tokens/).
 * Назначение: совет эксперта (avatar + цитата) — врезка в теле обзора/гайда.
 * Семантика: <figure> → <blockquote> + <figcaption>. Один акцент = --brand.
 * Адаптив: 980 / 640. Премиум: фикс-слот аватара, единые pad/radius/shadow, tabular-nums.
 * ========================================================== */

.expert-tip {
  --et-avatar: 48px;           /* фикс-слот аватара */

  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-areas:
    "mark  quote"
    "mark  by";
  column-gap: var(--s-4);
  row-gap: var(--s-4);
  max-width: var(--container-prose);
  margin-block: var(--s-5);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- Декоративная кавычка (единственный акцент) ---- */
.expert-tip__quote-mark {
  grid-area: mark;
  display: inline-flex;
  align-items: flex-start;
  justify-content: center;
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
.expert-tip__quote-mark svg { margin-top: var(--s-1); }

/* ---- Текст совета ---- */
.expert-tip__quote {
  grid-area: quote;
  margin: 0;
  min-width: 0;
}
.expert-tip__quote p {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  line-height: var(--lh-base);
  color: var(--text-dim);
  text-wrap: pretty;
}
.expert-tip__num { font-variant-numeric: tabular-nums; }

/* ---- Атрибуция: аватар + имя/роль ---- */
.expert-tip__by {
  grid-area: by;
  display: flex;
  align-items: center;
  gap: var(--s-3);
  min-width: 0;
  padding-top: var(--s-4);
  border-top: var(--hairline);
}

/* Аватар — фикс-слот */
.expert-tip__avatar {
  flex: 0 0 auto;
  display: block;
  width: var(--et-avatar);
  height: var(--et-avatar);
  border-radius: var(--r-pill);
  overflow: hidden;
  background: var(--bg-2);
  border: var(--hairline);
}
.expert-tip__avatar-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Fallback-инициал, когда фото нет */
.expert-tip__avatar--mono {
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, var(--bg-3), var(--surface-2));
}
.expert-tip__avatar-fallback {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--text-faint);
}

.expert-tip__by-txt {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.expert-tip__name {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  font-style: normal;
  font-weight: var(--fw-semi);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Verified-метка (акцент --brand, статус продублирован текстом для SR) */
.expert-tip__verified {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  color: var(--brand);
}

.expert-tip__role {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* ---- Вариант: акцентная планка слева ---- */
.expert-tip--accent {
  border-inline-start: 3px solid var(--brand);
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .expert-tip {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "mark"
      "quote"
      "by";
    row-gap: var(--s-3);
    padding: var(--s-4);
  }
  .expert-tip__quote-mark { width: 40px; height: 40px; }
}

/* ===== external-sister-sites-rail ===== */
/* ============================================================
 * external-sister-sites-rail · block.css
 * Скоуплено на .external-sister-sites-rail. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка),
 * ориентир related-rail (заголовок-блок + лента) и casino-item-card (метр-бар).
 * Один акцент --brand (фавикон-кольцо, метр-заливка, CTA-hover); прочее — нейтрали.
 * Dataviz-метры вместо звёзд; «пересечение бонусов» — нейтральный метр (не статус).
 * Фикс-слот карточки/фавикона/метра; ОДНА CTA на карточку. Числа — tabular-nums.
 * Горизонт-скролл с scroll-snap; стрелки — прогрессивно (JS), скрыты на тач/без JS.
 * Адаптив: 980 / 640. Reduced-motion гасит smooth-scroll/transition.
 * ========================================================== */

.external-sister-sites-rail {
  --ess-card: 280px;          /* фикс-ширина карточки в ленте */
  --ess-fav: 48px;            /* фикс-слот фавикона */
  display: block;
}

/* ---- Шапка: текст + дисклоз + стрелки ---- */
.ess-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
}
.ess-head__text { min-width: 0; }
.ess-head .eyebrow { margin: 0 0 var(--s-2); }
.ess-head__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
/* дисклоз о связанности — носитель доверия, нейтральный info-тон */
.ess-head__disclose {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
  margin: var(--s-3) 0 0;
  max-width: var(--container-prose);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.ess-head__disclose-ic { flex: 0 0 auto; margin-top: 2px; color: var(--info); }

/* стрелки прокрутки — прогрессивное улучшение (JS), декоративны для SR */
.ess-head__nav { flex: 0 0 auto; display: none; gap: var(--s-2); }
.ess-head__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  color: var(--text-mute);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  transition: border-color var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.ess-head__arrow:hover { border-color: var(--brand); color: var(--brand); transform: translateY(-1px); }
.external-sister-sites-rail.is-enhanced .ess-head__nav { display: inline-flex; }

/* ---- Лента: горизонтальный скролл со снапом ---- */
.ess-rail {
  list-style: none;
  margin: 0;
  padding: 0 0 var(--s-2);
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: var(--ess-card);
  gap: var(--s-4);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin;
  scroll-padding-inline: var(--s-1);
  overscroll-behavior-x: contain;
}
.ess-rail__item { scroll-snap-align: start; display: flex; }

/* ============================================================
 * Карточка сети
 * ========================================================== */
.ess-card {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  width: 100%;
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.ess-card:hover {
  box-shadow: var(--shadow-pop);
  transform: translateY(-2px);
  border-color: var(--rule-strong);
}
.ess-card:focus-within { box-shadow: var(--shadow-pop); border-color: var(--rule-strong); }

/* ---- Верх: фавикон-слот + id + бейдж сети ---- */
.ess-card__top {
  display: grid;
  grid-template-columns: var(--ess-fav) minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-3);
}
.ess-card__fav {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--ess-fav);
  height: var(--ess-fav);
  color: var(--brand);
  background: var(--brand-soft);
  border: 1px solid color-mix(in srgb, var(--brand) 30%, transparent);
  border-radius: var(--r-md);
}
.ess-card__id { min-width: 0; }
.ess-card__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ess-card__url {
  margin: 0;
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  color: var(--text-faint);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ess-card__badge {
  flex: 0 0 auto;
  align-self: start;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-pill);
}

/* ---- Дек (1–2 строки, фикс-слот) ---- */
.ess-card__dek {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  text-wrap: pretty;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}

/* ---- Dataviz-метры (вместо звёзд) ---- */
.ess-card__meters {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  margin: var(--s-1) 0 0;
}
.ess-card__meter { display: grid; grid-template-columns: 1fr auto; gap: var(--s-1) var(--s-2); align-items: baseline; }
.ess-card__meter-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.ess-card__meter-v {
  margin: 0;
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.ess-card__meter-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.ess-card__num { font-variant-numeric: tabular-nums; }
.ess-card__bar {
  grid-column: 1 / -1;
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.ess-card__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}
/* нейтральный метр (пересечение бонусов — не качество, не статус) */
.ess-card__bar--neutral .ess-card__fill--neutral { background: var(--rule-strong); }

/* ---- ОДНА CTA на карточку ---- */
.ess-card__cta { margin-top: auto; }
.ess-card__cta-ic { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease-out); }
.ess-card__cta:hover .ess-card__cta-ic,
.ess-card__cta:focus-visible .ess-card__cta-ic { transform: translate(2px, -2px); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .external-sister-sites-rail { --ess-card: 264px; }
}
@media (max-width: 640px) {
  .external-sister-sites-rail { --ess-card: 84vw; }
  .ess-head { flex-direction: column; align-items: flex-start; gap: var(--s-3); }
  .ess-head__title { font-size: var(--t-h3); }
  /* стрелки не нужны на тач — нативный свайп */
  .external-sister-sites-rail.is-enhanced .ess-head__nav { display: none; }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .ess-rail { scroll-behavior: auto; }
  .ess-card,
  .ess-card__cta-ic,
  .ess-head__arrow { transition: none; }
}

/* ===== fact-box ===== */
/* ============================================================
 * fact-box · block.css
 * Скоуплено на .fact-box. Только токены (10-tokens/).
 * Конвенция разметки: ★research / premium-планка (своя разметка — готовой нет).
 * Один акцент — --brand (иконки/верифи-бейдж). --success/--warning — ТОЛЬКО
 * по смыслу (статус проверки лицензии), не как декор.
 * Визуал: модерн-премиум 2025-26 — surface-grad оверлей, glow+lift на hover,
 *   glass-бейдж «Проверено». Эффекты через токены → адаптив под скин/бренд.
 * Адаптив: 980 / 640.
 * ========================================================== */

.fact-box {
  /* фикс-слот иконки — единый ритм всех строк */
  --fb-ic: 28px;

  display: flow-root;
  padding: var(--s-5);
  background-color: var(--surface);
  background-image: var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition:
    box-shadow var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out);
}
.fact-box:hover {
  border-color: color-mix(in srgb, var(--brand) 32%, var(--rule));
  box-shadow: var(--shadow-pop), var(--shadow-glow);
  transform: translateY(-3px);
}

/* ---- Шапка: заголовок + бейдж «Проверено» ---- */
.fact-box__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-4);
  padding-bottom: var(--s-3);
  border-bottom: var(--hairline);
}

.fact-box__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* единственное цветовое пятно акцента в блоке — frosted-пилюля с мягким glow */
.fact-box__verified {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background-color: var(--brand-soft);
  border: 1px solid color-mix(in srgb, var(--brand) 22%, transparent);
  border-radius: var(--r-pill);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  box-shadow: 0 2px 12px -6px color-mix(in srgb, var(--brand) 45%, transparent);
}
.fact-box__verified-ic { display: inline-flex; }

/* ---- Список фактов ---- */
.fact-box__list {
  margin: 0;
  display: flex;
  flex-direction: column;
}

/* строка key→value; разделитель-волосок между строками, без рамки по краям.
   Грид [термин | значение]: термин — фикс-иконка + подпись, значение — авто-слот
   справа. На мобайле просто перестраивается в столбец (см. адаптив). */
.fact-box__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-3) 0;
  border-top: var(--hairline);
}
.fact-box__row:first-child { border-top: 0; }

/* ---- Термин: иконка в фикс-слоте + подпись ---- */
.fact-box__term {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  min-width: 0;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

.fact-box__ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--fb-ic);
  height: var(--fb-ic);
  color: var(--brand);
  background-color: var(--brand-soft);
  background-image: linear-gradient(150deg, color-mix(in srgb, var(--brand) 14%, transparent), transparent 70%);
  border: 1px solid color-mix(in srgb, var(--brand) 14%, transparent);
  border-radius: var(--r-md);
}

/* ---- Значение: правый фикс-слот, табличные цифры ---- */
.fact-box__val {
  margin: 0;
  justify-self: end;
  text-align: right;
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

.fact-box__num {
  font-variant-numeric: tabular-nums;
  letter-spacing: .01em;
}

.fact-box__unit {
  margin-left: 1px;
  font-weight: var(--fw-medium);
  color: var(--text-faint);
}

/* ---- Статус-точка лицензии (по смыслу, не декор) — мягкий glow по смыслу ---- */
.fact-box__status {
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-right: var(--s-2);
  border-radius: var(--r-pill);
  vertical-align: middle;
}
.fact-box__status--ok {
  background: var(--success);
  box-shadow: 0 0 8px -1px color-mix(in srgb, var(--success) 70%, transparent);
}
.fact-box__status--pending {
  background: var(--warning);
  box-shadow: 0 0 8px -1px color-mix(in srgb, var(--warning) 70%, transparent);
}

/* ---- Модификатор: компактный (плотнее, без шапки) ---- */
.fact-box--compact { padding: var(--s-4); }
.fact-box--compact .fact-box__row { padding: var(--s-2) 0; }
.fact-box--compact { --fb-ic: 24px; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .fact-box { padding: var(--s-4); }
}
@media (max-width: 640px) {
  .fact-box__head {
    flex-wrap: wrap;
    gap: var(--s-2);
  }
  /* узкий экран: значение под подпись, но выровнено под текст (иконка держит
     левый ритм через тот же фикс-слот + gap) */
  .fact-box__row {
    grid-template-columns: 1fr;
    row-gap: var(--s-1);
  }
  .fact-box__val {
    justify-self: start;
    text-align: left;
    padding-left: calc(var(--fb-ic) + var(--s-3));
  }
}

/* ============ Reduced motion: без lift ============ */
@media (prefers-reduced-motion: reduce) {
  .fact-box {
    transition: box-shadow var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
  }
  .fact-box:hover { transform: none; }
}

/* ===== faq-accordion ===== */
/* ============================================================
 * faq-accordion · block.css
 * Скоуплено на .faq-accordion. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (FAQ/аккордеон, FAQPage). Адаптив: 980 / 640.
 * Раскрытие — grid-rows 0fr→1fr (плавно, без замера высоты в JS).
 * Визуал: модерн-премиум 2025-26 — surface-grad оверлей на карточках,
 *   glow+lift на hover, brand-glow на раскрытой. Эффекты через токены.
 * ========================================================== */

.faq-accordion__head {
  max-width: var(--container-prose);
  margin-inline: auto;
  margin-bottom: var(--s-6);
}
.faq-accordion__title {
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  font-weight: var(--fw-bold);
  color: var(--text);
}

/* ---- Список ---- */
.faq-accordion__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}

/* ---- Карточка вопроса ---- */
.faq-item {
  background-color: var(--surface);
  background-image: var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition:
    box-shadow var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out);
}
.faq-item:hover {
  box-shadow: var(--shadow-pop), var(--shadow-glow);
  border-color: color-mix(in srgb, var(--brand) 26%, var(--rule));
  transform: translateY(-2px);
}
.faq-item[open] {
  border-color: color-mix(in srgb, var(--brand) 40%, var(--rule-strong));
  box-shadow: var(--shadow-card), var(--shadow-glow);
}

/* ---- Вопрос (summary = нативная кнопка) ---- */
.faq-item__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  min-height: var(--tap-min);
  padding: var(--s-4) var(--s-5);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-family: var(--font-body);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
  transition: color var(--dur-quick) var(--ease);
}
.faq-item__q::-webkit-details-marker { display: none; } /* убрать дефолтный треугольник */
.faq-item__q:hover { color: var(--brand); }
.faq-item[open] .faq-item__q { color: var(--brand); }
/* видимый фокус для клавиатуры (a11y) */
.faq-item__q:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--brand) 70%, transparent);
  outline-offset: -3px;
  border-radius: var(--r-md);
}

.faq-item__q-text { min-width: 0; }

/* ---- Шеврон — в brand-soft пилюле, мягкий glow на раскрытой ---- */
.faq-item__chevron {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-mute);
  transition:
    transform var(--dur-base) var(--ease-out),
    color var(--dur-quick) var(--ease),
    background-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-quick) var(--ease);
}
.faq-item__q:hover .faq-item__chevron { color: var(--brand); }
.faq-item[open] .faq-item__chevron {
  transform: rotate(180deg);
  color: var(--brand);
}

/* ---- Ответ: grid-rows 0fr→1fr даёт плавную высоту ---- */
.faq-item__a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.faq-item[open] .faq-item__a { grid-template-rows: 1fr; }

.faq-item__a-inner {
  overflow: hidden;
  min-height: 0; /* критично для коллапса grid-строки */
}
.faq-item__a-inner > :first-child { margin-top: 0; }
.faq-item__a-inner > :last-child { margin-bottom: 0; }
.faq-item__a-inner p {
  padding: 0 var(--s-5) var(--s-5);
  font-size: var(--t-body);
  line-height: var(--lh-loose);
  color: var(--text-dim);
}

/* Числа/проценты/суммы — табличные цифры */
.faq-item__num {
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .faq-accordion__head { margin-bottom: var(--s-5); }
}
@media (max-width: 640px) {
  .faq-item__q {
    padding: var(--s-3) var(--s-4);
    font-size: var(--t-body);
    gap: var(--s-3);
  }
  .faq-item__a-inner p {
    padding: 0 var(--s-4) var(--s-4);
    font-size: var(--t-small);
  }
}

/* ============ Reduced motion: без анимации высоты/шеврона/lift ============ */
@media (prefers-reduced-motion: reduce) {
  .faq-item {
    transition: box-shadow var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
  }
  .faq-item:hover { transform: none; }
  .faq-item__a { transition: none; }
  .faq-item__chevron { transition: color var(--dur-quick) var(--ease); }
}

/* ===== feature-list ===== */
/* ============================================================
 * feature-list · block.css
 * Скоуплено на .feature-list. Только токены (10-tokens/).
 * Конвенция: html-slots (бонус-фичи/символы слота) поверх premium-планки.
 * Один акцент — --brand (иконочный тайл, опц. payout-чип). Числа (×множители,
 * проценты) — tabular-nums. Без JS: hover/focus на CSS, T&C — нативный <details>.
 * Адаптив: 980 / 640.
 * ========================================================== */

.feature-list {
  /* фикс-слот иконки: единый размер тайла во всём гриде (premium-ритм) */
  --fl-icon: 48px;
  display: block;
}

/* ---- Шапка ---- */
.feature-list__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.feature-list__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.feature-list__lede {
  margin: 0;
  max-width: var(--container-prose);
}

/* ---- Грид равных карточек ---- */
.feature-list__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: var(--s-4);
}
.feature-list__item { display: block; min-width: 0; }

/* ---- Карточка фичи: иконка + имя + описание ---- */
.feature-list__card {
  height: 100%;
  display: grid;
  grid-template-columns: var(--fl-icon) minmax(0, 1fr);
  grid-template-areas:
    "icon name"
    "icon desc"
    "meta meta";
  align-items: start;
  column-gap: var(--s-4);
  row-gap: var(--s-2);
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease);
}
.feature-list__card:hover,
.feature-list__card:focus-within {
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
}

/* ---- Иконочный тайл (фикс-слот, единственное акцент-пятно) ---- */
.feature-list__icon {
  grid-area: icon;
  width: var(--fl-icon);
  height: var(--fl-icon);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
.feature-list__icon svg { display: block; width: 24px; height: 24px; }

/* ---- Имя фичи ---- */
.feature-list__name {
  grid-area: name;
  align-self: center;
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* ---- Краткое описание ---- */
.feature-list__desc {
  grid-area: desc;
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- Мета-строка: тип-таг + опц. payout-чип ---- */
.feature-list__meta {
  grid-area: meta;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2);
  margin-top: var(--s-1);
}
.feature-list__meta:empty { display: none; }

/* нейтральный таг типа символа/механики */
.feature-list__tag {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-pill);
}

/* payout-чип — смысловое выделение (макс. выплата фичи), один акцент */
.feature-list__payout {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.feature-list__payout-k {
  font-weight: var(--fw-medium);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* ---- Все числа (×множители, проценты, суммы) — табличные цифры ---- */
.feature-list__num { font-variant-numeric: tabular-nums; }

/* ---- Раскрываемый T&C-drawer (нативный <details>, держит блок чистым) ---- */
.feature-list__terms {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.feature-list__terms-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.feature-list__terms-sum::-webkit-details-marker { display: none; }
.feature-list__terms-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.feature-list__terms[open] .feature-list__terms-chev { transform: rotate(180deg); }
.feature-list__terms-body {
  padding: 0 var(--s-4) var(--s-4);
}
.feature-list__terms-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ---- CTA (ровно одна на блок) ---- */
.feature-list__cta {
  margin-top: var(--s-5);
  display: flex;
  justify-content: center;
}

/* ============ Модификатор: список в один столбец ============ */
.feature-list--rows .feature-list__grid { grid-template-columns: 1fr; }

/* ============ Модификатор: компактный ============ */
.feature-list--compact { --fl-icon: 40px; }
.feature-list--compact .feature-list__card { padding: var(--s-3); }
.feature-list--compact .feature-list__icon svg { width: 20px; height: 20px; }
.feature-list--compact .feature-list__name { font-size: var(--t-body); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .feature-list__grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--s-3); }
}
@media (max-width: 640px) {
  .feature-list__grid { grid-template-columns: 1fr; }
  .feature-list__cta .btn { width: 100%; }
}

/* ===== featured-card ===== */
/* ============================================================
 * featured-card · block.css
 * Скоуплено на .featured-card (+ обёртка .featured-grid/.featured-section).
 * Только токены (10-tokens/). Конвенция: ★research / premium-планка.
 * Адаптив: 980 / 640. Один акцент — --brand (CTA + бейдж + title-hover),
 * остальное — дисциплинированные нейтрали.
 * Ориентир house-style: casino-item-card (нейминг/слоты/shadow-card).
 * Визуал (premium-тир): surface-grad + внутренний ambient-glow, hover = lift
 *         + brand-glow + brand-бордер; бейдж = grad-brand; T&C-drawer = стекло.
 *         CTA наследует .btn--primary (grad-brand + glow). Всё через токены →
 *         работает на всех скинах (вкл. midnight-crypto).
 * ========================================================== */

/* ---- Обёртка-секция (заголовок featured-витрины) ---- */
.featured-section__head {
  max-width: var(--container-prose);
  margin-bottom: var(--s-6);
}
.featured-section__head .eyebrow { margin: 0 0 var(--s-2); }
.featured-section__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  color: var(--text);
}

/* ---- Сетка карточек: owns колонки/gap (карточка себя не раскладывает) ---- */
.featured-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: var(--s-5);
}
.featured-grid__cell { display: flex; }

/* ============================================================
 * Карточка
 * ========================================================== */
.featured-card {
  --fc-media-ratio: 16 / 10;

  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  background-color: var(--surface);
  /* Premium-поверхность: внутренний радиальный glow акцентом + градиент-оверлей сверху */
  background-image:
    radial-gradient(80% 120% at 92% -12%, color-mix(in srgb, var(--brand) 12%, transparent), transparent 56%),
    var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-xl);                     /* крупнее радиус — premium-планка */
  box-shadow: var(--shadow-card);                 /* глубина + inset верхний хайлайт */
  overflow: hidden;                               /* media-радиус совпадает с карточкой */
  transition:
    box-shadow var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out);
}
.featured-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-pop), var(--shadow-glow);   /* lift + усиленное свечение акцентом */
  border-color: color-mix(in srgb, var(--brand) 50%, var(--rule));
}
/* Карточка кликабельна через ссылки внутри — фокус подсвечиваем у них, не у article */
.featured-card:focus-within {
  box-shadow: var(--shadow-pop), var(--shadow-glow);
  border-color: color-mix(in srgb, var(--brand) 50%, var(--rule));
}

/* ---- 1 · Media-слот (фикс-аспект, чтобы карточки были ровными) ---- */
.fc__media {
  position: relative;
  display: block;
  aspect-ratio: var(--fc-media-ratio);
  background: var(--bg-2);          /* фолбэк-фон до загрузки img */
  overflow: hidden;
}
.fc__img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  transition: transform var(--dur-slow) var(--ease-out);
}
.fc__media:hover .fc__img,
.fc__media:focus-visible .fc__img { transform: scale(1.04); }

/* Бейдж «Топ-выбор» — единственный носитель акцента в media (grad-brand + glow) */
.fc__badge {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-start: var(--s-3);
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--on-brand);
  background-color: var(--brand);
  background-image: var(--grad-brand);
  border-radius: var(--r-pill);
  box-shadow:
    var(--border-highlight),
    0 8px 22px -8px color-mix(in srgb, var(--brand) 60%, transparent);
}
.fc__badge-ic { flex: 0 0 auto; }

/* ---- 2 · Тело ---- */
.fc__body {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  padding: var(--s-5) var(--s-5) var(--s-4);
  flex: 1 1 auto;                   /* подвал прижат к низу при разной высоте текста */
}
.fc__eyebrow { margin: 0; color: var(--text-mute); }

.fc__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.fc__title-link {
  color: inherit;
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
.fc__title-link:hover { color: var(--brand); }

.fc__dek {
  margin: var(--s-1) 0 0;
  color: var(--text-dim);
  line-height: var(--lh-base);
  text-wrap: pretty;
  /* фикс-высота dek = 3 строки: ровный нижний край у соседних карточек */
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Числа везде табличные */
.fc__num { font-variant-numeric: tabular-nums; }

/* Фикс-мета-строка (рейтинг · выплата · вейджер) */
.fc__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s-2) var(--s-4);
  margin: var(--s-3) 0 0;
  padding-top: var(--s-3);
  border-top: var(--hairline);
}
.fc__meta-item {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-2);
  min-width: 0;
}
.fc__meta-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.fc__meta-v {
  margin: 0;
  font-weight: var(--fw-semi);
  color: var(--text);
}
.fc__meta-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.fc__meta-sep {
  align-self: center;
  width: 1px; height: var(--s-4);
  background: var(--rule);
}

/* ---- 3 · Подвал: ОДНА CTA + T&C-drawer ---- */
.fc__foot {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  padding: 0 var(--s-5) var(--s-5);
}
.fc__cta-ic { transition: transform var(--dur-quick) var(--ease-out); }
.fc__cta:hover .fc__cta-ic,
.fc__cta:focus-visible .fc__cta-ic { transform: translateX(3px); }

/* T&C-drawer (нативный <details>) — frosted-стекло держит карточку чистой и premium */
.fc__terms {
  margin-top: var(--s-1);
  padding: 0 var(--s-3);
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
}
.fc__terms-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  list-style: none;
  cursor: pointer;
  user-select: none;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.fc__terms-sum::-webkit-details-marker { display: none; }   /* убрать дефолтный треугольник */
.fc__terms-sum:hover { color: var(--brand); }
.fc__terms[open] .fc__terms-sum { color: var(--text); }

.fc__terms-chevron {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.fc__terms-sum:hover .fc__terms-chevron { color: var(--brand); }
.fc__terms[open] .fc__terms-chevron { transform: rotate(180deg); color: var(--brand); }

/* Раскрытие: grid-rows 0fr→1fr (плавно, без JS-замера высоты) */
.fc__terms-body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.fc__terms[open] .fc__terms-body { grid-template-rows: 1fr; }
.fc__terms-body > p {
  overflow: hidden;
  min-height: 0;                    /* критично для коллапса grid-строки */
  margin: 0;
  padding-bottom: var(--s-3);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .featured-section__head { margin-bottom: var(--s-5); }
  .featured-grid { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .featured-section__title { font-size: var(--t-h3); }
  .featured-grid {
    grid-template-columns: 1fr;     /* одна колонка: карточка на всю ширину */
    gap: var(--s-4);
  }
  .featured-card { --fc-media-ratio: 16 / 9; border-radius: var(--r-lg); }
  .fc__body { padding: var(--s-4) var(--s-4) var(--s-3); }
  .fc__foot { padding: 0 var(--s-4) var(--s-4); }
  .fc__meta { gap: var(--s-2) var(--s-3); }
}

/* ============ Reduced motion: гасим доп. анимации (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .fc__terms-body { transition: none; }
  .fc__img,
  .featured-card { transition: none; }
  .featured-card:hover { transform: none; }
  .fc__media:hover .fc__img,
  .fc__media:focus-visible .fc__img { transform: none; }
}

/* ===== filter-bar ===== */
/* ============================================================
 * filter-bar · block.css
 * Скоуплено на .filter-bar / .fb-*. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-rating-guide (.rating-filters). Адаптив: 980 / 640.
 * Один акцент (--brand). Числа — tabular-nums. Motion функциональный.
 * ========================================================== */

.filter-bar {
  --fb-h: var(--tap-min);          /* единая высота контролов = touch-target */
  margin: 0;
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

.filter-bar__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--s-4) var(--s-5);
}

/* ---- Поле (label-обёртка): метка сверху + контрол ---- */
.fb-field {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  min-width: 0;
}
.fb-field--search { flex: 1 1 240px; }
.fb-field--num    { flex: 0 1 132px; }

.fb-field__label {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
/* legend сбрасываем под общий вид метки */
legend.fb-field__label { padding: 0; }

/* ---- Контрол: общая «коробка» вокруг input ---- */
.fb-control {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  height: var(--fb-h);
  padding-inline: var(--s-3);
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--r-md);
  color: var(--text-faint);
  transition: border-color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease),
              box-shadow var(--dur-quick) var(--ease);
}
.fb-control:hover { border-color: var(--rule-strong); }
.fb-control:focus-within {
  background: var(--surface);
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-soft);
}
.fb-control__ic { display: inline-flex; flex: 0 0 auto; }
.fb-control__unit {
  flex: 0 0 auto;
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}
.fb-control__unit--lead { order: -1; }

/* ---- Input (нейтрализуем системный вид, наследуем токены) ---- */
.fb-input {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  font-family: var(--font-body);
  font-size: var(--t-small);
  color: var(--text);
  appearance: none;
  -webkit-appearance: none;
}
.fb-input::placeholder { color: var(--text-faint); opacity: 1; }
.fb-input:focus { outline: none; }            /* фокус-кольцо рисует .fb-control */
.fb-input--num  { font-variant-numeric: tabular-nums; }
.fb-input--lead { text-align: left; }

/* search: убрать нативный «крестик»/decoration */
.fb-input[type="search"] { -webkit-appearance: none; }
.fb-input[type="search"]::-webkit-search-decoration,
.fb-input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }

/* number: убрать спиннеры (порядок задаём своим юнитом) */
.fb-input[type="number"] { -moz-appearance: textfield; }
.fb-input[type="number"]::-webkit-outer-spin-button,
.fb-input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* ---- Chips (множественный выбор, нативные checkbox) ---- */
.fb-chips {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}
.fb-chips__row { display: flex; flex-wrap: wrap; gap: var(--s-2); }

.fb-chip { display: inline-flex; }
.fb-chip__input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: -1px; }

.fb-chip__face {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: 36px;
  padding: 0 var(--s-3);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  line-height: 1;
  color: var(--text-dim);
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  cursor: pointer;
  user-select: none;
  transition: color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease),
              border-color var(--dur-quick) var(--ease);
}
.fb-chip__face:hover { border-color: var(--rule-strong); color: var(--text); }

/* галочка скрыта до выбора (схлопнута, без скачка ширины) */
.fb-chip__check {
  width: 0;
  opacity: 0;
  margin-inline-start: calc(-1 * var(--s-2));
  transition: width var(--dur-quick) var(--ease),
              opacity var(--dur-quick) var(--ease),
              margin var(--dur-quick) var(--ease);
}

/* выбранный chip — акцент брендом (заливка-soft, без мульти-цвета) */
.fb-chip__input:checked + .fb-chip__face {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 45%, transparent);
}
.fb-chip__input:checked + .fb-chip__face .fb-chip__check {
  width: 13px;
  opacity: 1;
  margin-inline-start: 0;
}
/* состояние не только цветом: жирнее текст у активного */
.fb-chip__input:checked + .fb-chip__face { font-weight: var(--fw-semi); }

/* клавиатурный фокус → на .fb-chip__face (input визуально скрыт) */
.fb-chip__input:focus-visible + .fb-chip__face {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

/* ---- Reset ---- */
.fb-reset {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--fb-h);
  padding: 0 var(--s-4);
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  background: transparent;
  border: 1px solid var(--rule);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease),
              border-color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease);
}
.fb-reset:hover { color: var(--danger); border-color: var(--danger); background: var(--danger-soft); }
.fb-reset svg { transition: transform var(--dur-base) var(--ease); }
.fb-reset:hover svg { transform: rotate(-90deg); }

/* По умолчанию reset выровнен по контролам (низ flex-строки).
   JS может скрывать его при пустых фильтрах: .filter-bar.is-clean .fb-reset { display: none; } */
.fb-reset { align-self: flex-end; }

/* ============ Вариант: --compact (сайдбар/узкая колонка) ============ */
.filter-bar--compact { padding: var(--s-3); }
.filter-bar--compact .filter-bar__inner { gap: var(--s-3) var(--s-4); }
.filter-bar--compact .fb-field--search { flex-basis: 100%; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .filter-bar__inner { gap: var(--s-4); }
  .fb-field--search  { flex-basis: 100%; }
  .fb-field--num     { flex: 1 1 calc(50% - var(--s-4)); }   /* числовые 50/50 */
  .fb-chips          { flex-basis: 100%; }
  .fb-reset          { margin-inline-start: auto; }           /* reset вправо */
}

@media (max-width: 640px) {
  .filter-bar { padding: var(--s-3); }
  .fb-field--num { flex-basis: calc(50% - var(--s-2)); }
  .fb-reset { width: 100%; justify-content: center; margin-inline-start: 0; }
}

/* ===== first-hand-testing ===== */
/* ============================================================
 * first-hand-testing · block.css
 * Скоуплено на .first-hand-testing / .fht-*. Только токены (10-tokens/).
 * Эталон структуры/нейминга: casino-item-card; trust-паттерн — methodology;
 *   CSS-only :target-лайтбокс — как gallery. Конвенция: ★research / premium.
 * Один акцент --brand; --success строго по смыслу (verified / выплата).
 * Поверхность: --surface + --hairline + --r-lg + --shadow-card. Адаптив: 980 / 640.
 * ========================================================== */

.first-hand-testing {
  /* фикс-слоты блока */
  --fht-avatar: 48px;          /* аватар тестера */
  --fht-tile-ar: 3 / 2;        /* aspect-ratio плитки-пруфа */
  --fht-grid-min: 220px;       /* мин. ширина колонки грида пруфов */
}

/* Карточка (наследует .surface из base: --surface + --hairline + --r-lg + --shadow-card) */
.first-hand-testing__card {
  padding: var(--s-6);
}

/* ---- 1 · Шапка: eyebrow + заголовок + лид ---- */
.fht__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.fht__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--brand);
}
.fht__eyebrow-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}
.fht__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.fht__lede {
  margin: 0;
  max-width: var(--container-prose);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- 2 · Аттестация тестера: avatar + имя/роль + бейдж «проверено» + дата ---- */
.fht__attest {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
  margin-bottom: var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.fht__attest-avatar {
  flex: 0 0 auto;
  width: var(--fht-avatar);
  height: var(--fht-avatar);
  object-fit: cover;
  border-radius: var(--r-pill);
  background: var(--bg-3);
  border: var(--hairline);
}
.fht__attest-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-right: auto;     /* meta уезжает вправо */
}
.fht__attest-name {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}
.fht__attest-role {
  margin: 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.fht__attest-meta {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--s-1);
  text-align: right;
}
/* Бейдж «проверено» — единственное смысловое использование --success */
.fht__verified {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .02em;
  color: var(--success);
  background: var(--success-soft);
  border-radius: var(--r-pill);
}
.fht__verified-ic { display: inline-flex; }
.fht__attest-date {
  font-size: var(--t-tiny);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}

/* ---- 3 · Факты теста: фикс-слоты, mono + tabular-nums ---- */
.fht__facts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s-3);
  margin: 0 0 var(--s-5);
}
.fht__fact {
  padding: var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.fht__fact-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.fht__fact-v {
  margin: var(--s-1) 0 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--text);
}
.fht__num {
  font-variant-numeric: tabular-nums;
}
/* «Вывели» — смысловой success-акцент (выплата получена) */
.fht__fact--ok .fht__fact-v { color: var(--success); }

/* ---- 4 · Грид пруфов ---- */
.fht__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--fht-grid-min), 1fr));
  gap: var(--s-3);
}
.fht__cell { display: block; }

/* Плитка-пруф: фикс aspect-ratio, object-fit:cover, кликабельна (ссылка-якорь) */
.fht__proof {
  position: relative;
  display: block;
  aspect-ratio: var(--fht-tile-ar);
  overflow: hidden;
  border-radius: var(--r-md);
  background: var(--bg-3);
  border: var(--hairline);
  text-decoration: none;
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.fht__proof:hover {
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
}
.fht__proof-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Тег-категория пруфа (верхний левый) */
.fht__proof-tag {
  position: absolute;
  top: var(--s-2);
  left: var(--s-2);
  z-index: 2;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .02em;
  color: var(--on-brand);
  background: color-mix(in srgb, var(--text) 78%, transparent);
  border-radius: var(--r-pill);
  backdrop-filter: blur(2px);
}
/* Тег-успех (вывод подтверждён) — смысловой --success */
.fht__proof-tag--ok {
  color: var(--on-brand);
  background: var(--success);
}

/* Лупа-индикатор (правый низ): появляется/усиливается на hover */
.fht__proof-zoom {
  position: absolute;
  right: var(--s-2);
  bottom: var(--s-2);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  color: var(--on-brand);
  background: color-mix(in srgb, var(--text) 70%, transparent);
  border-radius: var(--r-pill);
  opacity: .85;
  transition: opacity var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.fht__proof:hover .fht__proof-zoom,
.fht__proof:focus-visible .fht__proof-zoom {
  opacity: 1;
  background: var(--brand);
}

/* Fallback-плитка (превью нет): нейтральный фон + глиф + метка-кадр */
.fht__proof--fallback {
  display: grid;
  place-items: center;
  background: var(--bg-2);
  color: var(--text-faint);
}
.fht__proof-fallback {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-1);
}
.fht__proof-fallback-txt {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
}

/* ---- 5 · Раскрываемый drawer: верификация пруфов / 18+ ---- */
.fht__notes {
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.fht__notes-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
}
.fht__notes-btn:hover { color: var(--brand); }
.fht__notes-chev {
  display: inline-flex;
  transition: transform var(--dur-quick) var(--ease);
}
.fht__notes-btn[aria-expanded="true"] .fht__notes-chev { transform: rotate(180deg); }
.fht__notes-body {
  margin-top: var(--s-2);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.fht__notes-body[hidden] { display: none; }
.fht__notes-body p { margin: 0 0 var(--s-2); }
.fht__notes-body p:last-child { margin-bottom: 0; }

/* ============================================================
 * Модификатор --compact (сайдбар / author-page): плотнее, без фактов
 * ========================================================== */
.first-hand-testing--compact .first-hand-testing__card { padding: var(--s-5); }
.first-hand-testing--compact .fht__head { margin-bottom: var(--s-4); }
.first-hand-testing--compact .fht__attest { margin-bottom: var(--s-4); }
.first-hand-testing--compact .fht__grid {
  /* всегда 2 в ряд в узкой колонке */
  grid-template-columns: repeat(2, 1fr);
}

/* ============================================================
 * LIGHTBOX (CSS-only, :target). Зеркалит паттерн gallery.
 * По умолчанию display:none; раскрывается, когда :target == его id.
 * ========================================================== */
.fht__lightbox {
  display: none;
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  padding: var(--gutter);
  place-items: center;
}
.fht__lightbox:target { display: grid; }

/* Затемняющий overlay-якорь (клик = закрыть, ведёт на #firstHandTesting) */
.fht__lb-backdrop {
  position: absolute;
  inset: 0;
  background: color-mix(in srgb, var(--text) 82%, transparent);
  cursor: zoom-out;
  /* плавное появление фона при открытии */
  animation: fht-fade var(--dur-base) var(--ease) both;
}

.fht__lb-figure {
  position: relative;
  z-index: 1;
  margin: 0;
  max-width: min(100%, 1024px);
  max-height: 100%;
  background: var(--surface);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-lift);
  overflow: hidden;
  animation: fht-pop var(--dur-base) var(--ease-out) both;
}
.fht__lb-img {
  display: block;
  width: 100%;
  height: auto;
  max-height: calc(100vh - var(--s-9));
  object-fit: contain;
  background: var(--bg-2);
}
.fht__lb-cap {
  display: flex;
  align-items: baseline;
  gap: var(--s-2);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  border-top: var(--hairline);
}
.fht__lb-n {
  flex: 0 0 auto;
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}

/* Fallback-кадр в лайтбоксе (превью отсутствует) */
.fht__lb-figure--fallback { width: min(100%, 560px); }
.fht__lb-fallback {
  display: grid;
  place-items: center;
  aspect-ratio: var(--fht-tile-ar);
  color: var(--text-faint);
  background: var(--bg-2);
}

/* Кнопка-закрытие (✕) */
.fht__lb-close {
  position: absolute;
  top: var(--s-4);
  right: var(--s-4);
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  color: var(--text);
  background: var(--surface);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop);
  transition: background var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.fht__lb-close:hover { background: var(--brand); color: var(--on-brand); }

/* Навигация prev/next (листание пруфов) */
.fht__lb-nav {
  position: absolute;
  top: 50%;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  transform: translateY(-50%);
  color: var(--text);
  background: var(--surface);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop);
  transition: background var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.fht__lb-nav:hover { background: var(--brand); color: var(--on-brand); }
.fht__lb-nav--prev { left: var(--s-4); }
.fht__lb-nav--next { right: var(--s-4); }

@keyframes fht-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes fht-pop  { from { opacity: 0; transform: translateY(var(--s-2)) scale(.98); } to { opacity: 1; transform: none; } }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .first-hand-testing__card { padding: var(--s-5); }
  .fht__facts { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .first-hand-testing__card { padding: var(--s-4); }
  .first-hand-testing { --fht-grid-min: 150px; }

  /* аттестация: meta под именем, не теснит строку */
  .fht__attest { flex-wrap: wrap; }
  .fht__attest-meta {
    flex-direction: row;
    align-items: center;
    gap: var(--s-2);
    width: 100%;
    margin-top: var(--s-1);
    padding-top: var(--s-2);
    border-top: var(--hairline);
    text-align: left;
  }
  .fht__attest-date { margin-left: auto; }

  .fht__lb-nav { top: auto; bottom: var(--s-4); transform: none; }
}

/* Лайтбокс-анимации уважают reduced-motion (дублируем — это доп. motion вне base) */
@media (prefers-reduced-motion: reduce) {
  .fht__lb-backdrop,
  .fht__lb-figure { animation: none; }
}

/* ===== footer ===== */
/* ============================================================
 * footer · block.css
 * Скоуплено на .footer-block. Только токены (10-tokens/).
 * Конвенция разметки: html-base §FOOTER. Адаптив: 980 / 640.
 * ========================================================== */

.footer-block {
  background: var(--bg-2);
  border-top: var(--hairline);
  color: var(--text-dim);
  font-family: var(--font-body);
  font-size: var(--t-body);
  line-height: var(--lh-base);
  padding-block: var(--s-9) var(--s-6);
}

/* ---- Уровень 1 · ≤3 секции в ряд ---- */
.footer-block__top {
  display: grid;
  grid-template-columns: 1.4fr 1.6fr 1.2fr;
  gap: var(--s-7) var(--s-8);
  align-items: start;
}

/* ---- Секция 1 · Бренд + контакты ---- */
.footer-block__brand { display: flex; flex-direction: column; gap: var(--s-3); min-width: 0; }

.footer-block__logo {
  display: inline-flex; align-items: center; gap: var(--s-2);
  color: var(--text); text-decoration: none;
  border-radius: var(--r-soft);
}
.footer-block__mark { color: var(--brand); flex: 0 0 auto; }
.footer-block__wordmark {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -.01em;
}
.footer-block__wordmark-accent { color: var(--brand); }

.footer-block__tagline { margin: 0; max-width: 38ch; font-size: var(--t-small); line-height: var(--lh-snug); }

.footer-block__contacts { list-style: none; margin: var(--s-1) 0 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-2); }
.footer-block__contact { display: flex; align-items: center; gap: var(--s-2); }
.footer-block__contact-ic { display: inline-flex; color: var(--text-mute); flex: 0 0 auto; }
.footer-block__contact-link {
  color: var(--text-dim); text-decoration: none;
  font-size: var(--t-small);
  border-radius: var(--r-sharp);
  transition: color var(--dur-quick) var(--ease);
}
.footer-block__contact-link:hover { color: var(--brand); }

/* ---- Секция 2 · Навигационные колонки ---- */
.footer-block__nav-wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-5) var(--s-6);
}
.footer-block__nav-col { min-width: 0; }

.footer-block__heading {
  margin: 0 0 var(--s-3);
  font-family: var(--font-display);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--text-mute);
}

.footer-block__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-2); }
.footer-block__link {
  display: inline-flex; align-items: center; gap: var(--s-1);
  color: var(--text-dim); text-decoration: none;
  font-size: var(--t-small);
  border-radius: var(--r-sharp);
  transition: color var(--dur-quick) var(--ease);
}
.footer-block__link:hover { color: var(--brand); }
.footer-block__link--ext::after {
  content: "";
  width: 6px; height: 6px;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: rotate(45deg);
  opacity: .55;
}

/* ---- Секция 3 · Ответственная игра ---- */
.footer-block__rg { display: flex; flex-direction: column; gap: var(--s-3); min-width: 0; }
.footer-block__rg-text { margin: 0; font-size: var(--t-small); line-height: var(--lh-snug); }
.footer-block__rg-orgs { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-4); }

.footer-block__age {
  align-self: flex-start;
  display: inline-flex; align-items: center; justify-content: center;
  min-width: var(--s-8); height: var(--s-7); padding: 0 var(--s-2);
  font-family: var(--font-display);
  font-size: var(--t-small); font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
}

/* ---- Дисклеймер ---- */
.footer-block__disclaimer {
  margin: var(--s-7) 0 0;
  padding-top: var(--s-6);
  border-top: var(--hairline);
  max-width: var(--container-prose);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-faint);
}

/* ---- Уровень 2 · Нижняя строка ---- */
.footer-block__bottom {
  margin-top: var(--s-5);
  padding-top: var(--s-5);
  border-top: var(--hairline);
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: var(--s-3) var(--s-5);
}
.footer-block__copy {
  margin: 0;
  font-size: var(--t-small);
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}
.footer-block__service { display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-4); }
.footer-block__service-link {
  color: var(--text-mute); text-decoration: none;
  font-size: var(--t-small);
  border-radius: var(--r-sharp);
  transition: color var(--dur-quick) var(--ease);
}
.footer-block__service-link:hover { color: var(--brand); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .footer-block { padding-block: var(--s-8) var(--s-5); }
  .footer-block__top {
    grid-template-columns: 1fr 1fr;
    gap: var(--s-6) var(--s-6);
  }
  /* бренд занимает всю ширину сверху, навигация и RG — в два слота под ним */
  .footer-block__brand { grid-column: 1 / -1; }
}

@media (max-width: 640px) {
  .footer-block__top {
    grid-template-columns: 1fr;
    gap: var(--s-6);
  }
  .footer-block__nav-wrap { grid-template-columns: 1fr 1fr; }
  .footer-block__bottom { flex-direction: column; align-items: flex-start; }
}

/* ===== free-chips-amount-tabs ===== */
/* ============================================================
 * free-chips-amount-tabs · block.css
 * Скоуплено на .free-chips-amount-tabs. Только токены (10-tokens/).
 * Конвенция: ★research / премиум-планка (готовой разметки нет), ориентир —
 *   эталон casino-item-card; сегмент-таблетка из sort-controls; T&C-drawer
 *   из bonus-card; dataviz-метр (как rating-bar) вместо звёзд.
 * Переключение БЕЗ JS: нативные <input type="radio"> + CSS :checked / :has().
 *   :has() рулит видимостью панели; есть и JS-fallback по [hidden]/.is-active
 *   (см. data-action="amountTab" в block.md) — для браузеров без :has().
 * Один акцент: активная сумм-таба, лид-цифра, CTA = --brand. Числа —
 *   font-variant-numeric: tabular-nums. Адаптив: 980 / 640.
 * ========================================================== */

.free-chips-amount-tabs {
  /* минимальная ширина слота спека — держит ряд от «слипания» */
  --fct-spec-min: 120px;

  display: flow-root;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text);
  font-family: var(--font-body);
}

/* единые табличные цифры для любых чисел внутри блока */
.fct-num,
.fct-tab__num,
.fct-panel__num,
.fct-meter__v { font-variant-numeric: tabular-nums; }

/* ---- Шапка ---- */
.free-chips-amount-tabs__head {
  margin-bottom: var(--s-4);
}
.free-chips-amount-tabs__eyebrow {
  margin: 0 0 var(--s-1);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.free-chips-amount-tabs__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.free-chips-amount-tabs__hint {
  margin: var(--s-2) 0 0;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

/* ============================================================
 * Сегмент-контрол сумм (radiogroup)
 * ========================================================== */
.free-chips-amount-tabs__tabs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-1);
  padding: var(--s-1);
  margin-bottom: var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}

.fct-tab {
  flex: 1 1 auto;
  display: block;
  cursor: pointer;
}

/* нативный radio: убран из вида, НО фокусируемый (a11y + клавиатура radiogroup) */
.fct-tab__input {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  clip: rect(0 0 0 0); clip-path: inset(50%);
  overflow: hidden; white-space: nowrap;
}

/* видимая «таба» = chip */
.fct-tab__chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-4);
  text-align: center;
  color: var(--text-mute);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  transition: color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease),
              box-shadow var(--dur-quick) var(--ease);
}
.fct-tab:hover .fct-tab__chip { color: var(--text); background: var(--surface); }

.fct-tab__amount {
  display: inline-flex;
  align-items: baseline;
  gap: 1px;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: 1;
}
.fct-tab__cur { font-size: var(--t-small); font-weight: var(--fw-semi); color: var(--text-faint); }
.fct-tab--alt .fct-tab__cur--suf,
.fct-tab__cur--suf { margin-left: 2px; }
.fct-tab__note {
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: .03em;
  color: var(--text-faint);
}

/* активная таба (:checked) — единственное пятно акцента в контроле */
.fct-tab__input:checked ~ .fct-tab__chip {
  color: var(--on-brand);
  background: var(--brand);
  border-color: var(--brand);
  box-shadow: var(--shadow-card);
}
.fct-tab__input:checked ~ .fct-tab__chip .fct-tab__cur,
.fct-tab__input:checked ~ .fct-tab__chip .fct-tab__note { color: var(--on-brand); opacity: .85; }
.fct-tab:hover .fct-tab__input:checked ~ .fct-tab__chip {
  background: color-mix(in srgb, var(--brand) 88%, #000);
}

/* фокус с клавиатуры — кольцо на видимом chip (нативный focus-visible base — на скрытом input) */
.fct-tab__input:focus-visible ~ .fct-tab__chip {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

/* ============================================================
 * Панели офферов: видима ровно одна (соответствует :checked)
 * ========================================================== */
.free-chips-amount-tabs__panels { display: block; }

.fct-panel {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  grid-template-areas:
    "lead specs"
    "lead meter"
    "terms terms"
    "cta cta";
  gap: var(--s-4) var(--s-5);
  align-items: start;
}

/* По умолчанию (без поддержки :has) панели не схлопнуты — JS-fallback скрывает
   неактивные через [hidden]; см. amountTab. */
.fct-panel[hidden] { display: none; }

/* :has()-маршрут (без JS): прячем все панели, кроме той, чей id == data-panel
   у :checked-инпута. Реализуем «обратной» логикой: показываем только активную. */
@supports selector(:has(*)) {
  .free-chips-amount-tabs__panels .fct-panel { display: none; }
  .free-chips-amount-tabs:has(.fct-tab__input[data-panel="fct-1-p10"]:checked) #fct-1-p10,
  .free-chips-amount-tabs:has(.fct-tab__input[data-panel="fct-1-p25"]:checked) #fct-1-p25,
  .free-chips-amount-tabs:has(.fct-tab__input[data-panel="fct-1-p50"]:checked) #fct-1-p50,
  .free-chips-amount-tabs:has(.fct-tab__input[data-panel="fct-1-pfs"]:checked) #fct-1-pfs,
  .free-chips-amount-tabs:has(.fct-tab__input[data-panel="fct-2-p15"]:checked) #fct-2-p15,
  .free-chips-amount-tabs:has(.fct-tab__input[data-panel="fct-2-p30"]:checked) #fct-2-p30,
  .free-chips-amount-tabs:has(.fct-tab__input[data-panel="fct-2-p75"]:checked) #fct-2-p75 {
    display: grid;
  }
  /* compact-вариант панели — в строку (см. ниже), grid переопределяется модификатором */
}

/* лёгкое появление активной панели (subtle motion, не мешает чтению) */
@media (prefers-reduced-motion: no-preference) {
  .free-chips-amount-tabs__panels .fct-panel { animation: fct-panel-in var(--dur-base) var(--ease); }
}
@keyframes fct-panel-in {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: none; }
}

/* ---- Лид: крупная сумма ---- */
.fct-panel__lead {
  grid-area: lead;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: var(--s-4);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.fct-panel__k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.fct-panel__v {
  margin: 0;
  display: inline-flex;
  align-items: baseline;
  gap: 2px;
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--brand);
}
.fct-panel__cur { font-size: var(--t-h3); font-weight: var(--fw-semi); color: var(--brand); }
.fct-panel__cur--suf { margin-left: var(--s-1); }
.fct-panel__sub {
  margin: 0;
  font-size: var(--t-small);
  color: var(--text-mute);
}
.fct-panel__name { font-weight: var(--fw-semi); color: var(--text-dim); }

/* ---- Фикс-слоты спеков ---- */
.fct-panel__specs {
  grid-area: specs;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(var(--fct-spec-min), 1fr));
  gap: var(--s-2);
}
.fct-spec {
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.fct-spec__k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.fct-spec__v {
  margin: 2px 0 0;
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---- Dataviz-метр: «сложность отыгрыша» (вместо звёзд) ---- */
.fct-meter { grid-area: meter; }
.fct-meter__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-bottom: var(--s-1);
}
.fct-meter__k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.fct-meter__v { font-weight: var(--fw-semi); color: var(--text-dim); }
.fct-meter__track {
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.fct-meter__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  /* выше вейджер → ближе к --danger; шкала как у rating-bar, по смыслу */
  background: linear-gradient(90deg, var(--rating-to), var(--rating-from));
}

/* ---- T&C-drawer (нативный <details>) ---- */
.fct-panel__terms {
  grid-area: terms;
  border-top: var(--hairline);
  padding-top: var(--s-3);
}
.fct-terms__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
  min-height: var(--tap-min);
  list-style: none;
  cursor: pointer;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
}
.fct-terms__q::-webkit-details-marker { display: none; }
.fct-panel__terms:hover .fct-terms__q { color: var(--brand); }
.fct-terms__chevron {
  flex: 0 0 auto;
  transition: transform var(--dur-base) var(--ease);
}
.fct-panel__terms[open] .fct-terms__chevron { transform: rotate(180deg); }

/* раскрытие grid-rows 0fr→1fr (без замера высоты) */
.fct-terms__a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease);
}
.fct-panel__terms[open] .fct-terms__a { grid-template-rows: 1fr; }
.fct-terms__inner {
  overflow: hidden;
  min-height: 0;
}
.fct-terms__inner p {
  margin: var(--s-2) 0 0;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}

/* ---- CTA (одна на панель) ---- */
.fct-panel__cta { grid-area: cta; }

/* ============================================================
 * Модификатор --compact: 3 суммы, лид в строку, без метра
 * ========================================================== */
.free-chips-amount-tabs--compact { padding: var(--s-4); }
.free-chips-amount-tabs--compact .fct-panel {
  grid-template-columns: 1fr;
  grid-template-areas:
    "lead"
    "specs"
    "cta";
  gap: var(--s-3);
}
.free-chips-amount-tabs--compact .fct-panel__lead {
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.free-chips-amount-tabs--compact .fct-panel__v { font-size: var(--t-h2); }

/* ============================================================
 * Адаптив
 * ========================================================== */
@media (max-width: 980px) {
  .fct-panel {
    grid-template-columns: 1fr;
    grid-template-areas:
      "lead"
      "specs"
      "meter"
      "terms"
      "cta";
    gap: var(--s-4);
  }
}

@media (max-width: 640px) {
  .free-chips-amount-tabs { padding: var(--s-4); }
  /* табы переносятся в сетку 2×N — chip-таблетки не «слипаются» */
  .free-chips-amount-tabs__tabs {
    border-radius: var(--r-lg);
  }
  .fct-tab { flex: 1 1 calc(50% - var(--s-1)); }
  .fct-tab__chip { border-radius: var(--r-md); }
  .fct-panel__v { font-size: var(--t-h2); }
}

/* ===== gallery ===== */
/* ============================================================
 * gallery · block.css
 * Скоуплено на .gallery (= id). Только токены (10-tokens/).
 * Owns: заголовок-блок (eyebrow + H2 + счётчик), грид плиток-скриншотов
 *       (фикс aspect-ratio 16/9, object-fit:cover) + ВАРИАНТ карусели
 *       (scroll-snap, как similar-slots-rail) + CSS-only lightbox (:target).
 * Грид: 3 кол. (десктоп) / 2 (≤980) / 2 (≤640, мельче). Карусель: фикс-ширина
 *       ячейки, мобайл «подглядывает» следующий кадр.
 * Один акцент — --brand (zoom-иконка, tag, фокус, nav в лайтбоксе). Числа
 *       (счётчик «1 / 6») — tabular-nums. Иконки — bespoke inline SVG.
 * Lightbox — нативный :target, без JS. Закрытие — overlay/кнопка/Esc.
 * Эталон поверхности/радиуса/тени — casino-item-card. Адаптив: 980 / 640.
 * ========================================================== */

.gallery {
  --g-cols: 3;               /* колонок в гриде (десктоп) */
  --g-gap: var(--s-4);       /* шаг между плитками */
  --g-radius: var(--r-lg);   /* радиус плитки/lightbox-кадра */
  --g-card: 320px;           /* фикс-ширина ячейки в режиме карусели */
  --g-fade: var(--s-7);      /* edge-fade у краёв рельса карусели */
}

/* ---- Заголовок (как similar-slots-rail) ---- */
.gallery__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-6);
}
.gallery__heading { min-width: 0; }
.gallery__head .eyebrow { margin: 0 0 var(--s-2); }
.gallery__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.gallery__count {
  flex: 0 0 auto;
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ============================================================
 * ГРИД плиток (дефолт)
 * ========================================================== */
.gallery__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(var(--g-cols), minmax(0, 1fr));
  gap: var(--g-gap);
}
.gallery__cell { min-width: 0; display: flex; }

/* ---- Плитка-скриншот: фикс-слот 16/9, кликабельна (ссылка-якорь) ---- */
.gallery__thumb {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--g-radius);
  box-shadow: var(--shadow-card);
  text-decoration: none;
  cursor: zoom-in;
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.gallery__thumb:hover,
.gallery__thumb:focus-visible {
  box-shadow: var(--shadow-pop);
  transform: translateY(-2px);
}
.gallery__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--dur-slow) var(--ease);
}
.gallery__thumb:hover .gallery__img,
.gallery__thumb:focus-visible .gallery__img { transform: scale(1.04); }

/* zoom-аффорданс (появляется на hover/focus) — единый акцент */
.gallery__zoom {
  position: absolute;
  inset-block-end: var(--s-2);
  inset-inline-end: var(--s-2);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  color: var(--on-brand);
  background: color-mix(in srgb, var(--brand) 88%, transparent);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  opacity: 0;
  transform: scale(.85);
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease-out);
  pointer-events: none;
}
.gallery__thumb:hover .gallery__zoom,
.gallery__thumb:focus-visible .gallery__zoom { opacity: 1; transform: none; }

/* tag (напр. множитель «×500») — нейтральная подложка, не второй акцент */
.gallery__tag {
  position: absolute;
  inset-block-start: var(--s-2);
  inset-inline-start: var(--s-2);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  letter-spacing: .02em;
  color: var(--on-brand);
  background: color-mix(in srgb, var(--text) 82%, transparent);
  border-radius: var(--r-soft);
}

/* ---- Вариант плитки --fallback: превью нет → градиент + номер кадра ---- */
.gallery__thumb--fallback {
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, var(--brand), var(--brand-2));
  border-color: transparent;
}
.gallery__fallback-label {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--on-brand);
  opacity: .92;
  letter-spacing: .01em;
}

/* ============================================================
 * ВАРИАНТ · КАРУСЕЛЬ (.gallery--carousel) — scroll-snap рельс
 * Те же плитки; раскладка — горизонтальный свайп (как similar-slots-rail).
 * Bleed на гаттер, чтобы крайние кадры доходили до края, заголовок — по .container.
 * ========================================================== */
.gallery--carousel .gallery__grid {
  display: grid;
  grid-template-columns: none;
  grid-auto-flow: column;
  grid-auto-columns: var(--g-card);
  gap: var(--g-gap);

  margin-inline: calc(-1 * var(--gutter));
  padding-inline: var(--gutter);
  padding-block: var(--s-2);

  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: var(--gutter);
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--rule-strong) transparent;

  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--g-fade), #000 calc(100% - var(--g-fade)), transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 var(--g-fade), #000 calc(100% - var(--g-fade)), transparent 100%);
}
.gallery--carousel .gallery__grid::-webkit-scrollbar { height: 8px; }
.gallery--carousel .gallery__grid::-webkit-scrollbar-track { background: transparent; }
.gallery--carousel .gallery__grid::-webkit-scrollbar-thumb { background: var(--rule); border-radius: var(--r-pill); }
.gallery--carousel .gallery__grid:hover::-webkit-scrollbar-thumb { background: var(--rule-strong); }
.gallery--carousel .gallery__cell { scroll-snap-align: start; scroll-snap-stop: always; }

/* ============================================================
 * LIGHTBOX (CSS-only · :target)
 * Слой закрыт (display:none); раскрывается, когда id плитки == :target.
 * Перекрывает экран (z-modal), backdrop-ссылка закрывает по клику вне кадра,
 * якорная ссылка close/#gallery возвращает фокус-таргет к секции.
 * ========================================================== */
.gallery__lightboxes { /* контейнер-обёртка, без собственного бокса */ }

.gallery__lightbox {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: none;            /* закрыт по умолчанию */
  place-items: center;
  padding: var(--gutter);
  background: color-mix(in srgb, var(--text) 82%, transparent);
  -webkit-backdrop-filter: blur(6px);
          backdrop-filter: blur(6px);
}
/* Раскрытие — только когда лайтбокс является целью якоря */
.gallery__lightbox:target {
  display: grid;
  animation: g-lb-fade var(--dur-base) var(--ease);
}

/* Кликабельная подложка-закрытие (покрывает весь слой под кадром) */
.gallery__lb-backdrop {
  position: absolute;
  inset: 0;
  cursor: zoom-out;
}

/* Кадр (картинка + подпись) */
.gallery__lb-figure {
  position: relative;
  z-index: 1;
  margin: 0;
  max-width: min(1100px, 100%);
  max-height: 86vh;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--g-radius);
  box-shadow: var(--shadow-lift);
  overflow: hidden;
  animation: g-lb-rise var(--dur-base) var(--ease-out);
}
.gallery__lb-img {
  display: block;
  width: 100%;
  height: auto;
  max-height: calc(86vh - var(--s-8));
  object-fit: contain;
  background: var(--bg-2);
}
.gallery__lb-cap {
  display: flex;
  align-items: baseline;
  gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-small);
  color: var(--text-dim);
  border-top: var(--hairline);
}
.gallery__lb-n {
  flex: 0 0 auto;
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--brand);
}

/* fallback-кадр в лайтбоксе (превью отсутствует) */
.gallery__lb-figure--fallback { aspect-ratio: 16 / 9; max-width: min(900px, 100%); }
.gallery__lb-fallback {
  flex: 1 1 auto;
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  color: var(--on-brand);
  background: linear-gradient(135deg, var(--brand), var(--brand-2));
}

/* Кнопка-закрытие (✕) — поверх, в углу слоя */
.gallery__lb-close {
  position: absolute;
  z-index: 2;
  inset-block-start: var(--gutter);
  inset-inline-end: var(--gutter);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  color: var(--text);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop);
  transition: transform var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.gallery__lb-close:hover { transform: scale(1.06); background: var(--bg-2); }

/* prev / next — якоря на соседние кадры (листание без JS) */
.gallery__lb-nav {
  position: absolute;
  z-index: 2;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  color: var(--text);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop);
  transition: transform var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.gallery__lb-nav:hover { background: var(--bg-2); }
.gallery__lb-nav--prev { inset-inline-start: var(--gutter); }
.gallery__lb-nav--next { inset-inline-end: var(--gutter); }
.gallery__lb-nav--prev:hover { transform: translateY(-50%) translateX(-2px); }
.gallery__lb-nav--next:hover { transform: translateY(-50%) translateX(2px); }

@keyframes g-lb-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes g-lb-rise { from { opacity: 0; transform: translateY(12px) scale(.98); } to { opacity: 1; transform: none; } }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .gallery { --g-cols: 2; --g-card: 280px; }
  .gallery__head { gap: var(--s-3); }
}
@media (max-width: 640px) {
  .gallery { --g-cols: 2; --g-gap: var(--s-3); }
  .gallery__title { font-size: var(--t-h3); }
  .gallery__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-2);
    margin-bottom: var(--s-5);
  }
  /* Карусель: кадр «подглядывает» следующий (peek) */
  .gallery--carousel { --g-card: 80vw; --g-fade: var(--s-5); }
  .gallery--carousel .gallery__grid { grid-auto-columns: min(var(--g-card), 360px); }

  /* Lightbox: навигация уходит вниз (узкий экран), кадр почти на всю ширину */
  .gallery__lb-figure { max-height: 90vh; }
  .gallery__lb-img { max-height: calc(90vh - var(--s-9)); }
  .gallery__lb-nav { top: auto; bottom: var(--gutter); transform: none; }
  .gallery__lb-nav--prev:hover,
  .gallery__lb-nav--next:hover { transform: none; }
}

/* ============ Reduced motion: гасим плавный скролл (база зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .gallery--carousel .gallery__grid { scroll-behavior: auto; }
  .gallery__thumb:hover .gallery__img,
  .gallery__thumb:focus-visible .gallery__img { transform: none; }
}

/* ===== gambling-options-grid ===== */
/* ============================================================
 * gambling-options-grid · block.css
 * Скоуплено на .gambling-options-grid. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка),
 * ориентир related-rail / tools-card-grid (грид + растянутая ссылка ::after).
 * Один акцент --brand (иконка-слот + название-hover + метр-число + стрелка); прочее — нейтрали.
 * Метр «кол-во» — числовой dataviz-сигнал (вместо звёзд). Фикс-слот иконки; единые pad/radius/shadow.
 * Числа — tabular-nums. Адаптив: auto-fit 980/640. Reduced-motion гасит transform/transition.
 * ========================================================== */

.gambling-options-grid {
  --gog-min: 280px;           /* мин. ширина плитки */
  --gog-icon: 56px;           /* фикс-слот иконки */
  display: block;
}

/* ---- Шапка ---- */
.gog-head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.gog-head__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.gog-head__lede { margin: 0; max-width: var(--container-prose); }

/* ---- Грид плиток (auto-fit — растягивает последний ряд) ---- */
.gog-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(var(--gog-min), 1fr));
  gap: var(--s-4);
}
.gog-grid__cell { display: flex; }

/* ============================================================
 * Плитка категории (вся кликабельна)
 * ========================================================== */
.gog-tile {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  width: 100%;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;            /* для hover-«ауры» иконки */
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.gog-tile:hover {
  box-shadow: var(--shadow-pop);
  transform: translateY(-2px);
  border-color: var(--rule-strong);
}
.gog-tile:focus-within { box-shadow: var(--shadow-pop); border-color: var(--rule-strong); }

/* иконка-слот — носитель акцента, крупнее чем в tools-grid (категория) */
.gog-tile__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--gog-icon);
  height: var(--gog-icon);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
  transition: background var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease-out);
}
.gog-tile:hover .gog-tile__icon,
.gog-tile:focus-within .gog-tile__icon {
  background: color-mix(in srgb, var(--brand) 16%, transparent);
  transform: scale(1.05);
}

.gog-tile__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
}
.gog-tile__link {
  color: inherit;
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
.gog-tile__link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.gog-tile__link:hover,
.gog-tile:focus-within .gog-tile__link { color: var(--brand); }

.gog-tile__dek {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  text-wrap: pretty;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}

/* ---- Подвал: метр «кол-во» (число + единица) + стрелка ---- */
.gog-tile__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  margin-top: auto;
  padding-top: var(--s-3);
  border-top: var(--hairline);
}
.gog-tile__metric {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
}
.gog-tile__num {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.gog-tile__metric-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.gog-tile__arrow {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-quick) var(--ease-out), color var(--dur-quick) var(--ease);
}
.gog-tile:hover .gog-tile__arrow,
.gog-tile:focus-within .gog-tile__arrow { transform: translateX(3px); color: var(--brand); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .gambling-options-grid { --gog-min: 240px; }
}
@media (max-width: 640px) {
  .gambling-options-grid { --gog-min: 100%; }   /* одна колонка */
  .gog-head__title { font-size: var(--t-h3); }
  .gog-tile { padding: var(--s-4); }
  .gog-tile__name { font-size: var(--t-h4); }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .gog-tile,
  .gog-tile__icon,
  .gog-tile__arrow,
  .gog-tile__link { transition: none; }
  .gog-tile:hover { transform: none; }
  .gog-tile:hover .gog-tile__icon,
  .gog-tile:focus-within .gog-tile__icon { transform: none; }
}

/* ===== game-card ===== */
/* ============================================================
 * game-card · block.css
 * Скоуплено на .game-grid (обёртка) и .game-card / .gc-* (карточка).
 * Только токены (10-tokens/). Карточка одного in-house «оригинала»
 * (Dice / Crash / Mines / Plinko …): имя + тип + RTP (или pending).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   фикс-слоты, хайрлайн-разделители, tabular-nums, дисциплина нейтралей,
 *   dataviz-метр RTP вместо звёзд. Эталон нейминга/слотов: casino-item-card,
 *   T&C-drawer как нативный <details> (grid-rows 0fr→1fr) — как bonus-card.
 * Один акцент — --brand (тип-чип / RTP-число / verified / CTA / метр).
 *   --success/--danger ТОЛЬКО по смыслу (статус RTP: опубликован / pending).
 * Адаптив-грид: 3 кол. / 2 (≤980) / 1 (≤640). touch ≥ --tap-min.
 * ========================================================== */

/* ============ Грид-обёртка (3 / 2 / 1) ============ */
.game-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-5);
}
.game-grid__cell { display: flex; }

/* ============ Карточка ============ */
.game-card {
  /* фикс-слот глифа-обложки оригинала: ровный ряд карточек */
  --gc-glyph: 56px;

  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  width: 100%;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text);
  transition:
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease),
    border-color var(--dur-base) var(--ease);
}
.game-card:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); }

/* Рекомендованный/избранный оригинал — акцентная рамка (один акцент --brand) */
.game-card--featured { border-color: var(--brand); }

/* ---- 1 · Шапка: глиф + (имя + тип-чип) ---- */
.gc__head {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  min-width: 0;
}

/* Фирменный глиф вместо сток-обложки: градиент --brand→--brand-2 + bespoke SVG */
.gc__glyph {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: var(--gc-glyph);
  height: var(--gc-glyph);
  color: var(--on-brand);
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 100%);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
}
.gc__glyph-ic { display: block; }

.gc__heading { min-width: 0; display: flex; flex-direction: column; gap: var(--s-1); }
.gc__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.gc__name-link { color: inherit; text-decoration: none; }
.gc__name-link:hover { color: var(--brand); }

/* Тип игры (Dice / Crash / Mines …) — нейтральный чип, не статус */
.gc__type {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.gc__type-ic { display: inline-flex; flex: 0 0 auto; }

/* ---- 2 · RTP-блок: главный показатель (фикс-слот) ---- */
.gc__rtp {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin: 0;
  /* фикс-высота: число и pending-плашка дают одинаковый ритм по ряду */
  min-height: calc(var(--t-h1) + var(--s-5));
}
.gc__rtp-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
}
.gc__rtp-k {
  margin: 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* Значение RTP — крупное, табличные цифры */
.gc__rtp-v {
  margin: 0;
  display: inline-flex;
  align-items: baseline;
  gap: 1px;
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.02em;
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.gc__rtp-unit {
  font-family: var(--font-body);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  color: var(--text-faint);
}

/* Метр RTP: dataviz вместо звёзд; ширина = RTP% (inline style на сборке) */
.gc__rtp-meter {
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.gc__rtp-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- 2b · Состояние «pending»: RTP ещё не опубликован (по смыслу --warning) ---- */
.gc__rtp--pending .gc__rtp-v { color: var(--text-faint); }
.gc__pending {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  align-self: flex-start;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  color: var(--warning);
  background: var(--warning-soft);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.gc__pending-ic { display: inline-flex; flex: 0 0 auto; }

/* ---- 3 · Мини-слоты: house edge / макс. выплата (фикс-слоты, хайрлайны) ---- */
.gc__stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-2);
  margin: 0;
  padding-block: var(--s-3);
  border-top: var(--hairline);
  border-bottom: var(--hairline);
}
.gc__stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.gc__stat + .gc__stat { padding-left: var(--s-4); border-left: var(--hairline); }
.gc__stat-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.gc__stat-v {
  margin: 0;
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.gc__stat-v small { color: var(--text-faint); font-weight: var(--fw-medium); }

/* ---- 4 · Provably-fair drawer: нативный <details>, держит карточку чистой ---- */
.gc__fair { margin-top: auto; }
.gc__fair-q {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.gc__fair-q::-webkit-details-marker { display: none; }
.gc__fair-q:hover { color: var(--brand); }
.gc__fair[open] .gc__fair-q { color: var(--brand); }

/* Бейдж «проверяемая честность» — единственное акцентное пятно строки */
.gc__verified {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  font-weight: var(--fw-semi);
  color: var(--brand);
}
.gc__verified-ic { display: inline-flex; }
.gc__fair-chevron {
  margin-left: auto;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.gc__fair-q:hover .gc__fair-chevron { color: var(--brand); }
.gc__fair[open] .gc__fair-chevron { transform: rotate(180deg); color: var(--brand); }

/* Раскрытие: grid-rows 0fr→1fr (плавная высота без JS-замера) */
.gc__fair-a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.gc__fair[open] .gc__fair-a { grid-template-rows: 1fr; }
.gc__fair-inner {
  overflow: hidden;
  min-height: 0; /* критично для коллапса grid-строки */
}
.gc__fair-list {
  list-style: none;
  margin: 0;
  padding: var(--s-3) 0 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: var(--s-2) var(--s-4);
}
.gc__fair-item { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gc__fair-item dt {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.gc__fair-item dd {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.gc__fair-note {
  margin: var(--s-3) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- 5 · CTA: ОДНА на карточку ---- */
.gc__cta { margin-top: auto; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .game-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4); }
}
@media (max-width: 640px) {
  .game-grid { grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
  .game-card { padding: var(--s-4); }
  .gc__rtp { min-height: 0; }
  /* Мини-слоты в одну колонку: разделитель сверху, не слева */
  .gc__stats { grid-template-columns: 1fr; gap: 0; }
  .gc__stat + .gc__stat { padding-left: 0; border-left: none; }
  .gc__stat {
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--s-3);
    padding-block: var(--s-2);
  }
  .gc__stat + .gc__stat { border-top: var(--hairline); }
}

/* ============ Reduced motion: без анимации высоты/шеврона ============ */
@media (prefers-reduced-motion: reduce) {
  .gc__fair-a { transition: none; }
  .gc__fair-chevron { transition: color var(--dur-quick) var(--ease); }
}

/* ===== game-type-explainer ===== */
/* ============================================================
 * game-type-explainer · block.css
 * Скоуплено на .game-type-explainer. Только токены (10-tokens/).
 * Конвенция: ★research (готовой разметки нет) поверх premium-планки;
 *   поверхность/радиус/тень, дисциплина «один акцент + нейтрали,
 *   tabular-nums, фикс-слоты, ОДНА CTA, drawer для деталей» — как
 *   эталон casino-item-card; нейминг метрик/метров согласован с
 *   slot-spec-grid (дискретная шкала — УРОВЕНЬ, не статус, красится --brand).
 * Один акцент — --brand (иконка типа, активные деления метров, чип, CTA).
 *   --success/--danger в блоке НЕ используются как декор: дисперсия и
 *   преимущество казино — это уровни, а не «хорошо/плохо».
 * Числа (RTP/преимущество/множители) — font-variant-numeric: tabular-nums.
 * Мини-схема — bespoke inline SVG, чисто декоративная (aria-hidden);
 *   смысл дублируется текстом-подписями и drawer-шагами.
 * Деталь «как это работает» — нативный <details>, держит карточку чистой.
 * Адаптив: 980 / 640.
 * ========================================================== */

.game-type-explainer {
  /* фикс-слот иконки заголовка — единый ритм с slot-spec-grid */
  --gte-ic: 44px;
  /* фикс-высота мини-схемы — карта не «прыгает» между типами игр */
  --gte-fig: 168px;
  /* мин. ширина ячейки метрики — держит грид от слипания */
  --gte-metric-min: 150px;

  display: flow-root;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text);
}

/* ============ Шапка: иконка типа + заголовок + чип-категория ============ */
.game-type-explainer__head {
  display: flex;
  align-items: center;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
}

/* иконка типа игры в фикс-слоте (единственная «брендовая» плитка) */
.game-type-explainer__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--gte-ic);
  height: var(--gte-ic);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
.game-type-explainer__icon svg { width: 24px; height: 24px; }

.game-type-explainer__heading {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: 0;
  flex: 1 1 auto;
}
.game-type-explainer__eyebrow {
  font-size: var(--t-tiny);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.game-type-explainer__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* чип-категория — нейтральная марка, единственное пятно акцента в шапке */
.game-type-explainer__tag {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  flex: 0 0 auto;
  align-self: center;
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.game-type-explainer__tag svg { width: 14px; height: 14px; }

/* ============ Тело: мини-схема + объяснение ============ */
.game-type-explainer__body {
  display: grid;
  grid-template-columns: minmax(220px, 0.9fr) minmax(0, 1.1fr);
  gap: var(--s-5);
  align-items: stretch;
}

/* ---- Мини-схема (фигура с bespoke SVG) ---- */
.game-type-explainer__figure {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.game-type-explainer__diagram {
  width: 100%;
  height: var(--gte-fig);
  /* фон-карта схемы — нейтральная, без акцента */
  color: var(--text-mute);
}
.game-type-explainer__diagram svg { width: 100%; height: 100%; }

/* «активные» элементы траектории/исхода в схеме — единый акцент */
.gte-dia__path { stroke: var(--brand); }
.gte-dia__hit { fill: var(--brand); }
.gte-dia__grid { stroke: var(--rule); }
.gte-dia__axis { stroke: var(--rule-strong); }
.gte-dia__face { fill: var(--surface); stroke: var(--rule-strong); }
.gte-dia__pip { fill: var(--text); }
.gte-dia__peg { fill: var(--text-faint); }
.gte-dia__label { fill: var(--text-faint); font-family: var(--font-mono); font-size: 9px; }

.game-type-explainer__caption {
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
  text-align: center;
}

/* ---- Объяснение: лид + список «суть» ---- */
.game-type-explainer__explain {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  min-width: 0;
}
.game-type-explainer__lede {
  margin: 0;
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* буллеты «как это устроено» — bespoke маркеры, без сток-иконок */
.game-type-explainer__points {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}
.game-type-explainer__point {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}
.game-type-explainer__point-ic {
  flex: 0 0 auto;
  margin-top: 1px;
  color: var(--brand);
}
.game-type-explainer__point-ic svg { width: 16px; height: 16px; }

/* ============ Метрики: RTP / преимущество казино / дисперсия ============ */
.game-type-explainer__metrics {
  list-style: none;
  margin: var(--s-5) 0 0;
  padding: var(--s-5) 0 0;
  border-top: var(--hairline);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(var(--gte-metric-min), 1fr));
  gap: var(--s-3);
}
.game-type-explainer__metric {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: 0;
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.game-type-explainer__metric-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.game-type-explainer__metric-v {
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 2px;
  flex-wrap: wrap;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}
.game-type-explainer__num { letter-spacing: .01em; }
/* единица/символ — приглушённая, не спорит с числом */
.game-type-explainer__unit {
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-faint);
}

/* дискретная шкала (дисперсия/сложность) — УРОВЕНЬ, единый акцент */
.game-type-explainer__meter {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  margin-top: 2px;
}
.game-type-explainer__meter-seg {
  width: 16px;
  height: 6px;
  border-radius: var(--r-pill);
  background: var(--bg-3);
}
.game-type-explainer__meter--lvl1 .game-type-explainer__meter-seg:nth-child(-n + 1),
.game-type-explainer__meter--lvl2 .game-type-explainer__meter-seg:nth-child(-n + 2),
.game-type-explainer__meter--lvl3 .game-type-explainer__meter-seg:nth-child(-n + 3),
.game-type-explainer__meter--lvl4 .game-type-explainer__meter-seg:nth-child(-n + 4),
.game-type-explainer__meter--lvl5 .game-type-explainer__meter-seg:nth-child(-n + 5) {
  background: var(--brand);
}

/* ============ Деталь «как это работает» (нативный <details>) ============ */
.game-type-explainer__details {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-md);
  background: var(--surface);
}
.game-type-explainer__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.game-type-explainer__summary::-webkit-details-marker { display: none; }
.game-type-explainer__summary:hover { color: var(--brand); }
.game-type-explainer__chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.game-type-explainer__details[open] .game-type-explainer__chev {
  transform: rotate(180deg);
  color: var(--brand);
}
.game-type-explainer__details-body {
  padding: 0 var(--s-4) var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.game-type-explainer__details-body > :first-child { margin-top: 0; }

/* мини-шаги раунда (нумерованные CSS-счётчиком) */
.game-type-explainer__flow {
  counter-reset: gte-step;
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}
.game-type-explainer__step {
  counter-increment: gte-step;
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
}
.game-type-explainer__step::before {
  content: counter(gte-step);
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.game-type-explainer__step-text { min-width: 0; }

/* ============ Низ: примечание-источник + ОДНА CTA ============ */
.game-type-explainer__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  flex-wrap: wrap;
  margin-top: var(--s-5);
}
.game-type-explainer__note {
  margin: 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}
.game-type-explainer__cta { flex: 0 0 auto; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .game-type-explainer { padding: var(--s-4); }
  .game-type-explainer__body { gap: var(--s-4); }
}
@media (max-width: 640px) {
  /* схема и объяснение — в один столбец, схема сверху */
  .game-type-explainer__body { grid-template-columns: 1fr; }
  .game-type-explainer__metrics { --gte-metric-min: 100%; }
  .game-type-explainer__head { flex-wrap: wrap; gap: var(--s-3); }
  .game-type-explainer__tag { align-self: flex-start; }
  .game-type-explainer__foot { flex-direction: column; align-items: stretch; }
  .game-type-explainer__cta .btn { width: 100%; }
}

/* ===== gamification-bar-level-xp-coins ===== */
/* ============================================================
 * gamification-bar-level-xp-coins · block.css  (scope: .gxp)
 * Только токены (10-tokens/). Назначение: полоса лояльности — уровень + XP-прогресс + монеты.
 * XP-прогресс: ширина = --val/--max (как rating-бар, градиент --brand→--brand-2).
 * Один акцент --brand (уровень/XP/монеты — единый игровой акцент); state-цвет не задействован.
 * Эталон поверхности/нейминга/drawer/фикс-слотов: casino-item-card. tabular-nums на числах.
 * Адаптив: 980 / 640. Монеты — внутриигровая валюта (см. block.md), не деньги.
 * ========================================================== */

.gxp {
  /* фикс-слоты */
  --gxp-badge: 48px;          /* размер бейджа уровня */
  --gxp-track-h: 12px;        /* высота XP-полосы */

  display: block;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  font-family: var(--font-body);
  color: var(--text);
}

/* ---- Верхняя строка: уровень ↔ монеты ---- */
.gxp__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  flex-wrap: wrap;
}

/* Уровень */
.gxp__level { display: inline-flex; align-items: center; gap: var(--s-3); }
.gxp__level-badge {
  position: relative;
  flex: 0 0 auto;
  width: var(--gxp-badge);
  height: var(--gxp-badge);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--brand);
  background: var(--brand-soft);
  border: 1px solid color-mix(in srgb, var(--brand) 28%, transparent);
  border-radius: var(--r-md);
}
.gxp__level-num {
  position: absolute;
  inset: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--brand);
  /* число поверх контура звезды — лёгкая подложка для читаемости */
  text-shadow: 0 1px 2px var(--surface);
}
.gxp__level-meta { display: flex; flex-direction: column; gap: 2px; line-height: var(--lh-tight); }
.gxp__level-k {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.gxp__level-tier {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
}

/* Монеты */
.gxp__coins {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-pill);
}
.gxp__coins-ic { display: inline-flex; flex: 0 0 auto; color: var(--gold); }
.gxp__coins-val {
  font-family: var(--font-mono);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.gxp__coins-k { font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }

/* ---- XP-прогресс ---- */
.gxp__xp { margin-top: var(--s-5); }
.gxp__xp-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-2);
}
.gxp__xp-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.gxp__xp-v {
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-dim);
}
.gxp__xp-cur { color: var(--brand); font-weight: var(--fw-bold); }

.gxp__xp-track {
  position: relative;
  height: var(--gxp-track-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.gxp__xp-fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) / var(--max, 1) * 100%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
  transition: width var(--dur-slow) var(--ease-out);
}
/* движущийся блик — функциональный «живой» прогресс, обнуляется в reduced-motion (наследует --dur-*=0 → анимация замирает) */
.gxp__xp-fill::after {
  content: "";
  position: absolute;
  inset: 0 0 0 auto;
  width: 40%;
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--on-brand) 28%, transparent), transparent);
  transform: translateX(-30%);
  animation: gxp-shimmer 2.4s var(--ease) infinite;
}
@keyframes gxp-shimmer { to { transform: translateX(260%); } }
@media (prefers-reduced-motion: reduce) {
  .gxp__xp-fill::after { animation: none; display: none; }
}

.gxp__xp-left { margin: var(--s-2) 0 0; font-size: var(--t-tiny); font-variant-numeric: tabular-nums; }

/* ---- Drawer привилегий ---- */
.gxp__details { margin-top: var(--s-5); }
.gxp__details-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.gxp__details-btn:hover { color: var(--brand); }
.gxp__chevron { transition: transform var(--dur-base) var(--ease); }
.gxp__details-btn[aria-expanded="true"] .gxp__chevron { transform: rotate(180deg); }

.gxp__drawer {
  margin-top: var(--s-3);
  padding: var(--s-4);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.gxp__drawer[hidden] { display: none; }
.gxp__perks { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-2); }
.gxp__perk {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-small);
  color: var(--text-dim);
}
.gxp__perk-ic {
  flex: 0 0 auto;
  width: 18px; height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: var(--fw-bold);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
  line-height: 1;
}
.gxp__disclaimer { margin: var(--s-3) 0 0; font-size: var(--t-tiny); line-height: var(--lh-snug); }

/* ============================================================
 * Модификаторы
 * ========================================================== */

/* --bare — без карточной обёртки (встроить в хедер профиля / сайдбар) */
.gxp--bare { padding: 0; background: none; border: none; box-shadow: none; }

/* --compact — узкая полоса (header/widget): мельче бейдж, тоньше трек, без drawer */
.gxp--compact { --gxp-badge: 40px; --gxp-track-h: 8px; padding: var(--s-4); }
.gxp--compact .gxp__level-tier { font-size: var(--t-body); }
.gxp--compact .gxp__coins-val { font-size: var(--t-body); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .gxp { padding: var(--s-5); }
}
@media (max-width: 640px) {
  .gxp { padding: var(--s-4); }
  .gxp__top { gap: var(--s-3); }
  .gxp__coins { align-self: flex-start; }
}

/* ===== gauge-meter ===== */
/* ============================================================
 * gauge-meter · block.css
 * Скоуплено на .gauge-meter. Только токены (10-tokens/).
 * Назначение: dataviz-метр (rating/safety/criteria) — премиум-замена 5 звёздам.
 *   Полукруговый gauge (SVG, длина дуги = --val/--max) + линейные меры подкритериев.
 * Эталон структуры/нейминга/drawer/фикс-слотов: casino-item-card; паттерн меры
 *   (ширина = балл, градиент --rating-from→--rating-to, tabular-nums): html-rating-guide.
 * Один акцент: цвет — функциональный градиент шкалы (danger→success), не декор.
 * Источник значения — inline --val (0..--max); число продублировано текстом. Адаптив: 980 / 640.
 * ========================================================== */

.gauge-meter {
  /* фикс-слоты */
  --gm-score-col: 92px;       /* слот агрегат-балла в шапке */
  --gm-val-col: 64px;         /* числовая колонка линейных мер */
  --gm-bar-h: 8px;            /* высота линейной меры */
  --gm-dial-w: min(280px, 100%);
  /* геометрия дуги (соответствует viewBox 200×116, r=84) */
  --gm-arc-len: 263.9;        /* π·84 ≈ длина полудуги в координатах SVG */

  display: block;
  position: relative;
  padding: var(--s-6);
  /* Премиум-карта: surface + тонкий верхний градиент-оверлей + внутренний
     радиальный glow акцентом в углу (адаптируется под скин/бренд через --brand). */
  background-color: var(--surface);
  background-image:
    radial-gradient(78% 120% at 92% -12%, color-mix(in srgb, var(--brand) 11%, transparent), transparent 56%),
    var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
  font-family: var(--font-body);
  color: var(--text);
  transition: transform var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out),
              border-color var(--dur-base) var(--ease-out);
}
/* Hover: мягкий lift + акцент-glow + бренд-бордер (тейстфул, один акцент). */
.gauge-meter:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-card), var(--shadow-glow);
  border-color: color-mix(in srgb, var(--brand) 38%, var(--rule));
}

/* ---- Шапка: заголовок ↔ фикс-слот агрегат-балла ---- */
.gauge-meter__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--gm-score-col);
  align-items: start;
  gap: var(--s-4);
}
.gauge-meter__eyebrow { margin: 0 0 var(--s-1); }
.gauge-meter__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.gauge-meter__score {
  justify-self: end;
  display: inline-flex;
  align-items: baseline;
  gap: 1px;
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.gauge-meter__score-num {
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: 1;
}
.gauge-meter__score-scale {
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-faint);
}

/* ---- Полукруговый gauge ---- */
.gauge-meter__dial {
  position: relative;
  width: var(--gm-dial-w);
  margin: var(--s-5) auto var(--s-2);
}
.gauge-meter__svg { width: 100%; height: auto; display: block; overflow: visible; }
.gauge-meter__track,
.gauge-meter__arc {
  fill: none;
  stroke-width: 14;
  stroke-linecap: round;
}
.gauge-meter__track { stroke: var(--bg-3); }
.gauge-meter__arc {
  stroke: url(#gm-grad-1);
  stroke-dasharray: var(--gm-arc-len);
  /* открытая (непокрытая) часть = (1 − val/max) от полной дуги */
  stroke-dashoffset: calc(var(--gm-arc-len) * (1 - var(--val, 0) / var(--max, 10)));
  /* свечение шкале функциональным концом градиента (dataviz-акцент) */
  filter: drop-shadow(0 0 7px color-mix(in srgb, var(--rating-to) 45%, transparent));
  transition: stroke-dashoffset var(--dur-slow) var(--ease-out);
}

/* Стрелка: поворот от −90° (0) до +90° (max). Угол = (val/max)·180 − 90. */
.gauge-meter__needle {
  position: absolute;
  left: 50%; bottom: 13.8%;            /* центр оси совпадает с hub */
  width: 2px; height: 38%;
  background: var(--text);
  border-radius: var(--r-pill);
  transform-origin: bottom center;
  transform: translateX(-50%) rotate(calc(var(--val, 0) / var(--max, 10) * 180deg - 90deg));
  transition: transform var(--dur-slow) var(--ease-out);
}
.gauge-meter__hub {
  position: absolute;
  left: 50%; bottom: 13.8%;
  width: 14px; height: 14px;
  transform: translate(-50%, 50%);
  background: var(--surface);
  border: 2px solid var(--text);
  border-radius: var(--r-pill);
}

/* подписи шкалы под дугой */
.gauge-meter__scalebar {
  list-style: none;
  margin: 0 auto var(--s-5);
  padding: 0;
  width: var(--gm-dial-w);
  display: flex;
  justify-content: space-between;
  font-size: var(--t-tiny);
  font-variant-numeric: tabular-nums;
  color: var(--text-faint);
}
.gauge-meter__tick { line-height: 1; }
.gauge-meter__tick:nth-child(2) { transform: translateY(-2px); }

/* ---- Линейные меры подкритериев ---- */
.gauge-meter__list {
  list-style: none;
  margin: 0;
  padding: var(--s-5) 0 0;
  border-top: var(--hairline);
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.gauge-meter__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--gm-val-col);
  grid-template-areas:
    "crit val"
    "bar  bar";
  align-items: baseline;
  column-gap: var(--s-4);
  row-gap: var(--s-2);
}
.gauge-meter__crit {
  grid-area: crit;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
}
.gauge-meter__val {
  grid-area: val;
  justify-self: end;
  font-family: var(--font-mono);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.gauge-meter__val small { color: var(--text-faint); font-weight: var(--fw-medium); }
.gauge-meter__bar {
  grid-area: bar;
  height: var(--gm-bar-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.gauge-meter__fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) / var(--max, 10) * 100%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  /* мягкое свечение функциональным концом шкалы — общая грамматика с дугой */
  box-shadow: 0 0 10px -2px color-mix(in srgb, var(--rating-to) 55%, transparent);
  transition: width var(--dur-slow) var(--ease-out), filter var(--dur-quick) var(--ease);
}
.gauge-meter__row:hover .gauge-meter__fill,
.gauge-meter__row:focus-within .gauge-meter__fill { filter: saturate(1.14) brightness(1.04); }

/* ---- Drawer пояснения шкалы ---- */
.gauge-meter__details { margin-top: var(--s-5); }
.gauge-meter__details-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.gauge-meter__details-btn:hover { color: var(--brand); }
.gauge-meter__chevron { transition: transform var(--dur-base) var(--ease); }
.gauge-meter__details-btn[aria-expanded="true"] .gauge-meter__chevron { transform: rotate(180deg); }
.gauge-meter__drawer {
  margin-top: var(--s-3);
  padding: var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
  /* frosted-стекло: translucent + backdrop blur (премиум-панель пояснения) */
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
}
.gauge-meter__drawer[hidden] { display: none; }

/* ============================================================
 * Модификаторы
 * ========================================================== */

/* --bare — без карточной обёртки (встроить в чужую поверхность) */
.gauge-meter--bare {
  padding: 0;
  background: none;
  border: none;
  box-shadow: none;
}
.gauge-meter--bare:hover {
  transform: none;
  box-shadow: none;
  border-color: transparent;
}

/* --compact — для сайдбара: мельче дисплей, дуга уже */
.gauge-meter--compact { --gm-dial-w: 220px; --gm-bar-h: 6px; padding: var(--s-5); }
.gauge-meter--compact .gauge-meter__title { font-size: var(--t-h4); }
.gauge-meter--compact .gauge-meter__list { gap: var(--s-3); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .gauge-meter { padding: var(--s-5); }
}
@media (max-width: 640px) {
  .gauge-meter { padding: var(--s-4); }
  .gauge-meter__head { grid-template-columns: 1fr auto; }
  .gauge-meter__row { column-gap: var(--s-3); }
}

/* ============ Reduced motion: без lift, glow/бордер по hover остаются ============ */
@media (prefers-reduced-motion: reduce) {
  .gauge-meter { transition: box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); }
  .gauge-meter:hover { transform: none; }
}

/* ===== get-listed-submission-cta ===== */
/* ============================================================
 * get-listed-submission-cta · block.css
 * Скоуплено на .get-listed-submission-cta. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка),
 * ориентир contact-cta-block / cta-primary (банер) + country-grid (<details>-drawer).
 * Один акцент --brand (CTA + чек-иконки + номера шагов); decor-фигура — нейтраль.
 * ОДНА primary CTA + текст-ссылка (не вторая акцент-кнопка). Числа — tabular-nums.
 * Единые padding/radius/shadow. Адаптив: 980 / 640. Reduced-motion гасит transition.
 * ========================================================== */

.get-listed-submission-cta { display: block; }

/* ============================================================
 * Панель-банер
 * ========================================================== */
.gl-panel {
  position: relative;
  overflow: hidden;                 /* clip decor-фигуры */
  padding: var(--s-7) var(--s-7);
  /* .surface уже даёт surface/hairline/r-lg/shadow-card */
}

/* осознанная декор-фигура — концентрический «портал входа», нейтральный тон */
.gl-panel__decor {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-end: calc(-1 * var(--s-6));
  transform: translateY(-50%);
  width: clamp(180px, 26vw, 280px);
  height: auto;
  color: var(--rule);
  pointer-events: none;
}

.gl-panel__body { position: relative; max-width: 62ch; }
.gl-panel__eyebrow { margin: 0 0 var(--s-2); color: var(--brand); }
.gl-panel__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.gl-panel__lede { margin: var(--s-3) 0 0; }
.gl-panel__num { font-variant-numeric: tabular-nums; font-weight: var(--fw-semi); }

/* ---- Buy-in фичи: чек-иконка (акцент) + текст ---- */
.gl-panel__feats {
  list-style: none;
  margin: var(--s-5) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}
.gl-panel__feat {
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
  font-size: var(--t-body);
  color: var(--text-dim);
}
.gl-panel__feat-ic {
  flex: 0 0 auto;
  margin-top: 2px;
  padding: 2px;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}

/* ---- Действия: ОДНА primary + текст-ссылка ---- */
.gl-panel__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-4);
  margin-top: var(--s-6);
}
.gl-panel__cta-ic { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease-out); }
.gl-panel__cta:hover .gl-panel__cta-ic,
.gl-panel__cta:focus-visible .gl-panel__cta-ic { transform: translateX(3px); }
.gl-panel__link {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-color: var(--rule-strong);
  transition: color var(--dur-quick) var(--ease);
}
.gl-panel__link:hover { color: var(--brand); }

.gl-panel__note {
  margin: var(--s-5) 0 0;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}

/* ============================================================
 * Drawer-процесс (нативный <details>)
 * ========================================================== */
.gl-process {
  margin-top: var(--s-4);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
  /* отступ под scroll-якорь #gl-process из текст-ссылки */
  scroll-margin-top: calc(var(--header-h) + var(--s-4));
}
.gl-process__sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.gl-process__sum::-webkit-details-marker { display: none; }
.gl-process__chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.gl-process[open] .gl-process__chev { transform: rotate(180deg); }
.gl-process__body { padding: 0 var(--s-4) var(--s-4); }

.gl-process__steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-4);
}
.gl-process__step {
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
  padding: var(--s-4);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.gl-process__step-n {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  font-family: var(--font-display);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
}
.gl-process__step-t {
  margin: 0 0 2px;
  font-family: var(--font-body);
  font-size: var(--t-body);
  font-weight: var(--fw-semi);
  color: var(--text);
}
.gl-process__step-d { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .gl-panel { padding: var(--s-6); }
  .gl-panel__decor { opacity: .6; }
}
@media (max-width: 640px) {
  .gl-panel { padding: var(--s-5); }
  .gl-panel__title { font-size: var(--t-h3); }
  .gl-panel__decor { display: none; }      /* убираем decor — он отвлекает на узком */
  .gl-panel__actions { flex-direction: column; align-items: stretch; }
  .gl-panel__cta { width: 100%; }
  .gl-panel__link { text-align: center; }
  .gl-process__steps { grid-template-columns: 1fr; gap: var(--s-3); }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .gl-panel__cta-ic,
  .gl-panel__link,
  .gl-process__chev { transition: none; }
}

/* ===== glossary-item ===== */
/* ============================================================
 * glossary-item · block.css
 * Скоуплено на .glossary-item. Только токены (10-tokens/).
 * Конвенция разметки/JS: ★research / premium-планка (готовой разметки нет —
 * спроектировано по premium-сигналам и эталону casino-item-card / prose / fact-box).
 * Глоссарий = <dl>; строка = термин(<dt>) + дефиниция(<dd>) + якорь-permalink.
 * Один акцент — --brand (якорь, маркер, инлайн-ссылки). --info/--success —
 * ТОЛЬКО по смыслу (категория / «сверено»), не как декор.
 * Адаптив: 980 / 640.
 * ========================================================== */

.glossary-item {
  /* фикс-слот якоря слева — единый ритм всех строк (term-rail) */
  --gi-anchor: 28px;

  font-family: var(--font-body);
  color: var(--text-dim);
}

/* ---- Заголовок группы ---- */
.glossary-item__head {
  margin: 0 0 var(--s-5);
  padding-bottom: var(--s-3);
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
  border-bottom: var(--hairline);
}

/* ---- Список терминов ---- */
.glossary-item__list {
  margin: 0;
  display: flex;
  flex-direction: column;
}

/* Строка: грид [термин | дефиниция]; волосок-разделитель между строками,
   без рамок по краям (паттерн fact-box). id-цель якоря не уезжает под
   фикс-хедер (паттерн prose). */
.glossary-item__row {
  display: grid;
  grid-template-columns: minmax(0, 16rem) minmax(0, 1fr);
  gap: var(--s-3) var(--s-6);
  padding: var(--s-5) 0;
  border-top: var(--hairline);
  scroll-margin-top: calc(var(--header-h) + var(--s-4));
}
.glossary-item__row:first-of-type { border-top: 0; }

/* Подсветка строки при переходе по deep-link (:target) — мягкая, один акцент */
.glossary-item__row:target {
  background: var(--highlight-pale);
  border-radius: var(--r-md);
  padding-inline: var(--s-4);
  margin-inline: calc(-1 * var(--s-4));
}

/* ---- Термин (dt): якорь + имя + abbr + пилюля ---- */
.glossary-item__term {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s-1) var(--s-2);
  min-width: 0;
}

/* ---- Якорь-permalink (фикс-слот, проявляется на hover/focus строки) ---- */
.glossary-item__anchor {
  flex: 0 0 auto;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--gi-anchor);
  height: var(--gi-anchor);
  margin-left: calc(-1 * (var(--gi-anchor) + var(--s-2)));
  margin-right: var(--s-2);
  color: var(--text-faint);
  background: transparent;
  border-radius: var(--r-md);
  text-decoration: none;
  opacity: 0;
  transition: opacity var(--dur-quick) var(--ease),
              color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease);
}
.glossary-item__row:hover .glossary-item__anchor,
.glossary-item__row:target .glossary-item__anchor,
.glossary-item__anchor:focus-visible { opacity: 1; }
.glossary-item__anchor:hover {
  color: var(--brand);
  background: var(--brand-soft);
}
.glossary-item__anchor-ic { display: inline-flex; }

/* Иконка-свап: ссылка → галочка (после копирования, класс на самом якоре) */
.glossary-item__ic-done { display: none; }
.glossary-item__anchor.is-copied { opacity: 1; color: var(--success); }
.glossary-item__anchor.is-copied .glossary-item__ic-link { display: none; }
.glossary-item__anchor.is-copied .glossary-item__ic-done { display: inline-flex; }

/* ---- Имя термина ---- */
.glossary-item__name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Англоязычный эквивалент / расшифровка аббревиатуры (паттерн prose abbr) */
.glossary-item__abbr {
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  text-decoration: underline dotted;
  text-decoration-color: var(--rule-strong);
  text-underline-offset: 2px;
  cursor: help;
}

/* ---- Пилюли: категория (--info, по смыслу) / «сверено» (--success, по смыслу) ---- */
.glossary-item__pill {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  padding: 2px var(--s-2);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.glossary-item__pill--cat {
  color: var(--info);
  background: var(--info-soft);
}
.glossary-item__pill--verified {
  color: var(--success);
  background: var(--success-soft);
}
.glossary-item__pill-ic { display: inline-flex; }

/* ---- Дефиниция (dd) ---- */
.glossary-item__def {
  position: relative;
  margin: 0;
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
  /* числа/проценты/суммы в потоке дефиниции — табличные */
  font-variant-numeric: tabular-nums;
}

/* Числовой фрагмент внутри дефиниции */
.glossary-item__num {
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  white-space: nowrap;
}

/* Перекрёстная ссылка на другой термин (инлайн, один акцент) */
.glossary-item__xref {
  color: var(--brand);
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--brand) 40%, transparent);
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  transition: color var(--dur-quick) var(--ease),
              text-decoration-color var(--dur-quick) var(--ease);
}
.glossary-item__xref:hover {
  color: var(--brand-2);
  text-decoration-color: var(--brand);
}

/* ---- Toast «Ссылка скопирована» (aria-live; виден при .is-copied на якоре) ---- */
.glossary-item__toast {
  position: absolute;
  inset-block-start: calc(-1 * var(--s-2));
  inset-inline-start: 0;
  transform: translateY(-100%);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  white-space: nowrap;
  color: var(--on-brand);
  background: var(--text);
  border-radius: var(--r-soft);
  box-shadow: var(--shadow-card);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease);
}
.glossary-item__row:has(.glossary-item__anchor.is-copied) .glossary-item__toast { opacity: 1; }

/* ---- Модификатор: одиночная врезка-термин (в потоке статьи) ---- */
.glossary-item--inline {
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-left: 3px solid var(--brand);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
}
.glossary-item--inline .glossary-item__row {
  padding: 0;
  border-top: 0;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .glossary-item__row {
    grid-template-columns: minmax(0, 12rem) minmax(0, 1fr);
    gap: var(--s-2) var(--s-5);
    padding-block: var(--s-4);
  }
}
@media (max-width: 640px) {
  /* узкий экран: дефиниция под термином одним столбцом */
  .glossary-item__row {
    grid-template-columns: 1fr;
    gap: var(--s-2);
  }
  .glossary-item__def { font-size: var(--t-small); }
  /* нет hover — якорь всегда виден; touch-target ≥ 44px */
  .glossary-item__anchor {
    opacity: 1;
    width: var(--tap-min);
    height: var(--tap-min);
    margin-left: calc(-1 * var(--s-2));
    margin-right: var(--s-1);
  }
  /* :target подсветка без отрицательных полей на мобайле */
  .glossary-item__row:target { margin-inline: 0; padding-inline: var(--s-3); }
}

/* ============ Reduced motion: без transition на проявлении якоря/toast ============ */
@media (prefers-reduced-motion: reduce) {
  .glossary-item__anchor,
  .glossary-item__xref,
  .glossary-item__toast { transition: none; }
}

/* ===== head-to-head-rounds ===== */
/* ============================================================
 * head-to-head-rounds · block.css
 * Скоуплено на .h2h. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах.
 * Эталон структуры/нейминга: casino-item-card. Конвенция: ★research / premium.
 * Один акцент --brand (хром). Стороны A/B — НЕ цветом, а позицией/меткой/глифом ✓.
 * --success/--danger НЕ используются (нет «хороший/плохой» оператор — есть «взял раунд»).
 * Адаптив: 980 / 640. Числа — tabular-nums.
 * ========================================================== */

.h2h {
  /* фикс-слоты: лого на табло, размер глифа вердикта, ширина центральной колонки */
  --h2h-logo: 64px;
  --h2h-glyph: 24px;
  --h2h-verdict-col: minmax(132px, 0.7fr);

  display: block;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- Шапка: eyebrow + заголовок + лид ---- */
.h2h__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.h2h__eyebrow {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--brand);
}
.h2h__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.h2h__lede {
  margin: 0;
  max-width: var(--container-prose);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ============================================================
 * Табло сторон — три фикс-слота: A · VS · B
 * ========================================================== */
.h2h__board {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: stretch;
  gap: var(--s-3);
  margin-bottom: var(--s-5);
}

.h2h__side {
  display: grid;
  grid-template-columns: var(--h2h-logo) minmax(0, 1fr);
  grid-template-areas:
    "corner corner"
    "logo   name"
    "logo   score";
  align-items: center;
  column-gap: var(--s-3);
  row-gap: var(--s-1);
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
/* стороны зеркальны: B выровнена к центру (лого ближе к VS) — различие без цвета */
.h2h__side--b {
  grid-template-columns: minmax(0, 1fr) var(--h2h-logo);
  grid-template-areas:
    "corner corner"
    "name   logo"
    "score  logo";
  text-align: right;
}

.h2h__corner {
  grid-area: corner;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.h2h__logo {
  grid-area: logo;
  width: var(--h2h-logo);
  height: var(--h2h-logo);
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--surface);
  border: var(--hairline);
}
.h2h__name {
  grid-area: name;
  align-self: end;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.h2h__board-score {
  grid-area: score;
  align-self: start;
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
  font-variant-numeric: tabular-nums;
}
.h2h__side--b .h2h__board-score { justify-content: flex-end; }
.h2h__board-score b {
  font-family: var(--font-mono);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--brand);
}
.h2h__board-score small {
  font-size: var(--t-tiny);
  color: var(--text-mute);
}

/* VS-разделитель в центре */
.h2h__versus {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s-1);
  padding: 0 var(--s-2);
  color: var(--text-faint);
}
.h2h__versus-ic { color: var(--rule-strong); }
.h2h__versus-txt {
  font-family: var(--font-display);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  letter-spacing: .08em;
  color: var(--text-mute);
}

/* ============================================================
 * Раунды — список; строка раунда = param-header + 3 колонки
 * grid-areas: param сверху на всю ширину, ниже  A | verdict | B
 * ========================================================== */
.h2h__rounds {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: h2h-round;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}

.h2h__round {
  counter-increment: h2h-round;
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--h2h-verdict-col) minmax(0, 1fr);
  grid-template-areas:
    "param   param   param"
    "cell-a  verdict cell-b";
  gap: var(--s-3);
  align-items: stretch;
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}

/* ---- Параметр раунда (заголовок строки), номер — CSS-counter ---- */
.h2h__param {
  grid-area: param;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin: 0;
  padding-bottom: var(--s-3);
  border-bottom: var(--hairline);
}
.h2h__param::before {
  content: "Раунд " counter(h2h-round);
  display: inline-flex;
  align-items: center;
  padding: 1px var(--s-2);
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  letter-spacing: .04em;
  color: var(--text-mute);
  background: var(--surface-3);
  border-radius: var(--r-pill);
}
.h2h__param-name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.h2h__param-hint {
  font-size: var(--t-tiny);
  color: var(--text-faint);
}

/* ---- Ячейка стороны (A / B) — фикс-структура ---- */
.h2h__cell {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: var(--s-3);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  /* верхняя кромка — нейтральная по умолчанию; победитель подсвечивается ниже */
  border-top: 2px solid var(--rule);
}
.h2h__cell--a { grid-area: cell-a; }
.h2h__cell--b { grid-area: cell-b; text-align: right; }

.h2h__cell-tag {
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.h2h__val {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.h2h__num { font-variant-numeric: tabular-nums; }
.h2h__cell-note {
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

/* ---- Вердикт раунда (центральная колонка) ---- */
.h2h__verdict {
  grid-area: verdict;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  text-align: center;
}
.h2h__verdict-glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--h2h-glyph);
  height: var(--h2h-glyph);
  color: var(--text-faint);
  background: var(--surface-3);
  border-radius: var(--r-pill);
  transition: color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
}
.h2h__verdict-txt {
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.h2h__verdict-txt b {
  font-family: var(--font-mono);
  font-weight: var(--fw-bold);
  color: var(--text);
}

/* ============================================================
 * Победитель раунда — выделение по data-win (НЕ только цвет:
 * глиф ✓ + текст «Раунд за …» + кромка/тень на ячейке-победителе)
 * ========================================================== */
.h2h__round[data-win="a"] .h2h__cell--a,
.h2h__round[data-win="b"] .h2h__cell--b {
  border-top-color: var(--brand);
  box-shadow: var(--shadow-card);
}
.h2h__round[data-win="a"] .h2h__cell--a .h2h__val,
.h2h__round[data-win="b"] .h2h__cell--b .h2h__val {
  color: var(--brand);
}
/* проигравшая в раунде сторона — приглушена (читается без цвета: ниже контраст) */
.h2h__round[data-win="a"] .h2h__cell--b,
.h2h__round[data-win="b"] .h2h__cell--a {
  background: var(--bg-2);
  border-style: dashed;
}
.h2h__round[data-win="a"] .h2h__cell--b .h2h__val,
.h2h__round[data-win="b"] .h2h__cell--a .h2h__val {
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
/* активный глиф вердикта (✓) — для A/B победы */
.h2h__round[data-win="a"] .h2h__verdict-glyph,
.h2h__round[data-win="b"] .h2h__verdict-glyph {
  color: var(--on-brand);
  background: var(--brand);
}
/* ничья — нейтральный глиф «–», обе стороны равны (по умолчанию) */
.h2h__round[data-win="draw"] .h2h__verdict-glyph {
  color: var(--text-mute);
  background: var(--surface-3);
}

/* ============================================================
 * Tally — финальный счёт + чемпион + ОДНА CTA
 * ========================================================== */
.h2h__tally {
  margin-top: var(--s-5);
  padding-top: var(--s-5);
  border-top: 2px solid var(--rule-strong);
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}

.h2h__tally-line {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s-3);
  margin: 0;
}
.h2h__tally-k {
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.h2h__tally-score {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-2);
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}
.h2h__tally-num {
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  color: var(--brand);
  line-height: 1;
}
.h2h__tally-sep { font-size: var(--t-h3); color: var(--rule-strong); }
.h2h__tally-meta {
  font-size: var(--t-tiny);
  color: var(--text-mute);
}

.h2h__winner {
  margin: 0;
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.h2h__winner-name {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  color: var(--text);
}

.h2h__tally-cta { display: flex; }
.h2h__tally-cta .btn { flex: 0 0 auto; }

/* ============================================================
 * Drawer методики (terms) — держит блок чистым
 * ========================================================== */
.h2h__method {
  margin-top: var(--s-4);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.h2h__method-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
}
.h2h__method-btn:hover { color: var(--brand); }
.h2h__method-chev {
  flex: 0 0 auto;
  transition: transform var(--dur-base) var(--ease-out);
}
.h2h__method-btn[aria-expanded="true"] .h2h__method-chev { transform: rotate(180deg); }

.h2h__method-body {
  margin-top: var(--s-2);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.h2h__method-body[hidden] { display: none; }
.h2h__method-body p { margin: 0 0 var(--s-2); }
.h2h__method-body p:last-child { margin-bottom: 0; }
.h2h__age {
  display: inline-flex;
  align-items: center;
  padding: 0 var(--s-1);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background: var(--text-mute);
  border-radius: var(--r-soft);
}

/* ============================================================
 * Вариант --compact (сайдбар/врезка): меньше пэддингов,
 * заметки опущены, центральная колонка уже.
 * ========================================================== */
.h2h--compact { padding: var(--s-5); --h2h-logo: 48px; --h2h-verdict-col: minmax(104px, 0.6fr); }
.h2h--compact .h2h__head { margin-bottom: var(--s-4); }
.h2h--compact .h2h__board { margin-bottom: var(--s-4); }
.h2h--compact .h2h__round { padding: var(--s-3); gap: var(--s-2); }
.h2h--compact .h2h__param { padding-bottom: var(--s-2); }
.h2h--compact .h2h__cell-note { display: none; }
.h2h--compact .h2h__val { font-size: var(--t-body); }
.h2h--compact .h2h__tally { margin-top: var(--s-4); padding-top: var(--s-4); }

/* ============ Адаптив 980 ============ */
@media (max-width: 980px) {
  .h2h { padding: var(--s-5); }
  .h2h { --h2h-verdict-col: minmax(108px, auto); }
}

/* ============ Адаптив 640: вердикт уходит из центра в строку между ячейками ============ */
@media (max-width: 640px) {
  .h2h { padding: var(--s-4); }

  .h2h__board {
    grid-template-columns: 1fr auto 1fr;
    gap: var(--s-2);
  }
  .h2h__side { padding: var(--s-3); }
  /* на узком экране лого над текстом, чтобы не сплющивать */
  .h2h__side,
  .h2h__side--b {
    grid-template-columns: 1fr;
    grid-template-areas:
      "corner"
      "logo"
      "name"
      "score";
    justify-items: center;
    text-align: center;
  }
  .h2h__side--b .h2h__board-score { justify-content: center; }

  /* раунд: param → A → вердикт → B (один столбец) */
  .h2h__round {
    grid-template-columns: 1fr;
    grid-template-areas:
      "param"
      "cell-a"
      "verdict"
      "cell-b";
    gap: var(--s-2);
  }
  .h2h__cell--b { text-align: left; }

  /* вердикт становится горизонтальной плашкой-разделителем */
  .h2h__verdict {
    flex-direction: row;
    justify-content: center;
    gap: var(--s-2);
    padding: var(--s-1) 0;
  }

  .h2h__tally-num { font-size: var(--t-h3); }
}

/* ============ Reduced motion: гасим доп. transition (база уже обнуляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .h2h__method-chev,
  .h2h__verdict-glyph { transition: none; }
}

/* ===== header-nav ===== */
/* ============================================================
 * header-nav · block.css
 * Скоуплено на .header-nav. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (фикс-шапка, мобайл двухуровневый + бургер).
 * Адаптив: 980 / 640. position: sticky + --header-h.
 * ========================================================== */

.header-nav {
  position: sticky;
  top: 0;
  z-index: var(--z-header);
  background: color-mix(in srgb, var(--surface) 92%, transparent);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border-bottom: var(--hairline);
}

/* ---- Бар: лого | nav | right ---- */
.header-nav__bar {
  min-height: var(--header-h);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--s-5);
}

/* ---- 1 · Лого (фикс-слот 300×100, масштаб через высоту) ---- */
.header-nav__logo {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
}
.header-nav__logo-img {
  display: block;
  width: auto;
  height: var(--s-7);            /* 48px — пропорция 300×100 сохраняется */
  max-width: 100%;
  object-fit: contain;
}

/* ---- 2 · Навигация (центр) ---- */
.header-nav__nav { justify-self: center; min-width: 0; }
.header-nav__menu {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: var(--s-2);
}
.header-nav__link {
  display: inline-flex;
  align-items: center;
  min-height: var(--tap-min);
  padding: 0 var(--s-3);
  font-family: var(--font-body);
  font-weight: var(--fw-medium);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  text-decoration: none;
  border-radius: var(--r-md);
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.header-nav__link:hover { color: var(--text); background: var(--surface-2); }
.header-nav__link--active { color: var(--brand); }
.header-nav__link--active:hover { color: var(--brand); background: var(--brand-soft); }

/* ---- 3 · Right: CTA + lang + бургер ---- */
.header-nav__right {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: var(--s-3);
}
.header-nav__cta { flex: 0 0 auto; }

/* Language switcher */
.header-nav__lang { position: relative; flex: 0 0 auto; }
.header-nav__lang-current {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding: 0 var(--s-3);
  font-family: var(--font-body);
  font-weight: var(--fw-semi);
  font-size: var(--t-small);
  color: var(--text);
  background: transparent;
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: border-color var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.header-nav__lang-current:hover { border-color: var(--rule-strong); }
.header-nav__lang-code { font-variant-numeric: tabular-nums; letter-spacing: .04em; }
.header-nav__lang-caret { transition: transform var(--dur-quick) var(--ease); }
.header-nav__lang-current[aria-expanded="true"] .header-nav__lang-caret { transform: rotate(180deg); }

.header-nav__lang-menu {
  position: absolute;
  inset-inline-end: 0;
  top: calc(100% + var(--s-2));
  z-index: var(--z-popover);
  min-width: 160px;
  list-style: none;
  margin: 0;
  padding: var(--s-2);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
}
.header-nav__lang-menu[hidden] { display: none; }
.header-nav__lang-current[aria-expanded="false"] + .header-nav__lang-menu { display: none; }
.header-nav__lang-opt {
  display: flex;
  width: 100%;
  align-items: center;
  min-height: var(--tap-min);
  padding: 0 var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-small);
  color: var(--text-dim);
  text-align: start;
  background: transparent;
  border: 0;
  border-radius: var(--r-soft);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.header-nav__lang-opt:hover { color: var(--text); background: var(--surface-2); }
.header-nav__lang-opt[aria-checked="true"] { color: var(--brand); font-weight: var(--fw-semi); }

/* ---- Бургер (по умолчанию скрыт, всплывает на мобайле) ---- */
.header-nav__burger {
  display: none;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  flex: 0 0 auto;
  background: transparent;
  border: 1px solid var(--rule);
  border-radius: var(--r-md);
  color: var(--text);
  cursor: pointer;
  transition: border-color var(--dur-quick) var(--ease);
}
.header-nav__burger:hover { border-color: var(--rule-strong); }
.header-nav__burger-box {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 20px;
  height: 16px;
}
.header-nav__burger-line {
  display: block;
  height: 2px;
  width: 100%;
  background: currentColor;
  border-radius: var(--r-pill);
  transition: transform var(--dur-base) var(--ease), opacity var(--dur-quick) var(--ease);
}
/* Бургер → крестик при открытом меню */
.header-nav__burger[aria-expanded="true"] .header-nav__burger-line:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.header-nav__burger[aria-expanded="true"] .header-nav__burger-line:nth-child(2) { opacity: 0; }
.header-nav__burger[aria-expanded="true"] .header-nav__burger-line:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ============ Адаптив: планшет (≤980) ============ */
@media (max-width: 980px) {
  .header-nav__bar {
    grid-template-columns: auto 1fr;     /* лого | right; nav уезжает в выпадающую панель */
    gap: var(--s-4);
  }
  .header-nav__burger { display: inline-flex; }

  /* nav становится раскрываемой панелью под баром (уровень 2) */
  .header-nav__nav {
    grid-column: 1 / -1;
    justify-self: stretch;
    display: none;
    margin: 0 calc(-1 * var(--gutter));
    padding: var(--s-3) var(--gutter) var(--s-5);
    border-top: var(--hairline);
  }
  .header-nav__nav.is-open { display: block; }
  .header-nav__menu { flex-direction: column; align-items: stretch; gap: var(--s-1); }
  .header-nav__link {
    width: 100%;
    padding: var(--s-2) var(--s-3);
    font-size: var(--t-body);
    border-radius: var(--r-md);
  }
}

/* ============ Адаптив: мобайл (≤640) ============ */
@media (max-width: 640px) {
  .header-nav__bar { gap: var(--s-3); }
  .header-nav__logo-img { height: var(--s-6); }   /* 40px */

  /* Уровень 2: CTA на всю ширину под баром. Ряд 1: lang | бургер (лого в своей колонке) */
  .header-nav__right {
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: var(--s-2);
  }
  .header-nav__cta {
    order: 3;
    flex: 1 0 100%;       /* перенос на новую строку = второй уровень */
    width: 100%;
    margin-top: var(--s-2);
  }
  .header-nav__lang-current { padding: 0 var(--s-2); }
}

/* ===== hero-brand-profile ===== */
/* ============================================================
 * hero-brand-profile · block.css
 * Скоуплено на .casino-hero. Только токены (10-tokens/).
 * Конвенция разметки/JS: portfolio (.casino-hero) + html-rating-guide (T&C-drawer).
 * Адаптив: 980 / 640. Один акцент = --brand; --success/--danger только по смыслу.
 * Визуал: premium-2025 — ambient inner-glow, surface-grad, glass-aside,
 *         glow на score-кольце и primary-CTA. Свечение через токены (все скины).
 * ========================================================== */

.casino-hero {
  --ch-media: 300px;          /* фикс-слот media слева */
  --ch-ring: 96px;            /* диаметр score-кольца */
  --ch-ring-track: 8px;       /* толщина кольца */
  --ch-tone: var(--brand);    /* тон verdict/score; переопределяется модификаторами */

  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: var(--ch-media) minmax(0, 1fr) minmax(240px, 0.62fr);
  grid-template-areas: "media head aside";
  gap: var(--s-7);
  align-items: start;
  padding: var(--s-7);
  /* surface + внутренний brand-glow в правом-верхнем углу + тонкий верхний оверлей */
  background-color: var(--surface);
  background-image:
    radial-gradient(78% 120% at 96% -12%, color-mix(in srgb, var(--brand) 13%, transparent), transparent 56%),
    var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
}

/* ---- 1 · Media: лого/hero-img + бейдж ---- */
.ch-media {
  grid-area: media;
  position: relative;
  margin: 0;
  aspect-ratio: 3 / 2;
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--bg-2);
  border: var(--hairline);
  box-shadow: var(--shadow-card);
}
.ch-media__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Fallback-инициал, когда нет hero-img */
.ch-media--mono {
  display: grid;
  place-items: center;
  background-color: var(--bg-3);
  background-image:
    radial-gradient(120% 120% at 18% 12%, color-mix(in srgb, var(--brand) 14%, transparent), transparent 60%),
    linear-gradient(135deg, var(--bg-3), var(--surface-2));
}
.ch-media__fallback {
  font-family: var(--font-display);
  font-size: var(--t-display);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--text-faint);
}

.ch-media__tag {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-start: var(--s-3);
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: var(--s-1) var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  color: var(--on-brand);
  background-image: var(--grad-brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card), var(--shadow-glow);
}
.ch-media__tag-ic { display: inline-flex; }

/* ---- 2 · Заголовочный блок ---- */
.ch-head {
  grid-area: head;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  min-width: 0;
}
.ch-eyebrow { margin: 0; }

.ch-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-display);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
  text-wrap: balance;
}

/* Verdict-строка: тон задаётся --ch-tone (один акцент / семантика) */
.ch-verdict {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
  margin: var(--s-1) 0 0;
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-h4);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  background-image: linear-gradient(135deg, color-mix(in srgb, var(--ch-tone) 12%, transparent), color-mix(in srgb, var(--ch-tone) 5%, transparent));
  border-inline-start: 3px solid var(--ch-tone);
  border-radius: var(--r-md);
}
.ch-verdict__ic { flex: 0 0 auto; margin-top: 2px; color: var(--ch-tone); }
.ch-verdict__text { min-width: 0; }
.ch-verdict--positive { --ch-tone: var(--success); }
.ch-verdict--negative { --ch-tone: var(--danger); }

/* Meta-strip: фикс-слоты ключ/значение */
.ch-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--s-3);
  margin: var(--s-2) 0 0;
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.ch-meta__item { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ch-meta__k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.ch-meta__v {
  font-size: var(--t-body);
  font-weight: var(--fw-semi);
  color: var(--text);
}
.ch-meta__v--num { font-variant-numeric: tabular-nums; }

/* ---- 3 · Aside: score-кольцо + CTA + T&C ---- */
/* Премиум-панель: frosted-стекло, отделяется от hero-фона глубиной + hover-lift */
.ch-aside {
  grid-area: aside;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  padding: var(--s-5);
  background-color: var(--glass-bg);
  background-image: var(--surface-grad);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

.ch-score { display: flex; flex-direction: column; align-items: center; gap: var(--s-2); }
.ch-score__ring {
  /* кольцо = conic-прогресс (рейтинг×10%) поверх трека; центр — surface */
  --ch-pct: calc(var(--ch-score, 0) * 10%);
  position: relative;
  width: var(--ch-ring);
  height: var(--ch-ring);
  display: grid;
  place-items: center;
  border-radius: var(--r-pill);
  background:
    conic-gradient(var(--ch-tone) var(--ch-pct), var(--bg-3) 0);
  color: var(--text);
  /* свечение шкале — акцентом тона */
  filter: drop-shadow(0 4px 16px color-mix(in srgb, var(--ch-tone) 36%, transparent));
}
.ch-score__ring::before {
  content: "";
  position: absolute;
  inset: var(--ch-ring-track);
  border-radius: inherit;
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.ch-score__ring--low { --ch-tone: var(--warning); }
.ch-score__num {
  position: relative;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.ch-score__den {
  position: relative;
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.ch-score__label {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  text-align: center;
}

.ch-cta { display: flex; flex-direction: column; gap: var(--s-2); }
.ch-cta__main { font-weight: var(--fw-semi); }
/* Primary-CTA как единственный «залитый» glow-акцент панели */
.ch-cta__main.btn--primary {
  background-image: var(--grad-brand);
  box-shadow: var(--shadow-glow);
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), filter var(--dur-base) var(--ease-out);
}
.ch-cta__main.btn--primary:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-glow), var(--shadow-pop);
  filter: saturate(1.06);
}
.ch-cta__main.btn--primary:active { transform: translateY(0); }

/* T&C-drawer: держит карточку чистой, раскрывается прогрессивно */
.ch-terms { border-top: var(--hairline); padding-top: var(--s-3); }
.ch-terms__btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
  width: 100%;
  min-height: var(--tap-min);
  padding: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  background: none;
  border: 0;
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.ch-terms__btn:hover { color: var(--brand); }
.ch-terms__chev { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease); }
.ch-terms__btn[aria-expanded="true"] .ch-terms__chev { transform: rotate(180deg); }
.ch-terms__body {
  margin-top: var(--s-2);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}
.ch-terms__body[hidden] { display: none; }

/* ---- Вариант: компактный hero ---- */
.casino-hero--compact { --ch-media: 220px; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .casino-hero {
    grid-template-columns: var(--ch-media) minmax(0, 1fr);
    grid-template-areas:
      "media head"
      "aside aside";
    gap: var(--s-5);
    padding: var(--s-6);
  }
  .ch-aside {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--s-5);
  }
  .ch-score { flex: 0 0 auto; flex-direction: row; align-items: center; gap: var(--s-3); }
  .ch-score__label { text-align: left; }
  .ch-cta { flex: 1 1 260px; flex-direction: row; }
  .ch-cta .btn { flex: 1 1 0; width: auto; }
  .ch-terms { flex: 1 1 100%; }
}

@media (max-width: 640px) {
  .casino-hero,
  .casino-hero--compact {
    --ch-media: 1fr;
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "media"
      "head"
      "aside";
    gap: var(--s-4);
    padding: var(--s-4);
    border-radius: var(--r-lg);
  }
  .ch-media { aspect-ratio: 16 / 9; }
  .ch-media--mono { aspect-ratio: 3 / 1; }
  .ch-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-3) var(--s-4); }
  .ch-aside { flex-direction: column; align-items: stretch; }
  .ch-score { justify-content: center; }
  .ch-cta { flex-direction: column; }
  .ch-cta .btn { width: 100%; }
}

/* ============ Моушн (a11y) ============ */
@media (prefers-reduced-motion: reduce) {
  .ch-cta__main.btn--primary { transition: none; }
  .ch-cta__main.btn--primary:hover { transform: none; }
}

/* ===== hero-editorial-cover ===== */
/* ============================================================
 * hero-editorial-cover · block.css
 * Скоуплено на .hero-editorial-cover. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Адаптив: 980 / 640.
 * Один акцент: --brand (primary CTA + em-строка титула). Остальное — нейтрали.
 * Визуал: premium-2025 — ambient-glow поверх скрима, glass-бейдж/ghost-CTA,
 *         grad-text на акцент-слове титула, grad+glow primary-CTA. Всё через токены.
 * ========================================================== */

.hero-editorial-cover {
  --hec-overlay: color-mix(in srgb, var(--bg) 62%, transparent);
  --hec-overlay-strong: color-mix(in srgb, var(--bg) 88%, transparent);

  position: relative;
  isolation: isolate;
  display: grid;
  place-items: center;
  min-height: min(86vh, 760px);
  padding-block: var(--s-10);
  overflow: hidden;
  background: var(--bg-2);
}

/* ---- Фоновая обложка + скрим ---- */
.hec__media { position: absolute; inset: 0; z-index: -1; }
.hec__img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
/* Скрим из токенов: вертикальный градиент держит AA-контраст титула на любой картинке.
   Поверх — мягкое brand-свечение (ambient) для премиум-глубины, не трогая читаемость. */
.hec__scrim {
  position: absolute; inset: 0;
  background:
    radial-gradient(70% 90% at 84% -6%, color-mix(in srgb, var(--brand) 22%, transparent), transparent 58%),
    radial-gradient(60% 70% at 6% 104%, color-mix(in srgb, var(--brand-2) 16%, transparent), transparent 62%),
    linear-gradient(180deg, var(--hec-overlay-strong) 0%, var(--hec-overlay) 38%, var(--hec-overlay-strong) 100%),
    radial-gradient(120% 80% at 50% 42%, transparent 40%, var(--hec-overlay) 100%);
}

/* ---- Контент-колонка ---- */
.hec__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--s-5);
  max-width: var(--container-prose);
}

/* ---- Kicker / выпуск ---- */
.hec__kicker {
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
  margin: 0;
  color: var(--text-mute);
}
.hec__issue { color: var(--brand); }
.hec__num { font-variant-numeric: tabular-nums; }
.hec__dot {
  width: 4px; height: 4px; border-radius: var(--r-pill);
  background: var(--rule-strong);
}

/* ---- Титул ---- */
.hec__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-display);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
  text-wrap: balance;
}
/* Акцент-слово — gradient-text (короткий фрагмент, читаемость не страдает).
   Fallback: --brand-цвет, если clip не поддержан. */
.hec__title-em {
  color: var(--brand);
  background-image: var(--grad-text);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ---- Dek ---- */
.hec__dek {
  margin: 0;
  max-width: 54ch;
  color: var(--text-dim);
  text-wrap: pretty;
}

/* ---- 2 CTA ---- */
.hec__actions {
  justify-content: center;
  gap: var(--s-3);
  margin-top: var(--s-2);
}
.hec__cta { min-width: 200px; }
.hec__cta-ic {
  transition: transform var(--dur-quick) var(--ease-out);
}
.hec__cta:hover .hec__cta-ic,
.hec__cta:focus-visible .hec__cta-ic { transform: translateX(3px); }
/* Primary-CTA: brand-градиент + glow (главный акцент над фото) */
.hec__cta.btn--primary {
  background-image: var(--grad-brand);
  box-shadow: var(--shadow-glow);
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), filter var(--dur-base) var(--ease-out);
}
.hec__cta.btn--primary:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-glow), var(--shadow-pop);
  filter: saturate(1.06);
}
.hec__cta.btn--primary:active { transform: translateY(0); }
/* Outline-CTA читаем поверх фото — даём ему собственную frosted-поверхность */
.hec__cta--ghost {
  background-color: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border-color: var(--glass-border);
  transition: transform var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out);
}
.hec__cta--ghost:hover { border-color: var(--brand); color: var(--brand); transform: translateY(-2px); }

/* ---- Trust-полоса ---- */
.hec__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--s-3) var(--s-5);
  margin: var(--s-4) 0 0;
}
.hec__meta-item {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.hec__meta-k {
  font-size: var(--t-tiny);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.hec__meta-v {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
}
.hec__meta-num {
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.hec__meta-sep {
  width: 1px; align-self: stretch;
  min-height: var(--s-5);
  background: var(--rule);
}
/* Бейдж доверия — frosted-стекло с мягким glow (один premium-акцент trust-полосы) */
.hec__meta-item--badge {
  flex-direction: row;
  gap: var(--s-2);
  padding: var(--s-2) var(--s-3);
  background-color: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card), var(--shadow-glow);
}
.hec__meta-ic { color: var(--brand); flex: 0 0 auto; }
.hec__meta-item--badge .hec__meta-v { color: var(--text); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .hero-editorial-cover {
    min-height: min(80vh, 620px);
    padding-block: var(--s-9);
  }
  .hec__inner { gap: var(--s-4); }
}

@media (max-width: 640px) {
  .hero-editorial-cover {
    min-height: auto;
    padding-block: var(--s-8);
  }
  .hec__kicker { flex-wrap: wrap; justify-content: center; }
  .hec__actions { flex-direction: column; width: 100%; }
  .hec__cta { width: 100%; min-width: 0; }
  /* На узком экране разделители-палки мешают — прячем, оставляем воздух */
  .hec__meta-sep { display: none; }
  .hec__meta { gap: var(--s-3) var(--s-4); }
}

/* ============ Моушн (a11y) ============ */
@media (prefers-reduced-motion: reduce) {
  .hec__cta.btn--primary,
  .hec__cta--ghost { transition: none; }
  .hec__cta.btn--primary:hover,
  .hec__cta--ghost:hover { transform: none; }
}

/* ===== hero-guide ===== */
/* ============================================================
 * hero-guide · block.css
 * Скоуплено на .hero-guide. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (+ html-base семантика, нумерация — CSS counter).
 * Адаптив: 980 / 640. Один акцент — --brand (em-строка титула + активный якорь);
 * остальное — дисциплинированные нейтрали. Числа (reading-time, дата) — tabular-nums.
 * ========================================================== */

.hero-guide {
  padding-block: var(--s-8) var(--s-6);
  background: var(--bg);
  border-bottom: var(--hairline);
}

/* Контент-колонка читаемой ширины (prose), generous whitespace через stack-gap */
.hero-guide__inner {
  display: flex;
  flex-direction: column;
  gap: var(--s-5);
}

/* ---- 1 · Eyebrow / категория ---- */
.hero-guide__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  color: var(--text-mute);
}
.hero-guide__eyebrow-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--brand);
}

/* ---- 2 · Титул ---- */
.hero-guide__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.015em;
  color: var(--text);
  text-wrap: balance;
}
.hero-guide__title-em { color: var(--brand); }

/* ---- 3 · Lede ---- */
.hero-guide__lede {
  margin: 0;
  max-width: 60ch;
  color: var(--text-dim);
  text-wrap: pretty;
}

/* ---- 4 · Мета-строка (автор · дата · reading-time) ---- */
.hero-guide__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) var(--s-3);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.hero-guide__byline {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-2);
}
.hero-guide__by-intro {
  font-size: var(--t-tiny);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.hero-guide__author {
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  text-decoration: none;
}
.hero-guide__author:hover { color: var(--brand); }

/* Разделитель-точка между мета-частями (декор) */
.hero-guide__sep {
  width: 3px;
  height: 3px;
  flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: var(--rule-strong);
}

/* Штамп даты + reading-time: иконка + лейбл + значение */
.hero-guide__stamp,
.hero-guide__read {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
}
.hero-guide__meta-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
}
.hero-guide__stamp-label { color: var(--text-mute); }
.hero-guide__date {
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.hero-guide__num {
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}

/* ---- 5 · TOC-якоря (jump-rail) ----
   Лёгкий заголовочный аналог блока toc: чипы-ссылки на разделы.
   Карточка-поверхность по контракту: surface + hairline + r-lg + shadow-card. */
.hero-guide__toc {
  margin-top: var(--s-1);
  padding: var(--s-4) var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
.hero-guide__toc-title {
  margin: 0 0 var(--s-3);
  font-size: var(--t-tiny);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}

/* Список чипов; нумерация — CSS counter (НЕ в HTML) */
.hero-guide__jumps {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: hgjump;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.hero-guide__jump-item {
  display: block;
  counter-increment: hgjump;
}

.hero-guide__jump {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-small);
  color: var(--text-dim);
  text-decoration: none;
  background: var(--bg-2);
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  transition:
    color var(--dur-quick) var(--ease),
    background var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease);
}
/* Маркер-нумерация: моноширинный, табличные цифры */
.hero-guide__jump::before {
  content: counter(hgjump, decimal-leading-zero);
  flex: 0 0 auto;
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}
.hero-guide__jump-text { min-width: 0; }

.hero-guide__jump:hover {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 30%, transparent);
}
.hero-guide__jump:hover::before { color: var(--brand); }
.hero-guide__jump:focus-visible { outline-offset: 2px; }

/* Активный пункт (scroll-spy ставит aria-current="location") —
   состояние не только цветом: заливка brand-soft + рамка + полужирность */
.hero-guide__jump[aria-current="location"] {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 38%, transparent);
  font-weight: var(--fw-semi);
}
.hero-guide__jump[aria-current="location"]::before { color: var(--brand); }

/* ---- Вариант --compact: без TOC-рейла, плотнее вертикальный ритм ---- */
.hero-guide--compact { padding-block: var(--s-7) var(--s-6); }
.hero-guide--compact .hero-guide__inner { gap: var(--s-4); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .hero-guide { padding-block: var(--s-7) var(--s-6); }
  .hero-guide__inner { gap: var(--s-4); }
}

@media (max-width: 640px) {
  .hero-guide { padding-block: var(--s-6) var(--s-5); }
  /* На узком экране точки-разделители жмут строку — прячем, оставляем воздух */
  .hero-guide__sep { display: none; }
  .hero-guide__meta { gap: var(--s-2) var(--s-4); }
  .hero-guide__toc { padding: var(--s-4); }
  /* Чипы во всю ширину колонки — крупный, удобный для тапа список */
  .hero-guide__jumps { flex-direction: column; gap: var(--s-1); }
  .hero-guide__jump { width: 100%; border-radius: var(--r-md); }
}

/* ===== hero-hub-register ===== */
/* ============================================================
 * hero-hub-register · block.css
 * Скоуплено на .register-hero. Только токены (10-tokens/).
 * Анатомия: eyebrow-stamp + H1 + lede + quick-filter chip-rail.
 * Конвенция разметки/JS: portfolio (.register-hero). Адаптив: 980 / 640.
 * Визуал: premium-2025 — ambient-свечение фона, glass-stamp, grad-text акцент,
 *         glow-lift чипов, grad-brand активный чип. Через токены (все скины).
 * ========================================================== */

.register-hero {
  --rh-chip-bg: var(--surface);
  position: relative;
  isolation: isolate;
  /* многослойное амбиентное свечение из токена поверх базового фона */
  background-color: var(--bg);
  background-image: var(--ambient);
  border-bottom: var(--hairline);
}
.register-hero__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-4);
  padding-block: var(--s-8);
  max-width: var(--container-prose);
}

/* ---- Eyebrow-stamp: «печать» с категорией и счётчиком — frosted-стекло ---- */
.rh-stamp {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-tiny);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--text-mute);
  background-color: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card), var(--shadow-glow);
}
.rh-stamp__mark { display: inline-flex; color: var(--brand); }
.rh-stamp__label { font-weight: var(--fw-semi); color: var(--text-dim); }
.rh-stamp__sep { width: 1px; height: 12px; background: var(--rule); }
.rh-stamp__count { color: var(--text-mute); }
.rh-stamp__count b { color: var(--brand); font-weight: var(--fw-bold); }

/* tabular-nums для всех чисел блока (счётчики, дата) */
.rh-num { font-variant-numeric: tabular-nums; }

/* ---- Заголовок + лид ---- */
.rh-title {
  font-size: var(--t-h1);
  line-height: var(--lh-tight);
  letter-spacing: -0.015em;
  max-width: 18ch;
}
/* Акцент-фрагмент — gradient-text (короткий, читаемость сохранена).
   Fallback: --brand-цвет, если clip не поддержан. */
.rh-title__accent {
  color: var(--brand);
  background-image: var(--grad-text);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.rh-lede {
  max-width: 60ch;
  text-wrap: pretty;
}

/* ---- Quick-filter chip-rail ---- */
.rh-rail {
  width: 100%;
  margin-top: var(--s-2);
  /* горизонтальный скролл на мобайле без обрезки фокус-кольца */
  margin-inline: calc(-1 * var(--s-1));
  padding-inline: var(--s-1);
}
.rh-rail__list {
  list-style: none;
  margin: 0;
  padding: var(--s-1) 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2);
}
.rh-rail__div { width: 1px; height: 22px; background: var(--rule); display: inline-block; margin-inline: var(--s-1); }

.rh-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: 0 var(--s-4);
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  line-height: 1;
  color: var(--text-dim);
  text-decoration: none;
  white-space: nowrap;
  background-color: var(--rh-chip-bg);
  background-image: var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  transition:
    background-color var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    color var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out);
}
.rh-chip:hover {
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
  box-shadow: var(--shadow-card), var(--shadow-glow);
  transform: translateY(-2px);
}
.rh-chip:active { transform: translateY(0); }

.rh-chip__count {
  padding: 2px var(--s-2);
  margin-inline-end: calc(-1 * var(--s-2) / 2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-pill);
}
.rh-chip__dot {
  width: 7px; height: 7px;
  border-radius: var(--r-pill);
  background: var(--brand);
  box-shadow: 0 0 8px color-mix(in srgb, var(--brand) 55%, transparent);
}
.rh-chip__ic { display: inline-flex; color: var(--text-faint); }
.rh-chip:hover .rh-chip__ic { color: var(--brand); }

/* Активный фильтр — единственный «залитый» glow-акцент чип-рейла */
.rh-chip--active,
.rh-chip[aria-pressed="true"] {
  color: var(--on-brand);
  background-image: var(--grad-brand);
  border-color: transparent;
  box-shadow: var(--shadow-glow);
}
.rh-chip--active:hover,
.rh-chip[aria-pressed="true"]:hover {
  border-color: transparent;
  box-shadow: var(--shadow-glow), var(--shadow-pop);
}
.rh-chip--active .rh-chip__count,
.rh-chip[aria-pressed="true"] .rh-chip__count {
  color: var(--on-brand);
  background: color-mix(in srgb, var(--on-brand) 22%, transparent);
}
.rh-chip--active .rh-chip__dot,
.rh-chip[aria-pressed="true"] .rh-chip__dot { background: var(--on-brand); box-shadow: none; }

/* «Новые» — нейтральный флаг (не второй акцент: gold-штамп, не заливка) */
.rh-chip__flag {
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--gold);
  background: var(--highlight-pale);
  border-radius: var(--r-soft);
}

/* Якорь-чип — облегчённый, без заливки, читается как «ссылка-переход» */
.rh-chip--anchor {
  background-color: transparent;
  background-image: none;
  box-shadow: none;
  border-style: dashed;
  color: var(--text-mute);
}
.rh-chip--anchor:hover {
  color: var(--brand);
  border-color: var(--brand);
  background-color: var(--brand-soft);
  box-shadow: none;
}

/* ---- Meta-строка (обновлено + редпометка) ---- */
.rh-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) var(--s-3);
  margin-top: var(--s-1);
  font-size: var(--t-tiny);
  color: var(--text-faint);
}
.rh-meta__item { display: inline-flex; align-items: center; gap: var(--s-2); }
.rh-meta__ic { display: inline-flex; }
.rh-meta__item--note { color: var(--text-mute); }
.rh-meta__sep { width: 1px; height: 12px; background: var(--rule); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .register-hero__inner { padding-block: var(--s-7); gap: var(--s-3); }
}
@media (max-width: 640px) {
  .register-hero__inner { gap: var(--s-3); max-width: none; }
  .rh-title { font-size: var(--t-h2); max-width: none; }
  /* Чип-рейл уходит в горизонтальный свайп, не ломая строку */
  .rh-rail {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .rh-rail::-webkit-scrollbar { display: none; }
  .rh-rail__list { flex-wrap: nowrap; padding-inline-end: var(--s-4); }
  .rh-chip { padding: 0 var(--s-3); }
}

/* ============ Моушн (a11y) ============ */
@media (prefers-reduced-motion: reduce) {
  .rh-chip { transition: none; }
  .rh-chip:hover { transform: none; }
}

/* ===== hero-landing ===== */
/* ============================================================
 * hero-landing · block.css
 * Скоуплено на .hero-landing / .hl. Только токены (10-tokens/).
 * Конвенция разметки/JS: ★research (premium-планка) + html-base.
 * Анатомия: оффер (eyebrow + H1 + lede + offer-ticket) + ОДНА CTA + trust-полоса.
 * Адаптив: 980 / 640. Один акцент = --brand; --success/--danger только по смыслу.
 * Визуал: полноширинный внутренний brand-glow (ambient) + surface-grad;
 * offer-ticket и trust-полоса — стекло; рейтинг-метр светится; brand-акцент
 * заголовка — gradient-text (короткая фраза, читаемость сохранена).
 * Свечение/градиенты через токены → работают на всех скинах (вкл. midnight-crypto).
 * ========================================================== */

.hero-landing {
  --hl-trust: minmax(280px, 0.72fr);   /* фикс-слот trust-колонки */
  --hl-bar: 8px;                       /* высота рейтинг-метра */

  position: relative;
  /* Полноширинная «планка» лендинга: внутренний brand-glow (ambient-радиалы) +
     тонкий surface-grad поверх нейтрального фона. Всё на токенах под скин/бренд. */
  background-image:
    radial-gradient(120% 120% at 100% 0%, color-mix(in srgb, var(--brand) 12%, transparent) 0%, transparent 58%),
    radial-gradient(90% 100% at -8% 8%, color-mix(in srgb, var(--brand-2) 7%, transparent) 0%, transparent 62%),
    var(--surface-grad);
  background-color: var(--bg);
  border-block: var(--hairline);
}

/* ---- Каркас: оффер | trust ---- */
.hl {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--hl-trust);
  grid-template-areas: "main trust";
  gap: var(--s-8);
  align-items: center;
  padding-block: var(--s-9);
}

/* ============ Левая колонка: оффер + CTA ============ */
.hl__main {
  grid-area: main;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-4);
  min-width: 0;
}

/* tabular-nums для всех чисел блока (суммы, проценты, рейтинг, дата) */
.hl__num { font-variant-numeric: tabular-nums; }

/* ---- Eyebrow-флаг: бренд + штампованная пометка (frosted-стекло) ---- */
.hl__flag {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
          backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.hl__flag-mark { display: inline-flex; color: var(--brand); }
.hl__flag-brand { font-weight: var(--fw-bold); color: var(--text-dim); letter-spacing: .04em; }
.hl__flag-sep { width: 1px; height: 12px; background: var(--rule); }
.hl__flag-note { color: var(--text-mute); }

/* ---- H1-оффер ---- */
.hl__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-display);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.02em;
  color: var(--text);
  text-wrap: balance;
}
/* Короткий brand-акцент заголовка — gradient-text (clip). Фраза короткая,
   контраст/читаемость не страдают; fallback-цвет --brand на старых движках. */
.hl__title-accent {
  color: var(--brand);
  background: var(--grad-text);
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ---- Лид (PAS) ---- */
.hl__lede {
  max-width: 52ch;
  text-wrap: pretty;
}

/* ============ Offer-ticket: число бонуса (фикс-слот) + рейтинг-метр ============
   Панель — frosted-стекло поверх hero-glow, крупный радиус. */
.hl-ticket {
  display: flex;
  align-items: stretch;
  gap: var(--s-5);
  width: 100%;
  margin-top: var(--s-2);
  padding: var(--s-4) var(--s-5);
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
          backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
}
.hl-ticket__div { width: 1px; align-self: stretch; background: var(--rule); }

.hl-ticket__k {
  display: block;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* Оффер-число — крупный фикс-слот */
.hl-ticket__offer { display: flex; flex-direction: column; gap: var(--s-1); }
.hl-ticket__v { display: flex; align-items: baseline; gap: var(--s-2); flex-wrap: wrap; }
.hl-ticket__pct {
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--brand);
}
.hl-ticket__unit {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--brand);
  margin-inline-start: calc(-1 * var(--s-1));
}
.hl-ticket__add {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
}
.hl-ticket__add b { color: var(--text); font-variant-numeric: tabular-nums; }

/* Рейтинг-метр (dataviz, не звёзды) */
.hl-ticket__rating {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--s-2);
  flex: 1 1 auto;
  min-width: 120px;
}
.hl-ticket__rating-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
}
.hl-ticket__score { font-weight: var(--fw-bold); color: var(--brand); }
.hl-ticket__score small { color: var(--text-faint); font-weight: var(--fw-medium); }
.hl-ticket__bar {
  display: block;
  height: var(--hl-bar);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.hl-ticket__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  /* мягкое свечение шкале (dataviz-акцент) */
  box-shadow: 0 0 12px -2px color-mix(in srgb, var(--rating-to) 60%, transparent);
}

/* ============ CTA (ОДНА primary) + reassurance ============ */
.hl__cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-3) var(--s-5);
  margin-top: var(--s-3);
}
.hl__cta-btn { font-size: var(--t-body); }
.hl__cta-arrow { transition: transform var(--dur-quick) var(--ease); }
.hl__cta-btn:hover .hl__cta-arrow { transform: translateX(3px); }

.hl__assure {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.hl__assure-ic { display: inline-flex; flex: 0 0 auto; color: var(--success); }
.hl__assure b { color: var(--text-dim); font-weight: var(--fw-semi); }

/* ============ T&C-drawer (нативный <details>) ============ */
.hl-terms {
  width: 100%;
  margin-top: var(--s-2);
  border-top: var(--hairline);
  padding-top: var(--s-3);
}
.hl-terms__q {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  cursor: pointer;
  list-style: none;
  transition: color var(--dur-quick) var(--ease);
}
.hl-terms__q::-webkit-details-marker { display: none; }
.hl-terms__q:hover { color: var(--brand); }
.hl-terms__chev { flex: 0 0 auto; transition: transform var(--dur-base) var(--ease); }
.hl-terms[open] .hl-terms__chev { transform: rotate(180deg); }

/* Раскрытие grid-rows 0fr→1fr (без замера высоты) */
.hl-terms__a {
  display: grid;
  grid-template-rows: 1fr;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}
.hl-terms__inner { min-height: 0; padding-top: var(--s-2); max-width: 64ch; }
.hl-terms:not([open]) .hl-terms__a { grid-template-rows: 0fr; }
@media (prefers-reduced-motion: no-preference) {
  .hl-terms__a { transition: grid-template-rows var(--dur-base) var(--ease); }
}

/* ============ Trust-полоса (frosted-стекло) ============ */
.hl-trust {
  grid-area: trust;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  padding: var(--s-5);
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
          backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
}

.hl-trust__head {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}
.hl-trust__head-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  color: var(--on-brand);
  background: var(--success);
  border-radius: var(--r-pill);
  box-shadow: 0 0 14px -3px color-mix(in srgb, var(--success) 65%, transparent);
}

/* Метрики: фикс-слоты ключ/значение 2×2 */
.hl-trust__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-3);
  margin: 0;
  padding-bottom: var(--s-4);
  border-bottom: var(--hairline);
}
.hl-trust__item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--s-3);
  background: color-mix(in srgb, var(--bg-2) 60%, transparent);
  border: 1px solid color-mix(in srgb, var(--rule) 60%, transparent);
  border-radius: var(--r-md);
  min-width: 0;
}
.hl-trust__k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.hl-trust__v {
  font-weight: var(--fw-semi);
  color: var(--text);
  line-height: var(--lh-snug);
}
.hl-trust__v--num { font-variant-numeric: tabular-nums; }

/* Платёжные методы (bespoke SVG, монохром-нейтраль) */
.hl-trust__pay { display: flex; flex-direction: column; gap: var(--s-2); }
.hl-trust__pay-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.hl-trust__pay-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.hl-trust__pay-item {
  display: inline-flex;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}
.hl-trust__pay-item:hover { color: var(--text-mute); }
.hl-trust__pay-item svg { border-radius: var(--r-soft); }

/* 18+ / ответственная игра */
.hl-trust__rg {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}
.hl-trust__age {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 30px;
  padding: 2px var(--s-2);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text-dim);
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-soft);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .hl {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "main"
      "trust";
    gap: var(--s-6);
    padding-block: var(--s-8);
    align-items: stretch;
  }
  /* Trust-полоса становится горизонтальной «датадекой» */
  .hl-trust { display: grid; grid-template-columns: 1fr; gap: var(--s-4); }
  .hl-trust__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .hl { gap: var(--s-5); padding-block: var(--s-7); }
  .hl__title { font-size: var(--t-h1); }
  .hl-ticket { flex-direction: column; gap: var(--s-3); padding: var(--s-4); }
  .hl-ticket__div { width: auto; height: 1px; }
  .hl__cta { flex-direction: column; align-items: stretch; }
  .hl__cta-btn { width: 100%; }
  .hl__assure { justify-content: flex-start; }
  .hl-trust__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ===== hero-listicle ===== */
/* ============================================================
 * hero-listicle · block.css
 * Шапка статьи-рейтинга «Top-N»: H1 + intro + полоса доверия + якорь к списку.
 * Скоуплено на .hero-listicle. Только токены (10-tokens/). Адаптив: 980 / 640.
 * Один акцент — --brand; нейтрали — --surface/--text*/--rule. Числа — tabular-nums.
 * ========================================================== */

.hero-listicle {
  --hl-meter-h: 6px;
  position: relative;
  padding-block: var(--s-9) var(--s-8);
  background: var(--bg);
  border-bottom: var(--hairline);
  overflow: hidden;
}

/* Тонкая верхняя «акцент-линия» — единственное декоративное пятно бренда */
.hero-listicle::before {
  content: "";
  position: absolute; inset-inline: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
  opacity: .9;
}

.hero-listicle__inner { display: flex; flex-direction: column; gap: var(--s-5); text-align: left; }

/* Числа в шапке — моноширинные цифры (N, год, метрики) */
.hero-listicle .num { font-variant-numeric: tabular-nums; }

/* ---- Eyebrow: рубрика · дата ---- */
.hero-listicle__eyebrow {
  display: inline-flex; align-items: center; flex-wrap: wrap; gap: var(--s-2);
  margin: 0;
}
.hero-listicle__eyebrow-ic { color: var(--brand); flex: 0 0 auto; }
.hero-listicle__eyebrow time { color: inherit; }
.hero-listicle__dot { color: var(--rule-strong); }

/* ---- Заголовок ---- */
.hero-listicle__title {
  margin: 0;
  font-size: var(--t-h1);
  line-height: var(--lh-tight);
  letter-spacing: -0.015em;
  max-width: 18ch;
}
.hero-listicle__rank {
  color: var(--brand);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ---- Intro ---- */
.hero-listicle__lede { margin: 0; max-width: var(--container-prose); }

/* ---- Полоса доверия: фикс-слоты + dataviz-метры ---- */
.hero-listicle__trust {
  margin: var(--s-2) 0 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-5);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
.hero-listicle__stat { display: flex; flex-direction: column; gap: var(--s-1); min-width: 0; }
.hero-listicle__stat-k {
  order: 1;
  font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase;
  color: var(--text-mute);
}
.hero-listicle__stat-v {
  order: 0; margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.hero-listicle__stat-v small { color: var(--text-faint); font-weight: var(--fw-medium); }

.hero-listicle__meter {
  order: 2; margin-top: var(--s-1);
  height: var(--hl-meter-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.hero-listicle__meter-fill {
  display: block; height: 100%; border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- Действия: ОДНА основная CTA + тихая methodology-ссылка ---- */
.hero-listicle__actions {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-4);
  margin-top: var(--s-2);
}
.hero-listicle__cta-ic { flex: 0 0 auto; transition: transform var(--dur-base) var(--ease); }
.hero-listicle__cta:hover .hero-listicle__cta-ic { transform: translateY(2px); }

.hero-listicle__method {
  font-size: var(--t-small); font-weight: var(--fw-medium);
  color: var(--text-mute);
  text-decoration-color: color-mix(in srgb, var(--text-mute) 40%, transparent);
}
.hero-listicle__method:hover { color: var(--brand); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .hero-listicle { padding-block: var(--s-8) var(--s-7); }
}
@media (max-width: 640px) {
  .hero-listicle { padding-block: var(--s-7) var(--s-6); }
  .hero-listicle__title { font-size: var(--t-h2); max-width: none; }
  .hero-listicle__trust {
    grid-template-columns: 1fr;
    gap: var(--s-4);
    padding: var(--s-4);
  }
  .hero-listicle__stat-v { font-size: var(--t-h3); }
  .hero-listicle__actions { gap: var(--s-3); }
  .hero-listicle__cta { width: 100%; }
}

/* ===== hero-slot-game ===== */
/* ============================================================
 * hero-slot-game · block.css
 * Скоуплено на .hero-slot-game / .hsg. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-slots (+ html-base). Адаптив: 980 / 640.
 * Визуал: premium-2025 — ambient inner-glow в каркасе, surface-grad,
 *         glass-провайдер-чип, glow на бейджах/CTA, hover-lift спек-карт. Токены.
 * ========================================================== */

.hero-slot-game {
  --hsg-media: minmax(260px, 0.85fr);
  display: flex;
  flex-direction: column;
  gap: var(--s-6);
}

/* ---- Каркас hero ---- */
.hsg {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: var(--hsg-media) minmax(0, 1.15fr);
  gap: var(--s-7);
  align-items: center;
  padding: var(--s-6);
  /* surface + внутренний brand-glow в правом-верхнем углу + верхний оверлей */
  background-color: var(--surface);
  background-image:
    radial-gradient(74% 116% at 97% -14%, color-mix(in srgb, var(--brand) 12%, transparent), transparent 56%),
    var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);
}
.hsg:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-card), var(--shadow-glow);
  border-color: color-mix(in srgb, var(--brand) 40%, var(--rule));
}

/* ============ Медиа (cover ИЛИ fallback) ============ */
.hsg__media {
  position: relative;
  margin: 0;
  aspect-ratio: 4 / 3;
  border-radius: var(--r-lg);
  overflow: hidden;
  background: var(--bg-2);
  border: var(--hairline);
  box-shadow: var(--shadow-card);
}
.hsg__cover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* Затемнение снизу — под читаемость провайдер-чипа */
.hsg__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--text) 22%, transparent) 0%,
    transparent 32%,
    transparent 58%,
    color-mix(in srgb, var(--text) 55%, transparent) 100%
  );
}

/* Fallback: фирменный градиент + инициал слота вместо картинки */
.hsg__media--fallback {
  background-image: var(--grad-brand);
}
.hsg__media--fallback::after {
  content: attr(data-initial);
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-size: var(--t-display);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: color-mix(in srgb, var(--on-brand) 88%, transparent);
}

/* ---- Бейджи NEW / TOP ---- */
.hsg__badges {
  position: absolute;
  top: var(--s-3);
  left: var(--s-3);
  z-index: var(--z-base);
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.hsg__badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: 0.06em;
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.hsg__badge-ic { display: inline-flex; }
/* TOP — единственный glow-акцент медиа (brand-градиент + свечение) */
.hsg__badge--top {
  color: var(--on-brand);
  background-image: var(--grad-brand);
  box-shadow: var(--shadow-card), var(--shadow-glow);
}
.hsg__badge--new {
  color: var(--text);
  background-image: linear-gradient(135deg, var(--gold), color-mix(in srgb, var(--gold) 72%, var(--on-brand)));
}

/* ---- Провайдер-чип (внутри медиа) ---- */
.hsg__provider {
  position: absolute;
  inset-inline: var(--s-3);
  bottom: var(--s-3);
  z-index: var(--z-base);
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--s-2) var(--s-3);
  background-color: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
}
.hsg__provider-k {
  font-size: var(--t-tiny);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.hsg__provider-v {
  font-weight: var(--fw-semi);
  color: var(--text);
  line-height: var(--lh-snug);
}

/* ============ Контент справа ============ */
.hsg__body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}
.hsg__eyebrow {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}
.hsg__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--text);
}
.hsg__hook {
  margin: 0;
  font-size: var(--t-h4);
  line-height: var(--lh-snug);
  font-weight: var(--fw-medium);
  color: var(--brand);
}
.hsg__intro {
  margin: 0;
  max-width: var(--container-prose);
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* ---- Spec-stats строка ---- */
.hsg__specs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin: var(--s-2) 0 0;
}
.hsg__spec {
  flex: 1 1 auto;
  min-width: 92px;
  padding: var(--s-3);
  background-color: var(--bg-2);
  background-image: var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
  transition: transform var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out);
}
.hsg__spec:hover {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
  box-shadow: var(--shadow-card), var(--shadow-glow);
}
.hsg__spec-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.hsg__spec-v {
  margin: 2px 0 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  line-height: var(--lh-snug);
  font-variant-numeric: tabular-nums;
}
.hsg__spec-v small {
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-faint);
}

/* ---- CTA ---- */
.hsg__cta { margin-top: var(--s-4); }
.hsg__cta-ic {
  display: inline-flex;
  margin-inline-end: 6px;
  vertical-align: -2px;
}
/* Primary-CTA: brand-градиент + glow, lift на hover */
.hsg__cta .btn--primary {
  background-image: var(--grad-brand);
  box-shadow: var(--shadow-glow);
  transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), filter var(--dur-base) var(--ease-out);
}
.hsg__cta .btn--primary:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-glow), var(--shadow-pop);
  filter: saturate(1.06);
}
.hsg__cta .btn--primary:active { transform: translateY(0); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .hsg {
    grid-template-columns: 1fr;
    gap: var(--s-5);
    padding: var(--s-5);
  }
  .hsg__media { aspect-ratio: 16 / 9; }
}

@media (max-width: 640px) {
  .hsg { padding: var(--s-4); border-radius: var(--r-lg); }
  .hsg__specs { gap: var(--s-2); }
  .hsg__spec { flex-basis: calc(50% - var(--s-2)); }
  .hsg__cta { flex-direction: column; align-items: stretch; }
  .hsg__cta .btn { width: 100%; }
}

/* ============ Моушн (a11y) ============ */
@media (prefers-reduced-motion: reduce) {
  .hsg,
  .hsg__spec,
  .hsg__cta .btn--primary { transition: none; }
  .hsg:hover,
  .hsg__spec:hover,
  .hsg__cta .btn--primary:hover { transform: none; }
}

/* ===== hero-vs-compare ===== */
/* ============================================================
 * hero-vs-compare · block.css
 * Скоуплено на .vs-hero. Только токены (10-tokens/{tokens,skins,base}.css).
 * Конвенция: ★research / premium-планка · house-style портфельных блоков
 *   (.vs-*/.stk-*/.ledger) на наших токенах · эталон нейминга — casino-item-card.
 * Один акцент = --brand. --success/--danger только по смыслу (winner / value-tone).
 * Адаптив: 980 / 640. Числа — tabular-nums. Touch ≥ --tap-min.
 * Визуал: внутренний brand-glow + surface-grad поверх surface, крупный радиус;
 * стороны/центр — стекло; score-бар и VS-бейдж светятся акцентом.
 * Свечение/градиенты через токены → работают на всех скинах (вкл. midnight-crypto).
 * ========================================================== */

.vs-hero {
  --vs-logo: 96px;          /* фикс-слот лого оператора */
  --vs-badge: 92px;         /* диаметр центрального VS-бейджа */
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  grid-template-areas: "a vs b";
  align-items: stretch;
  gap: var(--s-5);
  padding: var(--s-6);
  /* Внутренний glow (радиал акцентом сверху-справа) + тонкий surface-grad поверх surface */
  background-color: var(--surface);
  background-image:
    radial-gradient(75% 110% at 90% -10%, color-mix(in srgb, var(--brand) 13%, transparent), transparent 56%),
    var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
}

/* ── Eyebrow + заголовок матча (над сеткой, на всю ширину) ── */
.vs-hero__head {
  grid-column: 1 / -1;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-1);
}
.vs-hero__title {
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
}
.vs-hero__sub {
  max-width: 56ch;
  color: var(--text-mute);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
}

/* ============================================================
 * Сторона оператора (A / B) — фикс-слот лого, имя, score-метр, CTA
 * Панель = frosted-стекло (translucent + blur) для премиум-глубины.
 * ========================================================== */
.vs-side {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-5) var(--s-4);
  text-align: center;
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
          backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-lg);
  box-shadow: var(--border-highlight);
}
.vs-side--a { grid-area: a; }
.vs-side--b { grid-area: b; }

.vs-side__logo {
  width: var(--vs-logo);
  height: var(--vs-logo);
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--surface);
  border: var(--hairline);
}
/* Fallback-инициал, если лого нет */
.vs-side__logo--mono {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  color: var(--brand);
  background: var(--brand-soft);
}

.vs-side__name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.vs-side__license {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* Score-метр (dataviz вместо звёзд): число + бар */
.vs-side__score {
  width: 100%;
  max-width: 220px;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}
.vs-side__score-row {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: var(--s-2);
}
.vs-side__score-v {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.vs-side__score-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.vs-side__bar {
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.vs-side__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  /* мягкое свечение шкале */
  box-shadow: 0 0 12px -2px color-mix(in srgb, var(--rating-to) 60%, transparent);
}

.vs-side__cta {
  margin-top: auto;     /* CTA прижата к низу — фикс-слоты выравниваются */
  width: 100%;
}

/* ============================================================
 * Центр — VS-бейдж + вертикальный разделитель
 * ========================================================== */
.vs-hero__center {
  grid-area: vs;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-2);
  align-self: center;
}
.vs-hero__badge {
  width: var(--vs-badge);
  height: var(--vs-badge);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  letter-spacing: .02em;
  color: var(--on-brand);
  background-color: var(--brand);
  background-image: var(--grad-brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-pop), var(--shadow-glow);
  border: 3px solid var(--surface);
}
.vs-hero__center-line {
  flex: 1;
  width: 2px;
  min-height: var(--s-6);
  background: linear-gradient(var(--rule), color-mix(in srgb, var(--brand) 30%, var(--rule)));
}

/* ============================================================
 * Meta — построчное сравнение спецификаций (head-to-head)
 * ========================================================== */
.vs-meta {
  grid-column: 1 / -1;
  margin: 0;
  padding-top: var(--s-5);
  border-top: var(--hairline);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.vs-meta__row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-2) var(--s-3);
  border-radius: var(--r-soft);
}
.vs-meta__row:nth-child(odd) { background: color-mix(in srgb, var(--bg-2) 70%, transparent); }

.vs-meta__k {
  grid-column: 2;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  text-align: center;
  white-space: nowrap;
}
.vs-meta__v {
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
}
.vs-meta__v--a { text-align: right; }
.vs-meta__v--b { text-align: left; }

/* Победитель строки — смысловой success (не декор); метка не только цветом */
.vs-meta__v--win { color: var(--success); }
.vs-meta__win-ic {
  display: inline-block;
  vertical-align: -2px;
  margin-inline: 4px;
  color: var(--success);
}
.vs-meta__v--a.vs-meta__v--win .vs-meta__win-ic { margin-inline: 0 4px; }
.vs-meta__v--b.vs-meta__v--win .vs-meta__win-ic { margin-inline: 4px 0; }

/* ============================================================
 * Page-TOC — навигация по разделам сравнения (якоря)
 * ========================================================== */
.vs-toc {
  grid-column: 1 / -1;
  margin: 0;
  padding-top: var(--s-5);
  border-top: var(--hairline);
}
.vs-toc__title {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin-bottom: var(--s-3);
  font-size: var(--t-tiny);
  letter-spacing: .1em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}
.vs-toc__title-ic { display: inline-flex; color: var(--brand); }

.vs-toc__list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: vstoc;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.vs-toc__item { counter-increment: vstoc; }
.vs-toc__link {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: 36px;
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-dim);
  text-decoration: none;
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
          backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-pill);
  transition: color var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease);
}
.vs-toc__link::before {
  content: counter(vstoc);
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-variant-numeric: tabular-nums;
  color: var(--text-faint);
}
.vs-toc__link:hover { color: var(--brand); border-color: color-mix(in srgb, var(--brand) 55%, transparent); background: var(--brand-soft); box-shadow: var(--shadow-glow); }
.vs-toc__link[aria-current="location"] {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 45%, transparent);
}
.vs-toc__link[aria-current="location"]::before { color: var(--brand); }

/* ============================================================
 * Адаптив
 * ========================================================== */
@media (max-width: 980px) {
  .vs-hero { padding: var(--s-5); gap: var(--s-4); }
  .vs-hero__badge { box-shadow: var(--shadow-card), var(--shadow-glow); }
}

@media (max-width: 640px) {
  .vs-hero {
    --vs-logo: 72px;
    --vs-badge: 64px;
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "a b"
      "vs vs";
    gap: var(--s-3);
    padding: var(--s-4);
  }
  .vs-side { padding: var(--s-4) var(--s-2); gap: var(--s-2); }
  .vs-side__cta { margin-top: var(--s-2); }

  /* Центр едет под стороны — горизонтальный коннектор */
  .vs-hero__center { flex-direction: row; width: 100%; }
  .vs-hero__center-line { width: auto; min-height: 0; height: 2px; background: linear-gradient(90deg, var(--rule), color-mix(in srgb, var(--brand) 30%, var(--rule))); }

  /* Meta-строки в столбик: подпись сверху, значения в ряд */
  .vs-meta__row {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "k k"
      "a b";
    gap: var(--s-1) var(--s-3);
    text-align: center;
  }
  .vs-meta__k { grid-area: k; grid-column: 1 / -1; }
  .vs-meta__v--a { grid-area: a; text-align: center; }
  .vs-meta__v--b { grid-area: b; text-align: center; }
}

/* ===== howto-steps ===== */
/* ============================================================
 * howto-steps · block.css
 * Скоуплено на .howto-steps. Только токены (10-tokens/).
 * Номер шага — CSS counter (.howto-steps__list counter-reset →
 *   .howto-step counter-increment → ::before content), НЕ в HTML.
 * Конвенция: html-base (HowTo-разметка). Адаптив: 980 / 640.
 * ========================================================== */

.howto-steps { --hs-marker: 44px; }

.howto-steps__head { text-align: center; }
.howto-steps__head .lede { margin-inline: auto; }

/* ---- Список шагов ---- */
.howto-steps__list {
  list-style: none; margin: 0; padding: 0;
  counter-reset: hs;
  display: flex; flex-direction: column; gap: var(--s-5);
}

/* ---- Шаг ---- */
.howto-step {
  counter-increment: hs;
  position: relative;
  display: grid;
  grid-template-columns: var(--hs-marker) minmax(0, 1fr);
  gap: var(--s-5);
  align-items: start;
}

/* Соединительная линия между кружками (функциональный индикатор последовательности) */
.howto-step:not(:last-child)::after {
  content: "";
  position: absolute;
  top: var(--hs-marker);
  left: calc(var(--hs-marker) / 2);
  width: 2px;
  height: calc(100% - var(--hs-marker) + var(--s-5));
  background: var(--rule);
  transform: translateX(-50%);
}

/* ---- 1 · Кружок-счётчик ---- */
.howto-step__marker {
  position: relative; z-index: var(--z-base);
  width: var(--hs-marker); height: var(--hs-marker);
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--font-display);
  font-size: var(--t-h4); font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.howto-step__marker::before { content: counter(hs); }

/* ---- 2 · Содержимое шага ---- */
.howto-step__body {
  min-width: 0;
  padding-top: calc((var(--hs-marker) - 1.5em) / 2); /* оптическое выравнивание с центром кружка */
}
.howto-step__title {
  font-family: var(--font-display);
  font-size: var(--t-h3); line-height: var(--lh-snug);
  font-weight: var(--fw-bold);
}
.howto-step__text {
  margin-top: var(--s-2);
  color: var(--text-dim); line-height: var(--lh-base);
}
.howto-step__num { font-variant-numeric: tabular-nums; }

/* Мета-строка шага (опц.): длительность/инструмент */
.howto-step__meta {
  display: inline-flex; align-items: center; gap: var(--s-2);
  margin-top: var(--s-3);
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-mute); background: var(--bg-2);
  border-radius: var(--r-pill);
}
.howto-step__meta-ic { display: inline-flex; color: var(--brand); }
.howto-step__meta-ic svg { width: 14px; height: 14px; }
.howto-step__meta b { font-weight: var(--fw-semi); color: var(--text-dim); font-variant-numeric: tabular-nums; }

/* Хвост-CTA под списком (одна на блок) */
.howto-steps__cta {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-4);
  margin-top: var(--s-6);
  padding: var(--s-5);
  background: var(--surface); border: var(--hairline);
  border-radius: var(--r-lg); box-shadow: var(--shadow-card);
}
.howto-steps__cta-text { flex: 1 1 12rem; min-width: 0; }
.howto-steps__cta-text strong { display: block; font-family: var(--font-display); font-size: var(--t-h4); }
.howto-steps__cta-text span { font-size: var(--t-small); color: var(--text-mute); }
.howto-steps__cta .btn { flex: 0 0 auto; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .howto-steps__list { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .howto-steps { --hs-marker: 40px; }
  .howto-step { gap: var(--s-4); }
  .howto-step__title { font-size: var(--t-h4); }
  .howto-steps__cta { flex-direction: column; align-items: stretch; }
  .howto-steps__cta .btn { width: 100%; }
}

/* ===== image-caption ===== */
/* ============================================================
 * image-caption · block.css
 * Скоуплено на .image-caption. Только токены (10-tokens/).
 * Назначение: иллюстративное изображение + подпись + клик→lightbox.
 * Конвенция: html-base (lightbox, lazy, bespoke SVG). Адаптив: 980 / 640.
 * Эталон качества/нейминга — casino-item-card.
 * ========================================================== */

.image-caption {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  max-width: var(--container-prose);
}
.image-caption--wide  { max-width: var(--container); }
.image-caption--full  { max-width: none; }
.image-caption--center { margin-inline: auto; }

/* ---- Рамка изображения (кликабельная зона / триггер lightbox) ---- */
.image-caption__frame {
  position: relative;
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--bg-2);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  cursor: zoom-in;
  color: inherit;
  -webkit-appearance: none;
  appearance: none;
  text-align: inherit;
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.image-caption__frame:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }
.image-caption__frame:hover .image-caption__img { transform: scale(1.02); }

.image-caption__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;        /* фикс-слот: единый коэффициент кадра */
  object-fit: cover;
  border-radius: inherit;
  background: var(--bg-3);
  transition: transform var(--dur-slow) var(--ease);
}
.image-caption--tall .image-caption__img    { aspect-ratio: 4 / 5; }
.image-caption--square .image-caption__img  { aspect-ratio: 1 / 1; }
.image-caption--auto .image-caption__img    { aspect-ratio: auto; }

/* Иконка «увеличить» — affordance lightbox */
.image-caption__zoom {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-end: var(--s-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--s-6);
  height: var(--s-6);
  color: var(--on-brand);
  background: color-mix(in srgb, var(--text) 64%, transparent);
  border-radius: var(--r-pill);
  opacity: 0;
  transform: scale(.9);
  pointer-events: none;
  transition: opacity var(--dur-base) var(--ease), transform var(--dur-base) var(--ease);
}
.image-caption__frame:hover .image-caption__zoom,
.image-caption__frame:focus-visible .image-caption__zoom { opacity: 1; transform: scale(1); }

/* ---- Подпись ---- */
.image-caption__caption {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.image-caption__credit {
  display: block;
  margin-top: var(--s-1);
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.image-caption__credit a { color: inherit; text-underline-offset: 2px; }
.image-caption__credit a:hover { color: var(--brand); }

/* Нумерация подписей (опц.) — CSS-counter, не в HTML.
   Включается на контейнере-обёртке: <div class="image-caption-figs">…</div> */
.image-caption-figs { counter-reset: igfig; }
.image-caption-figs .image-caption__caption::before {
  counter-increment: igfig;
  content: "Рис. " counter(igfig) ". ";
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-dim);
}

/* ============================================================
 * Lightbox — нативный <dialog>. Прогрессивно: без JS фигура
 * полностью видна; диалог открывает JS (showModal) по data-action.
 * ========================================================== */
.image-caption__lightbox {
  width: min(96vw, 1100px);
  max-width: none;
  max-height: 92vh;
  padding: 0;
  border: 0;
  border-radius: var(--r-lg);
  background: var(--surface);
  color: var(--text);
  box-shadow: var(--shadow-lift);
  overflow: hidden;
}
.image-caption__lightbox::backdrop {
  background: color-mix(in srgb, var(--text) 78%, transparent);
}
.image-caption__lb-inner {
  display: flex;
  flex-direction: column;
  max-height: 92vh;
}
.image-caption__lb-img {
  display: block;
  width: 100%;
  max-height: 78vh;
  object-fit: contain;
  background: var(--bg-3);
}
.image-caption__lb-cap {
  margin: 0;
  padding: var(--s-4) var(--s-5);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  border-top: var(--hairline);
}
.image-caption__lb-cap .image-caption__credit { color: var(--text-faint); }

/* Кнопка закрытия */
.image-caption__lb-close {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-end: var(--s-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--tap-min);
  min-height: var(--tap-min);
  color: var(--on-brand);
  background: color-mix(in srgb, var(--text) 64%, transparent);
  border: 0;
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: background var(--dur-quick) var(--ease);
}
.image-caption__lb-close:hover { background: var(--text); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .image-caption--wide { max-width: 100%; }
}
@media (max-width: 640px) {
  .image-caption__zoom { opacity: 1; transform: scale(1); }  /* без hover — показываем сразу */
  .image-caption__frame:hover .image-caption__img { transform: none; }
  .image-caption__lb-cap { padding: var(--s-3) var(--s-4); }
}

/* ===== inline-affiliate ===== */
/* ============================================================
 * inline-affiliate · block.css
 * Скоуплено на .inline-affiliate (= id). Только токены (10-tokens/).
 * Партнёрская ссылка/кнопка ВНУТРИ текста: вплетается в строку .prose,
 * не разрывая ритм абзаца. Два регистра: текст-линк (дефолт) и пилюля (--chip).
 * Конвенция: html-base (fake-link, data-*, bespoke SVG). Адаптив: 640.
 * Один акцент = --brand. Числа в подписи — tabular-nums.
 * ========================================================== */

/* ===== Регистр 1 · текст-линк (дефолт) =====
   Инлайн-элемент: тянется по базовой линии текста, переносится вместе со строкой. */
.inline-affiliate {
  display: inline;
  font-weight: var(--fw-semi);
  color: var(--brand);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-decoration-color: color-mix(in srgb, var(--brand) 45%, transparent);
  text-underline-offset: 2px;
  border-radius: var(--r-soft);
  transition: color var(--dur-quick) var(--ease),
              text-decoration-color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease);
}
.inline-affiliate:hover {
  color: color-mix(in srgb, var(--brand) 86%, #000);
  text-decoration-color: currentColor;
}
.inline-affiliate:active { color: var(--brand); }

/* Внешняя стрелка-маркер «уход на партнёра» — выровнена к тексту, не ломает строку */
.inline-affiliate__ic {
  display: inline-flex;
  vertical-align: -1px;
  margin-inline-start: 2px;
  color: currentColor;
  opacity: .8;
  transition: transform var(--dur-quick) var(--ease), opacity var(--dur-quick) var(--ease);
}
.inline-affiliate:hover .inline-affiliate__ic { transform: translate(1px, -1px); opacity: 1; }
.inline-affiliate__ic svg { display: block; }

/* Акцентная выгода в подписи (бонус/FS/%) — наследует брендовый цвет ссылки, tabular-nums */
.inline-affiliate__deal {
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* Пометка «реклама» — нейтральная микро-пилюля у текст-линка (необяз.) */
.inline-affiliate__tag {
  display: inline-block;
  vertical-align: 1px;
  margin-inline-start: 4px;
  padding: 1px var(--s-1);
  font-family: var(--font-body);
  font-size: 0.62em;
  font-weight: var(--fw-semi);
  line-height: 1.4;
  letter-spacing: .06em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--text-faint);
  background: var(--bg-3);
  border-radius: var(--r-soft);
}

/* ===== Регистр 2 · пилюля-кнопка (--chip) =====
   Inline-flex «таблетка» в потоке строки: компактная CTA без разрыва абзаца. */
.inline-affiliate--chip {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  vertical-align: baseline;
  margin-block: 1px;           /* лёгкий зазор по вертикали при переносе строки */
  padding: 4px var(--s-3);
  font-size: 0.9em;            /* привязка к размеру окружающего текста */
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  white-space: nowrap;
  color: var(--brand);
  text-decoration: none;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--brand) 38%, transparent);
  border-radius: var(--r-pill);
  transition: background var(--dur-quick) var(--ease),
              border-color var(--dur-quick) var(--ease),
              color var(--dur-quick) var(--ease),
              transform var(--dur-quick) var(--ease),
              box-shadow var(--dur-quick) var(--ease);
}
.inline-affiliate--chip:hover {
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 60%, transparent);
}
.inline-affiliate--chip:active { transform: translateY(1px); }

/* chip: иконка слева (галочка/значок) и стрелка справа */
.inline-affiliate__chip-ic,
.inline-affiliate__chip-arrow { display: inline-flex; flex: 0 0 auto; }
.inline-affiliate__chip-ic svg,
.inline-affiliate__chip-arrow svg { display: block; }
.inline-affiliate__chip-ic { color: var(--brand); }
.inline-affiliate__chip-arrow {
  margin-inline-start: -2px;
  opacity: .85;
  transition: transform var(--dur-quick) var(--ease), opacity var(--dur-quick) var(--ease);
}
.inline-affiliate--chip:hover .inline-affiliate__chip-arrow { transform: translateX(2px); opacity: 1; }
.inline-affiliate__chip-tx { font-variant-numeric: tabular-nums; }

/* chip · --ghost: мягкая залитая пилюля (тише дефолта, без рамки) */
.inline-affiliate--chip.inline-affiliate--ghost {
  background: var(--brand-soft);
  border-color: transparent;
}
.inline-affiliate--chip.inline-affiliate--ghost:hover {
  background: color-mix(in srgb, var(--brand) 18%, transparent);
}

/* chip · --solid: залитая брендом (сильный акцент — максимум один на абзац) */
.inline-affiliate--chip.inline-affiliate--solid {
  color: var(--on-brand);
  background: var(--brand);
  border-color: transparent;
  box-shadow: var(--shadow-card);
}
.inline-affiliate--chip.inline-affiliate--solid:hover {
  background: color-mix(in srgb, var(--brand) 88%, #000);
  box-shadow: var(--shadow-pop);
}
.inline-affiliate--chip.inline-affiliate--solid .inline-affiliate__chip-ic { color: var(--on-brand); }
.inline-affiliate--chip.inline-affiliate--solid .inline-affiliate__deal { color: var(--on-brand); }

/* ===== Адаптив / touch (640) =====
   На узких экранах chip получает увеличенный таргет (≥ --tap-min). */
@media (max-width: 640px) {
  .inline-affiliate--chip {
    min-height: var(--tap-min);
    padding-block: var(--s-2);
  }
}

/* ===== inline-compare ===== */
/* ============================================================
 * inline-compare · block.css
 * Скоуплено на .inline-compare. Только токены (10-tokens/{tokens,skins,base}.css).
 * Конвенция: ★research / премиум-планка (готовой разметки нет) — спроектировано
 *   по premium-сигналам; house-style нейминга/метров — эталон casino-item-card
 *   и портфельный .vs-* (hero-vs-compare). НО это in-prose figure (мини-врезка),
 *   не герой и не таблица: уже, плотнее, рассчитан на поток .prose.
 * Один акцент = --brand. --success ТОЛЬКО по смыслу («сильнее» в строке / лучший балл).
 * Числа — tabular-nums. Touch CTA ≥ 36px (.btn--sm), drawer-summary ≥ --tap-min.
 * Адаптив: 640 — стороны в столбик, центр «vs» становится горизонтальным.
 * ========================================================== */

.inline-compare {
  --ic-logo: 56px;            /* фикс-слот лого оператора (компактный) */
  --ic-max: 46rem;            /* врезка чуть шире prose-колонки, но не во всю ширину */

  display: block;
  max-width: var(--ic-max);
  margin-block: var(--s-6);   /* отбивка от абзацев .prose */
  margin-inline: auto;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  font-variant-numeric: tabular-nums;
}

/* ---- Eyebrow (необязательная подпись врезки) ---- */
.inline-compare__eyebrow {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0 0 var(--s-4);
  font-size: var(--t-tiny);
  letter-spacing: .1em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}
.inline-compare__eyebrow-ic { display: inline-flex; color: var(--brand); }

/* ---- Сетка: A · vs · B + meta/details на всю ширину ---- */
.inline-compare__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  grid-template-areas:
    "a vs b"
    "meta meta meta"
    "det det det";
  align-items: stretch;
  gap: var(--s-4);
}

/* ============================================================
 * Сторона оператора (A / B) — фикс-слот лого, имя, лицензия, score-метр, CTA
 * ========================================================== */
.ic-side {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-4) var(--s-3) var(--s-3);
  text-align: center;
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.ic-side--a { grid-area: a; }
.ic-side--b { grid-area: b; }

/* Бейдж «наш выбор» — смысловой success, не декор; смысл продублирован текстом */
.ic-side__badge {
  position: absolute;
  top: calc(-1 * var(--s-2));
  inset-inline: 0;
  width: fit-content;
  margin-inline: auto;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .02em;
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.ic-side__badge--win { color: var(--on-brand); background: var(--success); }
.ic-side__badge-ic { display: inline-flex; }

.ic-side__logo {
  width: var(--ic-logo);
  height: var(--ic-logo);
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--surface);
  border: var(--hairline);
}
/* Fallback-инициал, если лого нет */
.ic-side__logo--mono {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--brand);
  background: var(--brand-soft);
}

.ic-side__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.ic-side__license {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* Score-метр (dataviz вместо звёзд): число + бар */
.ic-side__score {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  margin-top: var(--s-1);
}
.ic-side__score-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin: 0;
}
.ic-side__score-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.ic-side__score-v {
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.ic-side__score-v small { color: var(--text-faint); font-weight: var(--fw-medium); }

.ic-side__bar {
  display: block;
  height: 7px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.ic-side__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ОДНА CTA на сторону, прижата к низу — фикс-слоты выравниваются по высоте */
.ic-side .btn { margin-top: auto; }

/* ============================================================
 * Центр — разделитель «vs»
 * ========================================================== */
.inline-compare__center {
  grid-area: vs;
  align-self: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-2);
}
.inline-compare__line {
  flex: 1;
  width: 2px;
  min-height: var(--s-4);
  background: var(--rule);
}
.inline-compare__vs {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  font-family: var(--font-display);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  font-style: italic;
  color: var(--text-mute);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
}

/* ============================================================
 * Head-to-head строки (значение-A · подпись · значение-B)
 * ========================================================== */
.ic-meta {
  grid-area: meta;
  margin: 0;
  padding-top: var(--s-4);
  border-top: var(--hairline);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ic-meta__row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-2) var(--s-3);
  border-radius: var(--r-soft);
}
.ic-meta__row:nth-child(odd) { background: var(--bg-2); }

.ic-meta__k {
  grid-column: 2;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  text-align: center;
  white-space: nowrap;
}
.ic-meta__v {
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.ic-meta__v--a { text-align: right; }
.ic-meta__v--b { text-align: left; }

/* «Сильнее» в строке — смысловой success + иконка (не только цвет) */
.ic-meta__v--win { color: var(--success); }
.ic-meta__win-ic { display: inline-block; vertical-align: -1px; color: var(--success); }
.ic-meta__v--a .ic-meta__win-ic { margin-inline: 0 2px; }
.ic-meta__v--b .ic-meta__win-ic { margin-inline: 2px 0; }

/* ============================================================
 * Drawer деталей (нативный <details>) — держит карточку чистой
 * ========================================================== */
.inline-compare__details { grid-area: det; border-top: var(--hairline); }
.inline-compare__summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding-top: var(--s-2);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  cursor: pointer;
  list-style: none;                 /* убрать дефолтный маркер раскрытия */
  user-select: none;
  transition: color var(--dur-quick) var(--ease);
}
.inline-compare__summary::-webkit-details-marker { display: none; }
.inline-compare__summary:hover { color: var(--brand); }
.inline-compare__summary-ic {
  display: inline-flex;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease), color var(--dur-quick) var(--ease);
}
.inline-compare__summary:hover .inline-compare__summary-ic { color: var(--brand); }
.inline-compare__details[open] .inline-compare__summary-ic { transform: rotate(180deg); }

.inline-compare__note {
  margin: var(--s-2) 0 0;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}

/* ============================================================
 * Вариант --compact: без meta/drawer — только лого/имя/балл/CTA
 * ========================================================== */
.inline-compare--compact { padding: var(--s-4); }
.inline-compare--compact .inline-compare__grid {
  grid-template-areas: "a vs b";
  gap: var(--s-3);
}

/* ============================================================
 * Адаптив — на узких экранах стороны в столбик, «vs» горизонтальный
 * ========================================================== */
@media (max-width: 640px) {
  .inline-compare { padding: var(--s-4); }

  /* «vs» сохраняет свой узкий столбец между сторонами (без overlap-хаков) */
  .inline-compare__grid,
  .inline-compare--compact .inline-compare__grid {
    grid-template-columns: 1fr auto 1fr;
    grid-template-areas:
      "a vs b"
      "meta meta meta"
      "det det det";
    gap: var(--s-2);
  }
  .inline-compare--compact .inline-compare__grid {
    grid-template-areas: "a vs b";
  }

  .ic-side { padding: var(--s-4) var(--s-2) var(--s-3); }

  /* Вертикальные линии прячем — остаётся компактный кружок «vs» */
  .inline-compare__line { display: none; }

  /* meta-строки в столбик: подпись сверху, значения в ряд */
  .ic-meta__row {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "k k"
      "a b";
    gap: var(--s-1) var(--s-3);
    text-align: center;
  }
  .ic-meta__k { grid-area: k; grid-column: 1 / -1; }
  .ic-meta__v--a { grid-area: a; text-align: center; }
  .ic-meta__v--b { grid-area: b; text-align: center; }
}

/* ===== issue-cover ===== */
/* ============================================================
 * issue-cover · block.css
 * Скоуплено на .issue-cover. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (drawer = data-action="disclosure",
 *   общий components.js, прогрессивно). Эталон нейминга/слотов/тени:
 *   casino-item-card; масштхед — родственник hero-editorial-cover,
 *   но это «обложка + содержание» (cover-панель + сканируемый index),
 *   а не full-bleed hero.
 * Раскладка: 2 колонки (cover | index) на десктопе → стопка на ≤980px.
 * Один акцент — --brand (масштхед-рубрика, lead-флаг, фолио index, CTA).
 *   Функциональных success/danger нет (редакц. блок, не статусы).
 * Позиция в index — CSS-counter (.issue-cover__index-list → строки), НЕ в HTML.
 * Числа — tabular-nums. Адаптив: 980 / 640. touch ≥ --tap-min.
 * ========================================================== */

.issue-cover {
  /* ширина колонки index (содержания) на десктопе */
  --ic-index-col: 38%;
  /* фикс-слот фолио (номер материала в index) */
  --ic-folio: 30px;

  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--ic-index-col);
  gap: var(--s-7);
  align-items: start;
  color: var(--text);
}

/* ============================================================
 * 1 · COVER-панель (масштхед выпуска)
 * ========================================================== */
.issue-cover__cover { min-width: 0; }

/* Масштхед: рубрика-выпуск · дата · тема — единственная акцент-строка сверху */
.issue-cover__masthead {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin: 0 0 var(--s-4);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--brand);
}
.issue-cover__issue-num { font-variant-numeric: tabular-nums; }
.issue-cover__date { font-variant-numeric: tabular-nums; }
.issue-cover__theme { color: var(--text-mute); }
.issue-cover__dot {
  width: 4px;
  height: 4px;
  flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: var(--rule-strong);
}

/* Титул номера */
.issue-cover__title {
  margin: 0 0 var(--s-4);
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.015em;
  color: var(--text);
  text-wrap: balance;
}
.issue-cover__title-em { color: var(--brand); }

.issue-cover__dek {
  margin: 0;
  max-width: var(--container-prose);
}
.issue-cover__num { font-variant-numeric: tabular-nums; }

/* ---- Заметка редактора: drawer держит обложку чистой ---- */
.issue-cover__note { margin-top: var(--s-5); }
.issue-cover__note-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  font: inherit;
  font-size: var(--t-small);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: background var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.issue-cover__note-btn:hover { background: var(--surface-2); border-color: var(--rule-strong); }
.issue-cover__note-ava {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  color: var(--brand);
}
.issue-cover__note-by { color: var(--text-mute); }
.issue-cover__note-by b { font-weight: var(--fw-semi); color: var(--text-dim); }
.issue-cover__note-chev {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease);
}
.issue-cover__note-btn[aria-expanded="true"] .issue-cover__note-chev { transform: rotate(180deg); }

.issue-cover__note-drawer {
  margin-top: var(--s-3);
  padding: var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--surface);
  border: var(--hairline);
  border-left: 3px solid var(--brand);
  border-radius: var(--r-md);
}
.issue-cover__note-drawer[hidden] { display: none; }
.issue-cover__note-drawer p { margin: 0; }

/* ---- Lead-story: главный материал номера (фикс-слот карточки, ОДНА CTA) ---- */
.issue-cover__lead {
  margin-top: var(--s-6);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
.issue-cover__lead-kicker {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0 0 var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.issue-cover__lead-flag {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--s-2);
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-soft);
  letter-spacing: .06em;
}
.issue-cover__lead-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Мета lead-story: пары метка/значение с волосок-разделителями */
.issue-cover__lead-meta {
  display: flex;
  align-items: stretch;
  flex-wrap: wrap;
  gap: var(--s-4);
  margin: var(--s-4) 0 0;
}
.issue-cover__lead-stat { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.issue-cover__lead-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.issue-cover__lead-v {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.issue-cover__lead-sep {
  width: 1px;
  align-self: stretch;
  background: var(--rule);
  flex: 0 0 auto;
}
.issue-cover__lead-cta { margin-top: var(--s-5); }
.issue-cover__lead-cta-ic { transition: transform var(--dur-quick) var(--ease); }
.issue-cover__lead-cta:hover .issue-cover__lead-cta-ic { transform: translateX(3px); }

/* ============================================================
 * 2 · INDEX (содержание выпуска)
 * ========================================================== */
.issue-cover__index {
  position: sticky;
  top: calc(var(--header-h) + var(--s-4));
  padding: var(--s-5);
  background: var(--surface-2);
  border: var(--hairline);
  border-radius: var(--r-lg);
}
.issue-cover__index-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-3);
  padding-bottom: var(--s-3);
  border-bottom: 1px solid var(--rule-strong);
}
.issue-cover__index-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
}
.issue-cover__index-total {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
  margin: 0;
  flex: 0 0 auto;
}
.issue-cover__index-total-num {
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.issue-cover__index-total-label {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* Нумерация — CSS-counter */
.issue-cover__index-list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: ic-idx;
}
.issue-cover__index-row { counter-increment: ic-idx; }

.issue-cover__entry {
  display: grid;
  grid-template-columns: var(--ic-folio) minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-3) var(--s-2);
  min-height: var(--tap-min);
  text-decoration: none;
  color: inherit;
  border-top: var(--hairline);
  border-radius: var(--r-md);
  transition: background var(--dur-quick) var(--ease);
}
.issue-cover__index-row:first-child .issue-cover__entry { border-top: 0; }
.issue-cover__entry:hover { background: var(--surface); }
/* строка-новинка: тонкий акцент-кант слева (модификатор --new) */
.issue-cover__index-row--new .issue-cover__entry { box-shadow: inset 2px 0 0 0 var(--brand); }

.issue-cover__entry-folio {
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.issue-cover__entry-folio::before { content: counter(ic-idx, decimal-leading-zero); }
/* активный/текущий материал — акцентное фолио */
.issue-cover__entry[aria-current="page"] .issue-cover__entry-folio { color: var(--brand); }

.issue-cover__entry-body { min-width: 0; }
.issue-cover__entry-kicker {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.issue-cover__entry-tag {
  display: inline-flex;
  align-items: center;
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.issue-cover__entry-title {
  display: block;
  margin-top: 2px;
  font-family: var(--font-display);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
  transition: color var(--dur-quick) var(--ease);
}
.issue-cover__entry:hover .issue-cover__entry-title { color: var(--brand); }

.issue-cover__entry-read {
  font-size: var(--t-tiny);
  color: var(--text-faint);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.issue-cover__entry-chev {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.issue-cover__entry:hover .issue-cover__entry-chev { transform: translateX(3px); color: var(--brand); }

.issue-cover__index-foot {
  margin: var(--s-4) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-faint);
}

/* ============================================================
 * Вариант --compact: только cover-панель (сайдбар/архив), без index.
 * ========================================================== */
.issue-cover--compact {
  display: block;
  padding: var(--s-5);
  background: var(--surface-2);
  border: var(--hairline);
  border-radius: var(--r-lg);
}
.issue-cover--compact .issue-cover__title { font-size: var(--t-h2); }
.issue-cover--compact .issue-cover__lead {
  margin-top: var(--s-5);
  background: var(--surface);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .issue-cover {
    grid-template-columns: 1fr;
    gap: var(--s-6);
  }
  .issue-cover__index { position: static; }
}
@media (max-width: 640px) {
  .issue-cover { gap: var(--s-5); }
  .issue-cover__lead, .issue-cover__index, .issue-cover--compact { padding: var(--s-4); }
  .issue-cover__lead-meta { gap: var(--s-3); }
  /* index-строка: фолио + тело сверху, мета (время+шеврон) уводим вниз вправо */
  .issue-cover__entry {
    grid-template-columns: var(--ic-folio) minmax(0, 1fr) auto;
  }
  .issue-cover__entry-read { grid-column: 2; justify-self: start; margin-top: 2px; }
  .issue-cover__entry-chev { grid-column: 3; grid-row: 1 / span 2; }
}

/* ===== jump-links ===== */
/* ============================================================
 * jump-links · block.css
 * Скоуплено на .jump-links. Только токены (10-tokens/{tokens,skins,base}.css).
 * Назначение/анатомия: горизонтальная лента чип-якорей к секциям страницы.
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   pill-чипы на --bg-2 + --hairline, дисциплина нейтралей, один акцент --brand,
 *   tabular-nums на индексе. Эталон нейминга/слотов — casino-item-card; чип-идиома
 *   и aria-current="location" — как в .vs-toc (hero-vs-compare).
 * Якорный отступ прокрутки берётся из base (scroll-padding-top на <html>).
 * Адаптив: 980 / 640 — на узких лента становится горизонтальным скроллером
 *   со scroll-snap и edge-fade. Touch ≥ --tap-min. Motion функц. (reduced — из base).
 * ========================================================== */

.jump-links {
  --jl-chip-h: var(--tap-min);          /* высота чипа = тач-цель */
  --jl-fade: var(--s-6);                /* ширина edge-fade у скроллера */

  display: flex;
  align-items: center;
  gap: var(--s-4);
  min-width: 0;
  font-family: var(--font-body);
  color: var(--text);
}

/* ---- Лейбл-ориентир (фикс-слот слева) ---- */
.jump-links__label {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  flex: 0 0 auto;
  margin: 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--text-mute);
  white-space: nowrap;
}
.jump-links__label-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--brand);
}

/* ---- Лента чипов ---- */
.jump-links__list {
  list-style: none;
  margin: 0;
  padding: 0;
  min-width: 0;
  counter-reset: jl;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2);
}
.jump-links__item { display: block; counter-increment: jl; }

/* ---- Чип-якорь ---- */
.jump-links__chip {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--jl-chip-h);
  padding: var(--s-1) var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  text-decoration: none;
  white-space: nowrap;
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  transition:
    color var(--dur-quick) var(--ease),
    background var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-quick) var(--ease);
}

/* Hover / focus — один акцент (--brand), мягкая подложка */
.jump-links__chip:hover {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 45%, transparent);
}
/* :focus-visible наследуется из base — подвинем ринг внутрь pill-формы */
.jump-links__chip:focus-visible { outline-offset: 2px; }

/* ---- Активный чип (scroll-spy проставляет aria-current="location") ----
   состояние не только цветом: заливка + рельс-инсет слева. */
.jump-links__chip[aria-current="location"] {
  color: var(--on-brand);
  background: var(--brand);
  border-color: var(--brand);
  box-shadow: var(--shadow-card);
}
.jump-links__chip[aria-current="location"]:hover {
  color: var(--on-brand);
  background: color-mix(in srgb, var(--brand) 88%, #000);
  border-color: color-mix(in srgb, var(--brand) 88%, #000);
}

/* ============================================================
 * Вариант --numbered: числовой индекс перед подписью (CSS counter)
 * ========================================================== */
.jump-links--numbered .jump-links__chip::before {
  content: counter(jl, decimal-leading-zero);
  flex: 0 0 auto;
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}
.jump-links--numbered .jump-links__chip:hover::before { color: var(--brand); }
.jump-links--numbered .jump-links__chip[aria-current="location"]::before { color: var(--on-brand); }

/* ============================================================
 * Вариант --sticky: рейл прилипает под хедером
 * ========================================================== */
.jump-links--sticky {
  position: sticky;
  top: var(--header-h);
  z-index: var(--z-sticky);
  padding: var(--s-3) var(--gutter);
  margin-inline: calc(-1 * var(--gutter));   /* фон тянется на ширину контейнера */
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  border-bottom: var(--hairline);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}

/* ============================================================
 * Адаптив
 * ========================================================== */
@media (max-width: 980px) {
  /* Лента вместо переноса — горизонтальный скроллер со snap и edge-fade.
     Лейбл уходит наверх, чипы скроллятся в одну строку. */
  .jump-links { flex-direction: column; align-items: stretch; gap: var(--s-2); }

  .jump-links__list {
    flex-wrap: nowrap;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;                       /* убираем полосу — рейл «чистый» */
    /* затухание у обоих краёв подсказывает прокрутку */
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 var(--jl-fade), #000 calc(100% - var(--jl-fade)), transparent 100%);
            mask-image: linear-gradient(90deg, transparent 0, #000 var(--jl-fade), #000 calc(100% - var(--jl-fade)), transparent 100%);
    padding-inline: var(--s-1);                  /* чтобы focus-ring крайних чипов не срезался */
  }
  .jump-links__list::-webkit-scrollbar { display: none; }
  .jump-links__item { scroll-snap-align: start; flex: 0 0 auto; }

  /* Sticky-рейл на планшете прижат к верху вьюпорта (хедер может коллапсить) */
  .jump-links--sticky { top: 0; padding-block: var(--s-2); }
}

@media (max-width: 640px) {
  .jump-links__chip { padding: var(--s-1) var(--s-3); }
  .jump-links--sticky { padding-inline: var(--gutter); }
}

/* ===== kyc-level-explainer-grid ===== */
/* ============================================================
 * kyc-level-explainer-grid · block.css
 * Скоуплено на .kyc-grid. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Грид карточек-ступеней KYC.
 * ОДИН акцент --brand (рекомендованная ступень .is-recommended).
 * Метры: анонимность (--info) ↔ лимиты (--brand) — dataviz вместо звёзд.
 * Адаптив: 980 — 1 колонка с акцентом по центру; 640 — стек.
 * ========================================================== */

.kyc-grid {
  display: block;
  font-variant-numeric: tabular-nums;
}

/* ---- Заголовок блока ---- */
.kyc-grid__head { max-width: var(--container-prose); margin-bottom: var(--s-6); }
.kyc-grid__eyebrow { margin-bottom: var(--s-2); }
.kyc-grid__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.kyc-grid__lede { margin-top: var(--s-3); }

/* ---- Легенда метров ---- */
.kyc-grid__legend {
  list-style: none; margin: 0 0 var(--s-4); padding: 0;
  display: flex; flex-wrap: wrap; gap: var(--s-4);
}
.kyc-grid__legend-item {
  display: inline-flex; align-items: center; gap: var(--s-2);
  font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-mute); font-weight: var(--fw-semi);
}
.kyc-grid__legend-dot { width: 12px; height: 6px; border-radius: var(--r-pill); }
.kyc-grid__legend-dot--anon { background: var(--info); }
.kyc-grid__legend-dot--limit { background: var(--brand); }

/* ---- Грид ступеней ---- */
.kyc-grid__list {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-4);
  align-items: stretch;
}

/* ---- Карточка-ступень (surface + hairline + r-lg + shadow) ---- */
.kyc-card { display: flex; }
.kyc-card__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  width: 100%;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.kyc-card__inner:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }

/* Рекомендованная ступень — единственный акцент --brand */
.kyc-card.is-recommended .kyc-card__inner {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop), inset 0 3px 0 0 var(--brand);
}
.kyc-card__badge {
  position: absolute; top: calc(-1 * var(--s-3)); left: var(--s-5);
  display: inline-flex; align-items: center;
  padding: 3px var(--s-3);
  font-size: var(--t-tiny); font-weight: var(--fw-bold);
  letter-spacing: .06em; text-transform: uppercase;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill); box-shadow: var(--shadow-card);
}

/* ---- Верх: иконка-ступень + заголовки ---- */
.kyc-card__top { display: flex; align-items: flex-start; gap: var(--s-3); }
.kyc-card__step {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
.kyc-card__titles { min-width: 0; }
.kyc-card__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.kyc-card__tag {
  margin: 2px 0 0;
  font-size: var(--t-small);
  color: var(--text-mute);
}

.kyc-card__desc { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-dim); }

/* ---- Метры (dataviz) ---- */
.kyc-meters { display: flex; flex-direction: column; gap: var(--s-3); margin: 0; }
.kyc-meter { display: block; }
.kyc-meter__k {
  font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-mute);
}
.kyc-meter__v {
  margin: var(--s-1) 0 0;
  display: flex; align-items: center; gap: var(--s-2);
}
.kyc-meter__bar {
  flex: 1 1 auto;
  height: 7px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.kyc-meter__fill {
  display: block; height: 100%;
  width: calc(var(--val) * 1%);
  border-radius: inherit;
}
.kyc-meter__bar--anon .kyc-meter__fill { background: var(--info); }
.kyc-meter__bar--limit .kyc-meter__fill { background: linear-gradient(90deg, color-mix(in srgb, var(--brand) 55%, var(--bg-3)), var(--brand)); }
.kyc-meter__num {
  flex: 0 0 auto;
  min-width: 4.5em; text-align: right;
  font-size: var(--t-small); font-weight: var(--fw-semi);
  color: var(--text); font-variant-numeric: tabular-nums;
}

/* ---- Факты (фикс-слоты) ---- */
.kyc-card__facts {
  display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-2);
}
.kyc-fact {
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.kyc-fact__k { display: block; font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }
.kyc-fact__v { display: block; margin-top: 2px; font-weight: var(--fw-semi); font-size: var(--t-small); color: var(--text); font-variant-numeric: tabular-nums; }

/* ---- Drawer «Что нужно» ---- */
.kyc-card__more { margin-top: auto; border-top: var(--hairline); padding-top: var(--s-3); }
.kyc-card__more-btn {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-2);
  width: 100%; min-height: var(--tap-min);
  font-size: var(--t-small); font-weight: var(--fw-semi);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.kyc-card__more-btn:hover { color: var(--brand); }
.kyc-card__chev { transition: transform var(--dur-base) var(--ease); }
.kyc-card__more-btn[aria-expanded="true"] .kyc-card__chev { transform: rotate(180deg); }

.kyc-card__req { margin-top: var(--s-3); }
.kyc-card__req[hidden] { display: none; }

.kyc-reqlist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-2); }
.kyc-reqlist__item {
  position: relative;
  padding-left: var(--s-6);
  font-size: var(--t-small); line-height: var(--lh-snug);
  color: var(--text-dim);
}
.kyc-reqlist__item::before {
  content: ""; position: absolute; left: 0; top: 1px;
  width: 18px; height: 18px;
  border-radius: var(--r-pill);
  background-repeat: no-repeat; background-position: center;
}
/* Состояние не только цветом: разные глифы (✓ / ✕) через inline SVG в маске */
.kyc-reqlist__item--ok { color: var(--text-dim); }
.kyc-reqlist__item--ok::before {
  background-color: var(--success-soft);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%231d7a52' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m20 6-11 11-5-5'/%3E%3C/svg%3E");
  background-size: 12px 12px;
}
.kyc-reqlist__item--no { color: var(--text-mute); }
.kyc-reqlist__item--no::before {
  background-color: var(--danger-soft);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23b5302b' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E");
  background-size: 12px 12px;
}

.kyc-card__note { margin: var(--s-3) 0 0; font-size: var(--t-tiny); line-height: var(--lh-snug); }

.kyc-grid__foot { margin-top: var(--s-5); font-size: var(--t-small); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .kyc-grid__list { grid-template-columns: 1fr; max-width: 560px; }
  /* рекомендованную поднимаем визуально первой */
  .kyc-card.is-recommended { order: -1; }
}
@media (max-width: 640px) {
  .kyc-card__inner { padding: var(--s-4); }
  .kyc-card__facts { grid-template-columns: 1fr 1fr; }
  .kyc-meter__v { flex-wrap: wrap; }
  .kyc-meter__num { min-width: 0; }
}

/* ===== land-based-casino-cards ===== */
/* ============================================================
 * land-based-casino-cards · block.css
 * Скоуплено на .lbc-cards / .lbc-card. Только токены (10-tokens/).
 * Гео-листинг НАЗЕМНЫХ казино: фикс-слот фото + город/дистанция
 * + статус «открыто» + рейтинг-метр + фикс-слоты (столы/автоматы/год)
 * + аменити-чипы + ОДНА CTA (маршрут) + drawer (часы/адрес). tabular-nums.
 * Конвенция: ★research + _CONTRACT (эталон casino-item-card). Адаптив: 980 / 640.
 * Drawer часов — нативный <details>, раскрытие grid-rows 0fr→1fr (без JS-замера).
 * ========================================================== */

/* ---- Сетка карточек (3 → 2 → 1) ---- */
.lbc-cards__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: var(--s-5);
}

/* ============================================================
 * Карточка
 * ========================================================== */
.lbc-card {
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden; /* фото скругляется по карточке */
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease), border-color var(--dur-base) var(--ease);
}
.lbc-card:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); }

/* Рекомендованная площадка — акцентная рамка (один акцент --brand) */
.lbc-card--featured { border-color: var(--brand); }

/* ---- 1 · Медиа: фото фасада (фикс-слот) ---- */
.lbc-card__media {
  position: relative;
  aspect-ratio: 16 / 9;
  background: var(--bg-2);
}
.lbc-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* Бейдж «Рекомендуем» поверх фото */
.lbc-card__flag {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-start: var(--s-3);
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
/* Статус работы — функциональный цвет (открыто/закрыто), не декор */
.lbc-card__status {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-end: var(--s-3);
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  border-radius: var(--r-pill);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.lbc-card__status::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: var(--r-pill);
  background: currentColor;
}
.lbc-card__status[data-state="open"]   { color: var(--success); }
.lbc-card__status[data-state="closed"] { color: var(--text-mute); }

/* ---- 2 · Тело карточки ---- */
.lbc-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding: var(--s-4);
  flex: 1 1 auto; /* CTA прижимается к низу при разной высоте */
}

/* Шапка тела: имя + дистанция */
.lbc-card__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--s-3);
}
.lbc-card__name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  min-width: 0;
}
.lbc-card__distance {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.lbc-card__distance svg { color: var(--text-faint); }

/* Локация: город / регион */
.lbc-card__loc {
  display: flex;
  align-items: center;
  gap: var(--s-1);
  margin-top: calc(-1 * var(--s-2));
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.lbc-card__loc svg { flex: 0 0 auto; color: var(--text-faint); }
.lbc-card__loc-region { color: var(--text-faint); }

/* ---- 3 · Рейтинг-метр (dataviz вместо звёзд) ---- */
.lbc-card__rating { display: flex; flex-direction: column; gap: var(--s-1); }
.lbc-card__rating-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
}
.lbc-card__rating-k {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.lbc-card__rating-v {
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.lbc-card__rating-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.lbc-card__rating-bar {
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.lbc-card__rating-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}
.lbc-card__reviews { font-size: var(--t-tiny); color: var(--text-faint); font-variant-numeric: tabular-nums; }

/* ---- 4 · Фикс-слоты: столы / автоматы / год ---- */
.lbc-card__stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--s-2);
  margin: 0;
  padding-block: var(--s-3);
  border-top: var(--hairline);
  border-bottom: var(--hairline);
}
.lbc-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  text-align: center;
}
.lbc-stat + .lbc-stat { border-left: var(--hairline); }
.lbc-stat__v {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  line-height: var(--lh-tight);
}
.lbc-stat__k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* ---- 5 · Аменити-чипы ---- */
.lbc-card__amenities {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.lbc-amenity {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  color: var(--text-dim);
  background: var(--bg-2);
  border-radius: var(--r-soft);
}
.lbc-amenity svg { flex: 0 0 auto; color: var(--text-faint); }

/* ---- 6 · Drawer: часы и адрес (нативный <details>) ---- */
.lbc-card__details { margin-top: var(--s-1); }
.lbc-card__details-q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
  min-height: var(--tap-min);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.lbc-card__details-q::-webkit-details-marker { display: none; } /* убрать дефолтный треугольник */
.lbc-card__details-q:hover { color: var(--brand); }
.lbc-card__details[open] .lbc-card__details-q { color: var(--brand); }

.lbc-card__chevron {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.lbc-card__details-q:hover .lbc-card__chevron { color: var(--brand); }
.lbc-card__details[open] .lbc-card__chevron { transform: rotate(180deg); color: var(--brand); }

/* Раскрытие: grid-rows 0fr→1fr (плавная высота без JS-замера) */
.lbc-card__details-a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.lbc-card__details[open] .lbc-card__details-a { grid-template-rows: 1fr; }
.lbc-card__details-inner {
  overflow: hidden;
  min-height: 0; /* критично для коллапса grid-строки */
}

/* Адрес + таблица часов внутри drawer */
.lbc-card__address {
  display: flex;
  gap: var(--s-2);
  padding-top: var(--s-3);
  font-style: normal;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}
.lbc-card__address svg { flex: 0 0 auto; margin-top: 2px; color: var(--text-faint); }

.lbc-hours {
  width: 100%;
  margin-top: var(--s-3);
  border-collapse: collapse;
  font-size: var(--t-small);
}
.lbc-hours caption {
  text-align: left;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
  margin-bottom: var(--s-1);
}
.lbc-hours th,
.lbc-hours td {
  padding: 2px 0;
  text-align: left;
  font-weight: var(--fw-body);
}
.lbc-hours th { color: var(--text-mute); font-weight: var(--fw-medium); }
.lbc-hours td { color: var(--text-dim); text-align: right; font-variant-numeric: tabular-nums; }
.lbc-hours tr[aria-current="date"] th,
.lbc-hours tr[aria-current="date"] td { color: var(--brand); font-weight: var(--fw-semi); }

/* ---- 7 · CTA: одна на карточку ---- */
.lbc-card__cta { margin-top: auto; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .lbc-cards__list { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .lbc-cards__list { grid-template-columns: 1fr; }
  .lbc-card__body { gap: var(--s-3); padding: var(--s-4); }
  /* Статы в строку: разделитель сверху, не слева */
  .lbc-card__stats { grid-template-columns: 1fr; gap: 0; }
  .lbc-stat {
    flex-direction: row;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--s-3);
    text-align: left;
    padding-block: var(--s-2);
  }
  .lbc-stat + .lbc-stat { border-left: none; border-top: var(--hairline); }
  .lbc-stat__v { font-size: var(--t-body); }
}

/* ============ Reduced motion: без анимации высоты/шеврона ============ */
@media (prefers-reduced-motion: reduce) {
  .lbc-card__details-a { transition: none; }
  .lbc-card__chevron { transition: color var(--dur-quick) var(--ease); }
}

/* ===== language-switcher ===== */
/* ============================================================
 * language-switcher · block.css
 * Скоуплено на .lang-switcher. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (lang switcher, data-href-{lang}).
 * JS-хук: components.js data-action="lang" → .is-open + aria-expanded.
 * Адаптив: на <640 пункты остаются тач-комфортными (>= --tap-min).
 * ========================================================== */

.lang-switcher {
  position: relative;
  display: inline-block;
  font-family: var(--font-body);
}

/* ---- Триггер (код текущего языка) ---- */
.lang-switcher__trigger {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: 0 var(--s-3);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  transition: border-color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease);
}
.lang-switcher__trigger:hover { border-color: var(--rule-strong); }
.lang-switcher__trigger[aria-expanded="true"] {
  border-color: var(--brand);
  background: var(--brand-soft);
}

.lang-switcher__globe { display: inline-flex; color: var(--text-mute); }
.lang-switcher__trigger[aria-expanded="true"] .lang-switcher__globe { color: var(--brand); }

.lang-switcher__code {
  letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
}

.lang-switcher__chevron {
  display: inline-flex;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease);
}
.lang-switcher__trigger[aria-expanded="true"] .lang-switcher__chevron {
  transform: rotate(180deg);
  color: var(--brand);
}

/* ---- Дропдаун ---- */
.lang-switcher__menu {
  position: absolute;
  inset-inline-end: 0;
  top: calc(100% + var(--s-2));
  z-index: var(--z-popover);
  min-width: max(160px, 100%);
  margin: 0;
  padding: var(--s-1);
  list-style: none;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);

  /* закрытое состояние — скрыто, но анимируемо */
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity var(--dur-quick) var(--ease),
              transform var(--dur-quick) var(--ease),
              visibility var(--dur-quick) var(--ease);
}
.lang-switcher__menu.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

/* ---- Пункт языка ---- */
.lang-switcher__opt {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  border-radius: var(--r-soft);
  color: var(--text-dim);
  text-decoration: none;
  transition: background var(--dur-quick) var(--ease),
              color var(--dur-quick) var(--ease);
}
.lang-switcher__opt:hover { background: var(--bg-2); color: var(--text); }

.lang-switcher__opt-code {
  font-weight: var(--fw-bold);
  font-size: var(--t-small);
  letter-spacing: .04em;
  color: var(--text-mute);
}
.lang-switcher__opt-name { font-size: var(--t-small); }

.lang-switcher__opt-check {
  display: inline-flex;
  color: var(--brand);
  opacity: 0;
}

/* ---- Текущий язык ---- */
.lang-switcher__opt.is-current {
  background: var(--brand-soft);
  color: var(--brand);
}
.lang-switcher__opt.is-current .lang-switcher__opt-code { color: var(--brand); }
.lang-switcher__opt.is-current .lang-switcher__opt-check { opacity: 1; }
.lang-switcher__opt.is-current:hover { background: var(--brand-soft); }

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  /* В тесном мобильном header триггер компактнее, меню тянется до края экрана */
  .lang-switcher__menu { min-width: 184px; }
}

/* ===== last-updated-stamp ===== */
/* ============================================================
 * last-updated-stamp · block.css
 * Скоуплено на .last-updated-stamp. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (freshness.js опционален).
 * Сигнал-источник: premium-signals §8 (freshness stamp = premium).
 * Адаптив: 640 (на ≤640 не ломается; см. ниже). JS не требуется.
 * ========================================================== */

.last-updated-stamp {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  /* Один нейтральный регистр: приглушённый текст, без акцента-декора. */
  font-family: var(--font-body);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  /* Дефолт — лёгкая подложка-пилюля, чтобы штамп читался как мета-метка. */
  padding: var(--s-1) var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-pill);
  white-space: nowrap;
}

/* ---- Иконка часов (декоративная, наследует цвет от текста) ---- */
.last-updated-stamp__icon {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
}

/* ---- Подпись «Обновлено» (i18n через data-label) ---- */
.last-updated-stamp__label {
  letter-spacing: 0.01em;
}

/* ---- Дата: табличные цифры, чуть плотнее по весу ---- */
.last-updated-stamp__date {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  /* Стабильная ширина даты при i18n-подмене (DD.MM.YYYY всегда ровный). */
  font-feature-settings: "tnum" 1;
}

/* ============ Варианты ============ */

/* B · --bare — текст-метка без подложки (мета-ряд/подвал) */
.last-updated-stamp--bare {
  padding: 0;
  background: none;
  border-radius: 0;
  font-size: var(--t-tiny);
}
.last-updated-stamp--bare .last-updated-stamp__date {
  font-weight: var(--fw-semi);
}

/* C · --chip — на поверхности карточки (как мини-бейдж в углу карточки) */
.last-updated-stamp--chip {
  padding: var(--s-1) var(--s-3);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  /* На узком экране штамп остаётся в одну строку и не переносится:
     цельность «Обновлено DD.MM.YYYY» важнее, чем экономия 1px. */
  .last-updated-stamp {
    font-size: var(--t-tiny);
    gap: var(--s-1);
  }
}

/* ===== leaderboard ===== */
/* ============================================================
 * leaderboard · block.css
 * Скоуплено на .leaderboard. Только токены (10-tokens/).
 * Назначение: таблица лидеров (топ-бренды/игроки) — компактный рейтинг с
 *   позицией, дельтой движения за период, очками-метром (dataviz, не звёзды),
 *   ОДНА CTA на строку. Родственник rating-ledger-table (тот — «гроссбух»
 *   с множеством числовых колонок и drawer); тут — узкий «топ-лист»: ранг,
 *   оператор, движение, очки, действие.
 * Эталон нейминга/слотов/тени/мобайл-паттерна: casino-item-card +
 *   rating-ledger-table («таблица → стопка карточек» на ≤980).
 * Сортировка — общий components.js (data-action="sort"): кликабельные <th>,
 *   ключи в data-* на <tr>; строки — единственные прямые дети tbody.
 * Один акцент — --brand (топ-3 ранг/медаль, очки, мера, CTA).
 *   --success/--danger — ТОЛЬКО по смыслу (движение вверх/вниз), не декор.
 * Позиция — CSS-counter. Числа — tabular-nums. Адаптив: 980 / 640. touch ≥ --tap-min.
 * ========================================================== */

.leaderboard {
  --lb-logo: 44px;
  --lb-score-col: 128px;
  --lb-cell-y: var(--s-3);
  --lb-cell-x: var(--s-4);

  display: flow-root;
  color: var(--text);
}

/* ---- Шапка блока ---- */
.leaderboard__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-4);
  flex-wrap: wrap;
}
.leaderboard__caption {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.leaderboard__updated {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}
.leaderboard__updated-ic { display: inline-flex; color: var(--text-faint); }

/* ---- Карточка-обёртка + горизонтальный скролл на узких ---- */
.leaderboard__frame {
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
.leaderboard__scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.leaderboard__scroll:focus-visible { outline: 2px solid var(--brand); outline-offset: -2px; }

/* ---- Таблица ---- */
.leaderboard__table {
  width: 100%;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
  counter-reset: lb;
}

/* ---- Шапка таблицы ---- */
.leaderboard__thead th {
  position: sticky;
  top: 0;
  z-index: var(--z-base);
  padding: var(--lb-cell-y) var(--lb-cell-x);
  text-align: left;
  vertical-align: bottom;
  white-space: nowrap;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: 1px solid var(--rule-strong);
}
.leaderboard__th--rank { width: 1%; text-align: center; color: var(--text-faint); }
.leaderboard__th--num { text-align: right; }
.leaderboard__th--move { text-align: center; }
.leaderboard__th--action { text-align: right; }

/* Кнопка-сортер (нативная <button>, тач-цель ≥ 44px) */
.leaderboard__sort {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding: 0;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: inherit;
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.leaderboard__th--num .leaderboard__sort,
.leaderboard__th--move .leaderboard__sort { flex-direction: row-reverse; }
.leaderboard__sort:hover { color: var(--brand); }
.leaderboard__sort[aria-pressed="true"] { color: var(--brand); }
.leaderboard__sort-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.leaderboard__sort[aria-pressed="true"] .leaderboard__sort-ic { color: var(--brand); }
.leaderboard__sort[aria-pressed="false"] .leaderboard__sort-ic { opacity: 0; }
.leaderboard__sort:hover .leaderboard__sort-ic { opacity: 1; }
.leaderboard__sort[data-dir="asc"] .leaderboard__sort-ic { transform: rotate(180deg); }

/* ---- Строки ---- */
.leaderboard__row {
  counter-increment: lb;
  border-top: var(--hairline);
  transition: background var(--dur-quick) var(--ease);
}
.leaderboard__tbody tr:first-child { border-top: 0; }
.leaderboard__row:hover { background: var(--bg-2); }
/* топ-1 — лёгкая подсветка лидера */
.leaderboard__tbody tr:first-child { background: var(--highlight-pale); }
.leaderboard__tbody tr:first-child:hover { background: var(--highlight-pale); }

.leaderboard__cell {
  padding: var(--lb-cell-y) var(--lb-cell-x);
  vertical-align: middle;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}

/* ---- 1 · Позиция (CSS-counter) + медаль для топ-3 ---- */
.leaderboard__cell--rank { width: 1%; text-align: center; white-space: nowrap; }
.leaderboard__rank {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  font-family: var(--font-mono);
  font-size: var(--t-body);
  font-weight: var(--fw-bold);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.leaderboard__rank::before { content: counter(lb); }
/* топ-3 — акцентный ранг + медаль-точка (единственное «золото» строки) */
.leaderboard__row:nth-child(-n+3) .leaderboard__rank { color: var(--brand); }
.leaderboard__medal { display: none; }
.leaderboard__row:nth-child(-n+3) .leaderboard__medal {
  display: block;
  width: 6px;
  height: 6px;
  margin: var(--s-1) auto 0;
  border-radius: var(--r-pill);
  background: var(--gold);
}
.leaderboard__row:nth-child(2) .leaderboard__medal { background: var(--rule-strong); }
.leaderboard__row:nth-child(3) .leaderboard__medal { background: var(--rating-from); }

/* ---- 2 · Оператор ---- */
.leaderboard__cell--op { min-width: 0; }
.leaderboard__op { display: flex; align-items: center; gap: var(--s-3); min-width: 0; }
.leaderboard__logo {
  width: var(--lb-logo);
  height: var(--lb-logo);
  flex: 0 0 auto;
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
}
.leaderboard__name-wrap { display: block; min-width: 0; }
.leaderboard__name {
  display: block;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.leaderboard__tag {
  display: block;
  font-size: var(--t-tiny);
  color: var(--text-faint);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- 3 · Движение (по смыслу: success вверх / danger вниз) ---- */
.leaderboard__cell--move { text-align: center; white-space: nowrap; }
.leaderboard__move {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  border-radius: var(--r-pill);
}
.leaderboard__move-ic { display: inline-flex; }
.leaderboard__move--up   { color: var(--success); background: var(--success-soft); }
.leaderboard__move--down { color: var(--danger);  background: var(--danger-soft); }
.leaderboard__move--flat { color: var(--text-faint); background: var(--bg-2); }

/* ---- 4 · Очки + dataviz-мера (не звёзды) ---- */
.leaderboard__cell--num { text-align: right; }
.leaderboard__score {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: var(--lb-score-col);
}
.leaderboard__score-v {
  align-self: flex-end;
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.leaderboard__meter {
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.leaderboard__meter-fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) * 1%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease);
}

/* ---- 5 · CTA-слот (одна кнопка на строку) ---- */
.leaderboard__cell--action { white-space: nowrap; text-align: right; }
.leaderboard__cta.btn { padding-block: var(--s-2); }

/* ---- Подвал-дисклеймер ---- */
.leaderboard__foot {
  margin-top: var(--s-3);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-faint);
}

/* ============================================================
 * Адаптив ≤980px — «таблица как стопка карточек»:
 *   thead → visually-hidden поток; каждая строка = карточка; ячейки
 *   получают подпись через data-label (::before). Ранг — абсолютным
 *   бейджем в углу карточки.
 * ========================================================== */
@media (max-width: 980px) {
  .leaderboard__frame { background: transparent; border: 0; box-shadow: none; overflow: visible; }
  .leaderboard__scroll { overflow-x: visible; }
  .leaderboard__table { display: block; }

  .leaderboard__thead {
    position: absolute;
    width: 1px; height: 1px;
    margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0);
    white-space: nowrap; border: 0;
  }
  .leaderboard__tbody { display: flex; flex-direction: column; gap: var(--s-4); }

  .leaderboard__row {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--s-2) var(--s-4);
    align-items: center;
    padding: var(--s-4);
    padding-top: var(--s-6);
    border: var(--hairline);
    border-radius: var(--r-lg);
    background: var(--surface);
    box-shadow: var(--shadow-card);
  }
  .leaderboard__tbody tr:first-child {
    background: var(--surface);
    border-color: var(--rule-strong);
    box-shadow: inset 0 3px 0 0 var(--brand), var(--shadow-card);
  }
  .leaderboard__tbody tr:first-child:hover,
  .leaderboard__row:hover { background: var(--surface); }

  /* ранг — бейдж в левом верхнем углу карточки */
  .leaderboard__cell--rank {
    position: absolute;
    top: var(--s-3); left: var(--s-4);
    width: auto; padding: 0; text-align: left;
  }
  .leaderboard__rank { font-size: var(--t-small); }
  .leaderboard__rank::before { content: "#" counter(lb); }
  .leaderboard__medal { display: none !important; }

  /* оператор — на всю ширину сверху */
  .leaderboard__cell--op {
    grid-column: 1 / -1;
    padding: 0;
    padding-bottom: var(--s-3);
    border-bottom: var(--hairline);
  }

  /* остальные ячейки: подпись слева ↔ значение справа */
  .leaderboard__cell--move,
  .leaderboard__cell--num {
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-3);
    text-align: right;
  }
  .leaderboard__cell[data-label]::before {
    content: attr(data-label);
    font-size: var(--t-tiny);
    font-weight: var(--fw-semi);
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--text-faint);
    text-align: left;
    white-space: nowrap;
  }
  .leaderboard__cell--op[data-label]::before { content: none; }
  .leaderboard__cell--move { grid-column: 1; }
  .leaderboard__cell--num  { grid-column: 2; }
  .leaderboard__score { min-width: 0; flex: 0 0 auto; width: 120px; }

  .leaderboard__cell--action {
    grid-column: 1 / -1;
    padding: 0;
    padding-top: var(--s-3);
    border-top: var(--hairline);
    text-align: left;
  }
  .leaderboard__cta.btn { width: 100%; }
}

@media (max-width: 640px) {
  .leaderboard__row { padding: var(--s-3); padding-top: var(--s-6); }
  .leaderboard__op { gap: var(--s-2); }
  .leaderboard__name { font-size: var(--t-body); white-space: normal; }
  .leaderboard__cell--move,
  .leaderboard__cell--num { flex-direction: row; }
}

/* ===== leave-feedback-cta ===== */
/* ============================================================
 * leave-feedback-cta · block.css
 * Скоуплено на .leave-feedback-cta / .lfc. Только токены (10-tokens/).
 * Конвенция: html-base + scrollToDemo (components.js) / нативный якорь. Адаптив: 980 / 640.
 * Один акцент = --brand (CTA + иконка). Мини-статы — нейтрали.
 * ========================================================== */

.leave-feedback-cta { display: block; }

/* ---- Баннер ---- */
.lfc {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-5);
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- 1 · Иконка-слот ---- */
.lfc__icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 56px; height: 56px; flex: 0 0 auto;
  align-self: start;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-lg);
}

/* ---- 2 · Текст ---- */
.lfc__body { display: flex; flex-direction: column; gap: var(--s-3); min-width: 0; }
.lfc__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3); font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.lfc__sub {
  margin: 0;
  font-size: var(--t-small); line-height: var(--lh-base);
  color: var(--text-mute);
  max-width: 56ch;
}

/* Мини-статы доверия */
.lfc__stats {
  display: flex; flex-wrap: wrap; gap: var(--s-3) var(--s-6);
  margin: var(--s-1) 0 0;
}
.lfc__stat { display: flex; flex-direction: column; gap: 2px; }
.lfc__stat-k {
  font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase;
  color: var(--text-faint);
}
.lfc__stat-v {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4); font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.lfc__stat-v small { font-size: var(--t-tiny); color: var(--text-faint); font-weight: var(--fw-medium); }

/* ---- 3 · CTA ---- */
.lfc__action {
  display: flex; flex-direction: column; align-items: center; gap: var(--s-2);
  flex: 0 0 auto;
}
.lfc__cta { white-space: nowrap; }
.lfc__cta-ic { display: inline-flex; }
.lfc__note {
  margin: 0;
  font-size: var(--t-tiny); color: var(--text-faint);
  text-align: center;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .lfc {
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-areas: "icon body" "cta cta";
    gap: var(--s-4) var(--s-5);
  }
  .lfc__icon { grid-area: icon; }
  .lfc__body { grid-area: body; }
  .lfc__action { grid-area: cta; flex-direction: row; justify-content: space-between; align-items: center; gap: var(--s-4); }
  .lfc__cta { flex: 0 0 auto; }
}
@media (max-width: 640px) {
  .lfc { padding: var(--s-5); }
  .lfc__action { flex-direction: column; align-items: stretch; }
  .lfc__cta { width: 100%; }
  .lfc__stats { gap: var(--s-3) var(--s-5); }
}

/* ===== license-badge ===== */
/* ============================================================
 * license-badge · block.css
 * Скоуплено на .license-badge. Только токены (10-tokens/).
 * Сдержанно: --surface / --hairline / --text-mute, ОДИН акцент (--brand) на ссылке.
 * Конвенция разметки/JS: html-base (data-* + fake-link[data-key]). JS не обязателен.
 * Эталон структуры/нейминга: casino-item-card. Адаптив: 640.
 * ========================================================== */

.license-badge {
  --lb-shield: 22px;            /* размер щита; держит flex-basis тела в синхроне на мобайле */
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
  max-width: 100%;
  padding: var(--s-2) var(--s-3);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  font-family: var(--font-body);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

/* ---- Щит (декоративная иконка) ---- */
.license-badge__shield {
  flex: 0 0 auto;
  display: inline-flex;
  color: var(--text-faint);
}

/* ---- Тело: регулятор + номер ---- */
.license-badge__body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.license-badge__regulator {
  display: flex;
  align-items: baseline;
  gap: var(--s-2);
  min-width: 0;
}
.license-badge__regulator-name {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Аббревиатура регулятора — скрыта на десктопе, всплывает на узких экранах */
.license-badge__regulator-abbr {
  flex: 0 0 auto;
  display: none;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  color: var(--text-dim);
  text-decoration: none;
}

/* ---- Номер лицензии (моно, tabular) ---- */
.license-badge__no {
  display: flex;
  align-items: baseline;
  gap: var(--s-1);
  min-width: 0;
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
}
.license-badge__no-label {
  flex: 0 0 auto;
  color: var(--text-faint);
}
.license-badge__no-val {
  min-width: 0;
  letter-spacing: .02em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ---- Ссылка проверки (единственный акцент) ---- */
.license-badge__link {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding-inline-start: var(--s-3);
  margin-inline-start: auto;
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: .02em;
  color: var(--brand);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.license-badge__link:hover { color: var(--brand-2); }
.license-badge__link-text {
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
}
.license-badge__link-ic { display: inline-flex; }

/* ============ Вариант: --plain (без рамки/фона, для меты/подвала) ============ */
.license-badge--plain {
  padding: var(--s-1) 0;
  background: none;
  border: 0;
  border-radius: 0;
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .license-badge {
    flex-wrap: wrap;
    row-gap: var(--s-2);
    column-gap: var(--s-2);
  }
  .license-badge__body { flex-basis: calc(100% - var(--lb-shield) - var(--s-2)); }
  /* На узком экране показываем компактную аббревиатуру вместо полного имени */
  .license-badge__regulator-name { display: none; }
  .license-badge__regulator-abbr { display: inline; }
  .license-badge__link {
    flex-basis: 100%;
    justify-content: center;
    padding-inline-start: 0;
    margin-inline-start: 0;
    border-top: var(--hairline);
    padding-top: var(--s-2);
  }
  .license-badge--plain .license-badge__link { border-top: 0; padding-top: 0; }
}

/* ===== live-visitor-counter ===== */
/* ============================================================
 * live-visitor-counter · block.css
 * Скоуплено на .live-visitor-counter / .lvc. Только токены (10-tokens/).
 * Конвенция: html-base + presence-data в data-live. Адаптив: 640.
 * Один акцент = --brand; success/danger — знак дельты, не декор.
 * ========================================================== */

.live-visitor-counter { display: block; }

/* ---- Карточка ---- */
.lvc {
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  max-width: 360px;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- 1 · Голова: pulse + метка ---- */
.lvc__head {
  display: flex; align-items: center; gap: var(--s-2);
}
.lvc__label {
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .1em; text-transform: uppercase;
  color: var(--text-mute);
}
.lvc__pulse {
  position: relative;
  width: 12px; height: 12px; flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
}
.lvc__pulse-dot {
  width: 8px; height: 8px; border-radius: var(--r-pill);
  background: var(--success);
}
.lvc__pulse-ring {
  position: absolute; inset: 0;
  border-radius: var(--r-pill);
  background: var(--success);
  opacity: .5;
  animation: lvc-pulse var(--dur-slow) var(--ease) infinite;
}
@keyframes lvc-pulse {
  0%   { transform: scale(.5); opacity: .55; }
  70%  { transform: scale(2.2); opacity: 0; }
  100% { transform: scale(2.2); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .lvc__pulse-ring { animation: none; opacity: .25; }
}

/* ---- 2 · Главное число + дельта ---- */
.lvc__figure {
  display: flex; align-items: baseline; gap: var(--s-3);
  margin: 0; flex-wrap: wrap;
}
.lvc__num {
  font-family: var(--font-display);
  font-size: var(--t-h1); font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  letter-spacing: -.01em;
}
.lvc__delta {
  display: inline-flex; align-items: center; gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-small); font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  border-radius: var(--r-pill);
}
.lvc__delta-ic { display: inline-flex; }
.lvc__delta--up   { color: var(--success); background: var(--success-soft); }
.lvc__delta--down { color: var(--danger);  background: var(--danger-soft); }
.lvc__delta--down .lvc__delta-ic { transform: rotate(180deg); }

/* ---- 3 · Сплит-метры (dataviz) ---- */
.lvc__split {
  display: flex; flex-direction: column; gap: var(--s-3);
  margin: 0;
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.lvc__seg {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas: "k v" "bar bar";
  align-items: baseline;
  gap: var(--s-1) var(--s-2);
}
.lvc__seg-k {
  grid-area: k;
  font-size: var(--t-small); color: var(--text-mute);
}
.lvc__seg-v {
  grid-area: v;
  margin: 0;
  font-weight: var(--fw-bold); color: var(--text);
  font-variant-numeric: tabular-nums;
}
.lvc__seg-bar {
  grid-area: bar;
  display: block; height: 6px; margin-top: 2px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.lvc__seg-fill {
  display: block; height: 100%; border-radius: inherit;
  background: var(--brand);
}
.lvc__seg-fill--alt {
  background: color-mix(in srgb, var(--brand) 45%, var(--surface-3));
}

/* ---- 4 · Сноска ---- */
.lvc__foot {
  display: flex; flex-direction: column; gap: var(--s-1);
}
.lvc__live-tag {
  display: inline-flex; align-items: center; gap: var(--s-1);
  font-size: var(--t-tiny); color: var(--text-mute);
}
.lvc__live-tag-dot {
  width: 6px; height: 6px; flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: var(--success);
}
.lvc__note {
  font-size: var(--t-tiny); color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .lvc { max-width: none; padding: var(--s-4); }
}

/* ===== logo-rail ===== */
/* ============================================================
 * logo-rail · block.css
 * Горизонтальная лента лого брендов. Скоуплено на .logo-rail. Только токены (10-tokens/).
 * Owns: заголовок-эйброу + дорожку равновысоких слотов (опц. scroll-snap) + edge-fade.
 * Слот = фикс-высота (--lr-slot-h), лого центрируется и не растягивается (ledger-нейтраль).
 * Конвенция разметки/JS: ★research (premium). Адаптив: 980 / 640. CSS-only, JS не требуется.
 * ========================================================== */

.logo-rail {
  --lr-slot-h: 88px;                 /* высота слота (= высота ленты) */
  --lr-slot-min: 168px;              /* мин. ширина слота на десктопе */
  --lr-logo-max-h: 40px;             /* потолок высоты лого внутри слота */
  --lr-gap: var(--s-4);              /* шаг между слотами */
  --lr-fade: var(--s-7);             /* ширина боковых fade-масок */
}

/* ---- Заголовок (опционален) ---- */
.logo-rail__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
}
.logo-rail__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  line-height: var(--lh-snug);
  color: var(--text);
}
.logo-rail__count {
  flex: 0 0 auto;
  font-size: var(--t-small);
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}

/* ---- Вьюпорт ленты + боковые fade-маски ---- */
.logo-rail__viewport {
  position: relative;
}
/* Маска применяется к самой дорожке (а не к псевдоэлементам поверх),
   чтобы fade работал на любом фоне секции и не перехватывал клики. */
.logo-rail__track {
  display: flex;
  gap: var(--lr-gap);
  margin: 0;
  padding: 0;
  list-style: none;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  scrollbar-color: var(--rule-strong) transparent;
  -webkit-overflow-scrolling: touch;
  scroll-padding-inline: var(--lr-fade);
  /* fade слева/справа — подсказка о прокрутке */
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--lr-fade), #000 calc(100% - var(--lr-fade)), transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 var(--lr-fade), #000 calc(100% - var(--lr-fade)), transparent 100%);
}
.logo-rail__track::-webkit-scrollbar { height: 6px; }
.logo-rail__track::-webkit-scrollbar-track { background: transparent; }
.logo-rail__track::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: var(--r-pill); }

/* ---- Слот (равная высота, фикс-геометрия) ---- */
.logo-rail__slot {
  flex: 0 0 var(--lr-slot-min);
  scroll-snap-align: start;
}
.logo-rail__frame {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: var(--lr-slot-h);
  padding: var(--s-3) var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: inherit;
  text-decoration: none;
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease);
}

/* Лого: ограничено по высоте, никогда не растягивается.
   Нейтрализуем (grayscale + слегка приглушаем) в покое — «ledger»-дисциплина;
   при наведении/фокусе на кликабельном слоте возвращаем цвет. */
.logo-rail__img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: var(--lr-logo-max-h);
  object-fit: contain;
  filter: grayscale(100%);
  opacity: .72;
  transition:
    filter var(--dur-base) var(--ease),
    opacity var(--dur-base) var(--ease);
}

/* Текстовый фолбэк, если лого-картинки нет (имя бренда как «лого») */
.logo-rail__wordmark {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  letter-spacing: -0.01em;
  line-height: var(--lh-tight);
  color: var(--text-dim);
  text-align: center;
  filter: grayscale(100%);
  opacity: .82;
  transition: color var(--dur-base) var(--ease), opacity var(--dur-base) var(--ease);
}

/* Интерактивный слот (ссылка) — единственное «оживление» цвета */
a.logo-rail__frame:hover,
a.logo-rail__frame:focus-visible {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
}
a.logo-rail__frame:hover .logo-rail__img,
a.logo-rail__frame:focus-visible .logo-rail__img {
  filter: grayscale(0%);
  opacity: 1;
}
a.logo-rail__frame:hover .logo-rail__wordmark,
a.logo-rail__frame:focus-visible .logo-rail__wordmark {
  color: var(--brand);
  opacity: 1;
}

/* ---- Модификатор: scroll-snap (доводка по слотам) ---- */
.logo-rail--snap .logo-rail__track {
  scroll-snap-type: x mandatory;
}

/* ---- Модификатор: цветные лого без приглушения (когда нужен «бренд-вол») ---- */
.logo-rail--vivid .logo-rail__img { filter: none; opacity: 1; }
.logo-rail--vivid .logo-rail__wordmark { color: var(--text); opacity: 1; }

/* ---- Модификатор: статичная решётка (без прокрутки, перенос строк) ---- */
.logo-rail--wrap .logo-rail__track {
  flex-wrap: wrap;
  overflow: visible;
  -webkit-mask-image: none;
          mask-image: none;
}
.logo-rail--wrap .logo-rail__slot {
  flex: 1 1 var(--lr-slot-min);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .logo-rail {
    --lr-slot-h: 76px;
    --lr-slot-min: 148px;
    --lr-logo-max-h: 34px;
    --lr-fade: var(--s-5);
  }
}
@media (max-width: 640px) {
  .logo-rail {
    --lr-slot-h: 64px;
    --lr-slot-min: 124px;
    --lr-logo-max-h: 30px;
    --lr-gap: var(--s-3);
    --lr-fade: var(--s-4);
  }
  .logo-rail__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-1);
    margin-bottom: var(--s-4);
  }
  .logo-rail__frame { padding-inline: var(--s-4); }
  /* На узких экранах прокрутка важнее переноса — wrap-вариант тоже едет лентой */
  .logo-rail--wrap .logo-rail__track {
    flex-wrap: nowrap;
    overflow-x: auto;
  }
  .logo-rail--wrap .logo-rail__slot { flex: 0 0 var(--lr-slot-min); }
}

/* ===== mechanic-diagram ===== */
/* ============================================================
 * mechanic-diagram · block.css
 * Скоуплено на .mechanic-diagram / .md-* (общие SVG-примитивы ячеек/линии).
 * Только токены (10-tokens/). Конвенция: ★research / premium-планка (своя
 *   разметка, скила нет). Один акцент — --brand (активные ячейки + линия
 *   выплаты + бейдж). Нейтрали — сетка/неактивные ячейки. Числа — tabular-nums.
 *   bespoke inline SVG (currentColor + токены). Адаптив: 980 / 640.
 * ========================================================== */

.mechanic-diagram { display: block; }

/* ---- Шапка ---- */
.mechanic-diagram__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-6);
  max-width: var(--container-prose);
}
.mechanic-diagram__head .eyebrow { margin: 0; }
.mechanic-diagram__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.mechanic-diagram__lede { margin: 0; }
.mechanic-diagram__lede strong { color: var(--text); font-weight: var(--fw-semi); }

/* Числа — табличные */
.mechanic-diagram__num { font-variant-numeric: tabular-nums; }

/* ---- Раскладка: диаграмма + параметры ---- */
.mechanic-diagram__layout {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: var(--s-5);
  align-items: stretch;
}

/* ---- 1 · Крупная диаграмма ---- */
.mechanic-diagram__figure {
  position: relative;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* бейдж типа механики — единственный носитель акцента в фигуре */
.mechanic-diagram__badge {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.mechanic-diagram__badge-ic { flex: 0 0 auto; }

.mechanic-diagram__svg {
  display: block;
  width: 100%;
  height: auto;
  background: var(--bg-2);
  border-radius: var(--r-md);
  padding: var(--s-3);
}
.mechanic-diagram__cap { margin: 0; font-size: var(--t-tiny); }

/* ---- Общие SVG-примитивы (ячейка / линия выплаты) ---- */
.md-cell {
  fill: var(--surface);
  stroke: var(--rule);
  stroke-width: 1.5;
  transition: fill var(--dur-base) var(--ease), stroke var(--dur-base) var(--ease);
}
.md-cell--on {
  fill: var(--brand-soft);
  stroke: var(--brand);
}
.md-payline {
  stroke: var(--brand);
  stroke-width: 3;
}
.md-payline-node { fill: var(--brand); }

/* ---- 2 · Параметры (фикс-слоты) ---- */
.mechanic-diagram__params {
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: min-content;
  gap: var(--s-3);
  align-content: start;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
.mechanic-diagram__param {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.mechanic-diagram__param-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.mechanic-diagram__param-v {
  margin: 0;
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--t-h4);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---- 3 · Drawer других механик ---- */
.mechanic-diagram__more {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.mechanic-diagram__more-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.mechanic-diagram__more-sum::-webkit-details-marker { display: none; }
.mechanic-diagram__more-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.mechanic-diagram__more[open] .mechanic-diagram__more-chev { transform: rotate(180deg); }

.mechanic-diagram__more-body { padding: 0 var(--s-4) var(--s-4); }
.mechanic-diagram__more-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--s-3);
}
.mechanic-diagram__mech {
  display: flex;
  gap: var(--s-3);
  padding: var(--s-3);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.mechanic-diagram__mech--active { border-color: var(--brand); background: var(--brand-soft); }
.mechanic-diagram__mech-fig { flex: 0 0 auto; }
.mechanic-diagram__mech-fig svg { display: block; }
.mechanic-diagram__mech-body { display: flex; flex-direction: column; gap: var(--s-1); min-width: 0; }
.mechanic-diagram__mech-name {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  font-weight: var(--fw-semi);
  font-size: var(--t-small);
  color: var(--text);
}
.mechanic-diagram__mech-tag {
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--surface);
  border-radius: var(--r-pill);
}
.mechanic-diagram__mech-txt {
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .mechanic-diagram__title { font-size: var(--t-h3); }
  .mechanic-diagram__layout { grid-template-columns: 1fr; gap: var(--s-4); }
}
@media (max-width: 640px) {
  .mechanic-diagram__figure { padding: var(--s-4); }
  .mechanic-diagram__params { padding: var(--s-4); }
  .mechanic-diagram__mech { flex-direction: column; align-items: flex-start; }
}

/* ============ Reduced motion (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .md-cell { transition: none; }
  .mechanic-diagram__more-chev { transition: none; }
}

/* ===== mega-menu ===== */
/* ============================================================
 * mega-menu · block.css
 * Скоуплено на .mega-menu. Только токены (10-tokens/).
 * Уровни: bar → panel → col(level2) → brand/sub(level3).
 * Открытие: desktop = hover/:focus-within; mobile(<980) = .is-open (click, JS).
 * Адаптив: 980 (desktop→accordion) / 640.
 * ========================================================== */

.mega-menu {
  --mm-gap: var(--s-2);
  --mm-panel-w: min(var(--container-wide), 100vw);
  position: relative;
  font-family: var(--font-body);
}

/* ---- Верхняя панель ---- */
.mega-menu__bar {
  list-style: none; margin: 0; padding: 0;
  display: flex; align-items: stretch; gap: var(--mm-gap);
}
.mega-menu__item { position: relative; display: flex; }

/* ---- Триггер верхнего уровня ---- */
.mega-menu__top {
  display: inline-flex; align-items: center; gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-body); font-weight: var(--fw-medium);
  color: var(--text); background: transparent;
  border: 0; border-radius: var(--r-soft);
  text-decoration: none; cursor: pointer;
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.mega-menu__top:hover,
.mega-menu__item:hover > .mega-menu__top,
.mega-menu__item:focus-within > .mega-menu__top { color: var(--brand); background: var(--surface-2); }
.mega-menu__top[aria-expanded="true"] { color: var(--brand); background: var(--surface-2); }
.mega-menu__top--plain { color: var(--text); }

.mega-menu__chev { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease); }
.mega-menu__item:hover > .mega-menu__top .mega-menu__chev,
.mega-menu__top[aria-expanded="true"] .mega-menu__chev { transform: rotate(180deg); }

/* ---- Панель (level 1 dropdown) ---- */
.mega-menu__panel {
  position: absolute; inset-inline-start: 0; top: calc(100% + var(--s-2));
  z-index: var(--z-popover);
  width: max-content; max-width: var(--mm-panel-w);
  background: var(--surface);
  border: var(--hairline); border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop);
  /* анимация появления — только для desktop hover, обёрнута в @media ниже */
}
.mega-menu__panel[hidden] { display: none; }
.mega-menu__panel--slim { --mm-panel-w: min(640px, 100vw); }

.mega-menu__inner {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(240px, 1.4fr) minmax(200px, 0.9fr);
  gap: var(--s-5);
  padding: var(--s-5);
}
.mega-menu__panel--slim .mega-menu__inner {
  grid-template-columns: 1fr 1fr;
}

/* ---- Колонка (level 2) ---- */
.mega-col { min-width: 0; }
.mega-col__title {
  margin: 0 0 var(--s-3);
  font-size: var(--t-tiny); letter-spacing: .08em; text-transform: uppercase;
  font-weight: var(--fw-semi); color: var(--text-mute);
}
.mega-col__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }

/* Плоская ссылка (рубрика / уровень 2 без детей) */
.mega-link {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  color: var(--text-dim); text-decoration: none;
  border-radius: var(--r-soft);
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.mega-link:hover { color: var(--text); background: var(--surface-2); }
.mega-link__txt { font-weight: var(--fw-medium); }
.mega-link__count {
  flex: 0 0 auto;
  min-width: 24px; padding: 0 var(--s-2);
  text-align: center; font-size: var(--t-tiny); font-variant-numeric: tabular-nums;
  color: var(--text-faint); background: var(--bg-2);
  border-radius: var(--r-pill);
}
.mega-link:hover .mega-link__count { color: var(--brand); }
.mega-link--all { color: var(--brand); font-weight: var(--fw-semi); }

/* ---- Бренд (level 2 → раскрывает level 3) ---- */
.mega-col__list--brands { gap: var(--s-1); }
.mega-brand { display: flex; flex-direction: column; }

.mega-brand__head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center; gap: var(--s-2) var(--s-3);
  width: 100%; min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  background: transparent; border: 0; border-radius: var(--r-soft);
  text-align: start; cursor: pointer;
  transition: background var(--dur-quick) var(--ease);
}
.mega-brand__head:hover,
.mega-brand:focus-within > .mega-brand__head { background: var(--surface-2); }

.mega-brand__logo {
  width: 36px; height: 36px;
  object-fit: cover; border-radius: var(--r-md);
  background: var(--bg-2); border: var(--hairline);
}
.mega-brand__name { font-weight: var(--fw-semi); color: var(--text); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mega-brand__rate {
  font-weight: var(--fw-bold); font-variant-numeric: tabular-nums;
  color: var(--brand);
}
.mega-brand__chev { flex: 0 0 auto; color: var(--text-faint); transition: transform var(--dur-quick) var(--ease); }
.mega-brand__head[aria-expanded="true"] .mega-brand__chev { transform: rotate(90deg); }
.mega-brand__head[aria-expanded="true"] { color: var(--brand); }

/* ---- Подменю игр (level 3) ---- */
.mega-sub {
  list-style: none; margin: var(--s-1) 0 var(--s-2);
  padding: var(--s-1) 0 var(--s-1) calc(36px + var(--s-3) + var(--s-3));
  display: flex; flex-direction: column; gap: 2px;
  border-inline-start: var(--hairline);
  margin-inline-start: calc(var(--s-3) + 18px);
}
.mega-sub[hidden] { display: none; }
.mega-sub__link {
  display: flex; align-items: center;
  min-height: var(--tap-min);
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-small); color: var(--text-mute); text-decoration: none;
  border-radius: var(--r-soft);
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.mega-sub__link:hover { color: var(--text); background: var(--surface-2); }
.mega-sub__link--review { color: var(--brand); font-weight: var(--fw-medium); }

/* ---- Промо-слот раздела (одна CTA на панель) ---- */
.mega-promo {
  display: flex; flex-direction: column; gap: var(--s-2);
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline); border-radius: var(--r-md);
}
.mega-promo__eyebrow {
  margin: 0;
  font-size: var(--t-tiny); letter-spacing: .08em; text-transform: uppercase;
  font-weight: var(--fw-semi); color: var(--brand);
}
.mega-promo__name { margin: 0; font-family: var(--font-display); font-size: var(--t-h4); font-weight: var(--fw-bold); line-height: var(--lh-snug); }
.mega-promo__stat { margin: var(--s-1) 0; display: flex; flex-direction: column; gap: var(--s-1); }
.mega-promo__row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2); margin: 0; }
.mega-promo__row dt { font-size: var(--t-small); color: var(--text-mute); }
.mega-promo__row dd { margin: 0; font-weight: var(--fw-semi); color: var(--text); font-variant-numeric: tabular-nums; }
.mega-promo__row dd small { color: var(--text-faint); font-weight: var(--fw-medium); }
.mega-promo__note { margin: var(--s-1) 0 0; font-size: var(--t-tiny); color: var(--text-faint); line-height: var(--lh-snug); }

/* ============ Desktop hover-раскрытие + анимация ============ */
@media (min-width: 981px) {
  /* hover/focus раскрывает панель без JS (JS лишь синхронит aria-expanded) */
  .mega-menu__item[data-mega]:hover > .mega-menu__panel,
  .mega-menu__item[data-mega]:focus-within > .mega-menu__panel { display: block; }

  .mega-menu__panel:not([hidden]),
  .mega-menu__item[data-mega]:hover > .mega-menu__panel {
    animation: mm-pop var(--dur-quick) var(--ease-out);
  }
  /* уровень 3: на desktop раскрытие по hover бренда тоже работает без JS */
  .mega-brand[data-mega-sub]:hover > .mega-sub,
  .mega-brand[data-mega-sub]:focus-within > .mega-sub { display: flex; }
}

@keyframes mm-pop {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ============ Мобильный аккордеон (≤980) ============ */
@media (max-width: 980px) {
  .mega-menu__bar { flex-direction: column; align-items: stretch; gap: var(--s-1); }
  .mega-menu__item { display: block; }

  .mega-menu__top { width: 100%; justify-content: space-between; border-radius: var(--r-soft); }

  /* На мобайле панель — в потоке (раскрывается по .is-open от JS-клика) */
  .mega-menu__panel {
    position: static; width: auto; max-width: none;
    margin-top: var(--s-1);
    box-shadow: none; border-radius: var(--r-md);
    background: var(--bg-2);
  }
  .mega-menu__inner {
    grid-template-columns: 1fr;
    gap: var(--s-4); padding: var(--s-4);
  }
  .mega-menu__panel--slim .mega-menu__inner { grid-template-columns: 1fr; }

  /* На мобайле управляет только JS (.is-open), hover-раскрытия нет */
  .mega-promo { background: var(--surface); }
}

@media (max-width: 640px) {
  .mega-menu__inner { padding: var(--s-3); gap: var(--s-3); }
  .mega-brand__head { gap: var(--s-2); }
  .mega-sub { padding-inline-start: var(--s-4); margin-inline-start: var(--s-3); }
}

/* ===== methodology ===== */
/* ============================================================
 * methodology · block.css
 * Скоуплено на .methodology. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах.
 * Эталон структуры/нейминга: casino-item-card. Конвенция: ★research / premium.
 * Адаптив: 980 / 640. Один акцент (--brand); состояние — не только цветом.
 * ========================================================== */

.methodology {
  /* фикс-слоты: ширина числовой колонки веса и размер бейджа-шага */
  --m-weight-col: 56px;
  --m-step-size: 40px;

  display: block;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- Шапка: eyebrow + заголовок + лид ---- */
.methodology__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.methodology__eyebrow {
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--brand);
}
.methodology__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.methodology__lede {
  margin: 0;
  max-width: var(--container-prose);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ============================================================
 * Вариант A · Критерии с весами (gauge мини-бары)
 * ========================================================== */
.methodology__criteria {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}

.methodology__crit {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--m-weight-col);
  grid-template-areas:
    "name  weight"
    "bar   bar"
    "desc  desc";
  align-items: baseline;
  column-gap: var(--s-4);
  row-gap: var(--s-2);
}

.methodology__crit-name {
  grid-area: name;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-width: 0;
  font-size: var(--t-body);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}
/* фикс-слот под глиф критерия (24×24), чтобы названия выравнивались */
.methodology__crit-glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  border-radius: var(--r-soft);
  color: var(--brand);
  background: var(--brand-soft);
}

.methodology__crit-weight {
  grid-area: weight;
  justify-self: end;
  font-family: var(--font-mono);
  font-size: var(--t-body);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* Gauge-бар: трек + заливка, ширина = вес критерия (inline style / data-driven) */
.methodology__bar {
  grid-area: bar;
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.methodology__bar-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
  transition: width var(--dur-slow) var(--ease-out);
}

.methodology__crit-desc {
  grid-area: desc;
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* Итоговая строка веса (∑ = 100%) — табличные цифры, мелкий нейтральный шрифт */
.methodology__total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.methodology__total-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.methodology__total-v {
  font-family: var(--font-mono);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ============================================================
 * Вариант B · Нумерованные шаги (.methodology--steps)
 * Номер шага рисуется CSS-counter, не в HTML.
 * ========================================================== */
.methodology__steps {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: m-step;
  display: flex;
  flex-direction: column;
  gap: var(--s-5);
}

.methodology__step {
  counter-increment: m-step;
  display: grid;
  grid-template-columns: var(--m-step-size) minmax(0, 1fr);
  gap: var(--s-4);
  align-items: start;
}

/* Бейдж-номер в фикс-слоте + соединительная линия между шагами */
.methodology__step-num {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--m-step-size);
  height: var(--m-step-size);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  font-variant-numeric: tabular-nums;
}
.methodology__step-num::before { content: counter(m-step); }
/* линия-коннектор тянется от низа бейджа к следующему шагу */
.methodology__step:not(:last-child) .methodology__step-num::after {
  content: "";
  position: absolute;
  top: calc(100% + 2px);
  left: 50%;
  width: 2px;
  height: calc(var(--s-5) + 2px);
  transform: translateX(-50%);
  background: var(--rule);
}

.methodology__step-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  /* центрируем тело относительно бейджа-номера */
  padding-top: calc((var(--m-step-size) - 1.5em) / 2);
}
.methodology__step-title {
  margin: 0;
  font-size: var(--t-body);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}
.methodology__step-text {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ============================================================
 * Раскрываемый drawer: оговорки методологии / 18+ (держит блок чистым)
 * ========================================================== */
.methodology__notes {
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
/* без итоговой строки/шагов сверху — убрать двойную линию */
.methodology__total + .methodology__notes { margin-top: var(--s-4); border-top: 0; padding-top: 0; }

.methodology__notes-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
}
.methodology__notes-btn:hover { color: var(--brand); }
.methodology__notes-chev {
  display: inline-flex;
  transition: transform var(--dur-quick) var(--ease);
}
.methodology__notes-btn[aria-expanded="true"] .methodology__notes-chev { transform: rotate(180deg); }

.methodology__notes-body {
  margin-top: var(--s-2);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.methodology__notes-body[hidden] { display: none; }
.methodology__notes-body p { margin: 0 0 var(--s-2); }
.methodology__notes-body p:last-child { margin-bottom: 0; }

/* ---- Модификатор: компактный (для сайдбара/врезки) ---- */
.methodology--compact { padding: var(--s-5); }
.methodology--compact .methodology__criteria { gap: var(--s-3); }
.methodology--compact .methodology__crit-desc { display: none; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .methodology { padding: var(--s-5); }
}
@media (max-width: 640px) {
  .methodology { padding: var(--s-4); }
  .methodology { --m-step-size: 34px; }
  .methodology__crit { column-gap: var(--s-3); }
  .methodology__total { flex-wrap: wrap; gap: var(--s-2); }
}

/* ===== mobile-app-download-banner ===== */
/* ============================================================
 * mobile-app-download-banner · block.css
 * Скоуплено на .mobile-app-download-banner. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-rating-guide + эталон casino-item-card + sibling exclusive-banner.
 * Адаптив: 980 / 640. Один акцент (--brand); состояния — не цветом (swap иконки).
 * ========================================================== */

.mobile-app-download-banner {
  --madb-icon: 96px;
  --madb-qr: 84px;
  display: block;
  position: relative;
  /* акцентная врезка: surface + тонкая brand-рамка + лёгкий «свет» сверху */
  background:
    linear-gradient(180deg, var(--brand-soft), transparent 96px),
    var(--surface);
  border: 1px solid color-mix(in srgb, var(--brand) 32%, var(--rule));
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
/* верхняя акцентная кромка — фирменный «download»-сигнал */
.mobile-app-download-banner::before {
  content: "";
  position: absolute; inset-inline: 0; top: 0; height: 3px;
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
}

.mobile-app-download-banner__inner {
  display: grid;
  grid-template-columns: var(--madb-icon) minmax(0, 1fr) minmax(280px, 340px);
  grid-template-areas: "media offer action";
  align-items: start;
  gap: var(--s-5);
  padding: var(--s-5);
}

/* числа — единый tabular-nums во всём блоке */
.mobile-app-download-banner__num { font-variant-numeric: tabular-nums; }

/* ---- 1 · Медиа: фикс-слот иконки приложения + платформенная марка ---- */
.mobile-app-download-banner__media {
  grid-area: media;
  display: flex; flex-direction: column; align-items: center; gap: var(--s-2);
}
.mobile-app-download-banner__icon {
  width: var(--madb-icon); height: var(--madb-icon);
  object-fit: cover; border-radius: var(--r-lg);
  background: var(--bg-2); border: var(--hairline);
  box-shadow: var(--shadow-card);
}
.mobile-app-download-banner__platforms-mark {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px var(--s-2);
  font-family: var(--font-body);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .03em;
  color: var(--text-mute);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.mobile-app-download-banner__platforms-mark svg { flex: 0 0 auto; color: var(--text-faint); }

/* ---- 2 · Оффер: эйброу + имя + рейтинг-метр + инлайн-факты ---- */
.mobile-app-download-banner__offer {
  grid-area: offer;
  display: flex; flex-direction: column; gap: var(--s-2);
  min-width: 0;
}
.mobile-app-download-banner__eyebrow { margin: 0; color: var(--brand); }
.mobile-app-download-banner__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3); font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Рейтинг сторов — dataviz-метр (как рейтинг-бар эталона), НЕ звёзды */
.mobile-app-download-banner__rating {
  display: flex; flex-direction: column; gap: var(--s-1);
  max-width: 320px;
}
.mobile-app-download-banner__rating-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2);
}
.mobile-app-download-banner__rating-k {
  font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase;
  color: var(--text-mute);
}
.mobile-app-download-banner__rating-v {
  font-weight: var(--fw-bold); color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.mobile-app-download-banner__rating-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.mobile-app-download-banner__meter {
  height: 8px; background: var(--bg-3);
  border-radius: var(--r-pill); overflow: hidden;
}
.mobile-app-download-banner__meter-fill {
  display: block; height: 100%; border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* Инлайн-факты приложения: версия · размер · возраст */
.mobile-app-download-banner__facts {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s-2);
  margin: 0;
  font-size: var(--t-small); color: var(--text-mute);
  line-height: var(--lh-snug);
}
.mobile-app-download-banner__fact {
  display: inline-flex; align-items: baseline; gap: 4px;
}
.mobile-app-download-banner__fact-k {
  font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-faint);
}
.mobile-app-download-banner__fact-v {
  margin: 0;
  font-weight: var(--fw-semi); color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.mobile-app-download-banner__fact-sep { color: var(--text-faint); }

/* ---- 3 · Действие: QR + CTA + стор-бейджи + промокод + требования ---- */
.mobile-app-download-banner__action {
  grid-area: action;
  display: flex; flex-direction: column; gap: var(--s-3);
}

/* QR-слот + CTA в ряд */
.mobile-app-download-banner__get {
  display: flex; align-items: stretch; gap: var(--s-3);
}
.mobile-app-download-banner__qr {
  flex: 0 0 auto; margin: 0;
  display: flex; flex-direction: column; align-items: center; gap: var(--s-1);
  padding: var(--s-2);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.mobile-app-download-banner__qr-svg {
  width: var(--madb-qr); height: var(--madb-qr);
  display: block;
  color: var(--text); /* модули QR = currentColor (на белом фоне внутри svg) */
  border-radius: var(--r-soft);
}
.mobile-app-download-banner__qr-cap {
  font-size: var(--t-tiny); color: var(--text-faint);
  text-align: center; line-height: var(--lh-snug);
}
/* CTA — одна, primary; занимает остаток ряда */
.mobile-app-download-banner__cta { flex: 1 1 auto; }
.mobile-app-download-banner__cta svg { flex: 0 0 auto; }

/* Стор-бейджи (партнёрские) — нейтральная «карточка», не второй акцент */
.mobile-app-download-banner__stores {
  display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-2);
}
.mobile-app-download-banner__store {
  display: inline-flex; align-items: center; gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  color: var(--text); text-decoration: none;
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: border-color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.mobile-app-download-banner__store:hover { border-color: var(--rule-strong); background: var(--surface-3); }
.mobile-app-download-banner__store-ic { flex: 0 0 auto; color: var(--text-dim); }
.mobile-app-download-banner__store-tx { display: flex; flex-direction: column; line-height: 1.15; min-width: 0; }
.mobile-app-download-banner__store-pre { font-size: var(--t-tiny); color: var(--text-mute); }
.mobile-app-download-banner__store-name {
  font-family: var(--font-display); font-size: var(--t-small); font-weight: var(--fw-bold);
  color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* Бонус-код приложения (copy-on-click) — dashed «купон» */
.mobile-app-download-banner__promo {
  position: relative;
  display: inline-flex; align-items: center; gap: var(--s-2);
  width: 100%;
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  font: inherit; text-align: left;
  background: var(--brand-soft); color: var(--brand);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: background var(--dur-quick) var(--ease);
}
.mobile-app-download-banner__promo:hover { background: color-mix(in srgb, var(--brand) 16%, transparent); }
.mobile-app-download-banner__promo-k {
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-mute);
}
.mobile-app-download-banner__promo-code {
  font-family: var(--font-mono); font-weight: var(--fw-semi);
  letter-spacing: .03em;
  font-variant-numeric: tabular-nums;
  margin-inline-start: auto;
}
.mobile-app-download-banner__promo-ic { display: inline-flex; flex: 0 0 auto; }
/* по умолчанию виден copy, check спрятан; после .is-copied — наоборот */
.mobile-app-download-banner__ic-done { display: none; }
.mobile-app-download-banner__promo.is-copied .mobile-app-download-banner__ic-copy { display: none; }
.mobile-app-download-banner__promo.is-copied .mobile-app-download-banner__ic-done { display: inline; }

.mobile-app-download-banner__toast {
  position: absolute; inset-inline-start: 50%; bottom: calc(100% + 6px);
  transform: translateX(-50%);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); white-space: nowrap;
  color: var(--on-brand); background: var(--text);
  border-radius: var(--r-soft);
  opacity: 0; pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease);
}
.mobile-app-download-banner__promo.is-copied .mobile-app-download-banner__toast { opacity: 1; }

/* Требования/T&C-drawer (нативный <details>) */
.mobile-app-download-banner__tnc { font-size: var(--t-small); }
.mobile-app-download-banner__tnc-q {
  display: inline-flex; align-items: center; gap: var(--s-1);
  list-style: none; cursor: pointer;
  font-size: var(--t-tiny); color: var(--text-mute);
  text-decoration: underline; text-underline-offset: 2px;
}
.mobile-app-download-banner__tnc-q::-webkit-details-marker { display: none; }
.mobile-app-download-banner__tnc-q:hover { color: var(--brand); }
.mobile-app-download-banner__tnc-chevron { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease); }
.mobile-app-download-banner__tnc[open] .mobile-app-download-banner__tnc-chevron { transform: rotate(180deg); }
.mobile-app-download-banner__tnc-a {
  margin-top: var(--s-2); padding: var(--s-3);
  font-size: var(--t-small); line-height: var(--lh-snug);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline); border-radius: var(--r-md);
}
.mobile-app-download-banner__tnc-a p { margin: 0; }
.mobile-app-download-banner__tnc-a b { font-family: var(--font-mono); font-weight: var(--fw-semi); color: var(--text); }

/* ---- Вариант --compact (без QR, плотнее) ---- */
.mobile-app-download-banner--compact .mobile-app-download-banner__action { gap: var(--s-2); }
.mobile-app-download-banner--compact .mobile-app-download-banner__stores { grid-template-columns: 1fr; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .mobile-app-download-banner__inner {
    grid-template-columns: var(--madb-icon) 1fr;
    grid-template-areas:
      "media offer"
      "action action";
    gap: var(--s-4);
  }
  /* на планшете: QR-блок слева, стор-бейджи справа, промокод и drawer — на всю ширину */
  .mobile-app-download-banner__action {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: start;
    gap: var(--s-3);
  }
  .mobile-app-download-banner__get { grid-column: 1; }
  .mobile-app-download-banner__get { flex-direction: column; }
  .mobile-app-download-banner__stores { grid-column: 2; grid-template-columns: 1fr; align-content: start; }
  .mobile-app-download-banner__promo { grid-column: 1 / -1; }
  .mobile-app-download-banner__tnc { grid-column: 1 / -1; }
  /* compact: без QR — действие в один столбец */
  .mobile-app-download-banner--compact .mobile-app-download-banner__action { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .mobile-app-download-banner { --madb-icon: 72px; }
  .mobile-app-download-banner__inner {
    grid-template-areas:
      "media offer"
      "action action";
    gap: var(--s-3);
    padding: var(--s-4);
  }
  .mobile-app-download-banner__media { flex-direction: row; align-items: center; gap: var(--s-2); }
  .mobile-app-download-banner__icon { border-radius: var(--r-md); }
  /* всё в один столбец — порядок чтения сохранён */
  .mobile-app-download-banner__action { grid-template-columns: 1fr; }
  .mobile-app-download-banner__get { flex-direction: row; align-items: center; }
  .mobile-app-download-banner__stores { grid-template-columns: 1fr; }
}

/* ===== multiplier-history ===== */
/* ============================================================
 * multiplier-history · block.css
 * Скоуплено на .mult-history. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Лента «пилюль» прошлых множителей crash-игры
 * + агрегаты + распределение по бакетам (dataviz-бары вместо звёзд).
 * Цвет пилюли = ВЕЛИЧИНА множителя (данные), не декор. Один акцент --brand (последний раунд).
 * Адаптив: 980 — панели в колонку; 640 — лента со скролл-снапом.
 * ========================================================== */

.mult-history {
  display: block;
  font-variant-numeric: tabular-nums;
}

/* Шкала множителя (данные → цвет). Холодный → тёплый по росту ×. */
.mult-history {
  --mh-low:  var(--text-mute);   /* < 2× — частый, приглушённый */
  --mh-mid:  var(--info);        /* 2–5× */
  --mh-high: var(--brand-2);     /* 5–10× */
  --mh-epic: var(--gold);        /* 10×+ — редкий, золото */
}

/* ---- Шапка ---- */
.mult-history__head {
  display: flex; align-items: flex-end; justify-content: space-between;
  flex-wrap: wrap; gap: var(--s-3);
  margin-bottom: var(--s-4);
}
.mult-history__title {
  margin: 2px 0 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.mult-history__note { font-size: var(--t-tiny); }

/* ---- Лента раундов ---- */
.mult-history__track {
  list-style: none; margin: 0 0 var(--s-3); padding: var(--s-2);
  display: flex; gap: var(--s-2);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-lg);
}
.mult-history__track:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ---- Пилюля раунда ---- */
.mult-pill {
  flex: 0 0 auto;
  display: inline-flex; align-items: baseline; gap: 1px;
  padding: var(--s-2) var(--s-3);
  min-height: 34px;
  font-weight: var(--fw-bold); font-size: var(--t-small);
  color: var(--on-brand);
  border-radius: var(--r-pill);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.mult-pill__x { font-size: var(--t-tiny); font-weight: var(--fw-semi); opacity: .8; }

/* цвет = величина множителя (данные) */
.mult-pill--low  { background: var(--mh-low); }
.mult-pill--mid  { background: var(--mh-mid); }
.mult-pill--high { background: var(--mh-high); }
.mult-pill--epic { background: var(--mh-epic); }

/* Последний раунд — единственный акцент --brand (рамка-кольцо) */
.mult-pill.is-latest {
  box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--brand);
}

/* ---- Легенда шкалы ---- */
.mult-history__legend {
  list-style: none; margin: 0 0 var(--s-5); padding: 0;
  display: flex; flex-wrap: wrap; gap: var(--s-4);
}
.mult-history__legend-item {
  display: inline-flex; align-items: center; gap: var(--s-2);
  font-size: var(--t-tiny); color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}
.mult-history__legend-sw { width: 14px; height: 10px; border-radius: var(--r-soft); }

/* ---- Панели: агрегаты + распределение ---- */
.mult-history__panels {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
  gap: var(--s-4);
  align-items: start;
}

/* Агрегаты — фикс-слоты на surface */
.mult-stats {
  display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-3);
  margin: 0;
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
.mult-stat { display: block; }
.mult-stat__k { font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }
.mult-stat__v {
  margin: var(--s-1) 0 0;
  display: flex; align-items: baseline; gap: 1px;
  font-family: var(--font-display);
  font-size: var(--t-h3); font-weight: var(--fw-bold);
  color: var(--text); line-height: var(--lh-tight);
  font-variant-numeric: tabular-nums;
}
.mult-stat__v--accent { color: var(--brand); }
.mult-stat__x { font-size: var(--t-small); font-weight: var(--fw-semi); color: var(--text-faint); }

/* Распределение — dataviz-бары на surface */
.mult-dist {
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
.mult-dist__title { margin: 0 0 var(--s-3); font-size: var(--t-small); font-weight: var(--fw-semi); color: var(--text-mute); }
.mult-dist__rows { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-2); }
.mult-dist__row {
  display: grid; grid-template-columns: 3.2em 1fr 3em; align-items: center; gap: var(--s-2);
}
.mult-dist__label { font-size: var(--t-small); color: var(--text-dim); font-variant-numeric: tabular-nums; }
.mult-dist__bar {
  height: 10px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
/* fill наследует цвет бакета от модификатора шкалы */
.mult-dist__bar.mult-pill--low  { background: var(--bg-3); }
.mult-dist__fill {
  display: block; height: 100%;
  width: calc(var(--val) * 1%);
  border-radius: inherit;
}
.mult-dist__bar.mult-pill--low  .mult-dist__fill { background: var(--mh-low); }
.mult-dist__bar.mult-pill--mid  .mult-dist__fill { background: var(--mh-mid); }
.mult-dist__bar.mult-pill--high .mult-dist__fill { background: var(--mh-high); }
.mult-dist__bar.mult-pill--epic .mult-dist__fill { background: var(--mh-epic); }
.mult-dist__pct { text-align: right; font-size: var(--t-small); font-weight: var(--fw-semi); color: var(--text); font-variant-numeric: tabular-nums; }

.mult-history__foot { margin-top: var(--s-5); font-size: var(--t-tiny); line-height: var(--lh-snug); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .mult-history__panels { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .mult-history__track { scroll-snap-type: x proximity; }
  .mult-pill { scroll-snap-align: start; }
  .mult-stats { grid-template-columns: 1fr 1fr; }
  .mult-stat__v { font-size: var(--t-h4); }
}

/* ===== newest-casinos-date-grouped-list ===== */
/* ============================================================
 * newest-casinos-date-grouped-list · block.css
 * Скоуплено на .newest-casinos. Только токены (10-tokens/).
 * Назначение: лента новых казино, сгруппированных по ДАТЕ добавления
 *   (changelog/«что нового»): заголовок-дата (sticky) + компактные строки
 *   оператора с мини-рейтингом (dataviz-мера, не звёзды), бейджем «Новое»
 *   и ОДНОЙ CTA. Эталон нейминга/слотов/тени/меры: casino-item-card;
 *   родственник timeline (группировка по времени), но это операторский лист.
 * Один акцент — --brand (дата-маркер, бейдж «Новое», рейтинг, мера, CTA).
 *   Функциональных success/danger нет (нейтральная лента добавлений).
 * Дата — контент (<time>), рисуется в HTML; CSS-counter не используется.
 * Числа — tabular-nums. Адаптив: 980 / 640. touch ≥ --tap-min.
 * ========================================================== */

.newest-casinos {
  --nc-logo: 56px;
  --nc-rating-col: 116px;

  display: flow-root;
  color: var(--text);
}

/* ---- Шапка блока ---- */
.newest-casinos__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
  padding-bottom: var(--s-4);
  border-bottom: 1px solid var(--rule-strong);
  flex-wrap: wrap;
}
.newest-casinos__heading { min-width: 0; }
.newest-casinos__head .eyebrow { margin: 0 0 var(--s-2); color: var(--brand); }
.newest-casinos__title { margin: 0; font-size: var(--t-h2); }
.newest-casinos__total {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
  margin: 0;
  flex: 0 0 auto;
}
.newest-casinos__total-num {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.newest-casinos__total-label {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Группы по дате ---- */
.newest-casinos__groups {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-6);
}
.newest-casinos__group { min-width: 0; }

/* Заголовок-дата: sticky-маркер группы + относительная подпись */
.newest-casinos__date {
  position: sticky;
  top: var(--header-h);
  z-index: var(--z-base);
  display: flex;
  align-items: baseline;
  gap: var(--s-3);
  margin: 0 0 var(--s-3);
  padding: var(--s-2) 0;
  background: var(--bg);
}
.newest-casinos__date::before {
  content: "";
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  align-self: center;
  border-radius: var(--r-pill);
  background: var(--brand);
}
.newest-casinos__date-time {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.newest-casinos__date-rel {
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Список операторов внутри группы ---- */
.newest-casinos__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}
.newest-casinos__row { min-width: 0; }

/* ---- Карточка-строка оператора (фикс-слоты, единый pad/radius/shadow) ---- */
.newest-casinos__item {
  display: grid;
  grid-template-columns: var(--nc-logo) minmax(0, 1fr) var(--nc-rating-col) auto;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.newest-casinos__item:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }

.newest-casinos__logo {
  width: var(--nc-logo);
  height: var(--nc-logo);
  flex: 0 0 auto;
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
}

/* ---- Тело: имя + бейдж + теги ---- */
.newest-casinos__body { min-width: 0; }
.newest-casinos__name-row {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0 0 var(--s-1);
  flex-wrap: wrap;
}
.newest-casinos__name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
/* Бейдж «Новое» — единственный акцент-чип строки */
.newest-casinos__badge {
  display: inline-flex;
  align-items: center;
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
}
.newest-casinos__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-1) var(--s-2);
  margin: 0;
}
.newest-casinos__tag {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-soft);
  white-space: nowrap;
}

/* ---- Мини-рейтинг: число + dataviz-мера (не звёзды) ---- */
.newest-casinos__rating {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: 0;
}
.newest-casinos__rating-v {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.newest-casinos__rating-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.newest-casinos__meter {
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.newest-casinos__meter-fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) * 1%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease);
}
.newest-casinos__rating-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- CTA-слот (одна кнопка на строку) ---- */
.newest-casinos__cta-wrap { display: flex; }
.newest-casinos__cta.btn { white-space: nowrap; }

/* ---- Подвал-дисклеймер ---- */
.newest-casinos__foot {
  margin-top: var(--s-5);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .newest-casinos__item {
    grid-template-columns: var(--nc-logo) minmax(0, 1fr) auto;
    grid-template-areas:
      "logo body body"
      "logo rating cta";
    gap: var(--s-3) var(--s-4);
  }
  .newest-casinos__logo { grid-area: logo; align-self: start; }
  .newest-casinos__body { grid-area: body; }
  .newest-casinos__rating { grid-area: rating; flex-direction: row; align-items: center; gap: var(--s-2); }
  .newest-casinos__rating .newest-casinos__meter { flex: 1 1 auto; min-width: 64px; }
  .newest-casinos__rating-k { display: none; }
  .newest-casinos__cta-wrap { grid-area: cta; justify-content: flex-end; }
}
@media (max-width: 640px) {
  .newest-casinos__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-3);
  }
  .newest-casinos__groups { gap: var(--s-5); }
  .newest-casinos__item {
    grid-template-columns: var(--nc-logo) minmax(0, 1fr);
    grid-template-areas:
      "logo body"
      "rating rating"
      "cta cta";
    gap: var(--s-3);
    padding: var(--s-3);
  }
  .newest-casinos__rating { flex-direction: row; align-items: center; }
  .newest-casinos__cta.btn { width: 100%; }
}

/* ===== newsletter ===== */
/* ============================================================
 * newsletter · block.css
 * Скоуплено на .newsletter. Только токены (10-tokens/).
 * Один акцент (--brand); --success/--danger — ТОЛЬКО для статуса отправки (по смыслу).
 * Карточка: --surface + --hairline + --r-lg + --shadow-card. Конвенция: html-base (data-*).
 * Адаптив: 640. Кнопка/поле — touch-target ≥ --tap-min.
 * ========================================================== */

.newsletter {
  display: block;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

.newsletter__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  align-items: center;
  gap: var(--s-5) var(--s-7);
  max-width: var(--container);
  margin-inline: auto;
}

/* ---- Заголовочная часть ---- */
.newsletter__head { min-width: 0; }

.newsletter__eyebrow {
  display: inline-block;
  margin-bottom: var(--s-2);
  font-size: var(--t-tiny);
  letter-spacing: .12em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}

.newsletter__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-snug);
  font-weight: var(--fw-bold);
  color: var(--text);
}

.newsletter__lede {
  margin: var(--s-2) 0 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- Форма ---- */
.newsletter__form { min-width: 0; }

.newsletter__field {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: var(--s-2);
  position: relative;
  padding: var(--s-2);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  transition: border-color var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease);
}
.newsletter__field:focus-within {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-soft);
}

/* Иконка письма внутри поля */
.newsletter__field-ic {
  position: absolute;
  inset-inline-start: var(--s-4);
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  pointer-events: none;
  color: var(--text-faint);
}

.newsletter__input {
  min-width: 0;
  min-height: var(--tap-min);
  padding: 0 var(--s-4) 0 calc(var(--s-7) + var(--s-1));
  font-family: var(--font-body);
  font-size: var(--t-body);
  color: var(--text);
  background: none;
  border: 0;
  border-radius: var(--r-pill);
  appearance: none;
}
.newsletter__input::placeholder { color: var(--text-faint); }
.newsletter__input:focus { outline: none; }
.newsletter__input:-webkit-autofill { transition: background-color 600000s 0s; }

.newsletter__btn {
  flex: 0 0 auto;
  white-space: nowrap;
}
.newsletter__btn-ic {
  transition: transform var(--dur-quick) var(--ease);
}
.newsletter__btn:hover .newsletter__btn-ic { transform: translateX(2px); }

/* ---- Строка статуса (success / error по смыслу) ---- */
.newsletter__status {
  margin: 0;
  max-height: 0;
  overflow: hidden;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
  opacity: 0;
  transition: max-height var(--dur-base) var(--ease), opacity var(--dur-base) var(--ease), margin var(--dur-base) var(--ease);
}
.newsletter__status:not(:empty) {
  margin-top: var(--s-3);
  max-height: 6em;
  opacity: 1;
}
.newsletter__form.is-success .newsletter__status { color: var(--success); }
.newsletter__form.is-error   .newsletter__status { color: var(--danger); }

/* Контур поля повторяет тон статуса (состояние не только цветом — ещё текст статуса) */
.newsletter__form.is-error .newsletter__field {
  border-color: var(--danger);
  box-shadow: 0 0 0 3px var(--danger-soft);
}
.newsletter__form.is-success .newsletter__field {
  border-color: var(--success);
}

/* ---- Disclaimer ---- */
.newsletter__note {
  margin: var(--s-3) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}
.newsletter__note-link {
  color: var(--text-mute);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  transition: color var(--dur-quick) var(--ease);
}
.newsletter__note-link:hover { color: var(--brand); }

/* ============ Вариант: компактная инлайн-форма ============ */
.newsletter--inline { padding: var(--s-5); }
.newsletter--inline .newsletter__inner {
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s-4);
  text-align: left;
}
.newsletter--inline .newsletter__title { font-size: var(--t-h3); }
.newsletter--inline .newsletter__field {
  grid-template-columns: minmax(0, 1fr);
  border-radius: var(--r-lg);
  gap: var(--s-3);
}
.newsletter--inline .newsletter__input { padding-right: var(--s-3); }
.newsletter--inline .newsletter__btn { width: 100%; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .newsletter__inner {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--s-4);
  }
}

@media (max-width: 640px) {
  .newsletter { padding: var(--s-5); }
  .newsletter__field {
    grid-template-columns: minmax(0, 1fr);
    border-radius: var(--r-lg);
    gap: var(--s-3);
  }
  .newsletter__input { padding-right: var(--s-3); }
  .newsletter__btn { width: 100%; }
}

/* ===== no-deposit-chip ===== */
/* ============================================================
 * no-deposit-chip · block.css
 * Скоуплено на .no-deposit-chip. Только токены (10-tokens/).
 * Компактный «чип» бездепа: eyebrow + headline-значение (FS/$/€) +
 * фикс-слот wager [+ промокод-copy] [+ T&C-drawer]. tabular-nums, ОДИН акцент (--brand).
 * Конвенция разметки/JS: html-rating-guide + _CONTRACT (эталон casino-item-card / .ci-nd).
 * Промокод: copy-on-click + toast (паттерн promo-code-copy). T&C: нативный <details>,
 * раскрытие grid-rows 0fr→1fr (плавно, без JS-замера). Адаптив: 980 / 640.
 * ========================================================== */

.no-deposit-chip {
  --ndc-fill: var(--surface);     /* фон чипа; в --solid → --brand-soft */
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-2);
  max-width: 100%;
  padding: var(--s-3) var(--s-4);
  background: var(--ndc-fill);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  font-family: var(--font-body);
  text-align: left;
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease), border-color var(--dur-base) var(--ease);
}
.no-deposit-chip:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }

/* ---- Eyebrow: метка категории ---- */
.no-deposit-chip__eyebrow {
  margin: 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* ---- Headline: главное значение бездепа (фикс-слот, акцент) ---- */
.no-deposit-chip__value {
  display: flex;
  align-items: baseline;
  gap: var(--s-1);
  margin: 0;
  font-family: var(--font-display);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--brand);
}
.no-deposit-chip__num {
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
}
.no-deposit-chip__unit {
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
}
/* Префиксный юнит (валюта $/€ перед числом) — без отбивки слева */
.no-deposit-chip__unit--pre { margin-inline-end: 0; }
.no-deposit-chip__value:has(.no-deposit-chip__unit--pre) { gap: 0; }

/* ---- Мета: фикс-слоты (wager / макс. вывод …) ---- */
.no-deposit-chip__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2) var(--s-4);
  margin: 0;
}
.no-deposit-chip__slot {
  display: flex;
  align-items: baseline;
  gap: var(--s-1);
  min-width: 0;
}
.no-deposit-chip__slot-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.no-deposit-chip__slot-v {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}

/* Инлайн-числа внутри текста (T&C / --inline wager) */
.no-deposit-chip__num-inline { font-weight: var(--fw-semi); color: var(--text); font-variant-numeric: tabular-nums; }

/* ---- Промокод (copy-on-click + toast) ---- */
.no-deposit-chip__promo {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  max-width: 100%;
  min-height: var(--tap-min);
  padding: var(--s-1) var(--s-3);
  background: var(--brand-soft);
  color: var(--brand);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: background var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.no-deposit-chip__promo:hover {
  background: color-mix(in srgb, var(--brand) 16%, transparent);
  border-color: color-mix(in srgb, var(--brand) 60%, transparent);
}
.no-deposit-chip__promo-label {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.no-deposit-chip__promo-code {
  font-family: var(--font-mono);
  font-weight: var(--fw-semi);
  font-size: var(--t-small);
  letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Иконка copy ↔ check */
.no-deposit-chip__promo-ic {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  width: 15px;
  height: 15px;
}
.no-deposit-chip__ic-copy,
.no-deposit-chip__ic-done {
  position: absolute;
  inset: 0;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.no-deposit-chip__ic-done { opacity: 0; transform: scale(.6); color: var(--success); }
.no-deposit-chip__promo.is-copied .no-deposit-chip__ic-copy { opacity: 0; transform: scale(.6); }
.no-deposit-chip__promo.is-copied .no-deposit-chip__ic-done { opacity: 1; transform: scale(1); }

/* Toast «Скопировано» */
.no-deposit-chip__toast {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + var(--s-2));
  transform: translateX(-50%) translateY(4px);
  z-index: var(--z-toast);
  padding: var(--s-1) var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: 0;
  white-space: nowrap;
  color: var(--on-brand);
  background: var(--text);
  border-radius: var(--r-soft);
  box-shadow: var(--shadow-pop);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.no-deposit-chip__toast::after {
  content: "";
  position: absolute;
  top: 100%;
  inset-inline-start: 50%;
  width: var(--s-2);
  height: var(--s-2);
  transform: translate(-50%, -50%) rotate(45deg);
  background: var(--text);
}
.no-deposit-chip__promo.is-copied .no-deposit-chip__toast { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ---- T&C-drawer (нативный <details>, держит чип чистым) ---- */
.no-deposit-chip__terms { width: 100%; }
.no-deposit-chip__terms-q {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: .02em;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.no-deposit-chip__terms-q::-webkit-details-marker { display: none; }
.no-deposit-chip__terms-q:hover { color: var(--brand); }
.no-deposit-chip__terms[open] .no-deposit-chip__terms-q { color: var(--brand); }
.no-deposit-chip__terms-label { text-decoration: underline; text-underline-offset: 2px; text-decoration-thickness: 1px; }
.no-deposit-chip__terms-chevron {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.no-deposit-chip__terms-q:hover .no-deposit-chip__terms-chevron,
.no-deposit-chip__terms[open] .no-deposit-chip__terms-chevron { color: var(--brand); }
.no-deposit-chip__terms[open] .no-deposit-chip__terms-chevron { transform: rotate(180deg); }

/* Раскрытие высотой без JS-замера */
.no-deposit-chip__terms-a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.no-deposit-chip__terms[open] .no-deposit-chip__terms-a { grid-template-rows: 1fr; }
.no-deposit-chip__terms-inner { overflow: hidden; min-width: 0; min-height: 0; }
.no-deposit-chip__terms-inner p {
  padding-top: var(--s-2);
  max-width: 42ch;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* ---- CTA (одна на чип; вариант --with-cta) ---- */
.no-deposit-chip__cta { margin-top: var(--s-1); }

/* ============ Вариант: --solid (залит брендовым тоном, акцентная рамка) ============ */
.no-deposit-chip--solid {
  --ndc-fill: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 35%, transparent);
}

/* ============ Вариант: --with-cta (растянуть на читаемую ширину под кнопку) ============ */
.no-deposit-chip--with-cta { display: flex; min-width: 220px; }
.no-deposit-chip--with-cta .no-deposit-chip__cta { width: 100%; }

/* ============ Вариант: --inline (без рамки/фона/тени — мета в ряд) ============ */
.no-deposit-chip--inline {
  flex-flow: row wrap;
  align-items: baseline;
  gap: var(--s-1) var(--s-3);
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.no-deposit-chip--inline:hover { box-shadow: none; transform: none; }
.no-deposit-chip--inline .no-deposit-chip__num { font-size: var(--t-h4); }
.no-deposit-chip--inline .no-deposit-chip__unit { font-size: var(--t-small); }
.no-deposit-chip__wager-inline { font-size: var(--t-small); color: var(--text-mute); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .no-deposit-chip__meta { gap: var(--s-1) var(--s-3); }
}
@media (max-width: 640px) {
  .no-deposit-chip { width: 100%; padding: var(--s-3); }
  .no-deposit-chip__promo { width: 100%; justify-content: space-between; }
  .no-deposit-chip--inline { width: auto; }
}

/* ============ Reduced motion: без анимации высоты/шеврона ============ */
@media (prefers-reduced-motion: reduce) {
  .no-deposit-chip__terms-a { transition: none; }
  .no-deposit-chip__terms-chevron { transition: color var(--dur-quick) var(--ease); }
}

/* ===== odds-table ===== */
/* ============================================================
 * odds-table · block.css
 * Скоуплено на .odds-table. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Реальная <table> (строки=исходы, колонки=операторы).
 * ОДИН акцент --brand (лучший коэф .is-best). Движение коэф up=--success / down=--danger
 * ТОЛЬКО по смыслу (+ стрелка, не только цвет). Подразумеваемая вероятность = dataviz-метр.
 * Адаптив: 980 — уплотнение; 640 — горизонт-скролл + липкая колонка исходов.
 * ========================================================== */

.odds-table {
  display: block;
  font-variant-numeric: tabular-nums;
}

/* ---- Шапка ---- */
.odds-table__head { margin-bottom: var(--s-4); }
.odds-table__title {
  margin: var(--s-1) 0 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.odds-table__sub { margin-top: var(--s-1); font-size: var(--t-small); }

/* ---- Скролл-обёртка ---- */
.odds-table__scroll {
  overflow-x: auto;
  border-radius: var(--r-lg);
  -webkit-overflow-scrolling: touch;
}
.odds-table__scroll:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ---- Таблица (surface-card) ---- */
.odds-table__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  table-layout: fixed;
  overflow: hidden;
}
.odds-table__col-outcome { width: 40%; }
.odds-table__col-op { width: 20%; }

/* ---- Шапка таблицы ---- */
.odds-table__th {
  padding: var(--s-3) var(--s-4);
  text-align: center;
  vertical-align: middle;
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: var(--hairline);
}
.odds-table__th + .odds-table__th { border-left: var(--hairline); }
.odds-table__th--outcome { text-align: left; }

/* ---- Колонка исходов ---- */
.odds-table__outcome {
  padding: var(--s-3) var(--s-4);
  text-align: left;
  vertical-align: middle;
  background: var(--surface-2);
  border-bottom: var(--hairline);
}
.odds-table__outcome-main {
  display: block;
  font-weight: var(--fw-semi);
  font-size: var(--t-body);
  color: var(--text);
  line-height: var(--lh-snug);
}
.odds-table__outcome-tag {
  display: block; margin-top: 2px;
  font-size: var(--t-tiny); color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}
.odds-table__outcome-tag b { color: var(--text-dim); font-weight: var(--fw-semi); }

/* Подразумеваемая вероятность — dataviz-метр */
.odds-table__prob {
  display: block; margin-top: var(--s-2);
  width: min(180px, 100%); height: 5px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.odds-table__prob-fill {
  display: block; height: 100%;
  width: calc(var(--val) * 1%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- Ячейка коэффициента ---- */
.odds-table__cell {
  padding: var(--s-3);
  text-align: center;
  vertical-align: middle;
  border-bottom: var(--hairline);
  border-left: var(--hairline);
}
.odds-table__table tbody tr:last-child .odds-table__outcome,
.odds-table__table tbody tr:last-child .odds-table__cell { border-bottom: none; }

/* зебра */
.odds-table__table tbody tr:nth-child(even) .odds-table__outcome { background: var(--surface-3); }
.odds-table__table tbody tr:nth-child(even) .odds-table__cell { background: var(--bg-2); }

/* ---- Пилюля-коэффициент (кнопка) ---- */
.odds-pill {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--s-1);
  min-width: 4.5em; min-height: var(--tap-min);
  padding: var(--s-1) var(--s-3);
  font-weight: var(--fw-bold); font-size: var(--t-body);
  color: var(--text);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  font-variant-numeric: tabular-nums;
  transition: border-color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.odds-pill:hover { border-color: var(--rule-strong); transform: translateY(-1px); }
.odds-pill__v { font-variant-numeric: tabular-nums; }

/* движение коэф: стрелка + цвет (состояние не только цветом) */
.odds-pill__move { flex: 0 0 auto; }
.odds-pill--up .odds-pill__move { color: var(--success); }
.odds-pill--down .odds-pill__move { color: var(--danger); }

/* Лучший коэф — ОДИН акцент --brand */
.odds-pill.is-best {
  color: var(--on-brand);
  background: var(--brand);
  border-color: var(--brand);
}
.odds-pill.is-best:hover { background: color-mix(in srgb, var(--brand) 88%, #000); }
.odds-pill__best {
  display: inline-flex; align-items: center; gap: 2px;
  font-size: 10px; font-weight: var(--fw-bold);
  letter-spacing: .04em; text-transform: uppercase;
  opacity: .92;
}
/* у best стрелка движения наследует контрастный цвет */
.odds-pill.is-best .odds-pill__move { color: currentColor; }

/* ---- Подвал: легенда + CTA ---- */
.odds-table__foot {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: var(--s-4);
  margin-top: var(--s-4);
}
.odds-table__legend { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--s-4); }
.odds-table__legend-item { display: inline-flex; align-items: center; gap: var(--s-2); font-size: var(--t-tiny); color: var(--text-mute); }
.odds-table__legend-sw { width: 16px; height: 12px; border-radius: var(--r-soft); }
.odds-table__legend-sw--best { background: var(--brand); }
.odds-table__legend-ic { font-size: 10px; line-height: 1; }
.odds-table__legend-ic--up { color: var(--success); }
.odds-table__legend-ic--down { color: var(--danger); }
.odds-table__cta { flex: 0 0 auto; }

.odds-table__note { margin-top: var(--s-4); font-size: var(--t-tiny); line-height: var(--lh-snug); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .odds-table__th, .odds-table__outcome { padding: var(--s-3); }
  .odds-table__cell { padding: var(--s-2); }
  .odds-pill { font-size: var(--t-small); }
}

@media (max-width: 640px) {
  .odds-table__table { table-layout: auto; min-width: 540px; }
  .odds-table__col-outcome, .odds-table__col-op { width: auto; }

  /* колонка исходов липкая */
  .odds-table__th--outcome,
  .odds-table__outcome {
    position: sticky; left: 0; z-index: var(--z-base);
    min-width: 170px;
    box-shadow: 1px 0 0 0 var(--rule);
  }
  .odds-table__cell { min-width: 96px; }

  .odds-table__foot { flex-direction: column; align-items: stretch; }
  .odds-table__cta { width: 100%; }
}

/* ===== offer-table ===== */
/* ============================================================
 * offer-table · block.css
 * Скоуплено на .offer-table. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Настоящая <table>, СТРОКА = один оффер
 * (бренд/бонус/wager/code/CTA). ОДИН акцент --brand (рейтинг, CTA, hover-строки).
 * --success/--danger — НЕ используются как декор (нет булевых столбцов).
 * Метр-бар вместо звёзд (рейтинг + «отыгрываемость» вейджера). ОДНА CTA на строку.
 * Позиция (#) — CSS-counter. T&C — раскрываемый drawer ВНУТРИ строки (под CTA),
 * один <tr> на оффер → совместимо с делегированной сортировкой <tbody>.
 * Адаптив: 980 — уплотнение; 640 — горизонтальный скролл + липкие колонки # / бренд.
 * ========================================================== */

.offer-table {
  --oft-logo: 40px;               /* фикс-слот лого в ячейке бренда */
  --oft-rank-w: 44px;             /* узкая колонка позиции */
  --oft-cell-y: var(--s-3);       /* единый вертикальный паддинг ячеек */
  --oft-cell-x: var(--s-4);       /* единый горизонтальный паддинг ячеек */
  display: block;
  font-variant-numeric: tabular-nums;
}

/* ---- Заголовок блока ---- */
.offer-table__head { margin-bottom: var(--s-5); }
.offer-table__eyebrow { margin-bottom: var(--s-2); }
.offer-table__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.offer-table__lede { margin-top: var(--s-2); }

/* ---- Обёртка-скролл (на узких экранах не теряем семантику table) ---- */
.offer-table__scroll {
  overflow-x: auto;
  border-radius: var(--r-lg);
  -webkit-overflow-scrolling: touch;
}
.offer-table__scroll:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ---- Таблица (карточная поверхность: surface + hairline + r-lg + shadow) ---- */
.offer-table__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  counter-reset: oft;                /* позиция строк-офферов */
  overflow: hidden;                   /* радиус подрезает угловые ячейки */
}

/* Раскладка колонок через colgroup */
.offer-table__col-rank  { width: var(--oft-rank-w); }
.offer-table__col-brand { width: 26%; }
.offer-table__col-bonus { width: 22%; }
.offer-table__col-wager { width: 16%; }
.offer-table__col-code  { width: 18%; }
.offer-table__col-cta   { width: 18%; }

/* ============ Шапка (сортируемая) ============ */
.offer-table__thead .offer-table__th {
  padding: var(--s-3) var(--oft-cell-x);
  text-align: left;
  vertical-align: middle;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: var(--hairline);
  white-space: nowrap;
}
.offer-table__th--rank { text-align: center; color: var(--text-faint); }
.offer-table__th--cta { width: 1%; }

/* Кнопка-сортировка в заголовке */
.offer-table__sort {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: inherit;
  transition: color var(--dur-quick) var(--ease);
}
.offer-table__sort:hover { color: var(--brand); }
.offer-table__sort-ic { display: inline-flex; color: var(--text-faint); transition: color var(--dur-quick) var(--ease); }
.offer-table__sort:hover .offer-table__sort-ic { color: var(--brand); }
/* активная сортировка (aria-pressed=true) — акцент */
.offer-table__sort[aria-pressed="true"] { color: var(--brand); }
.offer-table__sort[aria-pressed="true"] .offer-table__sort-ic { color: var(--brand); }

/* ============ Тело: строка = оффер ============ */
.offer-table__row {
  counter-increment: oft;
  transition: background var(--dur-quick) var(--ease);
}
.offer-table__row:hover { background: var(--brand-soft); }

.offer-table__cell {
  padding: var(--oft-cell-y) var(--oft-cell-x);
  vertical-align: middle;
  text-align: left;
  font-size: var(--t-small);
  color: var(--text-dim);
  border-bottom: var(--hairline);
}

/* Позиция (#) — CSS-counter, не в HTML */
.offer-table__cell--rank { text-align: center; width: var(--oft-rank-w); }
.offer-table__rank {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.offer-table__rank::before { content: counter(oft); }
/* Топ-3 — акцентная позиция (строка-оффер = один <tr>, drawer внутри ячейки) */
.offer-table__body tr:nth-child(-n+3) .offer-table__rank { color: var(--brand); }

/* ---- Колонка бренда: лого + имя + рейтинг-метр ---- */
.offer-table__cell--brand { font-weight: inherit; }
.offer-table__brand {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  min-width: 0;
}
.offer-table__logo {
  flex: 0 0 auto;
  width: var(--oft-logo);
  height: var(--oft-logo);
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
}
.offer-table__brand-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.offer-table__brand-name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Рейтинг: число + метр-бар (ширина = балл×10%, градиент rating-from→to) */
.offer-table__rating { display: flex; align-items: center; gap: var(--s-2); }
.offer-table__rating-val {
  font-weight: var(--fw-bold);
  font-size: var(--t-small);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.offer-table__rating-val small { color: var(--text-faint); font-weight: var(--fw-medium); }
.offer-table__meter {
  width: 64px;
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.offer-table__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- Колонка бонуса ---- */
.offer-table__num {
  font-weight: var(--fw-bold);
  font-size: var(--t-body);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.offer-table__sub {
  display: block;
  margin-top: 2px;
  font-size: var(--t-tiny);
  color: var(--text-faint);
}
.offer-table__tag {
  display: inline-block;
  margin-top: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  border-radius: var(--r-pill);
}
.offer-table__tag--type { color: var(--text-mute); background: var(--bg-2); border: var(--hairline); }

/* ---- Колонка вейджера: число + метр «отыгрываемости» (dataviz вместо звёзд) ---- */
.offer-table__cell--wager .offer-table__num { font-size: var(--t-h4); }
.offer-table__metric {
  display: block;
  width: min(72px, 100%);
  margin-top: var(--s-1);
  height: 5px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.offer-table__metric-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- Колонка промокода (copy-on-click + тост) ---- */
.offer-table__promo {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  position: relative;
  padding: var(--s-1) var(--s-3);
  min-height: var(--tap-min);
  background: var(--brand-soft);
  color: var(--brand);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md);
  transition: background var(--dur-quick) var(--ease);
}
.offer-table__promo:hover { background: color-mix(in srgb, var(--brand) 16%, transparent); }
.offer-table__promo-code {
  font-family: var(--font-mono);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
}
.offer-table__promo-ic { display: inline-flex; }
.offer-table__promo-toast {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + 6px);
  transform: translateX(-50%);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  white-space: nowrap;
  color: var(--on-brand);
  background: var(--text);
  border-radius: var(--r-soft);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease);
  z-index: var(--z-popover);
}
.offer-table__promo.is-copied .offer-table__promo-toast { opacity: 1; }
.offer-table__nocode { font-size: var(--t-small); color: var(--text-faint); }

/* ---- Колонка CTA (ОДНА на строку) + кнопка T&C + drawer ---- */
.offer-table__cell--cta {
  text-align: right;
  vertical-align: top;
}
.offer-table__cta-wrap { display: inline-flex; flex-direction: column; align-items: stretch; gap: var(--s-1); min-width: 96px; }
.offer-table__cta { width: 100%; }
.offer-table__terms-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  min-height: var(--tap-min);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.offer-table__terms-btn:hover { color: var(--brand); }
.offer-table__chevron { transition: transform var(--dur-base) var(--ease); }
.offer-table__terms-btn[aria-expanded="true"] .offer-table__chevron { transform: rotate(180deg); }

/* T&C-drawer: раскрывается ВНУТРИ строки (под CTA), строка-оффер остаётся одним <tr>
   → совместимо с делегированной сортировкой (reorder <tbody> children). */
.offer-table__terms {
  margin-top: var(--s-2);
  padding: var(--s-3);
  text-align: left;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  background: var(--surface-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.offer-table__terms[hidden] { display: none; }

/* Убрать нижнюю границу у последней строки */
.offer-table__body tr:last-child .offer-table__cell { border-bottom: none; }

/* ---- Дисклеймер под таблицей ---- */
.offer-table__disclaimer { margin-top: var(--s-3); font-size: var(--t-tiny); }

/* ============ Вариант --compact (плотный листинг) ============ */
.offer-table--compact { --oft-logo: 32px; --oft-cell-y: var(--s-2); }
.offer-table--compact .offer-table__brand-name { font-size: var(--t-small); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .offer-table { --oft-cell-x: var(--s-3); }
  .offer-table__cell--bonus .offer-table__num,
  .offer-table__cell--wager .offer-table__num { font-size: var(--t-small); }
  .offer-table__meter { width: 52px; }
}

@media (max-width: 640px) {
  /* Горизонтальный скролл: таблица не сплющивается; колонка бренда — липкая. */
  .offer-table__table { min-width: 660px; }

  .offer-table__col-rank,
  .offer-table__col-brand,
  .offer-table__col-bonus,
  .offer-table__col-wager,
  .offer-table__col-code,
  .offer-table__col-cta { width: auto; }

  /* Липкие колонки # + бренд: непрозрачный фон обязателен (иначе просвечивает) */
  .offer-table__th--rank,
  .offer-table__cell--rank {
    position: sticky;
    left: 0;
    z-index: var(--z-sticky);
    background: var(--surface);
    min-width: var(--oft-rank-w);
  }
  .offer-table__th--rank { background: var(--surface-2); }

  .offer-table__th--brand,
  .offer-table__cell--brand {
    position: sticky;
    left: var(--oft-rank-w);
    z-index: var(--z-sticky);
    min-width: 150px;
    background: var(--surface);
    box-shadow: 1px 0 0 0 var(--rule);
  }
  .offer-table__th--brand { background: var(--surface-2); }
  /* липкая ячейка бренда должна перекрывать hover-фон строки */
  .offer-table__row:hover .offer-table__cell--brand,
  .offer-table__row:hover .offer-table__cell--rank { background: color-mix(in srgb, var(--brand) 6%, var(--surface)); }

  .offer-table__cell--bonus,
  .offer-table__cell--wager,
  .offer-table__cell--code { min-width: 130px; }
  .offer-table__cell--cta { min-width: 124px; }
}

/* ===== pagination ===== */
/* ============================================================
 * pagination · block.css
 * Скоуплено на .pagination. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base + html-rating-guide (guide-pagination).
 * Адаптив: 980 / 640. JS не требуется.
 * ========================================================== */

.pagination {
  /* Фикс-слот ячейки — единый квадрат для номеров (≥ tap-min на touch) */
  --pg-cell: 40px;

  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-3);
  font-family: var(--font-body);
}

.pagination__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
}

.pagination__item {
  display: inline-flex;
  align-items: center;
}

/* ---- Номер страницы (фикс-слот, единый radius/тень) ---- */
.pagination__page {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--pg-cell);
  height: var(--pg-cell);
  padding-inline: var(--s-2);
  color: var(--text-mute);
  text-decoration: none;
  font-weight: var(--fw-medium);
  /* Табличные цифры — ряд номеров не «дёргается» при смене разрядности */
  font-variant-numeric: tabular-nums;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
  transition:
    color var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease),
    background var(--dur-quick) var(--ease),
    transform var(--dur-quick) var(--ease);
}
.pagination__page:hover {
  color: var(--brand);
  border-color: var(--brand);
  transform: translateY(-1px);
}

/* Текущая страница — единственный акцент (--brand). Не ведёт никуда визуально активная. */
.pagination__page.is-current {
  color: var(--on-brand);
  background: var(--brand);
  border-color: var(--brand);
  box-shadow: var(--shadow-card);
  cursor: default;
  pointer-events: none;
}

/* ---- Prev / Next (пилюли с подписью + шеврон) ---- */
.pagination__edge {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--pg-cell);
  min-width: var(--tap-min);
  padding-inline: var(--s-3);
  color: var(--text);
  text-decoration: none;
  font-weight: var(--fw-semi);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  transition:
    color var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease),
    transform var(--dur-quick) var(--ease);
}
.pagination__edge:hover {
  color: var(--brand);
  border-color: var(--brand);
}
.pagination__edge-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}
.pagination__edge:hover .pagination__edge-ic { color: var(--brand); }

/* Край недоступен (1-я/последняя страница): приглушён, не кликается, без фокуса */
.pagination__edge.is-disabled {
  color: var(--text-faint);
  background: var(--bg-2);
  box-shadow: none;
  cursor: not-allowed;
  pointer-events: none;
}
.pagination__edge.is-disabled .pagination__edge-ic { color: var(--text-faint); }

/* ---- Разрыв диапазона «…» (декоративный) ---- */
.pagination__ellipsis {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--s-5);
  height: var(--pg-cell);
  color: var(--text-faint);
  letter-spacing: .1em;
  user-select: none;
}

/* ---- Статус «Страница X из Y» ---- */
.pagination__status {
  margin: 0;
  font-size: var(--t-small);
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  /* Подписи краёв прячем, оставляем шевроны — экономим ширину */
  .pagination__edge-label { display: none; }
  .pagination__edge {
    justify-content: center;
    padding-inline: var(--s-2);
    border-radius: var(--r-md);
  }
}

@media (max-width: 640px) {
  .pagination { --pg-cell: var(--tap-min); }   /* touch ≥ 44px */
  .pagination__list { gap: var(--s-1); }
  /* Узкие хвостовые номера прячем, ряд держится на prev · диапазон вокруг текущей · next */
  .pagination__item--wide { display: none; }
  .pagination__item--gap:last-of-type { display: none; }
}

/* ===== payment-grid ===== */
/* ============================================================
 * payment-grid · block.css
 * Скоуплено на .payment-grid. Только токены (10-tokens/).
 * Конвенция разметки: ★research / premium-планка (своя разметка).
 * Один акцент — --brand (обводка слота, единственная CTA). Числа/лимиты —
 * tabular-nums. Tooltip и T&C-drawer — без JS (CSS hover/focus + <details>).
 * Адаптив: 980 / 640.
 * ========================================================== */

.payment-grid {
  /* фикс-слот лого: единый размер во всём гриде (premium-ритм) */
  --pg-slot: 116px;
  display: block;
}

/* ---- Шапка ---- */
.payment-grid__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.payment-grid__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.payment-grid__lede {
  margin: 0;
  max-width: var(--container-prose);
}

/* ---- Грид равных слотов ---- */
.payment-grid__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--pg-slot), 1fr));
  gap: var(--s-3);
}
.payment-grid__item { display: block; min-width: 0; }

/* ---- Слот: bespoke SVG + подпись, единые padding/radius/shadow ---- */
.payment-grid__slot {
  position: relative;
  width: 100%;
  min-height: var(--tap-min);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  padding: var(--s-4) var(--s-3);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text-dim);
  cursor: pointer;
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease);
}
.payment-grid__slot:hover,
.payment-grid__slot:focus-visible {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
  color: var(--text);
}

/* лого — нейтральная марка; красится currentColor от слота */
.payment-grid__logo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 32px;
}
.payment-grid__logo svg { display: block; height: 32px; width: auto; }

.payment-grid__name {
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: .02em;
  color: var(--text-mute);
}
.payment-grid__slot:hover .payment-grid__name,
.payment-grid__slot:focus-visible .payment-grid__name { color: var(--text); }

/* ---- Tooltip с лимитами (CSS-only, hover/focus) ---- */
.payment-grid__tip {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + var(--s-2));
  transform: translateX(-50%) translateY(4px);
  z-index: var(--z-popover);
  width: max-content;
  max-width: 220px;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  padding: var(--s-3);
  text-align: left;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
/* стрелка-указатель */
.payment-grid__tip::after {
  content: "";
  position: absolute;
  top: 100%;
  inset-inline-start: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: var(--surface);
}
.payment-grid__slot:hover .payment-grid__tip,
.payment-grid__slot:focus-visible .payment-grid__tip {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.payment-grid__tip-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
}
.payment-grid__tip-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.payment-grid__tip-v {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* ---- Все числа/лимиты — табличные цифры ---- */
.payment-grid__num { font-variant-numeric: tabular-nums; }

/* ---- T&C-drawer (нативный <details>) ---- */
.payment-grid__terms {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.payment-grid__terms-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.payment-grid__terms-sum::-webkit-details-marker { display: none; }
.payment-grid__terms-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.payment-grid__terms[open] .payment-grid__terms-chev { transform: rotate(180deg); }
.payment-grid__terms-body {
  padding: 0 var(--s-4) var(--s-4);
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.payment-grid__terms-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ---- Таблица лимитов (tabular) ---- */
.payment-grid__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
}
.payment-grid__table--inline { margin-top: var(--s-5); }
.payment-grid__table th,
.payment-grid__table td {
  padding: var(--s-2) var(--s-3);
  text-align: left;
  border-bottom: var(--hairline);
}
.payment-grid__table thead th {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.payment-grid__table tbody th {
  font-weight: var(--fw-semi);
  color: var(--text);
}
.payment-grid__table tbody td { color: var(--text-dim); }
.payment-grid__table tbody tr:last-child th,
.payment-grid__table tbody tr:last-child td { border-bottom: 0; }
.payment-grid__col-num { text-align: right; font-variant-numeric: tabular-nums; }

/* ---- CTA (ровно одна на блок) ---- */
.payment-grid__cta {
  margin-top: var(--s-5);
  display: flex;
  justify-content: center;
}

/* ============ Модификатор: компактный ============ */
.payment-grid--compact { --pg-slot: 96px; }
.payment-grid--compact .payment-grid__slot { padding: var(--s-3) var(--s-2); }
.payment-grid--compact .payment-grid__logo,
.payment-grid--compact .payment-grid__logo svg { height: 28px; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .payment-grid { --pg-slot: 104px; }
  .payment-grid__grid { gap: var(--s-2); }
}
@media (max-width: 640px) {
  .payment-grid { --pg-slot: 88px; }
  /* на узких экранах tooltip может упереться в край — центрируем по слоту,
     ограничивая ширину; стрелка остаётся под слотом */
  .payment-grid__tip { max-width: min(220px, 70vw); }
  /* таблица: горизонтальный скролл вместо ломки колонок */
  .payment-grid__table { display: block; overflow-x: auto; white-space: nowrap; }
  .payment-grid__cta .btn { width: 100%; }
}

/* ===== paytable ===== */
/* ============================================================
 * paytable · block.css
 * Скоуплено на .paytable. Только токены (10-tokens/).
 * Конвенция: html-slots (таблица символов/выплат слота) + premium-планка.
 * Настоящая <table>: строки = символы, колонки = множители ×3/×4/×5.
 * ОДИН акцент --brand: спец-символы (Wild/Scatter), колонка ×5 (старший матч), CTA.
 *   --success/--danger НЕ применяются: у выплат нет смысла «хорошо/плохо».
 * Поверхность-карточка: --surface + --hairline + --r-lg + --shadow-card.
 * Числа — tabular-nums. Адаптив: 980 — уплотнение; 640 — горизонт. скролл + липкая
 *   колонка символов. Доп. motion — только поворот шеврона (гасится reduced-motion из base).
 * ========================================================== */

.paytable {
  --pt-swatch: 40px;            /* фикс-слот свотча символа */
  --pt-pay-min: 88px;           /* мин. ширина колонки выплаты */
  display: block;
  font-variant-numeric: tabular-nums;
}

/* ---- Шапка блока ---- */
.paytable__head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-3) var(--s-5);
  margin-bottom: var(--s-5);
}
.paytable__heading { display: flex; flex-direction: column; gap: var(--s-2); min-width: 0; }
.paytable__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
/* Мета-чип «как читать» — нейтральный, не конкурирует с акцентом */
.paytable__hint {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}
.paytable__hint-ic { display: inline-flex; color: var(--text-faint); }

/* ---- Скролл-обёртка (узкие экраны — без потери семантики table) ---- */
.paytable__scroll {
  overflow-x: auto;
  border-radius: var(--r-lg);
  -webkit-overflow-scrolling: touch;
}
.paytable__scroll:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ---- Таблица (карточная поверхность) ---- */
.paytable__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  table-layout: fixed;
  overflow: hidden;             /* радиус подрезает угловые ячейки */
}
.paytable__col-sym { width: 46%; }
.paytable__col-pay { width: 18%; }

/* ---- Шапка таблицы ---- */
.paytable__th {
  padding: var(--s-3) var(--s-4);
  vertical-align: middle;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: var(--hairline);
}
.paytable__th--sym { text-align: left; }
.paytable__th--num { text-align: right; font-variant-numeric: tabular-nums; }
.paytable__th--num + .paytable__th--num,
.paytable__th--num { border-left: var(--hairline); }
.paytable__th--sym { border-left: none; }

/* Колонка ×5 — старший матч: единственное акцент-пятно в шапке */
.paytable__col-pay--top { width: 18%; }
.paytable__th--top {
  color: var(--brand);
  background: var(--brand-soft);
  box-shadow: inset 0 3px 0 0 var(--brand);
}
.paytable__th-badge {
  display: block;
  margin-top: 2px;
  font-size: 10px;
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  text-transform: none;
  color: var(--brand);
}

/* ---- Тело: ряд = символ ---- */
.paytable__sym {
  padding: var(--s-3) var(--s-4);
  vertical-align: middle;
  text-align: left;
  font-weight: var(--fw-body);
  border-bottom: var(--hairline);
  background: var(--surface);
}
.paytable__sym-txt {
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  vertical-align: middle;
}
.paytable__sym {
  display: flex;
  align-items: center;
  gap: var(--s-3);
}
.paytable__sym-name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}
.paytable__sym-tier {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-faint);
  line-height: var(--lh-snug);
}
.paytable__sym-tier--special {
  text-transform: none;
  letter-spacing: 0;
  color: var(--text-mute);
  font-weight: var(--fw-medium);
}

/* Свотч-иконка символа (фикс-слот) */
.paytable__swatch {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--pt-swatch);
  height: var(--pt-swatch);
  color: var(--text-mute);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
/* Рояльные A/K/Q/J — буквенный свотч (моно, как «карта») */
.paytable__swatch--royal {
  font-family: var(--font-mono);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text-dim);
}
/* Спец-символ — акцентный свотч (один акцент --brand) */
.paytable__swatch--brand {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 35%, transparent);
}

/* Ячейка выплаты */
.paytable__pay {
  padding: var(--s-3) var(--s-4);
  vertical-align: middle;
  text-align: right;
  font-size: var(--t-body);
  color: var(--text-dim);
  border-bottom: var(--hairline);
  border-left: var(--hairline);
  white-space: nowrap;
}
.paytable__num {
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.paytable__x { margin-left: 1px; color: var(--text-faint); font-weight: var(--fw-medium); }

/* Колонка ×5 в теле — лёгкая акцент-подсветка (продолжение шапки) */
.paytable__pay--top { background: var(--brand-soft); }
.paytable__pay--top .paytable__num { color: var(--brand); font-weight: var(--fw-bold); }
.paytable__pay--top .paytable__x { color: color-mix(in srgb, var(--brand) 60%, transparent); }

/* Зебра по рядам тела (читаемость при широкой таблице) */
.paytable__body tr:nth-child(even) .paytable__sym { background: var(--surface-2); }
.paytable__body tr:nth-child(even) .paytable__pay { background: var(--bg-2); }
.paytable__body tr:nth-child(even) .paytable__pay--top { background: color-mix(in srgb, var(--brand) 11%, transparent); }

/* Спец-ряды (Wild/Scatter) — приоритетная подсветка, бьёт зебру */
.paytable__row--special .paytable__sym,
.paytable__body tr.paytable__row--special:nth-child(even) .paytable__sym { background: var(--brand-soft); }
.paytable__row--special .paytable__pay,
.paytable__body tr.paytable__row--special:nth-child(even) .paytable__pay { background: color-mix(in srgb, var(--brand) 9%, transparent); }
.paytable__row--special .paytable__pay--top,
.paytable__body tr.paytable__row--special:nth-child(even) .paytable__pay--top { background: color-mix(in srgb, var(--brand) 16%, transparent); }
.paytable__row--special .paytable__sym-name { color: var(--brand); }

/* Срез нижней кромки у последнего ряда (радиус таблицы) */
.paytable__body tr:last-child .paytable__sym,
.paytable__body tr:last-child .paytable__pay { border-bottom: none; }

/* ---- Легенда: нативный <details>-drawer ---- */
.paytable__legend {
  margin-top: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  overflow: hidden;
}
.paytable__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.paytable__summary::-webkit-details-marker { display: none; }
.paytable__summary:hover { color: var(--brand); }
.paytable__chev {
  display: inline-flex;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.paytable__legend[open] .paytable__chev { transform: rotate(180deg); }
.paytable__legend-body {
  padding: 0 var(--s-4) var(--s-4);
  border-top: var(--hairline);
}
.paytable__legend-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-3); padding-top: var(--s-3); }
.paytable__legend-item { display: grid; grid-template-columns: 88px 1fr; gap: var(--s-3); align-items: start; }
.paytable__legend-key {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.paytable__legend-key--special {
  color: var(--brand);
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 35%, transparent);
}
.paytable__legend-val { font-size: var(--t-small); line-height: var(--lh-snug); color: var(--text-dim); }

/* ---- Низ: заметка-источник + ОДНА CTA ---- */
.paytable__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3) var(--s-5);
  margin-top: var(--s-5);
}
.paytable__note { margin: 0; font-size: var(--t-small); color: var(--text-mute); max-width: 60ch; }
.paytable__cta { flex: 0 0 auto; }

/* ============ Вариант: компактный ============ */
.paytable--compact { --pt-swatch: 32px; }
.paytable--compact .paytable__col-sym { width: 56%; }
.paytable--compact .paytable__col-pay { width: 22%; }
.paytable--compact .paytable__sym { padding: var(--s-2) var(--s-3); }
.paytable--compact .paytable__pay { padding: var(--s-2) var(--s-3); font-size: var(--t-small); }
.paytable--compact .paytable__th { padding: var(--s-2) var(--s-3); }
.paytable--compact .paytable__sym-name { font-size: var(--t-small); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .paytable__th,
  .paytable__sym,
  .paytable__pay { padding: var(--s-3); }
  .paytable__pay { font-size: var(--t-small); }
  .paytable__sym-name { font-size: var(--t-small); }
}

@media (max-width: 640px) {
  /* Горизонт. скролл: минимум ширины на колонку; колонка символов — липкая. */
  .paytable__table { table-layout: auto; min-width: 480px; }
  .paytable__col-sym,
  .paytable__col-pay { width: auto; }

  .paytable__th--sym,
  .paytable__sym {
    position: sticky;
    left: 0;
    z-index: var(--z-base);
    min-width: 160px;
    /* непрозрачный фон обязателен — иначе содержимое просвечивает при скролле */
    box-shadow: 1px 0 0 0 var(--rule);
  }
  .paytable__th--num,
  .paytable__pay { min-width: var(--pt-pay-min); }

  /* Липкая колонка над зеброй/спец — сохраняем непрозрачность фонов (заданы выше) */
  .paytable__legend-item { grid-template-columns: 72px 1fr; gap: var(--s-2); }
  .paytable__head { align-items: flex-start; }
}

/* ===== player-testimonials ===== */
/* ============================================================
 * player-testimonials · block.css
 * Скоуплено на .player-testimonials / .ptest. Только токены (10-tokens/).
 * Конвенция: html-base (статичные карточки-цитаты). Адаптив: 980 / 640.
 * Один акцент = --brand; success = verified-метка по смыслу (не декор).
 * ========================================================== */

.player-testimonials { display: block; }

/* ---- Интро ---- */
.ptest__intro {
  display: flex; flex-direction: column; gap: var(--s-2);
  margin-bottom: var(--s-6);
  max-width: var(--container-prose);
}
.ptest__head {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2); font-weight: var(--fw-bold);
  color: var(--text);
}
.ptest__sub { margin: 0; font-size: var(--t-body); }

/* ---- Грид ---- */
.ptest__grid {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--s-5);
}
.ptest__cell { display: flex; min-width: 0; }

/* ---- Карточка-цитата ---- */
.ptest {
  position: relative;
  display: flex; flex-direction: column; gap: var(--s-4);
  width: 100%;
  margin: 0;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.ptest:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); }

/* Декор-кавычка (приглушённый акцент, не второй цвет) */
.ptest__mark {
  display: inline-flex;
  color: color-mix(in srgb, var(--brand) 28%, transparent);
}

/* ---- Цитата ---- */
.ptest__quote {
  margin: 0;
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
  flex: 1 1 auto;
}

/* ---- Автор ---- */
.ptest__author {
  display: flex; align-items: center; gap: var(--s-3);
  min-width: 0;
}
.ptest__avatar {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; flex: 0 0 auto;
  font-family: var(--font-display);
  font-size: var(--t-small); font-weight: var(--fw-bold);
  color: var(--brand); background: var(--brand-soft);
  border: var(--hairline);
  border-radius: var(--r-pill);
}
.ptest__author-meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.ptest__name {
  display: inline-flex; align-items: center; gap: var(--s-1);
  font-weight: var(--fw-bold); color: var(--text);
}
.ptest__verified {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; flex: 0 0 auto;
  color: var(--on-brand); background: var(--success);
  border-radius: var(--r-pill);
}
.ptest__role {
  font-size: var(--t-small); color: var(--text-mute);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ---- Футер: satisfaction-метр + дата ---- */
.ptest__foot {
  display: flex; align-items: flex-end; justify-content: space-between; gap: var(--s-4);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.ptest__meter { flex: 1 1 auto; min-width: 0; }
.ptest__meter-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2);
  margin-bottom: var(--s-1);
}
.ptest__meter-k {
  font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase;
  color: var(--text-mute);
}
.ptest__meter-v {
  font-weight: var(--fw-bold); color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.ptest__meter-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.ptest__meter-bar {
  height: 7px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.ptest__meter-fill {
  display: block; height: 100%; border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}
.ptest__date {
  flex: 0 0 auto;
  font-size: var(--t-tiny); color: var(--text-faint);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* ---- Дисклеймер секции ---- */
.ptest__disclaimer {
  margin: var(--s-5) 0 0;
  font-size: var(--t-tiny); line-height: var(--lh-snug);
  color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .ptest__grid { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--s-4); }
}
@media (max-width: 640px) {
  .ptest__grid { grid-template-columns: 1fr; gap: var(--s-4); }
  .ptest__intro { margin-bottom: var(--s-5); }
  .ptest { padding: var(--s-4); }
  .ptest__foot { flex-direction: column; align-items: stretch; gap: var(--s-2); }
  .ptest__date { align-self: flex-start; }
}

/* ===== promo-code-copy ===== */
/* ============================================================
 * promo-code-copy · block.css
 * Скоуплено на .promo-code-copy. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-rating-guide (initPromoCopy). Адаптив: 980 / 640.
 * Визуал: модерн-премиум 2025-26 — gradient-brand на solid, glow+lift на hover,
 *   glass-toast. Эффекты через токены → адаптируются под скин и per-brand акцент.
 * ========================================================== */

.promo-code-copy {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--s-1);
  max-width: 100%;
}

/* ---- Подпись над кодом ---- */
.promo-code-copy__label {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* ---- Кнопка-«купон» (код + иконка) ---- */
.promo-code-copy__box {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  max-width: 100%;
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  background-color: var(--brand-soft);
  background-image: var(--surface-grad);
  color: var(--brand);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md);
  cursor: pointer;
  transition:
    background-color var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    box-shadow var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out);
}
.promo-code-copy__box:hover {
  background-color: color-mix(in srgb, var(--brand) 16%, transparent);
  border-color: color-mix(in srgb, var(--brand) 60%, transparent);
  box-shadow: var(--shadow-glow);
  transform: translateY(-2px);
}
.promo-code-copy__box:active { transform: translateY(0); }
/* видимый фокус для клавиатуры (a11y) */
.promo-code-copy__box:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--brand) 70%, transparent);
  outline-offset: 2px;
}

/* ---- Код ---- */
.promo-code-copy__code {
  font-family: var(--font-mono);
  font-weight: var(--fw-semi);
  font-size: var(--t-small);
  letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- Иконка (copy ↔ check) ---- */
.promo-code-copy__ic {
  display: inline-flex;
  flex: 0 0 auto;
  position: relative;
  width: 16px;
  height: 16px;
}
.promo-code-copy__ic-copy,
.promo-code-copy__ic-done {
  position: absolute;
  inset: 0;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.promo-code-copy__ic-done {
  opacity: 0;
  transform: scale(.6);
  color: var(--success);
}
.promo-code-copy__box.is-copied .promo-code-copy__ic-copy { opacity: 0; transform: scale(.6); }
.promo-code-copy__box.is-copied .promo-code-copy__ic-done { opacity: 1; transform: scale(1); }

/* ---- Toast «Скопировано» — frosted-стекло ---- */
.promo-code-copy__toast {
  position: absolute;
  inset-inline-start: 50%;
  bottom: calc(100% + var(--s-2));
  transform: translateX(-50%) translateY(4px);
  z-index: var(--z-toast);
  padding: var(--s-1) var(--s-2);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: 0;
  white-space: nowrap;
  color: var(--on-brand);
  background-color: var(--text);
  background-image: var(--grad-brand);
  border-radius: var(--r-soft);
  box-shadow: var(--shadow-pop), var(--shadow-glow);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.promo-code-copy__toast::after {
  content: "";
  position: absolute;
  top: 100%;
  inset-inline-start: 50%;
  width: var(--s-2);
  height: var(--s-2);
  transform: translate(-50%, -50%) rotate(45deg);
  background-image: var(--grad-brand);
}
.promo-code-copy__box.is-copied .promo-code-copy__toast {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ---- Подсказка-условие под кодом ---- */
.promo-code-copy__hint {
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}

/* ============ Варианты ============ */

/* --solid · залит градиентом бренда + glow (premium CTA-купон) */
.promo-code-copy--solid .promo-code-copy__box {
  background-color: var(--brand);
  background-image: var(--grad-brand);
  color: var(--on-brand);
  border-style: solid;
  border-color: transparent;
  box-shadow: var(--shadow-card), var(--shadow-glow);
}
.promo-code-copy--solid .promo-code-copy__box:hover {
  background-color: color-mix(in srgb, var(--brand) 88%, #000);
  border-color: transparent;
  box-shadow: var(--shadow-pop), var(--shadow-glow);
  transform: translateY(-3px);
}
/* галочка на залитом фоне — нейтраль (success не читается на --brand) */
.promo-code-copy--solid .promo-code-copy__ic-done { color: var(--on-brand); }

/* --sm · компактный */
.promo-code-copy--sm .promo-code-copy__box {
  min-height: 36px;
  padding: var(--s-1) var(--s-2);
  gap: var(--s-1);
}
.promo-code-copy--sm .promo-code-copy__code { font-size: var(--t-tiny); }

/* --lg · крупный */
.promo-code-copy--lg .promo-code-copy__box {
  min-height: 52px;
  padding: var(--s-3) var(--s-5);
  gap: var(--s-3);
  border-radius: var(--r-lg);
}
.promo-code-copy--lg .promo-code-copy__code { font-size: var(--t-body); }

/* --block · на всю ширину контейнера */
.promo-code-copy--block { display: flex; width: 100%; }
.promo-code-copy--block .promo-code-copy__box {
  width: 100%;
  justify-content: space-between;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .promo-code-copy__code { letter-spacing: .03em; }
}
@media (max-width: 640px) {
  .promo-code-copy { width: 100%; }
  .promo-code-copy__box { width: 100%; justify-content: space-between; }
}

/* ============ Reduced motion: без lift/scale-переходов ============ */
@media (prefers-reduced-motion: reduce) {
  .promo-code-copy__box,
  .promo-code-copy--solid .promo-code-copy__box {
    transition: background-color var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
  }
  .promo-code-copy__box:hover,
  .promo-code-copy--solid .promo-code-copy__box:hover { transform: none; }
}

/* ===== pros-cons ===== */
/* ============================================================
 * pros-cons · block.css
 * Скоуплено на .pros-cons. Только токены (10-tokens/).
 * Конвенция разметки: ★research / premium-планка (своя разметка).
 * Один акцент не используется — здесь по смыслу --success/--danger (плюс/минус).
 * Адаптив: 980 / 640.
 * ========================================================== */

.pros-cons {
  display: block;
}

.pros-cons__title {
  margin: 0 0 var(--s-4);
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* ---- Две колонки ---- */
.pros-cons__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-4);
  align-items: start;
}

/* ---- Колонка-карточка (единые padding/radius/shadow) ---- */
.pros-cons__col {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  /* тонкая верхняя кромка задаёт «температуру» колонки, без мульти-акцента */
  border-top: 3px solid var(--col-edge, var(--rule));
}
.pros-cons__col--pro { --col-edge: var(--success); }
.pros-cons__col--con { --col-edge: var(--danger); }

/* ---- Заголовок колонки + глиф в кружке ---- */
.pros-cons__heading {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  padding-bottom: var(--s-3);
  border-bottom: var(--hairline);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

.pros-cons__glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  border-radius: var(--r-pill);
}
.pros-cons__glyph--pro { color: var(--success); background: var(--success-soft); }
.pros-cons__glyph--con { color: var(--danger);  background: var(--danger-soft); }

/* ---- Список пунктов ---- */
.pros-cons__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}

.pros-cons__item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--s-3);
  align-items: start;
}

/* фикс-слот под маркер: пункты выравнены даже при многострочном тексте */
.pros-cons__mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  margin-top: 1px;
  border-radius: var(--r-pill);
}
.pros-cons__mark--pro { color: var(--success); background: var(--success-soft); }
.pros-cons__mark--con { color: var(--danger);  background: var(--danger-soft); }

.pros-cons__text {
  min-width: 0;
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* числа в пунктах — табличные цифры */
.pros-cons__num {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* ---- Модификатор: компактный ---- */
.pros-cons--compact .pros-cons__col { padding: var(--s-4); gap: var(--s-2); }
.pros-cons--compact .pros-cons__list { gap: var(--s-2); }
.pros-cons--compact .pros-cons__text { font-size: var(--t-small); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .pros-cons__grid { gap: var(--s-3); }
  .pros-cons__col  { padding: var(--s-4); }
}
@media (max-width: 640px) {
  .pros-cons__grid {
    grid-template-columns: 1fr;
    gap: var(--s-4);
  }
}

/* ===== prose ===== */
/* ============================================================
 * prose · block.css
 * Скоуплено на .prose (типографика long-form тела статьи).
 * Только токены (10-tokens/). Стилизует «голые» теги внутри .prose —
 * автор пишет чистый HTML (h2/h3/p/ul/ol/blockquote/table/img/code),
 * наследуя типошкалу (--t-*, --lh-*, --fw-*). Без классов на элементах.
 * Ширина измерения — --container-prose (≈72ch). Адаптив: 980 / 640.
 * ========================================================== */

.prose {
  max-width: var(--container-prose);
  margin-inline: auto;
  font-family: var(--font-body);
  font-size: var(--t-body);
  line-height: var(--lh-loose);
  color: var(--text-dim);
  /* табличные цифры по умолчанию — суммы/проценты/RTP в потоке текста */
  font-variant-numeric: tabular-nums;
  /* вертикальный ритм одним рычагом (используется в margin-block ниже) */
  --prose-flow: var(--s-5);
}
.prose--wide { max-width: 80ch; }

/* Срезать внешние поля у кромок блока (ритм держит контейнер) */
.prose > :first-child { margin-top: 0; }
.prose > :last-child  { margin-bottom: 0; }

/* ---- Поток: единый верт. ритм между блоками ---- */
.prose > * + * { margin-top: var(--prose-flow); }

/* ---- Заголовки секций (id-якоря) ---- */
.prose h2,
.prose h3,
.prose h4 {
  font-family: var(--font-display);
  color: var(--text);
  scroll-margin-top: calc(var(--header-h) + var(--s-4)); /* якорь не уезжает под фикс-хедер */
}
.prose h2 {
  margin-top: var(--s-8);
  font-size: var(--t-h2);
  line-height: var(--lh-snug);
  font-weight: var(--fw-bold);
  letter-spacing: -0.01em;
  padding-bottom: var(--s-3);
  border-bottom: var(--hairline);
}
.prose h3 {
  margin-top: var(--s-6);
  font-size: var(--t-h3);
  line-height: var(--lh-snug);
  font-weight: var(--fw-bold);
}
.prose h4 {
  margin-top: var(--s-5);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
}
.prose h2:first-child,
.prose h3:first-child,
.prose h4:first-child { margin-top: 0; }

/* Якорь-ссылка у заголовка (появляется на hover/focus, скрыта от AT) */
.prose__anchor {
  display: inline-block;
  margin-left: var(--s-2);
  color: var(--text-faint);
  text-decoration: none;
  opacity: 0;
  transition: opacity var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.prose :is(h2, h3, h4):hover .prose__anchor,
.prose__anchor:focus-visible { opacity: 1; }
.prose__anchor:hover { color: var(--brand); }

/* ---- Параграфы и инлайн ---- */
.prose p { color: var(--text-dim); }
.prose a {
  color: var(--brand);
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--brand) 40%, transparent);
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  transition: color var(--dur-quick) var(--ease), text-decoration-color var(--dur-quick) var(--ease);
}
.prose a:hover { color: var(--brand-2); text-decoration-color: var(--brand); }
.prose strong, .prose b { font-weight: var(--fw-semi); color: var(--text); }
.prose em, .prose i { font-style: italic; }
.prose mark { background: var(--highlight-pale); color: var(--text); padding: 0 var(--s-1); border-radius: var(--r-soft); }
.prose small { font-size: var(--t-small); color: var(--text-mute); }
.prose sup, .prose sub { font-size: 0.72em; line-height: 0; }
.prose abbr[title] { text-decoration: underline dotted; cursor: help; text-underline-offset: 2px; }

/* Первый абзац-лид после заголовка статьи (опционально через .prose__lede) */
.prose__lede {
  font-size: var(--t-h4);
  line-height: var(--lh-loose);
  color: var(--text-dim);
}

/* ---- Списки ---- */
.prose ul,
.prose ol {
  padding-left: 0;
  list-style: none;
}
.prose li {
  position: relative;
  padding-left: var(--s-6);
}
.prose li + li { margin-top: var(--s-2); }

/* Маркер ul — bespoke (не дефолтный bullet), один акцент */
.prose ul > li::before {
  content: "";
  position: absolute;
  left: var(--s-2);
  top: 0.66em;
  width: 6px;
  height: 6px;
  border-radius: var(--r-pill);
  background: var(--brand);
}
/* Нумерация ol — counter, табличные цифры */
.prose ol { counter-reset: prose-ol; }
.prose ol > li { counter-increment: prose-ol; }
.prose ol > li::before {
  content: counter(prose-ol);
  position: absolute;
  left: 0;
  top: 0;
  min-width: var(--s-5);
  text-align: right;
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--brand);
}

/* Вложенные списки */
.prose li > ul,
.prose li > ol { margin-top: var(--s-2); }
.prose li > ul > li::before { background: var(--rule-strong); }

/* Definition list */
.prose dl { display: grid; grid-template-columns: minmax(0, 12rem) 1fr; gap: var(--s-2) var(--s-4); }
.prose dt { font-weight: var(--fw-semi); color: var(--text); }
.prose dd { margin: 0; color: var(--text-dim); }

/* ---- Blockquote ---- */
.prose blockquote {
  margin-inline: 0;
  padding: var(--s-2) 0 var(--s-2) var(--s-5);
  border-left: 3px solid var(--brand);
  color: var(--text-dim);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-style: italic;
  line-height: var(--lh-base);
}
.prose blockquote p { color: inherit; }
.prose blockquote > :first-child { margin-top: 0; }
.prose blockquote cite {
  display: block;
  margin-top: var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-style: normal;
  color: var(--text-mute);
}
.prose blockquote cite::before { content: "— "; }

/* ---- Изображения / figure ---- */
.prose img {
  width: 100%;
  height: auto;
  border-radius: var(--r-lg);
  border: var(--hairline);
  background: var(--bg-2);
}
.prose figure { margin-inline: 0; }
.prose figure img { display: block; }
.prose figcaption {
  margin-top: var(--s-3);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
  text-align: center;
}

/* ---- Таблица ---- */
.prose__table-wrap {
  overflow-x: auto;
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  -webkit-overflow-scrolling: touch;
}
.prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
  font-variant-numeric: tabular-nums;
}
.prose thead th {
  position: sticky;
  top: 0;
  background: var(--surface-2);
  color: var(--text);
  font-weight: var(--fw-semi);
  text-align: left;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.prose th,
.prose td {
  padding: var(--s-3) var(--s-4);
  border-bottom: var(--hairline);
  vertical-align: top;
}
.prose tbody tr:last-child td { border-bottom: 0; }
.prose tbody tr:nth-child(even) { background: color-mix(in srgb, var(--bg-2) 55%, transparent); }
.prose td:not(:first-child),
.prose th:not(:first-child) { text-align: right; } /* числовые колонки вправо */
.prose caption {
  caption-side: bottom;
  margin-top: var(--s-3);
  font-size: var(--t-tiny);
  color: var(--text-faint);
  text-align: left;
}

/* ---- Код ---- */
.prose code {
  font-family: var(--font-mono);
  font-size: 0.875em;
  padding: 0.12em var(--s-1);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-soft);
  color: var(--text);
}
.prose pre {
  overflow-x: auto;
  padding: var(--s-4) var(--s-5);
  background: var(--surface-3);
  border: var(--hairline);
  border-radius: var(--r-md);
  font-size: var(--t-small);
  line-height: var(--lh-base);
}
.prose pre code {
  padding: 0;
  background: none;
  border: 0;
  font-size: inherit;
  color: var(--text-dim);
}
.prose kbd {
  font-family: var(--font-mono);
  font-size: 0.8em;
  padding: 0.1em var(--s-1);
  background: var(--surface);
  border: var(--hairline);
  border-bottom-width: 2px;
  border-radius: var(--r-soft);
  color: var(--text);
}

/* ---- Разделитель ---- */
.prose hr {
  border: 0;
  border-top: var(--hairline);
  margin-block: var(--s-7);
}

/* ---- Callout (опц. примитив для примечаний/ответственной игры) ---- */
.prose__note {
  display: flex;
  gap: var(--s-3);
  padding: var(--s-4) var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-left: 3px solid var(--brand);
  border-radius: var(--r-md);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.prose__note-icon { flex: 0 0 auto; color: var(--brand); margin-top: 1px; }
.prose__note > div > :first-child { margin-top: 0; }
.prose__note > div > :last-child { margin-bottom: 0; }
/* Семантические варианты — ТОЛЬКО по смыслу, не для декора */
.prose__note--warn   { border-left-color: var(--warning); background: var(--warning-soft); }
.prose__note--warn .prose__note-icon { color: var(--warning); }
.prose__note--danger { border-left-color: var(--danger); background: var(--danger-soft); }
.prose__note--danger .prose__note-icon { color: var(--danger); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .prose { --prose-flow: var(--s-4); }
  .prose h2 { margin-top: var(--s-7); }
  .prose h3 { margin-top: var(--s-5); }
}
@media (max-width: 640px) {
  .prose { font-size: var(--t-body); line-height: var(--lh-base); }
  .prose li { padding-left: var(--s-5); }
  .prose ul > li::before { left: var(--s-1); }
  .prose blockquote { padding-left: var(--s-4); font-size: var(--t-body); }
  .prose th, .prose td { padding: var(--s-2) var(--s-3); }
  .prose dl { grid-template-columns: 1fr; gap: var(--s-1); }
  .prose dt { margin-top: var(--s-2); }
  /* На тач-устройствах якорь всегда виден (нет hover) */
  .prose__anchor { opacity: 1; }
}

/* ============ Reduced motion: без появления якоря по transition ============ */
@media (prefers-reduced-motion: reduce) {
  .prose__anchor,
  .prose a { transition: none; }
}

/* ===== provably-fair ===== */
/* ============================================================
 * provably-fair · block.css
 * Скоуплено на .provably-fair. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка, скила нет).
 *   Один акцент — --brand (кнопка проверки + подсветка хеша). Статус совпадения
 *   --success/--danger — ПО СМЫСЛУ (match/mismatch), не декор. Хеши/nonce —
 *   mono + tabular-nums. bespoke inline SVG. Адаптив: 980 / 640.
 * ========================================================== */

.provably-fair { display: block; }

/* mono + tabular для всех хешей/сидов/nonce */
.provably-fair__mono { font-family: var(--font-mono); }
.provably-fair__num  { font-variant-numeric: tabular-nums; }

/* ---- Шапка ---- */
.provably-fair__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-6);
  max-width: var(--container-prose);
}
.provably-fair__head .eyebrow { margin: 0; }
.provably-fair__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.provably-fair__lede { margin: 0; }
.provably-fair__lede strong { color: var(--text); font-weight: var(--fw-semi); }

/* ---- 1 · Схема из шагов ---- */
.provably-fair__steps {
  list-style: none;
  margin: 0 0 var(--s-5);
  padding: 0;
  display: flex;
  align-items: stretch;
  gap: var(--s-3);
}
.provably-fair__step {
  flex: 1 1 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
/* стрелка-разделитель между шагами (не растягивается) */
.provably-fair__step[aria-hidden="true"] {
  flex: 0 0 auto;
  align-self: center;
  padding: 0;
  background: none;
  border: none;
  box-shadow: none;
}
.provably-fair__arrow { display: inline-flex; color: var(--text-faint); }

.provably-fair__step-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--r-md);
  background: var(--brand-soft);
  color: var(--brand);
}
.provably-fair__step-name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.provably-fair__step-txt {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.provably-fair__step-txt b { color: var(--text-dim); font-weight: var(--fw-semi); }
.provably-fair__step-txt code {
  font-size: .85em;
  color: var(--text-dim);
  background: var(--bg-2);
  padding: 1px 4px;
  border-radius: var(--r-soft);
  word-break: break-word;
}

/* ---- 2 · Верификатор ---- */
.provably-fair__verify {
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}
.provably-fair__verify-title {
  margin: 0 0 var(--s-4);
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--text);
}

.provably-fair__fields {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: var(--s-4);
}
.provably-fair__field { display: flex; flex-direction: column; gap: var(--s-2); min-width: 0; }
.provably-fair__field--narrow { min-width: 96px; }
.provably-fair__label {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}

.provably-fair__input-wrap { position: relative; display: flex; }
.provably-fair__input {
  width: 100%;
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-small);
  color: var(--text);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  transition: border-color var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease);
}
.provably-fair__input-wrap .provably-fair__input { padding-inline-end: calc(var(--s-6) + var(--s-1)); }
.provably-fair__input:focus-visible {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 2px var(--brand-soft);
}

/* copy-кнопка внутри поля */
.provably-fair__copy {
  position: absolute;
  inset-inline-end: var(--s-1);
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: var(--r-soft);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.provably-fair__copy:hover,
.provably-fair__copy:focus-visible { color: var(--brand); background: var(--brand-soft); }

/* ---- Кнопка проверки (единственный акцентный CTA блока) ---- */
.provably-fair__verify-actions {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  flex-wrap: wrap;
  margin-top: var(--s-4);
}
.provably-fair__btn-ic { transition: transform var(--dur-quick) var(--ease); }
.provably-fair__btn:hover .provably-fair__btn-ic { transform: rotate(-20deg); }
.provably-fair__needs-js { margin: 0; font-size: var(--t-tiny); }
/* если JS есть — он убирает [data-pf-nojs] (или скрипт ставит hidden) */

/* ---- Результат ---- */
.provably-fair__result {
  margin-top: var(--s-4);
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}
.provably-fair__result[hidden] { display: none; }
.provably-fair__result-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  flex-wrap: wrap;
}
.provably-fair__result-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.provably-fair__hash {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  word-break: break-all;
  min-width: 0;
}

/* статус — match/mismatch ПО СМЫСЛУ (success/danger), состояние не только цветом (иконка-точка) */
.provably-fair__status {
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
}
.provably-fair__status::before {
  content: "";
  width: 10px; height: 10px;
  border-radius: var(--r-pill);
  background: currentColor;
  flex: 0 0 auto;
}
.provably-fair__status[data-state="match"]    { color: var(--success); }
.provably-fair__status[data-state="mismatch"] { color: var(--danger); }
.provably-fair__status[data-state="error"]    { color: var(--warning); }

.provably-fair__toast {
  display: inline-block;
  margin-top: var(--s-2);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  color: var(--on-brand);
  background: var(--text);
  border-radius: var(--r-soft);
}
.provably-fair__toast[hidden] { display: none; }

/* ---- 3 · Drawer ручной проверки ---- */
.provably-fair__more {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.provably-fair__more-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.provably-fair__more-sum::-webkit-details-marker { display: none; }
.provably-fair__more-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.provably-fair__more[open] .provably-fair__more-chev { transform: rotate(180deg); }
.provably-fair__more-body {
  padding: 0 var(--s-4) var(--s-4);
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}
.provably-fair__manual {
  margin: 0;
  padding-left: var(--s-5);
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}
.provably-fair__manual-item { font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-dim); }
.provably-fair__manual-item b { color: var(--text); font-weight: var(--fw-semi); }
.provably-fair__manual-item code {
  font-family: var(--font-mono);
  font-size: .85em;
  color: var(--text-dim);
  background: var(--bg-2);
  padding: 1px 5px;
  border-radius: var(--r-soft);
  word-break: break-word;
}
.provably-fair__more-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .provably-fair__title { font-size: var(--t-h3); }
  /* схема в столбик: стрелки поворачиваются вниз */
  .provably-fair__steps { flex-direction: column; }
  .provably-fair__step[aria-hidden="true"] .provably-fair__arrow { transform: rotate(90deg); }
}
@media (max-width: 640px) {
  .provably-fair__verify { padding: var(--s-4); }
  .provably-fair__fields { grid-template-columns: 1fr; }
  .provably-fair__field--narrow { min-width: 0; }
  .provably-fair__btn { width: 100%; }
}

/* ============ Reduced motion (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .provably-fair__input,
  .provably-fair__copy,
  .provably-fair__btn-ic,
  .provably-fair__more-chev { transition: none; }
}

/* ===== provider-card ===== */
/* ============================================================
 * provider-card · block.css
 * Скоуплено на .provider-card / .pc-* (карточка) + обёртки
 * .provider-grid / .provider-section. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (готовой разметки нет).
 * Ориентир house-style: casino-item-card + featured-card
 *   (нейминг/слоты/shadow-card/drawer-на-<details>).
 * Один акцент — --brand (CTA + бейдж + hover-ссылок); метр объёма —
 *   нейтральный градиент --rating-from→--rating-to (dataviz, не звёзды).
 * Числа — tabular-nums. Адаптив: 980 / 640.
 * ========================================================== */

/* ---- Обёртка-секция (заголовок витрины провайдеров) ---- */
.provider-section__head {
  max-width: var(--container-prose);
  margin-bottom: var(--s-6);
}
.provider-section__head .eyebrow { margin: 0 0 var(--s-2); }
.provider-section__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  color: var(--text);
}

/* ---- Сетка карточек: owns колонки/gap (карточка себя не раскладывает) ---- */
.provider-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: var(--s-5);
}
.provider-grid__cell { display: flex; }

/* ============================================================
 * Карточка
 * ========================================================== */
.provider-card {
  --pc-logo-h: 64px;                 /* высота фикс-слота лого (ровный ряд шапок) */

  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.provider-card:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); }
/* Карточка кликабельна через ссылки внутри — фокус подсвечиваем у них, не у article */
.provider-card:focus-within { box-shadow: var(--shadow-pop); }

/* Числа везде табличные */
.pc__num { font-variant-numeric: tabular-nums; }

/* ---- 1 · Шапка: фикс-слот лого + имя + бейдж ---- */
.pc__head {
  display: flex;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-5) var(--s-5) var(--s-4);
  border-bottom: var(--hairline);
}

/* Лого — фикс-слот фиксированной высоты, лого вписывается (contain) */
.pc-logo {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 96px;
  height: var(--pc-logo-h);
  padding: var(--s-2);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  overflow: hidden;
}
.pc-logo__img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
/* Fallback без лого: фирменный градиент + инициалы студии */
.pc-logo--fallback {
  background: linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 100%);
  border-color: transparent;
}
.pc-logo--fallback::after {
  content: attr(data-initial);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  letter-spacing: .02em;
  line-height: 1;
  color: color-mix(in srgb, var(--on-brand) 92%, transparent);
}

.pc__head-meta { min-width: 0; display: flex; flex-direction: column; gap: var(--s-1); }
.pc__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.pc__name-link {
  color: var(--text);
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
.pc__name-link:hover { color: var(--brand); }

/* Бейдж «Топ-студия» — единственный носитель акцента в шапке */
.pc__badge {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  margin: 0;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.pc__badge-ic { flex: 0 0 auto; }
.pc__since { margin: 0; font-size: var(--t-tiny); color: var(--text-faint); }

/* ---- 2 · #игр — крупная стат + dataviz-метр объёма каталога ---- */
.pc-games { padding: var(--s-4) var(--s-5); }
.pc-games__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
}
.pc-games__k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.pc-games__v {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
/* Метр = относительный объём каталога (ширина задаётся inline width:%).
   Нейтральный градиент --rating-from→--rating-to — это плотность портфолио,
   НЕ рейтинг-звёзды (premium dataviz-метр). */
.pc-games__meter {
  height: 6px;
  margin-top: var(--s-2);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.pc-games__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}
.pc-games__note {
  margin: var(--s-2) 0 0;
  font-size: var(--t-small);
  color: var(--text-mute);
}

/* ---- 3 · Топ-слот (флагман, ссылка на обзор) ---- */
.pc-top {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  margin: 0 var(--s-5);
  padding: var(--s-3);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  text-decoration: none;
  color: inherit;
  transition: border-color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.pc-top:hover { border-color: var(--rule-strong); background: var(--surface-2); }

.pc-top__media {
  flex: 0 0 auto;
  position: relative;
  width: 56px;
  height: 56px;
  border-radius: var(--r-soft);
  overflow: hidden;
  background: var(--bg-3);
}
.pc-top__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--dur-slow) var(--ease-out);
}
.pc-top:hover .pc-top__img { transform: scale(1.06); }
/* Топ-слот без картинки: градиент-плитка + инициалы игры */
.pc-top__media--initial { background: linear-gradient(135deg, var(--brand-2) 0%, var(--brand) 100%); }
.pc-top__media--initial::after {
  content: attr(data-initial);
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: color-mix(in srgb, var(--on-brand) 90%, transparent);
}

.pc-top__body { min-width: 0; display: flex; flex-direction: column; gap: 1px; flex: 1 1 auto; }
.pc-top__k {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.pc-top__name {
  font-weight: var(--fw-semi);
  color: var(--text);
  line-height: var(--lh-snug);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  transition: color var(--dur-quick) var(--ease);
}
.pc-top:hover .pc-top__name { color: var(--brand); }
.pc-top__sub { font-size: var(--t-small); color: var(--text-mute); font-variant-numeric: tabular-nums; }

.pc-top__arr {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-quick) var(--ease-out), color var(--dur-quick) var(--ease);
}
.pc-top:hover .pc-top__arr { transform: translateX(3px); color: var(--brand); }

/* ---- 4 · Подвал: ОДНА CTA + drawer «Ещё топ-слоты» ---- */
.pc__foot {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-top: auto;                  /* подвал прижат к низу при разной высоте карточек */
  padding: var(--s-4) var(--s-5) var(--s-5);
}
.pc__cta-ic { transition: transform var(--dur-quick) var(--ease-out); }
.pc__cta:hover .pc__cta-ic,
.pc__cta:focus-visible .pc__cta-ic { transform: translateX(3px); }

/* drawer (нативный <details>) — держит карточку чистой по умолчанию */
.pc-more { border-top: var(--hairline); }
.pc-more__sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding-top: var(--s-2);
  list-style: none;
  cursor: pointer;
  user-select: none;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.pc-more__sum::-webkit-details-marker { display: none; }   /* убрать дефолтный треугольник */
.pc-more__sum:hover { color: var(--brand); }
.pc-more[open] .pc-more__sum { color: var(--text); }

.pc-more__chevron {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.pc-more__sum:hover .pc-more__chevron { color: var(--brand); }
.pc-more[open] .pc-more__chevron { transform: rotate(180deg); color: var(--brand); }

/* Раскрытие: grid-rows 0fr→1fr (плавно, без JS-замера высоты) */
.pc-more__body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.pc-more[open] .pc-more__body { grid-template-rows: 1fr; }
.pc-more__list {
  overflow: hidden;
  min-height: 0;                     /* критично для коллапса grid-строки */
  list-style: none;
  margin: 0;
  padding: var(--s-2) 0 0;
}
.pc-more__item {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  padding: var(--s-2) 0;
}
.pc-more__item + .pc-more__item { border-top: var(--hairline); }
.pc-more__link {
  min-width: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-dim);
  text-decoration: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  transition: color var(--dur-quick) var(--ease);
}
.pc-more__link:hover { color: var(--brand); }
.pc-more__rtp {
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .provider-section__head { margin-bottom: var(--s-5); }
  .provider-grid { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .provider-section__title { font-size: var(--t-h3); }
  .provider-grid {
    grid-template-columns: 1fr;      /* одна колонка: карточка на всю ширину */
    gap: var(--s-4);
  }
  .pc__head { padding: var(--s-4) var(--s-4) var(--s-3); gap: var(--s-3); }
  .pc-games { padding: var(--s-3) var(--s-4); }
  .pc-top { margin: 0 var(--s-4); }
  .pc__foot { padding: var(--s-3) var(--s-4) var(--s-4); }
}

/* ============ Reduced motion: гасим доп. анимации (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .pc-more__body { transition: none; }
  .provider-card,
  .pc-top__img { transition: none; }
  .pc-top:hover .pc-top__img { transform: none; }
}

/* ===== provider-info ===== */
/* ============================================================
 * provider-info · block.css
 * Скоуплено на .provider-info / .provider-info__*. Только токены (10-tokens/).
 * Конвенция: house-style html-slots («О провайдере» на странице слота) поверх
 *   premium-планки (casino-item-card + provider-card: фикс-слот лого, dataviz-
 *   метр вместо звёзд, ОДНА CTA, drawer-на-<details>, bespoke SVG, tabular-nums).
 * Один акцент — --brand (CTA + бейдж + hover-ссылок). Адаптив: 980 / 640.
 * ========================================================== */

.provider-info {
  --pi-logo-w: 132px;       /* ширина фикс-слота лого */
  --pi-logo-h: 64px;        /* высота фикс-слота лого (ровная шапка) */
}

/* Числа везде табличные */
.provider-info__num { font-variant-numeric: tabular-nums; }

/* ---- Карточка ---- */
.provider-info__card {
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease);
}
.provider-info__card:focus-within { box-shadow: var(--shadow-pop); }

/* ---- 1 · Шапка: фикс-слот лого + имя + проверочный бейдж ---- */
.provider-info__head {
  display: flex;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-5) var(--s-5) var(--s-4);
  border-bottom: var(--hairline);
}
.provider-info__logo {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: var(--pi-logo-w);
  height: var(--pi-logo-h);
  padding: var(--s-2);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  overflow: hidden;
}
.provider-info__logo-img { max-width: 100%; max-height: 100%; object-fit: contain; }

.provider-info__head-meta { min-width: 0; display: flex; flex-direction: column; gap: var(--s-1); }
.provider-info__head-meta .eyebrow { margin: 0; }
.provider-info__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.provider-info__name-link {
  color: var(--text);
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
.provider-info__name-link:hover { color: var(--brand); }

/* Проверочный бейдж — единственный носитель акцента в шапке */
.provider-info__badge {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  margin: 0;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.provider-info__badge-ic { flex: 0 0 auto; }

/* ---- 2 · Опорные факты — фикс-слоты ---- */
.provider-info__facts {
  margin: 0;
  padding: var(--s-4) var(--s-5);
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s-3);
  border-bottom: var(--hairline);
}
.provider-info__fact {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.provider-info__fact-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.provider-info__fact-v {
  margin: 0;
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--t-h4);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---- 3 · Метры профиля слота (dataviz, НЕ звёзды) ---- */
.provider-info__meters {
  padding: var(--s-4) var(--s-5);
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}
.provider-info__meter-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
}
.provider-info__meter-row + .provider-info__meter { margin-bottom: var(--s-3); }
.provider-info__meter-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.provider-info__meter-v {
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.provider-info__meter {
  height: 6px;
  margin-top: var(--s-1);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.provider-info__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- 4 · Подвал: ОДНА CTA + drawer «Факты студии» ---- */
.provider-info__foot {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-top: auto;
  padding: var(--s-4) var(--s-5) var(--s-5);
}
.provider-info__cta-ic { transition: transform var(--dur-quick) var(--ease-out); }
.provider-info__cta:hover .provider-info__cta-ic,
.provider-info__cta:focus-visible .provider-info__cta-ic { transform: translateX(3px); }

/* drawer (нативный <details>) */
.provider-info__more { border-top: var(--hairline); }
.provider-info__more-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding-top: var(--s-2);
  list-style: none;
  cursor: pointer;
  user-select: none;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.provider-info__more-sum::-webkit-details-marker { display: none; }
.provider-info__more-sum:hover { color: var(--brand); }
.provider-info__more[open] .provider-info__more-sum { color: var(--text); }
.provider-info__more-chev {
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.provider-info__more-sum:hover .provider-info__more-chev { color: var(--brand); }
.provider-info__more[open] .provider-info__more-chev { transform: rotate(180deg); color: var(--brand); }

/* Раскрытие: grid-rows 0fr→1fr (плавно, без JS-замера) */
.provider-info__more-body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.provider-info__more[open] .provider-info__more-body { grid-template-rows: 1fr; }
.provider-info__more-list {
  overflow: hidden;
  min-height: 0;
  list-style: none;
  margin: 0;
  padding: var(--s-2) 0 0;
}
.provider-info__more-item {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-4);
  padding: var(--s-2) 0;
}
.provider-info__more-item + .provider-info__more-item { border-top: var(--hairline); }
.provider-info__more-k {
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.provider-info__more-val {
  min-width: 0;
  text-align: right;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-dim);
}
.provider-info__more-link {
  color: var(--text-dim);
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
.provider-info__more-link:hover { color: var(--brand); }
.provider-info__more-note { margin: var(--s-3) 0 0; font-size: var(--t-tiny); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .provider-info__facts { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .provider-info { --pi-logo-w: 104px; --pi-logo-h: 56px; }
  .provider-info__head { flex-direction: column; align-items: flex-start; padding: var(--s-4) var(--s-4) var(--s-3); gap: var(--s-3); }
  .provider-info__facts { padding: var(--s-3) var(--s-4); }
  .provider-info__meters { padding: var(--s-3) var(--s-4); }
  .provider-info__foot { padding: var(--s-3) var(--s-4) var(--s-4); }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .provider-info__more-body { transition: none; }
  .provider-info__card { transition: none; }
}

/* ===== pull-quote ===== */
/* ============================================================
 * pull-quote · block.css
 * Скоуплено на .pull-quote. Только токены (10-tokens/).
 * Конвенция разметки: ★research / премиум-планка (своя разметка — готовой нет).
 * Один акцент — --brand: кавычка-глиф + акцентная планка/линия. Нейтрали несут
 *   текст/атрибуцию. --stat-число — tabular-nums (dataviz вместо «звёзд»).
 *   Фикс-слоты: кавычка (--pq-mark), аватар (--pq-avatar) — единый ритм.
 * Анатомия: акцент-марк + body(blockquote) + [stat] + figcaption(cite+avatar).
 * Адаптив: 980 / 640.
 * ========================================================== */

.pull-quote {
  /* фикс-слоты — единый вертикальный ритм во всех вариантах */
  --pq-mark: 40px;
  --pq-avatar: 48px;

  position: relative;
  display: grid;
  /* колонка кавычки фикс-слот + текстовая авто-колонка; figcaption тянется на 2 */
  grid-template-columns: var(--pq-mark) minmax(0, 1fr);
  grid-template-areas:
    "mark body"
    ".    cite";
  column-gap: var(--s-4);
  row-gap: var(--s-4);
  /* редакторская врезка: акцентная планка слева + лёгкая подложка тем же тоном */
  padding: var(--s-2) 0 var(--s-2) var(--s-5);
  border-left: 3px solid var(--brand);
  color: var(--text-dim);
}

/* ---- Кавычка-глиф: фикс-слот, единственное цветовое пятно акцента ---- */
.pull-quote__mark {
  grid-area: mark;
  width: var(--pq-mark);
  height: var(--pq-mark);
  color: var(--brand);
  /* оптически приподнимаем к baseline первой строки текста */
  margin-top: calc(-1 * var(--s-1));
  opacity: .9;
}

/* ---- Тело цитаты ---- */
.pull-quote__body {
  grid-area: body;
  min-width: 0;
  margin: 0;
  /* срезаем дефолтный отступ blockquote из ua-стилей */
  padding: 0;
}

.pull-quote__text {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-medium);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
  text-wrap: balance;
}
.pull-quote__text + .pull-quote__text { margin-top: var(--s-3); }

/* выделение слова/числа внутри цитаты — мягкий бренд-тон, не второй акцент */
.pull-quote__hl {
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}

/* ---- Stat-слот: верифицированное число (dataviz, не звёзды) ---- */
.pull-quote__stat {
  grid-area: stat;
  margin: 0;
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  column-gap: var(--s-3);
  row-gap: var(--s-1);
  align-self: start;
  padding: var(--s-3) var(--s-4);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
.pull-quote__stat-k {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.pull-quote__stat-v {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--brand);
}
.pull-quote__num {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}
.pull-quote__unit {
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  color: var(--text-faint);
}

/* ---- Атрибуция: аватар-слот + имя/роль ---- */
.pull-quote__cite {
  grid-area: cite;
  display: flex;
  align-items: center;
  gap: var(--s-3);
  font-style: normal; /* figcaption в норме не курсив, но фиксируем явно */
}

.pull-quote__avatar {
  flex: 0 0 auto;
  width: var(--pq-avatar);
  height: var(--pq-avatar);
  object-fit: cover;
  border-radius: var(--r-pill);
  background: var(--bg-2);
  border: var(--hairline);
}

.pull-quote__by {
  display: flex;
  flex-direction: column;
  min-width: 0;
  line-height: var(--lh-snug);
}
.pull-quote__name {
  font-style: normal; /* <cite> по дефолту курсив — снимаем */
  font-weight: var(--fw-semi);
  color: var(--text);
}
.pull-quote__role {
  font-size: var(--t-small);
  color: var(--text-mute);
}

/* ============================================================
 * Варианты
 * ========================================================== */

/* --card — боксированная поверхность (единые surface/hairline/radius/shadow) */
.pull-quote--card {
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-left: 3px solid var(--brand);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* --center — центрированная композиция (кавычка над текстом, без аватара) */
.pull-quote--center {
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas:
    "mark"
    "body"
    "stat"
    "cite";
  justify-items: center;
  text-align: center;
  row-gap: var(--s-5);
  padding-left: var(--s-6);
  padding-right: var(--s-6);
  border-left: 0;
}
.pull-quote--center .pull-quote__mark { margin-top: 0; }
.pull-quote--center .pull-quote__stat { align-self: center; }
.pull-quote--center .pull-quote__cite { justify-content: center; }
/* у центрированной карточки нет акцент-планки — возвращаем равные поля */
.pull-quote--center.pull-quote--card { border-left: var(--hairline); }

/* --stat — добавляет stat-слот в поток грида (между телом и атрибуцией) */
.pull-quote--stat {
  grid-template-areas:
    "mark body"
    ".    stat"
    ".    cite";
}
.pull-quote--stat.pull-quote--center {
  grid-template-areas:
    "mark"
    "body"
    "stat"
    "cite";
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .pull-quote--card { padding: var(--s-5); }
  .pull-quote__text { font-size: var(--t-h4); line-height: var(--lh-base); }
  .pull-quote__stat-v { font-size: var(--t-h3); }
}

@media (max-width: 640px) {
  /* узкий экран: кавычка над текстом, всё в одну колонку (и в базовом варианте) */
  .pull-quote {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "mark"
      "body"
      "stat"
      "cite";
    row-gap: var(--s-4);
    padding: var(--s-2) 0 var(--s-2) var(--s-4);
  }
  .pull-quote--stat {
    grid-template-areas:
      "mark"
      "body"
      "stat"
      "cite";
  }
  .pull-quote__mark { margin-top: 0; }
  .pull-quote--card { padding: var(--s-4); }
  .pull-quote--center { padding-left: var(--s-4); padding-right: var(--s-4); }
  .pull-quote__stat { align-self: stretch; }
}

/* ===== quiz-finder-widget ===== */
/* ============================================================
 * quiz-finder-widget · block.css
 * Скоуплено на .quiz-finder. Только токены (10-tokens/).
 * Конвенция: ★research (premium-сигналы) + паттерны wagering-calculator/
 *   filter-bar (нативные radio как chips, dataviz-мера на --val, T&C-drawer).
 * Адаптив: 980 / 640. Числа — tabular-nums. Motion — функц., subtle.
 * ========================================================== */

.quiz-finder {
  --qf-pad: var(--s-6);
  --qf-logo: 72px;
  display: block;
  max-width: 720px;
  margin-inline: auto;
  padding: var(--qf-pad);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  font-variant-numeric: tabular-nums;
}

/* ---- Шапка ---- */
.quiz-finder__head { display: flex; flex-direction: column; gap: var(--s-2); }
.quiz-finder__eyebrow { color: var(--brand); }
.quiz-finder__title { font-size: var(--t-h3); }
.quiz-finder__lede { font-size: var(--t-body); line-height: var(--lh-base); color: var(--text-mute); }

/* ---- Прогресс шагов (dataviz-мера, не звёзды) ---- */
.quiz-finder__progress {
  display: flex; align-items: center; gap: var(--s-3);
  margin-top: var(--s-5);
}
.qf-progress {
  flex: 1 1 auto; height: 6px;
  background: var(--bg-3); border-radius: var(--r-pill); overflow: hidden;
}
.qf-progress__fill {
  display: block; height: 100%; border-radius: inherit;
  width: calc(var(--val, 0) * 1%);
  background: var(--brand);
  transition: width var(--dur-base) var(--ease);
}
.qf-progress__count {
  flex: 0 0 auto;
  font-size: var(--t-tiny); font-weight: var(--fw-semi); letter-spacing: .04em;
  color: var(--text-mute); font-variant-numeric: tabular-nums;
}
.qf-progress__sep { margin-inline: 1px; color: var(--text-faint); }

/* ---- Форма / шаги ---- */
.quiz-finder__form { margin-top: var(--s-5); }
.qf-step { border: none; padding: 0; margin: 0; min-width: 0; }
.qf-step[hidden] { display: none; }

.qf-step__legend {
  display: flex; align-items: center; gap: var(--s-3);
  padding: 0; margin-bottom: var(--s-4);
}
.qf-step__num {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px;
  font-family: var(--font-display); font-size: var(--t-small); font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--brand); background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.qf-step__q {
  font-family: var(--font-display); font-size: var(--t-h4); font-weight: var(--fw-bold);
  line-height: var(--lh-snug); color: var(--text);
}

/* ---- Опции (нативные radio → chips/cards) ---- */
.qf-options { display: flex; flex-direction: column; gap: var(--s-3); }
.qf-options--cols {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-3);
  align-items: stretch;
}

.qf-option { display: block; cursor: pointer; }
.qf-option__input {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.qf-option__face {
  display: flex; align-items: center; gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border: 1px solid transparent;
  border-radius: var(--r-md);
  transition: background var(--dur-quick) var(--ease),
              border-color var(--dur-quick) var(--ease),
              box-shadow var(--dur-quick) var(--ease);
}
.qf-option:hover .qf-option__face { background: color-mix(in srgb, var(--brand) 7%, var(--bg-2)); }

/* Иконка типа */
.qf-option__ic {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px;
  color: var(--text-mute); background: var(--surface);
  border: var(--hairline); border-radius: var(--r-md);
  transition: color var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}

.qf-option__txt { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.qf-option__label { font-weight: var(--fw-semi); line-height: var(--lh-snug); }
.qf-option__hint { font-size: var(--t-small); color: var(--text-mute); line-height: var(--lh-snug); }

/* Галочка выбора (раскрывается у checked) */
.qf-option__check {
  flex: 0 0 auto; margin-left: auto;
  color: var(--on-brand);
  opacity: 0; transform: scale(.6);
  transition: opacity var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}

/* Состояние: выбрано (не только цветом — рамка + галочка + bg) */
.qf-option__input:checked + .qf-option__face {
  background: var(--brand-soft);
  border-color: var(--brand);
  box-shadow: 0 0 0 1px var(--brand) inset;
}
.qf-option__input:checked + .qf-option__face .qf-option__ic {
  color: var(--brand); border-color: color-mix(in srgb, var(--brand) 45%, transparent);
}
.qf-option__input:checked + .qf-option__face .qf-option__label { color: var(--brand); }
.qf-option__input:checked + .qf-option__face .qf-option__check {
  opacity: 1; transform: none;
  /* галочка-кружок brand под белой иконкой */
  color: var(--on-brand);
  width: 22px; height: 22px; padding: 4px;
  background: var(--brand); border-radius: var(--r-pill);
}

/* Перенос фокус-кольца с visually-hidden input на видимый face */
.qf-option__input:focus-visible + .qf-option__face {
  outline: 2px solid var(--brand); outline-offset: 2px;
}

/* Компактные опции (колоночный режим) */
.qf-option--compact .qf-option__face {
  flex-direction: column; align-items: flex-start; text-align: left;
  gap: var(--s-1); padding: var(--s-3);
  height: 100%;
}
.qf-option--compact .qf-option__check {
  position: absolute; margin: 0;
  top: var(--s-2); right: var(--s-2);
}
.qf-option--compact .qf-option__txt { width: 100%; }
.qf-option { position: relative; }

.qf-num { font-variant-numeric: tabular-nums; }

/* ---- Навигация шагов ---- */
.quiz-finder__nav {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  margin-top: var(--s-5);
}
.qf-nav__back[hidden] { display: none; }
.qf-nav__next { margin-left: auto; }

/* ============================================================
 * РЕЗУЛЬТАТ
 * ========================================================== */
.quiz-finder__result { margin-top: var(--s-5); }
.quiz-finder__result[hidden] { display: none; }

.qf-result__kicker {
  display: inline-flex; align-items: center; gap: var(--s-2);
  margin-bottom: var(--s-3);
  font-size: var(--t-tiny); font-weight: var(--fw-semi); letter-spacing: .08em; text-transform: uppercase;
  color: var(--success);
}
.qf-result__kicker svg { color: var(--success); }

/* ---- Карточка-рекомендация ---- */
.qf-card {
  display: grid;
  grid-template-columns: var(--qf-logo) minmax(0, 1fr);
  grid-template-areas:
    "logo body"
    "cta  cta";
  gap: var(--s-4) var(--s-5);
  align-items: center;
  padding: var(--s-5);
  background: var(--surface);
  border: 1px solid var(--brand);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

.qf-card__logo { grid-area: logo; }
.qf-card__img {
  width: var(--qf-logo); height: var(--qf-logo);
  object-fit: cover; border-radius: var(--r-md);
  background: var(--bg-2); border: var(--hairline);
}

.qf-card__body { grid-area: body; min-width: 0; display: flex; flex-direction: column; gap: var(--s-3); }
.qf-card__top { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-3); flex-wrap: wrap; }
.qf-card__name { font-family: var(--font-display); font-size: var(--t-h4); font-weight: var(--fw-bold); line-height: var(--lh-snug); }
.qf-card__match {
  flex: 0 0 auto;
  font-size: var(--t-tiny); font-weight: var(--fw-semi); font-variant-numeric: tabular-nums;
  color: var(--brand); white-space: nowrap;
}

/* Матч-мера (dataviz вместо звёзд) */
.qf-card__meter { height: 8px; background: var(--bg-3); border-radius: var(--r-pill); overflow: hidden; }
.qf-card__meter-fill {
  display: block; height: 100%; border-radius: inherit;
  width: calc(var(--val, 0) * 1%);
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-base) var(--ease);
}

/* Факты: фикс-слоты */
.qf-card__facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-2); margin: 0; }
.qf-fact { padding: var(--s-2) var(--s-3); background: var(--bg-2); border-radius: var(--r-md); }
.qf-fact__k { margin: 0; font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }
.qf-fact__v { margin: 2px 0 0; font-weight: var(--fw-semi); font-variant-numeric: tabular-nums; line-height: var(--lh-snug); }

/* CTA: ОДНА основная + текстовый «заново» */
.qf-card__cta {
  grid-area: cta;
  display: flex; align-items: center; gap: var(--s-4);
}
.qf-card__cta .btn { flex: 1 1 auto; }
.qf-card__restart {
  flex: 0 0 auto;
  font-size: var(--t-small); color: var(--text-mute);
  text-decoration: underline; text-underline-offset: 2px;
  transition: color var(--dur-quick) var(--ease);
}
.qf-card__restart:hover { color: var(--brand); }

/* ---- Drawer условий (нативный <details>) ---- */
.qf-result__terms { margin-top: var(--s-4); border-top: var(--hairline); }
.qf-result__terms-q {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
  padding: var(--s-3) 0;
  list-style: none; cursor: pointer;
  font-size: var(--t-small); font-weight: var(--fw-semi); color: var(--text-dim);
}
.qf-result__terms-q::-webkit-details-marker { display: none; }
.qf-result__terms-chev { flex: 0 0 auto; color: var(--text-mute); transition: transform var(--dur-quick) var(--ease); }
.qf-result__terms[open] .qf-result__terms-chev { transform: rotate(180deg); }
.qf-result__terms-a { padding-bottom: var(--s-3); }
.qf-result__terms-a p { font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-mute); margin: 0; }

/* ============================================================
 * Вариант --compact (сайдбар / inline)
 * ========================================================== */
.quiz-finder--compact { --qf-pad: var(--s-5); --qf-logo: 56px; max-width: 420px; }
.quiz-finder--compact .quiz-finder__title { font-size: var(--t-h4); }
.quiz-finder--compact .quiz-finder__lede { font-size: var(--t-small); }
.quiz-finder--compact .qf-step__q { font-size: var(--t-body); }
.quiz-finder--compact .qf-options--cols { grid-template-columns: repeat(3, 1fr); }
.quiz-finder--compact .qf-card {
  grid-template-columns: var(--qf-logo) minmax(0, 1fr);
  grid-template-areas: "logo body" "cta cta";
  padding: var(--s-4); gap: var(--s-3) var(--s-4);
}
.quiz-finder--compact .qf-card__facts { grid-template-columns: repeat(2, 1fr); }

/* ============================================================
 * Адаптив
 * ========================================================== */
@media (max-width: 640px) {
  .quiz-finder { --qf-pad: var(--s-5); --qf-logo: 56px; }
  .qf-options--cols { grid-template-columns: 1fr; }
  .quiz-finder--compact .qf-options--cols { grid-template-columns: 1fr; }

  /* Компактные опции снова строкой на узком экране (читаемее, чем 1 колонка карточек) */
  .qf-option--compact .qf-option__face { flex-direction: row; align-items: center; }
  .qf-option--compact .qf-option__check { position: static; margin-left: auto; }

  .qf-card {
    grid-template-columns: var(--qf-logo) minmax(0, 1fr);
    grid-template-areas: "logo body" "cta cta";
    padding: var(--s-4);
  }
  .qf-card__facts { grid-template-columns: 1fr 1fr; }
  .qf-card__cta { flex-direction: column; align-items: stretch; }
  .qf-card__cta .btn { width: 100%; }
  .qf-card__restart { text-align: center; }
}

/* ===== raffles-grid-coins-prizes ===== */
/* ============================================================
 * raffles-grid-coins-prizes · block.css  (scope: .raffles)
 * Только токены (10-tokens/). Назначение: грид карточек розыгрышей (приз / вход в монетах /
 *   заполненность билетов / ОДНА CTA). Заполненность = --val/--max (мера-полоса, role=progressbar).
 * Премиум: один акцент --brand, фикс-слоты (media/иконка), ЕДИНАЯ CTA на карточку,
 *   единые padding/radius/shadow, dataviz-полоса вместо «звёзд». tabular-nums на числах.
 * Эталон поверхности/нейминга/фикс-слотов/fake-link: casino-item-card. Адаптив: 980 / 640.
 * Монеты — внутриигровая валюта (см. block.md), не деньги.
 * ========================================================== */

.raffles {
  /* фикс-слоты карточки */
  --raf-media-h: 120px;       /* высота медиа-зоны (иконка приза) */
  --raf-min: 260px;           /* мин-ширина колонки грида */
  --raf-bar-h: 8px;

  display: block;
  font-family: var(--font-body);
  color: var(--text);
}

/* ---- Шапка секции ---- */
.raffles__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
  flex-wrap: wrap;
}
.raffles__eyebrow { margin: 0 0 var(--s-1); }
.raffles__title { margin: 0; font-size: var(--t-h2); line-height: var(--lh-snug); }
.raffles__hint { font-size: var(--t-small); max-width: 42ch; }

/* ---- Грид ---- */
.raffles__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--raf-min), 1fr));
  gap: var(--s-5);
}
.raffles__cell { display: flex; }

/* ---- Карточка (единые padding/radius/shadow) ---- */
.raffles__card {
  display: flex;
  flex-direction: column;
  width: 100%;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.raffles__card:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); }

/* Медиа-зона: фикс-высота, иконка приза по центру (bespoke SVG вместо стокового фото) */
.raffles__media {
  position: relative;
  height: var(--raf-media-h);
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(120% 140% at 50% 0%, var(--brand-soft), transparent 70%),
    var(--bg-2);
  border-bottom: var(--hairline);
  color: var(--brand);
}
.raffles__prize-ic { display: inline-flex; }
.raffles__ribbon {
  position: absolute;
  top: var(--s-3);
  inset-inline-start: var(--s-3);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
}

/* Тело карточки */
.raffles__body {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding: var(--s-5);
  flex: 1 1 auto;
}
.raffles__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.raffles__prize { margin: 0; font-size: var(--t-small); }

/* Прогресс заполненности билетов */
.raffles__progress { margin-top: var(--s-1); }
.raffles__progress-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-bottom: var(--s-2);
}
.raffles__progress-k {
  font-size: var(--t-tiny);
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.raffles__progress-v {
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-dim);
}
.raffles__bar {
  height: var(--raf-bar-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.raffles__fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) / var(--max, 1) * 100%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--brand), var(--brand-2));
  transition: width var(--dur-slow) var(--ease-out);
}

/* Факты: вход в монетах + дата розыгрыша (фикс-слот 2 колонки) */
.raffles__facts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-2);
  margin: var(--s-1) 0 0;
}
.raffles__fact {
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.raffles__fact-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.raffles__fact-v {
  margin: 2px 0 0;
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text);
}
.raffles__fact-v--cost { display: inline-flex; align-items: center; gap: var(--s-1); color: var(--text); }
.raffles__coin-ic { display: inline-flex; flex: 0 0 auto; color: var(--gold); }

/* CTA — ЕДИНСТВЕННАЯ на карточку, прижата к низу */
.raffles__cta { margin-top: auto; }
.raffles__cta-cost { font-variant-numeric: tabular-nums; }

/* ============================================================
 * Состояния карточки
 * ========================================================== */

/* --hot — горячий розыгрыш: акцент-рамка (без второго цвета) */
.raffles__card--hot { border-color: color-mix(in srgb, var(--brand) 45%, var(--rule)); }

/* --ended — завершён: приглушаем медиа/иконку, CTA уже disabled в разметке */
.raffles__card--ended { opacity: .82; }
.raffles__card--ended .raffles__media { filter: grayscale(0.5); color: var(--text-mute); }
.raffles__card--ended:hover { transform: none; box-shadow: var(--shadow-card); }
.raffles__card--ended .raffles__fill { background: var(--rule-strong); }

/* disabled-CTA (нативная кнопка) */
.raffles__cta:disabled { opacity: .6; cursor: not-allowed; }
.raffles__cta:disabled:active { transform: none; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .raffles__grid { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .raffles { --raf-min: 100%; }
  .raffles__head { gap: var(--s-2); }
  .raffles__body { padding: var(--s-4); }
}

/* ===== rakeback-vip-ladder ===== */
/* ============================================================
 * rakeback-vip-ladder · block.css
 * Скоуплено на .vip-ladder. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка, скила нет).
 *   Позиция тира — CSS-counter (house-style §3), НЕ в HTML. Один акцент —
 *   --brand (метка текущего тира + метр rakeback + одна CTA). Иконки тиров
 *   нейтральные (currentColor по шкале --text-*), НЕ мульти-акцент. Числа —
 *   tabular-nums. dataviz-метр прогресса (не звёзды). Адаптив: 980 / 640.
 * ========================================================== */

.vip-ladder { display: block; }

/* ---- Шапка ---- */
.vip-ladder__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-6);
  max-width: var(--container-prose);
}
.vip-ladder__head .eyebrow { margin: 0; }
.vip-ladder__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.vip-ladder__lede { margin: 0; }

/* Числа — табличные */
.vip-ladder__num { font-variant-numeric: tabular-nums; }

/* ---- Лестница: счётчик позиций ступеней ---- */
.vip-ladder__list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: vip;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--s-4);
}
.vip-ladder__row { display: block; counter-increment: vip; }

/* ---- Ступень-карточка ---- */
.vip-ladder__tier {
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding: var(--s-5) var(--s-4) var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.vip-ladder__tier:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); }

/* номер ступени — CSS-counter (не в HTML) */
.vip-ladder__tier::before {
  content: counter(vip);
  position: absolute;
  top: var(--s-3);
  inset-inline-end: var(--s-4);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  line-height: 1;
  color: var(--text-faint);
}

/* текущий тир — единственный носитель акцента-рамки */
.vip-ladder__tier--current {
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
}
.vip-ladder__tier--current::before { color: var(--brand); }

/* ---- Шапка ступени: иконка + имя + тег ---- */
.vip-ladder__tier-head {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  flex-wrap: wrap;
}
.vip-ladder__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  border-radius: var(--r-md);
  background: var(--bg-2);
  color: var(--text-mute);
}
/* ранг-иконки — нейтральная шкала «металла» через токены текста (НЕ цветной акцент) */
.vip-ladder__icon--bronze   { color: var(--text-faint); }
.vip-ladder__icon--silver   { color: var(--text-mute); }
.vip-ladder__icon--gold     { color: var(--text-dim); background: var(--surface-2); }
.vip-ladder__icon--platinum { color: var(--text-dim); }
.vip-ladder__icon--diamond  { color: var(--text); background: var(--surface-3); }

.vip-ladder__tier-name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
}
.vip-ladder__current-tag {
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}

/* ---- Статы ступени ---- */
.vip-ladder__tier-stats {
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-2);
}
.vip-ladder__stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.vip-ladder__stat-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.vip-ladder__stat-v {
  margin: 0;
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.vip-ladder__stat-v--lg {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--brand);
}

/* ---- Прогресс-метр до следующего тира (dataviz, НЕ звёзды) ---- */
.vip-ladder__progress { display: flex; flex-direction: column; gap: var(--s-1); }
.vip-ladder__progress-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
}
.vip-ladder__progress-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.vip-ladder__progress-v { font-weight: var(--fw-bold); color: var(--brand); font-variant-numeric: tabular-nums; }
.vip-ladder__meter {
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.vip-ladder__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}
.vip-ladder__progress-note { margin: 0; font-size: var(--t-small); color: var(--text-mute); font-variant-numeric: tabular-nums; }

/* ---- Перки ступени ---- */
.vip-ladder__perks {
  list-style: none;
  margin: auto 0 0;            /* перки прижаты к низу при разной высоте */
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}
.vip-ladder__perk {
  position: relative;
  padding-left: var(--s-5);
  font-size: var(--t-small);
  color: var(--text-dim);
  line-height: var(--lh-snug);
}
/* галочка — bespoke, через ::before (success по смыслу «включено в тир») */
.vip-ladder__perk::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.35em;
  width: 14px;
  height: 8px;
  border-left: 2px solid var(--success);
  border-bottom: 2px solid var(--success);
  transform: rotate(-45deg);
}

/* ---- Drawer: матрица перков ---- */
.vip-ladder__more {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.vip-ladder__more-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.vip-ladder__more-sum::-webkit-details-marker { display: none; }
.vip-ladder__more-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.vip-ladder__more[open] .vip-ladder__more-chev { transform: rotate(180deg); }
.vip-ladder__more-body {
  padding: 0 var(--s-4) var(--s-4);
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.vip-ladder__more-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ---- Таблица перков (tabular) ---- */
.vip-ladder__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
}
.vip-ladder__table th,
.vip-ladder__table td {
  padding: var(--s-2) var(--s-3);
  text-align: left;
  border-bottom: var(--hairline);
}
.vip-ladder__table thead th {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.vip-ladder__table tbody th { font-weight: var(--fw-semi); color: var(--text); }
.vip-ladder__table tbody td { color: var(--text-dim); }
.vip-ladder__table tbody tr:last-child th,
.vip-ladder__table tbody tr:last-child td { border-bottom: 0; }
.vip-ladder__col-num { text-align: right; font-variant-numeric: tabular-nums; }

/* ---- CTA (ровно одна на блок) ---- */
.vip-ladder__cta {
  margin-top: var(--s-5);
  display: flex;
  justify-content: center;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .vip-ladder__title { font-size: var(--t-h3); }
}
@media (max-width: 640px) {
  .vip-ladder__list { grid-template-columns: 1fr; gap: var(--s-3); }
  .vip-ladder__table { display: block; overflow-x: auto; white-space: nowrap; }
  .vip-ladder__cta .btn { width: 100%; }
}

/* ============ Reduced motion (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .vip-ladder__tier { transition: none; }
  .vip-ladder__tier:hover { transform: none; }
  .vip-ladder__more-chev { transition: none; }
}

/* ===== rating-ledger-table ===== */
/* ============================================================
 * rating-ledger-table · block.css
 * Скоуплено на .rating-ledger. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   плотный «гроссбух» операторов в фикс-слотах, хайрлайн-разделители строк,
 *   tabular-nums, дисциплина нейтралей. Эталон нейминга/слотов: casino-item-card.
 * Сортировка — общий components.js (data-action="sort"): кликабельные <th>,
 *   ключи в data-* на <tr>. Drawer деталей вложен В ЯЧЕЙКУ оператора
 *   (.rating-ledger__drawer-inline, data-action="disclosure"), чтобы doSort
 *   (переставляет ПРЯМЫХ детей tbody) не расцеплял пару «строка↔детали».
 * Один акцент — --brand; --success/--warning ТОЛЬКО по смыслу (статус лицензии).
 * Адаптив: 980 (таблица → стопка карточек) / 640. touch ≥ --tap-min.
 * ========================================================== */

.rating-ledger {
  /* фикс-слоты: лого-чип, числовая колонка рейтинга, отступы ячейки */
  --rl-logo: 40px;
  --rl-rating-col: 132px;
  --rl-cell-y: var(--s-3);
  --rl-cell-x: var(--s-4);

  display: flow-root;
  color: var(--text);
}

/* ---- Шапка блока: подпись-источник + бейдж «обновлено» ---- */
.rating-ledger__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-4);
  flex-wrap: wrap;
}
.rating-ledger__caption {
  margin: 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.rating-ledger__updated {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.rating-ledger__updated-ic { display: inline-flex; }

/* ---- Обёртка-карточка + горизонтальный скролл на узких вьюпортах ---- */
.rating-ledger__frame {
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}
.rating-ledger__scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.rating-ledger__scroll:focus-visible { outline: 2px solid var(--brand); outline-offset: -2px; }

/* ---- Таблица ---- */
.rating-ledger__table {
  width: 100%;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
  counter-reset: rl;
}

/* ---- Шапка таблицы ---- */
.rating-ledger__thead th {
  position: sticky;
  top: 0;
  z-index: var(--z-base);
  padding: var(--rl-cell-y) var(--rl-cell-x);
  text-align: left;
  vertical-align: bottom;
  white-space: nowrap;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: 1px solid var(--rule-strong);
}
.rating-ledger__th--num { text-align: right; }
.rating-ledger__th--center { text-align: center; }

/* Кнопка-сортер внутри <th> (нативная <button>, тач-цель ≥ 44px) */
.rating-ledger__sort {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding: 0;
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: inherit;
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.rating-ledger__th--num .rating-ledger__sort { flex-direction: row-reverse; }
.rating-ledger__sort:hover { color: var(--brand); }
.rating-ledger__sort[aria-pressed="true"] { color: var(--brand); }

/* Шеврон-индикатор направления; по умолчанию приглушён, активный — акцент.
   Стрелка вниз = desc; data-dir="asc" разворачивает её (проставляет components.js). */
.rating-ledger__sort-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.rating-ledger__sort[aria-pressed="true"] .rating-ledger__sort-ic { color: var(--brand); }
.rating-ledger__sort[aria-pressed="false"] .rating-ledger__sort-ic { opacity: 0; }
.rating-ledger__sort:hover .rating-ledger__sort-ic { opacity: 1; }
.rating-ledger__sort[data-dir="asc"] .rating-ledger__sort-ic { transform: rotate(180deg); }

/* ---- Строки данных ---- */
.rating-ledger__row {
  counter-increment: rl;
  border-top: var(--hairline);
  transition: background var(--dur-quick) var(--ease);
}
.rating-ledger__tbody tr:first-child { border-top: 0; }
.rating-ledger__row:hover { background: var(--bg-2); }
.rating-ledger__row.is-top { background: var(--highlight-pale); }
.rating-ledger__row.is-top:hover { background: var(--highlight-pale); }

.rating-ledger__cell {
  padding: var(--rl-cell-y) var(--rl-cell-x);
  vertical-align: middle;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}
.rating-ledger__cell--num {
  text-align: right;
  font-weight: var(--fw-semi);
  color: var(--text);
}
.rating-ledger__cell--center { text-align: center; }
.rating-ledger__muted { color: var(--text-mute); }

/* ---- 1 · Позиция (CSS-counter) + оператор ---- */
.rating-ledger__op {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  min-width: 0;
}
.rating-ledger__rank {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 22px;
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.rating-ledger__rank::before { content: counter(rl); }
/* топ-3 — акцентный номер, единственное «золото» в строке оператора */
.rating-ledger__row:nth-child(-n+3) .rating-ledger__rank { color: var(--brand); }

.rating-ledger__logo {
  width: var(--rl-logo);
  height: var(--rl-logo);
  flex: 0 0 auto;
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
}
.rating-ledger__name-wrap { display: block; min-width: 0; }
.rating-ledger__name {
  display: block;
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.rating-ledger__tag {
  display: block;
  margin: 0;
  font-size: var(--t-tiny);
  color: var(--text-faint);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---- 2 · Рейтинг: число + dataviz-метр (не звёзды) ---- */
.rating-ledger__rating {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: var(--rl-rating-col);
}
.rating-ledger__rating-v {
  align-self: flex-end;
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.rating-ledger__rating-v small {
  color: var(--text-faint);
  font-weight: var(--fw-medium);
}
.rating-ledger__meter {
  height: 6px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.rating-ledger__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- 3 · Лицензия-чип (нейтральный, статус — по смыслу) ---- */
.rating-ledger__lic {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.rating-ledger__lic-dot {
  width: 6px;
  height: 6px;
  flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: var(--success);
}
/* лицензия под наблюдением/серая зона — функциональный --warning, по смыслу */
.rating-ledger__lic--watch { color: var(--warning); background: var(--warning-soft); border-color: transparent; }
.rating-ledger__lic--watch .rating-ledger__lic-dot { background: var(--warning); }

/* ---- 4 · CTA-слот (одна кнопка на строку) + раскрытие деталей ---- */
.rating-ledger__cell--action { white-space: nowrap; text-align: right; }
.rating-ledger__actions {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
}
.rating-ledger__cta.btn { padding-block: var(--s-2); }

/* Кнопка-раскрытие drawer-строки с деталями */
.rating-ledger__more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--tap-min);
  height: var(--tap-min);
  color: var(--text-mute);
  border-radius: var(--r-md);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.rating-ledger__more:hover { color: var(--brand); background: var(--brand-soft); }
.rating-ledger__more-ic { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.rating-ledger__more[aria-expanded="true"] .rating-ledger__more-ic { transform: rotate(180deg); }

/* ---- Drawer деталей (T&C, проверки): сосед .rating-ledger__op внутри
        ячейки оператора. Раскрывается блоком на всю ширину под именем —
        держит таблицу чистой. Вложен в строку (а не отдельный <tr>),
        поэтому doSort не расцепляет пару «строка↔детали». ---- */
.rating-ledger__drawer-inline {
  display: block;
  margin-top: var(--s-3);
}
.rating-ledger__drawer-inline[hidden] { display: none; }
.rating-ledger__drawer-body {
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}

.rating-ledger__detail-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--s-3) var(--s-5);
}
.rating-ledger__detail { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rating-ledger__detail dt {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.rating-ledger__detail dd {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.rating-ledger__note {
  margin: var(--s-3) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- Подвал: примечание/дисклеймер 18+ ---- */
.rating-ledger__foot {
  margin-top: var(--s-3);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-faint);
}

/* ============================================================
 * Адаптив ≤980px — «таблица как стопка карточек»:
 *   каждая строка превращается в карточку, ячейки получают подпись
 *   через data-label (::before). thead уводится в visually-hidden поток.
 * ========================================================== */
@media (max-width: 980px) {
  .rating-ledger__frame { background: transparent; border: 0; box-shadow: none; overflow: visible; }
  .rating-ledger__scroll { overflow-x: visible; }
  .rating-ledger__table { display: block; }

  .rating-ledger__thead {
    position: absolute;
    width: 1px; height: 1px;
    margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0 0 0 0);
    white-space: nowrap; border: 0;
  }
  .rating-ledger__tbody { display: flex; flex-direction: column; gap: var(--s-4); }

  .rating-ledger__row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--s-2) var(--s-4);
    align-items: center;
    padding: var(--s-4);
    border: var(--hairline);
    border-radius: var(--r-lg);
    background: var(--surface);
    box-shadow: var(--shadow-card);
  }
  .rating-ledger__tbody tr:first-child { border-top: var(--hairline); }
  .rating-ledger__row:hover { background: var(--surface); }
  .rating-ledger__row.is-top { background: var(--surface); border-color: var(--rule-strong); box-shadow: inset 0 3px 0 0 var(--brand), var(--shadow-card); }

  /* оператор — на всю ширину карточки сверху */
  .rating-ledger__cell {
    padding: 0;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--s-3);
    text-align: right;
  }
  .rating-ledger__cell--op {
    grid-column: 1 / -1;
    display: block;            /* контейнер op-flex сам управляет раскладкой */
    padding-bottom: var(--s-3);
    border-bottom: var(--hairline);
  }
  /* подпись колонки слева от значения */
  .rating-ledger__cell[data-label]::before {
    content: attr(data-label);
    font-size: var(--t-tiny);
    font-weight: var(--fw-semi);
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--text-faint);
    text-align: left;
    white-space: nowrap;
  }
  .rating-ledger__cell--op[data-label]::before { content: none; }

  .rating-ledger__rating { min-width: 0; flex: 0 0 auto; width: 132px; }

  .rating-ledger__cell--action {
    grid-column: 1 / -1;
    padding-top: var(--s-3);
    border-top: var(--hairline);
  }
  .rating-ledger__cell--action::before { content: none; }
  .rating-ledger__actions { width: 100%; justify-content: space-between; }
  .rating-ledger__cta.btn { flex: 1 1 auto; }

  /* drawer внутри карточки — на всю ширину, без верхнего отступа (граница op уже есть) */
  .rating-ledger__drawer-inline { margin-top: var(--s-3); }
}

@media (max-width: 640px) {
  .rating-ledger__row { padding: var(--s-3); }
  .rating-ledger__op { gap: var(--s-2); }
  .rating-ledger__name { font-size: var(--t-body); white-space: normal; }
  .rating-ledger__detail-grid { grid-template-columns: 1fr 1fr; }
  .rating-ledger__actions { flex-direction: column; align-items: stretch; gap: var(--s-2); }
  .rating-ledger__more { width: 100%; }
}

/* ===== rating-score ===== */
/* ============================================================
 * rating-score · block.css
 * Скоуплено на .rating-score. Только токены (10-tokens/).
 * Конвенция разметки: html-rating-guide (.ci-rating). Адаптив: 980 / 640.
 * Источник истины — --val (0..10) на корне: из него считаются и бар, и звёзды.
 * ========================================================== */

.rating-score {
  --val: 0;                       /* 0..10, задаётся inline на инстансе */
  --score-num: var(--t-h1);       /* размер крупного балла */
  --pct: calc(var(--val) * 10%);  /* ширина бара / клип звёзд */

  display: inline-flex;
  flex-direction: column;
  gap: var(--s-2);
  min-width: 0;
  font-variant-numeric: tabular-nums;
}

/* ---- Балл + scale ---- */
.rating-score__head {
  display: flex;
  align-items: baseline;
  gap: var(--s-2);
  min-width: 0;
}
.rating-score__value {
  font-family: var(--font-display);
  font-size: var(--score-num);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.rating-score__scale {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-medium);
  line-height: var(--lh-tight);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.rating-score__label {
  font-size: var(--t-tiny);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* ---- Бар (ширина = рейтинг×10%, градиент rating-from→to) ---- */
.rating-score__bar {
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.rating-score__fill {
  display: block;
  height: 100%;
  width: var(--pct);
  max-width: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  /* мягкое свечение функциональным концом шкалы (dataviz-акцент) */
  box-shadow: 0 0 9px -2px color-mix(in srgb, var(--rating-to) 50%, transparent);
}

/* ---- Звёзды (5 шт., частичная заливка через клип по --pct) ---- */
.rating-score__stars {
  position: relative;
  display: inline-flex;
  width: max-content;
  line-height: 0;
  color: var(--rule-strong);          /* пустой контур */
}
.rating-score__stars-row {
  display: inline-flex;
  gap: var(--s-1);
}
.rating-score__stars-row svg { display: block; width: 18px; height: 18px; }
.rating-score__stars-fill {
  position: absolute;
  inset: 0;
  width: var(--pct);
  max-width: 100%;
  overflow: hidden;
  color: var(--gold);                  /* заполненный */
  /* тонкое золотое свечение заполненным звёздам (премиум, не неон) */
  filter: drop-shadow(0 0 4px color-mix(in srgb, var(--gold) 42%, transparent));
  white-space: nowrap;
  pointer-events: none;
}

/* ---- Inline-вариант: балл + бар в один ряд (для шапок/строк таблиц) ---- */
.rating-score.rating-score--inline {
  --score-num: var(--t-h3);
  display: inline-grid;
  grid-template-columns: auto minmax(120px, 1fr);
  align-items: center;
  gap: var(--s-3);
}
.rating-score--inline .rating-score__head { flex-direction: column; align-items: flex-start; gap: 0; }
.rating-score--inline .rating-score__bar { align-self: center; min-width: 100px; }

/* ---- Hero-вариант: крупный балл для заглавных блоков ---- */
.rating-score.rating-score--lg { --score-num: var(--t-display); gap: var(--s-3); }
.rating-score--lg .rating-score__scale { font-size: var(--t-h2); }
.rating-score--lg .rating-score__stars-row svg { width: 22px; height: 22px; }
/* gradient display-балл (короткое число — читаемость не страдает; clip к тексту) */
.rating-score--lg .rating-score__value {
  background: var(--grad-text);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

/* ---- Карточный вариант: на поверхности, выровнен по центру ---- */
.rating-score.rating-score--boxed {
  align-items: center;
  text-align: center;
  padding: var(--s-4) var(--s-5);
  /* премиум-карта: surface + верхний градиент-оверлей + угловой brand-glow */
  background-color: var(--surface);
  background-image:
    radial-gradient(90% 130% at 50% -20%, color-mix(in srgb, var(--brand) 10%, transparent), transparent 58%),
    var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-card);
  transition: transform var(--dur-base) var(--ease-out),
              box-shadow var(--dur-base) var(--ease-out),
              border-color var(--dur-base) var(--ease-out);
}
.rating-score--boxed:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-card), var(--shadow-glow);
  border-color: color-mix(in srgb, var(--brand) 38%, var(--rule));
}
.rating-score--boxed .rating-score__bar { align-self: stretch; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .rating-score.rating-score--lg { --score-num: var(--t-h1); }
  .rating-score--lg .rating-score__scale { font-size: var(--t-h3); }
}
@media (max-width: 640px) {
  .rating-score.rating-score--inline {
    grid-template-columns: 1fr;
    gap: var(--s-2);
  }
  .rating-score--inline .rating-score__bar { align-self: stretch; }
}

/* ============ Reduced motion: без lift на карточном варианте ============ */
@media (prefers-reduced-motion: reduce) {
  .rating-score--boxed { transition: box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out); }
  .rating-score--boxed:hover { transform: none; }
}

/* ===== reading-path-router ===== */
/* ============================================================
 * reading-path-router · block.css
 * Скоуплено на .path-router. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   сегмент-контроль интентов + карточки-рекомендации в фикс-слотах, dataviz
 *   fit-метр (не звёзды), tabular-nums, дисциплина нейтралей. Эталон нейминга/
 *   слотов/drawer'а: casino-item-card + strengths-weaknesses.
 * Назначение: «Путь читателя» — use-case (интент) → подобранный бренд. Живой
 *   фильтр (form[data-target], components.js) сужает список по data-usecase.
 * Один акцент — --brand (активный путь, fit-число, «Наш выбор», CTA).
 *   Смысловые --success/--danger здесь НЕ нужны (нет +/− семантики) — не вводим.
 * Источник истины fit-метра — --fit (0..100) на .path-router__card; ширина = --fit×1%.
 * Адаптив: 980 (3→стопка) / 640. touch ≥ --tap-min. JS прогрессивен.
 * ========================================================== */

.path-router {
  /* фикс-слоты */
  --pr-logo: 56px;          /* лого-чип бренда */
  --pr-meter-h: 8px;        /* высота fit-метра */
  --pr-col: 300px;          /* мин. ширина карточки в сетке */

  display: flex;
  flex-direction: column;
  gap: var(--s-6);
  color: var(--text);
}

/* ---- Шапка ---- */
.path-router__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  max-width: var(--container-prose);
}
.path-router__eyebrow { margin: 0; }
.path-router__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.path-router__lede { margin: 0; }

/* ============================================================
 * Сегмент-контроль интентов (нативные radio в label-чипах).
 * Один активный путь = единственный --brand-акцент управления.
 * ========================================================== */
.path-router__paths { margin: 0; }
.path-router__fieldset {
  border: 0;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}

.path-router__chip {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  line-height: 1;
  color: var(--text-dim);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  cursor: pointer;
  user-select: none;
  transition: color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease),
              border-color var(--dur-quick) var(--ease);
}
.path-router__chip:hover { border-color: var(--rule-strong); color: var(--text); }

/* нативный radio скрыт визуально, но доступен с клавиатуры/SR */
.path-router__radio {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}
/* состояние «выбран» — заливка акцентом (не только цветом: чип физически активен) */
.path-router__chip:has(.path-router__radio:checked) {
  color: var(--on-brand);
  background: var(--brand);
  border-color: var(--brand);
}
.path-router__chip:has(.path-router__radio:checked) .path-router__chip-ic { color: var(--on-brand); }
/* фокус-кольцо вешаем на чип, когда фокус на скрытом radio */
.path-router__chip:has(.path-router__radio:focus-visible) {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

.path-router__chip-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}
.path-router__chip:hover .path-router__chip-ic { color: var(--brand); }
.path-router__chip-tx { white-space: nowrap; }

/* ============================================================
 * Список рекомендаций (карточки-пути).
 * ========================================================== */
.path-router__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(var(--pr-col), 1fr));
  gap: var(--s-4);
  align-items: start;
}

/* ---- Карточка: --surface + --hairline + --r-lg + --shadow-card ---- */
.path-router__card {
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.path-router__card:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }
/* живой фильтр прячет несоответствия — скрытая карточка не занимает слот сетки */
.path-router__card[hidden] { display: none; }

/* редакторский «лучший матч под путь» — тонкая акцент-кромка, без мульти-цвета */
.path-router__card.is-pick {
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
  box-shadow: inset 0 0 0 1px var(--brand-soft), var(--shadow-card);
}

/* ---- 1 · Бренд: фикс-слот лого + имя + теги-пути + флаг выбора ---- */
.path-router__brand {
  display: grid;
  grid-template-columns: var(--pr-logo) minmax(0, 1fr);
  align-items: center;
  gap: var(--s-3);
  position: relative;
}
.path-router__logo {
  width: var(--pr-logo);
  height: var(--pr-logo);
  flex: 0 0 auto;
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
}
.path-router__brand-tx { min-width: 0; }
.path-router__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.path-router__paths-tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-1);
  margin: var(--s-1) 0 0;
}
.path-router__pathtag {
  font-size: var(--t-tiny);
  letter-spacing: .02em;
  color: var(--text-mute);
}
.path-router__pathtag + .path-router__pathtag::before {
  content: "·";
  margin-right: var(--s-1);
  color: var(--text-faint);
}

/* Флаг «Наш выбор» — единственный brand-soft чип в шапке карточки */
.path-router__pick-flag {
  display: none;
  align-items: center;
  gap: var(--s-1);
  align-self: start;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.path-router__card.is-pick .path-router__pick-flag { display: inline-flex; }

/* ---- 2 · Почему подходит (one-liner) ---- */
.path-router__why {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- 3 · Dataviz fit-метр (источник истины — --fit 0..100) ---- */
.path-router__fit {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-top: auto;            /* прижимает метр+CTA к низу при разной высоте why */
}
.path-router__fit-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
}
.path-router__fit-k {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.path-router__fit-v {
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.path-router__fit-v small { color: var(--text-faint); font-weight: var(--fw-medium); }
.path-router__fit-bar {
  height: var(--pr-meter-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.path-router__fit-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  width: calc(var(--fit, 0) * 1%);
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease);
}

/* ---- 4 · Drawer «почему подходит» (держит карточку чистой) ---- */
.path-router__detail { display: block; }
.path-router__more {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.path-router__more:hover { color: var(--brand); }
.path-router__more-ic { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.path-router__more[aria-expanded="true"] .path-router__more-ic { transform: rotate(180deg); }

.path-router__drawer {
  margin-top: var(--s-3);
  padding: var(--s-4);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.path-router__drawer[hidden] { display: none; }

.path-router__facts {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: var(--s-3) var(--s-4);
}
.path-router__fact { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.path-router__fact dt {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.path-router__fact dd {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.path-router__note {
  margin: var(--s-3) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- 5 · CTA-слот (ОДНА кнопка на карточку) ---- */
.path-router__cta-slot { display: block; }

/* ---- Подвал блока ---- */
.path-router__foot {
  margin: 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-faint);
}

/* Пустой результат фильтра (вставляется components.js рядом со списком) */
.path-router .filter-empty {
  margin: 0;
  padding: var(--s-5);
  font-size: var(--t-small);
  text-align: center;
  color: var(--text-mute);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}

/* ============================================================
 * Модификатор: компактный (врезка в теле обзора / сайдбар).
 * Меньше gap/padding, чипы — горизонтальный скролл, без drawer.
 * ========================================================== */
.path-router--compact { gap: var(--s-4); }
.path-router--compact .path-router__card { padding: var(--s-4); gap: var(--s-3); }
.path-router--compact .path-router__list { gap: var(--s-3); }
.path-router--compact .path-router__fieldset {
  flex-wrap: nowrap;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: var(--s-1);
}
.path-router--compact .path-router__chip { flex: 0 0 auto; }

/* ============================================================
 * Адаптив
 * ========================================================== */
@media (max-width: 980px) {
  .path-router { gap: var(--s-5); }
  .path-router__list { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
}

@media (max-width: 640px) {
  .path-router__list { grid-template-columns: 1fr; }
  .path-router__card { padding: var(--s-4); }
  /* чипы на узком экране — горизонтальный скролл вместо переноса в столбик */
  .path-router__fieldset {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: var(--s-1);
    /* лёгкий край-фейд, чтобы намекнуть на скролл */
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - var(--s-6)), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - var(--s-6)), transparent);
  }
  .path-router__chip { flex: 0 0 auto; }
}

/* ===== related-rail ===== */
/* ============================================================
 * related-rail · block.css
 * Скоуплено на .bd-related (лента «похожее / далее»). Только токены (10-tokens/).
 * Owns: заголовок-блок (eyebrow + H2 + опц. «смотреть все») + грид карточек 3/2/1.
 * Карточка = фикс-слот медиа + чип-рубрика + заголовок (2 строки) + мета-подвал.
 * Вся карточка кликабельна: ссылка-заголовок растянута ::after (мета держит z-index).
 * Один акцент — --brand (чип + title-hover + стрелка); прочее — нейтрали.
 * Конвенция house-style: портфельный .bd-related (нейминг/слоты/shadow-card),
 * ориентир casino-item-card / featured-card. CSS-only, JS не требуется. Адаптив: 980 / 640.
 * ========================================================== */

.bd-related {
  --bd-cols: 3;               /* колонок на десктопе (3–4) */
  --bd-media: 16 / 9;         /* фикс-аспект медиа-слота — карточки ровные */
}

/* ---- Заголовок ленты ---- */
.bd-related__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-6);
}
.bd-related__heading {
  min-width: 0;
}
.bd-related__head .eyebrow { margin: 0 0 var(--s-2); }
.bd-related__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}

/* «Смотреть все» — текстовая ссылка, не вторая кнопка-акцент */
.bd-related__all {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  text-decoration: none;
  white-space: nowrap;
  transition: gap var(--dur-quick) var(--ease);
}
.bd-related__all-ic {
  flex: 0 0 auto;
  transition: transform var(--dur-quick) var(--ease-out);
}
.bd-related__all:hover .bd-related__all-ic,
.bd-related__all:focus-visible .bd-related__all-ic { transform: translateX(3px); }

/* ---- Грид: 3 → 2 → 1 (owns колонки/gap; карточка себя не раскладывает) ---- */
.bd-related__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(var(--bd-cols), minmax(0, 1fr));
  gap: var(--s-5);
}
.bd-related__cell { display: flex; }

/* ============================================================
 * Карточка «далее»
 * ========================================================== */
.bd-related__card {
  position: relative;          /* контекст для overlay-ссылки заголовка */
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;            /* медиа-радиус совпадает с карточкой */
  transition:
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease);
}
.bd-related__card:hover {
  box-shadow: var(--shadow-pop);
  transform: translateY(-2px);
  border-color: var(--rule-strong);
}
/* Фокус подсвечиваем у ссылки внутри, но приподнимаем всю карточку */
.bd-related__card:focus-within {
  box-shadow: var(--shadow-pop);
  border-color: var(--rule-strong);
}

/* ---- 1 · Медиа-слот (фикс-аспект) + чип-рубрика ---- */
.bd-related__media {
  position: relative;
  display: block;
  aspect-ratio: var(--bd-media);
  background: var(--bg-2);     /* фолбэк-фон до загрузки img */
  overflow: hidden;
}
.bd-related__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform var(--dur-slow) var(--ease-out);
}
.bd-related__card:hover .bd-related__img,
.bd-related__card:focus-within .bd-related__img { transform: scale(1.04); }

/* Чип-рубрика — единственный носитель акцента в медиа */
.bd-related__kind {
  position: absolute;
  inset-block-start: var(--s-3);
  inset-inline-start: var(--s-3);
  z-index: var(--z-base);
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: var(--s-1) var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.bd-related__kind-ic { flex: 0 0 auto; }

/* ---- 2 · Тело: заголовок + дек ---- */
.bd-related__body {
  display: flex;
  flex: 1 1 auto;              /* подвал прижат к низу при разной высоте текста */
  flex-direction: column;
  gap: var(--s-2);
  padding: var(--s-4) var(--s-5) var(--s-5);
}
.bd-related__card-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
  /* фикс-слот заголовка: ровно 2 строки — единый верх у соседних карточек */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}
.bd-related__link {
  color: inherit;
  text-decoration: none;
  text-decoration-color: transparent;
  transition: color var(--dur-quick) var(--ease);
}
/* Растягиваем ссылку на всю карточку (кликабелен весь юнит); мета — выше по z */
.bd-related__link::after {
  content: "";
  position: absolute;
  inset: 0;
}
.bd-related__link:hover,
.bd-related__card:focus-within .bd-related__link { color: var(--brand); }

.bd-related__dek {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  text-wrap: pretty;
  /* фикс-слот дека: ровно 2 строки — ровный нижний край */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}

/* ---- 3 · Мета-подвал: рубрика-текст · время чтения ---- */
.bd-related__meta {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  margin-top: auto;            /* прижать к низу */
  padding-top: var(--s-3);
  border-top: var(--hairline);
  font-size: var(--t-tiny);
  color: var(--text-faint);
}
.bd-related__cat {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-width: 0;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.bd-related__read {
  position: relative;
  z-index: var(--z-base);      /* выше overlay-ссылки заголовка — остаётся читаемой */
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  margin-inline-start: auto;
  font-variant-numeric: tabular-nums;
}
.bd-related__meta-ic {
  flex: 0 0 auto;
  color: var(--text-faint);
}

/* ---- Модификатор: 4 колонки (узкие карточки в ленте) ---- */
.bd-related--4col { --bd-cols: 4; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .bd-related,
  .bd-related--4col { --bd-cols: 2; }
  .bd-related__grid { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .bd-related,
  .bd-related--4col { --bd-cols: 1; }
  .bd-related__title { font-size: var(--t-h3); }
  .bd-related__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-2);
    margin-bottom: var(--s-5);
  }
  .bd-related__grid { gap: var(--s-4); }
  .bd-related__body { padding: var(--s-4); }
}

/* ============ Reduced motion: гасим доп. анимации (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .bd-related__img,
  .bd-related__card { transition: none; }
  .bd-related__card:hover .bd-related__img,
  .bd-related__card:focus-within .bd-related__img { transform: none; }
}

/* ===== responsible-gambling ===== */
/* ============================================================
 * responsible-gambling · block.css
 * Скоуплено на .rg. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base. Адаптив: 980 / 640.
 * Один акцент = --brand. --warning только по смыслу (предупреждение/линии помощи).
 * ========================================================== */

.rg {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) minmax(220px, auto);
  grid-template-areas: "badge body links";
  gap: var(--s-6);
  align-items: start;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- 1 · Знак 18+ ---- */
.rg__badge {
  grid-area: badge;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border: 2px solid var(--rule-strong);
  border-radius: var(--r-pill);
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--t-h3);
  font-variant-numeric: tabular-nums;
  color: var(--text);
  background: var(--bg-2);
  letter-spacing: -0.02em;
}

/* ---- 2 · Текст + признаки ---- */
.rg__body {
  grid-area: body;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  min-width: 0;
}
.rg__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.rg__text {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* линия помощи — функциональный warning, не декор */
.rg__hotline {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  align-self: flex-start;
  padding: var(--s-2) var(--s-3);
  background: var(--warning-soft);
  border-radius: var(--r-md);
  font-size: var(--t-small);
  color: var(--text);
}
.rg__hotline-ic { display: inline-flex; color: var(--warning); }
.rg__hotline b { font-weight: var(--fw-semi); font-variant-numeric: tabular-nums; }

/* раскрываемый drawer «признаки проблемной игры» — держит блок чистым */
.rg__signs { margin: 0; }
.rg__signs-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: 0;
  background: none;
  border: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  cursor: pointer;
}
.rg__signs-btn:hover { color: var(--brand); }
.rg__signs-chev {
  display: inline-flex;
  transition: transform var(--dur-quick) var(--ease);
}
.rg__signs-btn[aria-expanded="true"] .rg__signs-chev { transform: rotate(180deg); }

.rg__signs-panel {
  margin: var(--s-3) 0 0;
  padding: var(--s-3) var(--s-4);
  list-style: none;
  display: grid;
  gap: var(--s-2);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}
.rg__signs-panel[hidden] { display: none; }
.rg__signs-panel li {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
}
.rg__signs-panel li::before {
  content: "";
  flex: 0 0 auto;
  width: 6px;
  height: 6px;
  margin-top: 7px;
  border-radius: var(--r-pill);
  background: var(--text-faint);
}

/* ---- 3 · Ссылки помощи + инструменты ---- */
.rg__links {
  grid-area: links;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}
.rg__links-k {
  font-size: var(--t-tiny);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}

/* организации помощи */
.rg__orgs {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin: 0;
}
.rg__org {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  color: var(--text);
  text-decoration: none;
  transition: border-color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.rg__org:hover { border-color: var(--brand); background: var(--surface-2); }
.rg__org-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--brand);
}
.rg__org-txt { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.rg__org-name { font-size: var(--t-small); font-weight: var(--fw-semi); line-height: var(--lh-tight); }
.rg__org-host { font-size: var(--t-tiny); color: var(--text-mute); }

/* инструменты самоконтроля — фикс-слоты иконок */
.rg__tools {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-3);
  margin: 0;
}
.rg__tool {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-1);
  width: 64px;
  text-align: center;
  color: var(--text-dim);
}
.rg__tool-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--r-pill);
  background: var(--brand-soft);
  color: var(--brand);
}
.rg__tool-k { font-size: var(--t-tiny); line-height: var(--lh-tight); color: var(--text-mute); }

/* ---- Вариант · компакт (футер): одна строка, без drawer/инструментов ---- */
.rg--compact {
  align-items: center;
  padding: var(--s-5);
}
.rg--compact .rg__body { gap: var(--s-2); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .rg {
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-areas:
      "badge body"
      "links links";
    gap: var(--s-5);
  }
  .rg__links { border-top: var(--hairline); padding-top: var(--s-5); }
}

@media (max-width: 640px) {
  .rg {
    grid-template-columns: 1fr;
    grid-template-areas:
      "badge"
      "body"
      "links";
    gap: var(--s-4);
    padding: var(--s-5);
  }
  .rg__tools { justify-content: space-between; }
}

/* ===== results-count ===== */
/* ============================================================
 * results-count · block.css
 * Скоуплено на .results-count. Только токены (10-tokens/).
 * «Найдено N» над отфильтрованным листингом: число = единственный акцент
 * (--brand), нейтральная chrome-планка, tabular-nums, subtle motion.
 * Конвенция: html-rating-guide (живой фильтр) + premium-планка.
 * Адаптив: 980 / 640. Touch-target ≥ --tap-min.
 * ========================================================== */

.results-count {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s-2) var(--s-4);
  min-height: var(--tap-min);
  padding-block: var(--s-2);
  font-family: var(--font-body);
  color: var(--text-mute);
}

/* ---- 1 · Сводка «Найдено N из M» ---- */
.results-count__summary {
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin: 0;
  font-size: var(--t-body);
  line-height: var(--lh-snug);
}

.results-count__lead {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}

/* Число найденного — ЕДИНСТВЕННЫЙ акцент в блоке */
.results-count__num {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--brand);
  font-variant-numeric: tabular-nums;
  /* мягкий «тик» при смене значения (JS снимает/ставит .is-bump) */
  transition: color var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.results-count.is-bump .results-count__num { transform: translateY(-1px) scale(1.04); }

.results-count__noun {
  font-weight: var(--fw-semi);
  color: var(--text);
}

.results-count__of {
  color: var(--text-faint);
  font-size: var(--t-small);
}
.results-count__total {
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  font-variant-numeric: tabular-nums;
}

/* ---- 2 · Активные фильтры (нейтральные пилюли, акцент только на ховере удаления) ---- */
.results-count__filters {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.results-count__filters:empty { display: none; }

.results-count__chip {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: var(--s-1) var(--s-1) var(--s-1) var(--s-3);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  font-variant-numeric: tabular-nums;
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}

/* Крестик удаления фильтра */
.results-count__chip-x {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  color: var(--text-faint);
  background: transparent;
  border: 0;
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.results-count__chip-x:hover {
  color: var(--danger);
  background: var(--danger-soft);
}

/* ---- 3 · Сброс всех фильтров (текст-кнопка, нейтраль → акцент на ховере) ---- */
.results-count__clear {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  margin-inline-start: auto;          /* прижать к правому краю планки */
  padding: 0 var(--s-2);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  background: transparent;
  border: 0;
  border-radius: var(--r-soft);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.results-count__clear:hover { color: var(--brand); }
.results-count__clear svg { transition: transform var(--dur-base) var(--ease); }
.results-count__clear:hover svg { transform: rotate(-45deg); }

/* ---- Состояние: пустая выдача (--empty / .is-empty) ---- */
.results-count--empty .results-count__lead,
.results-count.is-empty .results-count__lead {
  font-size: var(--t-h4);
  letter-spacing: 0;
  text-transform: none;
  font-weight: var(--fw-semi);
  color: var(--text);
}
.results-count__empty-ic {
  display: inline-flex;
  align-self: center;
  color: var(--text-faint);
}
.results-count__hint {
  font-size: var(--t-small);
  color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .results-count { gap: var(--s-2) var(--s-3); }
}
@media (max-width: 640px) {
  .results-count {
    align-items: flex-start;
    flex-direction: column;
    gap: var(--s-3);
  }
  /* «Сбросить» больше не прижимается вправо — встаёт под планку */
  .results-count__clear {
    margin-inline-start: 0;
    padding-inline: 0;
  }
}

/* ===== review-card ===== */
/* ============================================================
 * review-card · block.css
 * Скоуплено на .review-card. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах.
 * Конвенция разметки/JS: html-base + раскрываемый T&C-drawer. Адаптив: 980 / 640.
 * Визуал: премиум-глубина (surface-grad + shadow-card), hover = lift + brand-glow
 *         + brand-бордер; cat-чип = стекло; score-бейдж и статус-точки = glow;
 *         --featured = brand-рамка + ambient. Всё через токены → все скины.
 * ========================================================== */

/* ---- Грид-обёртка ---- */
.review-grid {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--s-5);
}
.review-grid__cell { display: flex; min-width: 0; }

/* ---- Карточка ---- */
.review-card {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  background-color: var(--surface);
  background-image: var(--surface-grad);          /* тонкий градиент-оверлей сверху */
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);                 /* глубина + inset верхний хайлайт */
  overflow: hidden;
  transition:
    box-shadow var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out);
}
.review-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-pop), var(--shadow-glow);   /* lift + мягкое свечение акцентом */
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
}
/* Подсветка карточки, когда внутри :focus-visible (клавиатура) */
.review-card:focus-within {
  box-shadow: var(--shadow-pop), var(--shadow-glow);
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
}

/* ---- 1 · Медиа + бейдж категории ---- */
.review-card__media {
  position: relative;
  aspect-ratio: 16 / 9;
  background: var(--bg-2);
  overflow: hidden;
}
.review-card__img {
  width: 100%; height: 100%;
  object-fit: cover;
  border-bottom: var(--hairline);
  transition: transform var(--dur-slow) var(--ease-out);
}
.review-card:hover .review-card__img { transform: scale(1.04); }
.review-card__cat {
  position: absolute; top: var(--s-3); left: var(--s-3);
  z-index: var(--z-base);
  display: inline-flex; align-items: center;
  padding: var(--s-1) var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .06em; text-transform: uppercase;
  color: var(--text);
  /* Frosted-стекло: читаемый чип поверх любого медиа на всех скинах */
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}

/* ---- 2 · Тело ---- */
.review-card__body {
  display: flex; flex-direction: column; gap: var(--s-3);
  flex: 1 1 auto;
  padding: var(--s-5);
}

/* Заголовок-ссылка: stretched-link покрывает карточку для клика по обзору */
.review-card__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3); font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.review-card__title-link {
  color: inherit; text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
.review-card__title-link::after {
  content: ""; position: absolute; inset: 0; z-index: var(--z-base);
}
.review-card__title-link:hover { color: var(--brand); }

/* Вердикт (1-2 строки сводки) — фикс-слот высоты для ровного грида */
.review-card__verdict {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ---- 3 · Метрика: score-бейдж + метка-вывод ---- */
.review-card__meter {
  display: flex; align-items: center; gap: var(--s-3);
  margin-top: auto;                /* прижать к низу тела над футером */
  padding-top: var(--s-3);
  border-top: var(--hairline);
}
/* Score-бейдж (dataviz): gradient-fill + glow-кольцо акцентом рейтинга */
.review-card__score {
  display: inline-flex; align-items: baseline; gap: 1px;
  flex: 0 0 auto;
  padding: var(--s-2) var(--s-3);
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  color: var(--on-brand);
  background-image: linear-gradient(135deg, var(--rating-from), var(--rating-to));
  border-radius: var(--r-md);
  font-variant-numeric: tabular-nums;
  box-shadow:
    var(--border-highlight),
    0 6px 18px -8px color-mix(in srgb, var(--rating-to) 55%, transparent);
}
.review-card__score-v { font-size: var(--t-h4); line-height: 1; }
.review-card__score-max { font-size: var(--t-tiny); font-weight: var(--fw-medium); opacity: .85; }

.review-card__tag {
  display: inline-flex; align-items: center; gap: var(--s-1);
  min-width: 0;
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-dim);
}
/* Статус-точка: мягкий glow цветом статуса (тонко, не неон) */
.review-card__tag-dot {
  width: 8px; height: 8px; flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: var(--success);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--success) 22%, transparent);
}
.review-card__tag--ok    .review-card__tag-dot { background: var(--success); box-shadow: 0 0 0 3px color-mix(in srgb, var(--success) 22%, transparent); }
.review-card__tag--mid   .review-card__tag-dot { background: var(--warning); box-shadow: 0 0 0 3px color-mix(in srgb, var(--warning) 22%, transparent); }
.review-card__tag--avoid .review-card__tag-dot { background: var(--danger);  box-shadow: 0 0 0 3px color-mix(in srgb, var(--danger) 22%, transparent); }

/* ---- 4 · Футер: ОДНА CTA + раскрываемый T&C-drawer ---- */
.review-card__footer {
  display: flex; flex-direction: column; gap: var(--s-2);
  padding: var(--s-4) var(--s-5) var(--s-5);
}
/* CTA над stretched-link заголовка (наследует .btn--primary → grad-brand + glow) */
.review-card__cta { position: relative; z-index: calc(var(--z-base) + 1); }

.review-card__tnc { position: relative; }
.review-card__tnc-btn {
  display: inline-flex; align-items: center; gap: var(--s-1);
  position: relative; z-index: calc(var(--z-base) + 1);
  min-height: var(--tap-min);
  font-size: var(--t-tiny); color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.review-card__tnc-btn:hover { color: var(--brand); }
.review-card__tnc-chev {
  display: inline-flex;
  transition: transform var(--dur-quick) var(--ease);
}
.review-card__tnc-btn[aria-expanded="true"] .review-card__tnc-chev { transform: rotate(180deg); }

/* T&C-body: frosted-стекло вместо плоской плашки */
.review-card__tnc-body {
  position: relative; z-index: calc(var(--z-base) + 1);
  margin-top: var(--s-1);
  padding: var(--s-3);
  font-size: var(--t-tiny); line-height: var(--lh-snug);
  color: var(--text-dim);
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border); border-radius: var(--r-md);
}
.review-card__tnc-body[hidden] { display: none; }

/* ---- Вариант: featured (премиум-акцент = brand-рамка + ambient-glow + лифт-glow) ---- */
.review-card--featured {
  border-color: color-mix(in srgb, var(--brand) 55%, var(--rule));
  background-image:
    radial-gradient(80% 120% at 92% -12%, color-mix(in srgb, var(--brand) 11%, transparent), transparent 56%),
    var(--surface-grad);
  box-shadow: var(--shadow-card), var(--shadow-glow);
}
.review-card--featured:hover,
.review-card--featured:focus-within {
  border-color: color-mix(in srgb, var(--brand) 70%, var(--rule));
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .review-grid { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--s-4); }
}
@media (max-width: 640px) {
  .review-grid { grid-template-columns: 1fr; gap: var(--s-4); }
  .review-card__body { padding: var(--s-4); }
  .review-card__footer { padding: var(--s-3) var(--s-4) var(--s-4); }
  .review-card__meter { flex-wrap: wrap; gap: var(--s-2); }
}

/* ============ Reduced motion: гасим доп. трансформы (база зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .review-card,
  .review-card__img { transition: none; }
  .review-card:hover { transform: none; }
  .review-card:hover .review-card__img { transform: none; }
}

/* ===== review-checklist ===== */
/* ============================================================
 * review-checklist · block.css
 * Скоуплено на .review-checklist. Только токены (10-tokens/).
 * Конвенция разметки/JS: ★research / премиум-планка (готовой разметки нет —
 *   спроектировано по premium-сигналам + эталон casino-item-card).
 * JS: _shared/components.js, data-action="disclosure" (toggle деталей: aria-expanded
 *   + region.hidden). Анимации высоты в JS НЕТ — раскрытие через [hidden] (мгновенно),
 *   шеврон поворачивается по aria-expanded кнопки.
 * Один акцент — --brand (метр-заливка, CTA). --success/--danger/--warning ТОЛЬКО
 *   по смыслу статуса проверки (пройдено/провал/оговорка), не как декор.
 * Числа — font-variant-numeric: tabular-nums. Адаптив: 980 / 640.
 * ========================================================== */

.review-checklist {
  /* фикс-слот под статус-маркер: пункты выравнены при многострочном тексте */
  --rchk-mark: 24px;
  display: block;
  color: var(--text);
}

/* ---- Карточка-обёртка: единые surface/hairline/r-lg/shadow ---- */
.review-checklist__card {
  display: flex;
  flex-direction: column;
  gap: var(--s-5);
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- 1 · Шапка ---- */
.review-checklist__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}

.review-checklist__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  color: var(--brand);
}
.review-checklist__eyebrow-ic { display: inline-flex; flex: 0 0 auto; }

.review-checklist__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

.review-checklist__lede {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
}

/* методология-мета: «датадека» в ряд, хайрлайн-разделители между слотами */
.review-checklist__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-5);
  margin: var(--s-1) 0 0;
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.review-checklist__meta-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-left: var(--s-5);
  border-left: var(--hairline);
}
.review-checklist__meta-item:first-child { padding-left: 0; border-left: 0; }
.review-checklist__meta-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.review-checklist__meta-v {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---- 2 · Coverage-метр (dataviz, как рейтинг-бар: ширина = доля пройденного) ---- */
.review-checklist__coverage { display: flex; flex-direction: column; gap: var(--s-2); }

.review-checklist__coverage-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
}
.review-checklist__coverage-k {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.review-checklist__coverage-v {
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.review-checklist__coverage-v small { color: var(--text-faint); font-weight: var(--fw-medium); }

.review-checklist__coverage-bar {
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.review-checklist__coverage-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}

/* ---- 3 · Список проверенных критериев ---- */
.review-checklist__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.review-checklist__item {
  display: grid;
  grid-template-columns: var(--rchk-mark) minmax(0, 1fr);
  gap: var(--s-3);
  align-items: start;
  padding: var(--s-4) 0;
  border-top: var(--hairline);
}
.review-checklist__item:first-child { border-top: 0; padding-top: 0; }
.review-checklist__item:last-child { padding-bottom: 0; }

/* статус-маркер в фикс-слоте; цвет — ТОЛЬКО по смыслу проверки */
.review-checklist__mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--rchk-mark);
  height: var(--rchk-mark);
  margin-top: 1px;
  border-radius: var(--r-pill);
}
.review-checklist__item--pass   .review-checklist__mark { color: var(--success); background: var(--success-soft); }
.review-checklist__item--fail   .review-checklist__mark { color: var(--danger);  background: var(--danger-soft); }
.review-checklist__item--caveat .review-checklist__mark { color: var(--warning); background: var(--warning-soft); }

.review-checklist__body { min-width: 0; display: flex; flex-direction: column; gap: var(--s-2); }

/* критерий + статус-чип (статус читается текстом, не только цветом) */
.review-checklist__criterion {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin: 0;
  font-size: var(--t-body);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}

.review-checklist__status {
  flex: 0 0 auto;
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  line-height: var(--lh-snug);
  border-radius: var(--r-pill);
}
.review-checklist__status--pass   { color: var(--success); background: var(--success-soft); }
.review-checklist__status--fail   { color: var(--danger);  background: var(--danger-soft); }
.review-checklist__status--caveat { color: var(--warning); background: var(--warning-soft); }

.review-checklist__finding {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}

/* числа в критериях/находках/мете — табличные цифры */
.review-checklist__num {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* ---- Drawer деталей «Как проверяли» ---- */
.review-checklist__detail { margin-top: var(--s-1); }

.review-checklist__detail-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding: 0;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.review-checklist__detail-btn:hover { color: var(--brand); }
.review-checklist__detail-btn[aria-expanded="true"] { color: var(--brand); }

.review-checklist__chev {
  display: inline-flex;
  color: currentColor;
  transition: transform var(--dur-base) var(--ease-out);
}
.review-checklist__detail-btn[aria-expanded="true"] .review-checklist__chev { transform: rotate(180deg); }

.review-checklist__detail-body {
  margin-top: var(--s-2);
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border-radius: var(--r-md);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.review-checklist__detail-body[hidden] { display: none; }

/* ---- 4 · CTA (одна на блок) ---- */
.review-checklist__cta { margin-top: var(--s-1); }

/* ============ Модификатор: компактный (сайдбар / врезка) ============ */
.review-checklist--compact .review-checklist__card { padding: var(--s-4); gap: var(--s-4); }
.review-checklist--compact .review-checklist__title { font-size: var(--t-h4); }
.review-checklist--compact .review-checklist__item { padding: var(--s-3) 0; }
.review-checklist--compact .review-checklist__criterion { font-size: var(--t-small); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .review-checklist__card { padding: var(--s-5); }
}

@media (max-width: 640px) {
  .review-checklist { --rchk-mark: 22px; }
  .review-checklist__card { padding: var(--s-4); gap: var(--s-4); }

  /* мета: один столбец, разделитель становится верхним волоском */
  .review-checklist__meta { gap: var(--s-3); }
  .review-checklist__meta-item {
    flex: 1 0 auto;
    padding-left: var(--s-4);
    border-left: var(--hairline);
  }

  .review-checklist__criterion { font-size: var(--t-small); }
}

/* ============ Reduced motion: без поворота шеврона ============ */
@media (prefers-reduced-motion: reduce) {
  .review-checklist__chev { transition: none; }
}

/* ===== safety-index-pill ===== */
/* ============================================================
 * safety-index-pill · block.css
 * Скоуплено на .safety-index-pill. Только токены (10-tokens/).
 * Назначение: атом-статус — балл безопасности + уровень одной пилюлей.
 *   Уровень кодируется И цветом, И bespoke-иконкой, И текстовой меткой (не только цветом).
 * Функциональный цвет по смыслу: high=success, mid=warning, low=danger (НЕ декор-акцент).
 * Эталон нейминга/tabular-nums/drawer: casino-item-card. Конвенция: ★research / premium.
 * Адаптив: пилюля inline-flex, не ломается; touch-таргеты у интеракт-кнопки ≥ --tap-min.
 * ========================================================== */

.safety-index-pill {
  /* локальный «канал статуса»: дефолт-нейтраль, переопределяется модификатором уровня */
  --sip-fg: var(--text-dim);
  --sip-bg: var(--bg-2);
  --sip-edge: color-mix(in srgb, var(--text-dim) 22%, transparent);

  /* мягкое свечение каналом статуса (тонко; усиливается у --solid) */
  --sip-glow: 0 2px 10px -4px color-mix(in srgb, var(--sip-fg) 40%, transparent);

  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-1) var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-small);
  line-height: 1;
  color: var(--sip-fg);
  /* state-soft + тонкий верхний световой блик (premium-depth, не плоско) */
  background-color: var(--sip-bg);
  background-image: linear-gradient(180deg, color-mix(in srgb, var(--surface) 26%, transparent), transparent 62%);
  border: 1px solid var(--sip-edge);
  border-radius: var(--r-pill);
  box-shadow: var(--sip-glow), inset 0 1px 0 color-mix(in srgb, var(--surface) 45%, transparent);
  white-space: nowrap;
  vertical-align: middle;
}

.safety-index-pill__glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  color: var(--sip-fg);
}

.safety-index-pill__score {
  font-family: var(--font-mono);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  letter-spacing: .01em;
}
.safety-index-pill__scale {
  margin-left: -2px;
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: color-mix(in srgb, var(--sip-fg) 70%, transparent);
  font-variant-numeric: tabular-nums;
}

/* разделитель — точка в цвете канала */
.safety-index-pill__sep {
  width: 3px; height: 3px;
  flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: currentColor;
  opacity: .5;
}

.safety-index-pill__level {
  font-weight: var(--fw-semi);
  letter-spacing: .01em;
}

/* ============================================================
 * Уровни — функциональный цвет ПО СМЫСЛУ (state-токены).
 * Фон — мягкий state-soft, текст/иконка — насыщенный state (контраст AA).
 * ========================================================== */
.safety-index-pill--high {
  --sip-fg: var(--success);
  --sip-bg: var(--success-soft);
  --sip-edge: color-mix(in srgb, var(--success) 30%, transparent);
}
.safety-index-pill--mid {
  --sip-fg: var(--warning);
  --sip-bg: var(--warning-soft);
  --sip-edge: color-mix(in srgb, var(--warning) 32%, transparent);
}
.safety-index-pill--low {
  --sip-fg: var(--danger);
  --sip-bg: var(--danger-soft);
  --sip-edge: color-mix(in srgb, var(--danger) 30%, transparent);
}
/* нейтральный уровень (нет данных / N/A) — остаётся на дефолт-канале */
.safety-index-pill--na {
  --sip-fg: var(--text-mute);
  --sip-bg: var(--bg-2);
  --sip-edge: var(--rule);
}

/* ============================================================
 * Размеры
 * ========================================================== */
.safety-index-pill--sm {
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
}
.safety-index-pill--lg {
  gap: var(--s-2);
  padding: var(--s-2) var(--s-4);
  font-size: var(--t-body);
}

/* solid-вариант (для тёмных/цветных подложек): насыщенная заливка + on-brand-текст */
.safety-index-pill--solid {
  color: var(--on-brand);
  /* лёгкий объёмный градиент заливки + усиленный glow канала статуса */
  background-color: var(--sip-fg);
  background-image: linear-gradient(180deg, color-mix(in srgb, #fff 16%, transparent), transparent 60%);
  border-color: transparent;
  box-shadow:
    0 6px 18px -6px color-mix(in srgb, var(--sip-fg) 60%, transparent),
    inset 0 1px 0 color-mix(in srgb, #fff 28%, transparent);
}
.safety-index-pill--solid .safety-index-pill__glyph,
.safety-index-pill--solid .safety-index-pill__scale { color: inherit; }
.safety-index-pill--solid .safety-index-pill__scale { opacity: .82; }

/* ============================================================
 * Композиция: пилюля + «Почему»-drawer (основание оценки)
 * ========================================================== */
.safety-index-pill__wrap {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) var(--s-3);
  font-family: var(--font-body);
}
.safety-index-pill__why {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding: 0 var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.safety-index-pill__why:hover { color: var(--brand); }
.safety-index-pill__chevron { transition: transform var(--dur-base) var(--ease); }
.safety-index-pill__why[aria-expanded="true"] .safety-index-pill__chevron { transform: rotate(180deg); }

.safety-index-pill__basis {
  flex-basis: 100%;
  margin-top: var(--s-1);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
  /* frosted-стекло-панель основания оценки + статус-акцент слева */
  background: var(--glass-bg);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  border: 1px solid var(--glass-border);
  border-left: 3px solid var(--rule-strong);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
}
.safety-index-pill__basis[hidden] { display: none; }

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .safety-index-pill__basis { padding: var(--s-3); }
}

/* ===== scorecard ===== */
/* ============================================================
 * scorecard · block.css
 * Карточка оценок по критериям: агрегат-балл + dataviz-мера на критерий.
 * Скоуплено на .scorecard. Только токены (10-tokens/).
 * Конвенция: ★research (премиум-сигналы) + паттерн рейтинг-бара html-rating-guide.
 * Адаптив: 980 / 640. JS: components.js (disclosure drawer) — прогрессивно.
 * ========================================================== */

.scorecard {
  --sc-track-h: 8px;          /* высота меры критерия (не отступ — локальный геом-параметр) */
  --sc-label-w: 168px;        /* фикс-слот лейбла критерия → меры выровнены по левому краю */

  display: flex;
  flex-direction: column;
  gap: var(--s-5);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- Шапка: заголовок + агрегат-балл (фикс-слот справа) ---- */
.scorecard__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-4) var(--s-5);
  padding-bottom: var(--s-5);
  border-bottom: var(--hairline);
}
.scorecard__heading { display: flex; flex-direction: column; gap: var(--s-1); min-width: 0; }
.scorecard__eyebrow {
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .12em; text-transform: uppercase; color: var(--text-mute);
}
.scorecard__title {
  margin: 0;
  font-family: var(--font-display); font-size: var(--t-h3);
  font-weight: var(--fw-bold); line-height: var(--lh-snug); color: var(--text);
}

/* Агрегат-балл */
.scorecard__overall { display: flex; align-items: baseline; gap: var(--s-2); }
.scorecard__overall-num {
  font-family: var(--font-display); font-size: var(--t-h1);
  font-weight: var(--fw-bold); line-height: 1; color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.scorecard__overall-scale {
  font-size: var(--t-h4); font-weight: var(--fw-medium); color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.scorecard__overall-tag {
  align-self: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--brand); background: var(--brand-soft);
  border-radius: var(--r-pill); white-space: nowrap;
}

/* ---- Список критериев ---- */
.scorecard__criteria { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-4); }

.scorecard__row {
  display: grid;
  grid-template-columns: var(--sc-label-w) minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-3) var(--s-4);
}
.scorecard__crit { font-size: var(--t-small); font-weight: var(--fw-medium); color: var(--text-dim); min-width: 0; }

/* Мера критерия — источник истины: --val 0..10 в inline style на .scorecard__row */
.scorecard__meter {
  position: relative;
  height: var(--sc-track-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.scorecard__meter-fill {
  display: block; height: 100%; border-radius: inherit;
  width: calc(var(--val, 0) * 10%);
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease);
}
.scorecard__val {
  font-size: var(--t-small); font-weight: var(--fw-semi); color: var(--text);
  font-variant-numeric: tabular-nums; text-align: right; min-width: 4ch;
}
.scorecard__val small { color: var(--text-faint); font-weight: var(--fw-medium); }

/* ---- Drawer методологии/деталей (держит карточку чистой) ---- */
.scorecard__details { border-top: var(--hairline); padding-top: var(--s-4); }
.scorecard__details-btn {
  display: inline-flex; align-items: center; gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small); font-weight: var(--fw-medium); color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.scorecard__details-btn:hover { color: var(--brand); }
.scorecard__details-chev { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.scorecard__details-btn[aria-expanded="true"] .scorecard__details-chev { transform: rotate(180deg); }

.scorecard__drawer {
  margin-top: var(--s-3);
  padding: var(--s-4);
  font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-dim);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.scorecard__drawer[hidden] { display: none; }
.scorecard__drawer p { margin: 0; }
.scorecard__drawer p + p { margin-top: var(--s-2); }

/* ---- Подвал: ОДНА CTA на карточку ---- */
.scorecard__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--s-4); flex-wrap: wrap; }
.scorecard__verdict { font-size: var(--t-small); color: var(--text-mute); line-height: var(--lh-snug); min-width: 0; flex: 1 1 240px; }
.scorecard__cta { flex: 0 0 auto; }

/* ============ Вариант: компактный (сайдбар/врезка) ============ */
.scorecard--compact {
  --sc-label-w: 132px;
  gap: var(--s-4); padding: var(--s-4);
}
.scorecard--compact .scorecard__head { padding-bottom: var(--s-4); }
.scorecard--compact .scorecard__title { font-size: var(--t-h4); }
.scorecard--compact .scorecard__overall-num { font-size: var(--t-h2); }
.scorecard--compact .scorecard__criteria { gap: var(--s-3); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .scorecard { --sc-label-w: 148px; }
}
@media (max-width: 640px) {
  .scorecard { padding: var(--s-4); gap: var(--s-4); }
  .scorecard__head {
    grid-template-columns: 1fr;
    gap: var(--s-3);
  }
  .scorecard__overall { justify-content: flex-start; }
  /* Критерий: лейбл + балл в строку над мерой (мера на всю ширину) */
  .scorecard__row {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "crit val"
      "meter meter";
    gap: var(--s-2) var(--s-3);
  }
  .scorecard__crit  { grid-area: crit; }
  .scorecard__val   { grid-area: val; }
  .scorecard__meter { grid-area: meter; }
  .scorecard__foot { flex-direction: column; align-items: stretch; }
  .scorecard__cta .btn { width: 100%; }
}

/* ===== search-box ===== */
/* ============================================================
 * search-box · block.css
 * Скоуплено на .search-box / .sb-*. Только токены (10-tokens/).
 * Лёгкий поиск-примитив (иконка + input). Один акцент (--brand).
 * Конвенция полей/JS: html-rating-guide (name="q", live-filter). Адаптив: 640.
 * ========================================================== */

.search-box {
  --sb-h: var(--tap-min);            /* высота контрола = touch-target (44px) */
  margin: 0;
  max-width: 480px;
}

/* ---- Поле: единая «коробка» вокруг иконки + input + кнопок ---- */
.sb-field {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  height: var(--sb-h);
  padding-inline: var(--s-3);
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  color: var(--text-faint);
  cursor: text;
  transition: border-color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease),
              box-shadow var(--dur-quick) var(--ease);
}
.sb-field:hover { border-color: var(--rule-strong); }
.sb-field:focus-within {
  background: var(--surface);
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-soft);
}

/* ---- Иконка-лупа (декоративная, ведущая) ---- */
.sb-icon {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}
.sb-field:focus-within .sb-icon { color: var(--brand); }

/* ---- Input (нейтрализуем системный вид, наследуем токены) ---- */
.sb-input {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  font-family: var(--font-body);
  font-size: var(--t-small);
  color: var(--text);
  appearance: none;
  -webkit-appearance: none;
}
.sb-input::placeholder { color: var(--text-faint); opacity: 1; }
.sb-input:focus { outline: none; }   /* фокус-кольцо рисует .sb-field:focus-within */

/* убрать нативный «крестик»/decoration у type=search (своя кнопка очистки) */
.sb-input[type="search"]::-webkit-search-decoration,
.sb-input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; }

/* ---- Кнопка очистки (нативный type=reset) ---- */
.sb-clear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  padding: 0;
  color: var(--text-faint);
  background: transparent;
  border: 0;
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.sb-clear:hover { color: var(--text); background: var(--bg-3); }

/* очистка видна только при заполненном поле:
   пока показан placeholder (поле пустое) — скрыта без скачка ширины */
.sb-field:has(.sb-input:placeholder-shown) .sb-clear {
  width: 0;
  opacity: 0;
  pointer-events: none;
  margin-inline-start: calc(-1 * var(--s-2));
}

/* ---- Сабмит ---- */
.sb-submit {
  flex: 0 0 auto;
  min-height: calc(var(--sb-h) - var(--s-3));   /* вписан в «коробку» с отступом */
  align-self: center;
}
/* вариант кнопки-иконки (для шапки): круглая, только лупа */
.sb-submit--icon {
  width: calc(var(--sb-h) - var(--s-3));
  height: calc(var(--sb-h) - var(--s-3));
  min-height: 0;
  padding: 0;
  border-radius: var(--r-pill);
}

/* ============ Вариант: --header (компактный, на тёмной/узкой шапке) ============ */
.search-box--header { --sb-h: 40px; max-width: 320px; }
.search-box--header .sb-field { padding-inline: var(--s-2) var(--s-2); }

/* ============ Вариант: --block (на всю ширину контейнера/секции) ============ */
.search-box--block { max-width: none; }

/* ============ Демо-каталог (живой поиск) — иллюстративно ============ */
.sb-demo-list {
  list-style: none;
  margin: var(--s-4) 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
}
.sb-demo-item {
  padding: var(--s-2) var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-dim);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
}
.sb-demo-item[hidden] { display: none; }

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .search-box { max-width: none; }
  /* на узком экране текстовый сабмит схлопывается в иконку, чтобы не теснить input */
  .sb-submit:not(.sb-submit--icon) {
    width: calc(var(--sb-h) - var(--s-3));
    padding: 0;
    border-radius: var(--r-pill);
    color: transparent;       /* прячем текст, оставляем кликабельную область */
    position: relative;
  }
  .sb-submit:not(.sb-submit--icon)::after {
    content: "";
    position: absolute; inset: 0;
    background-color: var(--on-brand);
    -webkit-mask: var(--sb-search-mask) center / 18px no-repeat;
            mask: var(--sb-search-mask) center / 18px no-repeat;
  }
}

/* инлайн-маска лупы для мобильного сабмита (без icon-font, чистый SVG-data-uri) */
.search-box {
  --sb-search-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.4-3.4'/%3E%3C/svg%3E");
}

/* ===== secondary-news-rail ===== */
/* ============================================================
 * secondary-news-rail · block.css
 * Скоуплено на .secondary-news-rail. Только токены (10-tokens/).
 * Owns: заголовок-блок + вертикальный список новостных строк с фикс-слотом миниатюры,
 *       рубрикой-чипом, заголовком (clamp 2 строки) и метой (дата · время чтения).
 * Whole-row link: .snr-item__link::after { inset:0 } — вся строка кликабельна одним
 *       фокус-стопом; дублирующая медиа-ссылка aria-hidden + tabindex="-1".
 * Один акцент --brand (рубрика/hover/focus); рубрики-state по смыслу (бонус/алерт).
 * Конвенция house-style: нейминг/слоты как related-rail/blog-card; ориентир casino-item-card.
 * CSS-only, JS не требуется. Адаптив: 980 / 640.
 * ========================================================== */

.secondary-news-rail {
  --snr-thumb: 88px;   /* фикс-слот миниатюры */
}

/* ---- Заголовок ленты ---- */
.secondary-news-rail__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-4);
  padding-bottom: var(--s-3);
  border-bottom: var(--hairline);
}
.secondary-news-rail__heading { min-width: 0; }
.secondary-news-rail__head .eyebrow { margin: 0 0 var(--s-1); }
.secondary-news-rail__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  line-height: var(--lh-snug);
  color: var(--text);
}
.secondary-news-rail__all {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  text-decoration: none;
  white-space: nowrap;
}
.secondary-news-rail__all-ic { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease-out); }
.secondary-news-rail__all:hover .secondary-news-rail__all-ic,
.secondary-news-rail__all:focus-visible .secondary-news-rail__all-ic { transform: translateX(3px); }

/* ---- Список ---- */
.secondary-news-rail__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

/* ---- Строка-новость ---- */
.snr-item {
  position: relative;
  display: grid;
  grid-template-columns: var(--snr-thumb) 1fr;
  gap: var(--s-4);
  align-items: center;
  padding: var(--s-4) 0;
  border-bottom: var(--hairline);
  transition: background var(--dur-quick) var(--ease);
}
.snr-item:last-child { border-bottom: 0; }
.snr-item:hover {
  background: var(--bg-2);
  /* лёгкий «вынос» за счёт паддинга-обёртки */
  box-shadow: 0 0 0 var(--s-3) var(--bg-2);
  border-radius: var(--r-md);
}

/* ---- Фикс-слот миниатюры ---- */
.snr-item__media {
  grid-column: 1;
  display: block;
  width: var(--snr-thumb);
  aspect-ratio: 4 / 3;
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--bg-3);
}
.snr-item__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--dur-base) var(--ease-out);
}
.snr-item:hover .snr-item__img { transform: scale(1.05); }

.snr-item__media--fallback {
  position: relative;
  background:
    radial-gradient(120% 120% at 30% 20%, color-mix(in srgb, var(--brand) 16%, transparent), transparent 60%),
    var(--bg-3);
}
.snr-item__media--fallback::after {
  content: attr(data-initial);
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--brand);
}

/* ---- Тело строки ---- */
.snr-item__body {
  grid-column: 2;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}

.snr-item__kind {
  align-self: flex-start;
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.snr-item__kind--bonus { color: var(--success); background: var(--success-soft); }
.snr-item__kind--alert { color: var(--danger); background: var(--danger-soft); }

.snr-item__heading {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
}
.snr-item__link {
  color: var(--text);
  text-decoration: none;
  /* whole-row link: растягиваем кликабельную зону на всю строку */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  transition: color var(--dur-quick) var(--ease);
}
.snr-item__link::after { content: ""; position: absolute; inset: 0; }
.snr-item:hover .snr-item__link,
.snr-item__link:focus-visible { color: var(--brand); }

.snr-item__meta {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-tiny);
  color: var(--text-mute);
}
.snr-item__date { color: var(--text-mute); font-variant-numeric: tabular-nums; }
.snr-item__dot { color: var(--text-faint); }
.snr-item__read { color: var(--text-faint); }
.snr-item__read-n { font-variant-numeric: tabular-nums; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .secondary-news-rail__title { font-size: var(--t-h3); }
}
@media (max-width: 640px) {
  .secondary-news-rail { --snr-thumb: 72px; }
  .snr-item { gap: var(--s-3); padding: var(--s-3) 0; }
  .snr-item:hover { box-shadow: 0 0 0 var(--s-2) var(--bg-2); }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .snr-item__img { transition: none; }
}

/* ===== show-all ===== */
/* ============================================================
 * show-all · block.css
 * Слот-кнопка «Показать все» (раскрыть .is-more). Скоуплено на .show-all.
 * Кнопка переиспользует примитив .btn.btn--outline (base.css) — здесь только
 * центрирование слота, счётчик и стрелка. Только токены (10-tokens/). Адаптив: 640.
 * ========================================================== */

/* ---- Слот: центрирует CTA, дышит над/под списком ---- */
.show-all {
  display: flex;
  justify-content: center;
  padding-block: var(--s-2);
}

/* Раскрыто (JS ставит .is-done) — слот убирается из потока */
.show-all.is-done { display: none; }

/* ---- Кнопка (поверх .btn.btn--outline) ---- */
.show-all__btn { gap: var(--s-3); }

/* Счётчик скрытых — нейтральная «пилюля», табличные цифры */
.show-all__count {
  display: inline-flex; align-items: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-pill);
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.show-all__btn:hover .show-all__count {
  color: var(--brand);
  background: var(--brand-soft);
}

/* Стрелка-шеврон (bespoke SVG): лёгкий сдвиг вниз при ховере, разворот при раскрытии */
.show-all__ic {
  display: inline-flex;
  transition: transform var(--dur-base) var(--ease);
}
.show-all__btn:hover .show-all__ic { transform: translateY(2px); }
.show-all__btn[aria-expanded="true"] .show-all__ic { transform: rotate(180deg); }

/* ---- Адаптив ---- */
@media (max-width: 640px) {
  .show-all__btn { width: 100%; }            /* CTA на всю ширину на мобайле */
  .show-all--sm .show-all__btn { width: auto; }
}

/* ===== similar-slots-rail ===== */
/* ============================================================
 * similar-slots-rail · block.css
 * Скоуплено на .similar-slots (лента «Похожие слоты»). Только токены (10-tokens/).
 * Owns: заголовок-блок (eyebrow + H2 + опц. «смотреть все») + ГОРИЗОНТАЛЬНЫЙ
 *       рельс со scroll-snap. Карточку НЕ описывает — переиспускает slot-card
 *       (.slot-card / .sc__*); этот файл задаёт только ширину снап-ячейки.
 * Десктоп: 4–6 карточек в видимой области (фикс-ширина ячейки --ss-card).
 * Мобайл: свайп-карусель (scroll-snap), карточка ≈ 78vw — «подглядывает» след.
 * Один акцент — --brand (стрелка «все» + фокус). Числа в карточке — tabular-nums.
 * Конвенция house-style: нейминг/слоты как related-rail; ориентир casino-item-card.
 * CSS-only, JS не требуется (нативная прокрутка + scroll-snap). Адаптив: 980 / 640.
 * ========================================================== */

.similar-slots {
  --ss-card: 248px;          /* фикс-ширина снап-ячейки (десктоп: ~5–6 видны) */
  --ss-gap: var(--s-5);      /* шаг между карточками = шаг снапа */
  --ss-fade: var(--s-7);     /* ширина edge-fade у краёв рельса */
}

/* ---- Заголовок ленты (как related-rail) ---- */
.similar-slots__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-6);
}
.similar-slots__heading { min-width: 0; }
.similar-slots__head .eyebrow { margin: 0 0 var(--s-2); }
.similar-slots__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}

/* «Смотреть все» — текстовая ссылка, не вторая кнопка-акцент */
.similar-slots__all {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  text-decoration: none;
  white-space: nowrap;
  transition: gap var(--dur-quick) var(--ease);
}
.similar-slots__all-ic {
  flex: 0 0 auto;
  transition: transform var(--dur-quick) var(--ease-out);
}
.similar-slots__all:hover .similar-slots__all-ic,
.similar-slots__all:focus-visible .similar-slots__all-ic { transform: translateX(3px); }

/* ============================================================
 * Горизонтальный рельс (scroll-snap)
 * Прокрутка нативная: свайп / трекпад / колесо / клавиши при фокусе на ссылке.
 * Bleed на ширину гаттера, чтобы крайние карточки доходили до края экрана,
 * а заголовок оставался выровнен по .container. Снап-выравнивание учитывает гаттер.
 * ========================================================== */
.similar-slots__track {
  list-style: none;
  margin: 0;
  /* bleed за пределы .container на величину гаттера слева/справа */
  margin-inline: calc(-1 * var(--gutter));
  padding-inline: var(--gutter);
  /* вертикальные паддинги — место под hover-lift и тень, без обрезки */
  padding-block: var(--s-2);

  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: var(--ss-card);
  gap: var(--ss-gap);

  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: var(--gutter);
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--rule-strong) transparent;

  /* edge-fade: подсказка «есть ещё» — маской, без лишних элементов */
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--ss-fade), #000 calc(100% - var(--ss-fade)), transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 var(--ss-fade), #000 calc(100% - var(--ss-fade)), transparent 100%);
}

/* Кастомный скроллбар (WebKit) — в тон нейтралям, тонкий */
.similar-slots__track::-webkit-scrollbar { height: 8px; }
.similar-slots__track::-webkit-scrollbar-track { background: transparent; }
.similar-slots__track::-webkit-scrollbar-thumb {
  background: var(--rule);
  border-radius: var(--r-pill);
}
.similar-slots__track:hover::-webkit-scrollbar-thumb { background: var(--rule-strong); }

/* Ячейка-снап: каждая карточка — точка привязки */
.similar-slots__cell {
  scroll-snap-align: start;
  scroll-snap-stop: always;
  display: flex;       /* slot-card растягивается на ширину ячейки (width:100%) */
  min-width: 0;
}

/* ---- Модификатор: плотнее (узкая ячейка, меньше шаг) ---- */
.similar-slots--tight {
  --ss-card: 220px;
  --ss-gap: var(--s-4);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .similar-slots { --ss-card: 230px; --ss-gap: var(--s-4); }
  .similar-slots--tight { --ss-card: 210px; }
}
@media (max-width: 640px) {
  /* Свайп-карусель: карточка «подглядывает» следующую (peek) */
  .similar-slots,
  .similar-slots--tight { --ss-card: 78vw; --ss-fade: var(--s-5); }
  .similar-slots__title { font-size: var(--t-h3); }
  .similar-slots__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-2);
    margin-bottom: var(--s-5);
  }
  /* Узкий экран: ограничим ширину карточки, чтобы не «съедала» весь вьюпорт */
  .similar-slots__track { grid-auto-columns: min(var(--ss-card), 320px); }
}

/* ============ Reduced motion: гасим плавный скролл (база зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .similar-slots__track { scroll-behavior: auto; }
}

/* ===== skip-link ===== */
/* ============================================================
 * skip-link · block.css
 * Скоуплено на .skip-link. Только токены (10-tokens/).
 * Конвенция: html-base (skip-link примитив) + premium-планка. JS: нет.
 *
 * Базовый base.css задаёт минимальный одиночный `.skip-link` (одна <a>).
 * Здесь корневой класс — это <nav class="skip-link"> (контейнер группы
 * bypass-ссылок), поэтому правило позиционирования НАМЕРЕННО переобъявлено
 * на контейнере: всю геометрию/раскрытие владеет этот блок. Сами ссылки —
 * .skip-link__link (не пересекаются с base-правилом для голой <a>).
 * Раскрытие — по :focus-within (без JS). Motion функц.; reduced-motion из base
 * (там --dur-* → 0ms), поэтому отдельной обёртки не нужно.
 * ========================================================== */

.skip-link {
  /* фикс-слот раскрытой планки у верхнего края */
  --sl-top: var(--s-3);

  position: absolute;
  inset-block-start: 0;
  inset-inline-start: var(--s-3);
  z-index: var(--z-toast);          /* над фикс-шапкой (--z-header) и всем chrome */

  /* стартовое (скрытое) состояние: уведена за верхнюю кромку, но в таб-порядке */
  transform: translateY(-100%);
  opacity: 0;
  pointer-events: none;             /* не перехватывает клики, пока скрыта */
  transition:
    transform var(--dur-base) var(--ease),
    opacity var(--dur-quick) var(--ease);
}

/* По первому Tab любой внутренней ссылке — планка всплывает.
   :focus-within покрывает фокус на самой ссылке; страховка для старых
   движков — .skip-link__link:focus поднимает контейнер. */
.skip-link:focus-within {
  transform: translateY(var(--sl-top));
  opacity: 1;
  pointer-events: auto;
}

/* ---- Список ссылок (фикс-слоты, единые pad/radius/shadow) ---- */
.skip-link__list {
  list-style: none;
  margin: 0;
  padding: var(--s-1);
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-1);

  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
}

.skip-link__item { display: block; }

/* ---- Ссылка (нативная <a>, touch-target ≥ --tap-min) ---- */
.skip-link__link {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding-inline: var(--s-4);

  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  line-height: var(--lh-tight);
  letter-spacing: .01em;
  white-space: nowrap;
  text-decoration: none;

  color: var(--text);
  background: transparent;
  border-radius: var(--r-soft);
  transition:
    background var(--dur-quick) var(--ease),
    color var(--dur-quick) var(--ease);
}

/* Один акцент (--brand): hover/фокус заливают мягким brand-фоном. */
.skip-link__link:hover,
.skip-link__link:focus-visible {
  color: var(--brand);
  background: var(--brand-soft);
  text-decoration: none;
}

/* :focus-visible наследуется из base — толщину/видимость не трогаем,
   только смещаем ринг внутрь скруглённого слота. */
.skip-link__link:focus-visible { outline-offset: 0; }

/* ---- Иконка (bespoke SVG, декор) ---- */
.skip-link__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}
.skip-link__icon svg { display: block; }
.skip-link__link:hover .skip-link__icon,
.skip-link__link:focus-visible .skip-link__icon { color: var(--brand); }

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .skip-link {
    inset-inline: var(--s-2);
    --sl-top: var(--s-2);
  }
  /* на узком экране — вертикальный стек, планка тянется по ширине */
  .skip-link__list { flex-direction: column; align-items: stretch; }
  .skip-link__link { justify-content: flex-start; }
}

/* ===== slot-card ===== */
/* ============================================================
 * slot-card · block.css
 * Скоуплено на .slot-grid (обёртка-грид) и .slot-card / .sc-* (карточка).
 * Только токены (10-tokens/). Конвенция разметки/JS: html-slots (+ html-base).
 * Адаптив-грид: 3 кол. / 2 (≤980) / 1 (≤640). Числа — tabular-nums.
 * Визуал: премиум-глубина (surface-grad + shadow-card с верхним хайлайтом),
 *         hover = lift + brand-glow + brand-бордер. Эффекты через токены →
 *         работают на всех скинах (вкл. midnight-crypto).
 * ========================================================== */

/* ============ Грид-обёртка (3 / 2 / 1) ============ */
.slot-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-5);
}
.slot-grid__cell { display: flex; }

/* ============ Карточка ============ */
.slot-card {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  background-color: var(--surface);
  background-image: var(--surface-grad);          /* тонкий градиент-оверлей сверху */
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);                 /* глубина + inset верхний хайлайт */
  overflow: hidden;
  transition:
    box-shadow var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out);
}
.slot-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-pop), var(--shadow-glow);   /* lift + мягкое свечение акцентом */
  border-color: color-mix(in srgb, var(--brand) 45%, var(--rule));
}

/* ---- Cover (ссылка-обёртка на обзор) ---- */
.sc__cover-link {
  display: block;
  text-decoration: none;
  color: inherit;
}
.sc__cover {
  position: relative;
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--bg-2);
  border-bottom: var(--hairline);
}
.sc__cover-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--dur-slow) var(--ease-out);
}
.slot-card:hover .sc__cover-img { transform: scale(1.05); }

/* Fallback: фирменный градиент + инициал слота вместо картинки.
   Внутренний радиальный glow добавляет глубину поверх grad-brand. */
.sc__cover--fallback {
  background-image:
    radial-gradient(75% 110% at 88% -12%, color-mix(in srgb, var(--on-brand) 24%, transparent), transparent 56%),
    var(--grad-brand);
}
.sc__cover--fallback::after {
  content: attr(data-initial);
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: color-mix(in srgb, var(--on-brand) 88%, transparent);
  text-shadow: 0 2px 12px color-mix(in srgb, var(--brand) 40%, transparent);
}

/* ---- NEW-бейдж (поверх cover) — мягкое стекло + glow акцентом ---- */
.sc__badge {
  position: absolute;
  top: var(--s-2);
  left: var(--s-2);
  z-index: var(--z-base);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: 0.06em;
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.sc__badge-ic { display: inline-flex; }
.sc__badge--new {
  color: var(--text);
  background: var(--gold);
  box-shadow:
    var(--border-highlight),
    0 6px 18px -8px color-mix(in srgb, var(--gold) 60%, transparent);
}

/* ============ Тело ============ */
.sc__body {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding: var(--s-4);
}

/* ---- Имя (ссылка на обзор) ---- */
.sc__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.sc__name-link {
  color: var(--text);
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
.sc__name-link:hover { color: var(--brand); }

/* ---- Мета: провайдер + RTP в одну строку ---- */
.sc__meta {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-3);
  margin-top: auto;
}
.sc__provider {
  min-width: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.sc__provider-k {
  font-size: var(--t-tiny);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.sc__provider-v {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  line-height: var(--lh-snug);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ---- RTP (tabular-nums) ---- */
.sc__rtp {
  flex: 0 0 auto;
  margin: 0;
  text-align: right;
}
.sc__rtp-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.sc__rtp-v {
  margin: 2px 0 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  line-height: var(--lh-snug);
  font-variant-numeric: tabular-nums;
}
.sc__rtp-v small {
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .slot-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--s-4);
  }
}
@media (max-width: 640px) {
  .slot-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--s-4);
  }
  .sc__cover { aspect-ratio: 16 / 9; }
}

/* ============ Reduced motion: гасим доп. трансформы (база зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .slot-card,
  .sc__cover-img { transition: none; }
  .slot-card:hover { transform: none; }
  .slot-card:hover .sc__cover-img { transform: none; }
}

/* ===== slot-release-countdown ===== */
/* ============================================================
 * slot-release-countdown · block.css  (scope: .slot-countdown)
 * Только токены (10-tokens/). Назначение: карточка-таймер до релиза слота
 *   (медиа + название/провайдер + табло дни:часы:мин:сек + статическая дата + ОДНА CTA).
 * Прогрессивно: статическая дата видна всегда; сегменты предзаполнены (JS опц. их обновляет).
 * Премиум: один акцент --brand, фикс-слот медиа + bespoke SVG, ОДНА главная CTA (вторая — тихая ссылка),
 *   единые padding/radius/shadow, сегменты-табло вместо «горящих» эмодзи, tabular-nums, subtle motion.
 * Эталон поверхности/нейминга/фикс-слотов/fake-link: casino-item-card. Адаптив: 980 / 640.
 * ========================================================== */

.slot-countdown {
  --scd-media: 160px;         /* фикс-ширина медиа-колонки (десктоп) */
  --scd-seg: 60px;            /* фикс-ширина сегмента табло */

  display: grid;
  grid-template-columns: var(--scd-media) minmax(0, 1fr);
  align-items: stretch;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  font-family: var(--font-body);
  color: var(--text);
}

/* ---- Медиа-колонка: фикс-слот, bespoke SVG арт (не сток-фото) ---- */
.slot-countdown__media {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--s-5);
  background:
    radial-gradient(140% 120% at 50% 0%, var(--brand-soft), transparent 70%),
    var(--bg-2);
  border-inline-end: var(--hairline);
  color: var(--brand);
}
.slot-countdown__art { display: inline-flex; }
.slot-countdown__badge {
  position: absolute;
  top: var(--s-3);
  inset-inline-start: var(--s-3);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
}

/* ---- Тело ---- */
.slot-countdown__body {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  padding: var(--s-6);
}
.slot-countdown__eyebrow { margin: 0; }
.slot-countdown__title { margin: 0; font-size: var(--t-h2); line-height: var(--lh-snug); }
.slot-countdown__provider { margin: 0; font-size: var(--t-small); }
.slot-countdown__provider-name { color: var(--text-dim); font-weight: var(--fw-semi); }

/* ---- Табло обратного отсчёта ---- */
.slot-countdown__clock {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
  margin: var(--s-3) 0 var(--s-1);
}
.slot-countdown__seg {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-1);
  min-width: var(--scd-seg);
}
.slot-countdown__num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: var(--s-2) var(--s-1);
  font-family: var(--font-mono);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
  font-feature-settings: "tnum" 1;
}
.slot-countdown__unit {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.slot-countdown__colon {
  align-self: center;
  margin-top: -14px;          /* выровнять двоеточие к центру цифр, не подписей */
  font-family: var(--font-mono);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--text-faint);
  line-height: 1;
}

/* ---- Статическая дата (единый источник, виден всегда) ---- */
.slot-countdown__date {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  font-size: var(--t-small);
  color: var(--text-mute);
}
.slot-countdown__date-ic { flex: 0 0 auto; color: var(--text-faint); }
.slot-countdown__date time { color: var(--text-dim); font-weight: var(--fw-semi); font-variant-numeric: tabular-nums; }

/* ---- Действия: ОДНА главная CTA + тихая вторичная ссылка ---- */
.slot-countdown__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-3) var(--s-5);
  margin-top: var(--s-4);
}
.slot-countdown__cta { flex: 0 0 auto; }
.slot-countdown__secondary {
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-color: color-mix(in srgb, var(--text-mute) 40%, transparent);
  transition: color var(--dur-quick) var(--ease);
}
.slot-countdown__secondary:hover { color: var(--brand); text-decoration-color: var(--brand); }

/* ============================================================
 * Состояние: релиз состоялся (JS ставит .is-released, когда дедлайн прошёл).
 * Без JS не активируется — табло остаётся предзаполненным. Смысл — текстом badge, не только цветом.
 * ========================================================== */
.slot-countdown.is-released .slot-countdown__clock { display: none; }
.slot-countdown.is-released .slot-countdown__badge { background: var(--success); }

/* ============================================================
 * Модификаторы
 * ========================================================== */

/* --compact — узкая врезка/сайдбар: складывается в одну колонку, табло мельче */
.slot-countdown--compact { --scd-seg: 52px; }
.slot-countdown--compact .slot-countdown__num { font-size: var(--t-h3); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .slot-countdown { --scd-media: 128px; }
  .slot-countdown__body { padding: var(--s-5); }
}
@media (max-width: 640px) {
  /* медиа уходит наверх лентой, тело — во всю ширину */
  .slot-countdown {
    grid-template-columns: 1fr;
    --scd-seg: 0px;            /* сегменты тянутся равномерно (1fr ниже) */
  }
  .slot-countdown__media {
    border-inline-end: none;
    border-bottom: var(--hairline);
    padding: var(--s-4);
  }
  .slot-countdown__body { padding: var(--s-4); }
  .slot-countdown__title { font-size: var(--t-h3); }
  .slot-countdown__clock { gap: var(--s-1); }
  .slot-countdown__seg { min-width: 0; flex: 1 1 0; }
  .slot-countdown__num { font-size: var(--t-h3); padding: var(--s-2) 2px; }
  .slot-countdown__actions { gap: var(--s-3); }
  .slot-countdown__cta { width: 100%; }
}

/* ===== slot-spec-grid ===== */
/* ============================================================
 * slot-spec-grid · block.css
 * Скоуплено на .slot-spec-grid. Только токены (10-tokens/).
 * Конвенция: html-slots (характеристики слота) поверх premium-планки;
 *   поверхность/радиус/тень — как эталон casino-item-card.
 * Один акцент — --brand (иконки спеков, шкала волатильности, единственная CTA).
 *   Функциональный цвет НЕ используется как декор — волатильность нейтральна
 *   (это не «хорошо/плохо», а уровень), красится --brand с убыванием прозрачности.
 * Числа (RTP/линии/выигрыш/ставки/год) — font-variant-numeric: tabular-nums.
 * Деталь (пейтейбл/диапазон ставок) — нативный <details>, держит карточку чистой.
 * Адаптив: 980 / 640.
 * ========================================================== */

.slot-spec-grid {
  /* фикс-слот иконки — единый ритм всех ячеек спеков (premium) */
  --ssg-ic: 36px;
  /* минимальная ширина ячейки спека — держит грид от «слипания» */
  --ssg-col-min: 150px;

  display: flow-root;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text);
}

/* ---- Шапка: заголовок + провайдер-чип + пометка «демо» ---- */
.slot-spec-grid__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  flex-wrap: wrap;
  margin-bottom: var(--s-5);
  padding-bottom: var(--s-4);
  border-bottom: var(--hairline);
}

.slot-spec-grid__heading {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: 0;
}
.slot-spec-grid__eyebrow {
  font-size: var(--t-tiny);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.slot-spec-grid__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* провайдер-чип — нейтральная марка, единственное пятно акцента в шапке */
.slot-spec-grid__provider {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  flex: 0 0 auto;
  padding: var(--s-1) var(--s-3);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.slot-spec-grid__provider-ic { display: inline-flex; }

/* ---- Грид ячеек спеков: равные слоты, единые padding/radius ---- */
.slot-spec-grid__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(var(--ssg-col-min), 1fr));
  gap: var(--s-3);
}

/* ---- Ячейка спека: иконка в фикс-слоте + метка + значение ---- */
.slot-spec-grid__cell {
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
  min-width: 0;
  padding: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}

.slot-spec-grid__ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--ssg-ic);
  height: var(--ssg-ic);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}

.slot-spec-grid__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.slot-spec-grid__k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* значение: табличные цифры, фикс-ритм разрядов */
.slot-spec-grid__v {
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 2px;
  flex-wrap: wrap;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}
.slot-spec-grid__num { letter-spacing: .01em; }

/* единица/символ — приглушённая, не спорит с числом */
.slot-spec-grid__unit {
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-faint);
}

/* ---- Шкала волатильности: дискретные деления (уровень, не статус) ---- */
.slot-spec-grid__meter {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  margin-top: 2px;
}
.slot-spec-grid__meter-seg {
  width: 16px;
  height: 6px;
  border-radius: var(--r-pill);
  background: var(--bg-3);
}
/* активные деления — один акцент; «уровень», поэтому без success/danger */
.slot-spec-grid__meter--lvl1 .slot-spec-grid__meter-seg:nth-child(-n + 1),
.slot-spec-grid__meter--lvl2 .slot-spec-grid__meter-seg:nth-child(-n + 2),
.slot-spec-grid__meter--lvl3 .slot-spec-grid__meter-seg:nth-child(-n + 3),
.slot-spec-grid__meter--lvl4 .slot-spec-grid__meter-seg:nth-child(-n + 4),
.slot-spec-grid__meter--lvl5 .slot-spec-grid__meter-seg:nth-child(-n + 5) {
  background: var(--brand);
}

/* ---- T&C / деталь-drawer (нативный <details>) ---- */
.slot-spec-grid__details {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-md);
  background: var(--surface);
}
.slot-spec-grid__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.slot-spec-grid__summary::-webkit-details-marker { display: none; }
.slot-spec-grid__chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.slot-spec-grid__details[open] .slot-spec-grid__chev { transform: rotate(180deg); }
.slot-spec-grid__details-body {
  padding: 0 var(--s-4) var(--s-4);
}

/* ---- Таблица деталей (диапазон ставок / пейтейбл) — tabular ---- */
.slot-spec-grid__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
}
.slot-spec-grid__table caption {
  text-align: left;
  padding-bottom: var(--s-2);
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.slot-spec-grid__table th,
.slot-spec-grid__table td {
  padding: var(--s-2) var(--s-3);
  text-align: left;
  border-bottom: var(--hairline);
}
.slot-spec-grid__table thead th {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  font-weight: var(--fw-semi);
}
.slot-spec-grid__table tbody th {
  font-weight: var(--fw-semi);
  color: var(--text);
}
.slot-spec-grid__table tbody td { color: var(--text-dim); }
.slot-spec-grid__table tbody tr:last-child th,
.slot-spec-grid__table tbody tr:last-child td { border-bottom: 0; }
/* числовая колонка — выровнена вправо, табличные цифры */
.slot-spec-grid__col-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  white-space: nowrap;
}

/* ---- Низ: примечание-источник + ОДНА CTA ---- */
.slot-spec-grid__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  flex-wrap: wrap;
  margin-top: var(--s-5);
}
.slot-spec-grid__note {
  margin: 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}
.slot-spec-grid__cta { flex: 0 0 auto; }

/* ============ Модификатор: компактный (плотнее, без шапки/детали) ============ */
.slot-spec-grid--compact { padding: var(--s-4); --ssg-ic: 28px; --ssg-col-min: 130px; }
.slot-spec-grid--compact .slot-spec-grid__cell { padding: var(--s-3); }
.slot-spec-grid--compact .slot-spec-grid__v { font-size: var(--t-body); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .slot-spec-grid { padding: var(--s-4); --ssg-col-min: 140px; }
}
@media (max-width: 640px) {
  .slot-spec-grid { --ssg-col-min: 100%; }
  .slot-spec-grid__head { flex-direction: column; align-items: flex-start; }
  .slot-spec-grid__foot { flex-direction: column; align-items: stretch; }
  .slot-spec-grid__cta .btn { width: 100%; }
  /* таблица: горизонтальный скролл вместо ломки колонок */
  .slot-spec-grid__table-wrap { overflow-x: auto; }
  .slot-spec-grid__table { min-width: 360px; }
}

/* ===== social-connect-rail ===== */
/* ============================================================
 * social-connect-rail · block.css
 * Скоуплено на .social-connect-rail. Только токены (10-tokens/).
 * Owns: заголовок-блок + сетка карточек-слотов соц-каналов + reassurance-строка.
 * Фикс-слоты: единые pad/radius/shadow; иконка канала в фикс-боксе; ОДНА CTA на карточку.
 * Один акцент --brand (иконка/hover/primary-CTA); прочее — дисциплинированные нейтрали.
 * Конвенция house-style: нейминг/слоты как logo-rail/contact-cta-block; ориентир casino-item-card.
 * CSS-only, JS не требуется. Адаптив: 980 / 640.
 * ========================================================== */

.social-connect-rail__head {
  max-width: var(--container-prose);
  margin-bottom: var(--s-6);
}
.social-connect-rail__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin-bottom: var(--s-2);
}
.social-connect-rail__eyebrow-ic { display: inline-flex; color: var(--brand); }
.social-connect-rail__title {
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.social-connect-rail__lede { margin-top: var(--s-3); }

/* ---- Сетка карточек ---- */
.social-connect-rail__list {
  --scr-cols: 3;
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(var(--scr-cols), minmax(0, 1fr));
  gap: var(--s-4);
}

/* ---- Карточка канала (фикс-слот) ---- */
.scr-card {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-4) var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease), border-color var(--dur-base) var(--ease);
}
.scr-card:hover {
  box-shadow: var(--shadow-pop);
  transform: translateY(-1px);
  border-color: var(--rule-strong);
}

/* Иконка канала — единый фикс-бокс, тон один акцент */
.scr-card__icon {
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}

.scr-card__body { min-width: 0; }
.scr-card__name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.scr-card__handle {
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  color: var(--text-mute);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.scr-card__count {
  margin-top: 2px;
  font-size: var(--t-tiny);
  color: var(--text-faint);
}
.scr-card__count-n {
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}
.scr-card__count-k { color: var(--text-faint); }

/* CTA — фикс-слот справа, одно действие на карточку */
.scr-card__cta { flex: 0 0 auto; }

/* ---- Reassurance ---- */
.social-connect-rail__note {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin-top: var(--s-5);
  font-size: var(--t-small);
  color: var(--text-mute);
}
.social-connect-rail__note-ic { display: inline-flex; flex: 0 0 auto; color: var(--success); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .social-connect-rail__list { --scr-cols: 2; }
}
@media (max-width: 640px) {
  .social-connect-rail__list { --scr-cols: 1; gap: var(--s-3); }
  .scr-card { padding: var(--s-3) var(--s-4); gap: var(--s-3); }
  .scr-card__icon { width: 40px; height: 40px; }
  .social-connect-rail__title { font-size: var(--t-h3); }
}

/* ===== sort-controls ===== */
/* ============================================================
 * sort-controls · block.css
 * Скоуплено на .sort-controls. Только токены (10-tokens/).
 * Конвенция: html-rating-guide (aria-pressed табы) + premium-планка.
 * Один акцент: активная таба/стрелка = --brand. Адаптив: 980 / 640.
 * ========================================================== */

.sort-controls {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s-2) var(--s-4);
  font-family: var(--font-body);
}

.sort-controls__label {
  font-size: var(--t-tiny);
  letter-spacing: .08em;
  text-transform: uppercase;
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  white-space: nowrap;
}

/* ---- Вариант A: tab-кнопки ---- */
.sort-controls__tabs {
  display: inline-flex;
  flex-wrap: wrap;
  gap: var(--s-1);
  padding: var(--s-1);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}

.sort-controls__tab {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding: 0 var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  line-height: 1;
  color: var(--text-mute);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  white-space: nowrap;
  transition: color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease),
              box-shadow var(--dur-quick) var(--ease);
}
.sort-controls__tab:hover { color: var(--text); background: var(--surface); }

.sort-controls__tab.is-active,
.sort-controls__tab[aria-pressed="true"] {
  color: var(--on-brand);
  background: var(--brand);
  border-color: var(--brand);
  box-shadow: var(--shadow-card);
}
.sort-controls__tab.is-active:hover,
.sort-controls__tab[aria-pressed="true"]:hover {
  background: color-mix(in srgb, var(--brand) 88%, #000);
  color: var(--on-brand);
}

.sort-controls__tab-text { font-variant-numeric: tabular-nums; }

/* Стрелка направления: видна только у активной табы; .is-desc переворачивает её */
.sort-controls__arrow {
  display: inline-flex;
  width: 0;
  margin-left: 0;
  overflow: hidden;
  opacity: 0;
  transform: rotate(180deg); /* база = asc (стрелка вверх); SVG нарисован вниз */
  transition: transform var(--dur-base) var(--ease),
              opacity var(--dur-quick) var(--ease),
              width var(--dur-quick) var(--ease);
}
.sort-controls__tab.is-active .sort-controls__arrow,
.sort-controls__tab[aria-pressed="true"] .sort-controls__arrow {
  width: 14px;
  margin-left: var(--s-1);
  opacity: 1;
}
.sort-controls__tab.is-desc .sort-controls__arrow { transform: rotate(0deg); } /* desc = стрелка вниз */

/* ---- Вариант B: нативный <select> ---- */
.sort-controls__select-field {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
}
.sort-controls__select-wrap { position: relative; display: inline-flex; }

.sort-controls__select {
  appearance: none;
  -webkit-appearance: none;
  min-height: var(--tap-min);
  padding: 0 calc(var(--s-7) - var(--s-2)) 0 var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  font-variant-numeric: tabular-nums;
  color: var(--text);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  cursor: pointer;
  transition: border-color var(--dur-quick) var(--ease),
              box-shadow var(--dur-quick) var(--ease);
}
.sort-controls__select:hover { border-color: var(--rule-strong); }
.sort-controls__select:focus-visible { border-color: var(--brand); }

.sort-controls__chevron {
  position: absolute;
  inset-inline-end: var(--s-3);
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  color: var(--text-mute);
  pointer-events: none;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .sort-controls__tab { padding: 0 var(--s-3); }
}
@media (max-width: 640px) {
  /* Компактнее, без переноса в «таблетке»: горизонтальный скролл */
  .sort-controls { align-items: stretch; }
  .sort-controls__tabs { flex-wrap: nowrap; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .sort-controls--select .sort-controls__select-field { width: 100%; flex-wrap: wrap; }
  .sort-controls--select .sort-controls__select-wrap { flex: 1 1 100%; }
  .sort-controls--select .sort-controls__select { width: 100%; }
}

/* ===== sources-list ===== */
/* ============================================================
 * sources-list · block.css
 * Скоуплено на .sources-list. Только токены (10-tokens/).
 * Назначение: пронумерованный список источников/ссылок (references) под
 * обзором/гайдом — повышает доверие/прозрачность (E-E-A-T).
 * House-style: портфельные блоки на наших токенах. Эталон структуры/нейминга:
 * casino-item-card + methodology (CSS-counter номера, T&C/note-drawer).
 * Конвенция: ★research / premium. Адаптив: 980 / 640.
 * Один акцент (--brand); тип источника — иконка + нейтральный чип, НЕ цвет.
 * Числа (даты сверки) — tabular-nums. Состояние — не только цветом.
 * ========================================================== */

.sources-list {
  /* фикс-слоты: бейдж-номер источника и квадрат иконки типа */
  --src-num-size: 30px;
  --src-icon-size: 30px;

  display: block;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- Шапка: eyebrow + заголовок + лид ---- */
.sources-list__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.sources-list__eyebrow {
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--brand);
}
.sources-list__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.sources-list__lede {
  margin: 0;
  max-width: var(--container-prose);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ============================================================
 * Список источников. Номер — CSS-counter, НЕ в HTML (house-style).
 * ========================================================== */
.sources-list__items {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: src;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}

/* Строка-источник: [номер] [иконка] [тело] */
.sources-list__item {
  counter-increment: src;
  display: grid;
  grid-template-columns: var(--src-num-size) var(--src-icon-size) minmax(0, 1fr);
  gap: var(--s-3);
  align-items: start;
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.sources-list__item:first-child {
  padding-top: 0;
  border-top: 0;
}

/* Бейдж-номер (рисуется counter через ::before), табличные цифры */
.sources-list__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--src-num-size);
  height: var(--src-num-size);
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}
.sources-list__num::before { content: counter(src); }

/* Иконка типа источника в фикс-слоте — ОДИН акцент (--brand) */
.sources-list__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--src-icon-size);
  height: var(--src-icon-size);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-soft);
}

/* Тело: ссылка-заголовок + мета + (опц.) выдержка */
.sources-list__body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  /* центрируем первую строку относительно бейджа/иконки */
  padding-top: calc((var(--src-icon-size) - 1.5em) / 2);
}

/* Ссылка на источник (настоящая <a>, не fake-link) */
.sources-list__link {
  display: inline;
  font-size: var(--t-body);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
  text-decoration: none;
}
.sources-list__link:hover {
  color: var(--brand);
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--brand) 40%, transparent);
  text-underline-offset: 2px;
}
/* внешний-линк глиф: едет за текстом, не отрывается от последнего слова */
.sources-list__ext {
  display: inline-block;
  vertical-align: -1px;
  margin-left: var(--s-1);
  color: var(--text-faint);
}
.sources-list__link:hover .sources-list__ext { color: var(--brand); }

/* Мета-строка: чип-тип + издатель/домен + дата сверки */
.sources-list__meta {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}
.sources-list__sep { color: var(--text-faint); }

/* Чип-метка типа — нейтральная (различие НЕ цветом, а текстом+иконкой) */
.sources-list__tag {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}

/* Издатель/домен — моно для «технического» вида ссылки-источника */
.sources-list__pub {
  font-family: var(--font-mono);
  color: var(--text-mute);
  overflow-wrap: anywhere;
}

/* Дата сверки — табличные цифры */
.sources-list__date {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.sources-list__date time { color: var(--text-mute); }

/* Выдержка/пояснение (опционально) */
.sources-list__excerpt {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ============================================================
 * Раскрываемое примечание (note-drawer) — держит блок чистым.
 * Тот же паттерн/хук, что у methodology/affiliate-disclosure.
 * ========================================================== */
.sources-list__note {
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.sources-list__note-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
}
.sources-list__note-btn:hover { color: var(--brand); }
.sources-list__note-chev {
  display: inline-flex;
  transition: transform var(--dur-quick) var(--ease);
}
.sources-list__note-btn[aria-expanded="true"] .sources-list__note-chev { transform: rotate(180deg); }

.sources-list__note-body {
  margin-top: var(--s-2);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.sources-list__note-body[hidden] { display: none; }
.sources-list__note-body p { margin: 0 0 var(--s-2); }
.sources-list__note-body p:last-child { margin-bottom: 0; }

/* ============================================================
 * Модификатор: компактный инлайн-список сносок (.sources-list--inline)
 * Для подвала статьи/сайдбара: меньше padding, без подложки-карточки.
 * ========================================================== */
.sources-list--inline {
  padding: 0;
  background: none;
  border: 0;
  box-shadow: none;
}
.sources-list--inline .sources-list__head { margin-bottom: var(--s-3); }
.sources-list--inline {
  --src-num-size: 24px;
  --src-icon-size: 24px;
}
.sources-list--inline .sources-list__items { gap: var(--s-2); }
.sources-list--inline .sources-list__item {
  padding-top: var(--s-2);
  border-top: 0;
  align-items: center;
}
.sources-list--inline .sources-list__item:first-child { padding-top: 0; }
.sources-list--inline .sources-list__body {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s-1) var(--s-2);
  padding-top: 0;
}
.sources-list--inline .sources-list__link { font-size: var(--t-small); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .sources-list { padding: var(--s-5); }
  .sources-list--inline { padding: 0; }
}
@media (max-width: 640px) {
  .sources-list { padding: var(--s-4); }
  .sources-list--inline { padding: 0; }
  .sources-list {
    --src-num-size: 26px;
    --src-icon-size: 26px;
  }
  /* номер + иконка в один ряд над телом — экономим ширину на узком экране */
  .sources-list__item {
    grid-template-columns: var(--src-num-size) var(--src-icon-size) minmax(0, 1fr);
    column-gap: var(--s-2);
  }
  .sources-list__link { font-size: var(--t-small); }
}

/* ===== star-rating ===== */
/* ============================================================
 * star-rating · block.css
 * Скоуплено на .star-rating. Только токены (10-tokens/).
 * Атом: звёзды on/half/off (bespoke SVG) + число рядом, aria-label «X из 5».
 * Заполнение каждой звезды задаётся классом is-on/is-half/is-off (→ --sr-fill: 100/50/0%).
 * Один акцент: --gold (цвет оценки); пустые звёзды — нейтраль --rule. --brand не трогаем.
 * ========================================================== */

.star-rating {
  /* Локальные ручки компонента */
  --sr-size: 18px;                 /* размер одной звезды (квадрат) */
  --sr-gap: 3px;                   /* зазор между звёздами */
  --sr-on: var(--gold);            /* цвет заполненной части */
  --sr-off: var(--rule);           /* цвет пустой части */

  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  vertical-align: middle;
  line-height: var(--lh-tight);
}

/* ---- Полоса звёзд ---- */
.star-rating__stars {
  display: inline-flex;
  align-items: center;
  gap: var(--sr-gap);
}

/* ---- Одна звезда: подложка (off) + наложение заполнения (on) ---- */
.star-rating__star {
  position: relative;
  display: inline-block;
  width: var(--sr-size);
  height: var(--sr-size);
  color: var(--sr-off);            /* базовый слой = пустая звезда */
  /* Та же геометрия пути, что в inline SVG (см. block.html) — как data-URL для mask */
  --sr-star-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M10 1.5l2.6 5.27 5.82.85-4.21 4.1.99 5.79L10 14.86l-5.2 2.65.99-5.79L1.58 7.62l5.82-.85L10 1.5Z"/></svg>');
}
.star-rating__icon {
  display: block;
  width: 100%;
  height: 100%;
}

/* Слой заполнения поверх — обрезается по ширине для half/частичной звезды */
.star-rating__star::before {
  content: "";
  position: absolute;
  inset: 0;
  width: var(--sr-fill, 0%);
  overflow: hidden;
  color: var(--sr-on);
  /* повтор той же bespoke-звезды как маска, чтобы клип шёл по форме, а не по бокс-рамке */
  -webkit-mask: var(--sr-star-mask) left center / var(--sr-size) var(--sr-size) no-repeat;
          mask: var(--sr-star-mask) left center / var(--sr-size) var(--sr-size) no-repeat;
  background: currentColor;
  transition: width var(--dur-base) var(--ease);
}

/* Состояния заполнения */
.star-rating__star.is-on   { --sr-fill: 100%; }
.star-rating__star.is-half { --sr-fill: 50%; }
.star-rating__star.is-off  { --sr-fill: 0%; }

/* ---- Число рядом ---- */
.star-rating__num {
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  font-size: var(--t-h4);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

/* ============ Варианты ============ */

/* Компакт — только звёзды, без числа (оценку несёт aria-label) */
.star-rating--compact .star-rating__num { display: none; }

/* Размеры */
.star-rating--sm { --sr-size: 14px; --sr-gap: 2px; }
.star-rating--sm .star-rating__num { font-size: var(--t-small); }

.star-rating--lg { --sr-size: 24px; --sr-gap: 4px; gap: var(--s-3); }
.star-rating--lg .star-rating__num { font-size: var(--t-h3); }

/* Приглушённый числовой вес (для плотных листингов, где балл вторичен) */
.star-rating--muted .star-rating__num {
  font-family: var(--font-body);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
}

/* ===== stat-dashboard ===== */
/* ============================================================
 * stat-dashboard · block.css
 * Скоуплено на .stat-dashboard. Только токены (10-tokens/).
 * Конвенция разметки: ★research / премиум-планка (готовой разметки нет) —
 *   ориентир: эталон casino-item-card (фикс-слоты, единые pad/radius/shadow,
 *   tabular-nums, один акцент) + dataviz-меры вместо звёзд (scorecard-меры).
 * НАЗНАЧЕНИЕ: сводка ключевых ЦИФР ПРОЕКТА (KPI-дека «проект в цифрах»),
 *   крупные плитки-метрики, НЕ per-оператор листинг (≠ casino-item) и НЕ
 *   инлайн-strip из 3-4 чисел (≠ stat-strip): плитки несут метку+число+
 *   период-дельту+микро-меру.
 * Один акцент — --brand (featured-плитка, акцент-мера). --success/--danger
 *   ТОЛЬКО по смыслу (дельта рост/спад), не как декор.
 * Числа — font-variant-numeric: tabular-nums. Адаптив: 980 / 640.
 * ========================================================== */

.stat-dashboard {
  /* мин. ширина плитки — авто-перенос сетки без media для промежуточных ширин */
  --sd-tile-min: 220px;
  /* высота микро-меры (общий ритм всех плиток) */
  --sd-meter-h: 6px;

  display: flow-root;
  color: var(--text);
}

/* ---- Шапка: подпись делает блок «метриками проекта», а не декором ---- */
.stat-dashboard__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
}
.stat-dashboard__heading { display: flex; flex-direction: column; gap: var(--s-1); min-width: 0; }
.stat-dashboard__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.stat-dashboard__sub {
  margin: 0;
  font-size: var(--t-small);
  color: var(--text-mute);
}

/* верифи-бейдж: единственное акцент-пятно в шапке */
.stat-dashboard__meta {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  color: var(--brand);
  white-space: nowrap;
}
.stat-dashboard__meta-ic { display: inline-flex; }

/* ---- Сетка плиток: равные авто-слоты, единый gap ---- */
.stat-dashboard__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(var(--sd-tile-min), 1fr));
  gap: var(--s-4);
}

/* ---- Плитка-метрика: surface + hairline + r-lg + shadow-card (= эталон) ---- */
.stat-dashboard__tile {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  min-width: 0;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.stat-dashboard__tile:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }

/* Featured-плитка: один акцент тянет глаз к главной цифре проекта */
.stat-dashboard__tile--featured {
  background: var(--brand-soft);
  border-color: color-mix(in srgb, var(--brand) 30%, transparent);
}
.stat-dashboard__tile--featured .stat-dashboard__value { color: var(--brand); }
.stat-dashboard__tile--featured .stat-dashboard__meter-fill { background: var(--brand); }

/* Плитка на всю ширину (для сводной/«итог» метрики на узких сетках) */
.stat-dashboard__tile--wide { grid-column: 1 / -1; }

/* ---- Шапка плитки: метка + опц. иконка-слот ---- */
.stat-dashboard__tile-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2);
}
.stat-dashboard__label {
  margin: 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
/* фикс-слот иконки — единый бокс во всех плитках */
.stat-dashboard__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--s-6);
  height: var(--s-6);
  color: var(--text-faint);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.stat-dashboard__tile--featured .stat-dashboard__icon {
  color: var(--brand);
  background: color-mix(in srgb, var(--brand) 14%, transparent);
}

/* ---- Значение: крупное, табличные цифры, фикс-ритм ---- */
.stat-dashboard__value {
  margin: 0;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 2px;
  font-family: var(--font-display);
  font-size: var(--t-h1);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}
.stat-dashboard__num { letter-spacing: .01em; }
/* префикс/суффикс единицы — приглушён, не спорит с числом */
.stat-dashboard__unit {
  font-family: var(--font-body);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  color: var(--text-faint);
}
.stat-dashboard__unit--pre { margin-right: 1px; }

/* ---- Низ плитки: дельта периода + значение прижаты к основанию ---- */
.stat-dashboard__foot {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-top: auto;
}

/* Дельта (по смыслу: рост/спад) — единственный функциональный цвет */
.stat-dashboard__delta {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
}
.stat-dashboard__delta-ic { display: inline-flex; }
.stat-dashboard__delta--up   { color: var(--success); }
.stat-dashboard__delta--down { color: var(--danger); }
.stat-dashboard__delta--flat { color: var(--text-faint); }
.stat-dashboard__delta-note { color: var(--text-faint); font-weight: var(--fw-body); }

/* ---- Микро-мера: dataviz вместо звёзд. Источник истины — --val (0..100) ----
 * Ширина заливки = var(--val) %. Число всегда продублировано текстом рядом. */
.stat-dashboard__meter {
  display: block;
  height: var(--sd-meter-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.stat-dashboard__meter-fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) * 1%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease);
}
/* нейтральная мера (без оценочной коннотации рост/спад — напр. доля/прогресс) */
.stat-dashboard__meter--brand .stat-dashboard__meter-fill {
  background: var(--brand);
}
.stat-dashboard__meter-cap {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-top: var(--s-2);
  font-size: var(--t-tiny);
  color: var(--text-mute);
}
.stat-dashboard__meter-cap b {
  font-weight: var(--fw-semi);
  color: var(--text-dim);
  font-variant-numeric: tabular-nums;
}

/* ---- Опц. подвал блока: сноска-источник держит «факты» честными ---- */
.stat-dashboard__note {
  margin: var(--s-5) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
  color: var(--text-faint);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .stat-dashboard__grid { --sd-tile-min: 180px; }
}
@media (max-width: 640px) {
  .stat-dashboard__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-2);
  }
  /* плитки в один столбец — число уходит вправо, метка слева (компакт-ритм) */
  .stat-dashboard__grid { grid-template-columns: 1fr; gap: var(--s-3); }
  .stat-dashboard__tile { padding: var(--s-4); }
  .stat-dashboard__value { font-size: var(--t-h2); }
}

/* ===== stat-strip ===== */
/* ============================================================
 * stat-strip · block.css
 * Скоуплено на .stat-strip. Только токены (10-tokens/).
 * Конвенция разметки: ★research / премиум-планка (своя разметка — готовой нет),
 *   ориентир — портфельные блоки (.stk-*/.vs-*/.ledger): инлайн-метрики
 *   label/value в равных слотах, хайрлайн-разделители, дисциплина нейтралей.
 * Один акцент — --brand (значение/верифи-бейдж). --success/--danger ТОЛЬКО по
 *   смыслу (дельта up/down), не как декор.
 * Числа — font-variant-numeric: tabular-nums (выравнивание разрядов).
 * Визуал: модерн-премиум 2025-26 — gradient-text на значениях, surface-grad +
 *   glow на boxed-карточке, glow-дельты. Эффекты через токены (адаптив скин/бренд).
 * Адаптив: 980 / 640.
 * ========================================================== */

.stat-strip {
  /* минимальная ширина слота метрики — держит ряд от «слипания» */
  --ss-col-min: 150px;

  display: flow-root;
  color: var(--text);
}

/* ---- Опц. шапка: подпись-источник делает это «метриками», а не декором ---- */
.stat-strip__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-4);
}

.stat-strip__caption {
  margin: 0;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}

/* единственное цветовое пятно акцента в шапке */
.stat-strip__verified {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  color: var(--brand);
}
.stat-strip__verified-ic { display: inline-flex; }

/* ---- Ряд метрик: равные слоты, хайрлайн-разделители МЕЖДУ ними ---- */
.stat-strip__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(var(--ss-col-min), 1fr);
  align-items: stretch;
}

.stat-strip__item {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: 0;
  padding: var(--s-1) var(--s-5);
  /* вертикальный волосок-разделитель слева; у первого слота снимается */
  border-left: var(--hairline);
}
.stat-strip__item:first-child {
  padding-left: 0;
  border-left: 0;
}

/* ---- Метка (термин) ---- */
.stat-strip__label {
  order: 2;            /* подпись под значением — «датадека», не подзаголовок */
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
}

/* ---- Значение: крупное, табличные цифры, фикс-ритм, gradient-text ---- */
.stat-strip__value {
  order: 1;
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 2px;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

/* короткое значение — мягкий gradient-text акцент; короткие числа читаемы */
.stat-strip__num {
  letter-spacing: .01em;
  background-image: var(--grad-text);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* префикс/суффикс единицы — приглушённый, не спорит с числом */
.stat-strip__unit {
  font-family: var(--font-body);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  color: var(--text-faint);
}
.stat-strip__unit--pre { margin-right: 1px; }

/* ---- Дельта (по смыслу: рост/спад) — единственный функциональный цвет ---- */
.stat-strip__delta {
  order: 3;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  color: var(--text-mute);
}
.stat-strip__delta-ic { display: inline-flex; }
.stat-strip__delta--up   { color: var(--success); }
.stat-strip__delta--down { color: var(--danger); }

/* ---- Модификатор: карточка-обёртка (boxed) — surface-grad + glow на hover ---- */
.stat-strip--boxed {
  padding: var(--s-5);
  background-color: var(--surface);
  background-image: var(--surface-grad);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition:
    box-shadow var(--dur-base) var(--ease-out),
    border-color var(--dur-base) var(--ease-out),
    transform var(--dur-base) var(--ease-out);
}
.stat-strip--boxed:hover {
  border-color: color-mix(in srgb, var(--brand) 28%, var(--rule));
  box-shadow: var(--shadow-pop), var(--shadow-glow);
  transform: translateY(-3px);
}

/* ---- Модификатор: центрированные слоты (vanity-бар доверия) ---- */
.stat-strip--center .stat-strip__item { align-items: center; text-align: center; }
.stat-strip--center .stat-strip__value { justify-content: center; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  /* перенос в 2 колонки: горизонтальные хайрлайны держат сетку */
  .stat-strip__list {
    grid-auto-flow: row;
    grid-template-columns: 1fr 1fr;
    grid-auto-columns: auto;
  }
  .stat-strip__item {
    padding: var(--s-3) var(--s-4);
    border-left: var(--hairline);
    border-top: var(--hairline);
  }
  /* первый ряд — без верхней кромки; левая колонка — без левой */
  .stat-strip__item:nth-child(1),
  .stat-strip__item:nth-child(2) { border-top: 0; }
  .stat-strip__item:nth-child(odd) { padding-left: 0; border-left: 0; }
  .stat-strip--center .stat-strip__item:nth-child(odd) { padding-left: var(--s-4); }
}

@media (max-width: 640px) {
  .stat-strip__value { font-size: var(--t-h3); }
  /* один столбец: разделитель становится верхним волоском */
  .stat-strip__list {
    grid-template-columns: 1fr;
  }
  .stat-strip__item {
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--s-2);
    padding: var(--s-3) 0;
    border-left: 0;
    border-top: var(--hairline);
  }
  .stat-strip__item:nth-child(2) { border-top: var(--hairline); }
  .stat-strip__item:first-child { border-top: 0; }
  .stat-strip__label { order: 1; }   /* метка слева, значение справа */
  .stat-strip__value { order: 2; }
  .stat-strip__delta { order: 3; flex-basis: 100%; }
  .stat-strip--center .stat-strip__item {
    text-align: left;
    align-items: baseline;
    padding-left: 0;
  }
  .stat-strip--center .stat-strip__value { justify-content: flex-start; }
}

/* ============ Reduced motion: без lift ============ */
@media (prefers-reduced-motion: reduce) {
  .stat-strip--boxed {
    transition: box-shadow var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
  }
  .stat-strip--boxed:hover { transform: none; }
}

/* ===== sticky-bottom-cta ===== */
/* ============================================================
 * sticky-bottom-cta · block.css
 * Скоуплено на .sticky-bottom-cta. Только токены (10-tokens/).
 * Прилипший низ-CTA на МОБАЙЛЕ: position: fixed; bottom: 0 — док у нижней
 *   кромки вьюпорта, не уезжает при скролле, учитывает safe-area iOS.
 * На десктопе (≥640px) — display:none (там полноразмерные CTA-блоки).
 * Отличие от sticky-cta: тот — sticky-бар (park над футером) на всех ширинах;
 *   этот — fixed-док только для мобайла, две строки (offer + action-row).
 * Один акцент (--brand). Числа — tabular-nums. value-метр вместо звёзд.
 * Reveal/dismiss — опц. JS (graceful: без JS виден и работает). Motion
 *   функциональный; prefers-reduced-motion наследуется из base.
 * ========================================================== */

.sticky-bottom-cta {
  /* высота слота лого — единый фикс-слот (premium: фикс-слоты) */
  --sbc-logo: 44px;

  position: fixed;
  inset-inline: 0;
  inset-block-end: 0;
  z-index: var(--z-sticky);

  /* кликабельна только панель, не вся полоса */
  pointer-events: none;

  /* стартовое (видимое) состояние; опц. JS уводит вниз через .is-hidden */
  transform: translateY(0);
  transition:
    transform var(--dur-base) var(--ease),
    opacity var(--dur-base) var(--ease);
}

/* ---- Панель ---- */
.sticky-bottom-cta__panel {
  pointer-events: auto;

  display: flex;
  flex-direction: column;
  gap: var(--s-2);

  padding: var(--s-3) var(--gutter);
  /* safe-area iOS (home-indicator) — px-safe, не хардкод вне шкалы */
  padding-block-end: calc(var(--s-3) + env(safe-area-inset-bottom, 0px));

  background: var(--surface);
  border-block-start: var(--hairline);
  /* приподнятая кромка дока — тень кверху */
  box-shadow: var(--shadow-pop);
}

/* JS-режим: dismiss прячет корень целиком (вне таб-порядка).
   Без JS этого атрибута нет → док всегда виден (graceful degradation). */
.sticky-bottom-cta[hidden] { display: none; }
/* опц. reveal-после-скролла: до порога — уведён вниз */
.sticky-bottom-cta.is-hidden {
  transform: translateY(100%);
  opacity: 0;
  pointer-events: none;
}

/* ============================================================
 * Строка 1 · ОФФЕР (лого + бренд + value-метр + цена бонуса)
 * ========================================================== */
.sticky-bottom-cta__offer {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-3);
}

/* Медиа: фикс-слот лого + бейдж позиции */
.sticky-bottom-cta__media {
  position: relative;
  flex: 0 0 auto;
  display: block;
}
.sticky-bottom-cta__logo {
  width: var(--sbc-logo);
  height: var(--sbc-logo);
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
  display: block;
}
.sticky-bottom-cta__rank {
  position: absolute;
  top: calc(-1 * var(--s-2));
  inset-inline-start: calc(-1 * var(--s-2));
  min-width: 20px;
  height: 20px;
  padding: 0 var(--s-1);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}

/* Имя + value-метр */
.sticky-bottom-cta__copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.sticky-bottom-cta__name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* value-метр (dataviz вместо звёзд) */
.sticky-bottom-cta__meter {
  display: flex;
  align-items: center;
  gap: var(--s-2);
}
.sticky-bottom-cta__meter-track {
  flex: 1 1 auto;
  height: 6px;
  min-width: 0;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.sticky-bottom-cta__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
}
.sticky-bottom-cta__score {
  flex: 0 0 auto;
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.sticky-bottom-cta__score small {
  color: var(--text-faint);
  font-weight: var(--fw-medium);
}

/* Цена бонуса (фикс-слот справа) */
.sticky-bottom-cta__amount {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  line-height: var(--lh-tight);
}
.sticky-bottom-cta__amount-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.sticky-bottom-cta__amount-v {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ============================================================
 * Строка 2 · ACTION-ROW (краткие термы + CTA + закрыть)
 * ========================================================== */
.sticky-bottom-cta__action {
  display: flex;
  align-items: center;
  gap: var(--s-3);
}

/* Термы (слева, ужимаются) + T&C-drawer */
.sticky-bottom-cta__terms {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 2px var(--s-2);
  font-size: var(--t-small);
  color: var(--text-mute);
  line-height: var(--lh-snug);
}
.sticky-bottom-cta__term { white-space: nowrap; }
.sticky-bottom-cta__term b {
  color: var(--text);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
}
.sticky-bottom-cta__name--inline {
  font-size: var(--t-body);
  white-space: nowrap;
}
.sticky-bottom-cta__sep {
  color: var(--rule-strong);
  user-select: none;
}

/* T&C-drawer — нативный <details>; поповер всплывает ВВЕРХ, не толкая layout */
.sticky-bottom-cta__tnc {
  position: relative;
  flex: 0 0 100%; /* условия на свою строку под метриками */
}
.sticky-bottom-cta__tnc-q {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-tiny);
  color: var(--text-mute);
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
  list-style: none;
}
.sticky-bottom-cta__tnc-q::-webkit-details-marker { display: none; }
.sticky-bottom-cta__tnc-q:hover { color: var(--brand); }
.sticky-bottom-cta__tnc-chevron {
  transition: transform var(--dur-quick) var(--ease);
}
.sticky-bottom-cta__tnc[open] .sticky-bottom-cta__tnc-chevron { transform: rotate(180deg); }

.sticky-bottom-cta__tnc-a {
  position: absolute;
  inset-inline: 0;
  inset-block-end: calc(100% + var(--s-2));
  z-index: var(--z-popover);
  padding: var(--s-3);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
}
.sticky-bottom-cta__tnc-a p { margin: 0; }
.sticky-bottom-cta__num {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* ОДНА CTA — наследует .btn.btn--primary из base; здесь компактно-широкая */
.sticky-bottom-cta__cta {
  flex: 1 1 auto;
  min-width: 0;
  max-width: 60%;
}
.sticky-bottom-cta__cta svg { flex: 0 0 auto; }

/* Закрыть (dismiss) */
.sticky-bottom-cta__close {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  color: var(--text-faint);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.sticky-bottom-cta__close:hover {
  color: var(--text);
  background: var(--bg-2);
}
.sticky-bottom-cta__close:focus-visible { outline-offset: 2px; }
.sticky-bottom-cta__close svg { display: block; }

/* ---- Модификатор: компактный (одна строка, без оффер-строки) ---- */
.sticky-bottom-cta--compact .sticky-bottom-cta__panel { gap: 0; }

/* ============================================================
 * Адаптив — это МОБАЙЛ-блок: на десктопе скрываем целиком.
 * Брейкпоинт house-style 640px.
 * ========================================================== */

/* очень узкие экраны — CTA во всю ширину, оффер-цена прячется */
@media (max-width: 380px) {
  .sticky-bottom-cta__amount { display: none; }
  .sticky-bottom-cta__cta { max-width: none; }
}

/* десктоп: док не нужен (полноразмерные CTA-блоки на странице) */
@media (min-width: 641px) {
  .sticky-bottom-cta { display: none !important; }
}

/* ===== sticky-cta ===== */
/* ============================================================
 * sticky-cta · block.css
 * Скоуплено на .sticky-cta. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (sticky-бар) + portfolio-house-style.
 * Поведение «park над футером» — ЧИСТЫЙ CSS: position: sticky; bottom.
 *   Бар лежит в потоке ПЕРЕД <footer>; при скролле прилипает к низу
 *   вьюпорта, у конца страницы естественно «паркуется» над футером.
 * Опциональный JS (data-action="stickyCta") — только reveal/dismiss,
 *   на отображение не влияет (graceful: без JS бар виден и работает).
 * Адаптив: 980 / 640. Один акцент (--brand). Числа — tabular-nums.
 * ========================================================== */

/* Якорь в потоке — место «парковки» над футером.
   sticky-элемент паркуется относительно ближайшего скролл-контейнера;
   когда низ страницы доходит до бара, он останавливается здесь. */
.sticky-cta {
  position: sticky;
  inset-block-end: var(--s-4);
  z-index: var(--z-sticky);
  /* отступ снизу, чтобы припаркованный бар не лип к футеру вплотную */
  margin-block-start: var(--s-5);
  padding-inline: var(--gutter);
  pointer-events: none; /* кликабельна только сама панель, не вся полоса */
}

/* ---- Панель ---- */
.sticky-cta__bar {
  pointer-events: auto;
  max-width: var(--container);
  margin-inline: auto;

  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  grid-template-areas: "media offer cta close";
  align-items: center;
  gap: var(--s-4);

  padding: var(--s-3) var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-pop);

  /* стартовое состояние для опц. reveal-анимации (JS снимает .is-hidden) */
  transition:
    opacity var(--dur-base) var(--ease),
    transform var(--dur-base) var(--ease),
    box-shadow var(--dur-quick) var(--ease);
}
.sticky-cta__bar:hover { box-shadow: var(--shadow-lift); }

/* JS-режим: до reveal — прячем (вне таб-порядка через [hidden] на корне).
   Без JS этих классов нет → бар всегда виден (graceful degradation). */
.sticky-cta[hidden] { display: none; }
.sticky-cta.is-hidden .sticky-cta__bar {
  opacity: 0;
  transform: translateY(var(--s-4));
  pointer-events: none;
}

/* ---- Медиа: фикс-слот логотипа + бейдж ---- */
.sticky-cta__media {
  grid-area: media;
  position: relative;
  flex: 0 0 auto;
}
.sticky-cta__logo {
  width: 52px;
  height: 52px;
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
  display: block;
}
.sticky-cta__rank {
  position: absolute;
  top: calc(-1 * var(--s-2));
  inset-inline-start: calc(-1 * var(--s-2));
  min-width: 22px;
  height: 22px;
  padding: 0 var(--s-1);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}

/* ---- Оффер: имя + краткие термы ---- */
.sticky-cta__offer {
  grid-area: offer;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.sticky-cta__eyebrow {
  /* база .eyebrow задаёт регистр/трекинг; здесь — цвет акцента */
  color: var(--brand);
}
.sticky-cta__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sticky-cta__terms {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s-1) var(--s-3);
  font-size: var(--t-small);
  color: var(--text-mute);
  line-height: var(--lh-snug);
}
.sticky-cta__term { white-space: nowrap; }
.sticky-cta__term b {
  color: var(--text);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
}
.sticky-cta__sep {
  color: var(--rule-strong);
  user-select: none;
}

/* ---- CTA + раскрываемые условия ---- */
.sticky-cta__action {
  grid-area: cta;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--s-1);
  text-align: end;
}
/* .btn / .btn--primary / .btn--lg наследуются из base */
.sticky-cta__cta svg { flex: 0 0 auto; }

/* T&C-drawer — нативный <details>; раскрытие grid-rows 0fr→1fr (без замера) */
.sticky-cta__terms-toggle {
  position: relative;
}
.sticky-cta__terms-q {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-tiny);
  color: var(--text-mute);
  cursor: pointer;
  list-style: none;
}
.sticky-cta__terms-q::-webkit-details-marker { display: none; }
.sticky-cta__terms-q:hover { color: var(--brand); }
.sticky-cta__terms-chevron {
  transition: transform var(--dur-quick) var(--ease);
}
.sticky-cta__terms-toggle[open] .sticky-cta__terms-chevron { transform: rotate(180deg); }

/* Поповер условий — над баром, не толкает layout */
.sticky-cta__terms-a {
  position: absolute;
  inset-inline-end: 0;
  inset-block-end: calc(100% + var(--s-2));
  width: max(260px, 100%);
  z-index: var(--z-popover);
  padding: var(--s-3);
  text-align: start;
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-pop);
}
.sticky-cta__terms-a p { margin: 0; }
.sticky-cta__terms-a .sticky-cta__num { font-variant-numeric: tabular-nums; font-weight: var(--fw-semi); color: var(--text); }

/* ---- Закрыть (dismiss) ---- */
.sticky-cta__close {
  grid-area: close;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tap-min);
  height: var(--tap-min);
  color: var(--text-faint);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.sticky-cta__close:hover {
  color: var(--text);
  background: var(--bg-2);
}
.sticky-cta__close:focus-visible { outline-offset: 2px; }
.sticky-cta__close svg { display: block; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .sticky-cta { padding-inline: var(--s-4); }
  .sticky-cta__bar {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-areas:
      "media offer close"
      "cta   cta   cta";
    gap: var(--s-3);
  }
  .sticky-cta__action {
    align-items: stretch;
    text-align: center;
  }
  .sticky-cta__action .sticky-cta__terms-toggle { align-self: center; }
  .sticky-cta__cta { width: 100%; }
}

@media (max-width: 640px) {
  .sticky-cta { inset-block-end: 0; padding-inline: 0; margin-block-start: var(--s-4); }
  .sticky-cta__bar {
    border-radius: var(--r-lg) var(--r-lg) 0 0;
    border-inline: 0;
    border-block-end: 0;
    padding: var(--s-3);
    column-gap: var(--s-3);
  }
  .sticky-cta__logo { width: 44px; height: 44px; }
  /* на узком экране прячем многословные термы — оставляем имя + одну метрику + CTA */
  .sticky-cta__term--extra { display: none; }
  .sticky-cta__terms-a { width: calc(100vw - 2 * var(--s-4)); }
}

/* ===== strategy-chart ===== */
/* ============================================================
 * strategy-chart · block.css
 * Скоуплено на .strategy-chart. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка),
 * ориентир casino-item-card / country-grid (head + dataviz-ключ + <details>-drawer).
 * Акцент-дисциплина: цвет ячеек = СЕМАНТИЧЕСКИЙ ключ действия (не декор),
 *   локальные алиасы --sc-hit/stand/double/split/surr; каждое действие
 *   дублируется буквой в ячейке + легендой (состояние не только цветом).
 * Числа/руки — tabular-nums. Табы — CSS-only (:checked). Drawer — нативный <details>.
 * Адаптив: 980 / 640 (на узких — горизонтальный скролл матрицы, не ломка).
 * ========================================================== */

.strategy-chart {
  /* семантический ключ действий — единый язык легенды, ячеек и (опц.) подсветки */
  --sc-hit:         var(--brand);
  --sc-hit-soft:    var(--brand-soft);
  --sc-stand:       var(--success);
  --sc-stand-soft:  var(--success-soft);
  --sc-double:      var(--info);
  --sc-double-soft: var(--info-soft);
  --sc-split:       var(--gold);
  --sc-split-soft:  var(--warning-soft);
  --sc-surr:        var(--danger);
  --sc-surr-soft:   var(--danger-soft);
  --sc-cell: 40px;            /* фикс-слот ячейки матрицы (квадрат, ровный ритм) */
  display: block;
}

/* ---- Шапка ---- */
.strategy-chart__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.strategy-chart__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
}
.strategy-chart__lede { margin: 0; max-width: var(--container-prose); }
.strategy-chart__num { font-variant-numeric: tabular-nums; }

/* ---- Легенда (dataviz-ключ) ---- */
.strategy-chart__legend {
  list-style: none;
  margin: 0 0 var(--s-5);
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-3) var(--s-5);
}
.strategy-chart__legend-item {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-small);
  color: var(--text-dim);
}
.strategy-chart__swatch {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  border-radius: var(--r-soft);
}
.strategy-chart__swatch--hit    { color: var(--sc-hit);    background: var(--sc-hit-soft); }
.strategy-chart__swatch--stand  { color: var(--sc-stand);  background: var(--sc-stand-soft); }
.strategy-chart__swatch--double { color: var(--sc-double); background: var(--sc-double-soft); }
.strategy-chart__swatch--split  { color: var(--sc-split);  background: var(--sc-split-soft); }
.strategy-chart__swatch--surr   { color: var(--sc-surr);   background: var(--sc-surr-soft); }
.strategy-chart__legend-label { line-height: var(--lh-snug); }

/* ============================================================
 * CSS-only табы: радио-инпуты управляют видимостью панелей
 * ========================================================== */
.strategy-chart__radio {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

.strategy-chart__tablist {
  display: inline-flex;
  flex-wrap: wrap;
  gap: var(--s-1);
  padding: var(--s-1);
  margin-bottom: var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}
.strategy-chart__tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 36px;
  padding: 0 var(--s-4);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: background var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.strategy-chart__tab:hover { color: var(--text); }
/* фокус ведём от скрытого радио к видимому лейблу */
.strategy-chart__radio:focus-visible + .strategy-chart__radio + .strategy-chart__radio + .strategy-chart__tablist .strategy-chart__tab[for$="hard"],
.strategy-chart__radio:focus-visible ~ .strategy-chart__tablist .strategy-chart__tab[data-tab="hard"]   { outline: 2px solid var(--brand); outline-offset: 2px; }

/* активный таб + показ соответствующей панели */
#strat-tab-hard:checked  ~ .strategy-chart__tablist .strategy-chart__tab[data-tab="hard"],
#strat-tab-soft:checked  ~ .strategy-chart__tablist .strategy-chart__tab[data-tab="soft"],
#strat-tab-pairs:checked ~ .strategy-chart__tablist .strategy-chart__tab[data-tab="pairs"] {
  background: var(--brand);
  color: var(--on-brand);
  box-shadow: var(--shadow-card);
}

.strategy-chart__panel { display: none; }
#strat-tab-hard:checked  ~ .strategy-chart__panel[data-panel="hard"],
#strat-tab-soft:checked  ~ .strategy-chart__panel[data-panel="soft"],
#strat-tab-pairs:checked ~ .strategy-chart__panel[data-panel="pairs"] { display: block; }

/* горизонтальный скролл-контейнер (узкие экраны не ломают сетку) */
.strategy-chart__scroll {
  overflow-x: auto;
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}

/* ============================================================
 * Матрица
 * ========================================================== */
.strategy-chart__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-variant-numeric: tabular-nums;
}
.strategy-chart__table th,
.strategy-chart__table td {
  width: var(--sc-cell);
  height: var(--sc-cell);
  text-align: center;
  vertical-align: middle;
  font-size: var(--t-small);
  border-right: var(--hairline);
  border-bottom: var(--hairline);
}
/* заголовки столбцов — sticky сверху */
.strategy-chart__table thead th {
  position: sticky;
  top: 0;
  z-index: var(--z-base);
  font-family: var(--font-display);
  font-weight: var(--fw-bold);
  color: var(--text);
  background: var(--bg-2);
}
/* заголовки строк — sticky слева */
.strategy-chart__table tbody th {
  position: sticky;
  left: 0;
  z-index: var(--z-base);
  width: auto;
  min-width: 92px;
  padding-inline: var(--s-3);
  text-align: left;
  white-space: nowrap;
  font-weight: var(--fw-semi);
  color: var(--text);
  background: var(--surface-2);
}
/* угловая ячейка — поверх обеих осей */
.strategy-chart__corner {
  position: sticky;
  left: 0;
  z-index: var(--z-sticky);
  width: auto;
  min-width: 92px;
  padding-inline: var(--s-3);
  text-align: left;
  font-size: var(--t-tiny) !important;
  letter-spacing: .02em;
  color: var(--text-mute) !important;
  background: var(--bg-3) !important;
}
.strategy-chart__table td {
  font-family: var(--font-mono);
  font-weight: var(--fw-bold);
  color: var(--text-faint);
  background: var(--surface);
}
.strategy-chart__table tbody tr:last-child th,
.strategy-chart__table tbody tr:last-child td { border-bottom: 0; }
.strategy-chart__table th:last-child,
.strategy-chart__table td:last-child { border-right: 0; }

/* ---- Ячейки-действия: цвет = семантический ключ (буква дублирует) ---- */
.strategy-chart__table td.is-hit    { color: var(--sc-hit);    background: var(--sc-hit-soft); }
.strategy-chart__table td.is-stand  { color: var(--sc-stand);  background: var(--sc-stand-soft); }
.strategy-chart__table td.is-double { color: var(--sc-double); background: var(--sc-double-soft); }
.strategy-chart__table td.is-split  { color: var(--sc-split);  background: var(--sc-split-soft); }
.strategy-chart__table td.is-surr   { color: var(--sc-surr);   background: var(--sc-surr-soft); }

/* кросс-подсветка строки/столбца при наведении (читаемость, не декор) */
.strategy-chart__table tbody tr:hover th { color: var(--brand); }
.strategy-chart__table tbody tr:hover td { box-shadow: inset 0 0 0 9999px color-mix(in srgb, var(--brand) 5%, transparent); }

/* ============================================================
 * Drawer-правила (нативный <details>)
 * ========================================================== */
.strategy-chart__notes {
  margin-top: var(--s-5);
  border: var(--hairline);
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.strategy-chart__notes-sum {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-4);
  font-weight: var(--fw-semi);
  color: var(--text);
  cursor: pointer;
  list-style: none;
}
.strategy-chart__notes-sum::-webkit-details-marker { display: none; }
.strategy-chart__notes-chev {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-base) var(--ease);
}
.strategy-chart__notes[open] .strategy-chart__notes-chev { transform: rotate(180deg); }
.strategy-chart__notes-body {
  padding: 0 var(--s-4) var(--s-4);
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
}
.strategy-chart__notes-body .muted { margin: 0; font-size: var(--t-small); line-height: var(--lh-base); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .strategy-chart { --sc-cell: 36px; }
  .strategy-chart__table th,
  .strategy-chart__table td { font-size: var(--t-tiny); }
}
@media (max-width: 640px) {
  .strategy-chart { --sc-cell: 34px; }
  .strategy-chart__title { font-size: var(--t-h3); }
  .strategy-chart__tablist { display: flex; width: 100%; }
  .strategy-chart__tab { flex: 1 1 auto; padding: 0 var(--s-2); }
  .strategy-chart__table tbody th,
  .strategy-chart__corner { min-width: 78px; }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .strategy-chart__tab,
  .strategy-chart__notes-chev { transition: none; }
}

/* ===== stream-schedule ===== */
/* ============================================================
 * stream-schedule · block.css
 * Скоуплено на .stream-schedule. Только токены (10-tokens/).
 * Owns: заголовок-блок + таймзона + карточка-обёртка с семантической <table>
 *       (когда · стример/платформа · тема · статус-чип · ОДНА CTA в строке).
 * Один акцент --brand (CTA/время LIVE); LIVE — --danger (по смыслу «в эфире»),
 *       «скоро» — --info, «запись» — нейтраль. Статус выражен текстом, не только цветом.
 * Время — tabular-nums. На <640 таблица «схлопывается» в карточки-строки (data-label).
 * Конвенция house-style: адаптивная таблица как data-table; ориентир casino-item-card.
 * Адаптив: 980 / 640.
 * ========================================================== */

.stream-schedule__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
}
.stream-schedule__heading { min-width: 0; }
.stream-schedule__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin-bottom: var(--s-2);
}
.stream-schedule__eyebrow-ic { display: inline-flex; color: var(--brand); }
.stream-schedule__title {
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.stream-schedule__lede { margin-top: var(--s-3); }

.stream-schedule__tz {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  color: var(--text-mute);
}
.stream-schedule__tz-ic { display: inline-flex; color: var(--text-faint); }
.stream-schedule__tz strong { font-variant-numeric: tabular-nums; color: var(--text-dim); }

/* ---- Карточка-обёртка таблицы ---- */
.stream-schedule__card {
  width: 100%;
  overflow-x: auto;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  -webkit-overflow-scrolling: touch;
}

/* ---- Таблица ---- */
.stream-schedule__table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--t-small);
}

/* Заголовки колонок */
.stream-schedule__table thead th {
  padding: var(--s-3) var(--s-4);
  text-align: left;
  white-space: nowrap;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
  background: var(--surface-2);
  border-bottom: var(--hairline);
}
.stream-schedule__col-cta { width: 1%; }

/* Ячейки */
.stream-schedule__table td,
.stream-schedule__table th[scope="row"] {
  padding: var(--s-3) var(--s-4);
  text-align: left;
  vertical-align: middle;
  border-bottom: var(--hairline);
  color: var(--text-dim);
}
.stream-schedule__table tbody tr:last-child td,
.stream-schedule__table tbody tr:last-child th[scope="row"] { border-bottom: 0; }

.stream-schedule__row { transition: background var(--dur-quick) var(--ease); }
.stream-schedule__row:hover { background: var(--bg-2); }
.stream-schedule__row--live { background: var(--brand-soft); }
.stream-schedule__row--live:hover { background: color-mix(in srgb, var(--brand) 14%, transparent); }
.stream-schedule__row--past { color: var(--text-mute); }
.stream-schedule__row--past .stream-schedule__streamer { color: var(--text-mute); }

/* ---- Колонка «когда» ---- */
.stream-schedule__when { white-space: nowrap; }
.stream-schedule__day {
  display: block;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.stream-schedule__time {
  display: block;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.stream-schedule__row--live .stream-schedule__time { color: var(--brand); }

/* ---- Колонка «стример» ---- */
.stream-schedule__streamer {
  display: block;
  font-weight: var(--fw-semi);
  color: var(--text);
}
.stream-schedule__platform {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  margin-top: 2px;
  font-size: var(--t-tiny);
  color: var(--text-mute);
}
.stream-schedule__platform-ic { display: inline-flex; flex: 0 0 auto; }

/* ---- Колонка «тема» ---- */
.stream-schedule__what { color: var(--text-dim); }

/* ---- Статус-чип (текст + цвет по смыслу) ---- */
.stream-schedule__chip {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  border-radius: var(--r-pill);
  white-space: nowrap;
  color: var(--text-mute);
  background: var(--bg-2);
}
.stream-schedule__chip--live { color: var(--danger); background: var(--danger-soft); }
.stream-schedule__chip--soon { color: var(--info); background: var(--info-soft); }
.stream-schedule__chip--past { color: var(--text-mute); background: var(--bg-3); }
.stream-schedule__live-dot {
  width: 7px;
  height: 7px;
  border-radius: var(--r-pill);
  background: var(--danger);
  box-shadow: 0 0 0 0 var(--danger-soft);
  animation: ss-pulse 1.8s var(--ease) infinite;
}
@keyframes ss-pulse {
  0%   { box-shadow: 0 0 0 0 var(--danger-soft); }
  70%  { box-shadow: 0 0 0 7px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* ---- CTA-ячейка ---- */
.stream-schedule__cta-cell { text-align: right; white-space: nowrap; }

/* ---- Reassurance ---- */
.stream-schedule__note {
  margin-top: var(--s-4);
  font-size: var(--t-tiny);
  color: var(--text-mute);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .stream-schedule__table thead th,
  .stream-schedule__table td,
  .stream-schedule__table th[scope="row"] { padding: var(--s-3); }
}

/* На узких экранах таблица «схлопывается» в карточки-строки (data-label). */
@media (max-width: 640px) {
  .stream-schedule__title { font-size: var(--t-h3); }

  .stream-schedule__card {
    overflow-x: visible;
    border: 0;
    background: transparent;
    box-shadow: none;
  }
  .stream-schedule__table thead { display: none; }
  .stream-schedule__table tbody { display: block; }

  .stream-schedule__row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: var(--s-2) var(--s-3);
    align-items: center;
    margin-bottom: var(--s-4);
    padding: var(--s-4);
    background: var(--surface);
    border: var(--hairline);
    border-radius: var(--r-lg);
    box-shadow: var(--shadow-card);
  }
  .stream-schedule__row--live { background: var(--brand-soft); }
  .stream-schedule__row:hover { background: var(--surface); }
  .stream-schedule__row--live:hover { background: var(--brand-soft); }

  .stream-schedule__table td,
  .stream-schedule__table th[scope="row"] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--s-3);
    padding: 0;
    text-align: right;
    border-bottom: 0;
  }
  /* подпись колонки перед значением */
  .stream-schedule__table td::before {
    content: attr(data-label);
    flex: 0 0 auto;
    font-size: var(--t-tiny);
    letter-spacing: .04em;
    text-transform: uppercase;
    font-weight: var(--fw-semi);
    color: var(--text-mute);
    text-align: left;
  }

  /* «когда» — заголовок карточки-строки на всю ширину */
  .stream-schedule__when {
    grid-column: 1 / -1;
    justify-content: flex-start;
    gap: var(--s-2);
    padding-bottom: var(--s-3);
    margin-bottom: var(--s-1);
    border-bottom: var(--hairline);
  }
  .stream-schedule__day { display: inline; }
  .stream-schedule__time { display: inline; font-size: var(--t-h4); }

  .stream-schedule__who,
  .stream-schedule__what { grid-column: 1 / -1; }

  /* CTA — на всю ширину карточки */
  .stream-schedule__cta-cell {
    grid-column: 1 / -1;
    justify-content: stretch;
    margin-top: var(--s-2);
  }
  .stream-schedule__cta-cell::before { content: none; }
  .stream-schedule__cta-cell .btn { width: 100%; }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .stream-schedule__live-dot { animation: none; }
}

/* ===== strengths-weaknesses ===== */
/* ============================================================
 * strengths-weaknesses · block.css
 * Скоуплено на .swot. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   карточка-вердикт в фикс-слотах, dataviz-метры (не звёзды), tabular-nums,
 *   дисциплина нейтралей. Паттерн метра/--val и drawer'а — из scorecard;
 *   смысловые цвета +/− (--success/--danger) — из pros-cons.
 * Один акцент — --brand (балл-вердикт, CTA). --success/--danger ТОЛЬКО по смыслу
 *   (сильная/слабая сторона), не как декор. Метры — нейтральный рейтинг-градиент,
 *   единый визуальный язык для обеих групп.
 * Источник истины метра — --val (0..10) на .swot__item; ширина = --val×10%.
 * Адаптив: 980 / 640. touch ≥ --tap-min. JS: components.js (disclosure) — прогрессивно.
 * ========================================================== */

.swot {
  --swot-meter-h: 6px;     /* высота dataviz-метра критерия */
  --swot-score-w: 4ch;     /* фикс-слот балла справа (выравнивание чисел) */
  --swot-edge: 3px;        /* толщина «температурной» кромки группы */

  display: flex;
  flex-direction: column;
  gap: var(--s-5);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text);
}

/* ---- Шапка: рубрика + заголовок + агрегат-вердикт ---- */
.swot__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-4) var(--s-5);
  padding-bottom: var(--s-5);
  border-bottom: var(--hairline);
}
.swot__heading { display: flex; flex-direction: column; gap: var(--s-1); min-width: 0; }
.swot__eyebrow {
  margin: 0;
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .12em; text-transform: uppercase; color: var(--text-mute);
}
.swot__title {
  margin: 0;
  font-family: var(--font-display); font-size: var(--t-h3);
  font-weight: var(--fw-bold); line-height: var(--lh-snug); color: var(--text);
}

/* Агрегат-вердикт (фикс-слот справа) — единственный --brand-акцент в шапке */
.swot__verdict { display: flex; align-items: baseline; gap: var(--s-2); text-align: right; }
.swot__verdict-num {
  font-family: var(--font-display); font-size: var(--t-h1);
  font-weight: var(--fw-bold); line-height: 1; color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.swot__verdict-scale {
  font-size: var(--t-h4); font-weight: var(--fw-medium); color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}
.swot__verdict-tag {
  align-self: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--brand); background: var(--brand-soft);
  border-radius: var(--r-pill); white-space: nowrap;
}

/* ---- Две группы рядом ---- */
.swot__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-5);
  align-items: start;
}

/* ---- Группа: лёгкая «температурная» кромка задаёт знак, без мульти-акцента ---- */
.swot__group {
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  padding: var(--s-4);
  background: var(--bg-2);
  border-radius: var(--r-md);
  border-top: var(--swot-edge) solid var(--swot-edge-c, var(--rule));
}
.swot__group--pro { --swot-edge-c: var(--success); }
.swot__group--con { --swot-edge-c: var(--danger); }

/* Заголовок группы + глиф в кружке (смысл продублирован глифом и текстом) */
.swot__group-title {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  padding-bottom: var(--s-3);
  border-bottom: var(--hairline);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.swot__group-glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  border-radius: var(--r-pill);
}
.swot__group-glyph--pro { color: var(--success); background: var(--success-soft); }
.swot__group-glyph--con { color: var(--danger);  background: var(--danger-soft); }

/* ---- Список критериев ---- */
.swot__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}

/* Один критерий: шапка-строка, метр, blurb */
.swot__item { display: flex; flex-direction: column; gap: var(--s-2); }

.swot__item-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) var(--swot-score-w);
  align-items: center;
  gap: var(--s-2) var(--s-3);
}

/* Фикс-слот маркера — критерии выровнены при любой длине лейбла */
.swot__mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  border-radius: var(--r-pill);
}
.swot__mark--pro { color: var(--success); background: var(--success-soft); }
.swot__mark--con { color: var(--danger);  background: var(--danger-soft); }

.swot__crit {
  min-width: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-dim);
}

/* Балл — фикс-слот справа, табличные цифры */
.swot__score {
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

/* ---- Dataviz-метр (источник истины — --val 0..10 на .swot__item) ---- */
.swot__meter {
  height: var(--swot-meter-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.swot__meter-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  width: calc(var(--val, 0) * 10%);
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease);
}

/* ---- Per-item blurb ---- */
.swot__blurb {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}
.swot__num {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semi);
  color: var(--text-dim);
}

/* ---- Подвал: drawer методологии (держит карточку чистой) + ОДНА CTA ---- */
.swot__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  flex-wrap: wrap;
  padding-top: var(--s-5);
  border-top: var(--hairline);
}
.swot__method { min-width: 0; flex: 1 1 auto; }
.swot__method-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.swot__method-btn:hover { color: var(--brand); }
.swot__method-chev { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.swot__method-btn[aria-expanded="true"] .swot__method-chev { transform: rotate(180deg); }

.swot__drawer {
  margin-top: var(--s-3);
  padding: var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.swot__drawer[hidden] { display: none; }
.swot__drawer p { margin: 0; }

.swot__cta { flex: 0 0 auto; }

/* ---- Модификатор: компактный (врезка/сайдбар, без подвала-CTA) ---- */
.swot--compact { gap: var(--s-4); padding: var(--s-4); }
.swot--compact .swot__head { padding-bottom: var(--s-4); }
.swot--compact .swot__grid { gap: var(--s-4); }
.swot--compact .swot__group { gap: var(--s-3); }
.swot--compact .swot__list { gap: var(--s-3); }
.swot--compact .swot__verdict-num { font-size: var(--t-h2); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .swot__grid { gap: var(--s-4); }
}
@media (max-width: 640px) {
  .swot { padding: var(--s-4); gap: var(--s-4); }
  .swot__head {
    grid-template-columns: 1fr;
    gap: var(--s-3);
    text-align: left;
  }
  .swot__verdict { justify-content: flex-start; text-align: left; }
  /* Группы складываются в одну колонку */
  .swot__grid { grid-template-columns: 1fr; }
  .swot__foot { flex-direction: column; align-items: stretch; }
  .swot__cta.btn { width: 100%; }
}

/* ===== tabs ===== */
/* ============================================================
 * tabs · block.css
 * Скоуплено на .tabs. Только токены (10-tokens/).
 * Конвенция: ★research / премиум-планка (готовой разметки нет) — спроектировано
 *   по premium-сигналам и эталону casino-item-card. Таб-бар — «underline»-вариант
 *   сегмент-контрола (родственник sort-controls / free-chips-amount-tabs).
 * Переключение БЕЗ JS: нативные <input type="radio"> + CSS :checked / :has().
 *   :has() показывает панель, чей id совпал с data-panel у :checked-инпута;
 *   есть JS-fallback по [hidden] (см. data-action="tab" в block.md) для браузеров
 *   без :has(). Деградация без обоих: панели идут стопкой, контент доступен.
 * Один акцент: активная таба + индикатор-подчёркивание = --brand. Нейтрали — для
 *   неактивных. Числа (счётчики/факты) — font-variant-numeric: tabular-nums.
 * Адаптив: 980 / 640 (на узком — таб-бар горизонтально скроллится). touch ≥ --tap-min.
 * ========================================================== */

.tabs {
  display: flow-root;
  font-family: var(--font-body);
  color: var(--text);
}

/* единые табличные цифры для любых чисел внутри блока */
.tabs__count,
.tabs__fact-v { font-variant-numeric: tabular-nums; }

/* ---- Шапка (опциональна) ---- */
.tabs__head { margin-bottom: var(--s-4); }
.tabs__eyebrow {
  margin: 0 0 var(--s-1);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.tabs__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* ============================================================
 * Таб-бар (radiogroup) — нижняя «линейка» + бегущий индикатор
 * ========================================================== */
.tabs__bar {
  position: relative;
  margin-bottom: var(--s-5);
  border-bottom: var(--hairline);
}
.tabs__list {
  display: flex;
  gap: var(--s-1);
  /* индикатор активной табы рисуем общим псевдо у списка — но проще на самой табе;
     здесь держим только раскладку */
}

.tabs__tab {
  display: block;
  flex: 0 0 auto;
  cursor: pointer;
}

/* нативный radio: убран из вида паттерном .visually-hidden, НО фокусируемый
   (a11y + клавиатура radiogroup: стрелки переключают, Tab входит/выходит) */
.tabs__input {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  clip: rect(0 0 0 0); clip-path: inset(50%);
  overflow: hidden; white-space: nowrap;
}

/* видимая «таба» */
.tabs__btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  line-height: 1;
  color: var(--text-mute);
  white-space: nowrap;
  border-radius: var(--r-md) var(--r-md) 0 0;
  transition: color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease);
}
/* бегущий индикатор-подчёркивание (сидит на нижней линейке бара) */
.tabs__btn::after {
  content: "";
  position: absolute;
  left: var(--s-3); right: var(--s-3);
  bottom: -1px;                 /* перекрывает hairline бара */
  height: 2px;
  background: var(--brand);
  border-radius: var(--r-pill);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform var(--dur-base) var(--ease);
}
.tabs__tab:hover .tabs__btn { color: var(--text); background: var(--bg-2); }

.tabs__ic { display: inline-flex; color: var(--text-faint); transition: color var(--dur-quick) var(--ease); }

.tabs__label { font-weight: inherit; }

/* счётчик-бейдж (tabular-nums) */
.tabs__count {
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  transition: color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}

/* активная таба (:checked) — единственное пятно акцента в баре */
.tabs__input:checked ~ .tabs__btn { color: var(--brand); }
.tabs__input:checked ~ .tabs__btn::after { transform: scaleX(1); }
.tabs__input:checked ~ .tabs__btn .tabs__ic { color: var(--brand); }
.tabs__input:checked ~ .tabs__btn .tabs__count { color: var(--on-brand); background: var(--brand); }

/* фокус с клавиатуры — кольцо на видимой табе (нативный focus-visible base — на скрытом input) */
.tabs__input:focus-visible ~ .tabs__btn {
  outline: 2px solid var(--brand);
  outline-offset: -2px;
  border-radius: var(--r-md);
}

/* ============================================================
 * Панели контента: видима ровно одна (соответствует :checked)
 * ========================================================== */
.tabs__panels { display: block; }

/* База (без :has): панели не схлопнуты — JS-fallback скрывает неактивные через
   [hidden]; без JS и без :has() контент доступен стопкой. */
.tabs__panel { display: block; }
.tabs__panel + .tabs__panel { margin-top: var(--s-5); }
.tabs__panel[hidden] { display: none; }

/* :has()-маршрут (без JS): показываем только панель, чей id == data-panel
   у :checked-инпута; прочие прячем. */
@supports selector(:has(*)) {
  .tabs__panels .tabs__panel { display: none; margin-top: 0; }
  .tabs:has(.tabs__input[data-panel="tabs-1-p-bonuses"]:checked)  #tabs-1-p-bonuses,
  .tabs:has(.tabs__input[data-panel="tabs-1-p-games"]:checked)    #tabs-1-p-games,
  .tabs:has(.tabs__input[data-panel="tabs-1-p-payments"]:checked) #tabs-1-p-payments,
  .tabs:has(.tabs__input[data-panel="tabs-1-p-support"]:checked)  #tabs-1-p-support,
  .tabs:has(.tabs__input[data-panel="tabs-2-p-crypto"]:checked)   #tabs-2-p-crypto,
  .tabs:has(.tabs__input[data-panel="tabs-2-p-ewallet"]:checked)  #tabs-2-p-ewallet,
  .tabs:has(.tabs__input[data-panel="tabs-2-p-card"]:checked)     #tabs-2-p-card {
    display: block;
  }
}

/* лёгкое появление активной панели (subtle motion; reduced-motion гасит --dur-*) */
@media (prefers-reduced-motion: no-preference) {
  .tabs__panels .tabs__panel { animation: tabs-panel-in var(--dur-base) var(--ease); }
}
@keyframes tabs-panel-in {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: none; }
}

/* ---- Контент панели ---- */
.tabs__panel-title {
  margin: 0 0 var(--s-2);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.tabs__panel-lede {
  margin: 0 0 var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  max-width: var(--container-prose);
}

/* фикс-слоты фактов (карточная сетка как мини-грид эталона) */
.tabs__facts {
  margin: 0 0 var(--s-4);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: var(--s-2);
}
.tabs__fact {
  padding: var(--s-2) var(--s-3);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.tabs__fact-k {
  margin: 0;
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.tabs__fact-v {
  margin: 2px 0 0;
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* ОДНА CTA на панель */
.tabs__cta { align-self: flex-start; }

/* ============================================================
 * Модификатор --pill: компактный сегмент-контрол-«таблетка»
 * (без нижней линейки/индикатора — заливка активной табы)
 * ========================================================== */
.tabs--pill .tabs__bar {
  border-bottom: none;
}
.tabs--pill .tabs__list {
  display: inline-flex;
  flex-wrap: wrap;
  gap: var(--s-1);
  padding: var(--s-1);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
}
.tabs--pill .tabs__btn {
  border-radius: var(--r-pill);
  padding: var(--s-2) var(--s-4);
}
.tabs--pill .tabs__btn::after { content: none; }
.tabs--pill .tabs__tab:hover .tabs__btn { background: var(--surface); }
.tabs--pill .tabs__input:checked ~ .tabs__btn {
  color: var(--on-brand);
  background: var(--brand);
  box-shadow: var(--shadow-card);
}
.tabs--pill .tabs__tab:hover .tabs__input:checked ~ .tabs__btn {
  background: color-mix(in srgb, var(--brand) 88%, #000);
}
.tabs--pill .tabs__input:focus-visible ~ .tabs__btn {
  outline-offset: 2px;
  border-radius: var(--r-pill);
}

/* ============================================================
 * Адаптив
 * ========================================================== */
@media (max-width: 980px) {
  .tabs__btn { padding-inline: var(--s-2); }
}

@media (max-width: 640px) {
  /* таб-бар не «слипается»: горизонтальный скролл, табы не переносятся */
  .tabs__list {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .tabs__list::-webkit-scrollbar { display: none; }
  .tabs--pill .tabs__list { flex-wrap: nowrap; }
  .tabs__count { display: none; }   /* экономим ширину табов на мобайле */
}

/* ===== telegram-community-cta ===== */
/* ============================================================
 * telegram-community-cta · block.css
 * Скоуплено на .telegram-community-cta. Только токены (10-tokens/).
 * Owns: карточка-поверхность с бренд-слотом канала, метриками (фикс-слоты),
 *       ОДНОЙ primary CTA и раскрываемым drawer «что внутри».
 * Один акцент --brand (логотип/verified/CTA/live); прочее — нейтрали.
 * Карточка: --surface + --hairline + --r-lg + --shadow-card. Числа — tabular-nums.
 * Конвенция house-style: contact-cta-block / cta-primary; ориентир casino-item-card.
 * Адаптив: 980 / 640.
 * ========================================================== */

.telegram-community-cta__card {
  max-width: var(--container-prose);
  margin-inline: auto;
  padding: var(--s-6);
  text-align: center;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
}

/* ---- Бренд-слот канала ---- */
.telegram-community-cta__brand {
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
  margin-bottom: var(--s-4);
}
.telegram-community-cta__logo {
  flex: 0 0 auto;
  width: 52px;
  height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
}
.telegram-community-cta__brand-body { text-align: left; }
.telegram-community-cta__channel {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
}
.telegram-community-cta__verified {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
}
.telegram-community-cta__channel-sub {
  display: block;
  font-size: var(--t-tiny);
  color: var(--text-mute);
}

/* ---- Заголовок + lede ---- */
.telegram-community-cta__title {
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.telegram-community-cta__lede {
  max-width: 48ch;
  margin: var(--s-3) auto 0;
  font-size: var(--t-h4);
  line-height: var(--lh-loose);
  color: var(--text-dim);
}

/* ---- Метрики (фикс-слоты, dataviz-числа) ---- */
.telegram-community-cta__stats {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--s-3);
  margin: var(--s-5) 0 0;
}
.telegram-community-cta__stat {
  flex: 1 1 0;
  min-width: 120px;
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.telegram-community-cta__stat-k {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.telegram-community-cta__stat-v {
  margin-top: 2px;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.telegram-community-cta__stat-v--live {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  color: var(--success);
}
.telegram-community-cta__live-dot {
  width: 8px;
  height: 8px;
  border-radius: var(--r-pill);
  background: var(--success);
  box-shadow: 0 0 0 0 var(--success-soft);
  animation: tgc-pulse 2s var(--ease) infinite;
}
@keyframes tgc-pulse {
  0%   { box-shadow: 0 0 0 0 var(--success-soft); }
  70%  { box-shadow: 0 0 0 8px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* ---- ОДНА CTA ---- */
.telegram-community-cta__action { margin-top: var(--s-5); }
.telegram-community-cta__btn { /* наследует .btn--primary --lg; bespoke-иконка в потоке */ }
.telegram-community-cta__action-sub {
  margin-top: var(--s-2);
  font-size: var(--t-tiny);
  color: var(--text-faint);
}

/* ---- Drawer «что внутри» ---- */
.telegram-community-cta__drawer {
  margin-top: var(--s-5);
  padding-top: var(--s-4);
  border-top: var(--hairline);
}
.telegram-community-cta__drawer-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.telegram-community-cta__drawer-btn:hover { color: var(--brand); }
.telegram-community-cta__drawer-ic { transition: transform var(--dur-base) var(--ease-out); }
.telegram-community-cta__drawer-btn[aria-expanded="true"] { color: var(--brand); }
.telegram-community-cta__drawer-btn[aria-expanded="true"] .telegram-community-cta__drawer-ic { transform: rotate(180deg); }

.telegram-community-cta__drawer-body[hidden] { display: none; }
.telegram-community-cta__perks {
  list-style: none;
  margin: var(--s-3) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  text-align: left;
}
.telegram-community-cta__perk {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-dim);
}
.telegram-community-cta__perk-ic { flex: 0 0 auto; margin-top: 2px; color: var(--success); }

/* ---- Reassurance ---- */
.telegram-community-cta__note {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin-top: var(--s-5);
  font-size: var(--t-tiny);
  color: var(--text-mute);
}
.telegram-community-cta__note-ic { display: inline-flex; flex: 0 0 auto; color: var(--text-faint); }

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  .telegram-community-cta__card { padding: var(--s-5) var(--s-4); }
  .telegram-community-cta__title { font-size: var(--t-h3); }
  .telegram-community-cta__lede { font-size: var(--t-body); }
  .telegram-community-cta__stats { gap: var(--s-2); }
  .telegram-community-cta__stat { min-width: calc(50% - var(--s-2)); }
  .telegram-community-cta__btn { width: 100%; }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .telegram-community-cta__live-dot { animation: none; }
  .telegram-community-cta__drawer-ic { transition: none; }
}

/* ===== timeline ===== */
/* ============================================================
 * timeline · block.css
 * Скоуплено на .timeline. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   вертикальный «гроссбух событий» в фикс-слотах (колонка года, рельс),
 *   хайрлайн-разделители, tabular-nums, дисциплина нейтралей.
 * Эталон нейминга/слотов: casino-item-card. Рельс-линия и счётчик-логика —
 *   из howto-steps (::after-коннектор). Опц. drawer деталей — как rating-ledger.
 * Один акцент — --brand (текущая веха + метка-год + CTA); --success/--danger
 *   ТОЛЬКО по смыслу (тип события: запуск/санкция). Состояние — не только цветом.
 * Адаптив: 980 / 640. touch ≥ --tap-min. Motion функц. (наследует reduced-motion).
 * ========================================================== */

.timeline {
  /* фикс-слоты: колонка года, точка-узел, толщина рельса */
  --tl-year-col: 84px;
  --tl-node: 16px;
  --tl-rail: 2px;
  /* колонка узла = диаметр точки + воздух с двух сторон */
  --tl-node-col: calc(var(--tl-node) + var(--s-5));

  display: flow-root;
  color: var(--text);
}

/* ---- Шапка блока: подпись-источник + бейдж «обновлено» ---- */
.timeline__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-5);
  flex-wrap: wrap;
}
.timeline__caption {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-mute);
}
.timeline__updated {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.timeline__updated-ic { display: inline-flex; }

/* ---- Список событий (вертикальный) ---- */
.timeline__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

/* ---- Событие: грид «год | узел+рельс | заметка» ---- */
.timeline__item {
  position: relative;
  display: grid;
  grid-template-columns: var(--tl-year-col) var(--tl-node-col) minmax(0, 1fr);
  grid-template-areas: "year node note";
  column-gap: var(--s-2);
  align-items: start;
  padding-bottom: var(--s-6);
}
.timeline__item:last-child { padding-bottom: 0; }

/* Вертикальный рельс — функциональный индикатор непрерывности хронологии.
   Тянется от центра точки до следующего узла; у последнего события обрезан. */
.timeline__item:not(:last-child)::after {
  content: "";
  position: absolute;
  grid-area: node;
  top: calc(var(--tl-node) / 2);
  left: calc(var(--tl-year-col) + var(--s-2) + var(--tl-node-col) / 2);
  width: var(--tl-rail);
  height: 100%;
  background: var(--rule);
  transform: translateX(-50%);
}

/* ---- 1 · Колонка года (число — само «маркер», tabular-nums) ---- */
.timeline__year {
  grid-area: year;
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  color: var(--text);
  text-align: right;
  font-variant-numeric: tabular-nums;
  /* оптическое выравнивание базовой линии года с центром точки-узла */
  padding-top: calc((var(--tl-node) - 0.72em) / 2);
}
.timeline__sub {
  display: block;
  margin-top: 2px;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  letter-spacing: .04em;
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}

/* ---- 2 · Узел (точка на рельсе) ---- */
.timeline__node {
  grid-area: node;
  position: relative;
  z-index: var(--z-base);
  justify-self: center;
  width: var(--tl-node);
  height: var(--tl-node);
  margin-top: 0;
  border-radius: var(--r-pill);
  background: var(--surface);
  border: var(--tl-rail) solid var(--rule-strong);
  box-shadow: 0 0 0 var(--s-1) var(--bg);
}
/* Тип события задаётся ТОЛЬКО по смыслу (заливка точки) — не для декора:
   нейтральный=веха, brand=ключевая, success=запуск/лицензия, danger=санкция/уход. */
.timeline__item--key    .timeline__node { background: var(--brand);   border-color: var(--brand); }
.timeline__item--launch .timeline__node { background: var(--success); border-color: var(--success); }
.timeline__item--alert  .timeline__node { background: var(--danger);  border-color: var(--danger); }

/* Текущее/последнее событие — единственный акцент-пульс (один «фокус» на блок) */
.timeline__item--current .timeline__node {
  background: var(--brand);
  border-color: var(--brand);
  box-shadow: 0 0 0 var(--s-1) var(--bg), 0 0 0 calc(var(--s-1) + 3px) var(--brand-soft);
}

/* ---- 3 · Карточка-заметка ---- */
.timeline__note {
  grid-area: note;
  min-width: 0;
  padding: var(--s-4) var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease);
}
.timeline__note:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }
/* лидер-карточка: тонкая акцент-рамка слева, без второго цвета */
.timeline__item--current .timeline__note {
  border-color: var(--rule-strong);
  box-shadow: inset 3px 0 0 0 var(--brand), var(--shadow-card);
}

.timeline__note-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  flex-wrap: wrap;
}
.timeline__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Тег-чип типа события (нейтральный; смысл дублируется текстом, не только цветом) */
.timeline__tag {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  flex: 0 0 auto;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--text-dim);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.timeline__tag-dot {
  width: 6px;
  height: 6px;
  flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: var(--text-faint);
}
.timeline__item--key    .timeline__tag-dot { background: var(--brand); }
.timeline__item--launch .timeline__tag-dot { background: var(--success); }
.timeline__item--alert  .timeline__tag-dot { background: var(--danger); }

.timeline__text {
  margin: var(--s-2) 0 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
.timeline__num { font-variant-numeric: tabular-nums; }

/* Мета-полоса значений (опц.): фикс-слоты метрик, tabular-nums (dataviz, не звёзды) */
.timeline__metrics {
  list-style: none;
  margin: var(--s-3) 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2) var(--s-5);
}
.timeline__metric { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.timeline__metric dt {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.timeline__metric dd {
  margin: 0;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
/* функциональная дельта значения — только по смыслу (рост/падение) */
.timeline__delta--up   { color: var(--success); }
.timeline__delta--down { color: var(--danger); }

/* ---- Опц. drawer деталей (источники/изменения) — держит карточку чистой ---- */
.timeline__more {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  margin-top: var(--s-2);
  padding: 0;
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.timeline__more:hover { color: var(--brand); }
.timeline__more-ic { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.timeline__more[aria-expanded="true"] .timeline__more-ic { transform: rotate(180deg); }
.timeline__more[aria-expanded="true"] { color: var(--brand); }

.timeline__drawer {
  margin-top: var(--s-3);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.timeline__drawer[hidden] { display: none; }
.timeline__drawer p { margin: 0; }
.timeline__drawer p + p { margin-top: var(--s-2); }

/* ---- Подвал: примечание/дисклеймер ---- */
.timeline__foot {
  margin-top: var(--s-5);
  padding-left: calc(var(--tl-year-col) + var(--s-2) + var(--tl-node-col));
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-faint);
}

/* ============================================================
 * Адаптив ≤980px — год переезжает НАД заметку, рельс прижимается влево.
 * ========================================================== */
@media (max-width: 980px) {
  .timeline { --tl-node-col: calc(var(--tl-node) + var(--s-4)); }

  .timeline__item {
    grid-template-columns: var(--tl-node-col) minmax(0, 1fr);
    grid-template-areas:
      "node year"
      "node note";
    column-gap: var(--s-3);
    row-gap: var(--s-2);
    padding-bottom: var(--s-5);
  }
  .timeline__item:not(:last-child)::after {
    left: calc(var(--tl-node-col) / 2);
  }
  .timeline__year {
    text-align: left;
    font-size: var(--t-h4);
    padding-top: calc((var(--tl-node) - 0.72em) / 2);
  }
  .timeline__sub { display: inline; margin-top: 0; margin-left: var(--s-2); }
  .timeline__foot { padding-left: var(--tl-node-col); }
}

@media (max-width: 640px) {
  .timeline { --tl-node: 14px; }
  .timeline__note { padding: var(--s-3) var(--s-4); }
  .timeline__metrics { gap: var(--s-2) var(--s-4); }
  .timeline__foot { padding-left: 0; }
}

/* ===== tldr-takeaways ===== */
/* ============================================================
 * tldr-takeaways · block.css
 * Скоуплено на .tldr-takeaways. Только токены (10-tokens/).
 * House-style: портфельные блоки (.stk-*/.vs-*/.ledger) на наших токенах —
 *   карточка-врезка с буллетами-выводами в фикс-слотах, метрика-чипы (dataviz,
 *   не звёзды), tabular-nums, дисциплина нейтралей. Паттерн глифа-смысла +/−
 *   и drawer'а — как в strengths-weaknesses; нейминг/CTA-слот — из casino-item-card.
 * Один акцент — --brand (eyebrow «TL;DR», нейтральный буллет, CTA). --success/--danger
 *   ТОЛЬКО по смыслу вывода (плюс/минус), не как декор; смысл продублирован глифом+текстом.
 * Анатомия: .surface-карточка → head(eyebrow+title+lede) → list(глиф|текст|чип) → foot(drawer+CTA).
 * Адаптив: 980 / 640. touch ≥ --tap-min. JS: components.js (disclosure) — прогрессивно.
 * ========================================================== */

.tldr-takeaways {
  --tt-mark: 22px;        /* фикс-слот глифа буллета (единый вертикальный ритм) */
  --tt-chip-w: 80px;      /* фикс-слот метрика-чипа справа (выравнивание чисел) */
  --tt-edge: 3px;         /* толщина акцентной кромки врезки */

  display: flex;
  flex-direction: column;
  gap: var(--s-5);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  /* акцентная кромка слева — «врезка», единственный --brand в шасси блока */
  border-left: var(--tt-edge) solid var(--brand);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  color: var(--text);
}

/* ---- Шапка: eyebrow «TL;DR» + заголовок + лид ---- */
.tldr-takeaways__head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
}

.tldr-takeaways__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  align-self: flex-start;
  margin: 0;
  padding: 2px var(--s-2);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.tldr-takeaways__eyebrow-ic { display: inline-flex; }

.tldr-takeaways__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

.tldr-takeaways__lede {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- Список выводов ---- */
.tldr-takeaways__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}

/* Один вывод: [глиф | текст | опц. метрика-чип] на общей базовой линии.
   chip-колонка фиксированной ширины → числа всех буллетов выровнены в столбик. */
.tldr-takeaways__item {
  display: grid;
  grid-template-columns: var(--tt-mark) minmax(0, 1fr) var(--tt-chip-w);
  align-items: baseline;
  gap: var(--s-2) var(--s-3);
}
/* буллет без чипа — текст забирает слот метрики, ничего не «провисает» */
.tldr-takeaways__item:not(:has(.tldr-takeaways__chip)) {
  grid-template-columns: var(--tt-mark) minmax(0, 1fr);
}

/* ---- Глиф буллета: фикс-слот, цвет = СМЫСЛ вывода (нейтраль = --brand) ---- */
.tldr-takeaways__mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: var(--tt-mark);
  height: var(--tt-mark);
  /* оптическое выравнивание кружка-слота к первой строке текста (baseline-грид) */
  transform: translateY(0.18em);
  border-radius: var(--r-pill);
  color: var(--brand);
  background: var(--brand-soft);
}
/* смысл вывода — продублирован глифом (галка/минус) и текстом, не только цветом */
.tldr-takeaways__mark--pro { color: var(--success); background: var(--success-soft); }
.tldr-takeaways__mark--con { color: var(--danger);  background: var(--danger-soft); }
.tldr-takeaways__mark svg { display: block; }

/* ---- Текст вывода ---- */
.tldr-takeaways__text {
  min-width: 0;
  margin: 0;
  font-size: var(--t-body);
  line-height: var(--lh-base);
  color: var(--text-dim);
}
/* число в выводе (рейтинг/процент/сумма/срок) — табличные цифры */
.tldr-takeaways__num {
  font-variant-numeric: tabular-nums;
  font-weight: var(--fw-semi);
  color: var(--text);
  white-space: nowrap;
}

/* ---- Метрика-чип (опц.): нейтральный по умолчанию; знак — по смыслу вывода ----
   dataviz-замена звёзд: компактная оценка критерия в фикс-слоте справа. */
.tldr-takeaways__chip {
  --tt-chip-c: var(--brand);
  --tt-chip-soft: var(--brand-soft);

  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
  justify-self: end;
  padding: var(--s-1) var(--s-2);
  text-align: right;
  background: var(--tt-chip-soft);
  border-radius: var(--r-md);
}
.tldr-takeaways__chip--good { --tt-chip-c: var(--success); --tt-chip-soft: var(--success-soft); }
.tldr-takeaways__chip--bad  { --tt-chip-c: var(--danger);  --tt-chip-soft: var(--danger-soft); }

.tldr-takeaways__chip-k {
  font-size: var(--t-tiny);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  white-space: nowrap;
}
.tldr-takeaways__chip-v {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: 1;
  color: var(--tt-chip-c);
  font-variant-numeric: tabular-nums;
}
.tldr-takeaways__chip-v small {
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-faint);
}

/* ---- Подвал: drawer-методология (держит врезку чистой) + ОДНА CTA ---- */
.tldr-takeaways__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  flex-wrap: wrap;
  padding-top: var(--s-5);
  border-top: var(--hairline);
}
.tldr-takeaways__method { min-width: 0; flex: 1 1 auto; }
.tldr-takeaways__method-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: var(--tap-min);
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease);
}
.tldr-takeaways__method-btn:hover { color: var(--brand); }
.tldr-takeaways__method-chev { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.tldr-takeaways__method-btn[aria-expanded="true"] .tldr-takeaways__method-chev { transform: rotate(180deg); }

.tldr-takeaways__drawer {
  margin-top: var(--s-3);
  padding: var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-dim);
  background: var(--bg-2);
  border-radius: var(--r-md);
}
.tldr-takeaways__drawer[hidden] { display: none; }
.tldr-takeaways__drawer p { margin: 0; }

.tldr-takeaways__cta { flex: 0 0 auto; }

/* ---- Модификатор: компактный (врезка/сайдбар) — плотнее, без подвала ---- */
.tldr-takeaways--compact { gap: var(--s-4); padding: var(--s-4); }
.tldr-takeaways--compact .tldr-takeaways__list { gap: var(--s-3); }
.tldr-takeaways--compact .tldr-takeaways__text { font-size: var(--t-small); }
.tldr-takeaways--compact .tldr-takeaways__title { font-size: var(--t-h4); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .tldr-takeaways { padding: var(--s-4); }
}
@media (max-width: 640px) {
  .tldr-takeaways { gap: var(--s-4); padding: var(--s-4); }

  /* чип уходит под текст: глиф фиксирован слева, текст+чип в одной колонке */
  .tldr-takeaways__item,
  .tldr-takeaways__item:not(:has(.tldr-takeaways__chip)) {
    grid-template-columns: var(--tt-mark) minmax(0, 1fr);
    gap: var(--s-2) var(--s-3);
  }
  .tldr-takeaways__chip {
    grid-column: 2;
    flex-direction: row;
    align-items: baseline;
    align-self: flex-start;
    justify-self: start;
    gap: var(--s-2);
  }
  .tldr-takeaways__chip-v { font-size: var(--t-body); }

  .tldr-takeaways__foot { flex-direction: column; align-items: stretch; }
  .tldr-takeaways__cta.btn { width: 100%; }
}

/* ===== toc ===== */
/* ============================================================
 * toc · block.css
 * Скоуплено на .toc. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-base (nav>ol с якорями). Адаптив: 980 / 640.
 * Нумерация пунктов — CSS counter (counter-reset/increment), НЕ в HTML.
 * Sticky на desktop — опц. (.toc--sticky). Раскрытие на моб. — нативный <details>.
 * ========================================================== */

.toc {
  /* отступ якорной прокрутки берётся из base (scroll-padding-top на html);
     ширина в сайдбаре — задаётся раскладкой страницы, здесь не фиксируем */
  font-family: var(--font-body);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);

  /* карточка-поверхность по контракту: surface + hairline + r-lg + shadow-card */
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  padding: var(--s-5);
}

/* ---- Заголовок блока ---- */
.toc__title {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0 0 var(--s-3);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
}
.toc__title-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--brand);
}

/* ---- Список (плоский) ----
   counter-reset на списке; каждый пункт инкрементит и рисует "01." через ::before. */
.toc__list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: toc;
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}

.toc__item { display: block; counter-increment: toc; }

/* ---- Ссылка-якорь ---- */
.toc__link,
.toc__sublink {
  display: flex;
  align-items: baseline;
  gap: var(--s-3);
  min-height: var(--tap-min);                 /* touch-target */
  padding: var(--s-2) var(--s-2);
  color: var(--text-dim);
  text-decoration: none;
  border-radius: var(--r-md);
  /* левый «рельс» под индикатор активного пункта (рисуется box-shadow inset) */
  box-shadow: inset 2px 0 0 transparent;
  transition:
    color var(--dur-quick) var(--ease),
    background var(--dur-quick) var(--ease),
    box-shadow var(--dur-quick) var(--ease);
}

/* Маркер-нумерация: моноширинный, табличные цифры, выровнен по правому краю слота */
.toc__link::before {
  content: counter(toc, decimal-leading-zero);
  flex: 0 0 auto;
  min-width: 2ch;
  font-family: var(--font-mono);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
  text-align: right;
  color: var(--text-faint);
  transition: color var(--dur-quick) var(--ease);
}

.toc__text { min-width: 0; }

/* Hover / focus — один акцент (--brand), мягкая подложка */
.toc__link:hover,
.toc__sublink:hover {
  color: var(--brand);
  background: var(--brand-soft);
}
.toc__link:hover::before { color: var(--brand); }

/* :focus-visible наследуется из base — только подвинем ринг внутрь скруглённого пункта */
.toc__link:focus-visible,
.toc__sublink:focus-visible { outline-offset: -2px; }

/* ---- Активный пункт (scroll-spy проставляет aria-current="location") ---- */
.toc__link[aria-current="location"],
.toc__sublink[aria-current="location"] {
  color: var(--brand);
  background: var(--brand-soft);
  font-weight: var(--fw-semi);
  box-shadow: inset 2px 0 0 var(--brand);     /* акцентный рельс слева */
}
.toc__link[aria-current="location"]::before { color: var(--brand); }

/* ---- Вложенный список (h3 под h2) ----
   собственный counter, маркер "—" (нейтральный, без двойной нумерации). */
.toc__sublist {
  list-style: none;
  margin: var(--s-1) 0 var(--s-1);
  padding-inline-start: calc(2ch + var(--s-3) + var(--s-2)); /* выравнивание под текст родителя */
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
}
.toc__subitem { display: block; }

.toc__sublink {
  min-height: 0;
  padding: var(--s-1) var(--s-2);
  font-size: var(--t-small);
  color: var(--text-mute);
}
.toc__sublink::before {
  content: "";
  flex: 0 0 auto;
  align-self: center;
  width: var(--s-3);
  height: 1px;
  background: var(--rule-strong);
  transition: background var(--dur-quick) var(--ease);
}
.toc__sublink:hover::before,
.toc__sublink[aria-current="location"]::before { background: var(--brand); }

/* ============ Вариант: sticky-сайдбар (desktop) ============ */
.toc--sticky {
  position: sticky;
  top: calc(var(--header-h) + var(--s-4));
  z-index: var(--z-sticky);
  /* не выше вьюпорта: длинное оглавление скроллится внутри себя */
  max-height: calc(100vh - var(--header-h) - var(--s-7));
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* ============ Вариант: раскрываемый <details> (для мобайла/инлайна) ============ */
.toc--collapsible { padding: 0; }            /* паддинг переносим внутрь summary/list */

.toc__summary {
  list-style: none;                          /* убираем нативный маркер-треугольник */
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-4) var(--s-5);
  cursor: pointer;
  user-select: none;
  border-radius: var(--r-lg);
}
.toc__summary::-webkit-details-marker { display: none; }
.toc__summary .toc__title { margin: 0; }
.toc__summary:hover { background: var(--brand-soft); }

.toc__summary-ic {
  display: inline-flex;
  flex: 0 0 auto;
  color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease), color var(--dur-quick) var(--ease);
}
.toc__summary:hover .toc__summary-ic { color: var(--brand); }
.toc--collapsible[open] .toc__summary-ic { transform: rotate(180deg); }

.toc--collapsible .toc__list { padding: 0 var(--s-5) var(--s-5); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  /* В одноколоночной раскладке sticky-сайдбар не имеет смысла — распускаем в поток. */
  .toc--sticky {
    position: static;
    max-height: none;
    overflow: visible;
  }
}

@media (max-width: 640px) {
  .toc { padding: var(--s-4); }
  .toc--collapsible { padding: 0; }
  /* Маркер-цифра компактнее, чтобы текст пунктов не жался */
  .toc__sublist { padding-inline-start: calc(2ch + var(--s-2) + var(--s-2)); }
}

/* ===== tools-card-grid ===== */
/* ============================================================
 * tools-card-grid · block.css
 * Скоуплено на .tools-card-grid. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка (своя разметка),
 * ориентир related-rail (грид + растянутая ссылка ::after) и country-grid (auto-fill).
 * Один акцент --brand (иконка-слот + заголовок-hover + стрелка); прочее — нейтрали.
 * Фикс-слот иконки; единые padding/radius/shadow; ОДНА цель на карточку (вся карточка — ссылка).
 * Адаптив: auto-fill 980/640. Reduced-motion гасит transform/transition.
 * ========================================================== */

.tools-card-grid {
  --tcg-min: 300px;           /* мин. ширина карточки в auto-fill */
  --tcg-icon: 48px;           /* фикс-слот иконки */
  display: block;
}

/* ---- Шапка ---- */
.tcg-head {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  margin-bottom: var(--s-5);
}
.tcg-head__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}
.tcg-head__lede { margin: 0; max-width: var(--container-prose); }

/* ---- Грид равных карточек (auto-fill) ---- */
.tcg-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--tcg-min), 1fr));
  gap: var(--s-4);
}
.tcg-grid__cell { display: flex; }

/* ============================================================
 * Карточка инструмента (вся кликабельна)
 * ========================================================== */
.tcg-card {
  position: relative;          /* контекст для растянутой ссылки */
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  width: 100%;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease), transform var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease);
}
.tcg-card:hover {
  box-shadow: var(--shadow-pop);
  transform: translateY(-2px);
  border-color: var(--rule-strong);
}
.tcg-card:focus-within { box-shadow: var(--shadow-pop); border-color: var(--rule-strong); }

/* иконка-слот — носитель акцента */
.tcg-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--tcg-icon);
  height: var(--tcg-icon);
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-md);
  transition: background var(--dur-quick) var(--ease);
}
.tcg-card:hover .tcg-card__icon,
.tcg-card:focus-within .tcg-card__icon { background: color-mix(in srgb, var(--brand) 16%, transparent); }

.tcg-card__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
}
.tcg-card__link {
  color: inherit;
  text-decoration: none;
  transition: color var(--dur-quick) var(--ease);
}
/* растягиваем ссылку на всю карточку (вся карточка — одна цель) */
.tcg-card__link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.tcg-card__link:hover,
.tcg-card:focus-within .tcg-card__link { color: var(--brand); }

.tcg-card__dek {
  margin: 0;
  font-size: var(--t-small);
  line-height: var(--lh-base);
  color: var(--text-mute);
  text-wrap: pretty;
  /* фикс-слот: 2 строки — ровный низ у соседних карточек */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}

/* ---- Подвал: тег-категория + стрелка ---- */
.tcg-card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  margin-top: auto;
  padding-top: var(--s-3);
  border-top: var(--hairline);
}
.tcg-card__tag {
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}
.tcg-card__arrow {
  flex: 0 0 auto;
  color: var(--text-mute);
  transition: transform var(--dur-quick) var(--ease-out), color var(--dur-quick) var(--ease);
}
.tcg-card:hover .tcg-card__arrow,
.tcg-card:focus-within .tcg-card__arrow { transform: translateX(3px); color: var(--brand); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .tools-card-grid { --tcg-min: 260px; }
}
@media (max-width: 640px) {
  .tools-card-grid { --tcg-min: 100%; }   /* одна колонка */
  .tcg-head__title { font-size: var(--t-h3); }
  .tcg-card { padding: var(--s-4); }
}

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  .tcg-card,
  .tcg-card__icon,
  .tcg-card__arrow,
  .tcg-card__link { transition: none; }
  .tcg-card:hover { transform: none; }
}

/* ===== top-n-list ===== */
/* ============================================================
 * top-n-list · block.css
 * Обёртка нумерованного топ-N. Скоуплено на .top-n-list. Только токены (10-tokens/).
 * Owns: заголовок + <ol class="casino-list"> (counter + ритм) + «Показать все» + .is-more.
 * НЕ стилизует .casino-item / .ci-* — это зона casino-item-card/block.css.
 * Конвенция разметки/JS: html-rating-guide. Адаптив: 980 / 640.
 * ========================================================== */

.top-n-list {
  --ci-logo: 124px;          /* размер слота лого карточек внутри списка */
  --tnl-gap: var(--s-4);     /* вертикальный шаг между слотами */
}

/* ---- Заголовок топа ---- */
.top-n-list__head {
  max-width: var(--container-prose);
  margin-bottom: var(--s-6);
}
.top-n-list__eyebrow { margin: 0 0 var(--s-2); }
.top-n-list__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  color: var(--text);
}
.top-n-list__lede { margin: var(--s-3) 0 0; }
.top-n-list__meta {
  display: block;
  margin-top: var(--s-2);
  font-size: var(--t-small);
  color: var(--text-mute);
}
.top-n-list__meta time,
.top-n-list__count { font-variant-numeric: tabular-nums; }

/* ---- Список: <ol> со слотами под casino-item-card ---- */
.top-n-list .casino-list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: ci;                 /* источник нумерации; счёт ведёт .casino-item */
  display: flex;
  flex-direction: column;
  gap: var(--tnl-gap);
}
.top-n-list .casino-list__row { display: block; }

/* Хвост топа (N+1…): скрыт до «Показать все».
   [hidden] держит дефолт без JS; .is-active раскрывает по клику. */
.top-n-list .casino-list__row.is-more[hidden] { display: none; }
.top-n-list .casino-list__row.is-more.is-active { display: block; }

/* ---- Место под «Показать все» ---- */
.top-n-list .casino-list__showall {
  display: flex;
  justify-content: center;
  margin-top: var(--s-2);
}
.top-n-list .casino-list__showall.is-hidden { display: none; }

.top-n-list__showall {
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
  min-height: var(--tap-min);
  padding: var(--s-3) var(--s-6);
  font-family: var(--font-body);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  cursor: pointer;
  transition:
    border-color var(--dur-quick) var(--ease),
    box-shadow var(--dur-base) var(--ease),
    color var(--dur-quick) var(--ease);
}
.top-n-list__showall:hover {
  color: var(--brand);
  border-color: var(--brand);
  box-shadow: var(--shadow-pop);
}

.top-n-list__showall-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand);
  background: var(--brand);
  border-radius: var(--r-pill);
}
.top-n-list__showall-ic {
  transition: transform var(--dur-base) var(--ease);
}
.top-n-list__showall:hover .top-n-list__showall-ic { transform: translateY(2px); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .top-n-list__head { margin-bottom: var(--s-5); }
}
@media (max-width: 640px) {
  .top-n-list { --ci-logo: 96px; --tnl-gap: var(--s-3); }
  .top-n-list__title { font-size: var(--t-h3); }
  .top-n-list .casino-list__showall { margin-top: var(--s-1); }
  .top-n-list__showall { width: 100%; justify-content: center; padding-inline: var(--s-4); }
}

/* ===== top-news-ticker ===== */
/* ============================================================
 * top-news-ticker · block.css
 * Скоуплено на .top-news-ticker. Только токены (10-tokens/).
 * Owns: фикс-метку (live-dot + «Новости») + viewport-маску + бегущую ленту из двух
 *       копий списка (бесшовный цикл) + строки-новости (рубрика-чип · заголовок · время).
 * Один акцент --brand (метка/рубрика/hover); рубрики-state по смыслу (бонус/алерт).
 * Движение — translateX-анимация на --track; пауза при hover/focus-within.
 * A11y: prefers-reduced-motion → лента статична и прокручиваема (overflow:auto), без авто-движения.
 * Конвенция house-style: бегущая лента (своя разметка) на токенах; ориентир casino-item-card.
 * Адаптив: 980 / 640.
 * ========================================================== */

.top-news-ticker {
  --tnt-dur: 38s;          /* длительность полного цикла прокрутки */
  --tnt-gap: var(--s-6);   /* зазор между строками-новостями */
  display: flex;
  align-items: stretch;
  width: 100%;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}

/* ---- Фикс-метка слева ---- */
.top-news-ticker__label {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--on-brand);
  background: var(--brand);
  white-space: nowrap;
  z-index: var(--z-base);
}
.top-news-ticker__live-dot {
  width: 8px;
  height: 8px;
  border-radius: var(--r-pill);
  background: var(--on-brand);
  box-shadow: 0 0 0 0 color-mix(in srgb, var(--on-brand) 50%, transparent);
  animation: tnt-pulse 1.8s var(--ease) infinite;
}
@keyframes tnt-pulse {
  0%   { box-shadow: 0 0 0 0 color-mix(in srgb, var(--on-brand) 55%, transparent); }
  70%  { box-shadow: 0 0 0 7px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* ---- Viewport-маска ---- */
.top-news-ticker__viewport {
  position: relative;
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--s-5), #000 calc(100% - var(--s-5)), transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 var(--s-5), #000 calc(100% - var(--s-5)), transparent 100%);
}

/* ---- Лента (две копии) ---- */
.top-news-ticker__track {
  list-style: none;
  margin: 0;
  padding: 0 calc(var(--tnt-gap) / 2);
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--tnt-gap);
  white-space: nowrap;
  animation: tnt-scroll var(--tnt-dur) linear infinite;
  will-change: transform;
}
@keyframes tnt-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-100%); }
}
/* Пауза при наведении/фокусе внутри — чтобы успеть прочитать/кликнуть */
.top-news-ticker:hover .top-news-ticker__track,
.top-news-ticker:focus-within .top-news-ticker__track { animation-play-state: paused; }

/* ---- Строка-новость ---- */
.tnt-item { flex: 0 0 auto; }
.tnt-item__link {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  text-decoration: none;
  color: var(--text-dim);
  transition: color var(--dur-quick) var(--ease);
}
a.tnt-item__link:hover .tnt-item__text { color: var(--brand); text-decoration: underline; text-underline-offset: 2px; }

.tnt-item__kind {
  flex: 0 0 auto;
  padding: 1px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--brand);
  background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.tnt-item__kind--bonus { color: var(--success); background: var(--success-soft); }
.tnt-item__kind--alert { color: var(--danger); background: var(--danger-soft); }

.tnt-item__text {
  font-size: var(--t-small);
  font-weight: var(--fw-medium);
  color: var(--text);
}
.tnt-item__time {
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .top-news-ticker { --tnt-dur: 30s; --tnt-gap: var(--s-5); }
}
@media (max-width: 640px) {
  .top-news-ticker { --tnt-dur: 24s; border-radius: var(--r-md); }
  .top-news-ticker__label { padding: var(--s-2) var(--s-3); }
}

/* ============ Reduced motion / без анимации ============
 * Авто-движение выключаем. Реальную ленту делаем статичной и прокручиваемой
 * пальцем/клавиатурой; декоративный дубль скрываем, чтобы не было «двойного» текста. */
@media (prefers-reduced-motion: reduce) {
  .top-news-ticker__viewport {
    overflow-x: auto;
    -webkit-mask-image: none;
            mask-image: none;
    scrollbar-width: thin;
    scrollbar-color: var(--rule-strong) transparent;
  }
  .top-news-ticker__track { animation: none; }
  .top-news-ticker__track--clone { display: none; }
  .top-news-ticker__live-dot { animation: none; }
}

/* ===== trainer-widget ===== */
/* ============================================================
 * trainer-widget · block.css
 * Скоуплено на .trainer. Только токены (10-tokens/).
 * Конвенция: ★research / premium-планка. Интерактивный тренажёр базовой стратегии.
 * ОДИН акцент --brand (выбор/CTA/счёт). Верно=--success / неверно=--danger ТОЛЬКО по
 * смыслу фидбэка (+ глиф/текст, не только цвет). Счёт = dataviz-метр. Карты — bespoke (масти-юникод).
 * Адаптив: 980 — счёт под заголовком; 640 — действия 2×2, стол в колонку.
 * ========================================================== */

.trainer {
  display: block;
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  font-variant-numeric: tabular-nums;
}

/* ---- Шапка ---- */
.trainer__head {
  display: flex; align-items: flex-start; justify-content: space-between;
  flex-wrap: wrap; gap: var(--s-4);
  margin-bottom: var(--s-5);
}
.trainer__heading { flex: 1 1 280px; min-width: 0; }
.trainer__title {
  margin: var(--s-1) 0 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}
.trainer__sub { margin-top: var(--s-1); font-size: var(--t-small); }

/* ---- Счёт точности (dataviz) ---- */
.trainer__score {
  flex: 0 0 auto;
  width: min(220px, 100%);
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.trainer__score-row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2); }
.trainer__score-k { font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase; color: var(--text-mute); }
.trainer__score-v { font-family: var(--font-display); font-weight: var(--fw-bold); font-size: var(--t-h4); color: var(--brand); font-variant-numeric: tabular-nums; }
.trainer__score-bar { height: 7px; margin: var(--s-2) 0; background: var(--bg-3); border-radius: var(--r-pill); overflow: hidden; }
.trainer__score-fill {
  display: block; height: 100%;
  width: calc(var(--val) * 1%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-base) var(--ease);
}
.trainer__score-sub { font-size: var(--t-tiny); color: var(--text-mute); font-variant-numeric: tabular-nums; }

/* ---- Игровой стол ---- */
.trainer__table {
  display: flex; align-items: center; justify-content: center;
  flex-wrap: wrap; gap: var(--s-5);
  padding: var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-lg);
}
.trainer-hand { display: flex; flex-direction: column; align-items: center; gap: var(--s-2); }
.trainer-hand__label { font-size: var(--t-tiny); letter-spacing: .06em; text-transform: uppercase; color: var(--text-mute); font-weight: var(--fw-semi); }
.trainer-hand__total { color: var(--text); font-weight: var(--fw-bold); font-variant-numeric: tabular-nums; }
.trainer-hand__cards { display: flex; gap: var(--s-2); }

.trainer__vs {
  font-size: var(--t-tiny); letter-spacing: .08em; text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Карта (bespoke) ---- */
.trainer-card {
  position: relative;
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
  width: 56px; height: 78px;
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-card);
}
.trainer-card__rank { font-family: var(--font-display); font-weight: var(--fw-bold); font-size: var(--t-h4); line-height: 1; }
.trainer-card__suit { font-size: var(--t-body); line-height: 1; margin-top: 2px; }
.trainer-card--red .trainer-card__rank,
.trainer-card__suit--heart, .trainer-card__suit--diamond { color: var(--danger); }
.trainer-card--dark .trainer-card__rank,
.trainer-card__suit--spade, .trainer-card__suit--club { color: var(--text); }

/* закрытая карта дилера */
.trainer-card--hole { background: var(--surface-3); }
.trainer-card__back {
  width: 100%; height: 100%;
  border-radius: inherit;
  background:
    repeating-linear-gradient(45deg, var(--brand-soft) 0 6px, transparent 6px 12px),
    var(--bg-3);
}

/* ---- Зона игры ---- */
.trainer__play { margin-top: var(--s-5); }
.trainer__prompt {
  margin: 0 0 var(--s-3);
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  color: var(--text);
  text-align: center;
}

/* ---- Кнопки действий ---- */
.trainer__actions {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--s-3);
}
.trainer-action {
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  min-height: var(--tap-min); padding: var(--s-3) var(--s-2);
  background: var(--surface);
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-md);
  color: var(--text);
  transition: border-color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease), transform var(--dur-quick) var(--ease);
}
.trainer-action:hover:not([disabled]) { border-color: var(--brand); color: var(--brand); transform: translateY(-1px); }
.trainer-action:active:not([disabled]) { transform: translateY(0); }
.trainer-action__label { font-weight: var(--fw-bold); font-size: var(--t-body); }
.trainer-action__hint { font-size: var(--t-tiny); color: var(--text-mute); }
.trainer-action:hover:not([disabled]) .trainer-action__hint { color: inherit; }

.trainer-action[disabled] { opacity: .45; cursor: not-allowed; }

/* Состояния выбора (ставит JS) — не только цветом: рамка + глиф в фидбэке */
.trainer-action.is-correct {
  background: var(--success-soft);
  border-color: var(--success);
  color: var(--success);
}
.trainer-action.is-wrong {
  background: var(--danger-soft);
  border-color: var(--danger);
  color: var(--danger);
}
/* подсветка правильного, когда игрок ошибся */
.trainer-action.is-reveal {
  border-color: var(--success);
  box-shadow: inset 0 0 0 1px var(--success);
}

/* ---- Фидбэк ---- */
.trainer__feedback {
  display: flex; align-items: flex-start; gap: var(--s-3);
  margin-top: var(--s-4);
  padding: var(--s-3) var(--s-4);
  border: var(--hairline);
  border-radius: var(--r-md);
  background: var(--bg-2);
}
.trainer__feedback[hidden] { display: none; }
.trainer__feedback-ic {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: var(--r-pill);
}
.trainer__feedback-title { display: block; font-weight: var(--fw-bold); font-size: var(--t-body); }
.trainer__feedback-sub { display: block; margin-top: 2px; font-size: var(--t-small); color: var(--text-mute); line-height: var(--lh-snug); }

/* тон фидбэка — по смыслу, глиф меняется через JS-класс */
.trainer__feedback.is-correct { border-color: var(--success); background: var(--success-soft); }
.trainer__feedback.is-correct .trainer__feedback-ic { color: var(--success); background: color-mix(in srgb, var(--success) 16%, transparent); }
.trainer__feedback.is-correct .trainer__feedback-title { color: var(--success); }
.trainer__feedback.is-wrong { border-color: var(--danger); background: var(--danger-soft); }
.trainer__feedback.is-wrong .trainer__feedback-ic { color: var(--danger); background: color-mix(in srgb, var(--danger) 16%, transparent); }
.trainer__feedback.is-wrong .trainer__feedback-title { color: var(--danger); }

/* ---- Управление ---- */
.trainer__controls {
  display: flex; align-items: center; flex-wrap: wrap; gap: var(--s-3);
  margin-top: var(--s-4);
}
.trainer__next { flex: 0 0 auto; }
.trainer__reset { margin-left: auto; }

/* ---- Шпаргалка (<details>) ---- */
.trainer__cheat {
  margin-top: var(--s-4);
  background: var(--surface-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.trainer__cheat-q {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-2);
  list-style: none;
  padding: var(--s-3) var(--s-4);
  min-height: var(--tap-min);
  font-size: var(--t-small); font-weight: var(--fw-semi);
  color: var(--text-dim);
  cursor: pointer;
}
.trainer__cheat-q::-webkit-details-marker { display: none; }
.trainer__cheat-chev { flex: 0 0 auto; transition: transform var(--dur-base) var(--ease); }
.trainer__cheat[open] .trainer__cheat-chev { transform: rotate(180deg); }
.trainer__cheat-body {
  padding: 0 var(--s-4) var(--s-4);
  font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-mute);
}

.trainer__foot { margin-top: var(--s-4); font-size: var(--t-tiny); line-height: var(--lh-snug); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .trainer__score { width: 100%; }
}
@media (max-width: 640px) {
  .trainer { padding: var(--s-4); }
  .trainer__table { gap: var(--s-4); padding: var(--s-4); }
  .trainer__actions { grid-template-columns: 1fr 1fr; }
  .trainer-card { width: 50px; height: 70px; }
  .trainer__controls { flex-direction: column; align-items: stretch; }
  .trainer__next { width: 100%; }
  .trainer__reset { margin-left: 0; width: 100%; }
}

/* ===== trend-movement-list ===== */
/* ============================================================
 * trend-movement-list · block.css
 * Скоуплено на .trend-movement-list. Только токены (10-tokens/).
 * Назначение: список с движением — rank (CSS counter) + score-мера + ↑↓ дельта за период.
 * House-style: позиция через counter-reset/counter-increment (НЕ в HTML);
 *   score-мера ширина = балл×10%, градиент --rating-from→--rating-to; tabular-nums.
 * Движение — функциональный цвет (up=success, down=danger, flat=нейтраль) ПО СМЫСЛУ,
 *   продублирован формой стрелки и знаком числа (не только цветом — a11y).
 * Эталон нейминга/поверхности/фикс-слотов: casino-item-card. Адаптив: 980 / 640.
 * ========================================================== */

.trend-movement-list {
  /* фикс-слоты: ширина колонки ранга, лого-чипа, score-блока, блока движения */
  --tml-rank-col: 32px;
  --tml-logo: 34px;
  --tml-score-col: clamp(96px, 22vw, 150px);
  --tml-move-col: 60px;
  --tml-bar-h: 6px;
  /* канал движения (дефолт-нейтраль; переопределяется модификатором строки) */
  --tml-move-fg: var(--text-mute);
  --tml-move-bg: var(--bg-2);

  display: block;
  padding: var(--s-6);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  font-family: var(--font-body);
  color: var(--text);
}

/* ---- Шапка ---- */
.trend-movement-list__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-4);
}
.trend-movement-list__eyebrow { margin: 0 0 var(--s-1); }
.trend-movement-list__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
}
.trend-movement-list__period {
  flex: 0 0 auto;
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Список (позиция — CSS counter) ---- */
.trend-movement-list__list {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: tml;
  display: flex;
  flex-direction: column;
}

.trend-movement-list__row {
  counter-increment: tml;
  display: grid;
  grid-template-columns: var(--tml-rank-col) minmax(0, 1fr) var(--tml-score-col) var(--tml-move-col);
  align-items: center;
  gap: var(--s-3) var(--s-4);
  padding: var(--s-3) 0;
  border-top: var(--hairline);
  transition: background var(--dur-quick) var(--ease);
}
.trend-movement-list__row:first-child { border-top: none; }
.trend-movement-list__row:hover {
  background: color-mix(in srgb, var(--brand) 4%, transparent);
}

/* Ранг — рисуется counter'ом, не из HTML */
.trend-movement-list__rank {
  justify-self: center;
  font-family: var(--font-mono);
  font-size: var(--t-body);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text-faint);
}
.trend-movement-list__rank::before { content: counter(tml); }
/* Топ-3 — акцент ранга (единственное место --brand: подчёркивает лидеров) */
.trend-movement-list__row:nth-child(-n+3) .trend-movement-list__rank { color: var(--brand); }

/* Имя + лого-чип (фикс-слот, инициалы вместо стокового лого) */
.trend-movement-list__name {
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
  min-width: 0;
}
.trend-movement-list__logo {
  flex: 0 0 auto;
  width: var(--tml-logo);
  height: var(--tml-logo);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .02em;
  color: var(--brand);
  background: var(--brand-soft);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.trend-movement-list__label {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: var(--fw-semi);
  color: var(--text);
}

/* Score: мера + число (число всегда продублировано текстом) */
.trend-movement-list__score {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-2);
}
.trend-movement-list__score-bar {
  height: var(--tml-bar-h);
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.trend-movement-list__score-fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) * 10%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease-out);
}
.trend-movement-list__score-val {
  font-family: var(--font-mono);
  font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--text);
}

/* Движение: стрелка-форма + знаковое число в канале цвета */
.trend-movement-list__move {
  justify-self: end;
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px var(--s-2);
  border-radius: var(--r-pill);
  font-variant-numeric: tabular-nums;
  color: var(--tml-move-fg);
  background: var(--tml-move-bg);
}
.trend-movement-list__arrow { flex: 0 0 auto; }
.trend-movement-list__delta {
  font-family: var(--font-mono);
  font-size: var(--t-small);
  font-weight: var(--fw-bold);
  line-height: 1;
}
.trend-movement-list__newbadge {
  font-size: var(--t-tiny);
  font-weight: var(--fw-bold);
  letter-spacing: .06em;
}

/* Каналы движения — функциональный цвет ПО СМЫСЛУ */
.trend-movement-list__row--up {
  --tml-move-fg: var(--success);
  --tml-move-bg: var(--success-soft);
}
.trend-movement-list__row--down {
  --tml-move-fg: var(--danger);
  --tml-move-bg: var(--danger-soft);
}
.trend-movement-list__row--flat {
  --tml-move-fg: var(--text-mute);
  --tml-move-bg: var(--bg-2);
}
/* Новичок — нейтрально-акцентный, отдельная семантика */
.trend-movement-list__row--new {
  --tml-move-fg: var(--brand);
  --tml-move-bg: var(--brand-soft);
}

/* ---- Сноска ---- */
.trend-movement-list__note {
  margin: var(--s-4) 0 0;
  padding-top: var(--s-4);
  border-top: var(--hairline);
  font-size: var(--t-tiny);
  line-height: var(--lh-snug);
}

/* ============================================================
 * Модификаторы
 * ========================================================== */

/* --bare — без карточной обёртки */
.trend-movement-list--bare {
  padding: 0;
  background: none;
  border: none;
  box-shadow: none;
}
/* --compact — плотный (сайдбар/рейл): тоньше мера, меньше slug-лого, без score-бара */
.trend-movement-list--compact { --tml-logo: 28px; --tml-score-col: 64px; }
.trend-movement-list--compact .trend-movement-list__score-bar { display: none; }
.trend-movement-list--compact .trend-movement-list__score { grid-template-columns: 1fr; justify-items: end; }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .trend-movement-list { padding: var(--s-5); }
}
@media (max-width: 640px) {
  .trend-movement-list { padding: var(--s-4); }
  /* score-бар уходит, остаётся число — строка не переполняется на узком экране */
  .trend-movement-list__row {
    grid-template-columns: var(--tml-rank-col) minmax(0, 1fr) auto var(--tml-move-col);
    gap: var(--s-2) var(--s-3);
  }
  .trend-movement-list__score-bar { display: none; }
  .trend-movement-list__score { grid-template-columns: 1fr; justify-items: end; }
  .trend-movement-list__head { flex-wrap: wrap; gap: var(--s-2); }
}

/* ===== trending-casinos-rail ===== */
/* ============================================================
 * trending-casinos-rail · block.css
 * Скоуплено на .trending-rail (лента трендовых / растущих казино).
 * Только токены (10-tokens/). Спроектировано по premium-сигналам
 * (40-research/premium-signals.md) + эталону casino-item-card.
 *
 * Owns: заголовок-блок (eyebrow + H2 + опц. «смотреть все») + ГОРИЗОНТАЛЬНЫЙ
 *       рельс со scroll-snap + самодостаточную КОМПАКТ-карточку казино
 *       (.trending-rail__card / .tr-card__*). Нейминг/слоты/scroll-snap — как
 *       similar-slots-rail; карточка — упрощённый casino-item-card.
 *
 * Премиум-отличие ленты: ДАТАВИЗ-метр тренда вместо звёзд — спарклайн динамики
 *       рейтинга за период + дельта рангa (стрелка вверх/вниз). Функциональный
 *       цвет --success/--danger ТОЛЬКО на знаке тренда (рост/падение), не декор.
 *
 * Один акцент — --brand (ранг-бейдж, рейтинг, CTA, «все», фокус). Прочее —
 *       дисциплинированные нейтрали. Числа — tabular-nums. Фикс-слот лого.
 *       ОДНА CTA на карточку. T&C — раскрываемый drawer (<details>), карточка
 *       в покое чистая. Единые padding/radius/shadow. Subtle motion.
 *
 * Десктоп: ~3–4 карточки в видимой области (фикс-ширина ячейки --tr-card).
 * Мобайл: свайп-карусель (scroll-snap), карточка «подглядывает» следующую.
 * CSS-only для прокрутки/drawer; JS прогрессивен (copy/fake-link). Адаптив: 980 / 640.
 * ========================================================== */

.trending-rail {
  --tr-card: 320px;          /* фикс-ширина снап-ячейки (десктоп: ~3–4 видны) */
  --tr-logo: 56px;           /* фикс-слот лого — визуальный ритм */
  --tr-gap: var(--s-5);      /* шаг между карточками = шаг снапа */
  --tr-fade: var(--s-7);     /* ширина edge-fade у краёв рельса */
  --tr-spark-h: 32px;        /* высота спарклайна тренда */
  counter-reset: tr;         /* позиция в ленте — CSS-counter, не в HTML */
}

/* ---- Заголовок ленты (как similar-slots-rail / related-rail) ---- */
.trending-rail__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-6);
}
.trending-rail__heading { min-width: 0; }
.trending-rail__head .eyebrow { margin: 0 0 var(--s-2); }
.trending-rail__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h2);
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  color: var(--text);
}

/* «Смотреть все» — текстовая ссылка, не вторая кнопка-акцент */
.trending-rail__all {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--brand);
  text-decoration: none;
  white-space: nowrap;
  transition: gap var(--dur-quick) var(--ease);
}
.trending-rail__all-ic {
  flex: 0 0 auto;
  transition: transform var(--dur-quick) var(--ease-out);
}
.trending-rail__all:hover .trending-rail__all-ic,
.trending-rail__all:focus-visible .trending-rail__all-ic { transform: translateX(3px); }

/* ============================================================
 * Горизонтальный рельс (scroll-snap)
 * Прокрутка нативная: свайп / трекпад / колесо / клавиши при фокусе внутри.
 * Bleed на ширину гаттера: крайние карточки доходят до края экрана, а
 * заголовок остаётся выровнен по .container. Снап учитывает гаттер.
 * ========================================================== */
.trending-rail__track {
  list-style: none;
  margin: 0;
  margin-inline: calc(-1 * var(--gutter));
  padding-inline: var(--gutter);
  padding-block: var(--s-2);          /* место под hover-lift и тень */

  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: var(--tr-card);
  gap: var(--tr-gap);

  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: var(--gutter);
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--rule-strong) transparent;

  /* edge-fade: подсказка «есть ещё» — маской, без лишних элементов */
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--tr-fade), #000 calc(100% - var(--tr-fade)), transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 var(--tr-fade), #000 calc(100% - var(--tr-fade)), transparent 100%);
}
.trending-rail__track::-webkit-scrollbar { height: 8px; }
.trending-rail__track::-webkit-scrollbar-track { background: transparent; }
.trending-rail__track::-webkit-scrollbar-thumb { background: var(--rule); border-radius: var(--r-pill); }
.trending-rail__track:hover::-webkit-scrollbar-thumb { background: var(--rule-strong); }

/* Ячейка-снап */
.trending-rail__cell {
  scroll-snap-align: start;
  scroll-snap-stop: always;
  counter-increment: tr;
  display: flex;             /* карточка тянется на ширину ячейки */
  min-width: 0;
}

/* ============================================================
 * Карточка трендового казино (самодостаточна)
 * ========================================================== */
.trending-rail__card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
  width: 100%;
  min-width: 0;
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition:
    box-shadow var(--dur-base) var(--ease),
    transform var(--dur-quick) var(--ease),
    border-color var(--dur-quick) var(--ease);
}
.trending-rail__card:hover { box-shadow: var(--shadow-pop); transform: translateY(-2px); border-color: var(--rule-strong); }
.trending-rail__card:focus-within { box-shadow: var(--shadow-pop); border-color: var(--rule-strong); }

/* ---- 1 · Шапка карточки: лого + имя/мета + ранг-бейдж ---- */
.tr-card__head { display: grid; grid-template-columns: var(--tr-logo) minmax(0, 1fr) auto; gap: var(--s-3); align-items: center; }

.tr-card__logo {
  width: var(--tr-logo); height: var(--tr-logo);
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
}
.tr-card__id { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.tr-card__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  letter-spacing: -0.01em;
  color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tr-card__name-link { color: inherit; text-decoration: none; transition: color var(--dur-quick) var(--ease); }
.tr-card__name-link:hover,
.tr-card__card:focus-within .tr-card__name-link { color: var(--brand); }
.tr-card__tag { font-size: var(--t-tiny); color: var(--text-faint); }

/* Ранг-бейдж — позиция из counter; единственный «медальный» акцент */
.tr-card__rank {
  justify-self: end;
  min-width: 30px; height: 30px; padding: 0 var(--s-2);
  display: inline-flex; align-items: center; justify-content: center; gap: 1px;
  font-size: var(--t-tiny); font-weight: var(--fw-bold);
  font-variant-numeric: tabular-nums;
  color: var(--on-brand); background: var(--brand);
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-card);
}
.tr-card__rank::before { content: "#"; opacity: .65; }
.tr-card__rank::after { content: counter(tr); }

/* ---- 2 · Дельта-стрип: «горячо/растёт» + изменение ранга (функц. цвет) ---- */
.tr-card__delta {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-2);
}
.tr-card__pulse {
  display: inline-flex; align-items: center; gap: var(--s-1);
  padding: var(--s-1) var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--brand); background: var(--brand-soft);
  border-radius: var(--r-pill);
}
.tr-card__pulse-ic { flex: 0 0 auto; }

/* Изменение позиции: знак (rose/fell) — ЕДИНСТВЕННОЕ место функц. цвета */
.tr-card__move {
  display: inline-flex; align-items: center; gap: var(--s-1);
  font-size: var(--t-small); font-weight: var(--fw-semi);
  font-variant-numeric: tabular-nums;
}
.tr-card__move-ic { flex: 0 0 auto; }
.tr-card__move--up   { color: var(--success); }
.tr-card__move--down { color: var(--danger); }
.tr-card__move--flat { color: var(--text-faint); }
/* Стрелка вниз — разворот того же глифа (без второй иконки) */
.tr-card__move--down .tr-card__move-ic { transform: rotate(180deg); }
.tr-card__move--flat .tr-card__move-ic { transform: rotate(90deg); }

/* ---- 3 · Датавиз-метр тренда: спарклайн динамики рейтинга ---- */
.tr-card__trend { display: flex; flex-direction: column; gap: var(--s-2); }
.tr-card__trend-row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-2); }
.tr-card__trend-k { font-size: var(--t-tiny); letter-spacing: .08em; text-transform: uppercase; color: var(--text-mute); }
.tr-card__rating { font-weight: var(--fw-bold); color: var(--brand); font-variant-numeric: tabular-nums; }
.tr-card__rating small { color: var(--text-faint); font-weight: var(--fw-medium); }

/* Спарклайн — inline SVG; линия рисуется currentColor, заливка под ней — мягкая */
.tr-card__spark {
  display: block; width: 100%; height: var(--tr-spark-h);
  color: var(--brand);          /* линия наследует акцент */
  overflow: visible;
}
.tr-card__spark-fill { fill: var(--brand-soft); stroke: none; }
.tr-card__spark-line { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.tr-card__spark-dot  { fill: var(--brand); }

/* Рейтинг-бар (house-style): ширина = рейтинг×10%, градиент danger→success */
.tr-card__bar { height: 6px; background: var(--bg-3); border-radius: var(--r-pill); overflow: hidden; }
.tr-card__fill { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--rating-from), var(--rating-to)); }

/* ---- 4 · Мини-метрики (фикс-слоты, tabular) ---- */
.tr-card__stats { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-2); margin: 0; }
.tr-card__stat { padding: var(--s-2) var(--s-3); background: var(--bg-2); border-radius: var(--r-md); min-width: 0; }
.tr-card__stat-k { margin: 0; font-size: var(--t-tiny); letter-spacing: .04em; text-transform: uppercase; color: var(--text-mute); }
.tr-card__stat-v { margin: 2px 0 0; font-weight: var(--fw-semi); font-variant-numeric: tabular-nums; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---- 5 · Промокод (copy-on-click + toast) ---- */
.tr-card__promo {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: var(--s-2); position: relative;
  padding: var(--s-2) var(--s-3);
  background: var(--brand-soft); color: var(--brand);
  border: 1px dashed color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: var(--r-md); cursor: pointer;
  font: inherit;
  transition: background var(--dur-quick) var(--ease);
}
.tr-card__promo:hover { background: color-mix(in srgb, var(--brand) 16%, transparent); }
.tr-card__promo-code { font-family: var(--font-mono); font-weight: var(--fw-semi); letter-spacing: .03em; }
.tr-card__promo-ic { display: inline-flex; flex: 0 0 auto; }
.tr-card__promo-toast {
  position: absolute; inset-inline-start: 50%; bottom: calc(100% + 6px); transform: translateX(-50%);
  padding: 2px var(--s-2); font-size: var(--t-tiny); white-space: nowrap;
  color: var(--on-brand); background: var(--text); border-radius: var(--r-soft);
  opacity: 0; pointer-events: none; transition: opacity var(--dur-quick) var(--ease);
}
.tr-card__promo.is-copied .tr-card__promo-toast { opacity: 1; }

/* ---- 6 · Подвал: T&C-drawer + ОДНА CTA ---- */
.tr-card__foot { margin-top: auto; display: flex; flex-direction: column; gap: var(--s-3); }

/* Раскрываемые условия — нативный <details>, карточка в покое чистая */
.tr-card__terms { border-top: var(--hairline); padding-top: var(--s-3); }
.tr-card__terms-sum {
  display: inline-flex; align-items: center; gap: var(--s-1);
  font-size: var(--t-tiny); color: var(--text-mute);
  cursor: pointer; list-style: none;
  text-decoration: underline; text-underline-offset: 2px;
}
.tr-card__terms-sum::-webkit-details-marker { display: none; }
.tr-card__terms-sum:hover { color: var(--brand); }
.tr-card__terms-ic { flex: 0 0 auto; transition: transform var(--dur-quick) var(--ease); }
.tr-card__terms[open] .tr-card__terms-ic { transform: rotate(180deg); }
.tr-card__terms-body { margin: var(--s-2) 0 0; font-size: var(--t-small); line-height: var(--lh-snug); color: var(--text-dim); }

/* CTA — ровно одна, на всю ширину (используем base .btn) */
.tr-card__cta { width: 100%; }

/* ---- Модификатор: плотнее (узкая ячейка) ---- */
.trending-rail--tight { --tr-card: 288px; --tr-gap: var(--s-4); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .trending-rail,
  .trending-rail--tight { --tr-card: 300px; --tr-gap: var(--s-4); }
}
@media (max-width: 640px) {
  /* Свайп-карусель: карточка «подглядывает» следующую (peek) */
  .trending-rail,
  .trending-rail--tight { --tr-card: 84vw; --tr-fade: var(--s-5); }
  .trending-rail__title { font-size: var(--t-h3); }
  .trending-rail__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-2);
    margin-bottom: var(--s-5);
  }
  /* Не «съедать» весь вьюпорт на узком экране */
  .trending-rail__track { grid-auto-columns: min(var(--tr-card), 340px); }
}

/* ============ Reduced motion (база уже зануляет --dur-*) ============ */
@media (prefers-reduced-motion: reduce) {
  .trending-rail__track { scroll-behavior: auto; }
  .trending-rail__card { transition: none; }
  .trending-rail__card:hover { transform: none; }
}

/* ===== under-review-list ===== */
/* ============================================================
 * under-review-list · block.css
 * Скоуплено на .under-review. Только токены (10-tokens/).
 * Назначение: список «На рассмотрении» — операторы, по которым проверка ещё
 *   идёт: статус-чип (по смыслу), прогресс-мера завершённости ревью (dataviz,
 *   не звёзды), ожидаемая дата вердикта, drawer-чеклист «что проверяем».
 *   СОЗНАТЕЛЬНО без партнёрской CTA: пока вердикта нет — играть не зовём;
 *   действие нейтральное (раскрыть чеклист). Это trust/E-E-A-T-блок.
 * Эталон нейминга/слотов/тени/меры/drawer: casino-item-card +
 *   rating-ledger-table (disclosure-drawer, data-action="disclosure").
 * Один акцент — --brand (прогресс-мера, маркер, кнопка-раскрытие, активный этап).
 *   Функциональный цвет ТОЛЬКО по смыслу: --info (в работе), --warning (сигналы),
 *   --success (пройденный этап чеклиста). Не для декора.
 * Числа — tabular-nums. Адаптив: 980 / 640. touch ≥ --tap-min.
 * ========================================================== */

.under-review {
  --ur-logo: 56px;
  --ur-progress-col: minmax(220px, 1fr);

  display: flow-root;
  color: var(--text);
}

/* ---- Шапка блока ---- */
.under-review__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-5);
  padding-bottom: var(--s-4);
  border-bottom: 1px solid var(--rule-strong);
  flex-wrap: wrap;
}
.under-review__heading { max-width: var(--container-prose); min-width: 0; }
.under-review__head .eyebrow { margin: 0 0 var(--s-2); color: var(--brand); }
.under-review__title { margin: 0; font-size: var(--t-h2); }
.under-review__lede { margin-top: var(--s-3); }
.under-review__total {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
  margin: 0;
  flex: 0 0 auto;
}
.under-review__total-num {
  font-family: var(--font-display);
  font-size: var(--t-h3);
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.under-review__total-label {
  font-size: var(--t-tiny);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-faint);
}

/* ---- Список ---- */
.under-review__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.under-review__row { min-width: 0; }

/* ---- Карточка-строка (фикс-слоты, единый pad/radius/shadow) ---- */
.under-review__item {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) var(--ur-progress-col) auto;
  align-items: center;
  gap: var(--s-4) var(--s-5);
  padding: var(--s-4);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--dur-base) var(--ease);
}
.under-review__item:hover { box-shadow: var(--shadow-pop); }

/* ---- 1 · Идентификация: лого + имя + статус + теги ---- */
.under-review__main { display: flex; align-items: center; gap: var(--s-3); min-width: 0; }
.under-review__logo {
  width: var(--ur-logo);
  height: var(--ur-logo);
  flex: 0 0 auto;
  object-fit: cover;
  border-radius: var(--r-md);
  background: var(--bg-2);
  border: var(--hairline);
}
.under-review__id { min-width: 0; }
.under-review__name-row {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0 0 var(--s-1);
  flex-wrap: wrap;
}
.under-review__name {
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-bold);
  line-height: var(--lh-snug);
  color: var(--text);
}

/* Статус-чип — функциональный цвет по СМЫСЛУ */
.under-review__status {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .03em;
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.under-review__status-dot {
  width: 6px;
  height: 6px;
  flex: 0 0 auto;
  border-radius: var(--r-pill);
  background: currentColor;
}
.under-review__status--review { color: var(--info); background: var(--info-soft); }
.under-review__status--flag   { color: var(--warning); background: var(--warning-soft); }

.under-review__tags { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-2); margin: 0; }
.under-review__tag {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny);
  font-weight: var(--fw-medium);
  color: var(--text-mute);
  background: var(--bg-2);
  border-radius: var(--r-soft);
  white-space: nowrap;
}

/* ---- 2 · Прогресс ревью: dataviz-мера (источник истины --val) ---- */
.under-review__progress { min-width: 0; }
.under-review__progress-cap {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-bottom: var(--s-2);
}
.under-review__stage {
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-mute);
  min-width: 0;
}
.under-review__progress-pct {
  font-weight: var(--fw-bold);
  color: var(--brand);
  font-variant-numeric: tabular-nums;
  flex: 0 0 auto;
}
.under-review__meter {
  display: block;
  height: 8px;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  overflow: hidden;
}
.under-review__meter-fill {
  display: block;
  height: 100%;
  width: calc(var(--val, 0) * 1%);
  border-radius: inherit;
  /* нейтральный прогресс ревью — один акцент (не оценочный градиент) */
  background: var(--brand);
  transition: width var(--dur-slow) var(--ease);
}
.under-review__eta {
  margin: var(--s-2) 0 0;
  font-size: var(--t-tiny);
  color: var(--text-faint);
}
.under-review__eta time { font-variant-numeric: tabular-nums; color: var(--text-mute); font-weight: var(--fw-semi); }

/* ---- 3 · Действие = раскрыть чеклист (НЕ партнёрская CTA) ---- */
.under-review__detail { position: relative; justify-self: end; min-width: 0; }
.under-review__more {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  min-height: var(--tap-min);
  padding: var(--s-2) var(--s-4);
  font: inherit;
  font-size: var(--t-small);
  font-weight: var(--fw-semi);
  color: var(--text);
  background: transparent;
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-pill);
  cursor: pointer;
  white-space: nowrap;
  transition: color var(--dur-quick) var(--ease), border-color var(--dur-quick) var(--ease), background var(--dur-quick) var(--ease);
}
.under-review__more:hover { color: var(--brand); border-color: var(--brand); background: var(--brand-soft); }
.under-review__more-ic { display: inline-flex; transition: transform var(--dur-base) var(--ease); }
.under-review__more[aria-expanded="true"] { color: var(--brand); border-color: var(--brand); }
.under-review__more[aria-expanded="true"] .under-review__more-ic { transform: rotate(180deg); }

/* ---- Drawer-чеклист: на всю ширину карточки под строкой ---- */
.under-review__drawer {
  grid-column: 1 / -1;
  margin-top: var(--s-2);
}
.under-review__drawer[hidden] { display: none; }
.under-review__check {
  list-style: none;
  margin: 0;
  padding: var(--s-4);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--s-2) var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.under-review__check-item {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--t-small);
  color: var(--text-mute);
  min-width: 0;
}
.under-review__check-ic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  color: var(--text-faint);
}
/* пройденный этап — success (по смыслу); активный — акцент; впереди — приглушён */
.under-review__check-item.is-done { color: var(--text-dim); }
.under-review__check-item.is-done .under-review__check-ic { color: var(--success); }
.under-review__check-item.is-active { color: var(--text); font-weight: var(--fw-semi); }
.under-review__check-item.is-active .under-review__check-ic { color: var(--brand); }

.under-review__note {
  margin: var(--s-3) 0 0;
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
  color: var(--text-mute);
}

/* ---- Подвал-дисклеймер ---- */
.under-review__foot {
  margin-top: var(--s-5);
  font-size: var(--t-tiny);
  line-height: var(--lh-base);
}

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .under-review__item {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "main   action"
      "prog   prog"
      "drawer drawer";
    gap: var(--s-3) var(--s-4);
  }
  .under-review__main { grid-area: main; }
  .under-review__progress { grid-area: prog; }
  .under-review__detail { grid-area: action; justify-self: end; }
  .under-review__drawer { grid-area: drawer; }
}
@media (max-width: 640px) {
  .under-review__head {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--s-3);
  }
  .under-review__item {
    grid-template-columns: 1fr;
    grid-template-areas:
      "main"
      "prog"
      "action"
      "drawer";
    padding: var(--s-3);
  }
  .under-review__detail { justify-self: stretch; }
  .under-review__more { width: 100%; justify-content: center; }
  .under-review__check { grid-template-columns: 1fr; }
}

/* ===== video-embed ===== */
/* ============================================================
 * video-embed · block.css
 * Скоуплено на .video-embed. Только токены (10-tokens/).
 * Конвенция разметки/JS: html-slots (видео-вставка, landscape) + html-base.
 * Широкоформат: src проставлен сразу — заглушки/click-to-load НЕТ (в отличие от demo-iframe).
 * Каркас/бар/брейкпоинты выровнены с demo-iframe для консистентности медиа-блоков. Адаптив: 980 / 640.
 * ========================================================== */

.video-embed {
  display: flex;
  flex-direction: column;
  gap: var(--s-6);
}

/* ---- Каркас карточки (поверхность) ---- */
.video-embed__card {
  margin: 0;                 /* сброс <figure> */
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  overflow: hidden;
}

/* ============ Chrome-бар: dots · title · actions ============ */
.video-embed__bar {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-3) var(--s-4);
  background: var(--bg-2);
  border-bottom: var(--hairline);
}

.video-embed__dots {
  display: inline-flex;
  gap: 6px;
  flex: 0 0 auto;
}
.video-embed__dot {
  width: 10px;
  height: 10px;
  border-radius: var(--r-pill);
  background: var(--rule-strong);
}

.video-embed__title {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--t-h4);
  font-weight: var(--fw-semi);
  line-height: var(--lh-snug);
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.video-embed__actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--s-2);
}

/* Действие в баре — компактная пилюля (touch ≥ --tap-min) */
.video-embed__act {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: var(--tap-min);
  padding: 0 var(--s-3);
  font-family: var(--font-body);
  font-size: var(--t-tiny);
  font-weight: var(--fw-semi);
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  color: var(--text-dim);
  background: var(--surface);
  border: 1px solid var(--rule);
  border-radius: var(--r-pill);
  cursor: pointer;
  transition: color var(--dur-quick) var(--ease),
              border-color var(--dur-quick) var(--ease),
              background var(--dur-quick) var(--ease);
}
.video-embed__act:hover {
  color: var(--brand);
  border-color: var(--brand);
  background: var(--brand-soft);
}
.video-embed__act-ic { display: inline-flex; flex: 0 0 auto; }

/* ============ Тело: landscape 16:9, src сразу ============ */
.video-embed__body {
  position: relative;
  aspect-ratio: 16 / 9;
  background: var(--bg-3);
}
.video-embed__frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* ============ Подпись (опционально) ============ */
.video-embed__caption {
  margin: 0;
  padding: var(--s-3) var(--s-4);
  font-size: var(--t-small);
  line-height: var(--lh-snug);
  color: var(--text-mute);
  border-top: var(--hairline);
}
.video-embed__cap-meta {
  color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}

/* ============ Адаптив ============ */
@media (max-width: 640px) {
  /* Бар переносится: заголовок сверху, действие — в строку под ним */
  .video-embed__bar { flex-wrap: wrap; gap: var(--s-2); }
  .video-embed__title { flex-basis: 100%; }
  .video-embed__actions { width: 100%; }
  .video-embed__act { flex: 1 1 auto; }
}

/* ===== wagering-calculator ===== */
/* ============================================================
 * wagering-calculator · block.css
 * Калькулятор отыгрыша: ввод (депозит/бонус/вейджер/база) → оборот.
 * Скоуплено на .wager-calc. Только токены (10-tokens/).
 * Конвенция: ★research (премиум-сигналы) + паттерны html-rating-guide
 * (числовые поля filter-bar, dataviz-мера scorecard, T&C-drawer bonus-card).
 * Адаптив: 980 / 640. JS: wager-calc.js (живой пересчёт) — прогрессивно.
 * Источник истины меры «тяжесть» — --val 0..100 на .wc-effort__fill.
 * ========================================================== */

.wager-calc {
  --wc-track-h: 10px;          /* высота меры «тяжесть» */
  --wc-result-w: 300px;        /* фикс-слот колонки результата (≥980) */

  display: flex;
  flex-direction: column;
  gap: var(--s-5);
  padding: var(--s-5);
  background: var(--surface);
  border: var(--hairline);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-card);
  font-variant-numeric: tabular-nums;
}

/* ---- Шапка: заголовок + бейдж ---- */
.wager-calc__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--s-3);
}
.wager-calc__heading { display: flex; flex-direction: column; gap: var(--s-1); min-width: 0; }
.wager-calc__eyebrow {
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .12em; text-transform: uppercase; color: var(--text-mute);
}
.wager-calc__title {
  margin: 0;
  font-family: var(--font-display); font-size: var(--t-h3);
  font-weight: var(--fw-bold); line-height: var(--lh-snug); color: var(--text);
}
.wager-calc__badge {
  flex: 0 0 auto;
  display: inline-flex; align-items: center;
  padding: 2px var(--s-3);
  font-size: var(--t-tiny); font-weight: var(--fw-bold);
  letter-spacing: .04em; text-transform: uppercase;
  border-radius: var(--r-pill);
}
.wager-calc__badge[data-tone="brand"]   { color: var(--brand); background: var(--brand-soft); }
.wager-calc__badge[data-tone="neutral"] { color: var(--text-mute); background: var(--bg-2); }

/* ---- Тело: ввод (слева) + результат (справа) ---- */
.wager-calc__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) var(--wc-result-w);
  gap: var(--s-5);
  align-items: start;
}

/* ============ Ввод ============ */
.wager-calc__form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-4) var(--s-5);
  margin: 0;
  border: none; padding: 0;
}
.wc-field { display: flex; flex-direction: column; gap: var(--s-2); min-width: 0; }
.wc-field--wide { grid-column: 1 / -1; }
.wc-field__row { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); }
.wc-field__label {
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .06em; text-transform: uppercase; color: var(--text-mute);
}
.wc-field__hint { font-size: var(--t-tiny); color: var(--text-faint); line-height: var(--lh-snug); }

/* Числовой контрол (паттерн filter-bar): рамка + юнит + tabular-nums */
.wc-control {
  display: flex; align-items: center;
  min-height: var(--tap-min);
  padding-inline: var(--s-3);
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--r-md);
  transition: border-color var(--dur-quick) var(--ease), box-shadow var(--dur-quick) var(--ease);
}
.wc-control:focus-within {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-soft);
}
.wc-control--inline { min-height: 36px; padding-inline: var(--s-2); width: max-content; }
.wc-control__unit { color: var(--text-faint); font-weight: var(--fw-semi); }
.wc-control__unit--lead { margin-right: var(--s-1); }
.wc-control__unit:not(.wc-control__unit--lead) { margin-left: var(--s-1); }

.wc-input {
  flex: 1 1 auto; min-width: 0;
  padding-block: var(--s-2);
  background: transparent; border: none;
  font-family: var(--font-body); font-size: var(--t-body); font-weight: var(--fw-semi);
  color: var(--text);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.wc-input--lead { text-align: left; }
.wc-input--xs { width: 4ch; flex: 0 0 auto; }
.wc-input:focus { outline: none; }                 /* кольцо рисует .wc-control:focus-within */
.wc-input::placeholder { color: var(--text-faint); font-weight: var(--fw-body); }
/* Скрыть нативные спиннеры (число вводится руками/ползунком) */
.wc-input::-webkit-outer-spin-button,
.wc-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.wc-input[type="number"] { -moz-appearance: textfield; appearance: textfield; }

/* ---- Ползунок вейджера (синхронен с числом через JS) ---- */
.wc-range {
  -webkit-appearance: none; appearance: none;
  width: 100%; height: var(--wc-track-h);
  margin: var(--s-1) 0;
  background: var(--bg-3);
  border-radius: var(--r-pill);
  cursor: pointer;
}
.wc-range::-webkit-slider-runnable-track { height: var(--wc-track-h); border-radius: var(--r-pill); background: transparent; }
.wc-range::-moz-range-track { height: var(--wc-track-h); border-radius: var(--r-pill); background: var(--bg-3); }
.wc-range::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 22px; height: 22px; margin-top: calc((var(--wc-track-h) - 22px) / 2);
  background: var(--brand); border: 2px solid var(--surface);
  border-radius: var(--r-pill); box-shadow: var(--shadow-card);
  transition: transform var(--dur-quick) var(--ease);
}
.wc-range::-moz-range-thumb {
  width: 22px; height: 22px;
  background: var(--brand); border: 2px solid var(--surface);
  border-radius: var(--r-pill); box-shadow: var(--shadow-card);
}
.wc-range:hover::-webkit-slider-thumb { transform: scale(1.08); }
.wc-range:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; }
.wc-range__scale {
  display: flex; justify-content: space-between;
  font-size: var(--t-tiny); color: var(--text-faint);
  font-variant-numeric: tabular-nums;
}

/* ---- Segmented control «база отыгрыша» (паттерн chips, нативные radio) ---- */
.wc-segmented { grid-column: 1 / -1; border: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-2); }
.wc-segmented__row {
  display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-1);
  padding: var(--s-1);
  background: var(--bg-2);
  border: 1px solid var(--rule);
  border-radius: var(--r-md);
}
.wc-seg { display: block; min-width: 0; }
.wc-seg__input { position: absolute; opacity: 0; width: 0; height: 0; }
.wc-seg__face {
  display: flex; align-items: center; justify-content: center;
  min-height: 36px; padding: 0 var(--s-3);
  font-size: var(--t-small); font-weight: var(--fw-medium); color: var(--text-mute);
  text-align: center; line-height: var(--lh-snug);
  border-radius: var(--r-soft); cursor: pointer;
  transition: background var(--dur-quick) var(--ease), color var(--dur-quick) var(--ease);
}
.wc-seg__face:hover { color: var(--text); }
.wc-seg__input:checked + .wc-seg__face {
  color: var(--on-brand); background: var(--brand);
  font-weight: var(--fw-semi); box-shadow: var(--shadow-card);
}
.wc-seg__input:focus-visible + .wc-seg__face { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ============ Результат ============ */
.wager-calc__result {
  display: flex; flex-direction: column; gap: var(--s-3);
  padding: var(--s-5);
  background: var(--bg-2);
  border: var(--hairline);
  border-radius: var(--r-md);
}
.wc-result__k {
  margin: 0;
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .08em; text-transform: uppercase; color: var(--text-mute);
}
.wc-result__v {
  margin: 0;
  display: flex; align-items: baseline; gap: 2px;
  font-family: var(--font-display); line-height: var(--lh-tight);
}
.wc-result__cur { font-size: var(--t-h2); font-weight: var(--fw-semi); color: var(--text-faint); }
.wc-result__num {
  font-size: var(--t-display); font-weight: var(--fw-bold);
  letter-spacing: -0.02em; color: var(--brand);
  font-variant-numeric: tabular-nums;
}
.wc-result__sub { margin: 0; font-size: var(--t-small); color: var(--text-mute); line-height: var(--lh-snug); }
.wc-result__ratio { white-space: nowrap; }
.wc-result__ratio output { font-weight: var(--fw-semi); color: var(--text-dim); font-variant-numeric: tabular-nums; }

/* ---- Dataviz-мера «тяжесть» отыгрыша (вместо звёзд) ---- */
.wc-effort { display: flex; flex-direction: column; gap: var(--s-2); }
.wc-effort__bar {
  position: relative; height: var(--wc-track-h);
  background: var(--bg-3); border-radius: var(--r-pill); overflow: hidden;
}
.wc-effort__fill {
  display: block; height: 100%; border-radius: inherit;
  width: calc(clamp(0, var(--val, 0), 100) * 1%);
  background: linear-gradient(90deg, var(--rating-from), var(--rating-to));
  transition: width var(--dur-slow) var(--ease);
}
.wc-effort__tag {
  margin: 0;
  align-self: flex-start;
  padding: 2px var(--s-2);
  font-size: var(--t-tiny); font-weight: var(--fw-semi);
  letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-mute); background: var(--surface);
  border: var(--hairline); border-radius: var(--r-pill);
}

/* ---- Разбивка: фикс-слоты ---- */
.wc-breakdown { margin: var(--s-1) 0 0; display: flex; flex-direction: column; gap: var(--s-1); }
.wc-breakdown__row {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--s-3);
  padding-block: var(--s-1);
}
.wc-breakdown__k { margin: 0; font-size: var(--t-small); color: var(--text-mute); }
.wc-breakdown__v {
  margin: 0; font-size: var(--t-small); font-weight: var(--fw-semi);
  color: var(--text); font-variant-numeric: tabular-nums; white-space: nowrap;
}
.wc-breakdown__v span { color: var(--text-faint); }
.wc-breakdown__row--total {
  margin-top: var(--s-1); padding-top: var(--s-2);
  border-top: var(--hairline);
}
.wc-breakdown__row--total .wc-breakdown__k { color: var(--text-dim); font-weight: var(--fw-medium); }
.wc-breakdown__row--total .wc-breakdown__v { color: var(--brand); font-weight: var(--fw-bold); }

/* ============ T&C / допущения — нативный <details> ============ */
.wager-calc__notes { border-top: var(--hairline); padding-top: var(--s-3); }
.wager-calc__notes-q {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-2);
  min-height: var(--tap-min);
  list-style: none; cursor: pointer; user-select: none;
  font-size: var(--t-small); font-weight: var(--fw-medium); color: var(--text-mute);
  transition: color var(--dur-quick) var(--ease);
}
.wager-calc__notes-q::-webkit-details-marker { display: none; }
.wager-calc__notes-q:hover { color: var(--brand); }
.wager-calc__notes[open] .wager-calc__notes-q { color: var(--brand); }
.wager-calc__notes-chev {
  flex: 0 0 auto; color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-out), color var(--dur-quick) var(--ease);
}
.wager-calc__notes-q:hover .wager-calc__notes-chev { color: var(--brand); }
.wager-calc__notes[open] .wager-calc__notes-chev { transform: rotate(180deg); color: var(--brand); }
/* Раскрытие: grid-rows 0fr→1fr (плавно, без JS-замера) */
.wager-calc__notes-a {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-base) var(--ease-out);
}
.wager-calc__notes[open] .wager-calc__notes-a { grid-template-rows: 1fr; }
.wager-calc__notes-inner { overflow: hidden; min-height: 0; }
.wager-calc__notes-inner p {
  padding-top: var(--s-2);
  font-size: var(--t-small); line-height: var(--lh-base); color: var(--text-dim);
}

/* ============ Подвал: ОДНА CTA ============ */
.wager-calc__foot {
  display: flex; align-items: center; justify-content: space-between; gap: var(--s-4);
  flex-wrap: wrap;
}
.wager-calc__verdict { font-size: var(--t-small); line-height: var(--lh-snug); min-width: 0; }
.wager-calc__cta { flex: 0 0 auto; }

/* ============ Вариант --compact (сайдбар / inline) ============ */
.wager-calc--compact { --wc-result-w: 100%; padding: var(--s-4); gap: var(--s-4); }
.wager-calc--compact .wager-calc__body { grid-template-columns: 1fr; gap: var(--s-4); }
.wager-calc--compact .wager-calc__form { grid-template-columns: 1fr 1fr 1fr; gap: var(--s-3); }
.wager-calc--compact .wager-calc__result { padding: var(--s-4); }
.wager-calc--compact .wc-result__num { font-size: var(--t-h1); }

/* ============ Адаптив ============ */
@media (max-width: 980px) {
  .wager-calc__body { grid-template-columns: 1fr; }
  .wager-calc--compact .wager-calc__form { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .wager-calc { padding: var(--s-4); gap: var(--s-4); }
  .wager-calc__form { grid-template-columns: 1fr; gap: var(--s-4); }
  .wager-calc--compact .wager-calc__form { grid-template-columns: 1fr; }
  .wager-calc__result { padding: var(--s-4); }
  .wager-calc__foot { flex-direction: column; align-items: stretch; }
  .wager-calc__cta { width: 100%; }
}

/* ============ Reduced motion: без анимации высоты/меры/шеврона ============ */
@media (prefers-reduced-motion: reduce) {
  .wager-calc__notes-a { transition: none; }
  .wc-effort__fill { transition: none; }
  .wager-calc__notes-chev { transition: color var(--dur-quick) var(--ease); }
}
