/* ─────────────────────────────────────────────────────────────────────────
   cabinet.css — ТОЛЬКО net-new слой кабинета, целиком на токенах Nidus.
   Правило: ни одного литерального цвета/размера. Всё через var(--…) из tokens.css.
   Это гарантирует консистентность с Nidus и бесплатную светлую тему (theme-light.css).
   Атомы (.btn/.card-premium/.table/.chip/.gauge/.empty/.skeleton/.lb-*) — из components.css.
   ───────────────────────────────────────────────────────────────────────── */

/* ── Фикс-вьюпорт шелл (как app-v4: документ не скроллится, скроллят только панели) ── */
body.cab { height: 100vh; overflow: hidden; background: var(--bg); color: var(--text-1);
  display: grid; grid-template-rows: var(--nav-h) 1fr; }

.cab-top { display: flex; align-items: center; gap: var(--space-4); height: var(--nav-h);
  padding: 0 var(--gutter); border-bottom: 1px solid var(--border);
  background: var(--surface-1); box-shadow: inset 0 -1px 0 rgba(255,255,255,.02); }
/* Бренд — 1:1 канонический .v4-brand живого сайта (не менять шрифт/размер). */
.cab-brand { display: flex; align-items: center; gap: 9px; color: var(--text-1);
  font-family: var(--font-display); font-weight: 500; font-size: .875rem; letter-spacing: .18em; }
.cab-brand svg { width: 22px; height: 22px; stroke: var(--text-1); }
.cab-omni { flex: 1; max-width: 440px; height: 36px; display: flex; align-items: center;
  gap: var(--space-2); padding: 0 var(--space-3); border: 1px solid var(--border);
  border-radius: var(--radius-sm); background: var(--surface-2); color: var(--text-3);
  font-size: .8125rem; cursor: text; transition: border-color var(--dur-2) var(--ease-std); }
.cab-omni:hover { border-color: var(--border-hover); }
.cab-omni kbd { margin-left: auto; font-family: var(--font-mono); font-size: .6875rem;
  color: var(--text-3); border: 1px solid var(--border); border-radius: var(--radius-xs);
  padding: 1px 5px; background: var(--surface-1); }
.cab-top-right { margin-left: auto; display: flex; align-items: center; gap: var(--space-3); }

.cab-live { display: inline-flex; align-items: center; gap: var(--space-2); font-size: .75rem;
  color: var(--text-3); font-family: var(--font-mono); }
.cab-live .dot { width: 8px; height: 8px; border-radius: var(--radius-pill); background: var(--accent);
  box-shadow: 0 0 0 0 var(--accent-ring); }
@media (prefers-reduced-motion: no-preference) {
  .cab-live.is-on .dot { animation: cabPulse 2.4s var(--ease-std) infinite; }
}
@keyframes cabPulse { 0% { box-shadow: 0 0 0 0 var(--accent-ring); } 70%,100% { box-shadow: 0 0 0 6px transparent; } }
.cab-live.is-stale .dot { background: var(--warn); }

/* ── Шелл: рейл + основная область ── */
.cab-body { display: grid; grid-template-columns: 224px 1fr; min-height: 0; }
.cab-rail { border-right: 1px solid var(--border); background: var(--surface-1);
  padding: var(--space-4) var(--space-3); overflow-y: auto; display: flex; flex-direction: column; gap: var(--space-2); }
.cab-rail-group { margin-top: var(--space-3); }
.cab-rail-label { font-size: .6875rem; font-weight: 500; text-transform: uppercase;
  letter-spacing: var(--track-caps-sm); color: var(--text-3); padding: var(--space-2) var(--space-3); }
.cab-nav { position: relative; display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-3); border-radius: var(--radius-sm); color: var(--text-2);
  font-size: .875rem; cursor: pointer; transition: background var(--dur-2) var(--ease-std), color var(--dur-2) var(--ease-std); }
.cab-nav svg { width: 18px; height: 18px; stroke-width: 1.5; flex: none; }
.cab-nav:hover { background: var(--fill-hover); color: var(--text-1); }
.cab-nav.is-active { background: var(--fill-selected); color: var(--text-1); }
.cab-nav.is-active::before { content: ""; position: absolute; left: 0; top: 20%; bottom: 20%;
  width: 2px; border-radius: var(--radius-pill); background: var(--accent); }
