/* ============================================================
   Lucky Drop — POLISH (единый слой дизайн-системы)
   Подключается ПОСЛЕДНИМ. Здесь живут общие компоненты и выравнивание
   всех экранов под одни правила; токены — в css/holo.css (:root).

   Правила системы:
   • Шрифты: Unbounded — заголовки, цифры-герои, основные кнопки;
     Manrope — весь остальной текст. Bebas Neue/Inter больше не используются
     в пользовательском UI (у Bebas нет кириллицы → падал в serif).
   • Кнопки: «золотая» = действие, которое тратит/зачисляет Stars
     (ставка, открыть, купить, пополнить); «голо» = основное действие без
     списания; «стекло» = вторичное. Полноширинные CTA — радиус 16px,
     компактные кнопки внутри карточек — пилюля.
   • Радиусы: 8 / 12 / 14 / 18 / 22 / 26(шторка) / pill.
   • Свечения — только на главном действии экрана и на выигрыше.
   • Тач-цели ≥ 44px. Анимируем только transform/opacity.
   ============================================================ */

/* ────────────────────────────────────────────────────────────
   0. База
   ──────────────────────────────────────────────────────────── */
body {
  font-family: var(--ld-font-ui);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
button, input, select, textarea { font-family: inherit; }
button { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }

/* Числовые поля без системных стрелок — они ломают ширину в WebView */
input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Видимый фокус для клавиатуры/внешних устройств */
:focus-visible {
  outline: 2px solid var(--ld-focus);
  outline-offset: 2px;
}
input:focus-visible, textarea:focus-visible, select:focus-visible { outline: none; }

/* ────────────────────────────────────────────────────────────
   1. Шапка экрана + чип баланса
   ──────────────────────────────────────────────────────────── */
.page-header {
  min-height: 64px;
  padding: 10px var(--ld-gutter);
  gap: 10px;
  background: rgba(16,12,34,.78);
  border-bottom: 1px solid var(--ld-hairline);
  box-shadow: none;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  box-sizing: border-box;
}

/* Игровые экраны: «назад» + название игры + баланс */
.game-header { justify-content: flex-start; }
.gh-back {
  width: 44px; height: 44px; flex-shrink: 0;
  margin-left: -6px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: var(--ld-card);
  border: 1px solid var(--ld-border);
  color: var(--ld-text);
  cursor: pointer;
  transition: transform var(--ld-t-fast), background var(--ld-t);
}
.gh-back svg { width: 20px; height: 20px; display: block; margin-right: 2px; }
.gh-back:active { transform: scale(.92); background: rgba(255,255,255,.10); }
.gh-title {
  flex: 1; min-width: 0;
  font-family: var(--ld-font-display);
  font-weight: 800; font-style: italic;
  font-size: 17px; letter-spacing: .03em; line-height: 1.1;
  color: var(--ld-text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* Пилюля пользователя */
.ld-user-pill {
  min-width: 0;
  height: 44px; box-sizing: border-box;
  padding: 4px 14px 4px 4px;
  background: var(--ld-card);
  border: 1px solid var(--ld-border);
  backdrop-filter: none; -webkit-backdrop-filter: none;
}
.ld-avatar-ring { width: 34px; height: 34px; }
.ld-user-name {
  font-size: 15px;
  overflow: hidden; text-overflow: ellipsis;
  max-width: 42vw;
}

/* Чип баланса — один вид на всех экранах; тап открывает пополнение */
.chip.chip-stars.caps-chip,
.ld-stars-chip {
  flex-shrink: 0;
  height: 44px; box-sizing: border-box;
  display: flex; align-items: center; gap: 7px;
  padding: 0 6px 0 12px;
  background: rgba(255,200,58,.08);
  border: 1px solid rgba(255,200,58,.34);
  border-radius: var(--ld-r-pill);
  box-shadow: none;
  font-family: var(--ld-font-ui);
  cursor: pointer;
  transition: transform var(--ld-t-fast), background var(--ld-t);
}
.chip.chip-stars.caps-chip:active,
.ld-stars-chip:active { transform: scale(.96); background: rgba(255,200,58,.14); }
.chip.chip-stars.caps-chip .star-icon,
.ld-stars-chip .star-icon { font-size: 15px; line-height: 1; }
.chip.chip-stars.caps-chip .val,
.ld-stars-chip .val {
  font-family: var(--ld-font-ui);
  font-weight: 800; font-size: 16px; letter-spacing: 0;
  color: var(--ld-star);
  font-variant-numeric: tabular-nums;
}
/* «+» — подсказка, что чип кликабелен */
.chip.chip-stars.caps-chip::after,
.ld-stars-chip::after {
  content: '+';
  width: 30px; height: 30px; margin-left: 2px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: var(--ld-gold);
  color: var(--ld-on-gold);
  font-family: var(--ld-font-ui); font-weight: 800; font-size: 19px; line-height: 1;
}

/* ────────────────────────────────────────────────────────────
   2. Общие кнопки
   ──────────────────────────────────────────────────────────── */

/* Полноширинные CTA — общая геометрия и типографика */
.crash-place-btn, .crash-cashout-btn,
.safe-start-btn, .safe-submit-btn, .safe-again-btn,
.promo-btn, .pw-btn, .modal-btn,
body .cp-open-btn, body .co-claim-btn {
  min-height: var(--ld-h-ctl);
  box-sizing: border-box;
  border-radius: 16px;
  font-family: var(--ld-font-display);
  font-weight: 800; font-style: normal;
  font-size: 13px; letter-spacing: .05em; line-height: 1.15;
  text-transform: uppercase;
  cursor: pointer;
  transition: transform var(--ld-t-fast), box-shadow var(--ld-t), opacity var(--ld-t), background var(--ld-t);
}
.crash-place-btn:active, .crash-cashout-btn:active,
.safe-start-btn:active, .safe-submit-btn:active, .safe-again-btn:active,
.promo-btn:active, .pw-btn:active, .modal-btn:active,
body .cp-open-btn:active, body .co-claim-btn:active { transform: scale(.975); }

/* Золотая — списание/зачисление Stars */
.crash-place-btn, .safe-start-btn, .pw-btn-buy,
.modal-btn, body .cp-open-btn, body .co-claim-btn {
  background: var(--ld-gold);
  color: var(--ld-on-gold);
  border: none;
  box-shadow: 0 8px 22px rgba(255,180,0,.24), inset 0 1px 0 rgba(255,255,255,.38);
}
/* Голо — основное действие без списания */
.safe-submit-btn, .promo-btn {
  background: var(--ld-holo);
  color: var(--ld-on-holo);
  border: none;
  box-shadow: 0 8px 22px rgba(91,184,255,.24), inset 0 1px 0 rgba(255,255,255,.35);
}
/* Стекло — вторичное */
.pw-btn-withdraw, .safe-again-btn, .modal-btn.modal-cancel {
  background: var(--ld-card);
  color: var(--ld-text);
  border: 1px solid var(--ld-border-strong);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
}
.pw-btn-withdraw:active, .safe-again-btn:active, .modal-btn.modal-cancel:active { background: rgba(255,255,255,.09); }
.pw-btn-buy:hover { background: var(--ld-gold); }
.pw-btn-withdraw:hover { background: var(--ld-card); }

/* CTA-ссылка (<a class="pw-btn">) — центрируем текст как у кнопки; инлайновый display:block в разметке */
a.pw-btn { display: flex !important; align-items: center; justify-content: center; }

/* Disabled — одинаково везде: приглушено, без свечения */
.crash-place-btn:disabled, .safe-start-btn:disabled, .safe-submit-btn:disabled,
.promo-btn:disabled, .pw-btn:disabled, body .cp-open-btn:disabled {
  opacity: .42; box-shadow: none; cursor: not-allowed; transform: none;
}

/* Текстовая вторичная кнопка («как играть», «проверить зачисление») */
.safe-howto-btn, .leaders-howto-btn, .pw-btn-check {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%; min-height: var(--ld-h-ctl-sm);
  box-sizing: border-box;
  padding: 0 16px;
  background: var(--ld-card);
  border: 1px solid var(--ld-border);
  border-radius: var(--ld-r-btn);
  color: var(--ld-text-2);
  font-family: var(--ld-font-ui);
  font-size: 13px; font-weight: 700; letter-spacing: .04em;
  cursor: pointer;
  transition: background var(--ld-t), color var(--ld-t), transform var(--ld-t-fast);
}
.safe-howto-btn:active, .leaders-howto-btn:active, .pw-btn-check:active {
  background: rgba(111,233,255,.10); color: var(--ld-ice); transform: scale(.985);
}
.rf-action-ico { width: 18px; height: 18px; flex-shrink: 0; color: var(--ld-ice); }

/* Быстрые чипы ставки */
.bet-chips {
  display: grid; grid-template-columns: repeat(5, 1fr);
  gap: 8px;
  margin-bottom: 12px;
}
.bet-chip {
  position: relative;
  height: 38px;
  border-radius: var(--ld-r-sm);
  background: var(--ld-card);
  border: 1px solid var(--ld-border);
  color: var(--ld-text-2);
  font-family: var(--ld-font-ui);
  font-size: 13px; font-weight: 800;
  font-variant-numeric: tabular-nums;
  cursor: pointer;
  transition: transform var(--ld-t-fast), background var(--ld-t), color var(--ld-t), border-color var(--ld-t);
}
/* расширяем тач-зону до 46px, не раздувая панель */
.bet-chip::before { content: ''; position: absolute; inset: -4px 0; }
.bet-chip:active {
  transform: scale(.94);
  background: rgba(111,233,255,.12);
  border-color: rgba(111,233,255,.45);
  color: var(--ld-ice);
}

/* ────────────────────────────────────────────────────────────
   3. ИГРЫ — хаб
   ──────────────────────────────────────────────────────────── */
/* Скроллер хаба доходит до низа экрана (клиренс под меню — его собственным padding),
   иначе контент обрезался ровной линией над нижним меню. */
#tab-games { padding-bottom: 0; }
.ld-games-content { gap: 10px; padding: 14px var(--ld-gutter) calc(112px + env(safe-area-inset-bottom, 0px)); }
.ld-tile-grid { gap: 10px; overflow: visible; }

.ld-tile,
.ld-tile-crash, .ld-tile-case, .ld-tile-starfall, .ld-tile-safe {
  padding: 0;
  border: none;
  border-radius: var(--ld-r-card);
  background-color: #0d0b1c;
  box-shadow: 0 10px 28px rgba(0,0,0,.42);
  transition: transform var(--ld-t) var(--ld-ease);
}
.ld-tile:active { transform: scale(.975); }
/* тонкая внутренняя кромка цвета игры вместо золотой рамки */
.ld-tile::before {
  box-shadow:
    inset 0 0 0 1px var(--tile-edge, rgba(255,255,255,.14)),
    inset 0 1px 0 rgba(255,255,255,.18);
}
.ld-tile-crash    { --tile-accent: #6FE9FF; --tile-edge: rgba(111,233,255,.34); min-height: 152px; }
.ld-tile-case     { --tile-accent: #C9A8FF; --tile-edge: rgba(169,139,255,.36); min-height: 192px; }
.ld-tile-starfall { --tile-accent: #F9A8F4; --tile-edge: rgba(245,139,240,.34); min-height: 192px; }
.ld-tile-safe     { --tile-accent: #FFD166; --tile-edge: rgba(255,200,58,.34);  min-height: 124px; }

.ld-tile-bar {
  justify-content: space-between; align-items: flex-end;
  gap: 8px;
  padding: 38px 12px 12px 14px;
  background: linear-gradient(0deg, rgba(7,6,14,.94) 0%, rgba(7,6,14,.72) 46%, rgba(7,6,14,0) 100%);
}
.ld-tile-meta { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ld-tile-name {
  font-family: var(--ld-font-display);
  font-weight: 800; font-style: italic;
  font-size: 17px; letter-spacing: .03em; line-height: 1.05;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,.7);
}
.ld-tile-crash .ld-tile-name { font-size: 22px; }
.ld-tile-tag {
  font-family: var(--ld-font-ui);
  font-weight: 700; font-size: 11.5px; line-height: 1.25;
  color: var(--tile-accent, var(--ld-ice));
}
.ld-tile-go {
  width: 40px; height: 40px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: var(--ld-holo);
  color: var(--ld-on-holo);
  box-shadow: 0 6px 16px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.45);
}
.ld-tile-go svg { width: 17px; height: 17px; display: block; margin-left: 1px; }

/* LIVE-метка на Crash — раунды идут всегда */
.ld-tile-live {
  position: absolute; top: 12px; left: 12px; z-index: 2;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px 5px 8px;
  border-radius: var(--ld-r-pill);
  background: rgba(7,6,14,.62);
  border: 1px solid rgba(255,255,255,.16);
  font-family: var(--ld-font-ui);
  font-size: 10px; font-weight: 800; letter-spacing: .14em;
  color: #fff;
}
.ld-tile-live i {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--ld-danger);
  box-shadow: 0 0 8px var(--ld-danger);
  animation: ldLivePulse 1.6s ease-in-out infinite;
}
@keyframes ldLivePulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: .35; transform: scale(.7); } }

.ld-games-divider { margin: 8px 0 0; }
.ld-games-divider-line { background: linear-gradient(90deg, transparent, var(--ld-border-strong)); }
.ld-games-divider-line.right { background: linear-gradient(90deg, var(--ld-border-strong), transparent); }
.ld-games-divider-text { color: var(--ld-muted); }
.ld-tile-haven-strip {
  border-radius: var(--ld-r-md);
  background: var(--ld-card);
  border: 1px solid var(--ld-border);
  padding: 0 14px 0 16px;
}

/* ────────────────────────────────────────────────────────────
   4. CRASH
   ──────────────────────────────────────────────────────────── */
#tab-crash .page-header { margin-bottom: 12px; }
.crash-space {
  height: 40vh; min-height: 236px; max-height: 340px;
  margin: 0 var(--ld-gutter);
  border-width: 1px;
  background-color: #080713;
  background-image:
    radial-gradient(90% 70% at 100% 0%, rgba(169,139,255,.16), transparent 62%),
    radial-gradient(80% 60% at 0% 100%, rgba(95,245,223,.10), transparent 60%),
    linear-gradient(rgba(140,170,255,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(140,170,255,.055) 1px, transparent 1px);
  background-size: auto, auto, 40px 40px, 40px 40px;
}
/* нижний fade слабее — он гасил начало траектории */
.crash-space::after { height: 36px; opacity: .55; }
.crash-space.state-running { box-shadow: 0 0 0 1px rgba(111,233,255,.10), 0 0 34px rgba(91,184,255,.16), 0 8px 32px rgba(0,0,0,.5) !important; }
.crash-space.state-crashed { box-shadow: 0 0 0 1px rgba(239,68,68,.14), 0 0 34px rgba(239,68,68,.18), 0 8px 32px rgba(0,0,0,.5) !important; }

/* Размер от ширины экрана: на 320px «12.34×» не должен вылезать за арену */
.crash-mult { font-size: clamp(44px, 17vw, 64px); letter-spacing: 0; font-variant-numeric: tabular-nums; white-space: nowrap; }
.crash-mult.waiting { font-size: clamp(40px, 15vw, 56px); }
.crash-mult.mega, .crash-mult.crashed { font-size: clamp(36px, 13.5vw, 56px); }
.crash-prep-num { font-size: 120px; text-shadow: 0 0 34px rgba(255,200,58,.75), 0 0 80px rgba(255,200,58,.3); }
.crash-status-text { font-size: 11px; letter-spacing: .2em; margin-top: 10px; }

/* История — пилюли */
.crash-hist-frame { top: 12px; left: 12px; }
.crash-hist-row { gap: 6px; }
.crash-hist-chip {
  font-size: 11px; padding: 5px 10px; min-width: 0;
  border-radius: var(--ld-r-pill);
  font-variant-numeric: tabular-nums;
  background-color: rgba(7,6,14,.55);
}

.crash-divider { display: none; }
.crash-action-wrap { padding: 14px var(--ld-gutter) 12px; background: transparent; }
.crash-inputs-row { gap: 10px; margin-bottom: 10px; }
.crash-input-label, .safe-bet-label, .crash-cashout-label, .crash-bets-header {
  font-family: var(--ld-font-ui);
  font-size: 10.5px; font-weight: 800; letter-spacing: .14em;
  color: var(--ld-muted);
}

/* Поле ставки — рамка на обёртке, чтобы префикс/степпер были внутри */
.crash-input-wrap, .safe-bet-wrap {
  display: flex; align-items: center;
  height: var(--ld-h-ctl);
  background: var(--ld-field);
  border: 1px solid var(--ld-border);
  border-radius: var(--ld-r-btn);
  overflow: hidden;
  transition: border-color var(--ld-t), box-shadow var(--ld-t);
}
.crash-input-wrap:focus-within, .safe-bet-wrap:focus-within {
  border-color: rgba(111,233,255,.55);
  box-shadow: 0 0 0 3px rgba(111,233,255,.10);
}
.crash-input-wrap input, .safe-bet-wrap input {
  flex: 1; min-width: 0; width: 100%; height: 100%;
  background: none; border: none; border-radius: 0; box-shadow: none;
  padding: 0 12px;
  color: var(--ld-text);
  font-family: var(--ld-font-ui);
  font-size: 17px; font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.crash-input-wrap input:focus, .safe-bet-wrap input:focus { background: none; border: none; box-shadow: none; }
.crash-input-wrap input::placeholder, .safe-bet-wrap input::placeholder {
  color: var(--ld-faint); font-size: 12.5px; font-weight: 600; letter-spacing: 0;
}
.crash-star-prefix, .safe-bet-star {
  position: static; transform: none;
  margin-left: 12px; font-size: 15px; flex-shrink: 0;
}
.crash-star-wrap input, .safe-bet-wrap input { padding-left: 8px; }
.crash-bet-plus-btn {
  width: 42px; height: 100%; flex-shrink: 0;
  background: rgba(111,233,255,.10);
  border: none; border-left: 1px solid var(--ld-border);
  color: var(--ld-ice);
  font-size: 22px; font-weight: 700; line-height: 1;
  cursor: pointer;
  transition: background var(--ld-t);
}

.crash-place-btn {
  min-height: 56px; padding: 0 14px 0 18px;
  justify-content: space-between; gap: 10px;
  font-size: 14px; white-space: nowrap;
}
.crash-btn-amount {
  padding: 7px 12px; border-radius: var(--ld-r-pill);
  background: rgba(42,28,0,.16); border: none;
  font-family: var(--ld-font-ui); font-size: 14px; font-weight: 800; letter-spacing: 0;
  font-variant-numeric: tabular-nums;
}
.crash-cashout-btn {
  min-height: 56px; padding: 0 14px 0 18px;
  background: linear-gradient(135deg, #7BF7E4, #5BB8FF);
  color: var(--ld-on-holo);
  font-size: 14px;
  box-shadow: 0 8px 24px rgba(91,184,255,.30), inset 0 1px 0 rgba(255,255,255,.4);
}
.crash-co-mult {
  padding: 7px 12px; border-radius: var(--ld-r-pill);
  background: rgba(6,18,26,.16);
  font-family: var(--ld-font-ui); font-size: 15px; font-weight: 800; letter-spacing: 0;
  font-variant-numeric: tabular-nums;
}
.crash-cashout-info { padding: 0 2px; margin-bottom: 10px; gap: 8px; }
.crash-cashout-label { flex: 1; min-width: 0; line-height: 1.3; }
.crash-ac-target { margin: 0; white-space: nowrap; border-radius: var(--ld-r-pill); padding: 5px 10px; font-size: 11px; }
.crash-cashout-amount { font-size: 17px; color: var(--ld-win); }
.crash-mybet-badge {
  padding: 14px 16px; border-radius: var(--ld-r-btn);
  background: var(--ld-card); border: 1px solid var(--ld-border);
  font-size: 14px; font-weight: 600;
}

.crash-bets-section {
  margin: 4px var(--ld-gutter) 96px;
  background: var(--ld-card);
  border: 1px solid var(--ld-border);
  border-radius: var(--ld-r-card);
  box-shadow: none;
}
.crash-bets-header { padding: 13px 16px; border-bottom: 1px solid var(--ld-hairline); }
.crash-bets-count { border-radius: var(--ld-r-pill); padding: 3px 10px; font-size: 12px; letter-spacing: 0; }
.crash-bet-item { padding: 10px 16px; min-height: 54px; box-sizing: border-box; border-bottom-color: var(--ld-hairline); }
.crash-bet-name { font-size: 14px; font-weight: 600; color: var(--ld-text-2); }
.crash-bet-amt, .crash-bet-result { font-size: 13.5px; font-weight: 800; font-variant-numeric: tabular-nums; }
.crash-bet-result.result-win { color: var(--ld-win); }
.crash-bet-item.won { background: rgba(60,230,166,.07); animation: ldRowWin .6s var(--ld-ease); }
@keyframes ldRowWin { from { background: rgba(60,230,166,.30); } to { background: rgba(60,230,166,.07); } }
.crash-empty-bets { padding: 26px 16px; font-size: 13px; color: var(--ld-muted); }

/* ────────────────────────────────────────────────────────────
   5. КАПСУЛЫ
   ──────────────────────────────────────────────────────────── */
.caps-grid { gap: 12px; padding: 14px var(--ld-gutter) 24px; }
.caps-hero {
  border-width: 1px; border-radius: var(--ld-r-card);
  padding: 18px 12px 18px 18px;
}
.caps-hero-badge { font-size: 9.5px; letter-spacing: .1em; padding: 4px 10px; }
.caps-hero-title {
  font-family: var(--ld-font-display);
  font-weight: 800; font-style: italic;
  font-size: 22px; letter-spacing: .01em; line-height: 1.1;
  text-shadow: none;
}
.caps-hero-desc { font-size: 12.5px; color: var(--ld-text-2); }
.caps-hero-action {
  min-height: 40px; box-sizing: border-box; padding: 0 16px;
  background: var(--ld-gold); color: var(--ld-on-gold);
  font-family: var(--ld-font-ui); font-size: 13px; font-weight: 800;
}
.caps-section-hdr {
  font-family: var(--ld-font-ui);
  font-size: 11px; font-weight: 800; letter-spacing: .16em;
  color: var(--ld-muted);
  margin-top: 6px;
}
.cap-card-v2 {
  border-width: 1px; border-radius: var(--ld-r-card);
  padding: 16px 12px 12px;
  background: linear-gradient(165deg, rgba(255,255,255,.06) 0%, rgba(13,11,28,.96) 58%);
}
.cap-v2-rank-label { font-size: 9.5px; letter-spacing: .08em; }
.cap-v2-range { font-size: 10px; padding: 4px 8px; }
.cap-v2-btn {
  min-height: 42px; padding: 0 10px;
  background: var(--ld-gold); color: var(--ld-on-gold);
  font-family: var(--ld-font-display);
  font-weight: 800; font-size: 13px; letter-spacing: .01em;
  box-shadow: 0 6px 16px rgba(255,180,0,.20), inset 0 1px 0 rgba(255,255,255,.38);
}
/* Бегущий блик на каждой карточке грузил слабые телефоны постоянной перерисовкой —
   оставляем его только на главной кнопке открытия (одна на экране). */
.cap-v2-btn::after, .cap-v2-nft-hint::after, .caps-hero-action::after, .task-btn::after { content: none; animation: none; }

/* Оверлеи капсул (стили инжектятся из capsules.js позже — поэтому body-префикс) */
body .cp-open-btn { max-width: 340px; padding: 0 16px; min-height: 56px; font-size: 14px; font-style: normal; letter-spacing: .05em; }
body .cp-price-tag {
  font-family: var(--ld-font-ui); font-size: 15px; font-weight: 800;
  padding: 6px 12px; background: rgba(42,28,0,.16);
}
body .co-claim-btn { padding: 0 44px; min-height: 54px; font-size: 14px; font-style: normal; letter-spacing: .05em; }
body .cp-close, body .co-close { width: 44px; height: 44px; }
body .cp-multi-btn { min-height: 44px; padding: 0; font-style: normal; font-size: 14px; border-radius: var(--ld-r-btn); }
body .cp-range-block, body .cp-tiers-breakdown, body .co-tier-legend {
  backdrop-filter: none; -webkit-backdrop-filter: none;   /* фон под ними и так непрозрачный */
  background: var(--ld-card);
}
.cg-value { font-family: var(--ld-font-display); font-weight: 800; font-size: 28px; letter-spacing: 0; font-variant-numeric: tabular-nums; }
.cg-tick, .cg-range-label { font-family: var(--ld-font-ui); font-variant-numeric: tabular-nums; }
.cg-range-label { color: var(--ld-muted); }

/* ────────────────────────────────────────────────────────────
   6. РАЗДАЧА
   ──────────────────────────────────────────────────────────── */
.rf-toolbar { margin: 12px var(--ld-gutter) 10px; gap: 10px; }
.rf-modes { gap: 4px; background: var(--ld-field); border-color: var(--ld-border); }
.rf-mode-btn { min-height: 40px; padding: 0 6px; font-family: var(--ld-font-ui); font-size: 14px; }
.rf-mode-btn.active { box-shadow: 0 4px 14px rgba(91,184,255,.28), inset 0 1px 0 rgba(255,255,255,.4); }
.rf-progress {
  height: 50px; box-sizing: border-box; padding: 0 14px;
  border-radius: var(--ld-r-pill);
  background: var(--ld-card);
  font-variant-numeric: tabular-nums;
}
.rf-status-row { margin: 0 var(--ld-gutter) 12px; font-size: 12.5px; }
.rf-grid-main { margin: 0 var(--ld-gutter); gap: 7px; }
.rf-cell { border-radius: var(--ld-r-sm); border-color: rgba(140,170,255,.16); }
.rf-cell.closed {
  background: linear-gradient(155deg, rgba(111,233,255,.13), rgba(169,139,255,.10) 55%, rgba(20,18,40,.9));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.10);
}
.rf-cell.closed:active { transform: scale(.92); }
.rf-cell .rf-cicon svg { width: 20px; height: 20px; filter: none; opacity: .92; }
.rf-cell.closed:active .rf-cicon svg { filter: none; }
.rf-cell.open.pending { background: linear-gradient(155deg, rgba(255,255,255,.10), rgba(255,255,255,.03)); }
.rf-cell.open.empty { background: rgba(255,84,112,.10); border-color: rgba(255,84,112,.22); color: rgba(255,255,255,.5); }
.rf-cell.open.prize { box-shadow: 0 0 16px rgba(255,190,40,.35); border-color: rgba(255,225,130,.7); }
.rf-cell.open.mine { box-shadow: 0 0 0 2px var(--ld-cyan) inset; }

/* История / Как играть — в один ряд, чтобы не уезжали под нижнее меню */
.rf-actions {
  flex: 0 0 auto;
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px;
  margin: 12px var(--ld-gutter) 0;
}
.rf-action-strip {
  margin: 0; min-width: 0; min-height: 48px; padding: 0 8px;
  justify-content: center;
  border-radius: var(--ld-r-btn);
  background: var(--ld-card); border: 1px solid var(--ld-border);
  transition: background var(--ld-t), transform var(--ld-t-fast);
}
.rf-action-strip:active { background: rgba(111,233,255,.10); transform: scale(.98); }
.rf-action-strip-title {
  display: flex; align-items: center; gap: 8px; min-width: 0;
  gap: 6px;
  font-size: 10.5px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase;
  color: var(--ld-text-2);
}
.rf-actions .rf-action-strip-arrow { display: none; }
.rf-action-strip-title span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ────────────────────────────────────────────────────────────
   7. VAULT
   ──────────────────────────────────────────────────────────── */
#tab-safe .page-header { margin-bottom: 12px; }
.safe-top-row { padding: 0 var(--ld-gutter); }
.safe-scene { box-shadow: 0 0 0 1px var(--ld-border-strong), 0 10px 34px rgba(0,0,0,.5); }
.safe-divider { display: none; }
.safe-action { padding: 14px var(--ld-gutter) 8px; }
.safe-howto-btn { margin-bottom: 10px; text-transform: uppercase; font-size: 12px; letter-spacing: .1em; }
.safe-diff-row { gap: 8px; margin-bottom: 10px; }
.safe-diff-btn {
  min-height: 72px; padding: 8px 4px;
  border-width: 1px; border-color: var(--ld-border);
  border-radius: var(--ld-r-btn);
  background: var(--ld-card);
  font-family: var(--ld-font-ui); font-size: 12px; font-weight: 700; letter-spacing: .02em;
  color: var(--ld-muted);
  transition: background var(--ld-t), border-color var(--ld-t), color var(--ld-t), transform var(--ld-t-fast);
}
.safe-diff-btn .safe-diff-n { font-family: var(--ld-font-display); font-size: 20px; }
.safe-diff-btn:active { opacity: 1; transform: scale(.96); }
.safe-diff-btn.active {
  border-color: rgba(111,233,255,.6);
  background: rgba(111,233,255,.10);
  color: var(--ld-text);
  box-shadow: inset 0 0 0 1px rgba(111,233,255,.35);
}
.safe-diff-mult { font-family: var(--ld-font-ui); font-size: 12px; }
.safe-bet-row { gap: 12px; margin-bottom: 10px; }
.safe-start-btn { width: 100%; font-size: 14px; min-height: 56px; }
.safe-keyboard { gap: 8px; margin-bottom: 10px; }
.safe-sym-btn {
  min-height: 48px; padding: 0;
  border-width: 1px; border-color: var(--ld-border);
  border-radius: var(--ld-r-btn);
  background: var(--ld-card);
  color: var(--ld-text);
  font-size: 19px;
}
.safe-sym-btn:active { transform: scale(.9); background: rgba(111,233,255,.14); border-color: rgba(111,233,255,.45); }
.safe-delete-btn {
  min-width: 56px; min-height: var(--ld-h-ctl); padding: 0 16px;
  border-width: 1px; border-color: var(--ld-border-strong);
  border-radius: 16px;
  background: var(--ld-card);
}
.safe-submit-btn { font-size: 13px; }
.safe-guess-chip, .safe-combo-chip { border-width: 1px; border-radius: var(--ld-r-xs); }
.safe-try-dot { width: 10px; height: 10px; }
.safe-tries-label { color: var(--ld-muted); font-size: 10.5px; font-weight: 800; letter-spacing: .14em; }
.safe-code-reveal { border-radius: var(--ld-r-sm); padding: 9px 12px; }
.safe-interior-mult { font-style: italic; }

/* ────────────────────────────────────────────────────────────
   8. МАГАЗИН
   ──────────────────────────────────────────────────────────── */
.shop-toolbar { padding: 14px var(--ld-gutter) 12px; gap: 10px; }
.shop-price-range, .shop-sort-select {
  height: var(--ld-h-ctl-sm); box-sizing: border-box;
  background: var(--ld-field);
  border-color: var(--ld-border);
}
.shop-price-input { padding: 0; height: 100%; }
.shop-item-grid { gap: 10px; padding: 0 var(--ld-gutter); }
.shop-item-card {
  background: var(--ld-card);
  border: 1px solid var(--ld-border);
  border-radius: var(--ld-r-md);
  transition: transform var(--ld-t-fast);
}
.shop-item-img-wrap {
  background: radial-gradient(circle at 50% 38%, rgba(169,139,255,.22), rgba(12,10,26,.2) 72%);
}
.shop-item-body { padding: 8px 8px 9px; gap: 2px; }
.shop-item-name { font-size: 12px; font-weight: 800; }
.shop-item-desc { font-size: 10.5px; color: var(--ld-muted); }
.shop-item-buy, .shop-price-buy {
  min-height: 36px; padding: 0 6px; margin-top: 7px;
  border-radius: var(--ld-r-pill);
  background: var(--ld-gold); color: var(--ld-on-gold);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.38);
  font-family: var(--ld-font-ui); font-size: 12px; font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.shop-item-buy:active { background: var(--ld-gold); transform: scale(.96); }
.shop-section-title { padding: 18px var(--ld-gutter) 8px; font-size: 11px; font-weight: 800; letter-spacing: .16em; color: var(--ld-muted); }
.gift-price-card { background: var(--ld-card); border-color: var(--ld-border); border-radius: var(--ld-r-btn); }
.gift-price-img-wrap { background: radial-gradient(circle at 50% 38%, rgba(169,139,255,.20), rgba(12,10,26,.2) 72%); }

/* ────────────────────────────────────────────────────────────
   9. ЗАДАНИЯ + серия
   ──────────────────────────────────────────────────────────── */
.tasks-list { padding: 14px var(--ld-gutter) 0; display: flex; flex-direction: column; gap: 12px; }
.task-item {
  margin-bottom: 0;
  padding: 14px;
  border-radius: var(--ld-r-md);
  box-shadow: none;
}
.task-top { gap: 12px; margin-bottom: 12px; }
.task-icon { width: 44px; height: 44px; }
.task-title { font-size: 13px; font-style: normal; letter-spacing: 0; line-height: 1.25; }
.task-desc { font-size: 12.5px; line-height: 1.45; color: var(--ld-muted); }
.task-reward-badge { padding: 4px 10px; border-radius: var(--ld-r-pill); font-variant-numeric: tabular-nums; }
.task-reward-badge:empty { display: none; }
.task-progress-bar { height: 5px; border-radius: 99px; }
.task-progress-fill { border-radius: 99px; }
.task-progress-label { font-size: 11px; color: var(--ld-text-2); font-variant-numeric: tabular-nums; }
.task-btn {
  min-height: 46px; padding: 0 14px;
  font-style: normal; font-size: 12.5px; letter-spacing: .05em; text-transform: uppercase;
  box-shadow: 0 6px 18px rgba(91,184,255,.20), inset 0 1px 0 rgba(255,255,255,.35);
}
.task-btn:empty { display: none; }
.task-btn.done { background: rgba(60,230,166,.10); color: var(--ld-win); border-color: rgba(60,230,166,.28); box-shadow: none; }
.task-done-badge { background: rgba(60,230,166,.14); border-color: rgba(60,230,166,.4); color: var(--ld-win); box-shadow: none; top: 12px; right: 12px; }

.streak-days { gap: 6px; margin-bottom: 12px; }
.streak-day { padding: 8px 0; border-radius: var(--ld-r-sm); gap: 3px; }
.streak-day-n { font-size: 9px; }
.streak-day-r { font-size: 12.5px; font-variant-numeric: tabular-nums; }
.streak-day.done { background: rgba(60,230,166,.10); border-color: rgba(60,230,166,.30); }
.streak-day.done .streak-day-n { color: var(--ld-win); }
.streak-day.today {
  background: rgba(169,139,255,.14);
  box-shadow: 0 0 0 1px var(--ld-violet), 0 0 14px rgba(169,139,255,.30);
}

/* Шторка пополнения — пресеты */
.topup-presets { gap: 10px; margin-bottom: 12px; }
.topup-preset {
  min-height: 56px; border-radius: var(--ld-r-btn);
  background: var(--ld-card); border-color: var(--ld-border);
  transition: transform var(--ld-t-fast), border-color var(--ld-t), background var(--ld-t);
}
.topup-preset:active { transform: scale(.96); background: rgba(255,200,58,.10); border-color: rgba(255,200,58,.5); }
.topup-preset.need { border-color: var(--ld-star); background: rgba(255,200,58,.10); }
.topup-preset-amt { font-size: 15px; font-variant-numeric: tabular-nums; }
.topup-bonus-banner { border-radius: var(--ld-r-md); padding: 12px 14px; }

/* ────────────────────────────────────────────────────────────
   10. ЛИДЕРЫ
   ──────────────────────────────────────────────────────────── */
.leaders-banner { border-radius: var(--ld-r-card); border-color: var(--ld-border-strong); box-shadow: none; }
.leaders-howto-btn { margin-top: 12px; text-transform: uppercase; font-size: 12px; letter-spacing: .08em; }
.leaders-tabs, .topup-tabs {
  background: var(--ld-field);
  border: 1px solid var(--ld-border);
  border-radius: var(--ld-r-btn);
  padding: 4px;
}
.leaders-tab-slider, .topup-tabs-slider {
  top: 4px; bottom: 4px; left: 4px;
  border: none; border-radius: 10px;
  background: var(--ld-holo);
  box-shadow: 0 4px 14px rgba(91,184,255,.28);
}
/* Ширины подобраны под формулы сдвига в JS: leaders.js двигает на (100% + 2px) за шаг,
   profile.js — ровно на 100%. Шаг должен совпадать с шириной вкладки при padding 4px. */
.leaders-tab-slider { left: 5px; width: calc((100% - 8px) / 4 - 2px); }
.topup-tabs-slider  { left: 4px; width: calc((100% - 8px) / 3); }
.leaders-tab, .topup-tab {
  min-height: 40px; padding: 0 2px;
  font-family: var(--ld-font-ui);
  font-size: 12px; font-weight: 800; letter-spacing: .04em;
  color: var(--ld-muted);
}
.topup-tab { font-size: 13.5px; letter-spacing: 0; }
.leaders-tab.active, .topup-tab.active { color: var(--ld-on-holo); }
.leaders-season-btn {
  min-height: 36px; padding: 0 16px;
  font-family: var(--ld-font-ui); font-size: 12px; font-weight: 800; letter-spacing: .06em;
  background: var(--ld-card); border-color: var(--ld-border);
}
.leaders-season-btn.active { background: rgba(111,233,255,.12); border-color: rgba(111,233,255,.45); }
.leaders-row {
  padding: 10px 14px; border-radius: var(--ld-r-md);
  background: var(--ld-card); border-color: var(--ld-border);
}
.leaders-row.is-me { background: rgba(111,233,255,.09); border-color: rgba(111,233,255,.38); }
.leaders-rank {
  font-family: var(--ld-font-display); font-weight: 800; font-size: 14px; letter-spacing: 0;
  font-variant-numeric: tabular-nums;
}
.leaders-rank.gold, .leaders-rank.silver, .leaders-rank.bronze { font-size: 22px; }
.leaders-avatar { width: 44px; height: 44px; }
.leaders-name { font-weight: 800; }
.leaders-score-val {
  font-family: var(--ld-font-ui); font-size: 13px; font-weight: 800; letter-spacing: 0;
  color: var(--ld-star); font-variant-numeric: tabular-nums;
}
.leaders-banner-timer .ld-timer-days-num,
.leaders-banner-timer .ld-timer-clock {
  font-family: var(--ld-font-display); font-weight: 800; letter-spacing: 0;
  font-variant-numeric: tabular-nums;
}
.leaders-banner-timer .ld-timer-days-num { font-size: 24px; }
.leaders-banner-timer .ld-timer-clock { font-size: 17px; text-shadow: none; }

/* ────────────────────────────────────────────────────────────
   11. ПРОФИЛЬ
   ──────────────────────────────────────────────────────────── */
.profile-hero { border-bottom-color: var(--ld-hairline); }
.profile-name { font-size: 24px; letter-spacing: 0; font-style: italic; }
.profile-wallet { margin: 16px var(--ld-gutter) 16px; gap: 12px; }
.pw-balance-card {
  background: linear-gradient(160deg, rgba(255,200,58,.10), rgba(255,255,255,.02) 62%);
  border-color: rgba(255,200,58,.30);
  border-radius: var(--ld-r-card);
  box-shadow: none;
}
.pw-balance-label { letter-spacing: .16em; font-weight: 800; }
.pw-balance-val { font-size: 38px; letter-spacing: 0; font-variant-numeric: tabular-nums; }
.pw-balance-icon { font-size: 32px; filter: none; }
.pw-btn { padding: 0 14px; font-size: 12.5px; }
.pw-form-card, .promo-section, .ref-stat-card, .ref-balance-card, .ref-list, .gift-step {
  background: var(--ld-card);
  border-color: var(--ld-border);
  backdrop-filter: none; -webkit-backdrop-filter: none;
  box-shadow: none;
}
.pw-form-card, .promo-section { border-radius: var(--ld-r-md); }
.promo-section, .ref-section { margin: 0 var(--ld-gutter) 12px; }
.pw-input-wrap, .promo-input {
  min-height: var(--ld-h-ctl); box-sizing: border-box;
  background: var(--ld-field);
  border-color: var(--ld-border);
  border-radius: var(--ld-r-btn);
}
.pw-input-wrap:focus-within, .promo-input:focus {
  border-color: rgba(111,233,255,.55);
  box-shadow: 0 0 0 3px rgba(111,233,255,.10);
}
.pw-input-wrap input { font-weight: 800; font-variant-numeric: tabular-nums; }
.promo-label { font-size: 10.5px; font-weight: 800; letter-spacing: .14em; color: var(--ld-muted); }
.promo-btn { font-size: 13px; }
.ref-invite-btn {
  min-height: 56px; border-radius: var(--ld-r-md);
  background: linear-gradient(135deg, rgba(111,233,255,.10), rgba(169,139,255,.10));
  border-color: var(--ld-border-strong);
  font-size: 13.5px;
  transition: transform var(--ld-t-fast);
}
.ref-invite-btn:active { transform: scale(.985); }
.ref-transfer-btn { min-height: 44px; font-size: 13px; }
.ref-back-btn { min-height: 44px; backdrop-filter: none; -webkit-backdrop-filter: none; background: var(--ld-card); }
.ref-copy-btn { width: var(--ld-h-ctl); height: var(--ld-h-ctl); min-width: var(--ld-h-ctl); border-radius: 16px; backdrop-filter: none; -webkit-backdrop-filter: none; }
.profile-lang-corner .lang-btn { min-height: 44px; min-width: 48px; border-radius: var(--ld-r-sm); }
.ach-section-title { padding: 0 var(--ld-gutter); margin: 20px 0 10px; }
.ach-grid { gap: 10px; padding: 0 var(--ld-gutter) 16px; }
.ach-card { border-radius: var(--ld-r-md); }

/* ────────────────────────────────────────────────────────────
   12. Шторки, диалоги, попапы — один визуальный язык
   ──────────────────────────────────────────────────────────── */
.topup-sheet-overlay, .gift-prices-overlay, .nft-confirm-overlay,
.leaders-popup-overlay, .rf-modal-overlay, .modal-overlay {
  background: var(--ld-scrim);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
}
.topup-sheet, .gift-prices-sheet, .rf-modal-sheet, .modal {
  background: var(--ld-bg-screen);
  background-color: var(--ld-card-solid);
  border: 1px solid var(--ld-border-strong);
  border-bottom: none;
  border-radius: var(--ld-r-sheet) var(--ld-r-sheet) 0 0;
  box-shadow: 0 -18px 50px rgba(0,0,0,.5);
}
.nft-confirm-box, .leaders-popup {
  background: var(--ld-bg-screen);
  background-color: var(--ld-card-solid);
  border: 1px solid var(--ld-border-strong);
  border-radius: var(--ld-r-card);
  box-shadow: 0 24px 60px rgba(0,0,0,.6);
}
.topup-sheet-overlay  { z-index: var(--ld-z-sheet); }
.gift-prices-overlay, .nft-confirm-overlay { z-index: var(--ld-z-dialog); }
.rf-modal-overlay { z-index: var(--ld-z-overlay); }
.rf-modal-sheet { padding: 18px var(--ld-gutter) calc(20px + env(safe-area-inset-bottom, 0px)); }
.rf-modal-head h3, .gift-prices-header {
  font-family: var(--ld-font-display); font-weight: 800; font-style: italic;
  font-size: 15px; letter-spacing: .02em;
}
.leaders-popup-title {
  font-family: var(--ld-font-display); font-weight: 800; font-style: italic;
  font-size: 14px; letter-spacing: .03em; line-height: 1.25;
}
.leaders-popup-header { padding: 16px 12px 14px 18px; gap: 10px; border-bottom-color: var(--ld-hairline); }

/* Кнопки закрытия — 44px, один вид */
.topup-sheet-close, .gift-prices-close, .rf-modal-close, .leaders-popup-close {
  width: 44px; height: 44px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: rgba(255,255,255,.07);
  border: 1px solid var(--ld-border);
  color: var(--ld-text-2);
  font-size: 14px; line-height: 1;
  cursor: pointer;
  transition: background var(--ld-t), transform var(--ld-t-fast);
}
.topup-sheet-close { top: 10px; right: 12px; }
.topup-sheet-close:active, .gift-prices-close:active, .rf-modal-close:active, .leaders-popup-close:active {
  background: rgba(255,255,255,.14); transform: scale(.92);
}
.topup-sheet-balance-val { font-variant-numeric: tabular-nums; }
.topup-sheet-balance-label { letter-spacing: .16em; font-weight: 800; color: var(--ld-muted); }
.topup-sheet-submit { margin-top: 14px; }
.gift-step { border-radius: var(--ld-r-btn); }
.gift-step-num { background: var(--ld-holo); color: var(--ld-on-holo); }
.nft-confirm-title { font-weight: 800; font-style: italic; font-size: 16px; letter-spacing: .04em; }
.nft-confirm-price { font-variant-numeric: tabular-nums; }

/* Нижние диалоги showConfirm / showPrompt / showAlert (js/ui.js).
   Единственное место их стилей (старый css/modals.css удалён). */
.modal-overlay {
  position: fixed; inset: 0; z-index: var(--ld-z-dialog);
  display: none; align-items: flex-end; justify-content: center;
  opacity: 0; pointer-events: none;
  transition: opacity .22s ease;
}
.modal-overlay.show { opacity: 1; pointer-events: auto; }
.modal {
  width: 100%; max-width: 480px; box-sizing: border-box;
  padding: 10px 18px calc(22px + env(safe-area-inset-bottom, 0px));
  transform: translateY(100%);
  transition: transform .28s cubic-bezier(.32,.72,0,1);
}
.modal-overlay.show .modal { transform: translateY(0); }
.modal-handle, .topup-sheet-handle {
  width: 40px; height: 4px; border-radius: 999px;
  background: rgba(255,255,255,.20);
  margin: 6px auto 16px;
}
.modal-title {
  font-family: var(--ld-font-display); font-weight: 800; font-style: italic;
  font-size: 17px; letter-spacing: .02em; line-height: 1.25;
  text-align: center; color: var(--ld-text);
  margin-bottom: 12px;
}
.modal-input {
  width: 100%; box-sizing: border-box;
  min-height: var(--ld-h-ctl);
  background: var(--ld-field);
  border: 1px solid var(--ld-border);
  border-radius: var(--ld-r-btn);
  padding: 0 16px; margin-bottom: 12px;
  color: var(--ld-text);
  font-size: 17px; font-weight: 800;
  outline: none;
}
.modal-input:focus { border-color: rgba(111,233,255,.55); box-shadow: 0 0 0 3px rgba(111,233,255,.10); }
.modal-btn { width: 100%; padding: 0 16px; margin-top: 10px; display: block; }

/* ────────────────────────────────────────────────────────────
   13. Нижнее меню
   ──────────────────────────────────────────────────────────── */
.nav {
  background: rgba(14,12,26,.82);
  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border-color: var(--ld-border);
  border-radius: var(--ld-r-card);
  padding: 6px;
  box-shadow: 0 14px 40px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.07);
}
.nav-item {
  min-height: 52px; padding: 6px 0; gap: 3px;
  border-radius: 16px;
  transition: transform var(--ld-t-fast), background var(--ld-t);
}
.nav-item.active { background: rgba(111,233,255,.08); }
.nav-label { font-family: var(--ld-font-ui); font-size: 10px; font-weight: 800; letter-spacing: .04em; }
.nav-item.active .nav-svg {
  transform: none;
  filter: drop-shadow(0 0 8px rgba(111,233,255,.6));
}

@media (max-width: 340px) {
  .nav-label { font-size: 9px; letter-spacing: 0; }
  .ld-user-name { max-width: 32vw; }
  /* 320px: названия в плитках игр и шапках не должны наезжать на кнопку/обрезаться
     (RAFFLE, CAPSULES/КАПСУЛЫ, РАЗДАЧА), вкладка CAPSULES — упираться в край. */
  .ld-tile-grid .ld-tile-name { font-size: 14px; letter-spacing: .01em; }
  .ld-tile-grid .ld-tile-go { width: 34px; height: 34px; }
  .ld-tile-grid .ld-tile-bar { padding-left: 11px; padding-right: 10px; gap: 6px; }
  .gh-title { font-size: 15px; letter-spacing: .01em; }
  .leaders-tab { font-size: 11px; letter-spacing: 0; }
}

/* ────────────────────────────────────────────────────────────
   14. Пустые состояния
   ──────────────────────────────────────────────────────────── */
.empty-state, .rf-history-empty, .ref-empty {
  text-align: center; color: var(--ld-muted);
  font-size: 13px; line-height: 1.55;
}
.rf-history-empty { padding: 28px 0; }

/* ────────────────────────────────────────────────────────────
   15. Reduced motion — оставляем смысл, убираем движение
   ──────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}
