/* Атрибут hidden обязан прятать элемент. Штатное правило браузера
   [hidden]{display:none} проигрывает любому авторскому display у класса —
   именно поэтому «спрятанный» блок оформления заказа на /payment оставался
   виден вместе со способами оплаты, когда покупку блокировала заглушка
   «у вас уже активен Ultimate»: .vc-checkout-grid{display:grid} перебивал
   hidden. В проекте с этим уже боролись точечно в семи местах — правило ниже
   закрывает случай целиком. */
[hidden]{display:none !important}

/* VC Tools — visual bugfixes (load last) */

/* ── App table: no stacked bg layers ─── */
body.vc-site-page {
  background-color: var(--vc-base);
  background-image: none !important;
}

/* ── Hero stats: clean, no card frames (desktop only — plenty of width
   there for bare inline numbers; mobile.css gives the same markup a
   compact bordered-tile look instead, since 901px+ is this project's
   established mobile/desktop split) ── */
@media (min-width: 901px) {
  .vc-hero-stats .vc-stat {
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    min-width: 0;
  }
  .vc-hero-stats .vc-stat .n {
    font-family: var(--font-mono);
    font-size: 32px;
    font-weight: 700;
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
  }
  .vc-hero-stats .vc-stat .n.acc {
    color: var(--vc-cta-text);
  }
  .vc-hero-stats .vc-stat .l {
    margin-top: 4px;
    color: var(--vc-text-faint);
  }
}

/* ── Table: mono only on numeric cells ─── */
tbody td {
  font-family: var(--font-ui);
}
tbody td .price,
tbody td .pos,
tbody td .neg,
tbody td .upd-cell,
tbody td .factor-badge,
.skin-cell .skin-meta {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}

/* ── Settings theme buttons ─────────────── */
.theme-btn[data-t].active,
.theme-btn[data-motion].active {
  background: var(--vc-cta) !important;
  color: var(--vc-on-cta) !important;
  border-color: transparent !important;
}

/* ── Premium = always gold ──────────────── */
/* Этап 6.3. Раньше здесь стояло «Ultimate follows accent only»: тариф красился
   акцентными токенами, и смена акцента в настройках перекрашивала тариф —
   при зелёном акценте «голубой» Ultimate становился зелёным. Цвет тарифа это
   его семантика, а не оформление сайта, поэтому берём фиксированные токены
   --plan-* из site.css. !important сохранён: он тут не наш, ниже по каскаду
   лежат другие правила, и снимать его отдельной задачей — не в этом этапе. */
.vc-plan-card--premium .vc-plan-card-inner,
.vc-plan-card.featured .vc-plan-card-inner,
.vc-t-compact.featured {
  border-color: var(--plan-premium-border) !important;
}
.vc-plan-card--premium .vc-plan-name,
.vc-dd-plan.premium {
  color: var(--plan-premium) !important;
}

/* Диагональный градиент («замывка») убран с карточки тарифа 09.08.2026 — фон
   карточки сплошной, акцент рисуют ::before/::after в site.css. Заодно из
   селекторов ниже убраны .vc-tier-*: эти классы не выставляет ни один шаблон
   и ни один скрипт. */
.vc-plan-card--ultimate .vc-plan-card-inner {
  border-color: var(--plan-ultimate-border) !important;
}
.vc-plan-card--ultimate .vc-plan-name {
  color: var(--plan-ultimate) !important;
}
.vc-t-compact.blue {
  border-color: var(--plan-ultimate-border) !important;
}
/* Заливка, а не градиент: раньше здесь стоял
   linear-gradient(135deg, var(--plan-ultimate), var(--plan-ultimate)) —
   оба стопа одинаковые, то есть тот же сплошной цвет, записанный так, будто
   правку не довели до конца. */
.vc-plan-cta.ultimate {
  background: var(--plan-ultimate) !important;
  color: var(--plan-on-color) !important;
}

/* ── Slide rail uses accent only ────────── */
.vc-slide-rail button.active span {
  background: var(--vc-cta) !important;
  box-shadow: 0 0 10px var(--vc-cta-glow) !important;
}

/* ── Stat glow uses accent ──────────────── */
.vc-hero-stats .n.acc {
  text-shadow: none;
}
html[data-motion="dynamic"] .vc-hero-stats .n.acc {
  animation: vc-stat-glow-accent 3s ease-in-out infinite alternate;
}
@keyframes vc-stat-glow-accent {
  0% { text-shadow: none; }
  100% { text-shadow: 0 0 18px var(--vc-cta-glow); }
}

/* ── Lang switch active state ───────────── */
.vc-lang-opt.active {
  background: var(--vc-cta-bg) !important;
  box-shadow: inset 0 0 0 1px var(--vc-cta-glow) !important;
}

/* ── Landing header ─────────────────────── */
.vc-land-head {
  background: linear-gradient(180deg, rgba(18, 20, 26, 0.96), rgba(10, 11, 15, 0.92));
  border-bottom: 1px solid var(--vc-border);
  backdrop-filter: blur(16px);
}
body.light .vc-land-head {
  background: rgba(255, 255, 255, 0.92);
}

/* ── Profit/loss semantic colors ──────── */
.pos { color: var(--vc-profit) !important; }
.neg { color: var(--vc-loss) !important; }

/* ── Settings tabs ──────────────────────── */
.settings-body .stab.active {
  background: var(--vc-cta) !important;
  color: var(--vc-on-cta) !important;
}

/* ── Footer tag ─────────────────────────── */
.vc-footer-tag {
  color: var(--vc-cta-text) !important;
  opacity: 0.75;
}

/* Mobile .vc-hero-stats sizing/gap/tile-look now lives in mobile.css
   (kept together with the rest of the mobile hero rules instead of split
   across two files). */

/* ── Landing: platform colors always ── */
.vc-t-compact-plats img {
  filter: none;
  opacity: 1;
  transform: none;
  transition: transform 0.25s ease;
}

/* ── Hero table: RU text fits like EN ── */
html[lang="ru"] .lpv-tbl thead th {
  font-size: clamp(7px, 0.62vw, 8.5px);
  letter-spacing: 0.05em;
  padding-left: 8px;
  padding-right: 8px;
}
html[lang="ru"] .lpv-th-sub {
  font-size: 7px;
  letter-spacing: 0.03em;
}
html[lang="ru"] .lpv-badge {
  padding: 4px 7px;
  gap: 4px;
  font-size: 8px;
}
html[lang="ru"] .lpv-badge b {
  font-size: clamp(12px, 0.95vw, 14px);
}
html[lang="ru"] .lpv-badge span {
  font-size: 8px;
  line-height: 1.1;
}
html[lang="ru"] .lpv-col-badge { width: 16%; }
html[lang="ru"] .lpv-col-skin { width: 32%; }
html[lang="ru"] .lpv-upd {
  font-size: 10px;
}

/* Hero copy on slide 1 — align RU density with EN. Ceiling trimmed
   2026-07-18: at 62px this wrapped to 3 lines on common laptop widths
   (1280-1440px), pushing the rest of the hero (feature cards) past the
   fold. */
html[lang="ru"] .vc-slide-hero h1 {
  font-size: clamp(28px, 4.4vw, 44px);
  line-height: 1.08;
}
html[lang="ru"] .vc-slide-lead {
  font-size: clamp(14px, 1.75vw, 17px);
  line-height: 1.5;
}
html[lang="ru"] .vc-feat-card h3 {
  font-size: 13px;
}
html[lang="ru"] .vc-feat-card p {
  font-size: 11px;
  line-height: 1.4;
}
html[lang="ru"] .vc-hero-stats .vc-stat .l {
  font-size: 12px;
}

/* Password requirement checklist (registration + profile password change) */
.vc-pwrules{display:flex;flex-direction:column;gap:5px;margin:8px 0 0;padding:10px 12px;
  background:var(--card2,rgba(255,255,255,.03));border:1px solid var(--border);border-radius:10px}