.cab-rail-foot { margin-top: auto; padding-top: var(--space-3); border-top: 1px solid var(--border); }

.cab-main { min-width: 0; min-height: 0; overflow-y: auto; }
.cab-view { display: none; padding: var(--space-6) var(--gutter); max-width: var(--container-dashboard); margin: 0 auto; }
.cab-view.is-on { display: block; }
.cab-head { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-4);
  margin-bottom: var(--space-5); }
.cab-title { font-family: var(--font-display); font-size: var(--fs-h2, 1.75rem); font-weight: 600; color: var(--text-1); }
.cab-sub { font-size: .875rem; color: var(--text-3); margin-top: var(--space-1); }

/* ── Toolbar ── */
.cab-toolbar { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-4); flex-wrap: wrap; }
.cab-toolbar .spacer { flex: 1; }

/* ── KPI / quota strip ── */
.cab-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--space-3);
  margin-bottom: var(--space-5); }
.cab-stat { padding: var(--space-4); }
.cab-stat .k { font-size: .6875rem; text-transform: uppercase; letter-spacing: var(--track-caps-sm);
  color: var(--text-3); margin-bottom: var(--space-2); }
.cab-stat .v { font-family: var(--font-display); font-size: 1.5rem; color: var(--text-1);
  font-variant-numeric: tabular-nums lining-nums slashed-zero; }
.cab-stat .v.up { color: var(--up); } .cab-stat .v.down { color: var(--down); }

/* ── Form input layer (net-new) ── */
.cab-field { display: flex; flex-direction: column; gap: var(--space-2); }
.cab-field > label { font-size: .75rem; font-weight: 500; color: var(--text-2);
  text-transform: uppercase; letter-spacing: var(--track-caps-sm); }
.cab-input-wrap { position: relative; display: flex; align-items: center; }
.cab-input { width: 100%; height: 40px; padding: 0 var(--space-3); background: var(--surface-1);
  border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-1);
  font-family: var(--font-sans); font-size: .875rem; transition: border-color var(--dur-2) var(--ease-std); }
.cab-input.mono, .cab-input[inputmode="decimal"], .cab-input[data-num] { font-family: var(--font-mono);
  font-variant-numeric: tabular-nums lining-nums slashed-zero; letter-spacing: 0; }
.cab-input::placeholder { color: var(--text-disabled); }
.cab-input:hover { border-color: var(--border-hover); }
.cab-input:focus, .cab-input:focus-visible { outline: none; border-color: var(--accent); box-shadow: none; }
/* token-page price-alert bell (SVG icon, sized to match the ★ favourite button) */
.pa-bell svg { width: 1.05em; height: 1.05em; display: block; }
.pa-bell { cursor: pointer; }
.cab-input[aria-invalid="true"] { border-color: var(--down); }
.cab-input[disabled] { background: var(--surface-2); color: var(--text-disabled); cursor: not-allowed; }
.cab-suffix { position: absolute; right: var(--space-3); color: var(--text-3); font-size: .8125rem;
  font-family: var(--font-mono); pointer-events: none; }
.cab-msg { font-size: .75rem; min-height: 1em; }
.cab-msg.err { color: var(--down); } .cab-msg.ok { color: var(--up); }

/* ── Toggle switch (net-new) ── */
.cab-toggle { display: inline-flex; align-items: center; gap: var(--space-3); cursor: pointer; user-select: none; }
.cab-toggle .track { width: 38px; height: 22px; border-radius: var(--radius-pill); background: var(--surface-3);
  border: 1px solid var(--border); position: relative; transition: background var(--dur-2) var(--ease-std), border-color var(--dur-2) var(--ease-std); flex: none; }
.cab-toggle .knob { position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: var(--radius-pill);
  background: var(--text-2); transition: transform var(--dur-2) var(--ease-std), background var(--dur-2) var(--ease-std); }
.cab-toggle[aria-checked="true"] .track { background: var(--accent); border-color: transparent; }
.cab-toggle[aria-checked="true"] .knob { transform: translateX(16px); background: var(--accent-ink); }
.cab-toggle:focus-visible { outline: none; }
.cab-toggle:focus-visible .track { box-shadow: var(--focus-ring); }
.cab-toggle .lab { font-size: .875rem; color: var(--text-1); }

/* ── Segmented control (net-new, extends .tc-tf) ── */
.cab-seg { display: inline-flex; padding: 3px; gap: 2px; background: var(--surface-2);
  border: 1px solid var(--border); border-radius: var(--radius-sm); }
.cab-seg button { appearance: none; border: 0; background: transparent; color: var(--text-2);
  font-family: var(--font-sans); font-size: .8125rem; font-weight: 500; padding: 6px 12px;
  border-radius: var(--radius-xs); cursor: pointer; white-space: nowrap;
  font-variant-numeric: tabular-nums; transition: color var(--dur-1) var(--ease-std); }
.cab-seg button:hover { color: var(--text-1); }
.cab-seg button.is-on { color: var(--accent); background: var(--accent-tint);
  box-shadow: inset 0 0 0 1px var(--accent-ring); }
.cab-seg button:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* ── Chip multiselect state «Все» ── */
.cab-chips { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; }
.cab-chips .all { color: var(--text-3); font-size: .8125rem; }

/* ── Range (paired number inputs + optional slider) (net-new) ── */
.cab-range { display: flex; align-items: center; gap: var(--space-3); }
.cab-range .cab-input { width: 120px; }
.cab-range .sep { color: var(--text-3); }

/* ── Disclosure «Дополнительно» (net-new) ── */
.cab-more > summary, .cab-more-trigger { display: flex; align-items: center; gap: var(--space-2);
  cursor: pointer; color: var(--text-2); font-size: .8125rem; font-weight: 500; list-style: none;
  padding: var(--space-2) 0; }
.cab-more-trigger svg { width: 16px; height: 16px; transition: transform var(--dur-2) var(--ease-std); }
.cab-more-trigger[aria-expanded="true"] svg { transform: rotate(90deg); }
.cab-more-body { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--dur-3) var(--ease-out); }
.cab-more-body.is-open { grid-template-rows: 1fr; }
.cab-more-body > div { overflow: hidden; }

/* ── Live rule sentence (net-new) — когнитивный якорь конструктора алертов ── */
.cab-rule { display: flex; align-items: flex-start; gap: var(--space-3);
  padding: var(--space-4) var(--space-4-5, var(--space-4)); background: var(--accent-tint);
  border: 1px solid var(--accent-ring); border-radius: var(--radius-md); color: var(--text-1);
  font-family: var(--font-sans); font-size: .9375rem; line-height: 1.55; }
.cab-rule .cab-rule-ic { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; margin-top: 1px; border-radius: var(--radius-sm);
  background: var(--accent-tint-2); color: var(--accent); }
.cab-rule .cab-rule-ic svg { width: 16px; height: 16px; }
.cab-rule .cab-rule-tx { flex: 1 1 auto; min-width: 0; }
.cab-rule b { color: var(--accent); font-weight: 600; }
.cab-rule .m { font-family: var(--font-mono); font-variant-numeric: tabular-nums slashed-zero;
  color: var(--text-1); }
/* полный адрес в широких списках кошельков — переносится на узких экранах, не ломая раскладку */
.cab-addr-full { word-break: break-all; }

/* ── Modal / dialog (net-new, APG) ── */
.cab-scrim { position: fixed; inset: 0; background: rgba(6,9,12,.62); z-index: 80;
  display: flex; align-items: center; justify-content: center; padding: var(--gutter); }
.cab-modal { width: 100%; max-width: 480px; background: var(--surface-3); border: 1px solid var(--border-strong);
  border-radius: var(--radius-md); box-shadow: var(--elev-2); padding: var(--space-5);
  max-height: 88vh; overflow-y: auto; }
@media (prefers-reduced-motion: no-preference) {
  .cab-scrim { animation: cabFade var(--dur-2) var(--ease-out); }
  .cab-modal { animation: cabPop var(--dur-4) var(--ease-out); }
}
@keyframes cabFade { from { opacity: 0; } } @keyframes cabPop { from { opacity: 0; transform: scale(.98); } }
.cab-modal h3 { font-family: var(--font-display); font-size: 1.25rem; margin-bottom: var(--space-4); }
.cab-modal-actions { display: flex; justify-content: flex-end; gap: var(--space-3); margin-top: var(--space-5); }

/* ── Toast (net-new) ── */
.cab-toasts { position: fixed; right: var(--gutter); bottom: var(--gutter); z-index: 90;
  display: flex; flex-direction: column; gap: var(--space-2); }