.vc-pwrules[hidden]{display:none}
.vc-pwrule{display:flex;align-items:center;gap:8px;font-size:11.5px;line-height:1.3;color:var(--muted,#8a8aa0);transition:color .15s}
.vc-pwrule-ic{flex:0 0 auto;width:14px;text-align:center;font-weight:700;color:var(--muted,#8a8aa0);transition:color .15s}
.vc-pwrule.ok{color:var(--text2,#EDEFF5)}
.vc-pwrule.ok .vc-pwrule-ic{color:var(--green,var(--vc-profit))}

/* Profile modal — fixed-size sidebar nav (same pattern as the admin panel's
   .vc-adm/.vc-adm-nav/.vc-pane: a left icon+label rail plus a scrollable
   content pane), so switching category never resizes the window. */
/* Высота карточки одинакова для всех категорий (переключение вкладок не
   должно менять размер окна). Поднята с 520 до 600: вкладке «Колесо» нужно
   место под само колесо, подпись и кнопку — при 520 кнопка «Крутить»
   оказывалась за нижним срезом. */
.vc-profile-card{display:flex;flex-direction:column;width:min(560px,94vw)!important;
  height:min(600px,88vh);padding:0}
.vc-profile-head{flex:0 0 auto}
.vc-profile-main{flex:1;display:flex;min-height:0}
.vc-profile-nav{width:150px;flex:0 0 150px;background:linear-gradient(180deg,var(--bg,#0b0b0f),var(--card,#12121a));
  border-right:1px solid var(--card3,#1e1e2a);padding:12px 8px;display:flex;flex-direction:column;gap:4px}
.vc-profile-nav .vc-tab{font-size:12.5px;padding:9px 10px}
.vc-profile-card .vc-profile-body{flex:1;overflow-y:auto;padding:20px 22px;min-height:0}
/* Only one .vc-profile-section is ever visible at a time now (via .vc-pane),
   so the old "border between stacked sections" divider no longer makes sense
   — it would land on whichever section happens to be DOM-adjacent to a
   hidden one. Neutralize it; .vc-profile-subh below draws its own divider
   for the one place (Подписка: промокод → тариф) that still needs one. */
#vcProfileBody.vc-profile-body .vc-profile-section + .vc-profile-section{border-top:none;margin-top:0;padding-top:16px}
.vc-profile-subh{margin:22px 0 12px!important;padding-top:18px;border-top:1px solid var(--border)}

/* Verify-code page */
/* Пункт 29: надпись про почту выровнена по левому краю (по краю поля ниже) и
   с увеличенным межстрочным интервалом — адрес в ней переносится, и по центру
   рваные строки читались плохо. */
.vc-verify-lead{margin:-4px 0 18px;color:var(--muted,#8a8aa0);font-size:13px;
  text-align:left;line-height:1.6;overflow-wrap:anywhere}
/* Пункт 30: кнопка подтверждения опущена ниже, чтобы «Отправить код ещё раз»
   под полем и она не сливались в одну группу. */
.vc-authpage #resendBtn{margin-top:10px}
.vc-authpage #resendBtn + .vc-err + #submitBtn,
.vc-authpage #submitBtn{margin-top:22px}

/* Steam-link tab (profile) */
.vc-steam-lead{margin:-4px 0 14px;color:var(--muted,#8a8aa0);font-size:12px;line-height:1.4}
.vc-steam-links{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.vc-steam-link-row{display:flex;align-items:center;gap:10px;padding:9px 10px;
  background:var(--card2,rgba(255,255,255,.03));border:1px solid var(--border);border-radius:10px}
.vc-steam-link-row img{width:32px;height:32px;border-radius:8px;flex:0 0 auto;background:var(--card3,#1e1e2a);object-fit:cover}
.vc-steam-link-avatar-fallback{width:32px;height:32px;border-radius:8px;flex:0 0 auto;background:var(--card3,#1e1e2a);
  display:flex;align-items:center;justify-content:center;color:var(--muted,#8a8aa0)}
.vc-steam-link-avatar-fallback .vc-ic{width:16px;height:16px}
.vc-steam-link-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.vc-steam-link-name{font-size:12.5px;font-weight:600;color:var(--text2,#EDEFF5);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vc-steam-link-id{font-size:10.5px;color:var(--muted,#8a8aa0)}
.vc-steam-link-unlink{flex:0 0 auto;background:none;border:1px solid var(--border);border-radius:8px;
  width:28px;height:28px;display:flex;align-items:center;justify-content:center;
  color:var(--muted,#8a8aa0);cursor:pointer;transition:color .15s,border-color .15s}
.vc-steam-link-unlink:hover{color:var(--red,var(--vc-loss));border-color:var(--red,var(--vc-loss))}
.vc-steam-link-unlink .vc-ic{width:14px;height:14px;min-width:14px;min-height:14px}
.vc-steam-empty{font-size:12px;color:var(--muted,#8a8aa0);padding:4px 0 14px}

/* Steam consent modal — separate small card, not the fixed-size profile shell */
.vc-consent-card{display:flex;flex-direction:column;width:min(420px,92vw);
  max-height:86vh;padding:0;background:var(--card,#12121a);border:1px solid var(--card3,#1e1e2a);
  border-radius:16px;overflow:hidden}
.vc-consent-body{padding:18px 22px 22px;overflow-y:auto}
.vc-consent-list{margin:0 0 16px;padding:0 0 0 18px;display:flex;flex-direction:column;gap:8px}
.vc-consent-list li{font-size:12.5px;line-height:1.5;color:var(--text2,#EDEFF5)}
.vc-consent-check{display:flex;align-items:flex-start;gap:9px;margin-bottom:16px;cursor:pointer}
.vc-consent-check input{margin-top:2px;flex:0 0 auto;accent-color:var(--vc-accent,#ff6b00)}
.vc-consent-check span{font-size:12px;line-height:1.4;color:var(--muted,#8a8aa0)}
.vc-consent-check a{color:var(--vc-cta-text)}
#vcSteamConsentBtn:disabled{opacity:.45;cursor:not-allowed}

/* Proxy admin table */
.vc-proxy-table .col-ptype{width:78px}
.vc-proxy-table .col-paddr{width:auto}
.vc-proxy-table .col-paddr code{word-break:break-all;white-space:normal;line-height:1.4}
.vc-proxy-table .col-pping{width:70px}
.vc-proxy-table .col-pstatus{width:90px}
.vc-proxy-table .col-actions{width:70px}

/* Таблица скидочных промокодов: у общего .vc-svc-table колонки заточены
   под другой набор полей, из-за чего «выключен» ломался по одной букве в
   строку и наезжал на соседний столбец. Задаём ширины явно. */
#vcDiscounts td, .vc-pane[data-pane="promo"] table thead th{white-space:nowrap}
#vcDiscounts .col-code{width:auto;min-width:120px}
#vcDiscounts .col-plan{width:110px}
#vcDiscounts .col-term{width:130px}
#vcDiscounts .col-status{width:110px}
#vcDiscounts .col-date{width:170px}
#vcDiscounts .col-actions{width:190px}
#vcDiscounts .vc-act{display:flex;gap:6px;justify-content:flex-end;flex-wrap:nowrap}

/* Активные сессии (профиль → Безопасность) */
.vc-sessions-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.vc-session-row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 12px;border:1px solid var(--border,#242430);border-radius:9px;
  background:var(--card2,rgba(255,255,255,.03))}
.vc-session-row.is-current{border-color:var(--vc-cta-a35);background:var(--vc-cta-a06)}
.vc-session-device{font-size:13px;font-weight:600;color:var(--text2,#EDEFF5)}
.vc-session-tag{font-size:10.5px;font-weight:600;color:var(--vc-cta-text);
  background:var(--vc-cta-a14);border-radius:5px;padding:1px 6px;margin-left:4px}
.vc-session-meta{font-size:11.5px;color:var(--muted,#8a8aa0);margin-top:2px}
.vc-session-row .vc-btn-sm{flex:0 0 auto}

/* Inventory tab (main nav) */
.vc-inv-empty{display:flex;flex-direction:column;align-items:center;text-align:center;
  gap:10px;padding:60px 20px;color:var(--muted,#8a8aa0)}
.vc-inv-empty-ic{width:40px;height:40px;opacity:.5;margin-bottom:6px}
.vc-inv-empty p{margin:0;font-size:14px;color:var(--text2,#EDEFF5)}
.vc-inv-empty-sub{font-size:12.5px!important;color:var(--muted,#8a8aa0)!important;max-width:360px}
/* itemsHtml() тоже кладёт .vc-inv-empty-sub напрямую в #inventoryViewBody
   (не внутрь .vc-inv-empty) для "инвентарь пуст"/"ничего не найдено по
   фильтрам" — там text-align:center инлайном центрирует текст только
   внутри собственной ширины строки-абзаца, а не всей рабочей области;
   явный display:block+width:100% делает центрирование настоящим. */
#inventoryViewBody>.vc-inv-empty-sub{display:block;width:100%;max-width:none;box-sizing:border-box}
.vc-inv-empty .vc-btn{margin-top:8px;width:auto!important;padding:0 20px}

.vc-inv-accounts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.vc-inv-acc-pill{font-size:12px;padding:7px 14px;border-radius:999px;border:1px solid var(--border);
  background:var(--card2,rgba(255,255,255,.03));color:var(--muted,#8a8aa0);cursor:pointer;transition:all .15s}
.vc-inv-acc-pill.active{color:var(--text2,#EDEFF5);border-color:var(--vc-accent,#ff6b00);
  background:var(--vc-cta-a10)}

/* Панель настроек инвентаря (сайдбар) */
.vc-inv-sortbtns{display:flex;flex-direction:column;gap:6px}
.vc-inv-sortbtn{width:100%;text-align:left;padding:8px 12px;border-radius:9px;font-size:12px;
  font-weight:600;cursor:pointer;border:1px solid var(--border,#242430);
  background:var(--card2,rgba(255,255,255,.03));color:var(--muted,#8a8aa0);
  transition:color .18s ease,border-color .18s ease,background .18s ease}
.vc-inv-sortbtn:hover{color:var(--text2,#EDEFF5)}
.vc-inv-sortbtn.active{color:var(--text2,#EDEFF5);border-color:var(--vc-accent,#ff6b00);
  background:var(--vc-cta-a10)}
.vc-inv-check{display:flex;align-items:center;gap:9px;padding:6px 0;font-size:12.5px;
  color:var(--muted,#8a8aa0);cursor:pointer;transition:color .18s ease}
.vc-inv-check:hover{color:var(--text2,#EDEFF5)}
.vc-inv-check input{width:15px;height:15px;flex:0 0 auto;accent-color:var(--vc-accent,#ff6b00);cursor:pointer}
/* Счётчик предметов в шапке вкладки — в одну строку с заголовком.
   align-items:center, а не baseline: у .item-count первым идёт иконка без
   текста, её baseline — нижняя граница, из-за чего весь счётчик вставал
   выше заголовка. Центрирование по вертикали даёт ровную строку. */
.vc-inv-page-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;min-height:32px}
.vc-inv-page-head h2{margin-bottom:0!important;line-height:1.2}
.vc-inv-page-head .item-count{line-height:1.2}

/* Кнопка "Смотреть в Steam" в карточке предмета инвентаря — фирменный
   Steam-синий, чтобы выделяться среди нейтральных кнопок рядом (Алерт/
   закрыть), т.к. это единственный внешний переход в карточке. */
.vc-inv-steam-btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none!important;
  background:rgba(102,192,244,.12)!important;color:#66c0f4!important;border:1px solid rgba(102,192,244,.35)!important}
.vc-inv-steam-btn:hover{background:rgba(102,192,244,.2)!important;border-color:#66c0f4!important}
.vc-inv-steam-btn i{font-size:13px}

/* Чипы износа (Износ) в сайдбаре инвентаря: .q-chips — общий класс с
   главной таблицей, там это узкие пилюли слева направо с "хвостом"
   пустого места справа (там рядом полноширинный тулбар, не видно). В
   узком сайдбаре (300px) те же пилюли рядом с полноширинными
   .vc-inv-sortbtns/.vc-inv-seg выглядят обрезанными и вразнобой —
   растягиваем 5 чипов на всю ширину панели, как сегмент-контрол выше. */
#invQualityChips{width:100%;flex-wrap:nowrap}
#invQualityChips .q-chip{flex:1 1 0;min-width:0}
#invQualityChips .q-chip span{width:100%}

/* Модалка ввода начальной стоимости инвентаря (замена нативного prompt) */
.vc-inv-ask-card{background:var(--card,#141420);border:1px solid var(--border,#242430);
  border-radius:14px;padding:22px;width:min(400px,calc(100vw - 32px));
  box-shadow:0 24px 60px rgba(0,0,0,.5)}
.vc-inv-ask-card h3{margin:0 0 6px;font-size:16px;color:var(--text2,#EDEFF5)}
.vc-inv-ask-card p{margin:0 0 16px;font-size:12.5px;line-height:1.5;color:var(--muted,#8a8aa0)}
.vc-inv-ask-field{display:flex;align-items:center;gap:8px;border:1px solid var(--border,#242430);
  border-radius:9px;padding:0 12px;background:var(--bg,#0A0B0F);transition:border-color .18s ease}
.vc-inv-ask-field:focus-within{border-color:var(--vc-accent,#ff6b00)}
.vc-inv-ask-cur{font-size:14px;font-weight:700;color:var(--muted,#8a8aa0);flex:0 0 auto}
.vc-inv-ask-field input{flex:1;min-width:0;border:none!important;background:none!important;
  padding:11px 0!important;font-size:15px;font-weight:600;color:var(--text2,#EDEFF5);outline:none}
.vc-inv-ask-err{margin-top:8px;font-size:12px;color:var(--red,var(--vc-loss))}
.vc-inv-ask-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
.vc-inv-ask-actions .vc-btn{width:auto!important;padding:0 18px;height:36px}

/* Переключатель режима динамики (с момента сброса / с последнего
   обновления) в сводке инвентаря — тот же сегмент-контрол, что и профит,
   но компактнее (2 варианта на всю ширину карточки сводки). */
.vc-inv-mode-seg{display:flex;gap:0;border:1px solid var(--border,#242430);border-radius:8px;
  overflow:hidden;margin:8px 0 2px;align-self:flex-start}
.vc-inv-mode-seg button{flex:1;padding:5px 10px;font-size:11px;font-weight:600;cursor:pointer;
  border:none;background:var(--card2,rgba(255,255,255,.03));color:var(--muted,#8a8aa0);
  transition:color .18s ease,background .18s ease;white-space:nowrap}
.vc-inv-mode-seg button+button{border-left:1px solid var(--border,#242430)}
.vc-inv-mode-seg button:hover{color:var(--text2,#EDEFF5)}
.vc-inv-mode-seg button.active{background:var(--vc-cta-a14);color:var(--vc-cta-text)}

/* Переключатель формата профита ($ / % / оба) */
.vc-inv-seg{display:flex;gap:0;border:1px solid var(--border,#242430);border-radius:9px;overflow:hidden}
.vc-inv-seg button{flex:1;padding:7px 4px;font-size:11.5px;font-weight:700;cursor:pointer;border:none;
  background:var(--card2,rgba(255,255,255,.03));color:var(--muted,#8a8aa0);
  transition:color .18s ease,background .18s ease}
.vc-inv-seg button+button{border-left:1px solid var(--border,#242430)}
.vc-inv-seg button:hover{color:var(--text2,#EDEFF5)}
.vc-inv-seg button.active{background:var(--vc-cta-a14);color:var(--vc-cta-text)}

/* Подписи в сводке — чтобы не гадать, что за число */
.vc-inv-sum-label{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--muted,#8a8aa0);margin-bottom:3px}
.vc-inv-delta-since{font-size:11px;color:var(--muted,#8a8aa0);margin-top:3px}

/* Пустое состояние: призыв привязать Steam */
.vc-inv-empty-steps{list-style:none;margin:14px 0 4px;padding:0;text-align:left;
  display:flex;flex-direction:column;gap:9px;max-width:400px}
.vc-inv-empty-steps li{display:flex;align-items:flex-start;gap:10px;font-size:12.5px;
  color:var(--muted,#8a8aa0);line-height:1.45}
.vc-inv-empty-steps li b{color:var(--text2,#EDEFF5);font-weight:600}
.vc-inv-step-n{flex:0 0 auto;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;
  font-size:10.5px;font-weight:800;background:var(--vc-cta-a14);color:var(--vc-cta-text)}
.vc-inv-empty-note{font-size:11.5px;color:var(--muted,#8a8aa0);margin-top:10px;max-width:400px}

/* Кликабельное название скина в связках */
.vc-cx-name-btn{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;
  cursor:pointer;text-align:left;border-bottom:1px dashed transparent;transition:color .16s,border-color .16s}
.vc-cx-name-btn:hover{color:var(--vc-cta-text);border-bottom-color:currentColor}

.vc-inv-search{margin-bottom:14px}
.vc-inv-search input{width:100%;max-width:320px;height:36px;padding:0 14px;border-radius:10px;
  border:1px solid var(--border);background-color: var(--card2,rgba(255,255,255,.03));color:var(--text2,#EDEFF5);font-size:13px}

.vc-inv-summary{display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;
  padding:18px 20px;margin-bottom:18px;border-radius:14px;
  background:linear-gradient(135deg,var(--card,#12121a),var(--card2,#181822));border:1px solid var(--card3,#1e1e2a)}
.vc-inv-summary--err{color:var(--red,var(--vc-loss))}
.vc-inv-summary--err .vc-ic{width:22px;height:22px;flex:0 0 auto}
.vc-inv-summary--err a{color:var(--vc-cta-text);font-size:12px}
.vc-inv-summary--err p{margin:0 0 4px;font-size:13px;color:var(--text2,#EDEFF5)}
.vc-inv-summary-main{display:flex;flex-direction:column;gap:4px}
.vc-inv-total{font-size:26px;font-weight:700;color:var(--text2,#EDEFF5);font-variant-numeric:tabular-nums}
.vc-inv-delta{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.vc-inv-delta--up{color:var(--green,var(--vc-profit))}
.vc-inv-delta--down{color:var(--red,var(--vc-loss))}
.vc-inv-delta--zero{color:var(--muted,#8a8aa0);font-weight:400}
.vc-inv-summary-meta{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--muted,#8a8aa0);margin-left:auto}
.vc-inv-summary-actions{display:flex;gap:8px}
.vc-inv-summary-actions .vc-btn{width:auto!important;height:36px;padding:0 16px;white-space:nowrap}
.vc-inv-nodata{color:var(--muted,#8a8aa0);font-size:12px}

/* Сетка предметов — как в самом Steam-инвентаре (2026-07-20 редизайн):
   квадратная иконка + название под ней, статус-бейджи поверх иконки. */
.vc-inv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:10px}
.vc-inv-tile{--rarity:#3a3a4a;position:relative;display:flex;flex-direction:column;
  background:var(--card2,#12121a);border:1px solid var(--border,#242430);border-radius:12px;
  padding:0;margin:0;cursor:pointer;text-align:left;overflow:hidden;font:inherit;color:inherit;
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.vc-inv-tile:hover{transform:translateY(-3px);border-color:var(--rarity);
  box-shadow:0 10px 24px -10px rgba(0,0,0,.55)}
.vc-inv-tile:focus-visible{outline:2px solid var(--vc-accent,#ff6b00);outline-offset:2px}
.vc-inv-tile-img{position:relative;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;
  padding:10px;background:radial-gradient(120% 120% at 50% 15%,color-mix(in srgb,var(--rarity) 18%,transparent) 0%,transparent 70%),
  var(--card,#0e0e15)}
.vc-inv-tile-img img{max-width:100%;max-height:100%;object-fit:contain;
  filter:drop-shadow(0 6px 10px rgba(0,0,0,.4))}
.vc-inv-tile-rarity-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--rarity);opacity:.85}
/* Ровно две строки с многоточием. Клэмп висит на ВНУТРЕННЕМ span, а не на
   самом .vc-inv-tile-name: тот — прямой ребёнок flex-контейнера .vc-inv-tile,
   а Chrome «блокифицирует» display:-webkit-box у flex-детей (computed style
   становится flow-root), из-за чего -webkit-line-clamp молча перестаёт
   работать — текст просто обрезался посреди третьей строки. Внутри
   обычного блока клэмп отрабатывает штатно. */
.vc-inv-tile-name{padding:8px 9px 10px;font-size:11.5px;line-height:1.32;font-weight:600;
  color:var(--text2,#EDEFF5)}
.vc-inv-tile-name > span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;min-height:calc(2 * 1.32em)}
.vc-inv-tile-lock{position:absolute;top:6px;right:6px;z-index:1;display:flex;align-items:center;gap:3px;
  background:rgba(24,8,11,.88);border:1px solid rgba(255,77,109,.55);color:#ff90a4;
  border-radius:999px;padding:3px 7px 3px 5px;font-size:9.5px;font-weight:800;letter-spacing:.02em;
  font-variant-numeric:tabular-nums}
.vc-inv-tile-lock svg{width:10px;height:10px;flex:0 0 auto}
.vc-inv-tile-delta{position:absolute;left:6px;bottom:9px;z-index:1;display:flex;align-items:center;gap:3px;
  border-radius:999px;padding:3px 7px;font-size:9.5px;font-weight:800;font-variant-numeric:tabular-nums;
  background:rgba(8,9,14,.78);backdrop-filter:blur(1px)}
.vc-inv-tile-delta.up{color:var(--green,var(--vc-profit))}
.vc-inv-tile-delta.down{color:var(--red,var(--vc-loss))}

/* Плитка предмета, которого нет в каталоге цен (стикеры, медали, наборы
   музыки) — показываем, но приглушённо: обесцвеченная иконка, чтобы было
   сразу видно «это пока не поддерживается», без отдельной подписи. */
.vc-inv-tile.is-unsupported{--rarity:#3a3a4a;opacity:.5}
.vc-inv-tile.is-unsupported .vc-inv-tile-img img{filter:grayscale(1) brightness(.85)}
.vc-inv-tile.is-unsupported:hover{opacity:.72;transform:translateY(-2px)}
.vc-inv-tile-soon{position:absolute;left:6px;bottom:9px;z-index:1;border-radius:999px;
  padding:3px 7px;font-size:9px;font-weight:800;letter-spacing:.02em;
  background:rgba(8,9,14,.8);color:var(--muted,#8a8aa0)}
.vc-inv-group-label{grid-column:1/-1;display:flex;align-items:center;gap:10px;
  margin:18px 0 2px;font-size:11px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted,#8a8aa0)}
.vc-inv-group-label::after{content:'';flex:1;height:1px;background:var(--border,#242430)}

/* ══ Карточка предмета — выезжающая панель справа ══
   Раньше была модалка на весь экран: перекрывала сетку целиком и рвала
   контекст. Панель шириной ~520px оставляет инвентарь видимым слева. */
.vc-inv-drawer-root{position:fixed;inset:0;z-index:9600;pointer-events:none}
.vc-inv-drawer-root.show{pointer-events:auto}
.vc-inv-drawer-scrim{position:absolute;inset:0;background:rgba(0,0,0,.5);
  opacity:0;transition:opacity .32s cubic-bezier(.4,0,.2,1)}
.vc-inv-drawer-root.show .vc-inv-drawer-scrim{opacity:1}
.vc-inv-drawer{position:absolute;top:0;right:0;bottom:0;width:min(520px,100vw);
  display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;
  background:var(--card2,#12121a);border-left:1px solid var(--card3,#1e1e2a);
  box-shadow:-24px 0 60px -20px rgba(0,0,0,.6);
  transform:translateX(100%);
  transition:transform .34s cubic-bezier(.32,.72,0,1)}
.vc-inv-drawer-root.show .vc-inv-drawer{transform:translateX(0)}
.vc-inv-drawer::-webkit-scrollbar{width:8px}
.vc-inv-drawer::-webkit-scrollbar-thumb{background:var(--card3,#1e1e2a);border-radius:8px}
.vc-inv-modal-panel{border-top:none!important;background:transparent!important}
.vc-inv-drawer .detail-panel{padding:20px 22px 28px}
/* Заголовок панели липнет к верху при прокрутке — кнопка закрытия всегда под рукой */
.vc-inv-drawer .detail-top{position:sticky;top:-20px;z-index:2;margin:-20px -22px 14px;
  padding:18px 22px 12px;background:var(--card2,#12121a);
  border-bottom:1px solid var(--border,#242430)}
@media (prefers-reduced-motion:reduce){
  .vc-inv-drawer,.vc-inv-drawer-scrim{transition:none}
}

/* ── Checkout /payment ─────────────────────────────────────────── */
.vc-checkout-page{
  min-height:100vh;
  background:
    radial-gradient(900px 420px at 12% -10%, var(--vc-cta-a10), transparent 55%),
    radial-gradient(700px 360px at 88% 0%, rgba(110,139,255,.08), transparent 50%),
    var(--vc-base,#0A0B0F);
}
.vc-checkout{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:28px 18px 64px}
.vc-checkout-shell{width:min(860px,100%)}
.vc-checkout-shell--narrow{width:min(440px,100%)}
.vc-checkout-head{margin:8px 0 22px}
.vc-checkout-head h1{
  margin:0;font-family:var(--font-display,'Satoshi',system-ui,sans-serif);
  font-size:clamp(28px,4vw,36px);font-weight:700;letter-spacing:-.02em;color:var(--text2)
}
.vc-checkout-lead{margin:8px 0 0;color:var(--muted);font-size:14.5px;line-height:1.55;max-width:52ch}
.vc-checkout-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:16px;align-items:start}
@media (max-width:760px){.vc-checkout-grid{grid-template-columns:1fr}}
.vc-checkout-card{
  background:var(--card);border:1px solid var(--border);border-radius:18px;
  padding:22px 22px 20px;box-shadow:var(--vc-shadow-md,0 8px 24px rgba(0,0,0,.42));
}
.vc-checkout-card-h{margin:0 0 14px;font-size:13px;font-weight:600;letter-spacing:.04em;
  text-transform:uppercase;color:var(--muted)}
.vc-checkout-plan{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}
.vc-checkout-plan-name{font-size:22px;font-weight:700;color:var(--text2);letter-spacing:-.02em}
.vc-checkout-plan-meta{margin-top:4px;font-size:13px;color:var(--muted)}
.vc-checkout-plan-badge{
  flex-shrink:0;padding:5px 10px;border-radius:999px;font-size:11px;font-weight:700;
  letter-spacing:.04em;text-transform:uppercase;color:var(--vc-cta-text);
  background:var(--vc-cta-bg,rgba(255,107,0,.1));border:1px solid var(--vc-cta-a25)
}
.vc-checkout-price{padding:14px 0 18px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:16px}
.vc-checkout-price-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.vc-checkout-price-rub{font-size:34px;font-weight:800;letter-spacing:-.04em;color:var(--text2);line-height:1}
.vc-checkout-price-old{font-size:15px;color:var(--muted);text-decoration:line-through;opacity:.6}
.vc-checkout-price-usd{margin-top:6px;font-size:13px;color:var(--muted)}
.vc-checkout-label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}
.vc-checkout-promo-row{display:flex;gap:8px}
.vc-checkout-input{
  flex:1;min-width:0;padding:11px 12px;border-radius:10px;border:1px solid var(--border);
  background-color: var(--vc-base,#0A0B0F);color:var(--text2);font-size:14px;text-transform:uppercase;
  letter-spacing:.04em;outline:none;transition:border-color .18s ease
}
.vc-checkout-input:focus{border-color:var(--vc-cta-a45)}
.vc-checkout-hint{margin:8px 0 0;font-size:12.5px;min-height:16px;color:var(--muted)}
.vc-checkout-hint.is-ok{color:var(--vc-profit,var(--vc-profit))}
.vc-checkout-hint.is-err{color:var(--vc-loss,var(--vc-loss))}

.vc-pay-options{display:flex;flex-direction:column;gap:8px}
.vc-pay-option{
  display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
  padding:12px 14px;border-radius:12px;border:1px solid var(--border);
  background:rgba(255,255,255,.02);color:var(--text2);
  transition:border-color .18s ease, background .18s ease, transform .18s ease;
}
.vc-pay-option:hover{border-color:var(--border2);background:rgba(255,255,255,.035)}
.vc-pay-option.active{
  border-color:var(--vc-cta-a55);background:var(--vc-cta-a06);
  box-shadow:inset 0 0 0 1px var(--vc-cta-a14)
}
.vc-pay-option-ic{
  width:40px;height:40px;border-radius:10px;display:grid;place-items:center;flex-shrink:0;
  background:rgba(255,255,255,.04);color:var(--muted);border:1px solid var(--border)
}
.vc-pay-option.active .vc-pay-option-ic{color:var(--vc-cta-text);border-color:var(--vc-cta-a28);background:var(--vc-cta-a10)}
.vc-pay-option-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.vc-pay-option-txt strong{font-size:14px;font-weight:650;color:var(--text2)}
.vc-pay-option-txt small{font-size:12px;color:var(--muted)}
.vc-pay-option-check{
  width:18px;height:18px;border-radius:50%;border:1.5px solid var(--border2);flex-shrink:0;
  position:relative
}
.vc-pay-option.active .vc-pay-option-check{
  border-color:var(--vc-cta,#ff6b00);background:var(--vc-cta,#ff6b00);
  box-shadow:0 0 0 3px var(--vc-cta-a18)
}
.vc-pay-option.active .vc-pay-option-check::after{
  content:"";position:absolute;inset:4px;border-radius:50%;background:#fff
}

.vc-checkout-actions{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.vc-checkout-cta{width:100%;padding:13px 16px;font-size:15px}
.vc-checkout-secondary{width:100%;justify-content:center}
.vc-checkout-status{margin:12px 0 0;font-size:13.5px;color:var(--muted);min-height:18px}
.vc-checkout-status.is-ok{color:var(--vc-profit,var(--vc-profit))}
.vc-checkout-status.is-err{color:var(--vc-loss,var(--vc-loss))}
.vc-checkout-legal{margin:16px 0 0;font-size:12px;line-height:1.5;color:var(--muted)}
.vc-checkout-legal a{color:var(--text);text-decoration:underline;text-underline-offset:2px}
.vc-checkout-gate{display:flex;flex-direction:column;gap:10px;align-items:stretch}
.vc-checkout-gate p{margin:0 0 4px;color:var(--muted);font-size:14px;line-height:1.5}
.vc-checkout-fallback:empty{display:none}

.vc-pay-result{text-align:center;padding:36px 28px 28px}
.vc-pay-result-ic{margin:0 auto 14px;width:56px;height:56px;display:grid;place-items:center;
  color:var(--muted)}
.vc-pay-result.is-ok .vc-pay-result-ic{color:var(--vc-profit,var(--vc-profit))}
.vc-pay-result.is-fail .vc-pay-result-ic{color:var(--vc-loss,var(--vc-loss))}
.vc-pay-result.is-pending .vc-pay-result-ic{color:var(--vc-cta-text)}
.vc-pay-result h1{margin:0;font-size:24px;color:var(--text2)}
.vc-pay-result .vc-checkout-actions{margin-top:22px}
.vc-pay-spin{animation:vc-pay-spin 1s linear infinite}
@keyframes vc-pay-spin{to{transform:rotate(360deg)}}

/* legacy alias — на случай старых кэшей */
.vc-pay-methods{display:none}

/* Auth: повторная отправка кода — только рыжий текст, без кнопки */
.vc-link-btn,
.vc-resend-link{
  display:inline;
  border:0;
  background:none;
  padding:0;
  margin:10px 0 0;
  font:inherit;
  font-size:13px;
  line-height:1.4;
  color:var(--vc-cta-text);
  cursor:pointer;
  text-decoration:none;
  box-shadow:none;
  -webkit-appearance:none;
  appearance:none;
}
.vc-link-btn:hover:not(:disabled),
.vc-resend-link:hover:not(:disabled){
  color:var(--vc-cta-hover,#ff8533);
  text-decoration:underline;
}
.vc-link-btn:disabled,
.vc-resend-link:disabled{
  opacity:.55;
  cursor:default;
}

/* ── Контур акцентной заливки для монохромных акцентов ───────────────────
   Белая кнопка на светлом фоне и чёрная на тёмном сливаются с подложкой,
   поэтому палитра задаёт им --vc-cta-border. У цветных акцентов эта
   переменная равна transparent, и правило ничего не меняет.
   Контур рисуем outline'ом со сдвигом внутрь: он не влияет на размеры
   элемента (в отличие от border) и не затирает существующие box-shadow. */
.vc-btn.primary,
.btn.primary,
.vc-plan-cta.primary,
.vc-plan-cta.ultimate,
.btn-main,
.theme-btn.active,
.vc-seg-btn.active,
.stab.active,
.add-tab.active,
.period-btn.active,
.vc-period-btn.active,
.vc-dd-opt.active,
.vc-chip-btn.active,
.btn-filter-toggle.active,
.vc-lang-opt.active,
.rate-editor .rate-save,
.vc-nick-ok,
.vc-inv-seg button.active,
.vc-inv-mode-seg button.active,
.vc-slide-rail button.active span,
.vc-wheel-spin-btn,
.vc-swatch.active {
  outline: 1px solid var(--vc-cta-border, transparent);
  outline-offset: -1px;
}

/* Фокус с клавиатуры важнее декоративного контура — возвращаем ему приоритет. */
.vc-btn.primary:focus-visible,
.btn.primary:focus-visible,
.vc-plan-cta.primary:focus-visible,
.btn-main:focus-visible,
.theme-btn.active:focus-visible,
.vc-seg-btn.active:focus-visible,
.stab.active:focus-visible,
.vc-swatch.active:focus-visible {
  outline: 2px solid var(--vc-cta-ring);
  outline-offset: 2px;
}

/* Плавающая кнопка поддержки: на десктопе перекрывала колонку «Действия».
   Шапочная «Поддержка» убрана — вход через профиль / вкладку Поддержка;
   FAB оставляем на узких экранах. */
@media (min-width: 900px) {
  .vc-support-fab { display: none; }
}

/* Telegram в профиле — дубль в vc-fixes, чтобы стили точно доехали после кэша */
.vc-tg-linked{margin:4px 0 14px}
.vc-tg-row{display:flex;align-items:flex-start;gap:10px}
.vc-tg-ic{flex:0 0 auto;width:16px;height:16px;margin-top:2px;color:var(--vc-info,#26a5e4)}
.vc-tg-meta{min-width:0;flex:1}
.vc-tg-status{
  display:block!important;
  font-size:13px!important;
  font-weight:600!important;
  line-height:1.35!important;
  letter-spacing:0!important;
  text-transform:none!important;
  color:var(--text2,#e8eaf2)!important;
}
.vc-tg-bonus{margin:4px 0 0;font-size:11px!important;line-height:1.4;color:var(--muted,#8a8aa0)}
.vc-tg-unlink-hint{margin:6px 0 0;font-size:11px!important;line-height:1.45;color:var(--muted,#8a8aa0)}
.vc-tg-support-link{color:var(--vc-info,#26a5e4);text-decoration:underline;text-underline-offset:2px}
.vc-tg-link-hint{font-size:11px;color:var(--muted,#8a8aa0);margin:8px 0 0;line-height:1.45}

/* ── Цвета уровня рекомендации ──────────────────────────────────────────
   Сервер присылает уровень (great/good/fair/risk/bad/none), цвет выбирает
   тема: единый hex с сервера на светлом фоне давал контраст около 2:1
   при норме 4.5. Значения ниже проверены на обоих фонах. */
.factor-badge.lvl-great { color: #3DDC84; border-color: rgba(61, 220, 132, 0.28); background: rgba(61, 220, 132, 0.1); }
.lpv-badge.lvl-great { color: #3DDC84; border-color: rgba(61, 220, 132, 0.28); background: rgba(61, 220, 132, 0.1); }
.factor-badge.lvl-good { color: #5FD98A; border-color: rgba(95, 217, 138, 0.28); background: rgba(95, 217, 138, 0.1); }
.lpv-badge.lvl-good { color: #5FD98A; border-color: rgba(95, 217, 138, 0.28); background: rgba(95, 217, 138, 0.1); }
.factor-badge.lvl-fair { color: #F5B942; border-color: rgba(245, 185, 66, 0.28); background: rgba(245, 185, 66, 0.1); }
.lpv-badge.lvl-fair { color: #F5B942; border-color: rgba(245, 185, 66, 0.28); background: rgba(245, 185, 66, 0.1); }
.factor-badge.lvl-risk { color: #F58A3C; border-color: rgba(245, 138, 60, 0.28); background: rgba(245, 138, 60, 0.1); }
.lpv-badge.lvl-risk { color: #F58A3C; border-color: rgba(245, 138, 60, 0.28); background: rgba(245, 138, 60, 0.1); }
.factor-badge.lvl-bad { color: #FF6B7F; border-color: rgba(255, 107, 127, 0.28); background: rgba(255, 107, 127, 0.1); }
.lpv-badge.lvl-bad { color: #FF6B7F; border-color: rgba(255, 107, 127, 0.28); background: rgba(255, 107, 127, 0.1); }
.factor-badge.lvl-none { color: #8A92A8; border-color: rgba(138, 146, 168, 0.28); background: rgba(138, 146, 168, 0.1); }
.lpv-badge.lvl-none { color: #8A92A8; border-color: rgba(138, 146, 168, 0.28); background: rgba(138, 146, 168, 0.1); }
body.light .factor-badge.lvl-great { color: #0C6B40; border-color: rgba(12, 107, 64, 0.3); background: rgba(12, 107, 64, 0.08); }
body.light .lpv-badge.lvl-great { color: #0C6B40; border-color: rgba(12, 107, 64, 0.3); background: rgba(12, 107, 64, 0.08); }
body.light .factor-badge.lvl-good { color: #136B3F; border-color: rgba(19, 107, 63, 0.3); background: rgba(19, 107, 63, 0.08); }
body.light .lpv-badge.lvl-good { color: #136B3F; border-color: rgba(19, 107, 63, 0.3); background: rgba(19, 107, 63, 0.08); }
body.light .factor-badge.lvl-fair { color: #8A5A00; border-color: rgba(138, 90, 0, 0.3); background: rgba(138, 90, 0, 0.08); }
body.light .lpv-badge.lvl-fair { color: #8A5A00; border-color: rgba(138, 90, 0, 0.3); background: rgba(138, 90, 0, 0.08); }
body.light .factor-badge.lvl-risk { color: #A34B00; border-color: rgba(163, 75, 0, 0.3); background: rgba(163, 75, 0, 0.08); }
body.light .lpv-badge.lvl-risk { color: #A34B00; border-color: rgba(163, 75, 0, 0.3); background: rgba(163, 75, 0, 0.08); }
body.light .factor-badge.lvl-bad { color: #B3123A; border-color: rgba(179, 18, 58, 0.3); background: rgba(179, 18, 58, 0.08); }
body.light .lpv-badge.lvl-bad { color: #B3123A; border-color: rgba(179, 18, 58, 0.3); background: rgba(179, 18, 58, 0.08); }
body.light .factor-badge.lvl-none { color: #5D6572; border-color: rgba(93, 101, 114, 0.3); background: rgba(93, 101, 114, 0.08); }
body.light .lpv-badge.lvl-none { color: #5D6572; border-color: rgba(93, 101, 114, 0.3); background: rgba(93, 101, 114, 0.08); }

/* ── Главные кнопки в светлой теме ───────────────────────────────────────
   `body.light .vc-btn{background:var(--card)}` из site.css — это (0,2,1),
   а `.vc-btn.primary` — всего (0,2,0), поэтому в светлой теме акцентная
   заливка главных кнопок молча проигрывала белому фону карточки. При
   оранжевом акценте текст оставался тёмным и это было незаметно, а при
   чёрном получалось белым по белому. Возвращаем заливку правилом той же
   формы, но с классом .primary — (0,3,1). */
body.light .vc-btn.primary,
body.light .btn.primary,
body.light .vc-plan-cta.primary {
  background: linear-gradient(180deg, var(--vc-cta-hover), var(--vc-cta));
  border-color: var(--vc-cta);
  color: var(--vc-on-cta);
}

body.light .vc-btn.primary:hover,
body.light .btn.primary:hover,
body.light .vc-plan-cta.primary:hover {
  background: var(--vc-cta-hover);
  border-color: var(--vc-cta-hover);
}

/* Логи админки: серые служебные пометки были зашиты синим #3498db и на
   светлом фоне давали 2.9:1. */
.vc-logs .lg-PARSER .lg-gr { color: var(--vc-info); }
.vc-logs .lg-ADMIN .lg-gr { color: var(--vc-gold); }
.vc-logs .lg-PAYMENT .lg-gr { color: var(--vc-cta-text); }
body.light .vc-logs .l-CSM,
body.light .vc-logs .l-CF { color: var(--vc-info); }

/* ═══════════ Инвентарь: топ площадок для продажи ═══════════
   Блок под графиком в карточке предмета. Цвета — только через токены
   акцента: --vc-cta-text для акцента как ЦВЕТА ТЕКСТА (у монохромных
   акцентов он отличается от заливки --vc-cta, иначе чёрное по тёмному). */
.vc-sell-top{margin-top:14px;background-color: var(--card);border:1px solid var(--border);
  border-radius:10px;padding:12px 14px 10px}
.vc-sell-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.vc-sell-title{display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:700;
  letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}
.vc-sell-title .icon{width:12px;height:12px;min-width:12px;color:var(--vc-cta-text);opacity:.9}
.vc-sell-refresh{display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;padding:0;border-radius:8px;cursor:pointer;
  background-color: var(--vc-cta-a10);border:1px solid var(--vc-cta-a25);color:var(--vc-cta-text);
  transition:background .18s,border-color .18s,transform .18s}
.vc-sell-refresh .icon{width:13px;height:13px;min-width:13px}
.vc-sell-refresh:hover:not(:disabled){background-color: var(--vc-cta-a22);border-color:var(--vc-cta-a45)}
.vc-sell-refresh:active:not(:disabled){transform:scale(.94)}
.vc-sell-refresh:disabled{opacity:.5;cursor:default}
.vc-sell-top.is-busy .vc-sell-refresh .icon{animation:vc-sell-spin .9s linear infinite}
@keyframes vc-sell-spin{to{transform:rotate(360deg)}}

.vc-sell-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.vc-sell-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;
  background-color: var(--card2);border:1px solid transparent}
.vc-sell-item.is-best{background-color: var(--vc-cta-a06);border-color:var(--vc-cta-a25)}
.vc-sell-rank{flex:0 0 20px;width:20px;height:20px;border-radius:6px;display:flex;
  align-items:center;justify-content:center;font-size:11px;font-weight:700;
  background-color: var(--border);color:var(--muted);font-variant-numeric:tabular-nums}
.vc-sell-item.is-best .vc-sell-rank{background-color: var(--vc-cta);color:var(--vc-on-cta)}
.vc-sell-main{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 7px}
.vc-sell-plat{font-size:13px;font-weight:600;color:var(--text2);text-decoration:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
a.vc-sell-plat:hover{color:var(--vc-cta-text);text-decoration:underline}
.vc-sell-badge{flex:0 0 auto;font-size:9.5px;font-weight:700;letter-spacing:.3px;
  text-transform:uppercase;padding:2px 6px;border-radius:5px;
  background-color: var(--vc-cta-a14);color:var(--vc-cta-text)}
.vc-sell-sub{flex:1 0 100%;font-size:11px;color:var(--muted);line-height:1.3}
.vc-sell-net{flex:0 0 auto;text-align:right;font-size:15px;font-weight:700;
  color:var(--vc-profit);font-variant-numeric:tabular-nums;line-height:1.25}
.vc-sell-delta{display:block;font-size:10.5px;font-weight:600;color:var(--muted)}
.vc-sell-note{margin:0;padding:8px 2px;font-size:12px;color:var(--muted)}
.vc-sell-note--err{color:var(--vc-loss)}
.vc-sell-foot{margin:8px 0 0;font-size:11px;color:var(--vc-text-faint)}

@media (max-width:560px){
  .vc-sell-top{padding:11px 11px 9px}
  .vc-sell-item{gap:8px;padding:7px 8px}
  .vc-sell-plat{font-size:12.5px}
  .vc-sell-net{font-size:14px}
}

/* Справочная строка в топе продажи: площадка выигрывает по номиналу, но
   платит невыводимым балансом. Показываем её вне рейтинга — приглушённо,
   с отделяющей чертой, чтобы не путалась с реальными вариантами. */
.vc-sell-item.is-ref{opacity:.72;border-top:1px dashed var(--line,var(--border));
  border-radius:0 0 8px 8px;margin-top:2px;padding-top:10px}
.vc-sell-item.is-ref .vc-sell-rank{background:transparent;color:var(--vc-text-faint);
  border:1px dashed var(--border)}
.vc-sell-item.is-ref .vc-sell-net{color:var(--muted)}
.vc-sell-badge--bal{background-color: var(--vc-tint-3,var(--sunken));color:var(--vc-text-faint);
  border:1px solid var(--border)}
body.light .vc-sell-badge--bal{color:var(--ink-3,var(--muted))}

/* ═══════════ Стиль исполнения на ноге сделки ═══════════
   Два положения под каждым выбором площадки: «сразу» по чужой цене или
   «подождём» по своей. Недоступное положение гасим, но не прячем —
   иначе непонятно, куда делся вариант. */
.vc-style-seg{display:flex;gap:2px;margin:6px 0 2px;padding:2px;border-radius:8px;
  background:var(--sunken,var(--card2));border:1px solid var(--border)}
.vc-style-opt{flex:1 1 0;min-width:0;padding:6px 4px;border:0;border-radius:6px;cursor:pointer;
  background:transparent;color:var(--muted);font-size:11.5px;font-weight:600;line-height:1.25;
  font-family:inherit;letter-spacing:.01em;transition:background .16s,color .16s;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vc-style-opt:hover:not(:disabled):not(.active){color:var(--text2);background:var(--vc-cta-a06)}
.vc-style-opt.active{background:var(--vc-cta);color:var(--vc-on-cta);
  box-shadow:0 1px 2px rgba(0,0,0,.18)}
.vc-style-opt:disabled{opacity:.38;cursor:not-allowed}
.vc-style-opt:focus-visible{outline:2px solid var(--vc-cta-text);outline-offset:1px}

@media (max-width:900px){
  .vc-style-opt{font-size:11px;padding:7px 3px}
}

/* Выбор площадки в тулбаре графика карточки инвентаря. Компактный,
   чтобы не разъезжался с кнопками периода на узких экранах. */
.vc-inv-plat-sel{width:auto;min-width:104px;max-width:150px;padding:5px 24px 5px 9px;
  font-size:12px;border-radius:7px;flex:0 0 auto}
@media (max-width:560px){
  .vc-inv-plat-sel{min-width:0;flex:1 1 100%;max-width:none;margin-top:4px}
}

/* ═══════════ Статистика периода под графиком ═══════════
   Отвечает на вопрос «текущая цена дорогая или дешёвая» — ради него
   график и открывают. Полоска показывает положение текущей цены между
   минимумом и максимумом периода. */
.vc-hstats{display:flex;flex-wrap:wrap;align-items:stretch;gap:1px;margin-top:10px;
  background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden}
.vc-hstat{flex:1 1 0;min-width:72px;background:var(--card);padding:7px 10px;
  display:flex;flex-direction:column;gap:1px}
.vc-hstat-l{font-family:var(--mono,ui-monospace,monospace);font-size:9.5px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap}
.vc-hstat-v{font-size:13.5px;font-weight:700;color:var(--text2);font-variant-numeric:tabular-nums}
.vc-hstat.is-min .vc-hstat-v{color:var(--vc-profit)}
.vc-hstat.is-max .vc-hstat-v{color:var(--vc-loss)}
.vc-hstat-pts .vc-hstat-v{color:var(--muted);font-weight:600}
.vc-hstat-bar{flex:1 0 100%;position:relative;height:5px;background:var(--card2);
  border-top:1px solid var(--border)}
.vc-hstat-fill{position:absolute;top:50%;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;
  border-radius:50%;background:var(--vc-cta);border:2px solid var(--card);
  box-shadow:0 0 0 1px var(--vc-cta-a45)}
@media (max-width:560px){
  .vc-hstat{min-width:0;flex:1 1 33%;padding:6px 8px}
  .vc-hstat-pts{display:none}
}

/* ═══════════ Этап 7: пошаговые связки ═══════════ */
.vc-cx-steps{margin:10px 0 0;padding:10px 12px;background:var(--card2);border:1px solid var(--border);border-radius:8px}
.vc-cx-steps-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px}
.vc-cx-step-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.vc-cx-step label{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:13px;line-height:1.35}
.vc-cx-step input{margin:0}
.vc-cx-step.is-done label{color:var(--muted)}
.vc-cx-step-kind{font-weight:600}
.vc-cx-step-plat{color:var(--vc-cta-text)}
.vc-cx-step-item{flex:1 1 auto;min-width:0}
.vc-cx-step-amt{font-variant-numeric:tabular-nums;font-weight:600}
.vc-cx-step-hold{font-size:11px;color:var(--muted)}
.vc-cx-step-link{font-size:11px}
.vc-cx-portfolio{margin:8px 0;font-size:12px;color:var(--muted);line-height:1.45}
.vc-cx-portfolio .good{color:var(--vc-profit)}
.vc-cx-portfolio .bad{color:var(--vc-loss)}

/* ═══════════ Этап 7: сводка sell-plan в инвентаре ═══════════ */
.vc-inv-sellplan{margin:0 0 16px;padding:14px 16px;background:var(--card);border:1px solid var(--border);border-radius:10px}
.vc-inv-sellplan-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:10px}
.vc-inv-sellplan-head h3{margin:0;font-size:15px;color:var(--text2)}
.vc-inv-sellplan-meta{font-size:12px;color:var(--muted)}
.vc-inv-sellplan-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.vc-inv-sellplan-list li{font-size:13px;line-height:1.4}
.vc-inv-sellplan-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vc-inv-mark-sold{flex:0 0 auto;white-space:nowrap}
.vc-inv-sellplan-up{color:var(--vc-profit);font-weight:600;margin-left:4px}
.vc-inv-sellplan-hold,.vc-inv-sellplan-missed,.vc-inv-sellplan-empty,.vc-inv-sellplan-note{margin-top:10px;font-size:12px;color:var(--muted);line-height:1.45}
.vc-inv-sellplan-missed{color:var(--vc-profit);font-weight:600}
.vc-inv-sellhist{margin:0 0 16px;padding:14px 16px;background:var(--card);border:1px solid var(--border);border-radius:10px}
.vc-inv-sellhist-table{overflow:auto;max-height:min(36vh,280px)}
.vc-inv-sellhist-table table{width:100%;border-collapse:collapse;font-size:12.5px}
.vc-inv-sellhist-table th,.vc-inv-sellhist-table td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}
.vc-inv-sellhist-table th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.vc-inv-sellhist-table td{color:var(--text2)}

/* API keys in profile */
.vc-apikey-create{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.vc-apikey-create .vc-inp{flex:1 1 160px;min-width:0}
.vc-apikey-once{margin:8px 0;padding:10px 12px;background:var(--card2);border:1px dashed var(--border);border-radius:8px;font-size:12px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}
.vc-apikeys-list{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.vc-apikey-row{padding:10px 12px;background:var(--card2);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:6px}

/* ═══════════ Вкладки: Портфель / Схемы ═══════════ */
.vc-portfolio-mode-bar{margin:0 0 14px}
.vc-portfolio-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px 20px;margin-bottom:14px}
.vc-portfolio-head__title{margin:0}
.vc-portfolio-head__hint{margin:6px 0 0;font-size:13px;color:var(--muted);line-height:1.45;max-width:520px}
.vc-portfolio-account-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.vc-portfolio-account-label{font-size:12px;font-weight:600;color:var(--muted)}
.vc-portfolio-account-row .vc-sel{min-width:220px;max-width:360px}
.vc-portfolio-summary{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.vc-portfolio-stat,.vc-portfolio-summary>div{flex:1 1 120px;padding:12px 14px;background:var(--card);border:1px solid var(--border);border-radius:10px}
.vc-portfolio-stat span,.vc-portfolio-summary>div span{display:block;font-size:11px;color:var(--muted);margin-bottom:4px}
.vc-portfolio-stat b,.vc-portfolio-summary>div b{font-size:18px;font-variant-numeric:tabular-nums}
.vc-portfolio-add-card{margin-bottom:18px;padding:16px;background:var(--card);border:1px solid var(--border);border-radius:12px}
.vc-portfolio-add-title{margin:0 0 12px;font-size:14px;color:var(--text2)}
.vc-portfolio-form--add{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 12px}
.vc-portfolio-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.vc-portfolio-field--grow{grid-column:1 / -1}
.vc-portfolio-field--sm{max-width:120px}
.vc-field-label{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.02em}
.vc-portfolio-quote{font-size:11px;color:var(--vc-cta-text);margin-top:2px}
.vc-portfolio-add-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.vc-portfolio-csv-btn{cursor:pointer}
.vc-portfolio-csv-guide{margin-top:12px;padding:12px 14px;background:var(--card2);border:1px solid var(--border);border-radius:10px;font-size:12px;color:var(--text2)}
.vc-portfolio-csv-guide summary{cursor:pointer;font-weight:600;color:var(--vc-cta-text);user-select:none}
.vc-portfolio-csv-guide__body{margin-top:10px;line-height:1.45}
.vc-portfolio-csv-guide__body p{margin:0 0 8px;color:var(--muted)}
.vc-portfolio-csv-guide__list{margin:0 0 10px;padding-left:0;list-style:none}
.vc-portfolio-csv-guide__list li{margin-bottom:4px}
.vc-portfolio-csv-guide__list .req{font-size:10px;color:var(--vc-cta-text);font-weight:600}
.vc-portfolio-csv-guide__sample{margin:0;padding:10px 12px;background:var(--vc-base);border:1px solid var(--border);border-radius:8px;font-family:var(--font-mono,monospace);font-size:11px;line-height:1.45;color:var(--text2);white-space:pre-wrap;overflow-x:auto}
.vc-portfolio-empty,.vc-portfolio-list .vc-prizes-empty{padding:20px;text-align:center;color:var(--muted);font-size:13px}
.lp-schemes-help .lp-hint{font-size:12px;line-height:1.45;color:var(--muted)}

/* Схемы — мониторы + лента сигналов */
.vc-schemes-page{padding:4px 0 24px}
.vc-schemes-page-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}
.vc-schemes-page-head h2{margin:0;font-size:20px;color:var(--text2)}
.vc-schemes-page-lead{margin:6px 0 0;font-size:13px;color:var(--muted);line-height:1.45;max-width:560px}
.vc-schemes-layout{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:16px;align-items:start}
.vc-schemes-panel-title{margin:0 0 10px;font-size:13px;font-weight:700;color:var(--text2);letter-spacing:.02em}
.vc-schemes-monitors,.vc-schemes-feed{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px;min-height:200px}
.vc-schemes-feed-hint{margin:0 0 10px;font-size:12px;color:var(--muted);line-height:1.4}
.vc-schemes-empty{padding:24px 12px;text-align:center}
.vc-schemes-empty p{margin:0 0 6px;font-size:13px;color:var(--text2)}
.vc-schemes-empty--feed{padding:32px 12px}
.vc-monitor-card{display:flex;flex-direction:column;gap:10px;padding:12px;margin-bottom:8px;background:var(--card2);border:1px solid var(--border);border-radius:10px}
.vc-monitor-card.is-paused{opacity:.72}
.vc-monitor-card__title{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px}
.vc-monitor-card__title b{font-size:14px}
.vc-monitor-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--border);color:var(--muted)}
.vc-monitor-badge.is-on{background:var(--vc-cta-a12);color:var(--vc-cta-text)}
.vc-monitor-route{font-size:12px;font-weight:600;color:var(--vc-cta-text)}
.vc-monitor-meta{font-size:11px;color:var(--muted);line-height:1.4}
.vc-monitor-card__controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.vc-monitor-notify{display:flex;gap:8px;font-size:11px;color:var(--muted)}
.vc-monitor-notify label{display:inline-flex;align-items:center;gap:4px}
.vc-monitor-switch{display:inline-block;width:28px;height:16px;background:var(--border);border-radius:999px;position:relative}
.vc-scheme-toggle input{position:absolute;opacity:0;width:0;height:0}
.vc-scheme-toggle input:checked+.vc-monitor-switch{background-color: var(--vc-cta-a45)}
.vc-signal-row{padding:10px 12px;margin-bottom:6px;background:var(--card2);border:1px solid var(--border);border-radius:8px;border-left:3px solid var(--vc-cta-a45)}
.vc-signal-row.is-new{border-left-color:var(--vc-cta)}
.vc-signal-row.is-clickable{cursor:pointer}
.vc-signal-row.is-clickable:hover{background:var(--hover)}
.vc-portfolio-mode-bar .vc-seg-btn[hidden]{display:none!important}
.vc-signal-row__main{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.vc-signal-item{font-size:13px;font-weight:600;color:var(--text2);line-height:1.3}
.vc-signal-margin{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}
.vc-signal-margin.pos{color:var(--vc-profit)}
.vc-signal-margin.neg{color:var(--vc-loss)}
.vc-signal-row__sub{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:4px;font-size:11px;color:var(--muted)}
.vc-signal-scheme{font-weight:600}
.vc-signal-time{display:block;margin-top:4px;font-size:10px;color:var(--muted)}
.vc-scheme-feed{max-height:min(62vh,640px);overflow:auto}
.vc-schemes-drawer{margin-top:16px;padding:16px;background:var(--card);border:1px solid var(--vc-cta-a28);border-radius:12px}
.vc-schemes-drawer__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.vc-schemes-drawer__head h3{margin:0;font-size:15px}
/* Форма монитора схем, переписана 09.08.2026. Прежняя раскладка ставила
   подпись отдельным элементом сетки рядом с полями, из-за чего «Маршрут» и
   «Стиль» разъезжались на разные строки, а стрелка уезжала к правому краю.
   Теперь единица раскладки — поле: подпись сверху, контрол снизу. Сама форма
   трёхколоночная, широкие поля занимают всю ширину. */
.vc-scheme-form--drawer{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px 14px;align-items:start;margin-top:14px}
.vc-scheme-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.vc-scheme-field--wide{grid-column:1 / -1}
.vc-scheme-field .vc-field-label{margin:0}
.vc-scheme-field .vc-inp,.vc-scheme-field .vc-sel{width:100%;min-width:0}

/* Пара «откуда → куда» и пара стилей — одна строка, поля равной ширины. */
.vc-scheme-pair{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center}
.vc-scheme-pair--styles{grid-template-columns:1fr 1fr}
.vc-scheme-arrow{color:var(--muted);font-weight:700;font-size:15px;line-height:1;
  text-align:center;padding:0 2px}

.vc-scheme-filters-fold{grid-column:1 / -1;margin:2px 0 0;font-size:12px;color:var(--muted)}
.vc-scheme-filters-fold summary{cursor:pointer;font-weight:600;color:var(--text2);
  padding:6px 0;user-select:none}
.vc-scheme-fold-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 14px;margin-top:8px}

.vc-scheme-notify-row{grid-column:1 / -1;display:flex;align-items:center;gap:16px;margin:2px 0 0;
  flex-wrap:wrap}
.vc-scheme-notify-row .vc-field-label{margin:0;flex:0 0 auto}
.vc-schemes-drawer__actions{grid-column:1 / -1;display:flex;gap:10px;margin-top:6px;
  padding-top:12px;border-top:1px solid var(--border)}
.vc-schemes-drawer__actions .vc-btn{min-width:150px}

@media (max-width:900px){
  .vc-scheme-form--drawer{grid-template-columns:1fr}
  .vc-scheme-fold-grid{grid-template-columns:1fr}
  .vc-scheme-pair{grid-template-columns:1fr auto 1fr}
}
@media (max-width:960px){
  .vc-schemes-layout{grid-template-columns:1fr}
  .vc-scheme-form-grid--3{grid-template-columns:1fr 1fr}
}
@media (max-width:700px){
  .vc-portfolio-form--add{grid-template-columns:1fr}
  .vc-portfolio-field--sm{max-width:none}
}

/* Table search always visible — filter toggle removed */
.table-toolbar .btn-filter-toggle,
.btn-filter-toggle{display:none!important}
.filterbar-wrap.collapsed{display:block!important;max-height:none!important;opacity:1!important;overflow:visible!important}