.cab-toast { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4);
  background: var(--surface-3); border: 1px solid var(--border-strong); border-radius: var(--radius-sm);
  box-shadow: var(--elev-2); color: var(--text-1); font-size: .875rem; }
.cab-toast.ok svg { color: var(--up); } .cab-toast.err svg { color: var(--down); }
@media (prefers-reduced-motion: no-preference) { .cab-toast { animation: cabSlide var(--dur-3) var(--ease-out); } }
@keyframes cabSlide { from { opacity: 0; transform: translateY(8px); } }

/* ── Onboarding checklist (net-new, on .card-premium) ── */
.cab-checklist { max-width: 560px; margin: var(--space-10) auto; padding: var(--space-6); }
.cab-step { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) 0;
  border-bottom: 1px solid var(--border); }
.cab-step:last-child { border-bottom: 0; }
.cab-step .num { width: 24px; height: 24px; border-radius: var(--radius-pill); border: 1px solid var(--border-strong);
  display: grid; place-items: center; font-size: .75rem; color: var(--text-3); font-family: var(--font-mono); flex: none; }
.cab-step.done .num { background: var(--accent); border-color: transparent; color: var(--accent-ink); }
.cab-step .txt { flex: 1; } .cab-step .txt .t { color: var(--text-1); font-weight: 500; font-size: .9375rem; }
.cab-step .txt .d { color: var(--text-3); font-size: .8125rem; }

/* ── Login (standalone, NOT shell) ── */
body.cab-login { min-height: 100vh; display: grid; place-items: center; background: var(--bg); padding: var(--gutter); }
.cab-auth { width: 100%; max-width: 420px; padding: var(--space-8) var(--space-6); text-align: center; }
.cab-auth .mark { width: 40px; height: 40px; color: var(--accent); margin: 0 auto var(--space-4); }
.cab-auth .word { font-family: var(--font-display); font-weight: 600; letter-spacing: .18em;
  text-transform: uppercase; font-size: 1.25rem; color: var(--text-1); margin-bottom: var(--space-3); }
.cab-auth .lede { color: var(--text-2); font-size: .9375rem; line-height: 1.55; margin-bottom: var(--space-6); }
.cab-auth .tg-slot { display: flex; justify-content: center; min-height: 48px; margin-bottom: var(--space-4); }
.cab-auth .fine { color: var(--text-3); font-size: .75rem; }
.cab-callout { padding: var(--space-3) var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--surface-2); color: var(--text-2); font-size: .8125rem; margin-bottom: var(--space-4); text-align: left; }
.cab-callout.err { border-color: var(--down); color: var(--down); }

/* ── Premium login modal ── */
.cab-login-scrim { background: rgba(6,9,12,.74); -webkit-backdrop-filter: blur(10px) saturate(120%); backdrop-filter: blur(10px) saturate(120%); }
.cab-login-modal { max-width: 384px; padding: var(--space-8) var(--space-6) var(--space-6); position: relative; text-align: center; }
.cab-login-modal::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px; border-radius: var(--radius-md) var(--radius-md) 0 0;
  background: linear-gradient(90deg, transparent, var(--accent), transparent); opacity: .45; }
.cab-login-x { position: absolute; top: 12px; right: 12px; width: 30px; height: 30px; display: grid; place-items: center;
  border: 0; background: transparent; color: var(--text-3); border-radius: var(--radius-pill); cursor: pointer;
  transition: color var(--dur-2) var(--ease-out), background var(--dur-2) var(--ease-out); }
.cab-login-x:hover { color: var(--text-1); background: var(--surface-4); }
.cab-login-x svg { width: 16px; height: 16px; }
.cab-login-modal .cab-auth { position: relative; max-width: none; padding: 0; }
.cab-login-badge { width: 52px; height: 52px; margin: 0 auto var(--space-4); border-radius: var(--radius-pill);
  display: grid; place-items: center; color: var(--accent); background: var(--accent-tint); border: 1px solid var(--accent-ring); }
.cab-login-badge svg { width: 28px; height: 28px; filter: drop-shadow(0 0 6px color-mix(in srgb, var(--accent) 40%, transparent)); }
.cab-login-modal .word { margin-bottom: var(--space-2); }
.cab-login-modal .lede { margin-bottom: var(--space-6); padding: 0 var(--space-2); }
.cab-login-modal .tg-slot { display: block; margin: 0; }
.cab-login-form { display: flex; flex-direction: column; gap: var(--space-3); width: 100%; }
.cab-login-inp { width: 100%; padding: 12px 14px; border-radius: var(--radius-md); border: 1px solid var(--border-strong);
  background: var(--surface-2); color: var(--text-1); font-size: .9375rem; outline: none;
  transition: border-color var(--dur-2) var(--ease-out), box-shadow var(--dur-2) var(--ease-out); }
.cab-login-inp::placeholder { color: var(--text-3); }
.cab-login-inp:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-tint); }
.cab-login-form .cab-tg-btn { margin-top: var(--space-1); }
.cab-login-hint { color: var(--text-3); font-size: .75rem; margin-top: var(--space-2); text-align: center; }
.cab-login-hint a { color: var(--accent); text-decoration: none; }
.cab-login-hint a:hover { text-decoration: underline; }
.cab-tg-btn { display: flex; align-items: center; justify-content: center; gap: 9px; width: 100%; padding: 13px 20px;
  border-radius: var(--radius-md); font-size: .9375rem; font-weight: 600; color: var(--accent); background: transparent;
  border: 1px solid var(--accent); cursor: pointer; text-decoration: none;
  transition: background .18s var(--ease-out), color .18s var(--ease-out), box-shadow .18s var(--ease-out), transform .12s var(--ease-out); }
.cab-tg-btn svg { width: 18px; height: 18px; display: block; }
.cab-tg-btn:hover { background: var(--accent); color: var(--accent-ink); box-shadow: 0 8px 22px color-mix(in srgb, var(--accent) 28%, transparent); }
.cab-tg-btn:active { background: var(--accent-active); transform: translateY(1px); }
.cab-tg-btn.is-disabled { opacity: .5; pointer-events: none; }
.cab-tg-btn.is-wait { opacity: .55; cursor: progress; }
.cab-login-status { color: var(--text-3); font-size: .8125rem; text-align: center; min-height: 1.1em; }
.cab-login-match { text-align: center; font-size: 1.25rem; font-weight: 700; letter-spacing: .22em;
  color: var(--accent); font-family: var(--font-mono, ui-monospace, monospace); padding: var(--space-2) 0; }
.cab-login-fb { align-self: center; background: none; border: none; color: var(--text-3); font-size: .75rem;
  cursor: pointer; padding: var(--space-1) var(--space-2); text-decoration: underline; text-underline-offset: 2px; }
.cab-login-fb:hover { color: var(--text-1); }
.cab-login-fbslot { display: flex; flex-direction: column; gap: var(--space-3);
  border-top: 1px solid var(--border); padding-top: var(--space-3); margin-top: var(--space-1); }

/* ── профиль-меню в углу топбара (подписка + выход) ── */
.v4-top .right { position: relative; }
.cab-profile { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px;
  border-radius: 50%; border: 1px solid var(--border-strong); background: var(--surface-2); color: var(--accent);
  cursor: pointer; padding: 0; transition: background var(--dur-2, .15s) var(--ease-out), border-color var(--dur-2, .15s) var(--ease-out); }
.cab-profile:hover { background: var(--surface-3, var(--surface-2)); border-color: var(--accent); }
.cab-profile svg { width: 18px; height: 18px; display: block; }
.cab-menu { position: absolute; top: calc(100% + 8px); right: 0; z-index: 60; min-width: 244px;
  background: var(--surface-1, var(--surface-2)); border: 1px solid var(--border-strong); border-radius: var(--radius-lg, 12px);
  box-shadow: 0 14px 36px color-mix(in srgb, #000 32%, transparent); padding: var(--space-2);
  display: flex; flex-direction: column; gap: 2px; }
.cab-menu-id { padding: var(--space-3); border-bottom: 1px solid var(--border); margin-bottom: var(--space-1); }
.cab-menu-id .nm { font-weight: 600; color: var(--text-1); }
.cab-menu-id .sb { font-size: .75rem; color: var(--text-3); margin-top: 2px; }
.cab-menu-item { display: block; width: 100%; text-align: left; padding: 10px 12px; border-radius: var(--radius-md);
  background: none; border: none; color: var(--text-1); font-size: .875rem; cursor: pointer; text-decoration: none; }
.cab-menu-item:hover { background: var(--surface-2); }
.cab-menu-item.is-danger { color: var(--danger, #e5484d); }
.cab-login-modal .fine { display: inline-flex; align-items: center; gap: 6px; color: var(--text-3); font-size: .75rem; }
.cab-login-modal .fine svg { color: var(--accent); opacity: .85; flex: none; }

/* ── Token / group tiles + grids ── */
.cab-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--space-4); }
.cab-tile { padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-3); }
.cab-tile .row { display: flex; align-items: center; gap: var(--space-3); }
.cab-tile .tlogo { width: 32px; height: 32px; border-radius: var(--radius-pill); background: var(--surface-3);
  display: grid; place-items: center; font-family: var(--font-mono); color: var(--text-2); font-size: .8125rem; flex: none; }
.cab-pill { font-size: .6875rem; padding: 2px 8px; border-radius: var(--radius-pill); border: 1px solid var(--border);
  color: var(--text-3); text-transform: uppercase; letter-spacing: var(--track-caps-sm); }
.cab-tile .name { font-weight: 500; color: var(--text-1); }
.cab-tile .meta { font-size: .8125rem; color: var(--text-3); font-variant-numeric: tabular-nums; }

/* ── Delta hero ── */
.cab-delta-kpi { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3); margin: var(--space-4) 0; }
.cab-delta-cols { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: var(--space-4); }
@media (max-width: 900px) { .cab-delta-cols { grid-template-columns: 1fr; } }
.cab-num { font-family: var(--font-mono); font-variant-numeric: tabular-nums lining-nums slashed-zero; }
.up { color: var(--up); } .down { color: var(--down); }

/* ── Crumb / list rows ── */
.cab-crumb { display: flex; align-items: center; gap: var(--space-3); color: var(--text-2); margin-bottom: var(--space-3); }
.cab-list { display: flex; flex-direction: column; gap: var(--space-2); }
.cab-row { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4); }
.cab-row .grow { flex: 1; min-width: 0; }
.cab-row .summary { font-size: .8125rem; color: var(--text-3); }
.cab-row .summary .m { font-family: var(--font-mono); color: var(--text-2); }

/* tabs inside group detail */
.cab-tabs { display: flex; gap: var(--space-1); border-bottom: 1px solid var(--border); margin-bottom: var(--space-4); }
.cab-tab { padding: var(--space-3) var(--space-4); color: var(--text-3); font-size: .875rem; font-weight: 500;
  cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.cab-tab:hover { color: var(--text-1); }
.cab-tab.is-on { color: var(--text-1); border-bottom-color: var(--accent); }

@keyframes cabSpin { to { transform: rotate(360deg); } }

/* ── Главная: лента с фильтрами + пагинация (на атомах САЙТА: .chips/.w3-feedrow/.w3-stat/.v4-pager) ── */
.cab-filters { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-4); }
.cab-filters .spacer { flex: 1 1 auto; }
.cab-feed .w3-feedrow { padding-inline: var(--space-3); }
.cab-feed .w3-feedrow:first-child { border-top: 1px solid rgba(255,255,255,.05); }
.cab-view .v4-pager:not(:empty) { display: flex; justify-content: center; }

/* ── унификация под сайт: заголовки мягче, бейджи как .tag сайта ── */
.cab-title { font-size: 1.375rem; }
.cab-pill { border-radius: var(--radius-sm); background: var(--surface-2); }

/* ── поиск в «Мои группы» (стиль сайта; крестик — наш SVG, НЕ уродливый нативный) ── */
.cab-search { display: flex; align-items: center; gap: var(--space-2); height: 36px; max-width: 360px;
  padding: 0 var(--space-2) 0 var(--space-3); margin-bottom: var(--space-4);
  background: var(--surface-1); border: 1px solid var(--border); border-radius: var(--radius-sm);
  transition: border-color var(--dur-2) var(--ease-std); }
.cab-search:focus-within { border-color: var(--border-hover); }
.cab-search .ic { display: inline-flex; flex: 0 0 auto; color: var(--text-3); }
.cab-search .ic svg { width: 15px; height: 15px; }
.cab-search input { flex: 1; min-width: 0; background: none; border: 0; outline: none;
  color: var(--text-1); font-family: var(--font-sans); font-size: .875rem; }
.cab-search input::placeholder { color: var(--text-disabled); }
.cab-search-clr { flex: 0 0 auto; width: 22px; height: 22px; display: inline-flex; align-items: center;
  justify-content: center; border: 0; background: transparent; color: var(--text-3); cursor: pointer;
  border-radius: var(--radius-xs); }
.cab-search-clr:hover { color: var(--text-1); background: var(--fill-hover); }
.cab-search-clr[hidden] { display: none; }
.cab-search-clr svg { width: 13px; height: 13px; }
/* убрать уродливый НАТИВНЫЙ крестик у любых search-инпутов (омнибокс и пр.) */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; appearance: none; display: none; }
/* убрать свечение фокуса вокруг поисковой строки (глобальный --focus-ring не нужен внутри коробки) */
.cab-search input:focus, .cab-search input:focus-visible { outline: none; box-shadow: none; }

/* ── пагинатор: переход по номеру страницы ── */
.cab-view .v4-pager .pg-i { display: inline-flex; align-items: center; gap: 4px; }
.cab-pg-inp { width: 36px; height: 22px; text-align: center; padding: 0 2px;
  background: var(--surface-1); border: 1px solid var(--border); border-radius: var(--radius-xs);
  color: var(--text-1); font-family: var(--font-mono); font-variant-numeric: tabular-nums; font-size: .75rem; }
.cab-pg-inp:focus, .cab-pg-inp:focus-visible { outline: none; border-color: var(--accent); box-shadow: none; }

/* ── дата-фильтр (в .v4-dd-pop) ── */
.cab-date-pop { min-width: 240px; padding: var(--space-3); }
.cab-date-row { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-2); }
.cab-date-row > label { width: 26px; flex: 0 0 auto; color: var(--text-3); font-size: .8125rem; }
.cab-date { flex: 1; min-width: 0; background: var(--surface-1); border: 1px solid var(--border);
  border-radius: var(--radius-sm); color: var(--text-1); font-family: var(--font-sans); font-size: .8125rem; padding: 6px 8px; }
.cab-date:focus, .cab-date:focus-visible { outline: none; border-color: var(--accent); box-shadow: none; }
.cab-date-acts { display: flex; justify-content: flex-end; gap: var(--space-2); margin-top: var(--space-3); }

/* фильтры кабинета слева → поповер раскрывается ВПРАВО (не right:0 под рейл — иначе «Сеть» казался
   пустым: текст уезжал влево под рейл) и по ширине КОНТЕНТА (а не фикс 200px = «в 2 раза шире») */
.cab-filters .v4-dd-pop { left: 0; right: auto; }
.cab-filters .v4-dd-pop:not(.cab-date-pop) { min-width: 0; width: max-content; }
.cab-filters .cab-date-pop { min-width: 240px; width: auto; }

/* ── интеграция в существующий v4-шелл (кабинет как слой) ── */
#vw-cabinet { overflow-y: auto; }
#cab-rail-grp a svg { width: 18px; height: 18px; flex: none; }
#cab-rail-grp a.is-active { background: var(--fill-selected); color: var(--text-1); }

/* ════════════════════════════════════════════════════════════════════════
   Сводка + плитки с состоянием (net-new, только токены Nidus)
   ════════════════════════════════════════════════════════════════════════ */

/* ── секции Сводки ── */
.cab-sec { margin-top: var(--space-8); }
.cab-view .cab-sec:first-of-type { margin-top: 0; }
.cab-sec-head { display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-4); }
.cab-sec-head.is-first { margin-top: 0; }
.cab-sec-head .t-h3 { margin: 0; }
.cab-sec-head .cab-sub { margin: 0; }

/* ── ссылка «Все группы →» ── */
.cab-seemore { display: inline-flex; align-items: center; gap: 4px; margin-top: var(--space-3);
  color: var(--accent); font-size: .8125rem; font-weight: 500; text-decoration: none;
  transition: gap var(--dur-2) var(--ease-std); }
.cab-seemore svg { width: 15px; height: 15px; }
.cab-seemore:hover { gap: 8px; }

/* ── карточки «Самые активные группы» ── */
.cab-acards { display: grid; grid-template-columns: repeat(auto-fill, minmax(224px, 1fr)); gap: var(--space-4); }
.cab-acard { padding: var(--space-4); display: flex; flex-direction: column; gap: var(--space-3); }
.cab-acard .row { display: flex; align-items: center; gap: var(--space-3); }
.cab-acard .name { font-weight: 500; color: var(--text-1);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cab-acard .meta { font-size: .8125rem; color: var(--text-3); font-variant-numeric: tabular-nums; }
.cab-acard-foot { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
.cab-acard-per { font-size: .6875rem; text-transform: uppercase; letter-spacing: var(--track-caps-sm); color: var(--text-3); }
.cab-acard-sk { height: 118px; border-radius: var(--radius-md); }
.cab-acards-note { grid-column: 1 / -1; color: var(--text-3); font-size: .875rem; padding: var(--space-4) 0; }

/* ── спарклайн (inline SVG, §6.3: нейтральная линия + одна семантическая точка) ── */
.cab-spark-wrap { height: 30px; }
.cab-spark { display: block; width: 100%; height: 100%; }
.cab-spark polyline { stroke: var(--text-3); stroke-width: 1.4; opacity: .55; }
.cab-spark circle { fill: var(--accent); }
.cab-spark.up polyline { stroke: color-mix(in srgb, var(--up) 50%, var(--text-3)); opacity: .85; }
.cab-spark.up circle { fill: var(--up); }
.cab-spark.down polyline { stroke: color-mix(in srgb, var(--down) 50%, var(--text-3)); opacity: .85; }
.cab-spark.down circle { fill: var(--down); }
.cab-spark-sk { height: 30px; border-radius: var(--radius-sm); }

/* ── мини-бар куплено/продано за период (состояние группы; значения в токенах) ── */
.cab-split { display: flex; height: 6px; border-radius: var(--radius-pill); overflow: hidden; background: var(--fill-active); gap: 1px; }
.cab-split .up { background: var(--up-fill); }
.cab-split .down { background: var(--down-fill); }
.cab-split.is-flat { background: var(--fill-active); }

/* ── бейдж «активна / тихо» (не только цветом — текст несёт смысл) ── */
.cab-state { display: inline-flex; align-items: center; gap: 5px; flex: none;
  font-size: .6875rem; text-transform: uppercase; letter-spacing: var(--track-caps-sm); color: var(--text-3); }
.cab-state .d { width: 6px; height: 6px; border-radius: var(--radius-pill); background: var(--text-disabled); flex: none; }
.cab-state.is-live { color: var(--text-2); }
.cab-state.is-live .d { background: var(--accent); }

/* ── состояние плитки группы (спарклайн + Δ% + текущий баланс) ── */
.cab-tile .name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cab-tile-state { display: flex; flex-direction: column; gap: var(--space-2); }
.cab-tile-foot { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
.cab-tile-now { font-family: var(--font-mono); font-variant-numeric: tabular-nums lining-nums slashed-zero;
  font-size: .75rem; color: var(--text-3); }
.cab-dpct { font-weight: 500; font-size: .9375rem; }
.cab-dpct.up { color: var(--up); } .cab-dpct.down { color: var(--down); }

/* ── тулбар «Мои группы» (поиск + только активные + период) ── */
.cab-gtoolbar { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-5); }
.cab-gtoolbar .spacer { flex: 1 1 auto; }
.cab-gtoolbar .cab-search { margin-bottom: 0; flex: 1 1 220px; }
.cab-only-active { height: 36px; padding: 0 var(--space-4); border-radius: var(--radius-sm);
  border: 1px solid var(--border); background: var(--surface-2); color: var(--text-3);
  font-family: var(--font-sans); font-size: .8125rem; font-weight: 500; cursor: pointer; white-space: nowrap;
  transition: color var(--dur-2) var(--ease-std), border-color var(--dur-2) var(--ease-std), background var(--dur-2) var(--ease-std); }
.cab-only-active:hover { color: var(--text-1); border-color: var(--border-hover); }
.cab-only-active.is-on { color: var(--accent); background: var(--accent-tint); border-color: var(--accent); }
.cab-only-active:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* ── чип «× N» (схлопнутые дубли в ленте) ── */
.cab-count { flex: none; font-family: var(--font-mono); font-variant-numeric: tabular-nums;
  font-size: .6875rem; color: var(--text-3); background: var(--surface-2); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 1px 6px; }

