/* ==========================================================================
   Орукул — дизайн-система «тёмное стекло / ирис» (редизайн 2026, Claude Design)
   Класс-компоненты (без inline-стилей). Иконки — Material Symbols (.msi,
   в vendor/fonts/fonts.css). Графики — ECharts. Токены — из макета Орукул.dc.html.
   Порядок секций: токены → сброс → фон → типографика → каркас → нав →
   топбар → моб-навигация → примитивы → утилиты → анимации → адаптив.
   Экран-специфичные правила добавляются ниже по мере сборки экранов.
   ========================================================================== */

/* ------------------------------- Токены --------------------------------- */
:root{
  color-scheme:dark;            /* нативные контролы (date/select/autofill) — тёмные */
  --bg-0:#090a0f; --bg-1:#0e1018;
  --ink-0:#f5f6f9; --ink-1:#b7bcc9; --ink-2:#868c9c; --ink-3:#747c91; /* ink-3: 3.6→4.6:1 (WCAG AA и для мелких подписей) */
  --ink-on-color:#0C1016;       /* тёмный текст на цветных заливках (winbar и т.п.) */
  --line:rgba(255,255,255,.085); --line-2:rgba(255,255,255,.16);
  --glass:rgba(18,20,28,.72); --glass-2:rgba(24,27,37,.80); --glass-3:rgba(37,41,54,.85);
  --glass-hi:rgba(255,255,255,.085);
  /* Поверхности/ховеры (белая альфа) — единая шкала вместо ручных ступеней */
  --surface-1:rgba(255,255,255,0.03); --surface-2:rgba(255,255,255,0.04);
  --surface-3:rgba(255,255,255,0.06); --hover-1:rgba(255,255,255,0.05); --hover-2:rgba(255,255,255,0.08);
  --pop-bg:rgba(20,26,37,.96);  /* фон плавающих слоёв (dd-меню/попапы/тост) */
  --accent:#6b70ee; --on-accent:#ffffff;
  --accent-strong:#5d62e3;      /* заливки ПОД БЕЛЫМ ТЕКСТОМ (кнопки/активные сегменты) — ≥4.5:1 */
  --accent-2:#6D3BFF;           /* второй фирменный (аватар/гость winbar/распределения) */
  --info:#4DA3FF;
  --accent-ink:color-mix(in oklab, var(--accent) 44%, #eef0ff);
  --accent-glow:color-mix(in srgb, var(--accent) 50%, transparent);
  --accent-weak:color-mix(in srgb, var(--accent) 15%, transparent);
  --accent-line:color-mix(in srgb, var(--accent) 44%, transparent);
  --pos:#34c27b; --neg:#f25563; --warn:#f2b03c; --push:#8b91a3; --gold:#e3b341;
  --sport:#6b70ee;              /* перекрашивается под вид спорта на странице события */
  --blur:20px; --r:16px; --r-sm:11px; --r-lg:22px;
  --gap:14px; --card-pad:18px;
  /* Шкала отступов — для НОВОГО кода (база 4px + «половинки» плотных мест). Существующие
     пиксель-подогнанные к макету значения задним числом не переписываются (осознанно, §48). */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-8:32px;
  --sp-1h:6px; --sp-2h:10px; --sp-3h:14px; --sp-4h:18px;
  --shadow-card:0 12px 34px -18px rgba(0,0,0,.65);
  --shadow-pop:0 26px 60px -20px rgba(0,0,0,.85);
  --shadow-modal:0 40px 120px -40px rgba(0,0,0,.85);
  /* Типографическая шкала (только ТЕКСТ; иконки .msi — свои размеры). Дробные и
     внесистемные размеры прибиты к шагам при миграции 2026-07 (CLAUDE.md §48). */
  --fs-10:10px; --fs-11:11px; --fs-12:12px; --fs-13:13px; --fs-14:14px; --fs-15:15px; --fs-16:16px; --fs-17:17px; --fs-18:18px; --fs-20:20px; --fs-22:22px; --fs-24:24px; --fs-26:26px; --fs-30:30px; --fs-34:34px;
  /* *-fallback — метрико-подогнанные заглушки (vendor/fonts/fonts.css): FOUT без сдвига строк */
  --font:'Manrope','Manrope-fallback',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono','JetBrains Mono-fallback',ui-monospace,'SF Mono',monospace;
  /* Motion-токены. ИНВАРИАНТ: JS-зеркало — const MOTION в core.js (WAAPI/setTimeout не умеют var());
     менять синхронно, гард — test/motionTokens.test.js. */
  --ease:cubic-bezier(.32,.72,0,1); --ease-out:cubic-bezier(.22,1,.36,1); --ease-in:cubic-bezier(.55,.06,.68,.19);
  --dur-1:.14s; --dur-2:.2s; --dur-3:.3s; --dur-4:.5s; --dur-5:.8s;
  --stagger-1:35ms;             /* шаг въезда карточек списков */
  /* Слои: топбар < поп-меню < таб-бар < drawer < dd-меню < подсказка < тост < модалка */
  --z-topbar:30; --z-pop:40; --z-tabbar:45; --z-drawer:60; --z-dd:70; --z-tip:80; --z-toast:90; --z-modal:100;
  --rail-w:236px; --rail-w-collapsed:76px; --topbar-h:69px;
  --express:#7a8cff;   /* цвет «Экспресса» (значок вида в плане/ставках/балансе) */
}

/* -------------------------------- Сброс --------------------------------- */
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg-0);color:var(--ink-0);font-family:var(--font);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:clip;
}
::selection{background:color-mix(in srgb,var(--accent) 32%,transparent);color:#fff}
input,button,select,textarea{font:inherit;color:inherit;outline:none;border:none;background:none}
input,textarea{caret-color:var(--accent)}
html{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p{margin:0}
ul{margin:0;padding:0;list-style:none}
img{display:block;max-width:100%}
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
/* background-color (НЕ шорткат background: тот тянет background-image/градиенты); filter — не глобально,
   а точечно у .btn (brightness на hover): фильтр на элементах с backdrop-filter перерисовывает blur-слой */
a,button,select,summary,[role="button"]{
  transition:background-color var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease),
    color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),
    transform var(--dur-1) var(--ease-out),opacity var(--dur-2) var(--ease);
}
input,textarea{transition:border-color var(--dur-2) var(--ease),background var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}
button:active:not(:disabled){transform:scale(.97)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:2px solid color-mix(in srgb,var(--accent) 75%,transparent);outline-offset:2px;
}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.09);border-radius:8px;border:3px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--accent) 58%,rgba(255,255,255,.14));background-clip:padding-box}
::-webkit-scrollbar-corner{background:transparent}

/* Skip-link: «К содержимому» — виден только по фокусу с клавиатуры */
.skip-link{position:fixed;left:14px;top:14px;z-index:calc(var(--z-modal) + 10);padding:10px 16px;border-radius:10px;
  background:var(--accent-strong);color:var(--on-accent);font-weight:700;font-size:var(--fs-13);
  transform:translateY(-64px);opacity:0;transition:transform var(--dur-2) var(--ease),opacity var(--dur-2) var(--ease)}
.skip-link:focus-visible{transform:none;opacity:1}

/* --------------------------- Фон (за контентом) ------------------------- */
.bg-layer{position:fixed;inset:0;z-index:0;pointer-events:none}
.bg-grad{
  background:
    radial-gradient(1100px 680px at 80% -10%, color-mix(in srgb,var(--accent) 18%, transparent), transparent 58%),
    radial-gradient(820px 560px at 4% 10%, rgba(150,140,235,.08), transparent 55%),
    radial-gradient(1000px 760px at 52% 122%, color-mix(in srgb,var(--sport) 14%, transparent), transparent 60%),
    linear-gradient(180deg,var(--bg-1),var(--bg-0));
}
.bg-noise{
  inset:-8%;opacity:.16;mix-blend-mode:soft-light;animation:orwave 32s var(--ease) infinite alternate;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='900'%3E%3Cfilter id='w'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.005 0.013' numOctaves='2' seed='9' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23w)'/%3E%3C/svg%3E");
}
.bg-halo{
  inset:-15%;opacity:.7;animation:orwave 46s var(--ease) infinite alternate-reverse;
  background:
    radial-gradient(46% 38% at 28% 26%, color-mix(in srgb,var(--accent) 12%, transparent), transparent 70%),
    radial-gradient(40% 34% at 76% 72%, color-mix(in srgb,var(--accent) 8%, transparent), transparent 72%);
}
.app-z{position:relative;z-index:1}

/* ----------------------------- Типографика ------------------------------ */
.t-h1{font-size:var(--fs-26);font-weight:800;letter-spacing:-.02em}
.t-h2{font-size:var(--fs-20);font-weight:700;letter-spacing:-.02em}
.t-h3{font-size:var(--fs-17);font-weight:700;letter-spacing:-.01em}
.t-h1,.t-h2,.t-h3,.state .t-sub{text-wrap:balance}   /* ровные многострочные заголовки/подписи (деградация бесплатная) */
.t-sub{font-size:var(--fs-13);color:var(--ink-2)}
.t-eyebrow{font-size:var(--fs-11);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.mono{font-family:var(--mono)}
.muted{color:var(--ink-2)} .faint{color:var(--ink-3)}
.pos{color:var(--pos)} .neg{color:var(--neg)} .warn{color:var(--warn)} .accent{color:var(--accent-ink)}

/* ------------------------------- Каркас --------------------------------- */
.app{display:flex;min-height:100vh;min-height:100dvh}
.workspace{flex:1;min-width:0;display:flex;flex-direction:column}
.main{flex:1;min-width:0;padding:24px}
.page{max-width:1180px;margin:0 auto;animation:orrise var(--dur-3) var(--ease-out)}
.page-head{margin-bottom:20px}
.page-head .t-h1{margin-bottom:4px}

/* -------------------------- Левый рельс (нав) --------------------------- */
.rail{
  width:var(--rail-w);flex-shrink:0;position:sticky;top:0;height:100vh;overflow-y:auto;
  padding:18px 14px;display:flex;flex-direction:column;gap:6px;
  border-right:1px solid var(--line);
  background:linear-gradient(180deg,var(--surface-1),rgba(255,255,255,0) 22%),rgba(13,17,24,.72);
  backdrop-filter:blur(calc(var(--blur) + 8px)) saturate(1.3);
  -webkit-backdrop-filter:blur(calc(var(--blur) + 8px)) saturate(1.3);
  transition:width var(--dur-2) var(--ease);
}
.rail.collapsed{width:var(--rail-w-collapsed);padding:18px 13px}
.rail-brand{display:flex;align-items:center;gap:11px;padding:8px 4px 18px}
.brand-mark{position:relative;width:34px;height:34px;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--accent)}
.brand-mark>.msi{font-size:25px}
.brand-mark .spark{position:absolute;top:0;right:1px;color:var(--accent-ink);line-height:1}
.brand-mark .spark .msi{font-size:10px}
.brand-name{font-weight:800;font-size:var(--fs-17);letter-spacing:-.02em;cursor:pointer}
.rail-collapse{width:30px;height:30px;flex-shrink:0;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--ink-2);border:1px solid var(--line)}
.rail-collapse:hover{background:var(--hover-1);color:var(--ink-0)}
.rail-item{
  display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-sm);
  font-size:var(--fs-14);font-weight:500;color:var(--ink-2);border:1px solid transparent;width:100%;text-align:left;
}
.rail-item .msi{font-size:21px}
.rail-item .rail-label{flex:1}
.rail-item:hover{background:var(--surface-2);color:var(--ink-0)}
.rail-item.active{
  font-weight:600;color:var(--ink-0);background:var(--accent-weak);
  border-color:var(--accent-line);box-shadow:inset 0 1px 0 var(--glass-hi);
}
.rail.collapsed .rail-item{justify-content:center;padding:11px 0;gap:0}
.rail.collapsed .rail-label{display:none}
/* Свёрнуто: только кнопка «развернуть», РОВНО на той же высоте, что была кнопка «свернуть».
   +2px сверху компенсируют, что логотип (34px) выше кнопки (30px) в развёрнутой шапке. */
.rail.collapsed .rail-brand{justify-content:center;padding:10px 0 18px}
.rail.collapsed .brand-name{display:none}

/* ------------------------------- Топбар --------------------------------- */
.topbar{
  position:sticky;top:0;z-index:var(--z-topbar);display:flex;align-items:center;gap:14px;
  padding:12px 24px;border-bottom:1px solid var(--line);
  background:rgba(10,13,19,.6);
  backdrop-filter:blur(calc(var(--blur) + 6px));-webkit-backdrop-filter:blur(calc(var(--blur) + 6px));
}
.topbar-spacer{flex:1}
.crumb{display:flex;align-items:center;gap:7px;padding:7px 12px 7px 9px;border-radius:9px;background:var(--surface-1);border:1px solid var(--line);font-size:var(--fs-13);color:var(--ink-1)}
.crumb:hover{background:var(--surface-3)}
.crumb .msi{font-size:18px}
.wallet{display:flex;align-items:center;gap:10px;height:44px;padding:0 14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
.wallet:hover{border-color:var(--line-2)}
.wallet .msi.wallet-ic{font-size:20px;color:var(--info)}
.wallet input{width:auto;box-sizing:content-box;min-width:54px;max-width:200px;font-family:var(--mono);font-weight:700;font-size:var(--fs-15);text-align:right}
.wallet .cur{font-family:var(--mono);font-size:var(--fs-14);color:var(--ink-2)}
.wallet .wallet-trend{font-size:var(--fs-15)}
.wallet .wallet-trend.pos{color:color-mix(in srgb,var(--pos) 70%,transparent)}
.wallet .wallet-trend.neg{color:color-mix(in srgb,var(--neg) 70%,transparent)}
/* крупная стрелка (изменение банка ±≥30% за 3 суток) — больше и на полном цвете */
.wallet .wallet-trend.big{font-size:var(--fs-22);font-weight:700}
.wallet .wallet-trend.pos.big{color:var(--pos)}
.wallet .wallet-trend.neg.big{color:var(--neg)}
.usermenu{position:relative}
.user-btn{display:flex;align-items:center;gap:9px;height:44px;padding:0 8px 0 11px;border-radius:12px;background:var(--surface-1);border:1px solid var(--line)}
.user-btn:hover{background:var(--surface-3)}
.avatar{width:27px;height:27px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--fs-12);font-weight:700;color:var(--on-accent);background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 50%,var(--accent-2)))}
.user-btn .msi{font-size:18px;color:var(--ink-2)}
.user-badge{position:absolute;top:-3px;right:26px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--neg);color:var(--on-accent);font-family:var(--mono);font-size:var(--fs-10);font-weight:700;display:flex;align-items:center;justify-content:center}

/* ------------------------ Выпадающее меню (стекло) ---------------------- */
.pop{
  position:absolute;right:0;top:48px;width:250px;padding:7px;border-radius:15px;z-index:var(--z-pop);
  background:linear-gradient(180deg,var(--hover-1),rgba(255,255,255,0) 30%),var(--pop-bg);
  backdrop-filter:blur(calc(var(--blur) + 12px)) saturate(1.4);-webkit-backdrop-filter:blur(calc(var(--blur) + 12px)) saturate(1.4);
  border:1px solid var(--line-2);box-shadow:var(--shadow-pop),inset 0 1px 0 var(--glass-hi);
  animation:orrise var(--dur-2) var(--ease-out);
}
.pop-label{font-size:var(--fs-10);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:10px 10px 8px}
.pop-sep{height:1px;background:var(--line);margin:4px 0 6px}
.pop-item{width:100%;display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:9px;font-size:var(--fs-13);color:var(--ink-1);text-align:left}
.pop-item:hover{background:var(--hover-1);color:var(--ink-0)}
.pop-item .msi{font-size:19px;color:var(--ink-2)}
.pop-item .pop-item-label{flex:1}
.pop-item-badge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--neg);font-family:var(--mono);font-size:var(--fs-10);font-weight:700;color:var(--on-accent);display:flex;align-items:center;justify-content:center}

/* Разбивка банка под кошельком (клик по балансу): свободно на счету ЛС / занято ставками.
   Подписей нет сознательно — цвет + подсказка при наведении (data-tip). */
.walletwrap{position:relative}
.wallet-pop{left:0;right:0;width:auto;box-sizing:border-box;padding:8px 14px;top:50px}
/* ⚠️ КОЛОНКОЙ, а не в строку: ширина панельки прибита к ширине кошелька (left/right:0), а две суммы
   рядом в неё не помещаются — строка вылезала за правый край. Числа прижаты вправо, как сам баланс. */
.wp-row{display:flex;flex-direction:column;align-items:flex-end;gap:3px;white-space:nowrap}
.wp-row-one{align-items:center}
.wp-num{font-family:var(--mono);font-weight:700;font-size:var(--fs-14);cursor:default}
.wp-free{color:var(--pos)}
.wp-lock{color:var(--info)}
.wp-none{color:var(--ink-3)}
.bookie-row{display:flex;gap:8px;padding:0 4px}
.bookie{flex:1;height:38px;border-radius:9px;background:var(--surface-2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center}
.bookie:hover{background:var(--hover-2);border-color:var(--line-2)}
.bookie img{width:20px;height:20px;border-radius:5px}

/* ----------------------- Мобильная навигация ---------------------------- */
.mhead{display:none;align-items:center;gap:10px}
.mburger{width:44px;height:44px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--ink-1);border:1px solid var(--line);background:var(--surface-1)}
.mburger{position:relative}
.mburger:hover{background:rgba(255,255,255,.07)}
/* счётчик непрочитанных на бургере: на мобиле аватар с бейджем скрыт — иначе индикатора не видно вовсе */
.mburger-badge{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--neg);color:var(--on-accent);font-family:var(--mono);font-size:var(--fs-10);font-weight:700;display:flex;align-items:center;justify-content:center}
.mburger .msi{font-size:24px}
.tabbar{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:var(--z-tabbar);
  padding:0 6px;padding-bottom:env(safe-area-inset-bottom);
  border-top:1px solid var(--line);background:rgba(10,13,19,.93);
  backdrop-filter:blur(calc(var(--blur) + 10px));-webkit-backdrop-filter:blur(calc(var(--blur) + 10px));
}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 2px 4px;min-height:52px;position:relative;background:none;color:var(--ink-3)}
.tab .msi{font-size:23px;color:var(--ink-2)}
.tab .tab-label{font-size:var(--fs-10);font-weight:600;letter-spacing:.01em}
.tab.active .msi{color:var(--accent-ink)}
.tab.active .tab-label{color:var(--accent-ink)}
.tab-badge{position:absolute;top:4px;left:50%;margin-left:6px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--neg);color:var(--on-accent);font-family:var(--mono);font-size:var(--fs-10);font-weight:700;display:flex;align-items:center;justify-content:center}
.drawer{
  display:none;position:fixed;left:0;top:0;bottom:0;z-index:var(--z-drawer);width:min(84vw,320px);
  padding:18px 14px;padding-top:calc(18px + env(safe-area-inset-top));padding-bottom:calc(18px + env(safe-area-inset-bottom));flex-direction:column;gap:6px;overflow-y:auto;overscroll-behavior:contain;
  background:linear-gradient(180deg,var(--surface-2),transparent 22%),rgba(13,17,24,.96);
  backdrop-filter:blur(calc(var(--blur) + 10px));-webkit-backdrop-filter:blur(calc(var(--blur) + 10px));
  border-right:1px solid var(--line-2);transform:translateX(-104%);transition:transform var(--dur-3) var(--ease);
}
.drawer.open{transform:none}
.drawer-bd{display:none;position:fixed;inset:0;z-index:calc(var(--z-drawer) - 1);background:rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease)}
.drawer-bd.open{opacity:1;pointer-events:auto}
.drawer-item{display:flex;align-items:center;gap:13px;width:100%;padding:13px 14px;border-radius:13px;font-size:var(--fs-15);font-weight:600;text-align:left;color:var(--ink-1);border:1px solid transparent}
.drawer-item .msi{font-size:22px}
.drawer-item.active{color:var(--ink-0);background:linear-gradient(180deg,var(--accent-weak),transparent),var(--surface-1);border-color:var(--accent-line)}
.drawer-sep{height:1px;background:var(--line);margin:8px 4px}

/* =============================== Примитивы ============================== */

/* Кнопки */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:44px;padding:0 18px;border-radius:var(--r-sm);
  font-weight:700;font-size:var(--fs-14);letter-spacing:-.01em;color:var(--on-accent);
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent-strong) 96%,white),var(--accent-strong));
  box-shadow:0 12px 30px -12px var(--accent-glow),inset 0 1px 0 rgba(255,255,255,.4);
}
.btn{transition:filter var(--dur-2) var(--ease),transform var(--dur-1) var(--ease-out),box-shadow var(--dur-2) var(--ease),opacity var(--dur-2) var(--ease)}
.btn:hover{filter:brightness(1.07)}
.btn .msi{font-size:19px}
.btn.block{width:100%;height:48px;font-size:var(--fs-15)}
.btn-sec{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 15px;border-radius:10px;font-weight:600;font-size:var(--fs-13);color:var(--ink-1);background:var(--surface-2);border:1px solid var(--line)}
.btn-sec:hover{background:var(--hover-2);border-color:var(--line-2);color:var(--ink-0)}
.btn-sec .msi{font-size:18px}
.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 12px;border-radius:9px;font-weight:500;font-size:var(--fs-13);color:var(--ink-2)}
.btn-ghost:hover{background:var(--hover-1);color:var(--ink-0)}
.btn:disabled,.btn-sec:disabled,.btn-ghost:disabled{opacity:.5;cursor:default;transform:none;filter:none}

/* Иконочная кнопка / круглая */
.icon-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;color:var(--ink-3)}
.icon-btn:hover{color:var(--ink-1);background:var(--hover-1)}
.icon-btn.active{background:var(--accent-weak);color:var(--accent-ink)}
.icon-btn .msi{font-size:19px}

/* Чипы и сегменты */
.chip{padding:8px 14px;border-radius:9px;font-size:var(--fs-13);font-weight:500;color:var(--ink-2);border:1px solid transparent;white-space:nowrap}
.chip:hover{color:var(--ink-0);background:var(--surface-2)}
.chip.active{font-weight:600;color:var(--ink-0);background:var(--accent-weak);border-color:var(--accent-line)}
.seg-group{display:inline-flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface-1);border:1px solid var(--line)}
.seg{padding:7px 16px;border-radius:8px;font-size:var(--fs-13);font-weight:500;color:var(--ink-2);white-space:nowrap}
.seg:hover{color:var(--ink-0)}
.seg.active{font-weight:600;color:var(--on-accent);background:var(--accent-strong)}

/* Тоггл (вкл=зелёный glow) */
.toggle{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;color:var(--ink-2);background:var(--glass);border:1px solid var(--line)}
.toggle .msi{font-size:20px}
.toggle.on{color:var(--pos);background:color-mix(in srgb,var(--pos) 20%,transparent);border-color:color-mix(in srgb,var(--pos) 55%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--pos) 25%,transparent)}
/* Свитч-переключатель (настройки доставки) */
.switch{position:relative;width:42px;height:24px;border-radius:13px;background:var(--surface-3);border:1px solid var(--line-2);flex-shrink:0}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.45);transition:transform var(--dur-2) var(--ease)}
.switch.on{background:var(--accent);border-color:var(--accent-line)}
.switch.on::after{transform:translateX(18px)}

/* Поля ввода */
.field{display:flex;align-items:center;gap:10px;padding:0 14px;height:46px;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line-2)}
.field:focus-within{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-weak)}
/* фокус показывает ОБЁРТКА (.field:focus-within) — внутренняя рамка на input дублировала индикацию */
.field input:focus-visible{outline:none}
.field.err{border-color:var(--neg);box-shadow:0 0 0 3px color-mix(in srgb,var(--neg) 16%,transparent)}
.field .msi{font-size:19px;color:var(--ink-2)}
.field input{flex:1;font-size:var(--fs-14)}
.field-label{display:block;font-size:var(--fs-12);color:var(--ink-2);margin-bottom:7px}
.field-err{display:flex;align-items:center;gap:5px;font-size:var(--fs-12);color:var(--neg);margin:7px 2px 0;animation:orrise var(--dur-2) var(--ease-out)}   /* появление ошибки — движением (снятие .hidden перезапускает) */
.cfgnum{width:100%;height:40px;padding:0 12px;border-radius:9px;background:var(--surface-2);border:1px solid var(--line);font-family:var(--mono);font-weight:600;font-size:var(--fs-14);text-align:right}
.cfgnum:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-weak);outline:none}

/* Карточки и панели (стекло) */
.card{border-radius:var(--r);background:var(--glass);border:1px solid var(--line);box-shadow:inset 0 1px 0 var(--glass-hi)}
.panel{border-radius:var(--r);background:var(--glass);border:1px solid var(--line)}
.panel-head{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line)}
.panel-head .msi{font-size:22px;color:var(--accent-ink)}
.panel-body{padding:var(--card-pad)}
.panel-empty{display:flex;align-items:center;gap:9px;color:var(--ink-3)}
.panel-empty .msi{font-size:19px;color:var(--ink-3)}
/* «Лучшие игроки» на странице события (показывается только при наличии данных) */
.players-card{margin-top:14px}
.ev-aside .players-card{margin-top:0}   /* в правой колонке отступ даёт flex-gap самой колонки */
.pl-cols{display:grid;grid-template-columns:1fr 1fr}
.pl-cols>.pl-side:first-child{border-right:1px solid var(--line)}
.pl-stack{display:flex;flex-direction:column}
.pl-stack>.pl-side:first-child{border-bottom:1px solid var(--line)}
.pl-side-h{display:flex;align-items:center;gap:7px;padding:9px 14px 3px;font-size:var(--fs-12);font-weight:700;color:var(--ink-1)}
.pl-side-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-pager{display:inline-flex;align-items:center;gap:3px;flex-shrink:0}
.pl-plbl{font-size:var(--fs-10);color:var(--ink-3);min-width:22px;text-align:center}
.pl-pbtn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:1px solid var(--line-2);border-radius:5px;background:var(--surface-1);color:var(--ink-2);cursor:pointer;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}
.pl-pbtn:hover:not(:disabled){background:var(--hover-1);color:var(--ink-1)}
.pl-pbtn:disabled{opacity:.35;cursor:default}
.pl-pbtn .msi{font-size:15px}
.pl-dot{width:5px;height:5px;border-radius:50%;background:var(--sport);flex-shrink:0}
.pl-rows{overflow:hidden}   /* контейнер строк — плавное листание страницы (слайд+высота) */
.pl-row{display:flex;align-items:center;gap:9px;padding:5px 14px;border-top:1px solid var(--line)}
.pl-rank{font-size:var(--fs-10);color:var(--ink-3);width:11px;flex-shrink:0}
.pl-name{flex:1;min-width:0;font-size:var(--fs-13);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-name .pl-top{color:var(--sport)}
.pl-pos{font-size:var(--fs-10);color:var(--ink-3)}
.pl-s1{font-size:var(--fs-13);font-weight:700;color:var(--sport);flex-shrink:0}
.pl-s2{font-size:var(--fs-11);font-weight:600;color:var(--ink-2);flex-shrink:0;min-width:34px;text-align:right}
.pl-u{font-size:var(--fs-10);color:var(--ink-3)}
.pl-cards{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;margin-right:2px}
.pl-yc,.pl-rc{display:inline-flex;align-items:center;justify-content:center;min-width:8px;height:13px;padding:0 2px;border-radius:2px;font-family:var(--mono);font-size:var(--fs-10);font-weight:700;line-height:1}
.pl-yc{background:var(--warn);color:var(--ink-on-color)}
.pl-rc{background:var(--neg);color:var(--on-accent)}
@media (max-width:760px){ .pl-cols{grid-template-columns:1fr} .pl-cols>.pl-side:first-child{border-right:none;border-bottom:1px solid var(--line)} }
/* Составы + травмы (событие): переиспользует .pl-cols/.pl-side/.pl-side-h/.pl-dot */
.lineups-card{margin-top:14px}
.lu-formation{margin-left:auto;font-size:var(--fs-11);color:var(--ink-3);font-weight:600}
.lu-out{padding:2px 14px 9px}
.lu-out-h{font-size:var(--fs-11);color:var(--neg);font-weight:700;margin:5px 0 3px}
.lu-out-row{display:flex;align-items:baseline;gap:8px;justify-content:space-between;padding:2px 0;font-size:var(--fs-12)}
.lu-out-name{color:var(--ink-1)}
.lu-reason{color:var(--ink-3);font-size:var(--fs-11);text-align:right;flex-shrink:0}
.lu-none{padding:3px 14px 9px;font-size:var(--fs-11);color:var(--ink-3)}
.lu-xi{padding:0 14px 9px;border-top:1px solid var(--line)}
.lu-xi>summary{cursor:pointer;font-size:var(--fs-11);color:var(--ink-2);padding:6px 0}
.lu-xi-row{display:flex;align-items:baseline;gap:8px;padding:1px 0;font-size:var(--fs-12);color:var(--ink-1)}
.lu-num{color:var(--ink-3);min-width:1.5em;text-align:right;flex-shrink:0}
/* §236: LLM-скаут события — факты вне котировок (в план и размер ставки НЕ идут, §10.16) */
.llm-card{margin-top:14px}
.llm-stack{padding:4px 0}
.llm-sig{padding:9px 14px;border-bottom:1px solid var(--line)}
.llm-sig:last-child{border-bottom:none}
.llm-sig-h{display:flex;align-items:baseline;gap:8px;margin-bottom:5px}
.llm-kind{font-size:var(--fs-12);font-weight:700;color:var(--ink-1)}
.llm-meta{margin-left:auto;font-size:var(--fs-11);color:var(--ink-3);flex-shrink:0}
.llm-row{display:flex;align-items:baseline;gap:8px;padding:2px 0;font-size:var(--fs-12)}
.llm-k{color:var(--ink-3);font-size:var(--fs-11);min-width:8.5em;flex-shrink:0}
.llm-v{color:var(--ink-1);min-width:0;overflow-wrap:anywhere}
.llm-side{margin:5px 0 2px;padding-left:9px;border-left:2px solid var(--line)}
.llm-side-h{font-size:var(--fs-11);font-weight:700;color:var(--ink-2);margin-bottom:2px}
.llm-foot{display:flex;align-items:center;gap:8px;margin-top:6px;padding-top:6px;border-top:1px solid var(--line)}
.llm-src{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-right:4px;border-radius:var(--r-xs,4px);background:var(--surface-1);border:1px solid var(--line);color:var(--ink-2);font-size:var(--fs-11);text-decoration:none}
.llm-src:hover{color:var(--sport);border-color:var(--sport)}
.llm-model{margin-left:auto;font-size:var(--fs-11);color:var(--ink-3);max-width:11em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0}
@media (max-width:760px){ .llm-row{flex-wrap:wrap} .llm-k{min-width:100%} }
/* Фактические жёлтые карточки (событие, футбол): live-счёт по ходу + итог. Панель «Арбитр и жёлтые карточки» */
.yc-fact{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;margin-bottom:11px}
.yc-fh{display:flex;align-items:center;gap:7px;font-size:var(--fs-12);color:var(--ink-2);margin-bottom:10px}
.yc-sq{width:11px;height:15px;border-radius:2px;background:var(--warn);box-shadow:0 1px 3px color-mix(in srgb,var(--warn) 45%,transparent);flex-shrink:0}
.yc-fh-t{font-weight:700;color:var(--ink-1)}
.yc-live{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-11);color:var(--neg);font-weight:700}
.yc-live.done{color:var(--ink-3);font-weight:600}
.yc-live .msi{font-size:14px}
.yc-teams{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}
.yc-team{display:flex;align-items:center;gap:9px;min-width:0}
.yc-team.away{justify-content:flex-end}
.yc-tn{font-size:var(--fs-12);color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.yc-n{font-size:var(--fs-22);font-weight:800;color:var(--warn);min-width:20px;text-align:center;flex-shrink:0}
.yc-tot{display:flex;flex-direction:column;align-items:center;padding:0 8px;border-left:1px solid var(--line);border-right:1px solid var(--line)}
.yc-tot-n{font-size:var(--fs-16);font-weight:800;color:var(--ink-1)}
.yc-tot-l{font-size:var(--fs-10);color:var(--ink-3)}
/* Чип ЖК в live-полосе hero (по ходу матча) */
.yc-strip{display:inline-flex;align-items:center;gap:4px;color:var(--warn);font-weight:700;font-size:var(--fs-13)}
.yc-strip .msi{font-size:16px;color:var(--warn)}
.kpi{padding:16px;border-radius:var(--r);background:var(--glass);border:1px solid var(--line)}
.kpi-label{font-size:var(--fs-11);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px}
.grid{display:grid;gap:var(--gap)}

/* Значок вида спорта — глиф в кольце цвета вида */
.sico{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;flex-shrink:0;background:color-mix(in srgb,var(--sc,var(--accent)) 15%,transparent);border:1px solid color-mix(in srgb,var(--sc,var(--accent)) 32%,transparent)}
.sico .msi{font-size:18px;color:var(--sc,var(--accent))}
.sico.lg{width:44px;height:44px;border-radius:12px}
.sico.lg .msi{font-size:26px}
/* компактный значок вида в дропдаунах/лейблах (вместо пяти инлайн width/height по файлам) */
.sico.sm{width:24px;height:24px;border-radius:7px}
.sico.sm .msi{font-size:15px}

/* Бейджи / пилюли */
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:var(--fs-11);font-weight:700;line-height:1.4;white-space:nowrap}
.badge .msi{font-size:14px}
.badge.ok{color:var(--pos);background:color-mix(in srgb,var(--pos) 14%,transparent)}
.badge.bad{color:var(--neg);background:color-mix(in srgb,var(--neg) 14%,transparent)}
.badge.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 14%,transparent)}
.badge.soft{color:var(--ink-2);background:var(--surface-3)}
.badge.accent{color:var(--accent-ink);background:var(--accent-weak);border:1px solid var(--accent-line)}
.badge.live{color:var(--neg);background:color-mix(in srgb,var(--neg) 16%,transparent)}
.chip.sm{padding:3px 9px;font-size:var(--fs-11)}
/* ==================== Админ → Управление лигами (авто-гейт скоупов) ==================== */
/* Шапка-hero */
.scope-hero-top{display:flex;align-items:flex-start;gap:13px}
.scope-hero-ic{flex-shrink:0;width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-weak);border:1px solid var(--accent-line);color:var(--accent-ink)}
.scope-hero-ic .msi{font-size:20px}
.scope-hero-desc{margin-top:5px;line-height:1.55;max-width:82ch}
.scope-stats{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 2px}
.scope-stat{display:flex;align-items:center;gap:11px;padding:9px 15px 9px 10px;border-radius:12px;background:var(--surface-1);border:1px solid var(--line)}
.scope-stat-ic{width:30px;height:30px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.scope-stat-ic .msi{font-size:18px}
.scope-stat.ok .scope-stat-ic{background:color-mix(in srgb,var(--pos) 15%,transparent);color:var(--pos)}
.scope-stat.bad .scope-stat-ic{background:color-mix(in srgb,var(--neg) 15%,transparent);color:var(--neg)}
.scope-stat.warn .scope-stat-ic{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
.scope-stat-n{font-size:var(--fs-18);font-weight:800;font-family:var(--mono);line-height:1;color:var(--ink-0)}
.scope-stat-l{font-size:var(--fs-12);color:var(--ink-2);font-weight:500}
.scope-enable{display:flex;align-items:center;gap:11px;margin-top:15px;padding-top:15px;border-top:1px solid var(--line)}
.scope-enable .t-sub b{color:var(--ink-0);font-weight:700}
/* Свёртки (Правила / Типы ставок / Нераспознанные) — заголовок-«шапка» details c шевроном */
.scope-fold-sum{list-style:none;cursor:pointer;display:flex;align-items:center;gap:9px;user-select:none;padding:15px 18px}
.scope-fold-sum::-webkit-details-marker{display:none}
.scope-fold-sum:hover .scope-fold-l{color:var(--ink-0)}
.scope-fold-ic{color:var(--ink-3);display:inline-flex}.scope-fold-ic .msi{font-size:18px}
.scope-fold-l{font-size:var(--fs-14);font-weight:600;flex:1;color:var(--ink-1)}
.scope-fold-chev{color:var(--ink-3);display:inline-flex;transition:transform var(--dur-2) var(--ease)}
.scope-fold-chev .msi{font-size:20px}
details[open]>.scope-fold-sum .scope-fold-chev{transform:rotate(180deg)}
.scope-rules[open]>.scope-fold-sum{border-bottom:1px solid var(--line)}
/* Правила: сетка полей */
.scope-cfg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(165px,100%),1fr));gap:12px;margin:0 0 14px}
.scope-cfg-in{display:flex;flex-direction:column;gap:5px}
.scope-cfg-in>.t-sub{font-size:var(--fs-12)}
.scope-cfg-in input{padding:8px 11px;border-radius:9px;border:1px solid var(--line);background:var(--surface-1);color:var(--ink-1);font-family:var(--mono);font-size:var(--fs-13);width:100%}
.scope-cfg-in input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-weak);outline:none}
/* Фильтры */
.scope-filters{display:flex;flex-direction:column;gap:12px}
.scope-search-wrap{position:relative;display:flex;align-items:center}
.scope-search-wrap>.msi{position:absolute;left:12px;color:var(--ink-3);font-size:19px;pointer-events:none}
.scope-search{padding:9px 12px 9px 38px;border-radius:10px;border:1px solid var(--line);background:var(--surface-1);color:var(--ink-1);font-size:var(--fs-14);width:100%}
.scope-search::placeholder{color:var(--ink-3)}
.scope-fgroup{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}
.scope-fg-l{flex-shrink:0;width:52px;padding-top:7px;font-size:var(--fs-11);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}
.scope-chiprow{display:flex;gap:6px;flex-wrap:wrap;flex:1;min-width:0}
/* Таблица лиг — шапка (panel-head) + таблица во всю ширину карточки с краевым отступом ячеек */
.scope-tbl-head{align-items:baseline}
.scope-count{font-family:var(--mono);font-size:var(--fs-12);font-weight:700;color:var(--ink-3)}
.scope-tbl td{vertical-align:top;padding:12px}
.scope-tbl td.num{white-space:nowrap;text-align:right}
.scope-tbl th{padding:9px 12px}
/* крайние ячейки не касаются границы карточки (18px = отступ шапки) */
.scope-tbl th:first-child,.scope-tbl td:first-child{padding-left:18px}
.scope-tbl th:last-child,.scope-tbl td:last-child{padding-right:18px}
/* Единая ОСНОВНАЯ строка ячейки — общая базовая линия у ВСЕХ колонок; второстепенное под ней */
.scope-r1{display:flex;align-items:center;gap:8px;min-height:26px}
.scope-r1-end{justify-content:flex-end}
.scope-r2{margin-top:4px}
.scope-lg{font-weight:600}
.scope-lg-name{font-size:var(--fs-14);color:var(--ink-0)}
.scope-lgid{font-size:var(--fs-10);letter-spacing:.02em}
.scope-up{font-family:var(--mono);font-weight:700;color:var(--ink-1)}
/* CLV: значение + отклонение от вида второй строкой (узкая колонка) */
.scope-clv-rel{font-size:var(--fs-10);white-space:nowrap}
/* Вердикт надёжности: точка + слово + метрика (вместо второй пилюли) */
.scope-vd-cell{min-width:122px}
.scope-vd{font-size:var(--fs-12);font-weight:600;color:var(--ink-1)}
.scope-vd-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.scope-vd-dot.vd-ok{background:var(--pos);box-shadow:0 0 0 3px color-mix(in srgb,var(--pos) 18%,transparent)}
.scope-vd-dot.vd-bad{background:var(--neg);box-shadow:0 0 0 3px color-mix(in srgb,var(--neg) 18%,transparent)}
.scope-vd-dot.vd-soft{background:var(--ink-3);box-shadow:0 0 0 3px color-mix(in srgb,var(--ink-3) 22%,transparent)}
.scope-vd-num{font-size:var(--fs-11);color:var(--ink-2);white-space:nowrap}
/* Сегментированное ручное управление (Авто / Пустить / Пауза) */
.scope-ov-cell{white-space:nowrap}
.scope-seg{display:inline-flex;padding:3px;gap:2px;border-radius:9px;background:var(--surface-1);border:1px solid var(--line)}
.scope-seg .sseg{padding:5px 8px;border-radius:6px;font-size:var(--fs-11);font-weight:600;color:var(--ink-2);white-space:nowrap;line-height:1.2;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}
.scope-seg .sseg:hover{color:var(--ink-0);background:var(--hover-1)}
.scope-seg .sseg.active[data-sv=auto]{color:var(--on-accent);background:var(--accent-strong)}
.scope-seg .sseg.active[data-sv=allow]{color:var(--ink-on-color);background:var(--pos)}
.scope-seg .sseg.active[data-sv=block]{color:var(--ink-on-color);background:var(--neg)}
/* Нераспознанные подписи */
.scope-unr-note{margin-bottom:6px}
.scope-unr-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--line);font-size:var(--fs-12)}
.scope-unr-row:first-of-type{border-top:none}
.scope-unr-row .sico{width:22px;height:22px;flex:none}
.scope-unr-row .sico .msi{font-size:14px}
.scope-unr-row .mono{flex:1;min-width:0;word-break:break-word}
.scope-unr-row .faint{flex:1;min-width:0;text-align:right}
.scope-unr-more{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.ldot{width:7px;height:7px;border-radius:50%;background:var(--neg);animation:orpulse 1.4s var(--ease) infinite}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}

/* Цветная плашка от одной переменной --tc (иконки уведомлений, теги типов и т.п.) —
   вместо пяти инлайн-реализаций color-mix в разных файлах */
.tint{color:var(--tc,var(--ink-2));background:color-mix(in srgb,var(--tc,var(--ink-2)) 14%,transparent);border:1px solid color-mix(in srgb,var(--tc,var(--ink-2)) 30%,transparent)}

/* Значения edge/надёжность — цветовые утилиты */
.edge{display:inline-flex;padding:2px 8px;border-radius:7px;font-family:var(--mono);font-size:var(--fs-12);font-weight:700}
.edge.pos{color:var(--pos);background:color-mix(in srgb,var(--pos) 16%,transparent)}
.edge.neg{color:var(--neg);background:color-mix(in srgb,var(--neg) 16%,transparent)}
.edge.push{color:var(--push);background:var(--hover-1)}

/* Мини-прогресс/шкала */

/* Таблицы (данные) */
/* Скролл-подсказка: тени у краёв видны, только пока там есть скрытый контент (covers едут с контентом) */
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;
  background:
    linear-gradient(90deg,rgba(15,16,24,.94) 0,transparent 28px) left/28px 100% no-repeat local,
    linear-gradient(270deg,rgba(15,16,24,.94) 0,transparent 28px) right/28px 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.5),transparent) left/14px 100% no-repeat,
    radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.5),transparent) right/14px 100% no-repeat}
.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-13)}
.tbl th{text-align:left;font-weight:600;color:var(--ink-3);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl th[data-bdsort]{cursor:pointer;user-select:none} /* курсор сортировки — только у реально сортируемых */
.tbl th.active{color:var(--accent-ink)}
.tbl td{padding:12px;border-bottom:1px solid var(--line);color:var(--ink-1)}
.tbl tr:hover td{background:rgba(255,255,255,.02)}
.tbl .num{font-family:var(--mono);text-align:right}

/* Тултип-глоссарий */
.term{border-bottom:1px dotted var(--ink-3);cursor:help}
.tip{
  position:fixed;z-index:var(--z-tip);max-width:280px;padding:10px 12px;border-radius:10px;font-size:var(--fs-12);line-height:1.5;color:var(--ink-1);
  background:rgba(12,16,24,.97);border:1px solid var(--line-2);box-shadow:var(--shadow-pop);
  pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity var(--dur-2) var(--ease),transform var(--dur-2) var(--ease-out)
}
.tip.show{opacity:1;transform:none}
.tip b{color:var(--ink-0)}

/* Тост */
.toast{
  position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(8px);z-index:var(--z-toast);
  padding:12px 18px;border-radius:12px;font-size:var(--fs-13);font-weight:600;color:var(--ink-0);
  background:var(--pop-bg);border:1px solid var(--line-2);box-shadow:var(--shadow-pop);
  display:flex;align-items:center;gap:9px;opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease),transform var(--dur-2) var(--ease-out)
}
.toast.show{opacity:1;transform:translateX(-50%);pointer-events:auto;cursor:pointer}
.toast .msi{font-size:19px;color:var(--accent-ink)}
/* Типы тостов различимы ЦВЕТОМ иконки (раньше ошибка выглядела как успех) */
.toast.t-ok .msi{color:var(--pos)}
.toast.t-err .msi{color:var(--neg)}
.toast.t-warn .msi{color:var(--warn)}

/* Модалка + bottom-sheet */
.modal{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(5,7,11,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity var(--dur-3) var(--ease)}   /* --dur-3 — синхронно с выездом .sheet: лист не доезжал уже невидимым */
.modal.show{opacity:1;pointer-events:auto}
.sheet{
  width:100%;max-width:460px;max-height:90vh;overflow-y:auto;border-radius:var(--r-lg);
  background:linear-gradient(180deg,var(--hover-1),rgba(255,255,255,0) 26%),var(--glass-2);
  backdrop-filter:blur(calc(var(--blur) + 6px)) saturate(1.3);-webkit-backdrop-filter:blur(calc(var(--blur) + 6px)) saturate(1.3);
  border:1px solid var(--line-2);box-shadow:var(--shadow-modal),inset 0 1px 0 var(--glass-hi);
  transform:translateY(10px) scale(.99);transition:transform var(--dur-3) var(--ease-out)
}
.modal.show .sheet{transform:none}
.sheet-head{display:flex;align-items:center;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line)}
.sheet-head .t-h3{flex:1}
.sheet-body{padding:20px}
.sheet-foot{padding:16px 20px;border-top:1px solid var(--line);display:flex;gap:10px}
.modal-close{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--ink-2);border:1px solid var(--line)}
.modal-close:hover{background:var(--surface-3);color:var(--ink-0)}

/* Состояния: загрузка / пусто / ошибка */
.state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:64px 24px;text-align:center;color:var(--ink-2)}
.state .msi{font-size:34px;color:var(--ink-3)}
.state .t-h3{color:var(--ink-1)}
.spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.12);border-top-color:var(--accent);animation:orspin .8s linear infinite}

/* --------------------------- Утилиты раскладки -------------------------- */
.row{display:flex;align-items:center;gap:10px}
.row.wrap{flex-wrap:wrap}
.col{display:flex;flex-direction:column}
.between{justify-content:space-between}
.center{align-items:center;justify-content:center}
.gap-sm{gap:var(--sp-1h)}.gap-lg{gap:var(--sp-4h)}
.grow{flex:1}
.hidden{display:none!important}
.clickable{cursor:pointer}
.copy-team{cursor:copy}
.copy-team:hover{color:var(--accent-ink)}
.filters-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px}
.subtabs{display:inline-flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface-1);border:1px solid var(--line);margin-bottom:16px}

/* Дропдаун (меню фильтров) */
.dd{position:relative}
.dd-btn{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);font-size:var(--fs-13);color:var(--ink-1)}
.dd-btn:hover{border-color:var(--line-2)}
.dd-btn .msi{font-size:18px}
.dd-menu{position:absolute;top:46px;left:0;min-width:220px;max-height:340px;overflow-y:auto;overscroll-behavior:contain;padding:6px;border-radius:12px;z-index:var(--z-dd);background:var(--pop-bg);border:1px solid var(--line-2);box-shadow:var(--shadow-pop);animation:orrise var(--dur-2) var(--ease-out)}
/* меню у правого края вьюпорта — JS (ddEdgeFlip) вешает .dd-right, чтобы не обрезалось overflow-x:clip */
.dd-menu.dd-right{left:auto;right:0}
/* Открытый дропдаун не должен обрезаться/перекрываться соседними карточками:
   поднимаем контейнер и его карточку над соседями и снимаем overflow-clip. :has() — совр. браузеры. */
.dd:has(.dd-menu){z-index:calc(var(--z-dd) + 1)}
.cfg-card:has(.dd-menu),.panel:has(.dd-menu){overflow:visible;position:relative;z-index:60}
/* Всплывашка режима автоматизации выходит НИЖЕ карточки — снимаем overflow:hidden авто-карточки и поднимаем над блоком снизу (иначе перекрывается). */
/* поднимаем карточку над соседями/таб-баром ТОЛЬКО когда попап реально показан:
   попап всегда в DOM, и постоянный z-index:60 держал карточку над мобильным таб-баром (z=45),
   перехватывая тапы по вкладкам */
.auto-card:has(.auto-seg-wrap.show-pop),.auto-card:has(.auto-seg-wrap :focus-visible){overflow:visible;position:relative;z-index:60}
@media (hover:hover){ .auto-card:has(.auto-seg-wrap:hover){overflow:visible;position:relative;z-index:60} }
.dd-opt{width:100%;display:flex;align-items:center;gap:10px;padding:8px 9px;border-radius:9px;font-size:var(--fs-13);color:var(--ink-1)}
.dd-opt:hover{background:var(--hover-1)}
.dd-opt.active{color:var(--ink-0);background:var(--accent-weak)}
.dd-opt.soon{color:var(--ink-3);cursor:default}
.dd-opt .msi{font-size:17px}
.dd-opt-l{flex:1;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dd-opt.opt-hidden .dd-opt-l{opacity:.45}
.dd-opt .dd-check{font-size:var(--fs-16);flex-shrink:0}
.dd-eye{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:7px;font-size:var(--fs-17);color:var(--ink-2);cursor:pointer;background:none;border:none;padding:0}
.dd-eye .msi{font-size:17px}
.dd-eye:hover{background:rgba(255,255,255,.09);color:var(--ink-0)}
.dd-eye.off{color:var(--ink-3)}
.pdm-locked{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-12);font-weight:700;color:var(--accent-ink);opacity:1}
.pdm-locked .msi{font-size:14px}

/* ------------------------------- Анимации ------------------------------- */
@keyframes orpulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}
@keyframes orrise{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes orglow{0%,100%{opacity:.45}50%{opacity:.8}}
@keyframes orspin{to{transform:rotate(360deg)}}
@keyframes orwave{0%{transform:translate3d(0,0,0) scale(1.08)}100%{transform:translate3d(-2.5%,-2.2%,0) scale(1.08)}}
@keyframes orshimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes orshake{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(4px)}30%,50%,70%{transform:translateX(-5px)}40%,60%{transform:translateX(5px)}}
.shake{animation:orshake var(--dur-4) var(--ease)}   /* однократный отказ формы (login); reduced-motion гасится общим блоком */
/* prefers-reduced-motion — ЕДИНЫЙ блок в конце файла (раздел «Доступность») */

/* -------------------------------- Адаптив ------------------------------- */
@media (max-width:760px){
  :root{--card-pad:14px;--gap:11px;--r:14px;--r-lg:18px}
  .main{padding:14px 13px calc(74px + env(safe-area-inset-bottom))}
  .rail{display:none}
  .crumb{display:none}
  .usermenu{display:none}
  .mhead{display:flex}
  .tabbar{display:flex}
  .drawer{display:flex}
  .drawer-bd{display:block}
  .topbar{padding:10px 12px;padding-top:calc(10px + env(safe-area-inset-top));gap:8px}
  .wallet{padding:0 11px;gap:7px}
    /* потолок ширины остаётся: overflow-x:clip на body режет без скролла — распёртый топбар прятал бы цифру */
  .wallet input{font-size:var(--fs-16);max-width:min(46vw,180px)}
  .wallet .wallet-trend{display:none}
  .grid-2,.grid-4{grid-template-columns:1fr 1fr!important}
  .modal{align-items:flex-end;padding:0}
  .sheet{max-width:none;border-radius:20px 20px 0 0;max-height:92vh;max-height:92dvh;overscroll-behavior:contain;padding-bottom:calc(8px + env(safe-area-inset-bottom))}
  .toast{left:13px;right:13px;bottom:calc(76px + env(safe-area-inset-bottom));transform:none}
  .toast.show{transform:none}
}

/* ======================= Экран: Прогнозы (список) ====================== */
.ev-list{display:flex;flex-direction:column;gap:var(--gap)}
.ev-card{
  --ev:var(--accent);border-radius:var(--r);
  background:
    radial-gradient(180px 140px at 0% 0%,color-mix(in srgb,var(--ev) 14%,transparent),transparent 72%),
    linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,0) 30%),var(--glass);
  backdrop-filter:blur(var(--blur)) saturate(1.2);-webkit-backdrop-filter:blur(var(--blur)) saturate(1.2);
  border:1px solid var(--line);box-shadow:var(--shadow-card),inset 0 1px 0 var(--glass-hi);
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease);
}
.ev-card:hover{border-color:var(--line-2)}
.ev-head{display:flex;align-items:center;gap:13px;padding:14px 16px;cursor:pointer}
.ev-sico{width:38px;height:38px;flex-shrink:0;border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:color-mix(in srgb,var(--ev) 20%,transparent);border:1px solid color-mix(in srgb,var(--ev) 40%,transparent);box-shadow:0 0 18px -6px var(--ev)}
.ev-sico .msi{font-size:21px;color:var(--ev)}
.ev-title{min-width:0}
.ev-teams{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:var(--fs-16);font-weight:700;letter-spacing:-.01em}
.ev-side{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.ev-team{color:var(--ink-0)}
.ev-team.win{color:var(--gold);font-weight:700}
.ev-team.win:hover{text-decoration:underline;text-underline-offset:2px}
.ev-tp{font-family:var(--mono);font-size:var(--fs-12);font-weight:600;color:var(--ink-3)}
.ev-dash{color:var(--ink-3);font-weight:400}
.ev-live{display:inline-flex;align-items:center;gap:5px}
.ev-live-l{font-family:var(--mono);font-size:var(--fs-10);letter-spacing:.08em;color:var(--neg)}
.ev-meta{display:flex;align-items:center;gap:8px;margin-top:2px;flex-wrap:wrap;font-size:var(--fs-12)}
.ev-exp{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-10);color:var(--accent-ink);background:var(--accent-weak);border:1px solid var(--accent-line);padding:2px 7px;border-radius:6px}
/* матч пропал из свежей линии БК (linePresence): пари недоступно, план не советует */
.ev-gone{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-10);color:var(--warn);background:color-mix(in srgb, var(--warn) 12%, transparent);border:1px solid color-mix(in srgb, var(--warn) 30%, transparent);padding:2px 7px;border-radius:6px}
.ev-gone .msi{font-size:13px}
.ev-score{display:flex;align-items:center;gap:8px;min-width:52px;justify-content:flex-end}
.ev-clock{font-size:var(--fs-12);color:var(--ev)}
.ev-score-n{font-size:var(--fs-18);font-weight:700;letter-spacing:.04em}
.ev-when{display:flex;align-items:center;gap:6px;font-size:var(--fs-12);color:var(--ink-2)}
.ev-when .msi{font-size:15px}
/* Правый кластер шапки (сеты · счёт · дата · итог · свёрнутая сводка) — ОДИН узел. На десктопе gap равен
   зазору шапки ⇒ вид прежний; на мобайле он собирается в колонку у правого края (см. @media ниже). */
.ev-right{display:flex;align-items:center;gap:13px;min-width:0}
.ev-chev{color:var(--ink-3);font-size:var(--fs-20)}

.pred-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 22px;padding:13px 16px;border-top:1px solid var(--line);cursor:pointer}
.pred-row.tier-high{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--gold) 42%,transparent);background:color-mix(in srgb,var(--gold) 6%,transparent)}
.pred-row.tier-low{opacity:.5}
.pred-row:hover{background:rgba(255,255,255,.02)}
.pred-main{flex:1 1 220px;min-width:200px}
.pred-label-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.pred-label{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:var(--fs-10);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-1);background:var(--hover-1);border:1px solid var(--line);padding:3px 8px;border-radius:6px}
.pred-label .msi{font-size:13px;color:var(--accent-ink)}
.pred-allow{font-size:var(--fs-17);cursor:help}
.pred-sel{display:flex;align-items:center;gap:7px;font-size:var(--fs-15);font-weight:700;letter-spacing:-.01em}
.pred-sel .msi{font-size:18px;color:var(--accent-ink)}
.pred-sel-pre{color:var(--ink-1);font-weight:600}
.pred-team{color:var(--gold);cursor:copy;font-weight:700}
.pred-team:hover{text-decoration:underline;text-underline-offset:2px}
.pred-unit{font-size:var(--fs-12);color:var(--ink-2);font-weight:500}
.pred-exp{font-size:var(--fs-11);color:var(--ink-3);font-weight:500}
.pred-metrics{display:flex;align-items:center;gap:16px;flex-wrap:wrap;flex:0 0 auto}
.pm{display:inline-flex;align-items:center;gap:5px;cursor:help}
.pm .msi{font-size:15px;color:var(--ink-3)}
.pm-prob{font-size:var(--fs-16);font-weight:700}
.coefb{display:flex;align-items:center;gap:6px}
.pm-coef{font-size:var(--fs-16);font-weight:700}
.pm-rels{display:flex;align-items:center;gap:13px}
.pm-rels .mono{font-size:var(--fs-15);font-weight:700}
.pm-q{font-size:var(--fs-12);color:var(--ink-2)}
.pred-bet{width:38px;height:38px;flex-shrink:0;border-radius:9px;background:transparent;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent);display:flex;align-items:center;justify-content:center}
.pred-bet:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:var(--accent)}
.pred-bet .msi{font-size:20px}
.ev-race{display:flex;align-items:center;gap:12px;padding:13px 16px;border-top:1px solid var(--line);cursor:pointer}
.ev-race .msi{font-size:18px}

/* Таблица событий */
.tbl-card{border-radius:var(--r);overflow:hidden;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur))}
.tbl-head,.tbl-row{display:grid;grid-template-columns:2.1fr .9fr 1.45fr .72fr .68fr .68fr .8fr 34px;gap:10px;align-items:center}
.tbl-head{padding:11px 16px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:var(--fs-10);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.tbl-row{--ev:var(--accent);padding:13px 16px;border-bottom:1px solid var(--line);cursor:pointer}
.tbl-row:last-child{border-bottom:none}
.tbl-row:hover{background:var(--surface-1)}
.min0{min-width:0}
.tc-name{display:flex;align-items:center;gap:10px;min-width:0}
.tc-ico{font-size:var(--fs-18);color:var(--ev)}
.tc-teams{font-size:var(--fs-13);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tc-teams .ev-tp{font-size:var(--fs-11)}
.tc-league{font-size:var(--fs-11)}
.tc-date{font-size:var(--fs-12);line-height:1.35}
.tc-extras{font-size:var(--fs-11);color:var(--ink-2)}
.tp-x{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tc-coef{display:flex;align-items:center;gap:5px;font-size:var(--fs-13);font-weight:600}
.tbl-row>.mono{font-size:var(--fs-13);font-weight:700}
.tc-chev{text-align:center;color:var(--ink-3)}
@media (max-width:760px){
  .tbl-card{overflow-x:auto}
  .tbl-head,.tbl-row{min-width:720px}
  .pred-metrics{gap:12px}
  /* --- Карточка события на мобайле: шапка — ОДНА строка из четырёх колонок ---
     [вид] [команды столбиком + лига] [счёт/дата колонкой] [свернуть][шеврон]
     ⚠️ flex-wrap:NOWRAP — обязателен. Пока шапка переносилась, счёт/дата/кнопки уезжали на СВОИ строки
     (кнопки — к ЛЕВОМУ краю), и шапка раздувалась до 160 px при 90 px содержимого (жалоба 02.08).
     Ужиматься умеют только команды (min-width:0 + многоточие) — правый кластер узкий по построению. */
  .ev-head{gap:9px;padding:11px 12px;align-items:center;flex-wrap:nowrap}
  .ev-head .grow{display:none}          /* спейсер съедал место — на мобайле растёт заголовок */
  .ev-sico{width:32px;height:32px;border-radius:10px}
  .ev-sico .msi{font-size:19px}
  .ev-title{flex:1 1 auto;min-width:0}
  /* команды столбиком (бейдж «идёт» ушёл в строку меты — см. list.js); шрифт на ступень мельче —
     каждый пиксель правого кластера отнимается у НАЗВАНИЯ, а обрезанное имя команды бесполезно */
  .ev-teams{flex-direction:column;align-items:stretch;gap:2px;font-size:var(--fs-14)}
  .ev-side{max-width:100%;min-width:0;white-space:nowrap;gap:5px}
  .ev-side .ev-team{overflow:hidden;text-overflow:ellipsis;min-width:0}
  .ev-side .ev-tp{flex-shrink:0;font-size:var(--fs-11)}
  .ev-dash{display:none}                /* столбик команд — тире не нужно */
  /* строка меты — ОДНА: длинная лига ужимается многоточием, а статус/экспозиция держат размер
     (иначе «идёт» + «New Zealand NBL» переносились и возвращали шапке лишнюю строку) */
  .ev-meta{gap:6px;margin-top:1px;flex-wrap:nowrap;min-width:0}
  .ev-meta>.faint{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ev-meta>.ev-live,.ev-meta>.ev-exp,.ev-meta>.ev-gone{flex-shrink:0}
  /* правый кластер — узкая колонка у края: счёт над датой над итогом */
  .ev-right{flex:0 1 auto;flex-direction:column;align-items:flex-end;gap:3px;padding-left:6px}
  /* игровое время — НАД счётом, а не слева от него: сбоку оно отъедало у названий ~28 px и липло к проценту */
  .ev-score{flex-shrink:0;min-width:0;flex-direction:column;align-items:center;gap:0;line-height:1.15}
  .ev-score-n{font-size:var(--fs-15);letter-spacing:.02em}
  .ev-clock{font-size:var(--fs-11)}
  .ev-when{flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;max-width:74px;text-align:right;line-height:1.25;font-size:var(--fs-11);gap:1px 6px}
  .ev-when .msi{display:none}           /* иконку часов на узком прячем — экономим место под названия */
  .ev-chev,.ev-collapse{align-self:center;flex-shrink:0}
  .ev-collapse{width:26px;height:26px}
  .ev-collapse .msi{font-size:17px}
  .ev-chev{font-size:var(--fs-17);margin-left:-4px}
  /* Свёрнутая карточка — КОМПАКТНО, 2 строки: команды инлайн сверху; дата/счёт + сводка + кнопки снизу.
     Мелкий шрифт, тесные отступы — чтобы всё влезало и не растягивалось в 4-5 строк (iPhone). */
  .ev-head.collapsed{flex-wrap:wrap;align-items:center;gap:4px 8px;padding:8px 12px}
  .ev-head.collapsed .ev-sico{width:26px;height:26px;border-radius:8px}
  .ev-head.collapsed .ev-sico .msi{font-size:16px}
  /* ⚠️ flex-basis:0 при min-width «вся ширина минус иконка»: с basis:auto строку ломает МАКС-КОНТЕНТ
     команд, и иконка оставалась на 1-й строке ОДНА (лишняя строка). Теперь строка 1 — иконка+команды,
     строка 2 — дата/счёт/сводка/кнопки. */
  .ev-head.collapsed .ev-title{order:1;flex:1 1 0;min-width:calc(100% - 44px)}
  .ev-head.collapsed .ev-teams{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:baseline;gap:2px 5px;font-size:var(--fs-13);overflow:hidden}
  .ev-head.collapsed .ev-side{white-space:nowrap;min-width:0}
  .ev-head.collapsed .ev-side .ev-team{overflow:hidden;text-overflow:ellipsis;max-width:120px}
  .ev-head.collapsed .ev-dash{display:inline}                           /* команды в строку — тире нужно */
  .ev-head.collapsed .ev-tp{font-size:var(--fs-10)}
  .ev-head.collapsed .ev-live{gap:3px}
  .ev-head.collapsed .ev-live-l{font-size:var(--fs-10)}
  /* На свёрнутой прячем лигу/экспозицию (минимум строк), но СТАТУС «идёт» оставляем — после переезда
     бейджа в строку меты это единственный признак live на свёрнутой карточке. */
  .ev-head.collapsed .ev-meta{gap:6px;margin-top:0}
  .ev-head.collapsed .ev-meta>:not(.ev-live){display:none}
  /* 2-я строка: дата/счёт · сводка · кнопки — правый кластер разворачивается обратно в РЯД */
  .ev-head.collapsed .ev-right{order:2;flex-direction:row;align-items:center;gap:11px;flex:0 1 auto}
  .ev-head.collapsed .ev-score,.ev-head.collapsed .ev-when{font-size:var(--fs-12)}
  .ev-head.collapsed .ev-when{max-width:none;flex-wrap:nowrap;white-space:nowrap;line-height:1}
  .ev-head.collapsed .ev-score .ev-score-n{font-size:var(--fs-14)}
  .ev-head.collapsed .ev-score .ev-clock{font-size:var(--fs-11)}
  .ev-head.collapsed .ev-collapsed-sum{gap:12px;padding-left:0}
  .ev-head.collapsed .ev-collapsed-sum .ecs-item{font-size:var(--fs-12);gap:4px}
  .ev-head.collapsed .ev-collapsed-sum .ecs-item .msi{font-size:13px}
  .ev-head.collapsed .ev-collapse{order:3;margin-left:auto;width:26px;height:26px}
  .ev-head.collapsed .ev-collapse .msi{font-size:16px}
  .ev-head.collapsed .ev-chev{order:4;font-size:var(--fs-18);margin-left:0}
}

/* ======================== Экран: Событие =============================== */
.event-page{--sport:var(--accent)}
.hero-card{border-radius:var(--r-lg);padding:0;margin-bottom:18px;overflow:hidden;
  background:
    radial-gradient(700px 280px at 18% -40%,color-mix(in srgb,var(--sport) 28%,transparent),transparent 70%),
    linear-gradient(180deg,var(--hover-1),rgba(255,255,255,0) 30%),var(--glass);
  backdrop-filter:blur(var(--blur)) saturate(1.2);-webkit-backdrop-filter:blur(var(--blur)) saturate(1.2);
  border:1px solid var(--line-2);box-shadow:0 20px 60px -28px rgba(0,0,0,.7),inset 0 1px 0 var(--glass-hi)}
.hero-in{padding:22px 26px}
.hero-sub{border-top:1px solid var(--line);padding:14px 26px;background:rgba(8,11,16,.3)}
.hero-sub .live-strip{margin-top:0;padding-top:0;border-top:none}
.winbar-wrap{margin-top:0}
.winbar-wrap + .live-strip{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.hero-top{display:flex;align-items:center;gap:11px;margin-bottom:18px}
/* узкие экраны: бейдж «ИДЁТ» + кнопка ЛС уходят второй строкой, не сжимая лигу/дату в столбик слов */
@media (max-width:480px){
  .hero-top{flex-wrap:wrap;row-gap:8px}
  .hero-top > div{flex:1 1 60%;min-width:0}
}
.hero-top .ev-sico{width:38px;height:38px;--ev:var(--sport)}
.hero-top .ev-sico .msi{font-size:22px}
.hero-top .t-h3{font-size:var(--fs-13);font-weight:600}
.hero-top .t-sub{font-size:var(--fs-12);color:var(--ink-2)}
.hero-teams{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.hero-team{display:flex;flex-direction:column;gap:5px}
.hero-team.home{align-items:flex-end;text-align:right}
.hero-team.away{align-items:flex-start}
.hero-tname{font-size:var(--fs-24);font-weight:800;letter-spacing:-.02em;color:var(--ink-0);cursor:copy}
.hero-tname.bet{color:var(--sport)}
.hero-tname:hover{text-decoration:underline;text-underline-offset:3px}
.hero-side{display:flex;align-items:center;gap:6px;font-size:var(--fs-11)}
.hero-side .mono{font-size:var(--fs-12);font-weight:600;color:var(--ink-2)}
.hero-score{display:flex;flex-direction:column;align-items:center;gap:6px}
.hero-score-n{font-size:var(--fs-34);font-weight:700;letter-spacing:.06em}
.hero-clock{font-size:var(--fs-12);color:var(--sport)}
.hero-vs{font-size:var(--fs-24);color:var(--ink-3);letter-spacing:.1em}
.winbar-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.winbar-head .t-eyebrow{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2)}
.winbar-head .t-eyebrow .msi{font-size:15px;color:var(--sport)}
.wb-delta{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-11)}
.wb-delta .msi{font-size:17px}
.winbar{display:flex;height:30px;border-radius:9px;overflow:hidden;border:1px solid var(--line)}
.wb-seg{display:flex;align-items:center;min-width:0;font-family:var(--mono);font-size:var(--fs-12);font-weight:700;transition:width var(--dur-5) var(--ease)}
.wb-seg span{padding:0 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* на узких экранах узкий сегмент (13%) обрезал свою подпись до «1…» — компактнее паддинг/шрифт */
@media (max-width:480px){ .wb-seg{font-size:var(--fs-11)} .wb-seg span{padding:0 5px} }
.wb-home{background:linear-gradient(180deg,color-mix(in srgb,var(--sport) 85%,white),var(--sport));color:var(--ink-on-color)}
.wb-draw{background:rgba(255,255,255,.14);justify-content:center;color:var(--ink-1)}
.wb-away{background:linear-gradient(180deg,color-mix(in srgb,var(--accent-2) 70%,white),var(--accent-2));justify-content:flex-end;color:var(--on-accent)}
.winbar-legend{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font-size:var(--fs-11);color:var(--ink-2)}
.live-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-size:var(--fs-13)}
.live-strip .msi{font-size:18px}
.live-strip-l{font-family:var(--mono);font-size:var(--fs-11);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.set-chip{font-family:var(--mono);font-size:var(--fs-12);font-weight:600;padding:3px 9px;border-radius:7px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-1)}
.set-chip.live{border-color:color-mix(in srgb,var(--sport) 50%,transparent);background:color-mix(in srgb,var(--sport) 14%,transparent);color:var(--sport)}
.q-chip{display:inline-flex;flex-direction:column;align-items:center;gap:2px;min-width:42px;padding:5px 8px;border-radius:8px;background:var(--surface-1);border:1px solid var(--line);font-family:var(--mono);font-size:var(--fs-12)}
.q-chip b{font-size:var(--fs-10);color:var(--ink-3);font-weight:600}

.ev-cols{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}
.ev-main{min-width:0;display:flex;flex-direction:column;gap:14px}
.ev-aside{display:flex;flex-direction:column;gap:14px;position:sticky;top:calc(var(--topbar-h) + 12px)}
.sec-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.sec-chev{transition:transform var(--dur-2) var(--ease)}
.sec-chev.open{transform:rotate(180deg)}
.sec-head .t-h3{display:inline-flex;align-items:center;gap:8px}
.sec-head .t-h3 .msi{font-size:20px;color:var(--sport)}
.pcards{display:flex;flex-direction:column;gap:14px}
.pcards[hidden]{display:none}
/* Карточка прогноза = свёрнутая строка с инлайн-метриками ⇄ раскрытие (спек event.tpl) */
.pcard{border-radius:var(--r);background:var(--glass);border:1px solid var(--line);box-shadow:inset 0 1px 0 var(--glass-hi);overflow:hidden}
.pcard.tier-high{border-color:color-mix(in srgb,var(--gold) 40%,transparent);background:color-mix(in srgb,var(--gold) 5%,var(--glass))}
.pcard-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:13px 16px;cursor:pointer}
.pcard-row:hover{background:rgba(255,255,255,.025)}
.pcard-lft{display:flex;align-items:center;gap:11px;flex:1 1 230px;min-width:0}
.pcard-ico{width:34px;height:34px;flex-shrink:0;border-radius:9px;background:var(--hover-1);border:1px solid var(--line);display:flex;align-items:center;justify-content:center}
.pcard-ico .msi{font-size:18px;color:var(--accent-ink)}
.pcard-tt{min-width:0}
.pcard-mkt{display:flex;align-items:center;gap:7px;margin-bottom:2px}
.pcard-mkt-l{font-family:var(--mono);font-size:var(--fs-10);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}
.pcard-lock{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-10);color:var(--ink-3)}
.pcard-lock .msi{font-size:12px}
.pcard-sel2{font-size:var(--fs-15);font-weight:700;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcard-sel2 .pred-unit{font-size:var(--fs-11);color:var(--ink-3);font-weight:500}
.pcard-sel2 .pred-exp{font-size:var(--fs-11);color:var(--accent-ink);font-weight:600}
.pcard-mx{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.px-cell{text-align:right;min-width:48px}
.px-click{cursor:pointer}
.px-click:hover{opacity:.75}
.px-l{font-size:var(--fs-10);color:var(--ink-3);margin-bottom:2px}
.px-v{display:flex;align-items:center;gap:4px;justify-content:flex-end;font-size:var(--fs-15);font-weight:700}
.px-v .msi{font-size:16px}
.px-edge{font-size:var(--fs-13);font-weight:700;padding:1px 6px;border-radius:5px}
.px-pair{display:flex;align-items:center;gap:5px;cursor:help}
.px-pair>.msi{font-size:15px;color:var(--ink-3)}
.px-pair .mono{font-size:var(--fs-14);font-weight:700}
.px-dot{color:var(--ink-3);font-weight:400}
.px-qual{font-size:var(--fs-12);color:var(--ink-2);font-weight:400}
.px-info{width:34px;height:34px;flex-shrink:0;border-radius:9px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);display:flex;align-items:center;justify-content:center;cursor:pointer}
.px-info:hover{background:var(--hover-2);color:var(--ink-0)}
.px-info .msi{font-size:18px}
.px-chev{font-size:var(--fs-22);color:var(--ink-3);transition:transform var(--dur-1) var(--ease)}
.pcard.open .px-chev{transform:rotate(180deg)}
.px-add,.pdm-undo{width:30px;height:30px;flex-shrink:0;border-radius:8px;background:transparent;border:1px solid var(--line);color:var(--ink-3);display:flex;align-items:center;justify-content:center;cursor:pointer}
.px-add:hover,.pdm-undo:hover{background:var(--surface-3);color:var(--ink-1);border-color:var(--line-2)}
.px-add .msi,.pdm-undo .msi{font-size:17px}
.pcard-body{padding:14px 16px;border-top:1px solid var(--line)}
.chips-1x2{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:14px}
.oc-chip{flex:1;min-width:120px;padding:11px 13px;border-radius:11px;border:1px solid var(--line);background:rgba(255,255,255,.02);text-align:left}
.oc-chip.hot{border-color:var(--accent-line);background:var(--accent-weak)}
.oc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}
.oc-l{display:flex;align-items:center;gap:6px;font-size:var(--fs-13);font-weight:700;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.oc-l .msi{font-size:15px;color:var(--accent-ink)}
.oc-c{font-size:var(--fs-14);font-weight:600}
.oc-sub{font-size:var(--fs-11);color:var(--ink-3)}
.oc-p{font-size:var(--fs-13);font-weight:600;color:var(--ink-0)}
.pcard-grid6{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.pg6-l{font-size:var(--fs-10);color:var(--ink-3);margin-bottom:3px}
.pg6-v{display:flex;align-items:center;gap:4px;font-size:var(--fs-16);font-weight:700}
.pg6-n{font-size:var(--fs-10);color:var(--ink-3);margin-top:2px}
.pcard-foot2{display:flex;align-items:center;gap:16px;margin-top:13px;padding-top:13px;border-top:1px solid var(--line);flex-wrap:wrap;font-size:var(--fs-12);color:var(--ink-2)}
.pf2{display:flex;align-items:center;gap:6px;min-width:0}
.pf2>.msi{font-size:16px;color:var(--ink-3)}
.pf2.px-click:hover{color:var(--ink-0)}
.pf2-open{font-size:var(--fs-14);color:var(--ink-3)}
.pf2-v{color:var(--ink-0);font-weight:600}

/* Карточки main-колонки события (Статистика команд / Предыдущие встречи / Мои ставки по командам) */
.ecard{border-radius:var(--r);background:var(--glass);border:1px solid var(--line);overflow:hidden}
.ecard-head{display:flex;align-items:center;gap:9px;padding:13px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ecard-head>.msi{font-size:18px;color:var(--sport)}
.ecard-title{font-size:var(--fs-14);font-weight:700}
.ecard-hint{font-size:var(--fs-11);color:var(--ink-3)}
.ts-grid{display:grid;grid-template-columns:1fr 1fr}
.ts-col{padding:14px 16px}
.ts-col.first{border-right:1px solid var(--line)}
.ts-name{font-size:var(--fs-14);font-weight:700;margin-bottom:10px}
.ts-form{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.ts-form-l{font-size:var(--fs-10);color:var(--ink-3)}
.ts-chips{display:flex;gap:3px}
.fchip{width:18px;height:18px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:var(--fs-10);font-weight:700}
.ts-goals{display:flex;align-items:center;gap:7px;font-size:var(--fs-11);color:var(--ink-2)}
.ts-goals .msi{font-size:14px;color:var(--ink-3)}
.pm-count{font-size:var(--fs-11);color:var(--ink-3)}
.pm-pager{display:flex;align-items:center;gap:4px}
.pm-btn{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--surface-1);color:var(--ink-1);cursor:pointer}
.pm-btn:hover:not(:disabled){background:rgba(255,255,255,.07)}
.pm-btn:disabled{opacity:.4;cursor:default}
.pm-btn .msi{font-size:19px}
.pm-lbl{font-size:var(--fs-12);font-weight:700;min-width:34px;text-align:center}
.pm-grid{display:grid;grid-template-columns:1fr 1fr}
.pm-col{padding:10px 16px}
.pm-col.first{border-right:1px solid var(--line)}
.pm-cname{font-size:var(--fs-12);font-weight:700;color:var(--ink-1);margin-bottom:4px}
.pmrow{display:flex;align-items:center;gap:9px;padding:8px 0;border-top:1px solid var(--line)}
.pm-mid{flex:1;min-width:0}
.pm-opp{font-size:var(--fs-12);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pm-sub{font-size:var(--fs-10);color:var(--ink-3)}
.pm-score{font-size:var(--fs-12);font-weight:700}
.pm-none{padding:10px 0;font-size:var(--fs-12)}
/* «Мои ставки по командам» — прошлые ставки на исход, две колонки со своей пагинацией */
.mbh-chead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}
.mbh-chead .mono{font-size:var(--fs-11);font-weight:700}
.mbh-pager{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}

/* Панели-aside (kv/книги/объём/история) */
.ev-aside .panel-head{padding:12px 15px}
.ev-aside .panel-head .msi{font-size:17px;color:var(--accent-ink)}
.ev-aside .panel-head .t-h3{font-size:var(--fs-13);font-weight:700;letter-spacing:0}
.ev-aside .panel-body{padding:14px 16px}
.kv{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;font-size:var(--fs-13);color:var(--ink-2);border-bottom:1px solid var(--line)}
.kv:last-child{border-bottom:none}
.kv .mono{color:var(--ink-0);font-weight:600}
.kv-click{cursor:pointer;margin:0 -6px;padding-left:6px;padding-right:6px;border-radius:8px}
.kv-click:hover{background:var(--surface-2)}
.kv-coef{display:inline-flex;align-items:center;gap:2px}
.kv-coef .mono{font-size:var(--fs-14)}
.kv-hist{font-size:var(--fs-15);color:var(--ink-3);margin-left:3px}
.bk-table{margin-top:8px;display:flex;flex-direction:column;gap:2px}
.bk-row{display:flex;justify-content:space-between;gap:10px;padding:6px 0;font-size:var(--fs-12);color:var(--ink-1);border-top:1px solid var(--line)}
.vol-block{padding-top:11px;margin-top:11px;border-top:1px solid var(--line)}
.vol-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:var(--fs-12);color:var(--ink-2)}
.vol-head .mono{font-weight:600;color:var(--ink-0)}
.vol-legend{display:flex;justify-content:space-between;gap:8px;margin-top:6px;font-size:var(--fs-10);color:var(--ink-3)}
.vol-none{margin-top:10px;padding:9px 11px;border-radius:9px;background:rgba(255,255,255,.02);border:1px dashed var(--line-2);font-size:var(--fs-11);color:var(--ink-3);display:flex;align-items:center;gap:7px}
.vol-none .msi{font-size:15px}
.dist-bar{display:flex;height:8px;border-radius:5px;overflow:hidden;background:var(--hover-1)}
.dist-bar>i{display:block;height:100%}
.dist-bar>i.acc{background:var(--accent)}
.dist-bar>i.push{background:rgba(255,255,255,.14)}
.dist-bar>i.opp{background:color-mix(in srgb,var(--accent) 40%,var(--accent-2))}
.panel-tag{font-size:var(--fs-10);color:var(--ink-3)}
.mbw-exp{font-size:var(--fs-14);font-weight:700;color:var(--accent-ink)}
.mbw-none{padding:15px;font-size:var(--fs-12);color:var(--ink-3);display:flex;align-items:center;gap:8px}
.mbw-none .msi{font-size:17px}
.mbw-sel{display:inline-flex;align-items:center;gap:6px;color:var(--ink-1);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mbw-sel .msi{font-size:15px;color:var(--accent-ink)}
.h2h-body{padding:7px 9px}
.h2h-row{display:flex;align-items:center;gap:10px;padding:8px 7px;font-size:var(--fs-12)}
.h2h-row>.msi{font-size:16px}
.h2h-s{flex:1;color:var(--ink-1);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.h2h-d{font-size:var(--fs-11);color:var(--ink-3)}
.hh-big{display:flex;flex-direction:column;gap:4px}
.hh-big .mono{font-size:var(--fs-30);font-weight:800;letter-spacing:-.02em}
.mb-row{display:flex;align-items:center;gap:9px;padding:8px 0;font-size:var(--fs-13);border-bottom:1px solid var(--line)}
.mb-row:last-child{border-bottom:none}
.mb-row .mono{white-space:nowrap}
.th-badge{width:20px;height:20px;flex-shrink:0;border-radius:5px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:var(--fs-10);font-weight:700}

/* Грид Ф-1 */
.f1-table{border-radius:var(--r);overflow:hidden;background:var(--glass);border:1px solid var(--line)}
.f1-head,.f1-row{display:grid;grid-template-columns:34px 1.7fr .8fr .8fr .8fr .8fr .7fr .7fr;gap:8px;align-items:center;padding:11px 16px}
.f1-head{font-family:var(--mono);font-size:var(--fs-10);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line)}
.f1-row{border-bottom:1px solid var(--line);font-size:var(--fs-13)}
.f1-row:last-child{border-bottom:none}
.f1-row.fav{background:color-mix(in srgb,var(--sport) 9%,transparent)}
.f1-pos{color:var(--ink-3);font-weight:700}
/* Live-прохождение сессии F1 (OpenF1): статус + погода + порядок/итог */
.f1-live-sec .sec-head{display:flex;align-items:center;gap:8px}
.badge.live{display:inline-flex;align-items:center;gap:6px}
.f1-live-body{padding:10px 2px 2px}
.f1-live-sub{font-size:var(--fs-12);color:var(--ink-2);font-weight:600;margin-bottom:8px}
.f1-weather{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.f1-wchip{font-size:var(--fs-11);color:var(--ink-2);padding:3px 8px;border-radius:7px;background:var(--surface-2);border:1px solid var(--line)}
.f1-live-table{display:flex;flex-direction:column;border-radius:var(--r);overflow:hidden;background:var(--glass);border:1px solid var(--line)}
.f1-live-row{display:flex;align-items:center;gap:10px;padding:7px 14px;border-top:1px solid var(--line)}
.f1-live-row:first-child{border-top:none}
.f1-live-name{flex:1;min-width:0;font-size:var(--fs-13);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f1-live-dnf{font-size:var(--fs-10);color:var(--neg);font-weight:700;flex-shrink:0}
.f1-live-pts{font-size:var(--fs-13);font-weight:700;color:var(--sport);flex-shrink:0}
.f1-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f1-name.fav{color:var(--sport);font-weight:700}
.f1-team{font-weight:400}
.f1-c{font-weight:700;text-align:right}
.race-name{margin-top:4px}
/* F1 — цвет команды, live-разрывы, чемпионат, надёжность, прошлый сезон */
.f1-cdot{width:9px;height:9px;border-radius:3px;background:var(--tc,var(--ink-3));flex-shrink:0;box-shadow:0 0 0 1px color-mix(in srgb,var(--tc,var(--ink-3)) 45%,transparent)}
.f1-row{border-left:3px solid var(--tc,transparent)}
.f1-live-row{border-left:3px solid var(--tc,transparent)}
.f1-live-gap{font-size:var(--fs-12);color:var(--ink-2);flex-shrink:0;min-width:58px;text-align:right}
.f1-after{font-size:var(--fs-11);color:var(--ink-3)}
/* Чемпионат: личный зачёт + Кубок конструкторов */
.f1-champ{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.f1-champ-col{border:1px solid var(--line);border-radius:var(--r);background:var(--glass);overflow:hidden}
.f1-champ-h{display:flex;align-items:center;gap:7px;font-size:var(--fs-12);font-weight:700;color:var(--ink-2);padding:10px 14px;background:var(--surface-2)}
.f1-champ-h .msi{font-size:16px;color:var(--sport)}
.f1-stand-row{display:flex;align-items:center;gap:10px;padding:7px 14px;border-top:1px solid var(--line);border-left:3px solid var(--tc,transparent)}
.f1-stand-name{flex:1;min-width:0;font-size:var(--fs-13);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f1-stand-wins{font-size:var(--fs-11);color:var(--ink-3);display:flex;align-items:center;gap:2px;flex-shrink:0}
.f1-stand-wins .msi{font-size:12px;color:var(--sport)}
.f1-stand-pts{font-size:var(--fs-13);font-weight:700;color:var(--sport);flex-shrink:0;min-width:34px;text-align:right}
/* Надёжность · сходы сезона */
.f1-rel-ov{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.f1-rel-stat{display:flex;flex-direction:column;gap:2px;padding:8px 12px;border-radius:9px;background:var(--surface-2);border:1px solid var(--line);min-width:80px}
.f1-rel-stat .l{font-size:var(--fs-10);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}
.f1-rel-stat .v{font-size:var(--fs-16);font-weight:700}
.f1-rel-stat.neg .v{color:var(--neg)}
.f1-rel-cap{display:flex;align-items:center;font-size:var(--fs-11);color:var(--ink-3);margin-bottom:7px;letter-spacing:.03em}
.f1-rel-list{display:flex;flex-direction:column;gap:6px}
.f1-rel-row{display:flex;align-items:center;gap:10px}
.f1-rel-name{width:120px;flex-shrink:0;font-size:var(--fs-12);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.f1-rel-bar{flex:1;height:8px;border-radius:5px;background:var(--surface-2);overflow:hidden}
.f1-rel-bar>span{display:block;height:100%;border-radius:5px;background:var(--tc,var(--sport))}
.f1-rel-dnf{font-size:var(--fs-12);font-weight:700;flex-shrink:0;min-width:22px;text-align:right}
.f1-rel-fr{font-size:var(--fs-11);color:var(--ink-3);flex-shrink:0;min-width:38px;text-align:right}
/* Прошлый сезон */
.f1-prev-heroes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.f1-prev-hero{padding:12px 14px;border-radius:var(--r);background:color-mix(in srgb,var(--sport) 8%,var(--glass));border:1px solid var(--line)}
.f1-prev-l{font-size:var(--fs-10);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}
.f1-prev-v{display:flex;align-items:center;gap:6px;font-size:var(--fs-16);font-weight:700;min-width:0}
.f1-prev-v .msi{font-size:17px;color:var(--sport);flex-shrink:0}
.f1-prev-sub{font-size:var(--fs-12);margin-top:3px}
@media (max-width:620px){.f1-champ,.f1-prev-heroes{grid-template-columns:1fr}.f1-rel-name{width:92px}}
@media (max-width:920px){
  .ev-cols{grid-template-columns:1fr}
  .ev-aside{position:static}
}
@media (max-width:760px){
  .hero-tname{font-size:var(--fs-18)}
  .hero-score-n{font-size:var(--fs-26)}
  .f1-head,.f1-row{min-width:640px}
  .f1-table{overflow-x:auto}
  .pcard-grid6{grid-template-columns:repeat(3,1fr)}
  .ts-grid,.pm-grid{grid-template-columns:1fr}
  .ts-col.first,.pm-col.first{border-right:none;border-bottom:1px solid var(--line)}
}

/* Сетки */
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}

/* ======================== Экран: Мои ставки =========================== */
.mb-kpis{margin-bottom:18px}
.mb-exp{margin-bottom:18px}
.mb-exp .panel-head{padding:14px 18px}
.mb-exp .panel-head .msi{font-size:18px;color:var(--accent-ink)}
.mb-exp-tbl td:last-child,.mb-exp-tbl th:last-child{text-align:right}
.mb-list{display:flex;flex-direction:column;gap:14px}
.mb-card{--ev:var(--accent);border-radius:var(--r);background:var(--glass);border:1px solid var(--line);box-shadow:inset 0 1px 0 var(--glass-hi);overflow:hidden}
.mb-head{display:flex;align-items:center;gap:12px;padding:14px 16px}
.mb-head .ev-sico{--sc:var(--ev)}
.mb-event{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--fs-15);font-weight:700;letter-spacing:-.01em}
.mb-legs{padding:0 16px}
.mb-leg{display:flex;align-items:center;gap:10px;padding:11px 0;border-top:1px solid var(--line);font-size:var(--fs-14)}
.mb-leg-sel{font-weight:600}
.mb-leg-coef{font-weight:700}
.mb-live{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:var(--fs-12);color:var(--neg)}
.mb-foot{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:13px 16px;border-top:1px solid var(--line);background:rgba(255,255,255,.015)}
.mb-fc{display:flex;flex-direction:column;gap:2px}
.mb-fl{font-size:var(--fs-10);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3)}
.mb-fv{font-size:var(--fs-15);font-weight:700}
.mb-foot .btn-sec{height:34px}

/* Статистика (деньги) */
.hero-v{font-family:var(--mono);font-size:var(--fs-30);font-weight:800;letter-spacing:-.02em;margin:6px 0 3px}
.hero-v.pos{color:var(--pos)} .hero-v.neg{color:var(--neg)}
@media (max-width:760px){
  .mb-foot{gap:12px}
}

/* ============================ Экран: План ============================== */
.horizon{display:inline-flex;align-items:center;gap:9px;padding:8px 12px;border-radius:11px;background:var(--glass);border:1px solid var(--line)}
.horizon .t-sub{font-size:var(--fs-11);color:var(--ink-3)}
.horizon .icon-btn{width:28px;height:28px;border-radius:8px;background:var(--hover-1);border:1px solid var(--line);color:var(--ink-1)}
.horizon .icon-btn:hover{background:rgba(255,255,255,.09);color:var(--ink-0)}
.horizon .icon-btn .msi{font-size:18px}
.horizon-v{font-size:var(--fs-14);font-weight:700;min-width:46px;text-align:center}
.plan-counts{display:flex;align-items:center;gap:16px;padding:9px 16px;border-radius:11px;background:var(--glass);border:1px solid var(--line)}
.pc-l{font-size:var(--fs-10);color:var(--ink-3)}
.pc-v{font-family:var(--mono);font-size:var(--fs-18);font-weight:700;letter-spacing:-.01em}
.pc-v.accent{color:var(--accent-ink)}
.pc-div{width:1px;height:28px;background:var(--line)}
.plan-recs{display:flex;flex-direction:column;gap:10px}
/* предупреждения плана (просадка / лимит риска) — баннер над рекомендациями */
.plan-warns{display:flex;flex-direction:column;gap:8px}
.plan-warn{display:flex;align-items:flex-start;gap:9px;padding:11px 14px;border-radius:var(--r);font-size:var(--fs-13);line-height:1.5;color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,transparent);border:1px solid color-mix(in srgb,var(--warn) 26%,transparent)}
.plan-warn .msi{font-size:17px;flex-shrink:0;margin-top:1px}
.rec-card{--ev:var(--accent);display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:13px;background:var(--glass);border:1px solid var(--line);box-shadow:inset 0 1px 0 var(--glass-hi)}
.rec-card .ev-sico{--sc:var(--ev)}
.rec-card.rec-later{opacity:.55}
/* НЕ СТАВИМ СЕЙЧАС (ждём момента / не хватает денег): карточку видно, но она приглушена — ровно эти
   рекомендации автоматика пропускает (единый вердикт rec.bet, src/planGate.js). */
.rec-card.rec-held{opacity:.62}
.rec-card.rec-held:hover,.rec-card.rec-held:focus-within{opacity:1}
/* «УЖЕ ПОСТАВЛЕНО»: почему карточка исчезла из плана. Единственные две причины — принял сам или синк
   нашёл ставку (src/engine/staking.js → plan.alreadyBet). Свёрнуто по умолчанию — это справка, не список дел. */
.plan-placed{margin-top:16px}
.plan-placed .pab-head{display:flex;align-items:center;gap:9px;padding:12px 14px;cursor:pointer;list-style:none;color:var(--ink-1)}
.plan-placed .pab-head::-webkit-details-marker{display:none}
.plan-placed .pab-head .msi{color:var(--pos)}
.plan-placed .pab-head .t-sub{margin-left:auto}
.plan-placed[open] .pab-head{border-bottom:1px solid var(--line)}
.pab-list{padding:4px 6px 6px}
.pab-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px}
.pab-row.clickable{cursor:pointer}
.pab-row.clickable:hover{background:var(--glass-2)}
.pab-row .pab-ev{color:var(--ink-1)}
.pab-row .pab-fav{font-size:var(--fs-12)}
.pab-row .pab-sum{color:var(--pos);font-weight:700}
.pab-note{display:flex;align-items:flex-start;gap:7px;padding:8px 14px 12px;line-height:1.45}
.pab-note .msi{flex-shrink:0;font-size:16px}
.plan-gate-note{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 13px;border-radius:var(--r);color:var(--ink-2);background:var(--glass);border:1px dashed var(--line)}
.plan-gate-note .pgn-l{color:var(--ink-1);font-weight:600}
.plan-gate-note .pgn-b{display:inline-flex;align-items:center;gap:5px}
.plan-gate-note .pgn-b b{color:var(--ink-0)}
.plan-gate-note .msi{font-size:16px;color:var(--ink-3)}
/* §288 WP5: карточка «Что делать сейчас» — над списком рекомендаций (docs/ls-reactive-v1/06-ANALYZER.md §4) */
.plan-analyzer{margin-bottom:14px}
.anz-notes{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.anz-note{display:flex;align-items:flex-start;gap:9px;padding:9px 13px;border-radius:var(--r);font-size:var(--fs-13);line-height:1.45;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line)}
.anz-note .msi{font-size:16px;flex-shrink:0;margin-top:1px;color:var(--ink-3)}
.anz-note.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,transparent);border-color:color-mix(in srgb,var(--warn) 26%,transparent)}
.anz-note.warn .msi{color:var(--warn)}
.anz-nothing{display:flex;align-items:center;gap:12px;padding:6px 2px;color:var(--ink-2)}
.anz-nothing .msi{font-size:26px;color:var(--pos)}
.anz-rows{display:flex;flex-direction:column;gap:9px}
.anz-row{display:flex;align-items:flex-start;gap:11px;padding:11px 13px;border-radius:12px;background:var(--glass);border:1px solid var(--line)}
.anz-row.clickable{cursor:pointer}
.anz-row.clickable:hover{background:var(--glass-2)}
.anz-kind{flex-shrink:0}
.anz-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.anz-line1{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:var(--fs-13)}
.anz-arm{color:var(--ink-3);font-size:var(--fs-11)}
.anz-mkt{font-weight:600;color:var(--ink-0)}
.anz-ev{font-weight:700}
.anz-stake{color:var(--ink-1);margin-left:auto}
.anz-deadline{display:inline-flex;align-items:center;gap:3px;color:var(--ink-3);font-size:var(--fs-11)}
.anz-deadline .msi{font-size:13px}
.anz-why{font-size:var(--fs-12);line-height:1.4}
.anz-blockers{display:flex;flex-wrap:wrap;gap:6px}
.anz-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:var(--fs-11);color:var(--neg);background:color-mix(in srgb,var(--neg) 12%,transparent)}
.anz-chip .msi{font-size:12px}
.anz-fresh{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-11);color:var(--ink-3)}
.anz-fresh .msi{font-size:13px}
.anz-pair{color:var(--ink-3)}
/* мобайл: правило НИЖЕ media-блока перебивает его (§10.9) — держим правки рядом с этим объявлением */
@media (max-width:760px){
  .anz-row{flex-wrap:wrap}
  .anz-stake{margin-left:0}
}
.rec-body{flex:1;min-width:0}
.rec-teams{font-size:var(--fs-15);font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rec-side{display:inline-flex;align-items:baseline;gap:6px;min-width:0}   /* имя + процент переносятся ВМЕСТЕ */
.rec-team{color:var(--ink-2);font-weight:500}
.rec-team.win{color:var(--ink-0);font-weight:700}
.rec-tp{font-size:var(--fs-12);color:var(--ink-3)}
.rec-tp.win{color:var(--accent-ink)}
.rec-sub{display:flex;align-items:center;gap:8px;margin-top:5px;font-size:var(--fs-13);font-weight:600;color:var(--ink-2);flex-wrap:wrap}
.rec-sub .pred-label{padding:2px 7px}
.rec-why{height:auto;padding:0;background:none;color:var(--ink-3)}
.rec-why:hover{background:none;color:var(--accent-ink)}
.rec-why .msi{font-size:15px}
.sdot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}
/* ── Экспресс: заголовок с общим коэф./шансом + детальные плечи ─────────────── */
.rec-express .rec-main{align-items:flex-start}   /* высокая карточка: иконка+ставка к верху, плечи ниже */
.rec-exp-title{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap;font-size:var(--fs-15);font-weight:700;letter-spacing:-.01em}
.rec-exp-title .ret-n{color:var(--ink-0)}
.rec-exp-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rec-exp-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:7px;background:var(--surface-2);border:1px solid var(--line);font-size:var(--fs-12);font-weight:600;color:var(--ink-2)}
.rec-exp-chip .msi{font-size:13px;color:var(--ink-3)}
.rec-exp-chip b{font-family:var(--mono);font-weight:800;color:var(--ink-0)}
.rec-exp-chip.accent{background:var(--accent-weak);border-color:var(--accent-line)}
.rec-exp-chip.accent .msi,.rec-exp-chip.accent b{color:var(--accent-ink)}
.rec-exp-hint{margin-top:6px;font-size:var(--fs-12);line-height:1.45;color:var(--ink-3)}
.rec-exp-hint .msi{font-size:14px;vertical-align:-2px;margin-right:4px;color:var(--ink-3)}
.rec-exp-hint b{color:var(--ink-1);font-weight:700}
.rec-legs{display:flex;flex-direction:column;gap:6px;margin-top:9px}
.rec-leg{display:flex;align-items:flex-start;gap:9px;padding:8px 10px;border-radius:10px;background:var(--surface-1);border:1px solid var(--line)}
.rl-num{width:18px;height:18px;margin-top:1px;flex-shrink:0;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:var(--fs-11);font-weight:700;color:var(--ink-3);background:var(--surface-2);border:1px solid var(--line)}
.rec-leg .sdot{margin-top:5px}
.rl-body{flex:1;min-width:0}
.rl-match{font-size:var(--fs-13);font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rl-team.win{color:var(--ink-0);font-weight:700}
.rl-vs{color:var(--ink-3);font-weight:400}
.rl-meta{display:flex;align-items:center;gap:4px 12px;flex-wrap:wrap;margin-top:3px;font-size:var(--fs-11);font-weight:600;color:var(--ink-3)}
.rl-meta .rl-pick{display:inline-flex;align-items:center;gap:3px;color:var(--accent-ink)}
.rl-meta .rl-pick .msi{font-size:13px}
.rl-meta .rl-time{display:inline-flex;align-items:center;gap:3px;color:var(--ink-2)}
.rl-meta .rl-time .msi{font-size:12px}
.rl-right{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:0;line-height:1.05}
.rl-coef-l{font-size:var(--fs-10);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.rl-coef{font-size:var(--fs-16);font-weight:800;color:var(--ink-0)}
.rec-metrics{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:9px;font-size:var(--fs-11);font-weight:600;color:var(--ink-3)}
.rm{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-11)}
.rm-l{font-size:var(--fs-11);color:var(--ink-3)}
.rm .mono{font-weight:700}
.rec-mdot{opacity:.35}
/* Действия: вторичный кластер (badge/ЛС/выполнено) + первичный (ставка+приём). На узком расходятся по краям. */
.rec-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.rec-act-sec{display:flex;align-items:center;gap:8px}
.rec-act-pri{display:flex;align-items:center;gap:8px}
.rec-stake{display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding:5px 13px;border-radius:10px;background:var(--accent-weak);border:1px solid var(--accent-line)}
.rec-stake-l{font-size:var(--fs-10);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2)}
.rec-stake-v{font-size:var(--fs-20);font-weight:800;letter-spacing:-.01em;line-height:1.1;color:var(--accent-ink)}
.rec-accept{width:40px;height:40px;flex-shrink:0;border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--on-accent);background:var(--accent)}
.rec-accept:hover{filter:brightness(1.1)}
.rec-accept .msi{font-size:21px}
/* иконка-кнопки вторичного кластера (открыть в ЛС / отметить выполненной) */
.rec-icobtn{width:32px;height:32px;flex-shrink:0;border-radius:9px;display:flex;align-items:center;justify-content:center;color:var(--ink-2);background:var(--glass);border:1px solid var(--line);transition:color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}
.rec-icobtn .msi{font-size:18px}
.rec-done:hover{color:var(--pos);border-color:var(--pos)}
.rec-ls:hover{color:var(--accent-ink);border-color:var(--accent-line)}
.plan-hero{padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--line)}
.plan-hero-v{font-family:var(--mono);font-size:var(--fs-30);font-weight:800;letter-spacing:-.02em;margin:4px 0 3px}
.plan-hero-v.pos{color:var(--pos)} .plan-hero-v.neg{color:var(--neg)}
.plan-hero-day{font-size:var(--fs-11);font-weight:600;color:var(--ink-3);margin-left:6px}
.plan-widgets{display:flex;flex-direction:column}
.pw-row{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line);font-size:var(--fs-13)}
.pw-row:last-child{border-bottom:none}
.pw-l{color:var(--ink-1);font-size:var(--fs-12)}
.pw-v{font-size:var(--fs-14);font-weight:700}
/* Нижние панели плана: компактные шапки + боксированная иконка-акцент */
.plan-lower .panel-head{padding:14px 16px}
.plan-lower .panel-head .t-h3{font-size:var(--fs-13);font-weight:700}
.plan-lower .panel-head .t-sub{font-size:var(--fs-11);color:var(--ink-3)}
.plan-lower .plan-hero .kpi-label{text-transform:none;letter-spacing:0;font-size:var(--fs-11);color:var(--ink-2);margin-bottom:6px}
.panel-ico{width:32px;height:32px;flex-shrink:0;border-radius:9px;background:var(--accent-weak);border:1px solid var(--accent-line);display:flex;align-items:center;justify-content:center}
.panel-ico .msi{font-size:18px;color:var(--accent-ink)}
.pw-v.pos{color:var(--pos)} .pw-v.neg{color:var(--neg)}
.plan-caveat{display:flex;align-items:flex-start;gap:7px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:var(--fs-11);color:var(--ink-3);line-height:1.5}
.plan-caveat .msi{font-size:15px;flex-shrink:0}
/* Бумага по сегментам (§86.3): форвард-срез в ячейках доверия — худшие/лучшие сегменты */
/* ── ЕДИНАЯ СВОДКА ПЛАНА: hero (прирост) + плитки метрик + график «Ожидаемый рост» в одной панели ── */
.plan-summary .panel-body{padding:0}
.plan-hero2{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px 28px;padding:18px 18px 15px;border-bottom:1px solid var(--line)}
.plan-hero2 .kpi-label{text-transform:none;letter-spacing:0;font-size:var(--fs-11);color:var(--ink-2);margin-bottom:5px}
.plan-hero2 .ph2-main{min-width:0}
.plan-hero2 .plan-hero-v{margin:0}
/* ФАКТ ₽/сутки за 3/7/30 суток — строка под геройской цифрой прироста */
.plan-hero2 .ph2-facts{display:flex;align-items:center;flex-wrap:wrap;gap:4px 14px;margin-top:9px}
.plan-hero2 .ph2-facts-l{font-size:var(--fs-10);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.plan-hero2 .ph2-fact{display:flex;align-items:baseline;gap:5px;cursor:help}
.plan-hero2 .ph2-fact-l{font-size:var(--fs-11);color:var(--ink-3)}
.plan-hero2 .ph2-fact-v{font-size:var(--fs-13);font-weight:700;color:var(--ink-1)}
.plan-hero2 .ph2-fact-v.pos{color:var(--pos)} .plan-hero2 .ph2-fact-v.neg{color:var(--neg)}
/* окно набрало слишком мало рассчитанных ставок — цифра есть, но это шум, а не сигнал (подробность в тултипе) */
.plan-hero2 .ph2-fact-v.thin{opacity:.5}
.plan-hero2 .ph2-side{display:flex;flex-direction:column;gap:2px;padding-bottom:6px}
.plan-hero2 .ph2-side .t-sub{font-size:var(--fs-12)}
.plan-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(160px,100%),1fr));gap:10px;padding:16px 18px}
.pstat{padding:11px 13px;border-radius:11px;background:var(--surface-2);border:1px solid var(--line)}
.pstat-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.pstat-ico{width:25px;height:25px;flex-shrink:0;border-radius:7px;background:var(--glass);border:1px solid var(--line);display:flex;align-items:center;justify-content:center}
.pstat-ico .msi{font-size:15px;color:var(--ink-2)}
.pstat-l{font-size:var(--fs-11);color:var(--ink-3);line-height:1.25}
.pstat-v{font-size:var(--fs-16);font-weight:700;color:var(--ink-1)}
.pstat-v.pos{color:var(--pos)} .pstat-v.neg{color:var(--neg)}
.pstat-v .faint{font-size:var(--fs-11);font-weight:500}
.plan-chart-sec{padding:2px 14px 8px;border-top:1px solid var(--line)}
.plan-chart-sec .pcs-head{display:flex;align-items:center;gap:9px;padding:10px 4px 0}
.plan-chart-sec .pcs-ico{display:inline-flex;align-items:center;justify-content:center}
.plan-chart-sec .pcs-ico .msi{font-size:18px;color:var(--accent-ink)}
.plan-chart-sec .pcs-t{font-size:var(--fs-13);font-weight:700;color:var(--ink-1)}
.plan-chart-sec .pcs-sub{font-size:var(--fs-11);color:var(--ink-3)}
.plan-summary .plan-caveat{margin:0;padding:12px 18px 15px;border-top:1px solid var(--line)}
@media (max-width:560px){ .plan-stat-grid{grid-template-columns:1fr 1fr} }
@media (max-width:920px){ .plan-lower{grid-template-columns:1fr!important} }
@media (max-width:760px){
  /* --- Карточка рекомендации на мобайле: плотно, без «воздуха» ---
     ⚠️ Иконка вида — К ВЕРХУ (align-items:flex-start). По центру (десктопное правило) она висела
     напротив середины высокой карточки, оставляя над и под собой пустую полосу в ~40 px. */
  .rec-card{flex-wrap:wrap;padding:11px 12px}
  .rec-card .ev-sico{width:32px;height:32px;border-radius:10px}
  .rec-card .ev-sico .msi{font-size:19px}
  .rec-teams{font-size:var(--fs-14);gap:3px 7px}
  .rec-sub{gap:4px 8px;margin-top:3px;font-size:var(--fs-12)}
  .rec-time{font-size:var(--fs-12)}
  .rec-time .msi{font-size:14px}
  /* пять чисел прогноза — мелко и тесно (на прежнем шрифте они занимали три строки) */
  .rec-metrics{gap:3px;margin-top:6px;font-size:var(--fs-10)}
  .rm{gap:3px}
  .rm,.rm-l{font-size:var(--fs-10)}
  /* действия — отдельной строкой во всю ширину: вторичные кнопки слева, ставка+приём справа (space-between) */
  .rec-actions{width:100%;justify-content:space-between;align-items:center;flex-wrap:wrap;row-gap:8px;margin-top:9px}
  .rec-act-sec{flex-wrap:wrap}
  /* ставка растягивается, «+» рядом — крупная понятная пара «сумма → приём» */
  .rec-act-pri{flex:1 1 auto;justify-content:flex-end}
  /* ⚠️ Размеры кнопок действий НЕ ужимаем: на грубом указателе у них пол 44px (тач-цели, §17 ниже) —
     уменьшение сработало бы только в узком окне десктопа и развело бы два вида одной строки. */
  .rec-stake{flex-direction:row;align-items:baseline;gap:7px;padding:5px 11px}
  .rec-stake-v{font-size:var(--fs-17)}
  /* экспресс: иконка вида + заголовок в строку, ставка уходит вниз с действиями (карточка и так колонка) */
  .rec-express .rec-actions{margin-top:11px;border-top:1px solid var(--line);padding-top:11px}
  .plan-counts{gap:14px}
}

/* ========================= Экран: Настройки =========================== */
#cfgBody{display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:start}
.cfg-main{display:flex;flex-direction:column;gap:16px;min-width:0}
.cfg-aside{position:sticky;top:calc(var(--topbar-h) + 12px)}
.cfg-card{overflow:hidden}
.cfg-head{cursor:pointer}
.cfg-head .ev-sico{width:34px;height:34px}
.cfg-body{padding:4px 18px 16px}
.cfg-seg-group{display:inline-flex;gap:4px;padding:4px;border-radius:10px;background:var(--hover-1);border:1px solid var(--line)}
.cfg-seg{padding:7px 14px;border-radius:8px;font-size:var(--fs-13);font-weight:500;color:var(--ink-2);white-space:nowrap}
.cfg-seg:hover{color:var(--ink-0)}
.cfg-seg.active{font-weight:600;color:var(--on-accent);background:var(--accent-strong)}
/* строка рычага */
.lever-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.lever-row:last-child{border-bottom:none}
.lever-row.overridden{margin-left:-14px;padding-left:13px;border-left:2px solid var(--accent);background:linear-gradient(90deg,var(--accent-weak),transparent 55%)}
.lever-row.locked{opacity:.55}
.lever-info{flex:1;min-width:200px}
.lever-label{font-size:var(--fs-14);font-weight:600}
.lever-desc{font-size:var(--fs-12);color:var(--ink-3);margin-top:2px;line-height:1.4}
.lever-status{display:flex;align-items:center;gap:5px;margin-top:7px;font-size:var(--fs-11);font-weight:600}
.lever-status .msi{font-size:14px}
.lever-status.accent{color:var(--accent-ink)} .lever-status.faint{color:var(--ink-3)}
.lever-reset{font-size:var(--fs-11);color:var(--accent-ink);text-decoration:underline;background:none;border:none;cursor:pointer;margin-left:4px}
.lever-controls{display:flex;align-items:center;gap:10px;flex-shrink:0}
.lever-ctrl{display:flex;align-items:center;gap:11px;width:250px}
.lever-num{width:56px;height:30px}
.lever-unit{font-size:var(--fs-12);font-weight:700;color:var(--ink-3)}
.lever-lock,.lever-off{width:30px;height:30px;flex-shrink:0;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--ink-3);border:1px solid var(--line);background:transparent}
.lever-lock:hover,.lever-off:hover{border-color:var(--line-2);color:var(--ink-1)}
.lever-lock.on{color:var(--warn);background:color-mix(in srgb,var(--warn) 14%,transparent);border-color:color-mix(in srgb,var(--warn) 32%,transparent)}
.lever-lock .msi{font-size:17px}
.lever-lock-ph{width:30px;flex-shrink:0}
/* тумблер «выключить фильтр» (по скоупу) + метка «выключен» */
.lever-off.on{color:var(--neg);background:color-mix(in srgb,var(--neg) 14%,transparent);border-color:color-mix(in srgb,var(--neg) 32%,transparent)}
.lever-off .msi{font-size:19px}
.lever-offtag{display:inline-flex;align-items:center;margin-left:7px;padding:1px 7px;border-radius:6px;font-size:var(--fs-11);font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--neg);background:color-mix(in srgb,var(--neg) 14%,transparent)}
.lever-row.off .lever-ctrl{opacity:.4}
/* 🤖 значок «подобрано автоматикой» рядом с подписью рычага (пропадает при ручной правке) */
.lever-robot{display:inline-flex;align-items:center;vertical-align:middle;margin-left:6px;color:var(--accent-ink,var(--accent))}
.lever-robot .msi{font-size:15px}
/* слайдер */
.slider{-webkit-appearance:auto;appearance:auto;accent-color:var(--accent);flex:1;height:6px;cursor:pointer}
.slider:disabled{opacity:.5;cursor:not-allowed}
/* scope */
.scope-selectors{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.scope-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.scope-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 9px;border-radius:9px;font-size:var(--fs-12);font-weight:500;color:var(--ink-1);border:1px solid var(--line);background:var(--surface-1)}
.scope-chip.active{border-color:var(--accent-line);background:var(--accent-weak)}
.scope-chip-n{font-size:var(--fs-10);font-weight:700;color:var(--accent-ink);background:var(--accent-weak);border-radius:5px;padding:1px 5px}
/* staking */
.stake-v{font-size:var(--fs-24);font-weight:800;letter-spacing:-.02em}
@media (max-width:920px){
  #cfgBody{grid-template-columns:1fr}
  .cfg-aside{position:static}
}
@media (max-width:760px){
  .lever-controls{width:100%}
  .lever-ctrl{width:100%;flex:1}
}

/* ==================== Экраны: Профиль / Уведомления =================== */
.tg-status,.tg-connect{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tg-status>.msi,.tg-connect>.msi{font-size:24px;color:var(--ink-2)}
.tg-status.ok>.msi{color:var(--pos)}
.tg-bot{font-size:var(--fs-24);color:var(--accent-ink)}
.tg-code{margin-top:8px;display:inline-block;padding:6px 12px;border-radius:8px;background:var(--hover-1);border:1px solid var(--line-2);font-size:var(--fs-15);font-weight:700;letter-spacing:.08em}
.switch-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
.switch-row:last-child{border-bottom:none}
.ntf-list{display:flex;flex-direction:column;gap:8px}
/* ⚠️ cursor:default — карточка НЕ кликабельна (текст выделяется мышью); переход только по «Открыть событие →» */
.ntf-item{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:var(--r);background:var(--glass);border:1px solid var(--line);cursor:default;position:relative;user-select:text;-webkit-user-select:text}
.ntf-item.unread{background:linear-gradient(90deg,var(--accent-weak),transparent 40%),var(--glass);border-color:var(--accent-line)}
.ntf-ico{width:38px;height:38px;flex-shrink:0;border-radius:11px;display:flex;align-items:center;justify-content:center}
.ntf-ico .msi{font-size:20px}
.ntf-top{display:flex;align-items:center;gap:8px}
.ntf-title{font-size:var(--fs-14);font-weight:700}
.ntf-time{font-size:var(--fs-11);white-space:nowrap}
/* overflow-wrap: сюда попадает произвольный серверный текст (длинные id/URL без пробелов) */
/* pre-line: суточная сводка приходит СПИСКОМ строк («• …\n• …») — без него он слипся бы в абзац */
.ntf-body{font-size:var(--fs-13);color:var(--ink-2);margin-top:3px;line-height:1.5;overflow-wrap:anywhere;white-space:pre-line}

/* ============================== Модалки ================================ */
.bet-sel{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--r);background:var(--surface-1);border:1px solid var(--line)}
.bet-return{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.bet-return-v{font-size:var(--fs-20);font-weight:800}
.why-block{margin-bottom:16px}
.why-block .t-eyebrow{margin-bottom:6px;display:block}
.line-spark{margin-bottom:16px;border-radius:var(--r);background:var(--surface-1);border:1px solid var(--line);padding:12px}
.line-spark svg{width:100%;height:auto}
.result-opts{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.result-opt{height:46px;justify-content:flex-start}
.result-opt.ok{color:var(--pos)} .result-opt.bad{color:var(--neg)}

/* ======================= Экран: Администрирование ===================== */
#admBody{display:flex;flex-direction:column;gap:16px}
.adm-panel .panel-head .msi{font-size:19px;color:var(--accent-ink)}
.src-grid{grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr))}
.src-card{display:flex;align-items:center;gap:11px;padding:14px;border-radius:var(--r);background:var(--surface-1);border:1px solid var(--line)}
.src-card .badge{width:30px;height:30px;justify-content:center;padding:0;border-radius:9px}
.src-card .badge .msi{font-size:18px}
.adm-actions{display:flex;gap:10px;flex-wrap:wrap}
.adm-run{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;border-radius:10px;background:var(--accent-weak);border:1px solid var(--accent-line);font-size:var(--fs-13);color:var(--accent-ink)}
.msi.spin{animation:orspin 1s linear infinite}
.log-list{display:flex;flex-direction:column}
.log-row{display:flex;align-items:center;gap:11px;padding:11px 16px;border-bottom:1px solid var(--line);font-size:var(--fs-13)}
.log-row:last-child{border-bottom:none}
.log-lvl{min-width:64px;justify-content:center;text-transform:uppercase;font-size:var(--fs-10)}
.log-msg{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.log-time{font-size:var(--fs-11);white-space:nowrap}
@media (max-width:760px){ .log-time{display:none} }   /* .log-cat скрывается ниже, ПОСЛЕ основного правила (иначе display:flex перебивал этот hide) */


/* ======================================================================
   ДОРАБОТКИ ВИДЖЕТОВ (buildout 2026-07): архив-фильтры/бейджи, разбор ставок,
   календарь доходов, приём с суммой, staking-контролы, админ, событие, лента.
   ====================================================================== */
/* Архив: поля диапазона дат в панели фильтров */
.arc-date{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 10px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);font-size:var(--fs-12);color:var(--ink-2)}
.arc-date:hover{border-color:var(--line-2)}
.arc-date input[type=date]{height:26px;background:transparent;border:none;color:var(--ink-0);font-family:var(--mono);font-size:var(--fs-12);padding:0;color-scheme:dark}
/* Диапазон дат внутри выпадающего меню (архив «За 30 дней ▾») */
.dd-sep{height:1px;background:var(--line);margin:6px 4px}
.dd-dates{display:flex;flex-direction:column;gap:6px;padding:4px 2px 2px}
.dd-dates .arc-date{width:100%;height:34px}

/* Таблица прогнозов: сортируемые заголовки столбцов */
.th-sort{display:inline-flex;align-items:center;gap:4px;cursor:pointer;user-select:none}
.th-sort:hover{color:var(--ink-1)}
.th-sort.th-on{color:var(--ink-0)}
.th-sort .th-dir{font-size:var(--fs-14);color:var(--accent-ink)}

.bd-head{margin:20px 0 4px}
.bd-panel{margin-top:14px}
.bd-tbl td,.bd-tbl th{white-space:nowrap}
.bd-wlv{font-family:var(--mono);font-size:var(--fs-11);color:var(--ink-3);margin-left:4px}
.bd-bar{display:block;height:3px;margin-top:4px;border-radius:2px;background:var(--surface-3);overflow:hidden}
.bd-bar i{display:block;height:100%;border-radius:2px}
.bd-thin{opacity:.62}
.bd-thin-tag{margin-left:8px;font-size:var(--fs-10);vertical-align:middle}
.bd-insight{display:flex;gap:8px;align-items:center;margin:10px 0 4px;padding:10px 14px;border-radius:var(--r-sm);background:var(--accent-weak);border:1px solid var(--accent-line);font-size:var(--fs-13);color:var(--ink-1)}
.bd-insight .msi{color:var(--accent-ink);font-size:18px}

/* План: карточка рекомендации → колонка (ряд + раскрывающийся приём) */
.rec-card{flex-direction:column;align-items:stretch;gap:0}
.rec-main{display:flex;align-items:center;gap:14px}
.rec-accept-box{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:11px;padding:11px 12px;
  border-radius:11px;background:var(--accent-weak);border:1px solid var(--accent-line)}
.rec-accept-box[hidden]{display:none}
.rab-l{font-size:var(--fs-12);font-weight:600;color:var(--ink-1)}
.rab-field{display:flex;align-items:center;gap:6px;height:38px;padding:0 11px;border-radius:9px;
  background:rgba(0,0,0,.28);border:1px solid var(--line-2)}
.rab-input{width:92px;height:36px;background:transparent;border:0;color:var(--ink-0);
  font-family:var(--mono);font-size:var(--fs-16);font-weight:700}
.rab-input::-webkit-outer-spin-button,.rab-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.rab-cur{font-size:var(--fs-14);color:var(--ink-3)}
.rab-hint{font-size:var(--fs-11);color:var(--ink-3)}
.rab-ok{height:38px;padding:0 16px}
.rab-cancel{height:38px;padding:0 13px}
/* ⚠️ Мобильные правила .rec-main ЖИВУТ ЗДЕСЬ (а не в блоке @media выше): объявление .rec-main двумя
   строками выше идёт ПОЗЖЕ того блока, а @media специфичности не добавляет — align-items перебивался. */
@media (max-width:760px){ .rec-main{flex-wrap:wrap;align-items:flex-start;gap:11px} }

/* Настройки: индикатор кэпа ставки, авто-режим (status-dot + оговорка), сброс уровня scope */

.auto-card.on{border-color:color-mix(in srgb,var(--pos) 45%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--pos) 30%,transparent),0 0 30px -8px color-mix(in srgb,var(--pos) 40%,transparent)}
/* пока идёт подбор — амбер-пульс (НЕ зелёный); зелёным становится только по завершении (final params) */
/* Пульс «идёт подбор»: внешний bloom СТАТИЧЕН (box-shadow в keyframes = repaint карточки с
   backdrop-filter каждый кадр), дышит только внутреннее кольцо ::after по opacity (композитинг).
   Кольцо — inset-тенями: .cfg-card{overflow:hidden} обрезал бы внешнюю тень псевдоэлемента. */
.auto-card.running{position:relative;border-color:color-mix(in srgb,var(--warn) 50%,transparent)!important;box-shadow:0 0 0 1px color-mix(in srgb,var(--warn) 42%,transparent),0 0 34px -7px color-mix(in srgb,var(--warn) 52%,transparent)!important}
.auto-card.running::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--warn) 55%,transparent),inset 0 0 22px -12px color-mix(in srgb,var(--warn) 50%,transparent);
  animation:orglow 1.8s var(--ease) infinite}
.auto-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--ink-3)}
.auto-dot.on{background:var(--pos);box-shadow:0 0 0 3px color-mix(in srgb,var(--pos) 22%,transparent)}
.auto-card.running .auto-dot.on{background:var(--warn);box-shadow:0 0 0 3px color-mix(in srgb,var(--warn) 22%,transparent)}
/* живой прогресс автоподбора */
.auto-live{display:flex;align-items:center;gap:9px;padding:9px 16px;border-top:1px solid var(--line);font-size:var(--fs-13);color:var(--ink-1)}
.auto-live-dot{width:8px;height:8px;border-radius:50%;background:var(--warn);flex-shrink:0;animation:orpulse 1.4s var(--ease) infinite}
.auto-live-t{font-weight:500}
.auto-live-g{font-weight:800;color:var(--warn)}
.auto-live-ok{color:var(--pos);font-size:var(--fs-17)}

.scope-reset-lvl{font-size:var(--fs-12)}

/* компактная вторичная кнопка (Прогноз/Дообучить в строках/плитках) */
.btn-sec.sm{height:32px;padding:0 11px;font-size:var(--fs-12);border-radius:8px;gap:6px}
.btn-sec.sm .msi{font-size:15px}

/* таблица «Обновление матчей» */
.adm-mtbl td:first-child,.adm-mtbl th:first-child{white-space:nowrap}
.adm-sport-cell{display:inline-flex;align-items:center;gap:11px}
.adm-sport-lbl{font-weight:600}
.link-num{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-weight:700;font-size:var(--fs-13);color:var(--warn);cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.link-num:hover{text-decoration-style:solid}
.adm-mtbl .link-num .msi{font-size:15px}

/* сетка «Качество и дообучение по видам» */
.sq-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:12px}
.sq-card{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-1);padding:13px 14px;display:flex;flex-direction:column;gap:11px}
.sq-head{display:flex;align-items:center;gap:9px}
.sq-name{font-size:var(--fs-14);font-weight:700;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sq-model{padding:2px 8px}
.sq-model .msi{font-size:13px}
.sq-metrics{display:flex;gap:14px}
.sq-m{display:flex;flex-direction:column;gap:3px;min-width:0}
.sq-mk{font-size:var(--fs-10);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.sq-mv{font-family:var(--mono);font-size:var(--fs-15);font-weight:700}
/* Brier-skill рядом с Brier: сам Brier между видами не сравним, skill — сравним (см. admSkillChip) */
.sq-skill{font-family:var(--mono);font-size:var(--fs-10);font-weight:700;margin-left:5px;padding:1px 4px;border-radius:4px;vertical-align:1px}
.sq-skill.pos{color:var(--pos);background:color-mix(in srgb,var(--pos) 14%,transparent)}
.sq-skill.neg{color:var(--neg);background:color-mix(in srgb,var(--neg) 14%,transparent)}
.sq-foot{display:flex;align-items:center;gap:8px;margin-top:auto}
.sq-ver{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-11)}
/* таблица «Версии модели» */
.ver-name{font-size:var(--fs-11);word-break:break-all}
.ver-sports{display:inline-flex;gap:3px}
.ver-sports .sico{width:20px;height:20px}
.ver-sports .sico .msi{font-size:13px}

/* расписание авто-линии */
.sched-flags{flex-wrap:wrap;gap:16px}
.sched-row{display:flex;align-items:center;gap:16px;padding:11px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.sched-row:last-of-type{border-bottom:none}
.sched-sp{display:flex;align-items:center;gap:9px;font-size:var(--fs-14);font-weight:600;flex:1 1 180px;min-width:0}
.sched-gaps{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.field.sched-in{height:38px;padding:0 10px;max-width:88px}
.field.sched-in input{font-family:var(--mono);text-align:center;width:100%}

/* журнал: фильтр уровня + раскрытие строки */
.log-flabel{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-12);color:var(--ink-3);margin-right:2px}
.log-flabel .msi{font-size:16px}
.log-item{border-bottom:1px solid var(--line)}
.log-item:last-child{border-bottom:none}
.log-item .log-row{border-bottom:none}
.log-chev{display:inline-flex;width:18px;flex-shrink:0;color:var(--ink-3)}
.log-chev .msi{font-size:18px}
.log-item.open{background:rgba(255,255,255,.02)}
.log-det{margin:0;padding:10px 16px 14px 45px;font-size:var(--fs-12);line-height:1.55;color:var(--ink-1);white-space:pre-wrap;word-break:break-word;overflow-x:auto}
@media (max-width:760px){ .log-det{padding-left:16px} }
/* «Показаны последние N из M» — обрезка списка названа вслух, а не молча */
.log-more{display:flex;align-items:center;gap:6px;padding:10px 16px;border-top:1px solid var(--line)}
.log-more .msi{font-size:15px;color:var(--ink-3)}

/* --- event.js: раскрытие прогноз-карты + результат/факт + сет-чипы в героe + F1-star --- */
.pcard.done{opacity:.94}
.hero-sets{display:flex;gap:5px;justify-content:center;flex-wrap:wrap;max-width:230px}
.f1-name .f1-star{font-size:var(--fs-15);color:var(--sport);vertical-align:-2px;margin-right:4px}

/* notif.js — группировка по дням + per-row действия */
.ntf-group{margin-bottom:18px}
.ntf-group + .ntf-group{margin-top:4px}
.ntf-day{display:flex;align-items:center;gap:10px;margin:0 2px 10px}
.ntf-day-l{font-size:var(--fs-12);font-weight:700;letter-spacing:.02em;color:var(--ink-2)}
.ntf-day-c{font-size:var(--fs-11)}
.ntf-foot{display:flex;align-items:center;gap:12px;margin-top:7px}
.ntf-open{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-11);font-weight:600;color:var(--accent-ink);cursor:pointer}
.ntf-open:hover{text-decoration:underline}
.ntf-open .msi{font-size:14px}
/* ═══════════════════════════════════════════════════════════════════════
   ЭКРАН-СПЕЦИФИЧНЫЕ СТИЛИ (редизайн 2026, Claude Design)
   Сведены из прежних public/css/r2-*.css в единый файл. Порядок = порядок экранов.
   ═══════════════════════════════════════════════════════════════════════ */

/* ---------------------------- Экран: list ---------------------------- */

/* ---- Заголовок экрана: H1 без подзаголовка, сегмент выровнен по низу ---- */
.lst-head{align-items:flex-end;margin-bottom:18px}
.lst-head .t-h1{margin-bottom:0}
.lst-head .seg-group{gap:3px;padding:3px;border-radius:11px}

/* ---- Сегмент переключения вида (карточки ⇄ таблица) — как в макете ---- */
.view-seg{display:flex;gap:2px;padding:3px;border-radius:10px;background:var(--glass);border:1px solid var(--line)}
.view-seg .icon-btn{width:32px;height:32px}

/* ---- Кнопки тулбара: одна высота 38px как в макете ---- */
.filters-row .dd-btn{height:38px;padding:0 11px 0 12px;background:var(--glass)}
.filters-row .dd-btn .msi:first-child{color:var(--accent-ink)}
.filters-row .dd-btn .msi:last-child{color:var(--ink-3)}
.filters-row .toggle{width:38px;height:38px;border-radius:10px}
.filters-row .toggle .msi{font-size:19px}

/* ---- Кнопка «Топ прогнозов для фрибета» (🎁) + модалка подбора ---- */
.fb-btn{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 30%,var(--line))}
.fb-btn:hover{color:var(--gold);background:color-mix(in srgb,var(--gold) 14%,transparent);border-color:color-mix(in srgb,var(--gold) 50%,transparent)}
.fb-list{display:flex;flex-direction:column;gap:10px}
.fb-card{border:1px solid var(--line);border-left:3px solid var(--ev,var(--accent));border-radius:12px;background:var(--surface-1);padding:12px 14px;cursor:pointer;transition:background var(--dur-2),border-color var(--dur-2)}
.fb-card:hover{background:var(--surface-2);border-color:var(--line-2)}
.fb-row{display:flex;align-items:center;gap:10px}
.fb-teams{font-size:var(--fs-14);font-weight:600;color:var(--ink-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fb-sub{font-size:var(--fs-11);color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fb-coef{font-size:var(--fs-22);font-weight:700;color:var(--gold);flex:none}
.fb-pick{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:var(--fs-13)}
.fb-pick .msi{font-size:17px;color:var(--accent-ink)}
.fb-market{color:var(--ink-3)}
.fb-sel{font-weight:600;color:var(--ink-0)}
.fb-foot{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.fb-win{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-12);color:var(--ink-2)}
.fb-win .msi{font-size:16px;color:var(--gold)}
.fb-win b{color:var(--pos)}
.fb-chip{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-12);font-family:var(--mono);color:var(--ink-2)}
.fb-chip .msi{font-size:15px}
.fb-chip.pos{color:var(--pos)}
.fb-empty{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:32px 12px;color:var(--ink-2)}
.fb-empty .msi{font-size:34px;color:var(--gold)}

/* ---- Группа чипов периода (обёртка + активный сплошной ирис как в макете) ---- */
.chip-group{display:flex;gap:2px;padding:3px;border-radius:10px;background:var(--glass);border:1px solid var(--line)}
.chip-group .chip{padding:7px 13px;border-radius:8px;font-size:var(--fs-12);font-weight:500;color:var(--ink-2)}
.chip-group .chip.active{color:var(--on-accent);background:var(--accent-strong);border-color:transparent}

/* ---- Чипы сетов волейбола в шапке карточки события ---- */
.ev-setchips{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;max-width:210px}

/* ---- Свёртка события (collapse / unfold) ---- */
.ev-collapse{width:28px;height:28px;flex-shrink:0;border-radius:7px;background:transparent;border:none;color:var(--ink-3);display:flex;align-items:center;justify-content:center;cursor:pointer}
.ev-collapse:hover{background:var(--surface-3);color:var(--ink-1)}
.ev-collapse .msi{font-size:18px}
.ev-head.collapsed{cursor:pointer}
.ev-card.ev-collapsed{opacity:.82}
.ev-collapsed-sum{display:flex;align-items:center;gap:13px;padding-left:2px}
.ev-collapsed-sum .ecs-item{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-14);font-weight:600}
.ev-collapsed-sum .ecs-item .msi{font-size:15px;color:var(--ink-3)}

/* ---- Свёрнутый (dismissed) прогноз: приглушённая строка + undo ---- */
.pred-dismiss{width:24px;height:24px;flex-shrink:0;border-radius:6px;background:transparent;border:none;color:var(--ink-3);display:flex;align-items:center;justify-content:center;cursor:pointer;margin-left:auto}
.pred-dismiss:hover{background:var(--surface-3);color:var(--ink-1)}
.pred-dismiss .msi{font-size:16px}
.pred-row-dismissed{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;padding:7px 16px;border-top:1px solid var(--line);cursor:pointer;background:rgba(255,255,255,.012)}
.pred-row-dismissed:hover{background:var(--surface-1)}
.pred-row-dismissed .pdm-left{display:inline-flex;align-items:center;gap:7px;flex:1 1 200px;min-width:0}
.pdm-market{font-family:var(--mono);font-size:var(--fs-10);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line);padding:2px 6px;border-radius:5px;flex-shrink:0;opacity:.7}
.pdm-allow{font-size:var(--fs-15);flex-shrink:0}
.pdm-pay{font-size:var(--fs-15);flex-shrink:0}
.pdm-sel{font-size:var(--fs-13);font-weight:600;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.75}
.pdm-exp{font-size:var(--fs-11);color:var(--ink-3);white-space:nowrap;flex-shrink:0;opacity:.65}
.pred-row-dismissed .pdm-metrics{display:flex;align-items:center;gap:14px;opacity:.6}
.pdm-metrics span{font-size:var(--fs-12);font-weight:700;color:var(--ink-1)}
/* .pdm-undo объединён с .px-add выше (правила были байт-в-байт одинаковыми) */
/* Мобайл: свёрнутый прогноз — строго ОДНА строка (кнопка не переносится, название усекается) */
@media (max-width:760px){
  .pred-row-dismissed{flex-wrap:nowrap;gap:9px;padding:10px 13px}
  .pred-row-dismissed .pdm-left{flex:1 1 auto;min-width:0;gap:6px}
  .pred-row-dismissed .pdm-metrics{gap:11px;flex-shrink:0}
  .pdm-metrics span{font-size:var(--fs-12)}
  .pdm-hist{display:none}
  .pdm-exp{display:none}   /* «ожид. …» на узком наезжала на замок/экспозицию — вторичная метрика, прячем */
  .pdm-undo{border:none;border-radius:7px}
  .pdm-undo .msi{font-size:20px}
  /* Развёрнутый прогноз — метрики уходят на свою строку под названием */
  .pred-row{padding:11px 13px;gap:9px 14px}
  .pred-main{flex:1 1 100%;min-width:0}
  .pred-metrics{flex:1 1 100%;justify-content:flex-start;gap:14px}
}

/* ---- F1: грид-строка с пилюлями позиций ---- */
.ev-grid{display:flex;align-items:center;gap:12px;padding:13px 16px;border-top:1px solid var(--line);cursor:pointer;flex-wrap:wrap}
.ev-grid-l{color:var(--ink-2)}
.pos-pills{display:flex;gap:7px;flex-wrap:wrap}
.pos-pill{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-11);padding:4px 9px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-1)}
.pos-pill .pos-v{font-family:var(--mono);font-weight:600;color:var(--ev)}

/* ---- Плотность строк прогноза (компактнее, как в макете) ---- */
.pred-row{padding:9px 16px;gap:10px 20px}
.pred-label-row{margin-bottom:4px}
.pred-sel{font-size:var(--fs-14)}
.pred-metrics{gap:14px}
/* ⚠️ Мобильная раскладка развёрнутого прогноза ЖИВЁТ ЗДЕСЬ: правила .pred-row/.pred-metrics строками
   выше идут ПОЗЖЕ блока @media (max-width:760px) и при равной специфичности перебивали бы его.
   Строка 1 — вероятность · коэф · выгодность и действия У ПРАВОГО КРАЯ; строка 2 — надёжности.
   Раньше метрики переносились россыпью, и «свернуть» уезжала на ПУСТУЮ третью строку (жалоба 02.08). */
@media (max-width:760px){
  .pred-row{padding:10px 12px;gap:7px 12px}
  .pred-metrics{gap:7px 12px;justify-content:flex-start}
  .pred-metrics>.coefb{margin-right:auto}       /* всё, что после коэффициента, — к правому краю строки */
  .pred-metrics>.pred-dismiss{margin-left:0}    /* иначе ДВА auto-margin делят пустоту пополам и «+» повисает по центру */
  .pred-metrics>.pm-rels{order:2;flex:1 1 100%;gap:14px}
  .pm-prob,.pm-coef{font-size:var(--fs-15)}
  .pm-rels .mono{font-size:var(--fs-14)}
}

/* ---- Статистика: 4 KPI-плитки ---- */
.stat-kpis{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:14px;margin-bottom:16px}
.stat-kpi{padding:15px 16px;border-radius:var(--r);background:var(--glass);border:1px solid var(--line);display:flex;flex-direction:column;cursor:help}
.stat-kpi-ic{font-size:var(--fs-18);color:var(--accent-ink)}
.stat-kpi-v{font-size:var(--fs-22);font-weight:700;margin-top:16px;color:var(--ink-0)}
.stat-kpi-l{font-size:var(--fs-11);color:var(--ink-1);margin-top:4px}
.stat-kpi-s{font-size:var(--fs-10);color:var(--ink-3);margin-top:1px}
@media(max-width:920px){ .stat-kpis{grid-template-columns:1fr 1fr} } /* единый планшетный порог (был одинокий 900) */

/* ---- Статистика: панели графиков + легенды ---- */
.stat-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:0 18px 14px;font-size:var(--fs-11);color:var(--ink-3)}
.stat-legend .sl-item{display:inline-flex;align-items:center;gap:6px}
.stat-legend .sl-dot{width:9px;height:9px;border-radius:50%}
.stat-legend .sl-line{width:14px;height:0;border-top:1.5px dashed var(--push)}

/* ---------------------------- Экран: event ---------------------------- */

/* маркер «выгодный вход» в шапке прогноз-карты */

/* aside-заглушка «Внешних данных нет» */
.ev-noext{border:1px dashed var(--line-2);background:rgba(255,255,255,.02)}
.ev-noext-in{display:flex;align-items:center;gap:12px;padding:16px 15px}
.ev-noext-in>.msi{font-size:22px;color:var(--ink-3);flex-shrink:0}
.ev-noext-t{font-size:var(--fs-13);font-weight:600;color:var(--ink-1)}
.ev-noext-n{font-size:var(--fs-12);color:var(--ink-3);margin-top:2px}

/* блок «Причины отказа» в раскрытой прогноз-карте */
.pcard-reasons{margin-top:12px;padding:11px 13px;border-radius:11px;border:1px solid color-mix(in srgb,var(--neg) 34%,transparent);background:color-mix(in srgb,var(--neg) 9%,transparent)}
.pcard-reasons-h{font-size:var(--fs-11);font-weight:700;color:var(--neg);margin-bottom:5px}
.pcard-reason{display:flex;align-items:center;gap:7px;font-size:var(--fs-12);color:var(--ink-1);margin-top:3px}
.pcard-reason .msi{font-size:14px;color:var(--neg)}

/* сворачиваемая секция «Прогнозы события» */
.sec-toggle{cursor:pointer;user-select:none}
.sec-chev{display:inline-flex;align-items:center}
.sec-head .sec-chev .msi{font-size:20px;color:var(--ink-3)}
.sec-title{font-size:var(--fs-17);font-weight:700;margin:0;letter-spacing:-.01em}

/* F1 — ранг-полоса (раунд/лидер/подсказка) */
.f1-strip{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin:14px 0;padding:13px 16px;border-radius:var(--r);
  background:var(--glass);backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur));border:1px solid var(--line)}
.f1-strip-cell{display:flex;align-items:center;gap:9px}
.f1-strip-l{font-size:var(--fs-10);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.f1-strip-v{font-size:var(--fs-14);font-weight:700}
.f1-strip .f1-star{color:var(--sport)}
.f1-note{display:flex;align-items:center;gap:7px;font-size:var(--fs-12);color:var(--ink-3);max-width:360px}
.f1-note .msi{font-size:16px}

/* ---------------------------- Экран: plan ---------------------------- */

/* Две иконки в карточке рекомендации: вид спорта + тип рынка (по макету). */

/* Кликабельное имя команды — копирование (подчёркивание по ховеру). */
.rec-team.copy-team{cursor:pointer}
.rec-team.copy-team:hover{text-decoration:underline}

/* ↗ — открыть страницу события. */

/* ---------------------------- Экран: mybets ---------------------------- */

/* ── Список: 4 KPI-плитки (крупные mono-значения, sentence-case подписи) ── */
.mb-kpis{gap:12px}
.mb-kpi{padding:14px 16px}
.mb-kpi .kpi-label,.mb-hero-card .kpi-label,.mb-metric-panel .kpi-label{text-transform:none;letter-spacing:0}
.mb-kpi-v{font-family:var(--mono);font-size:var(--fs-24);font-weight:700}
.mb-kpi-u{font-size:var(--fs-14);color:var(--ink-2)}
/* мобайл: сумма не рвётся посреди числа («-171 458 / ₽») — целиком, шрифт компактнее под 2-колоночную сетку */
@media (max-width:760px){ .mb-kpi-v{white-space:nowrap;font-size:var(--fs-20)} }
@media (max-width:480px){ .mb-kpi-v{font-size:var(--fs-18)} }
.mb-kpi-wl{display:flex;align-items:baseline;gap:6px}
.mb-kpi-w{font-size:var(--fs-24);font-weight:700;color:var(--pos)}
.mb-kpi-slash{color:var(--ink-3)}
.mb-kpi-l{font-size:var(--fs-18);font-weight:700;color:var(--neg)}

/* ── Экспозиция: заголовок 14px, значения риска/процента, mono-заголовки колонок ── */
.mb-exp-head .t-h3{font-size:var(--fs-14);font-weight:700}
.mb-exp-risk{font-size:var(--fs-15);font-weight:700;color:var(--ink-1);white-space:nowrap}
.mb-exp-pct{font-size:var(--fs-15);font-weight:700;color:var(--accent-ink);margin-left:2px;white-space:nowrap}
/* суммы не рвём посреди числа («10 000 / ₽»); дата пусть переносится по «·» — узкие экраны */
.mb-exp-tbl td.num{white-space:nowrap}
@media (max-width:760px){
  .mb-exp-head{flex-wrap:wrap;row-gap:2px}
  .mb-exp-tbl td,.mb-exp-tbl th{padding-left:8px;padding-right:8px}
}
.mb-exp-tbl th{font-family:var(--mono);font-size:var(--fs-10);letter-spacing:.05em;text-transform:uppercase;padding:7px 12px}
.mb-exp-pctcell{font-size:var(--fs-18);font-weight:700}

/* ── Статистика: ряд 1 (Доход · Всего пари · ROI) ── */
.mb-hero-card{background:var(--glass);border:1px solid var(--line)}
.mb-hero-card .panel-body{padding:14px 16px}
.mb-tb-line{display:flex;align-items:baseline;gap:8px}
.mb-tb-n{font-size:var(--fs-22);font-weight:700}
.mb-mk-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:11px}
.mb-mk-chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-11);color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);padding:3px 7px;border-radius:7px}
.mb-mk-chip .msi{font-size:14px;color:var(--ink-3)}
.mb-mk-chip .mono{font-weight:600}
.mb-roi-v{font-size:var(--fs-22);font-weight:700}
.mb-roi-v.pos{color:var(--pos)} .mb-roi-v.neg{color:var(--neg)}

/* ── ряд 2: Флэт-доходность · CLV ставок ── */
.mb-two-row{grid-template-columns:1fr 1fr;gap:12px;align-items:start}
.mb-metric-panel{overflow:hidden}
.mb-metric-panel .panel-head{padding:11px 14px}
.mb-metric-panel .panel-head .msi{color:var(--accent-ink);font-size:17px}
.mb-metric-panel .t-h3{font-size:var(--fs-13)}
.mb-metric-panel .panel-body{padding:13px 14px}
.mb-metric-top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.mb-metric-v{font-size:var(--fs-22);font-weight:700}
.mb-metric-v.pos{color:var(--pos)} .mb-metric-v.neg{color:var(--neg)}
.mb-metric-note{font-size:var(--fs-10);color:var(--ink-3);margin-top:10px;line-height:1.5}
.mb-spark{display:flex;align-items:flex-end;height:64px;width:116px}
.mb-clv-dist{display:flex;align-items:flex-end;height:56px;width:116px}

/* ── Производительность по дням ── */
.mb-perf-panel{overflow:hidden}
.mb-perf-panel>.panel-head{flex-wrap:wrap}
.mb-perf-panel .panel-head .msi{color:var(--accent-ink)}
.mb-perf-grid{display:grid;grid-template-columns:1fr 200px;align-items:stretch;border-bottom:1px solid var(--line)}
.mb-perf-chart{padding:10px 12px;min-width:0}
.mb-perf-side{border-left:1px solid var(--line);padding:14px 15px;display:flex;flex-direction:column;gap:11px;justify-content:center}
.mb-perf-side .kpi-label{text-transform:uppercase;letter-spacing:.05em}
.mb-wl-row{display:flex;align-items:center;gap:9px}
.mb-wl-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.mb-wl-l{flex:1;font-size:var(--fs-12);color:var(--ink-2)}
.mb-wl-v{font-size:var(--fs-14);font-weight:700}
.mb-wl-ang{font-size:var(--fs-11);font-weight:600;width:44px;text-align:right}
.mb-bank-metrics{display:flex;justify-content:space-between;padding:0 16px 14px}
.mb-bm-v{font-size:var(--fs-14);font-weight:700}
.mb-bm-v.neg{color:var(--neg)}

/* ── фильтр видов спорта в разборе (ряд chip-кнопок вместо dropdown) ── */

@media (max-width:760px){
  .mb-two-row{grid-template-columns:1fr}
  .mb-perf-grid{grid-template-columns:1fr}
  .mb-perf-side{border-left:none;border-top:1px solid var(--line)}
}

/* ---------------------------- Экран: settings ---------------------------- */

/* --- Область применения: кнопка «Исключить» + красный баннер --- */
.cfg-exclude{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 13px;border-radius:10px;
  font-size:var(--fs-13);font-weight:600;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-1);cursor:pointer}
.cfg-exclude .msi{font-size:17px}
.cfg-exclude:hover{border-color:var(--line-2)}
.cfg-exclude.on{color:var(--neg);border-color:color-mix(in srgb,var(--neg) 40%,transparent);
  background:color-mix(in srgb,var(--neg) 14%,transparent)}
.cfg-exclude-banner{margin-top:12px;display:flex;align-items:center;gap:9px;padding:11px 13px;border-radius:11px;
  background:color-mix(in srgb,var(--neg) 11%,transparent);border:1px solid color-mix(in srgb,var(--neg) 28%,transparent)}
.cfg-exclude-banner .msi{font-size:18px;color:var(--neg);flex-shrink:0}
.cfg-exclude-banner span{font-size:var(--fs-12);color:var(--ink-1);line-height:1.45}

/* --- Автоматизация: сегмент режимов с иконками + всплывающее описание --- */
.auto-seg-wrap{position:relative;flex-shrink:0;display:flex;align-items:center;gap:6px}
.cfg-seg.auto-mode{display:inline-flex;align-items:center;gap:6px}
.cfg-seg.auto-mode .msi{font-size:16px}
.auto-popup{position:absolute;top:calc(100% + 11px);left:0;right:0;min-width:240px;padding:11px 13px;border-radius:12px;
  background:rgba(18,24,34,.98);border:1px solid var(--line-2);box-shadow:0 22px 50px -16px rgba(0,0,0,.8);z-index:24;
  opacity:0;visibility:hidden;transform:translateY(-4px);pointer-events:none;transition:opacity var(--dur-1) var(--ease),transform var(--dur-1) var(--ease)}
/* desktop: описание по наведению; на таче ховера нет → .show-pop (тап по ⓘ ИЛИ удержание режима, core.js peek);
   с клавиатуры — по фокусу внутри группы (иначе описание режима недостижимо без мыши) */
@media (hover:hover){ .auto-seg-wrap:hover .auto-popup{opacity:1;visibility:visible;transform:none} }
.auto-seg-wrap.show-pop .auto-popup,
.auto-seg-wrap:has(:focus-visible) .auto-popup{opacity:1;visibility:visible;transform:none}
.auto-popup-desc{font-size:var(--fs-12);color:var(--ink-1);line-height:1.5}
.auto-popup-warn{margin-top:7px;display:flex;align-items:flex-start;gap:6px;font-size:var(--fs-11);color:var(--warn);line-height:1.45}
.auto-popup-warn .msi{font-size:13px;flex-shrink:0}
.auto-popup-arrow{position:absolute;bottom:100%;margin-bottom:-6px;transform:translateX(-50%) rotate(45deg);
  width:11px;height:11px;background:rgba(18,24,34,.98);border-left:1px solid var(--line-2);border-top:1px solid var(--line-2)}
/* ОКНО ДНЕЙ среднесуточного дохода (в карточке «Автоматизация») */
.auto-win-body{border-top:1px solid var(--line);padding-top:12px}
.auto-win-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.auto-win-l{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-13);font-weight:500;color:var(--ink-1)}
.auto-win-l .msi{font-size:17px;color:var(--ink-2)}
.auto-win-seg{flex-wrap:wrap}
.cfg-seg.auto-win{padding:6px 12px;font-size:var(--fs-12)}
.auto-win-hint{margin-top:9px;display:flex;align-items:flex-start;gap:6px;font-size:var(--fs-11);color:var(--ink-2);line-height:1.45}
.auto-win-hint .msi{font-size:14px;flex-shrink:0}
.auto-win-hint b{color:var(--ink-1);font-weight:600}

/* --- Прогноз стратегии: строка с подписью-подсказкой --- */
.pw-txt{display:flex;flex-direction:column;min-width:0}
.pw-hint{font-size:var(--fs-10);color:var(--ink-3);line-height:1.3}

/* --- Бейдж scope (прямоугольный чип: цветная точка вида + подпись) --- */
.scope-badge{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line);font-size:var(--fs-12);font-weight:600;color:var(--ink-1);white-space:nowrap}
.scope-badge .sdot{width:7px;height:7px;margin-right:1px}

/* --- Кнопки шапки «Задать/Сбросить рекомендуемые» --- */
.cfg-head-acts{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.cfg-rec-btn,.cfg-reset-btn{height:38px;padding:0 14px;border-radius:10px;font-size:var(--fs-13);font-weight:600;display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.cfg-rec-btn .msi,.cfg-reset-btn .msi{font-size:18px}
.cfg-rec-btn{background:var(--accent-weak);border:1px solid var(--accent-line);color:var(--accent-ink)}
.cfg-rec-btn:hover{background:color-mix(in srgb,var(--accent) 24%,transparent)}
.cfg-reset-btn{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-1)}
.cfg-reset-btn:hover{background:var(--hover-2);border-color:var(--line-2)}
/* --- Сохранение/восстановление настроек («Сохранить»/«Загрузить») --- */
.cfg-snap-acts{display:inline-flex;align-items:center;gap:9px;flex-wrap:wrap}
.cfg-reset-btn:disabled{opacity:.45;cursor:not-allowed}
.cfg-reset-btn:disabled:hover{background:var(--surface-2);border-color:var(--line)}
.cfg-snap-when{margin-left:7px;font-size:var(--fs-11);font-weight:500;opacity:.6}

/* --- Прогноз стратегии: боксированная иконка + заголовок/подпись, sentence-case метка --- */
.strat-title{font-size:var(--fs-13);font-weight:700}
.strat-sub{font-size:var(--fs-11);color:var(--ink-3)}
.strat-growth-l{font-size:var(--fs-11);color:var(--ink-2);margin-bottom:6px}

/* --- Подпись-приоритет в шапке scope-карточки чуть мельче --- */
.cfg-head .t-sub{font-size:var(--fs-11)}

/* --- Автоматизация: компактная шапка (12px 16px, заголовок 14px) --- */
.auto-card .cfg-head{padding:12px 16px}
.auto-card .cfg-head .t-h3{font-size:var(--fs-14)}
.auto-card .cfg-head .ev-sico{--ev:var(--accent);--sc:var(--accent)}

/* ---------------------------- Экран: profile ---------------------------- */

/* Ширина контента экрана = как в макете (1180px, по центру) */
.prof-page{ max-width:1180px; margin:0 auto; }
.prof-head{ margin-bottom:18px; }

/* Hero-карточка: аватар + имя */
.prof-hero{
  display:flex; align-items:center; gap:18px;
  padding:20px 22px; border-radius:var(--r);
  background:var(--glass);
  backdrop-filter:blur(var(--blur)) saturate(1.2);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(1.2);
  border:1px solid var(--line);
  box-shadow:inset 0 1px 0 var(--glass-hi);
  margin-bottom:16px; flex-wrap:wrap;
}
.prof-avatar{
  width:64px; height:64px; flex-shrink:0; border-radius:18px;
  background:linear-gradient(145deg, var(--accent), color-mix(in srgb, var(--accent) 45%, var(--accent-2)));
  display:flex; align-items:center; justify-content:center;
  font-size:var(--fs-26); font-weight:800; color:var(--on-accent);
  box-shadow:0 10px 26px -10px var(--accent-glow);
}
.prof-hero-meta{ min-width:0; }
.prof-name{ font-size:var(--fs-20); font-weight:800; letter-spacing:-.01em; }

/* Матрица типов алертов: шапка с колонками каналов + строки */
.prof-mx-head{
  display:flex; align-items:center; gap:14px;
  padding:14px 18px; border-bottom:1px solid var(--line);
}
.prof-mx-head > .msi{ font-size:19px; color:var(--accent-ink); }
.prof-mx-head .t-h3{ font-size:var(--fs-15); font-weight:700; letter-spacing:0; }
.prof-rows{ padding:0; }
.prof-row{
  display:flex; align-items:center; gap:14px;
  padding:14px 18px; border-top:1px solid var(--line);
}
.prof-row:first-child{ border-top:none; }
.prof-row-ic{
  width:38px; height:38px; flex-shrink:0; border-radius:11px;
  background:var(--surface-2); border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
}
.prof-row-ic .msi{ font-size:19px; color:var(--accent-ink); }
/* строка типа: подпись 14/600, описание 11/ink-3 (как в макете) */
.prof-row .lever-label{ font-size:var(--fs-14); font-weight:600; }
.prof-row .t-sub{ font-size:var(--fs-11); color:var(--ink-3); margin-top:2px; }

/* колонки каналов (74px, выровнены с шапкой) */
.prof-col{ width:74px; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.prof-colhead{ gap:5px; font-size:var(--fs-11); font-weight:600; color:var(--ink-2); }
.prof-colhead .prof-chic{ font-size:var(--fs-15); color:var(--ink-3); }
/* узкие экраны: «На сайте» не влезала в колонку 74px с иконкой → прячем иконку, текст одной строкой */
@media (max-width:480px){ .prof-colhead .prof-chic{display:none} .prof-colhead{white-space:nowrap} }

/* неактивный Telegram-канал (нет привязки) */
.prof-col-off{ opacity:.42; }
.prof-col-off .switch{ pointer-events:none; }

/* иконка Telegram в шапке (тот же глиф, что в дизайне) */
.prof-tgico{
  width:14px; height:14px; flex-shrink:0;
  background-image:url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20240%20240%22%3E%3Ccircle%20cx=%22120%22%20cy=%22120%22%20r=%22120%22%20fill=%22%232AABEE%22/%3E%3Cpath%20fill=%22%23fff%22%20d=%22M53.5%20118.5%20169.5%2073.8c5.4-1.9%2010.1%201.3%208.3%209.5l-19.7%2093.2c-1.5%207.4-5.9%209.2-12%205.7l-33-24.3-15.9%2015.3c-1.8%201.8-3.3%203.3-6.7%203.3l2.4-33.9%2061.7-55.7c2.7-2.4-.6-3.7-4.1-1.4l-76.2%2048-32.8-10.2c-7.1-2.2-7.3-7.1%201.5-10.5z%22/%3E%3C/svg%3E');
  background-size:contain; background-repeat:no-repeat; background-position:center;
}

/* Карточка «Доставка в Telegram»: шапка как в макете (иконка 19px, заголовок 15/700) */
.prof-page .panel-head{ padding:14px 18px; }
.prof-page .panel-head .msi{ font-size:19px; }
.prof-page .panel-head .t-h3{ font-size:var(--fs-15); font-weight:700; letter-spacing:0; }
.prof-page .panel + .panel{ margin-top:16px; }

@media (max-width:560px){
  .prof-col{ width:56px; }
  .prof-row .t-sub{ display:none; }
}

/* ---------------------------- Экран: notif ---------------------------- */

/* Ширина страницы уведомлений по макету */
.ntf-page{max-width:860px}

/* Шапка/тулбар: точные отступы макета */
.ntf-page .page-head{margin-bottom:18px}
.ntf-page .page-head .t-h1{margin-bottom:0}
.ntf-page .page-head .btn-sec{height:38px;padding:0 14px;gap:7px}
.ntf-page .page-head .gap-sm{gap:9px}
.ntf-page .filters-row{gap:7px;margin-bottom:18px}
.ntf-page .ntf-item{gap:13px}

/* День = ОДНА стеклянная карточка; строки внутри разделены верхней гранью
   (а не отдельные карточки с отступами). Переопределяет .ntf-list из styles.css. */
.ntf-list.ntf-card{
  gap:0;
  background:var(--glass);
  backdrop-filter:blur(var(--blur)) saturate(1.2);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(1.2);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:inset 0 1px 0 var(--glass-hi);
  overflow:hidden;
}
.ntf-list.ntf-card .ntf-item{
  background:transparent;
  border:0;
  border-top:1px solid var(--line);
  border-radius:0;
  transition:background var(--dur-1) var(--ease);
}
.ntf-list.ntf-card .ntf-item:first-child{border-top:0}
/* непрочитанная строка внутри общей карточки — лёгкая акцентная подсветка без своей рамки */
.ntf-list.ntf-card .ntf-item.unread{
  background:color-mix(in srgb,var(--accent) 5%,transparent);
}
/* ⚠️ HOVER-СОСТОЯНИЙ У СТРОКИ НЕТ (жалоба пользователя 2026-08-08: «из-за моргания не могу
   скопировать текст»). Пока карточка была кликабельной, она подсвечивалась под курсором и меняла
   прозрачность — при протяжке выделения фон и яркость прыгали под мышью, и это читалось как
   «уведомление моргнуло и пометилось прочитанным». Карточка — ТЕКСТ: её вид не должен зависеть ни
   от курсора, ни от нажатия. Не возвращать :hover/:active на .ntf-item.
   Прочитанные строки НЕ приглушаем: заход на экран помечает всё прочитанным (§199.2), так что
   приглушение накрыло бы ленту целиком и мешало читать. Различие «новое/старое» несёт акцентный фон. */

/* Верхняя строка: заголовок + тег + точка непрочитанного */
.ntf-top{flex-wrap:wrap;gap:9px}

/* Тег типа алерта — прописной моноширинный нейтральный бордер-пилюля после заголовка */
.ntf-tag{
  font-family:var(--mono);
  font-size:var(--fs-10);
  font-weight:500;
  letter-spacing:.04em;
  text-transform:uppercase;
  white-space:nowrap;
  color:var(--ink-3);
  border:1px solid var(--line);
  padding:2px 6px;
  border-radius:5px;
  flex-shrink:0;
}

/* Инлайновая точка непрочитанного (в строке заголовка, а не в углу) */
.ntf-dot-i{width:7px;height:7px;border-radius:50%;background:var(--accent);flex-shrink:0}

/* Пустое состояние фильтра — стеклянная карточка */
.ntf-empty{
  display:flex;flex-direction:column;align-items:center;gap:12px;
  padding:64px 24px;
  border-radius:var(--r);
  background:var(--glass);
  backdrop-filter:blur(var(--blur));
  -webkit-backdrop-filter:blur(var(--blur));
  border:1px solid var(--line);
  text-align:center;
}
.ntf-empty .msi{font-size:36px;color:var(--ink-3)}
.ntf-empty-t{font-size:var(--fs-15);font-weight:600}

/* ---------------------------- Экран: admin ---------------------------- */

/* ---- Шапка экрана (по макету: h2 23px/800, иконка accent-ink 25px, без подзаголовка) ---- */
.adm-head{margin-bottom:16px}
.t-h1.adm-title{display:flex;align-items:center;gap:11px;flex-wrap:wrap;font-size:var(--fs-22);font-weight:800;letter-spacing:-.02em;margin:0}
.adm-title .msi{font-size:25px;color:var(--accent-ink)}
/* Табы админки — отдельные стеклянные кнопки без общего контейнера (спек admin) */
.adm-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px;background:transparent;border:none;padding:0;border-radius:0}
.adm-tabs .chip{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border-radius:10px;font-size:var(--fs-13);font-weight:600;white-space:nowrap;background:var(--glass);border:1px solid var(--line);color:var(--ink-2)}
.adm-tabs .chip .msi{font-size:17px}
.adm-tabs .chip:hover{border-color:var(--line-2);color:var(--ink-1)}
.adm-tabs .chip.active{background:var(--accent-weak);border-color:var(--accent-line);color:var(--accent-ink)}

/* мелкие варианты общих контролов, которых нет в styles.css */
.btn-ghost.sm{height:30px;padding:0 11px;font-size:var(--fs-12);border-radius:8px;gap:6px;border:1px solid var(--line-2);background:var(--surface-2);color:var(--ink-1)}
.btn-ghost.sm .msi{font-size:15px}
.adm-cat-allbtns .btn-ghost{height:36px;padding:0 13px;font-size:var(--fs-13);font-weight:600;border-radius:9px;background:var(--hover-1)}
.adm-cat-allbtns .btn-ghost:hover{background:rgba(255,255,255,.09)}
.adm-cat-allbtns .btn-ghost .msi{font-size:16px}
.btn-sec.danger{color:var(--neg);border-color:color-mix(in srgb,var(--neg) 34%,transparent);background:color-mix(in srgb,var(--neg) 12%,transparent)}
.btn-sec.danger:hover{background:color-mix(in srgb,var(--neg) 18%,transparent)}
.badge.sm{padding:2px 8px;font-size:var(--fs-11)} /* форма пилюли (999px) — как у базового .badge */
.switch.lg{width:46px;height:26px}
.switch.lg::after{width:20px;height:20px}
.switch.lg.on::after{transform:translateX(20px)}
.switch:disabled,.switch.locked{opacity:.55}

.adm-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}
.adm-dot.sm{width:6px;height:6px}

/* ---- Основное: каталог видов/типов ---- */
.adm-cat-head{display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;padding:16px 20px}
.adm-cat-hd-txt{flex:1 1 320px;min-width:0}
.adm-cat-head .t-h3{margin-bottom:5px}
.adm-cat-hd-right{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.adm-cat-count{text-align:right}
.adm-cat-num{font-family:var(--mono);font-size:var(--fs-24);font-weight:700;color:var(--ink-0);line-height:1;display:block}
.adm-cat-den{font-size:var(--fs-15);color:var(--ink-3)}
.adm-cat-count .t-sub{font-size:var(--fs-11);margin-top:3px}
.adm-cat-allbtns{display:flex;gap:7px}

.adm-sport-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr));gap:12px;margin-top:14px}
.adm-sport-card{border-radius:14px;border:1px solid var(--line);background:var(--glass);overflow:hidden;transition:opacity var(--dur-2) var(--ease)}
.adm-sport-card.off{background:rgba(255,255,255,.015);opacity:.72}
.adm-sport-hd{display:flex;align-items:center;gap:13px;padding:14px 16px}
.adm-sport-hd .sico{width:40px;height:40px}
.adm-sport-meta{flex:1;min-width:0}
.adm-sport-name{font-size:var(--fs-15);font-weight:700;color:var(--ink-0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-sport-card.off .adm-sport-name{color:var(--ink-2)}
.adm-sport-sub{font-size:var(--fs-12);color:var(--ink-3);margin-top:2px}
.adm-type-list{padding:0 16px 14px;display:flex;flex-direction:column;gap:6px}
.adm-type-row{display:flex;align-items:center;gap:9px;padding:7px 11px;border-radius:9px;border:1px solid var(--line);background:var(--surface-1)}
.adm-type-row.locked{opacity:.45}
.adm-type-ic{font-size:var(--fs-16);color:var(--ink-2)}
.adm-type-lbl{flex:1;font-size:var(--fs-13);font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-1)}
.adm-type-row .switch{width:34px;height:20px}
.adm-type-row .switch::after{width:16px;height:16px}
.adm-type-row .switch.on::after{transform:translateX(14px)}

/* ---- Обновление матчей ---- */
.adm-msum{display:flex;align-items:center;gap:26px;flex-wrap:wrap;padding:16px 20px}
.adm-msum-stat{min-width:0}
.adm-msum-k{font-size:var(--fs-11);color:var(--ink-3);margin-bottom:3px}
.adm-msum-v{font-size:var(--fs-20);font-weight:700}
.adm-msum-v.warn{color:var(--warn)}
.adm-mnote{margin:10px 16px 14px;display:flex;align-items:center;gap:6px}
.adm-mnote .msi{font-size:15px;color:var(--accent-ink)}
.adm-mtbl .adm-mstatus{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-13);font-weight:600}

/* ---- Вкладка «API»: состояние и потребление внешних сервисов ----------------------------------
   Порядок панелей = порядок вопросов: сколько тратим (деньги) → сколько осталось (лимиты) → что
   живо (карточки источников). Цвет несёт СТАТУС, а не украшение: рамка карточки краснеет только у
   измеренной поломки, полоса расхода — у реального процента (неизвестный лимит рисуется штриховкой,
   а не нулевой заливкой). Размеры — только через var(--fs-*) (§10.9). */
.api-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:space-between}
.api-kpis{display:flex;gap:10px;flex-wrap:wrap;flex:1}
.api-kpi{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:var(--r-sm);background:var(--surface-1);border:1px solid var(--line);min-width:134px}
.api-kpi-ic .msi{font-size:20px;color:var(--ink-2)}
.api-kpi.ok .api-kpi-ic .msi{color:var(--pos)}
.api-kpi.bad .api-kpi-ic .msi{color:var(--neg)}
.api-kpi-n{font-size:var(--fs-20);font-weight:800;line-height:1.15}
.api-kpi.bad .api-kpi-n{color:var(--neg)}
.api-kpi-l{font-size:var(--fs-11);color:var(--ink-3)}
.api-head-act{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.api-probe-at{white-space:nowrap}
/* многострочная сноска: иконка к ПЕРВОЙ строке (базовый .adm-mnote центрирует — на двух строках уезжает) */
.api-hint{align-items:flex-start}
.api-hint .msi{margin-top:1px;flex:0 0 auto}

.api-money-hero{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-start;margin-bottom:18px}
.api-money-main{flex:1 1 280px;min-width:250px}
.api-money-big{font-size:var(--fs-34);font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:6px 0 10px}
.api-money-big.neg{color:var(--neg)}
.api-money-of{font-size:var(--fs-17);font-weight:600;color:var(--ink-3);letter-spacing:0}
.api-money-sub{margin-top:8px}
.api-money-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(142px,100%),1fr));gap:10px;flex:2 1 420px}
.api-mtile{padding:11px 13px;border-radius:var(--r-sm);background:var(--surface-1);border:1px solid var(--line)}
.api-mtile-v{font-size:var(--fs-18);font-weight:700}
.api-mtile-l{font-size:var(--fs-12);color:var(--ink-2);margin-top:2px}
.api-mtile-s{font-size:var(--fs-11);margin-top:2px}
.api-chart-wrap{margin-bottom:16px}
.api-chart-wrap .t-eyebrow{display:block;margin-bottom:6px}
.api-chart{height:140px}
.api-splits{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:16px}
.api-split .t-eyebrow{display:block;margin-bottom:8px}

.api-bar{height:7px;border-radius:999px;background:var(--surface-3);overflow:hidden}
.api-bar>span{display:block;height:100%;border-radius:999px;background:var(--pos);transition:width var(--dur-3) var(--ease)}
.api-bar>span.warn{background:var(--warn)}
.api-bar>span.bad{background:var(--neg)}
.api-bar>span.soft{background:var(--push)}
.api-bar.unk{background:repeating-linear-gradient(90deg,var(--surface-3) 0 6px,transparent 6px 12px)}

.api-tbl td{vertical-align:top}
.api-r1{font-size:var(--fs-13);font-weight:600;display:flex;align-items:center;gap:7px;min-width:0}
.api-r2{font-size:var(--fs-11);margin-top:3px;display:block}
.api-q-bar{min-width:190px}
.api-q-bar .api-bar{margin-top:4px}
.api-sub-line{display:flex;align-items:center;gap:7px;margin-bottom:2px}
.api-sub-line .msi{font-size:16px;color:var(--accent-ink)}
.api-sub-line.bad{color:var(--neg)}
.api-sub-line.bad .msi{color:var(--neg)}

.api-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(322px,100%),1fr));gap:12px}
.api-card{padding:14px;border-radius:var(--r);background:var(--surface-1);border:1px solid var(--line);display:flex;flex-direction:column;gap:9px}
.api-card.st-down{border-color:color-mix(in srgb,var(--neg) 42%,transparent)}
.api-card.st-warn{border-color:color-mix(in srgb,var(--warn) 38%,transparent)}
.api-card-hd{display:flex;align-items:flex-start;gap:10px;justify-content:space-between}
.api-card-name{font-size:var(--fs-15);font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.api-free{font-size:var(--fs-10);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line-2);border-radius:999px;padding:1px 7px}
.api-card-vendor{font-size:var(--fs-11);margin-top:2px}
.api-card-purpose{line-height:1.45}
.api-qline{display:flex;align-items:center;gap:9px}
.api-qline .api-bar{flex:1;min-width:60px}
.api-qline .mono{font-size:var(--fs-11);white-space:nowrap}
.api-qline-bad{align-items:flex-start;gap:6px;color:var(--neg)}
.api-qline-bad .msi{font-size:15px;flex:0 0 auto;margin-top:1px}
.api-qline-bad span{font-size:var(--fs-12);white-space:normal}
.api-chips{display:flex;gap:6px;flex-wrap:wrap}
.api-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px 3px 3px;border-radius:999px;background:var(--surface-3);font-size:var(--fs-11);font-weight:700}
.api-chip .sico{width:20px;height:20px;border-radius:6px}
.api-chip .sico .msi{font-size:13px}
.api-chip.warn{color:var(--warn)}
.api-chip.bad{color:var(--neg)}
.api-use{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.api-use-n{font-size:var(--fs-18);font-weight:700}
.api-use-l{font-size:var(--fs-12);color:var(--ink-2)}
.api-use-ago{font-size:var(--fs-11);margin-left:auto}
.api-note{display:flex;align-items:flex-start;gap:6px;font-size:var(--fs-12);color:var(--ink-1);background:var(--surface-2);border-radius:var(--r-sm);padding:8px 10px}
.api-note .msi{font-size:15px;color:var(--accent-ink);flex:0 0 auto;margin-top:1px}
.api-facts{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:4px}
.api-facts li{font-size:var(--fs-11);color:var(--ink-3);line-height:1.45}
/* §240: расход квоты по потребителям внутри карточки источника (кто именно её тратит) */
.api-spend{border-top:1px solid var(--line);padding-top:6px}
.api-spend-hd{display:flex;align-items:center;gap:6px;font-size:var(--fs-10);letter-spacing:.02em;margin-bottom:4px}
.api-spend-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}
.api-spend-list li{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:var(--fs-11);color:var(--ink-3)}
.api-spend-list li .min0{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* §241: у api-sports расход разбит ПО ПРОДУКТАМ (квоты per-product) — подзаголовок на продукт */
.api-spend-prod{margin-top:5px}
.api-spend-prod-hd{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:var(--fs-11);font-weight:700;color:var(--ink-2)}
.api-spend-prod .api-spend-list{padding-left:10px}
.api-env{font-size:var(--fs-10);letter-spacing:.02em;margin-top:auto;padding-top:6px;border-top:1px solid var(--line)}
@media (max-width:760px){
  .api-head{flex-direction:column;align-items:stretch}
  .api-head-act{flex-direction:row;align-items:center;justify-content:space-between}
  .api-money-big{font-size:var(--fs-30)}
  .api-kpi{flex:1 1 45%;min-width:0}
}

.adm-divider{display:flex;align-items:center;gap:10px;margin:10px 2px 2px}
.adm-divider>span:last-child{font-size:var(--fs-11);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);font-weight:700;white-space:nowrap}
.adm-divider .msi{font-size:17px;color:var(--accent-ink)}
.adm-divider::after{content:"";flex:1;height:1px;background:var(--line)}
.adm-divider-sm{margin:16px 0 12px}

/* ---- Прогнозы: сводка дообучения ---- */
.adm-train-sum{display:flex;gap:26px;flex-wrap:wrap;margin-bottom:16px}
.adm-tsum-k{font-size:var(--fs-11);color:var(--ink-3);margin-bottom:3px}
.adm-tsum-v{font-size:var(--fs-13);font-weight:600}

/* ---- Калибровка (панель вкладки «Модель», §136) ---- */
/* Калибровка — интерактив при наведении */
.adm-calib-wrap{position:relative;max-width:560px}
.adm-calib-svg{width:100%;height:auto;display:block}
.adm-calib-tip{position:absolute;top:2px;transform:translateX(-50%);z-index:10;pointer-events:none;min-width:150px;padding:8px 10px;border-radius:9px;background:rgba(16,21,31,.98);border:1px solid var(--line-2);box-shadow:0 16px 40px -16px rgba(0,0,0,.85);opacity:0;transition:opacity var(--dur-1)}
.adm-calib-tip.show{opacity:1}
/* общий стиль строк тултипа (журнал + калибровка) */
.lht-date{font-size:var(--fs-11);color:var(--ink-2);margin-bottom:4px}
.lht-total{font-size:var(--fs-14);font-weight:700;color:var(--ink-0);margin-bottom:5px}
.lht-row{display:flex;align-items:center;gap:6px;font-size:var(--fs-11);color:var(--ink-1);margin-top:2px}
.lht-row b{margin-left:auto;font-weight:700;color:var(--ink-0)}
.lht-sw{width:8px;height:8px;border-radius:2px;flex-shrink:0}
.adm-ece-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.adm-ece-chip{display:flex;align-items:center;gap:7px;padding:5px 10px;border-radius:8px;background:var(--surface-1);border:1px solid var(--line)}
.adm-ece-bar{width:15px;height:3px;border-radius:2px;flex-shrink:0}
.adm-ece-lbl{font-size:var(--fs-12);font-weight:600}
.adm-ece-v{font-size:var(--fs-11);color:var(--ink-3)}
.adm-dl{display:flex;gap:6px;flex-wrap:wrap}

/* ---- Сервер (мониторинг CPU/RAM/диска) ---- */
.srv-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);margin-bottom:var(--gap)}
.srv-kpi{background:var(--glass);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.srv-kpi-hd{display:flex;align-items:center;gap:8px;color:var(--ink-2)}
.srv-kpi-hd .msi{font-size:20px;color:var(--accent-ink)}
.srv-kpi-lb{font-size:var(--fs-13);font-weight:600}
.srv-kpi-val{font-size:var(--fs-30);font-weight:700;line-height:1.1;margin:10px 0 8px;color:var(--ink-0);font-variant-numeric:tabular-nums}
.srv-kpi-bar{height:6px;border-radius:99px;background:rgba(255,255,255,0.07);overflow:hidden}
/* width-transition осознанно (как .wb-seg): JS пишет width в %, обновление редкое — не continuous-анимация */
.srv-kpi-fill{height:100%;width:0;border-radius:99px;background:var(--pos);transition:width var(--dur-4) var(--ease),background var(--dur-4) var(--ease)}
.srv-kpi-sub{margin-top:8px;font-size:var(--fs-12);color:var(--ink-3);font-family:var(--mono)}
.srv-chart-hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.srv-chart{width:100%;height:230px}
.srv-range-panel .panel-head{margin-bottom:0}
.srv-range{margin-left:auto}
.srv-live{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-11);font-weight:700;letter-spacing:.04em;color:var(--pos);font-family:var(--mono)}
.srv-live-dot{width:7px;height:7px;border-radius:50%;background:var(--pos);animation:orpulse 1.6s var(--ease) infinite}
.srv-tip-t{font-size:var(--fs-11);color:var(--ink-2);margin-bottom:6px}
.srv-tip-r{display:flex;align-items:center;gap:7px;font-size:var(--fs-12);line-height:1.7}
.srv-tip-sw{width:9px;height:9px;border-radius:2px;flex-shrink:0}
.srv-tip-n{color:var(--ink-2);min-width:34px}
.srv-tip-r b{color:var(--ink-0)}
.srv-tip-x{color:var(--ink-3);margin-left:6px}
@media (max-width:760px){ .srv-kpis{grid-template-columns:1fr;gap:10px} .srv-chart{height:280px} .srv-range{margin-left:0} }

/* ---- База данных (размер + разбивка по таблицам) ---- */
.db-kpis{grid-template-columns:1fr 1fr;margin-bottom:4px}
.db-tbl-cap{margin:20px 0 10px}
.db-tbl td{padding:9px 12px}
.db-tbl th:nth-child(2),.db-tbl th:nth-child(3),.db-tsize,.db-trows{text-align:right;white-space:nowrap}
.db-tname{color:var(--ink-1)}
.db-tsize{color:var(--ink-0)}
.db-trows{color:var(--ink-3)}
.db-tbar{width:34%}
.db-bar{height:7px;border-radius:99px;background:rgba(255,255,255,.06);overflow:hidden}
.db-bar>span{display:block;height:100%;border-radius:99px;background:var(--accent)}
.db-note{margin-top:14px;line-height:1.5}
@media (max-width:760px){ .db-kpis{grid-template-columns:1fr} .db-tbar{display:none} }

/* ---- Пользователи ---- */
.adm-users-bar,.adm-logbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.adm-search{position:relative;flex:1 1 240px;min-width:200px}
.adm-search-ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:var(--fs-18);color:var(--ink-3);pointer-events:none}
.adm-search input{width:100%;height:40px;padding:0 12px 0 40px;border-radius:10px;background:var(--glass);border:1px solid var(--line);font-size:var(--fs-13);color:var(--ink-0);font-family:inherit}
.adm-search input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-weak);outline:none}
.scope-search:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-weak);outline:none}
.adm-avatar{width:34px;height:34px;border-radius:10px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:var(--fs-12);font-weight:700;color:var(--accent-ink);background:var(--accent-weak);border:1px solid var(--accent-line)}
.adm-avatar.lg{width:52px;height:52px;border-radius:14px;font-size:var(--fs-18)}
.adm-utbl td{vertical-align:middle}
/* заблокированная учётка видна прямо в списке (роль + бейдж «заблокирован»), сама строка приглушена */
.adm-user-badges{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.adm-user-row.off .adm-user-cell,.adm-user-row.off td[data-ucell]{opacity:.5}
.adm-user-cell{display:flex;align-items:center;gap:11px;min-width:0}
.adm-user-nm{min-width:0}
.adm-user-name{display:block;font-size:var(--fs-14);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-user-login{display:block;font-size:var(--fs-12);color:var(--ink-3)}
.adm-lastseen{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-12);color:var(--ink-2)}
.adm-user-row{cursor:pointer}
.adm-user-row:hover{background:var(--surface-1)}
.adm-users-foot{margin:0 2px}

/* карточка пользователя (модалка) */
.adm-uc-head{display:flex;align-items:center;gap:14px;padding:18px 20px;border-bottom:1px solid var(--line)}
.adm-uc-hd-txt{flex:1;min-width:0}
.adm-uc-name{font-size:var(--fs-17);font-weight:700}
.adm-uc-hd-txt>div:last-child{display:flex;align-items:center;gap:8px;margin-top:4px}
.adm-uc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.adm-uc-stat{padding:12px 14px;border-radius:11px;background:var(--surface-1);border:1px solid var(--line)}
.adm-uc-k{font-size:var(--fs-11);color:var(--ink-3);margin-bottom:3px}
.adm-uc-v{font-size:var(--fs-17);font-weight:700}
.adm-uc-rows{display:flex;flex-direction:column;gap:10px}
.adm-uc-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.adm-uc-rk{font-size:var(--fs-13);color:var(--ink-2)}
.adm-uc-rv{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-13);font-weight:600}
.adm-uc-foot{display:flex;gap:10px}

/* ---- Журнал ---- */
.adm-svc-wrap{position:relative}
.adm-svc-wrap .btn-sec .msi{font-size:16px}
.adm-menu-dot{display:inline-block;width:8px;height:8px;border-radius:2px;flex-shrink:0}
.adm-menu{position:absolute;right:0;top:44px;z-index:var(--z-dd);width:204px;padding:6px;border-radius:12px;background:var(--glass-3);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--line-2);box-shadow:0 24px 60px -20px rgba(0,0,0,.8)}
.adm-menu-i{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border-radius:8px;font-size:var(--fs-13);color:var(--ink-1);text-align:left;cursor:pointer}
.adm-menu-i:hover{background:var(--surface-3);color:var(--ink-0)}
.adm-menu-i.active{color:var(--ink-0);background:var(--surface-3)}
.adm-live{gap:7px}
.adm-live-dot{width:8px;height:8px;border-radius:50%;background:var(--ink-3)}
.adm-live.on{color:var(--neg);border-color:color-mix(in srgb,var(--neg) 40%,transparent);background:color-mix(in srgb,var(--neg) 14%,transparent)}
.adm-live.on .adm-live-dot{background:var(--neg);animation:admpulse 1.4s ease-in-out infinite}
@keyframes admpulse{50%{opacity:.35}}
.adm-logcats,.adm-loglvls{margin-bottom:8px}
.adm-hist-panel{padding:14px 16px}
.adm-hist-hd{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.adm-hist-vol{display:flex;align-items:baseline;gap:8px}
.adm-hist-num{font-size:var(--fs-22);font-weight:700;color:var(--ink-0)}
.adm-hist-legend{display:flex;align-items:center;gap:14px;font-size:var(--fs-11);color:var(--ink-2);flex-wrap:wrap}
.adm-hist-legend>span{display:flex;align-items:center;gap:5px}
.adm-lg-sw{width:8px;height:8px;border-radius:2px}
.adm-hist-wrap{position:relative}
/* .lht-* (строки тултипа Chart) объявлены ВЫШЕ в «Модель и калибровка» — общие для журнала и калибровки */
/* полоска «выбран диапазон» */
.adm-hist-sel{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding:6px 10px;border-radius:9px;background:var(--accent-weak);border:1px solid var(--accent-line);font-size:var(--fs-12);color:var(--ink-1)}
.adm-hist-sel>.msi{font-size:16px;color:var(--accent-ink)}
.adm-hist-selx{margin-left:auto;width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--ink-2)}
.adm-hist-selx:hover{background:var(--hover-2);color:var(--ink-0)}
.adm-hist-selx .msi{font-size:16px}
.log-cat{display:flex;align-items:center;gap:6px;font-size:var(--fs-12);color:var(--ink-1);min-width:0}
@media (max-width:760px){ .log-cat{display:none} }

/* ---- Диагностика «не обработано» ---- */
.adm-diag-grp{margin-bottom:10px}
.adm-diag-grp-hd{display:flex;align-items:center;gap:9px;padding:8px 2px 6px;font-size:var(--fs-13);font-weight:700}
.adm-diag-grp-hd .faint{margin-left:auto;font-weight:600}
.adm-diag-row{display:flex;align-items:flex-start;gap:11px;padding:10px 4px;border-top:1px solid var(--line)}
.adm-diag-row .msi{font-size:17px;margin-top:1px}
.adm-diag-body{flex:1;min-width:0}
.adm-diag-match{font-size:var(--fs-13);font-weight:600}
.adm-diag-meta{font-size:var(--fs-12);color:var(--ink-3);margin-top:2px}
.adm-diag-reason{font-size:var(--fs-12);color:var(--ink-2);margin-top:5px;line-height:1.5;overflow-wrap:anywhere}
.adm-diag-sum{margin:0 2px 4px;font-size:var(--fs-12)}
.adm-diag-cat{margin:6px 0 2px}
.adm-diag-cat-hd{display:flex;align-items:center;gap:8px;padding:7px 8px;margin:2px 0;border-radius:8px;background:var(--glass);font-size:var(--fs-12);font-weight:600;color:var(--ink-1)}
.adm-diag-cat-hd .msi{font-size:16px;color:var(--ink-2)}
.adm-diag-cat-hd .faint{margin-left:auto;font-weight:700;font-family:var(--mono)}
.adm-diag-more{padding:8px 4px 2px;font-size:var(--fs-12)}

.adm-au-role,.adm-uc-foot .btn-sec{width:100%}
.adm-au-role{display:flex}
.adm-au-role .cfg-seg{flex:1;text-align:center}

/* ---------------------------- Экран: modals ---------------------------- */

/* Строка «рынок-бейдж + выбор» (шапка ставки / info / линии) */
.mkt-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mkt-badge{font-family:var(--mono);font-size:var(--fs-10);letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-2);border:1px solid var(--line);padding:2px 7px;border-radius:6px;white-space:nowrap}
.info-sel{margin-bottom:16px}

/* Ставка: ряд из двух плиток «Коэффициент» / «Доля Келли» */
.bet-tiles{display:flex;gap:10px;margin-top:14px}
.stat-tile{flex:1;padding:11px 14px;border-radius:11px;background:var(--surface-1);border:1px solid var(--line)}
.stat-tile-l{font-size:var(--fs-10);color:var(--ink-3);margin-bottom:4px}
.help{cursor:help}
.stat-tile-v{font-size:var(--fs-18);font-weight:700}
.stat-tile-v.accent{color:var(--accent-ink)}

/* Info-модалка «Как устроен прогноз» */
.info-card{padding:12px 14px;border-radius:11px;background:var(--surface-1);border:1px solid var(--line);
  font-size:var(--fs-13);color:var(--ink-1);line-height:1.5}
.src-list,.fac-list{display:flex;flex-direction:column;gap:6px}
.src-row,.fac-row{display:flex;align-items:flex-start;gap:9px;font-size:var(--fs-13);color:var(--ink-1);line-height:1.45}
.src-row .msi.src-ic{font-size:16px;color:var(--accent-ink);flex-shrink:0;margin-top:1px}
.fac-row .msi.fac-ic{font-size:16px;color:var(--pos);flex-shrink:0;margin-top:1px}

/* Три плитки качества: уверенность / случайность / полнота */
.qual-tiles{display:flex;gap:10px;margin-top:4px}
.qual-tile{flex:1;text-align:center;padding:10px;border-radius:10px;background:var(--surface-1);border:1px solid var(--line)}
.qual-v{font-size:var(--fs-18);font-weight:700}
.qual-v.pos{color:var(--pos)}
.qual-v.warn{color:var(--warn)}
.qual-v.accent{color:var(--accent-ink)}
.qual-l{font-size:var(--fs-10);color:var(--ink-3);margin-top:2px}

/* Свёртка «Цепочка вероятности и экономика» (доп. секция) */
.why-details{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.why-details>summary{cursor:pointer;font-size:var(--fs-12);font-weight:600;color:var(--ink-2);list-style:none;
  display:flex;align-items:center;gap:6px}
.why-details>summary::-webkit-details-marker{display:none}
.why-details>summary .msi.wd-chev{font-size:18px;color:var(--ink-3);transition:transform var(--dur-2) var(--ease)}
.why-details[open]>summary .msi.wd-chev{transform:rotate(180deg)}
.why-details>summary:hover{color:var(--ink-0)}

/* История коэффициента: строка тренда с момента открытия */
.line-trend{display:flex;align-items:center;gap:7px;margin-top:14px;font-size:var(--fs-12);color:var(--ink-2)}
.line-trend .msi{font-size:17px}

/* «Скоро»-бейдж в рельсе (страница-заглушка .soon-* удалена вместе с экраном) */

/* Прогноз стратегии: подпись + мини-бар прироста (спек settings) */
.strat-growth-sub{font-size:var(--fs-11);color:var(--ink-2);margin-top:3px}
.strat-growth-bar{margin-top:11px;height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden}
.strat-growth-bar>i{display:block;height:100%;border-radius:3px}

/* Разбор ставок: строка фильтра вида внутри панели + chip времени в плане */
.bd-sport-row{display:flex;align-items:center;gap:7px;padding:10px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.rec-time{display:inline-flex;align-items:center;gap:3px;color:var(--accent-ink);font-size:var(--fs-13);font-weight:600}
.rec-time .msi{font-size:15px}
/* одиночная: «что ставить» (Победа X / Тотал Б 2.5) — подчёркнуто; коэф. — приглушённая приписка */
.rec-mkt{color:var(--ink-0);font-weight:700}
.rec-coef{margin-left:5px;font-weight:600;color:var(--ink-3)}
.rec-exp{display:inline-flex;align-items:center;font-size:var(--fs-12);font-weight:700;color:var(--warn);font-family:var(--mono)}

/* --- ПЛАВНОСТЬ ИНТЕРАКТИВА: единый мягкий переход у контролов (дизайн-полировка) --- */
.chip,.dd-btn,.btn-sec,.btn-ghost,.icon-btn,.rail-item,.toggle,.dd-opt,.pm-btn,.px-info,.px-add,.badge,.seg button{
  transition:background-color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease),transform var(--dur-1) var(--ease-out)}
/* тактильный отклик нажатия */
.chip:active,.dd-btn:active,.btn-sec:active,.btn-ghost:active,.icon-btn:active,.toggle:active,.dd-opt:active,
.pm-btn:active:not(:disabled),.px-info:active,.px-add:active,.seg button:active,.btn:active,.pred-bet:active{transform:scale(.96)}
/* «сплющивание» ползунка — scaleX, не width: анимация width гоняла layout на каждый кадр нажатия */
.switch::after{transition:transform var(--dur-2) var(--ease);transform-origin:left center}
.switch:active::after{transform:scaleX(1.22)}
.switch.on:active::after{transform:translateX(18px) scaleX(1.22);transform-origin:right center}

/* --- Каскадное появление карточек в лентах (стаггер первых восьми) --- */
.ev-card,.rec-card,.pcard,.ecard,.ntf-item,.mb-card{animation:orrise var(--dur-3) var(--ease-out) both}
:is(.ev-card,.rec-card,.pcard,.ecard,.ntf-item,.mb-card):nth-child(2){animation-delay:var(--stagger-1)}
:is(.ev-card,.rec-card,.pcard,.ecard,.ntf-item,.mb-card):nth-child(3){animation-delay:calc(var(--stagger-1)*2)}
:is(.ev-card,.rec-card,.pcard,.ecard,.ntf-item,.mb-card):nth-child(4){animation-delay:calc(var(--stagger-1)*3)}
:is(.ev-card,.rec-card,.pcard,.ecard,.ntf-item,.mb-card):nth-child(5){animation-delay:calc(var(--stagger-1)*4)}
:is(.ev-card,.rec-card,.pcard,.ecard,.ntf-item,.mb-card):nth-child(6){animation-delay:calc(var(--stagger-1)*5)}
:is(.ev-card,.rec-card,.pcard,.ecard,.ntf-item,.mb-card):nth-child(7){animation-delay:calc(var(--stagger-1)*6)}
:is(.ev-card,.rec-card,.pcard,.ecard,.ntf-item,.mb-card):nth-child(n+8){animation-delay:calc(var(--stagger-1)*7)}

/* --- Активная иконка навигации: transform-акцент. Ось FILL у Material Symbols в нашем сабсете
   НЕ вариативна (статичный instance без fvar, см. vendor/fonts/fonts.css) — интерполяция заливки
   невозможна; scale — композитинг, только одиночные иконки навигации. --- */
.rail-item .msi,.tab .msi,.drawer-item .msi{transition:transform var(--dur-2) var(--ease)}
.rail-item.active .msi,.tab.active .msi,.drawer-item.active .msi{transform:scale(1.12)}

/* --- Импульс банк-пилюли при внешнем обновлении суммы --- */
@keyframes ortick{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--pos) 40%,transparent)}100%{box-shadow:0 0 0 11px transparent}}
.wallet.tick{animation:ortick var(--dur-4) var(--ease-out)}

/* Переход между экранами — View Transitions (core.js renderScreenVT): быстрый кроссфейд.
   При поддержке VT въезд .page (orrise) выключен — двойного движения быть не должно;
   без поддержки (и при reduced-motion — JS-гейт) остаётся прежний orrise. */
@supports (view-transition-name: root){
  ::view-transition-old(root){animation-duration:var(--dur-1);animation-timing-function:var(--ease-in)}
  ::view-transition-new(root){animation-duration:var(--dur-2);animation-timing-function:var(--ease-out)}
  .page{animation:none}
}

/* Фоновые слои: «дыхание» — только на десктопе с обычным трафиком. На телефонах и при
   save-data два fullscreen-слоя (mix-blend + transform) не стоят постоянной композиции. */
@media (max-width:760px), (prefers-reduced-data: reduce){
  .bg-noise,.bg-halo{animation:none}
}

/* --- Доступность: пользователь просил меньше движения --- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-delay:0s !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* --- МОБИЛЬНАЯ ДОВОДКА (сверка с макетом + совр. стандарты) --- */
@media (max-width:760px){
  /* iOS зумит инпуты с font-size < 16px при фокусе — 16px ВСЕМ текстовым полям */
  .field input,.cfgnum,.lever-num,.adm-search input,.scope-search,.scope-cfg-in input,.arc-date input[type=date]{font-size:var(--fs-16)}
  .lever-num{width:64px}
  /* пол типографики для денег/процентов и навигации (10px нечитаемы на телефоне) */
  .ev-exp,.ev-gone{font-size:var(--fs-11)}
  .rec-stake-l{font-size:var(--fs-11)}
  .tab .tab-label{font-size:var(--fs-11)}
  /* уведомления: компактнее паддинги, иконка меньше */
  .ntf-item{padding:12px 13px;gap:10px}
  .ntf-ico{width:34px;height:34px}
  /* плитки модалок переносятся, а не сжимаются в столбики по ~85px */
  .bet-tiles,.qual-tiles{flex-wrap:wrap}
  .bet-tiles .stat-tile,.qual-tiles .qual-tile{min-width:120px}
  /* шапки карточек настроек: подзаголовок во всю ширину, сег/бейдж — новой строкой (не наезжают) */
  .cfg-head{flex-wrap:wrap}
  .cfg-head .min0{flex:1 1 55%}
  .cfg-head>.grow{display:none}
  .cfg-head .auto-seg-wrap,.cfg-head .scope-badge{order:5;flex-basis:100%;margin-top:4px}
  .cfg-head .auto-seg-wrap{flex-wrap:wrap}   /* ⓘ режима переносится под сег-группу, не распирая 320px */
  .cfg-head .auto-seg-wrap .cfg-seg-group{flex:1 1 auto;justify-content:space-between}
}
/* тач-цели: на грубом указателе — стандартные ≥44px (Apple HIG 44pt / Material 48dp) */
@media (pointer:coarse){
  .px-add,.px-info,.pm-btn,.modal-close,.pdm-undo,.lever-lock,.lever-off,.rec-done,
  .rec-icobtn,.rec-accept,
  .chart-tool,.magic-btn,.pass-toggle,.adm-hist-selx,.ev-collapse,.pred-dismiss,.pred-bet,
  .rail-collapse,.dd-eye,.icon-btn{min-width:44px;min-height:44px}
  .chip,.seg,.cfg-seg,.dd-opt,.toggle,.alertbar-more,.alertbar-fold,.auto-robot{min-height:40px}
  .toggle,.alertbar-fold,.auto-robot{min-width:40px}
  .btn-sec,.dd-btn,.btn-ghost,.bookie{min-height:44px}
  /* пагинатор «лучших игроков» 20×20 — невидимая тач-зона вокруг (визуал не растим) */
  .pl-pbtn{position:relative}
  .pl-pbtn::after{content:"";position:absolute;inset:-8px}   /* -8: соседние кнопки пагинатора стоят рядом — зоны не должны налезать */
  /* свитчи и микро-иконки: невидимая тач-зона вокруг, без роста визуала */
  .switch{position:relative}
  .switch::before{content:"";position:absolute;inset:-11px}
  .rec-why{position:relative}
  .rec-why::after{content:"";position:absolute;inset:-13px}
  .term{position:relative}
  .term::after{content:"";position:absolute;inset:-8px}
  /* удержание для подсказки (core.js peek): без системного выделения/callout на подсказываемом тексте */
  .term,.auto-mode{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
}

/* ============ Правки TODO: свёртка карточек, экспозиция, банк-виджеты, календарь ============ */
/* Тело карточки события (прогнозы) — плавная свёртка/разворот через slideReveal (height+fade) */
.ev-body{display:block}
.ev-body[hidden]{display:none}
.ev-card.no-anim{animation:none}
/* Повторный рендер экрана (поллинг/действия) — без повторного въезда карточек: класс ставит
   core.js markAnimDone() после первого рендера с данными, снимает renderScreen() при смене экрана */
.anim-done :is(.rec-card,.pcard,.ecard,.ntf-item,.mb-card){animation:none}
/* свёрнутая сводка (надёжность/ист.) — ТОЛЬКО у свёрнутой карточки */
.ev-card:not(.ev-collapsed) .ev-collapsed-sum{display:none}
.ev-exp .ev-exp-other{color:var(--ink-3);font-weight:400}

/* «Доход по дням» — сводка периода под графиком (в языке метрик кривой банка, .mb-bank-metrics) */
.inc-metrics{display:flex;justify-content:space-between;gap:12px;padding:0 16px 4px;flex-wrap:wrap}
.inc-days{padding:0 16px 12px}

/* Экран «Баланс» — вертикальный стек панелей с дыханием между блоками (§45 redesign) */
.bal-stack{display:flex;flex-direction:column;gap:20px}
.bal-stack .mb-kpis{margin-bottom:0}

/* История банка — богатые строки: вид · событие · что взято+линия · на кого исход · счёт · время · P/L (§45) */
.bh-list{display:flex;flex-direction:column;gap:8px}
/* разделитель дня + ИТОГ ДНЯ: строки идут по моменту изменения банка, день — ответ «почему банк ± N ₽» */
.bh-day{display:flex;align-items:baseline;gap:8px;padding:10px 4px 2px}
.bh-day:first-child{padding-top:2px}
.bh-day-d{font-size:var(--fs-13);font-weight:700;color:var(--ink-1)}
.bh-day-v{font-size:var(--fs-14);font-weight:800}
.bh-day-v.pos{color:var(--pos)}
.bh-day-v.neg{color:var(--neg)}
.bh-item{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface-1);transition:border-color var(--dur-1) var(--ease),background var(--dur-1) var(--ease)}
.bh-item:hover{border-color:color-mix(in srgb,var(--accent) 30%,transparent);background:var(--surface-2)}
.bh-sico{width:38px;height:38px;border-radius:11px;margin-top:1px}
.bh-sico .msi{font-size:20px}
.bh-sico.bh-sico-x{--sc:var(--ink-3)}
.bh-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.bh-l1{display:flex;align-items:center;min-width:0}
.bh-event{font-size:var(--fs-14);font-weight:700;color:var(--ink-1);background:none;border:none;padding:0;font-family:inherit;text-align:left;display:inline-flex;align-items:center;gap:5px;max-width:100%;min-width:0}
button.bh-event.bh-open{cursor:pointer}
button.bh-event.bh-open:hover .bh-etext{text-decoration:underline;text-underline-offset:2px}
button.bh-event.bh-open:hover .msi{color:var(--accent-ink)}
.bh-etext{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.bh-event .msi{font-size:15px;color:var(--ink-3);flex-shrink:0}
.bh-l2{font-size:var(--fs-13);line-height:1.35;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.bh-mk{color:var(--ink-2);font-weight:600}
.bh-sel{color:var(--ink-1);font-weight:600}
.bh-team{color:var(--accent-ink);font-weight:700}
.bh-meta{font-size:var(--fs-11);color:var(--ink-3);line-height:1.4}
.bh-right{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0;text-align:right}
.bh-badge{flex-shrink:0}
.bh-pnl{font-size:var(--fs-16);font-weight:800;line-height:1.1}
.bh-pnl.pos{color:var(--pos)}
.bh-pnl.neg{color:var(--neg)}
.bh-pnl.faint{color:var(--ink-3)}
.bh-stake{font-size:var(--fs-12);color:var(--ink-3);white-space:nowrap}
.bh-at{color:var(--ink-3)}
.bh-pager,.bd-pager{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:10px 14px}
.bd-pager{border-top:1px solid var(--line)}
@media (max-width:560px){
  .bh-item{gap:10px;padding:11px 12px}
  .bh-sico{width:34px;height:34px}
  .bh-right .bh-stake{display:none}
}

/* Кликабельная карточка рекомендации плана (переход в событие по клику вне кнопок) */
.rec-card.clickable{cursor:pointer}

/* ==========================================================================
   Единый компонент графиков — Chart(mount, spec) (charts.js). Рамка как .panel,
   тулбар контролов (диапазон/зум/лог/PNG/фуллскрин), тело-канвас, футер-легенда.
   ========================================================================== */
.chart{border-radius:var(--r);background:var(--glass);border:1px solid var(--line)}
.chart.chart-mini,.chart.chart-bare{background:transparent;border:0;border-radius:0;position:relative}
.chart-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 16px;border-bottom:1px solid var(--line)}
.chart-ico{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.chart-ico .msi{font-size:22px;color:var(--accent-ink)}
.chart-htxt{min-width:0}
.chart-htxt .t-h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chart-badge{flex-shrink:0}
.chart-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.chart-toolbar-float{position:absolute;top:8px;right:8px;z-index:4}
.chart-tool{width:32px;height:32px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;color:var(--ink-2);border:1px solid var(--line);background:transparent;cursor:pointer;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out)}
.chart-tool:hover{background:var(--surface-3);color:var(--ink-0)}
.chart-tool:active{transform:scale(.94)}
.chart-tool.on{color:var(--accent-ink);background:var(--accent-weak);border-color:var(--accent-line)}
.chart-tool .msi{font-size:18px}
.chart-toolbar-float .chart-tool{background:rgba(14,16,22,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.chart-range{padding:3px}
.chart-range .seg{padding:4px 9px;font-size:var(--fs-12)}
.chart-dates{display:inline-flex;gap:6px;flex-wrap:wrap}
.chart-body{position:relative;width:100%}
.chart-bare>.chart-body{height:100%}   /* bare без spec.height заполняет высоту хоста (напр. .srv-chart) */
.chart:not(.chart-mini):not(.chart-bare)>.chart-body{padding:12px 14px 14px}
.chart-canvas{width:100%;height:100%;min-height:120px}
.chart-mini .chart-canvas,.chart-bare .chart-canvas{min-height:0}
.chart-foot{padding:10px 16px 12px}
.chart-foot:empty{display:none}
.chart-empty{padding:24px}
.chart-full{padding:6px 2px 2px}
.chart-full-canvas{width:100%;height:min(70vh,640px)}
@media (max-width:760px){
  .chart-head{align-items:flex-start}
  .chart-head .grow{display:none}
  .chart-toolbar{width:100%;justify-content:flex-start}
  .chart-range{flex-wrap:wrap}
}

/* ==========================================================================
   ПОЛИРОВКА UI (аудит 2026-07): busy-кнопки, скелетоны первой загрузки,
   индикатор «Сохранено», hover-lift кликабельных карточек.
   ========================================================================== */
/* Занятая async-кнопка (btnBusy в core.js): спиннер на месте иконки, повторные клики заблокированы */
.spinner.sm{width:16px;height:16px;border-width:2px}
.spinner.xs{width:14px;height:14px;border-width:2px}
.busy{pointer-events:none}
.busy>.msi{display:none}
.busy::before{content:"";width:15px;height:15px;flex-shrink:0;border-radius:50%;border:2px solid rgba(255,255,255,.22);border-top-color:currentColor;animation:orspin .8s linear infinite}

/* Скелетон первой загрузки (renderSkeleton в core.js) — шиммер по @keyframes orshimmer */
.skel{display:block;border-radius:7px;background:linear-gradient(90deg,var(--hover-1) 25%,rgba(255,255,255,.10) 38%,var(--hover-1) 55%);background-size:200% 100%;animation:orshimmer 1.3s linear infinite}
.skel-list{display:flex;flex-direction:column;gap:var(--gap)}
.skel-card{display:flex;align-items:center;gap:13px;padding:16px}
.skel-ico{width:38px;height:38px;border-radius:11px;flex-shrink:0}
.skel-lines{flex:1;display:flex;flex-direction:column;gap:9px;min-width:0}
.skel-l{height:12px}
.skel-l.sm{height:9px;opacity:.7}
.skel-r{width:64px;height:26px;border-radius:9px;flex-shrink:0}

/* Тихое подтверждение «Сохранено ✓» в шапке настроек (тост на каждое движение слайдера был бы спамом) */
.saved-chip{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-12);font-weight:600;color:var(--pos);opacity:0;transition:opacity var(--dur-2) var(--ease);pointer-events:none}
.saved-chip .msi{font-size:16px}
.saved-chip.show{opacity:1}

/* Лёгкий подъём кликабельных карточек (у .ev-card transform уже в transition).
   Только hover-устройства: на таче ховер «залипает» после тапа — карточка оставалась приподнятой. */
.ntf-item{transition:border-color var(--dur-2) var(--ease),background var(--dur-1) var(--ease)}
.rec-card.clickable{transition:transform var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease)}
@media (hover:hover){
  .ev-card:hover{transform:translateY(-1px)}
  /* ⚠️ подъёма у .ntf-item НЕТ: он обещал клик, которого больше нет (карточка — текст) */
  .rec-card.clickable:hover{transform:translateY(-1px);border-color:var(--line-2)}
}

/* Confirm-модалка (confirmDialog в core.js) + danger-вариант основной кнопки */
.cfm-text{font-size:var(--fs-13);color:var(--ink-1);line-height:1.6;white-space:pre-line;overflow-wrap:anywhere}
.btn.btn-danger{color:var(--ink-on-color);
  background:linear-gradient(180deg,color-mix(in srgb,var(--neg) 88%,white),var(--neg));
  box-shadow:0 12px 30px -12px color-mix(in srgb,var(--neg) 50%,transparent),inset 0 1px 0 rgba(255,255,255,.35)}

/* Длинные системные уведомления: свёртка до 5 строк + «Показать полностью» */
.ntf-body.clamp{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.ntf-expand{display:inline-flex;align-items:center;gap:4px;margin-top:5px;font-size:var(--fs-11);font-weight:600;color:var(--accent-ink);background:none;border:none;padding:0;cursor:pointer}
.ntf-expand:hover{text-decoration:underline}
.ntf-expand .msi{font-size:14px}

/* Затухание карточки «отмечена выполненной» — классом (инлайновый transition обходил reduced-motion) */
.rec-card.rec-removing{opacity:0;transition:opacity var(--dur-2) var(--ease)}

/* Микро-подтверждение приёма ставки: «Принять» коротко становится зелёной галочкой */
.rab-ok.done-ok{background:var(--pos);box-shadow:none;filter:none}
#betAccept.done-ok{background:var(--pos);box-shadow:none;filter:none}

/* ═══ «✨ МАГИЯ» (автопилот дисциплины, карточка «Автоматизация») ═══ */
.magic-btn{width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:var(--glass);
  font-size:var(--fs-16);line-height:1;cursor:pointer;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
  transition:transform var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease);filter:grayscale(1);opacity:.75}
.magic-btn:hover{transform:translateY(-1px);border-color:var(--line-2);filter:grayscale(.4);opacity:1}
.magic-btn:active{transform:scale(.94)}
.magic-btn.on{filter:none;opacity:1;border-color:color-mix(in srgb,var(--accent) 60%,transparent);
  background:color-mix(in srgb,var(--accent) 16%,var(--glass));
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent),0 0 22px -6px color-mix(in srgb,var(--accent) 70%,transparent);
  animation:orglow 2.6s var(--ease) infinite}
/* «РАБОТАЮЩАЯ МАГИЯ»: дышащая акцент-рамка карточки + переливающаяся полоса статуса + пульс-точка.
   (клон autopulse в акцент-ирисе; reduced-motion гасится глобальным блоком в конце файла) */
/* Пульс магии — по той же схеме, что .auto-card.running: статичный bloom + opacity-кольцо ::after
   (box-shadow-keyframes = постоянный repaint; см. комментарий у .auto-card.running) */
.auto-card.magic{position:relative;border-color:color-mix(in srgb,var(--accent) 42%,transparent);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 44%,transparent),0 0 36px -7px color-mix(in srgb,var(--accent) 58%,transparent)}
.auto-card.magic::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 50%,transparent),inset 0 0 24px -12px color-mix(in srgb,var(--accent) 48%,transparent);
  animation:orglow 3.2s var(--ease) infinite}
.magic-status{position:relative;overflow:hidden;padding:10px 16px;border-top:1px solid var(--line);color:var(--ink-1);font-size:var(--fs-13);line-height:1.65}
.magic-status::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 40%,color-mix(in srgb,var(--accent) 9%,transparent) 50%,transparent 60%);
  background-size:220% 100%;animation:orshimmer 3.8s linear infinite}   /* 3.8s осознанно медленнее .skel (1.3s): фоновое «дыхание» статуса, не индикатор загрузки */
.magic-status b{color:var(--ink-0)}
.magic-live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:middle;
  background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent);animation:orpulse 1.8s var(--ease) infinite}
.magic-pack{display:inline-block;padding:1px 8px;border-radius:7px;margin:1px 4px 1px 0;font-size:var(--fs-11);
  color:var(--accent-ink);background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 26%,transparent)}
.magic-lg{display:inline-block;padding:1px 7px;border-radius:7px;background:color-mix(in srgb,var(--neg) 14%,transparent);
  color:var(--neg);font-size:var(--fs-11);margin:1px 2px 1px 0;border:1px solid color-mix(in srgb,var(--neg) 25%,transparent)}
.magic-when{color:var(--ink-3);font-size:var(--fs-12);margin-left:6px}
.magic-when .msi{font-size:var(--fs-13);vertical-align:-2px;animation:orspin 1.6s linear infinite}
.lever-magic{display:inline-flex;margin-left:6px;font-size:var(--fs-12);line-height:1;vertical-align:middle;cursor:help;filter:saturate(1.2)}
/* МАГИЯ ВЛАДЕЕТ НАСТРОЙКАМИ: карточки стратегии пригашены (контролы disabled в рендере + гард в
   обработчиках; это визуальный слой «заперто») — карточка «Автоматизация» с магией остаётся живой */
.cfg-main.magic-locked .cfg-card:not(.auto-card){opacity:.6;filter:saturate(.72)}
.cfg-main.magic-locked .cfg-card:not(.auto-card):hover{opacity:.78}
/* Заблокированные контролы настроек (магия / выключенный фильтр / глобальный скоуп) — серые и некликабельные */
.cfg-card :disabled,.cfg-card button[disabled],.cfg-head-acts button:disabled{opacity:.42;cursor:not-allowed;pointer-events:none}
.cfg-seg:disabled,.cfg-seg[disabled]{opacity:.42;cursor:not-allowed;pointer-events:none;background:transparent!important;color:var(--ink-3)!important}
.dd-btn:disabled,.dd-btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}
/* остальные кнопочные примитивы: disabled был лишь у .btn-семьи, .dd-btn и .cfg-seg — чипы/сегменты/иконки выпадали */
.chip:disabled,.seg:disabled,.icon-btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
/* бейдж «✨ Магия ведёт план» в шапке экрана «План» */
.plan-magic-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;
  font-size:var(--fs-12);font-weight:600;color:var(--accent-ink);white-space:nowrap;
  background:color-mix(in srgb,var(--accent) 13%,transparent);border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);
  animation:orglow 3.2s var(--ease) infinite}

/* §69: ссылки «Открыть в Лиге Ставок» (план/событие) */
.rec-ls{text-decoration:none}
.rec-ls:hover{color:var(--accent-ink);border-color:var(--accent-line)}   /* accent-ink — как в основном правиле компонента */
.hero-ls{flex-shrink:0;text-decoration:none;gap:5px}
/* «Магия колдует над планом» — заставка на экране «План», пока тюнер перекалибрует пакет и
   пересобирает план (plan.js: magicPrepHTML). Никаких виджетов, пока расчёты не завершатся. */
.magic-prep{display:flex;align-items:center;justify-content:center;min-height:56vh;padding:24px 16px}
.magic-prep-card{max-width:480px;width:100%;text-align:center;padding:36px 28px 30px;border-radius:var(--r);
  border:1px solid color-mix(in srgb,var(--accent) 26%,var(--line));background:var(--glass);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 10%,transparent),0 24px 60px -30px color-mix(in srgb,var(--accent) 55%,transparent);
  animation:orrise var(--dur-3) var(--ease) both}
.magic-prep-orb{position:relative;width:132px;height:132px;margin:0 auto 22px}
.mp-halo{position:absolute;inset:4px;border-radius:50%;
  background:radial-gradient(circle at 50% 46%,color-mix(in srgb,var(--accent) 55%,transparent),transparent 66%);
  filter:blur(6px);animation:mphalo 2.6s var(--ease) infinite}
/* эмодзи-глифы — декоративная арт-графика (не типографика): размер в rem, как иконочный глиф, а не по шкале --fs-* */
.mp-wiz{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:4rem;line-height:1;
  filter:drop-shadow(0 6px 14px color-mix(in srgb,var(--accent) 45%,transparent));animation:mpfloat 3s var(--ease) infinite}
.mp-spark{position:absolute;font-size:1.25rem;opacity:0;animation:mptwinkle 2.2s var(--ease) infinite}
.mp-s1{top:0;left:14px}
.mp-s2{top:16px;right:6px;font-size:1rem;animation-delay:.55s}
.mp-s3{bottom:8px;left:2px;font-size:.9rem;animation-delay:1.1s}
.mp-s4{bottom:0;right:20px;animation-delay:1.65s}
.magic-prep-title{font-size:var(--fs-20);font-weight:700;color:var(--ink-0);margin-bottom:8px}
.magic-prep-sub{font-size:var(--fs-14);color:var(--accent-ink);min-height:20px;font-weight:600}
.magic-prep-bar{position:relative;height:5px;border-radius:999px;overflow:hidden;margin:18px auto 14px;max-width:280px;
  background:color-mix(in srgb,var(--accent) 14%,transparent)}
.magic-prep-bar>span{position:absolute;top:0;bottom:0;left:0;width:38%;border-radius:999px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:mpbar 1.5s var(--ease) infinite}
.magic-prep-note{font-size:var(--fs-12);color:var(--ink-3);line-height:1.6;max-width:360px;margin:0 auto}
@keyframes mphalo{0%,100%{opacity:.5;transform:scale(.92)}50%{opacity:.9;transform:scale(1.06)}}
@keyframes mpfloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-9px) rotate(3deg)}}
@keyframes mptwinkle{0%,100%{opacity:0;transform:scale(.5)}45%{opacity:1;transform:scale(1.15)}}
/* бегунок едет transform-ом (не left): infinite-анимация left держала бы reflow каждый кадр */
@keyframes mpbar{0%{transform:translateX(-105%)}100%{transform:translateX(264%)}}

/* ==========================================================================
   АРХИВ ПЛАНА (§«Архив» на экране «План»): все рекомендации paper_bets +
   «сделана ли ставка по плану» + исход. Строки зеркалят .bh-list «Баланса».
   ========================================================================== */
.pa-grid{margin-bottom:10px}
.pa-note{display:flex;align-items:center;gap:7px;font-size:var(--fs-12);line-height:1.5}
.pa-note .msi{font-size:16px;flex:none}
.pa-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.pa-row{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;background:var(--surface-1);
  border:1px solid var(--line);border-left:3px solid var(--ev,var(--line-2));border-radius:var(--r);
  transition:background var(--dur-2) var(--ease)}
.pa-row.clickable{cursor:pointer}
.pa-row.clickable:hover{background:var(--hover-1)}
.pa-sico{flex:none}
.pa-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.pa-ev{font-size:var(--fs-14);font-weight:600;color:var(--ink-0)}
.pa-sub{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--fs-12);color:var(--ink-2)}
.pa-sel{font-weight:600;color:var(--ink-1)}
.pa-coef{color:var(--ink-1)}
.pa-stake{color:var(--accent)}
.pa-when{display:inline-flex;align-items:center;gap:4px}
.pa-when .msi{font-size:14px}
.pa-badges{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pa-res{display:inline-flex;align-items:center;gap:5px}
.pa-placed{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-12)}
.pa-placed.ok{color:var(--ink-1)}
.pa-placed.ok .msi{font-size:15px;color:var(--pos)}
.plan-view-seg{flex:none}
@media (max-width:760px){
  .pa-row{padding:11px 12px;gap:10px}
  .pa-badges{gap:8px}
}

/* ===================== АВТОМАТИКА: робот в шапке + экран /autobet ===================== */
/* Зелёный робот у банка — виден, пока автоматика включена (Shell.syncAuto). Онлайн = плейсер на связи. */
.auto-slot{display:flex;align-items:center}
.auto-robot{width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--surface-1);border:1px solid var(--line-2);color:var(--ink-2);cursor:pointer;position:relative;
  transition:background var(--dur-2) var(--ease),color var(--dur-2) var(--ease),transform var(--dur-1) var(--ease)}
.auto-robot .msi{font-size:20px}
.auto-robot:hover{background:var(--hover-1)}
.auto-robot:active{transform:scale(.94)}
.auto-robot.online{color:var(--pos);border-color:color-mix(in srgb,var(--pos) 42%,transparent);background:color-mix(in srgb,var(--pos) 13%,transparent)}
.auto-robot.online::after{content:"";position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:50%;
  background:var(--pos);box-shadow:0 0 0 3px color-mix(in srgb,var(--pos) 26%,transparent);animation:orpulse 1.6s var(--ease) infinite}
.auto-robot.offline{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent);background:color-mix(in srgb,var(--warn) 12%,transparent)}

.ab-page .page-head h1 .msi{font-size:26px;color:var(--accent-ink);vertical-align:-5px;margin-right:6px}
.ab-launch .ab-mode{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.ab-mode .t-sub{font-size:var(--fs-12)}
.ab-off{margin-left:auto}
.ab-kpis{margin-bottom:14px}
.ab-kpi-v{font-size:var(--fs-22);font-weight:800;margin-top:6px}
.ab-ext{display:flex;align-items:center;gap:9px;font-size:var(--fs-13);color:var(--ink-2)}
/* «Сверить сейчас» — форс-сверка кабинета в обход ночи (2026-07-18) */
.ab-syncnow-row{display:flex;align-items:center;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);flex-wrap:wrap}
.ab-syncnow-row .t-sub{font-size:var(--fs-12);flex:1;min-width:180px}
.ab-syncnow{border:1px solid var(--line-2);background:var(--surface-2);color:var(--ink-1);white-space:nowrap}
.ab-syncnow:hover:not(:disabled){background:var(--hover-1);color:var(--ink-0)}
/* тумблер автопродажи по сигналу cash-out (§8m AUTOBET.md) */
.ab-sell{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:var(--fs-13);color:var(--ink-2)}
.ab-sell b{color:var(--ink-0)}
.ab-sell .switch{cursor:pointer}
.ab-ext b{color:var(--ink-0)}
.ab-dot{width:9px;height:9px;border-radius:50%;flex:none}
.ab-dot.online{background:var(--pos);box-shadow:0 0 0 3px color-mix(in srgb,var(--pos) 24%,transparent)}
.ab-dot.offline{background:var(--warn)}
.ab-warn{display:flex;align-items:flex-start;gap:8px;margin-top:12px;padding:11px 13px;border-radius:var(--r-sm);
  font-size:var(--fs-12);color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,transparent);border:1px solid color-mix(in srgb,var(--warn) 28%,transparent)}
.ab-warn .msi{font-size:18px;flex:none}
/* «Кто и когда остановил автоматику» (§8t) — строка под KPI у ВЫКЛЮЧЕННОЙ автоматики */
.ab-stopwhy{display:flex;align-items:flex-start;gap:8px;margin-bottom:12px;font-size:var(--fs-12);color:var(--ink-2)}
.ab-stopwhy .msi{font-size:17px;flex:none;color:var(--ink-3)}
/* Панель «Устройства» (§8r): ставит ровно одно, остальные только смотрят */
.ab-devs{margin-top:14px}
.ab-devs-note{margin-bottom:12px}
.ab-devs-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.ab-dev{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 13px;
  border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);flex-wrap:wrap}
.ab-dev.own{border-color:color-mix(in srgb,var(--pos) 40%,var(--line));background:color-mix(in srgb,var(--pos) 8%,transparent)}
.ab-dev-l{display:flex;align-items:center;gap:10px;min-width:0}
.ab-dev-l b{font-size:var(--fs-13);color:var(--ink-0)}
.ab-dev-l .t-sub{font-size:var(--fs-12)}
.ab-dev-r{flex:none}
.ab-take{border:1px solid var(--line-2);background:var(--surface-1);color:var(--ink-1);white-space:nowrap;min-height:34px}
.ab-take:hover:not(:disabled){background:var(--hover-1);color:var(--ink-0)}
.ab-take .msi{font-size:16px;vertical-align:-3px;margin-right:5px}

.ab-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:var(--fs-11);font-weight:700;white-space:nowrap}
.ab-badge.ok{color:var(--pos);background:color-mix(in srgb,var(--pos) 15%,transparent)}
.ab-badge.err{color:var(--neg);background:color-mix(in srgb,var(--neg) 15%,transparent)}
.ab-badge.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 15%,transparent)}
.ab-badge.info{color:var(--accent-ink);background:var(--accent-weak)}
.ab-badge.mut{color:var(--ink-2);background:var(--surface-2)}

/* Панель «Что происходит сейчас» (телеметрия расширения) */
.ab-now{margin-top:14px}
.ab-act{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--r-sm);
  background:var(--surface-2);border:1px solid var(--line)}
.ab-act .msi{font-size:20px;flex:none;margin-top:1px}
.ab-act b{font-size:var(--fs-14);color:var(--ink-0)}
.ab-act .t-sub{margin-top:3px}
.ab-act.info{border-color:color-mix(in srgb,var(--accent-ink) 40%,var(--line));background:var(--accent-weak)}
.ab-act.info>.msi{color:var(--accent-ink)}
.ab-act.warn{border-color:color-mix(in srgb,var(--warn) 40%,var(--line));background:color-mix(in srgb,var(--warn) 10%,transparent)}
.ab-act.warn>.msi{color:var(--warn)}
.ab-act.mut>.msi{color:var(--ink-2)}
.ab-act-what{margin-top:6px;font-size:var(--fs-12);color:var(--ink-1)}
.ab-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:14px;
  background:var(--line);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}
.ab-fact{background:var(--surface-1);padding:11px 13px;min-width:0}
.ab-fact-l{font-size:var(--fs-11);color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em}
.ab-fact-v{margin-top:4px;font-size:var(--fs-13);color:var(--ink-1);overflow-wrap:anywhere}
.ab-fact-v b{color:var(--ink-0)}
.ab-fact-v.ok b{color:var(--pos)}
.ab-fact-v.warn b{color:var(--warn)}
.ab-fact-v.mut b{color:var(--ink-2)}
.ab-fact-sub{margin-top:3px;font-size:var(--fs-11);color:var(--ink-2);overflow-wrap:anywhere}
@media (max-width:640px){ .ab-facts{grid-template-columns:1fr} }

.ab-logp{margin-top:14px}
.ab-log{display:flex;flex-direction:column}
.ab-log-row{display:flex;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line)}
.ab-log-row:last-child{border-bottom:none}
/* строка с объяснением причины высокая — статус и вид спорта держим у названий команд, а не по центру */
.ab-log-row:has(.ab-log-why){align-items:flex-start}
.ab-log-sport{flex:none}
.ab-log-main{flex:1;min-width:0}
.ab-log-teams{font-size:var(--fs-14);font-weight:700;color:var(--ink-0);display:flex;align-items:center;gap:6px}
.ab-log-ls{color:var(--ink-3);display:inline-flex}
.ab-log-ls .msi{font-size:15px}
.ab-log-ls:hover{color:var(--accent-ink)}
.ab-log-mkt{margin-top:2px}
/* «почему отменена/не удалась»: заголовок причины + объяснение + хвост с цифрами (ab2_whyBlock) */
.ab-log-why{display:flex;gap:7px;margin-top:6px;padding:7px 9px;border-radius:8px;
  background:var(--surface-2);border:1px solid var(--line)}
.ab-log-why .msi{font-size:16px;flex:none;margin-top:1px;color:var(--ink-3)}
.ab-log-why b{font-size:var(--fs-12);font-weight:700;color:var(--ink-1)}
.ab-log-why .t-sub{margin-top:2px;font-size:var(--fs-11)}
.ab-log-why.err{background:color-mix(in srgb,var(--neg) 8%,transparent);border-color:color-mix(in srgb,var(--neg) 24%,transparent)}
.ab-log-why.err b,.ab-log-why.err .msi{color:var(--neg)}
.ab-log-why.warn{background:color-mix(in srgb,var(--warn) 8%,transparent);border-color:color-mix(in srgb,var(--warn) 24%,transparent)}
.ab-log-why.warn b,.ab-log-why.warn .msi{color:var(--warn)}
.ab-why-tail{margin-top:3px;font-size:var(--fs-11);color:var(--ink-3)}
.ab-log-right{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.ab-log-stake{font-size:var(--fs-14);font-weight:700;color:var(--ink-0)}
.ab-log-coef{color:var(--ink-2);font-weight:600;margin-left:2px}
.ab-log-when{font-size:var(--fs-11)}
.pop-item.pop-item-accent,.pop-item.pop-item-accent .msi{color:var(--accent-ink)}
@media (max-width:760px){
  .ab-off{margin-left:0;width:100%}
  .ab-log-row{padding:11px 14px;gap:10px}
}

/* ═════ БАННЕР КРИТИЧЕСКИХ ПРОБЛЕМ (§140) ══════════════════════════════════════════════════════
   Состояние «система не может работать», а не лента событий: висит, пока проблема жива. Живёт между
   топбаром и контентом (см. index.html) — поэтому виден на ЛЮБОМ экране, экраны его не перерисовывают.
   На десктопе прилипает под топбар (--topbar-h), на мобайле — обычным потоком: там высота шапки
   другая, а прилипший баннер съел бы и без того узкий экран. */
.alertbar{
  position:sticky;top:var(--topbar-h);z-index:calc(var(--z-topbar) - 1);
  margin:0;padding:12px 24px 0;
  background:linear-gradient(180deg,color-mix(in srgb,var(--neg) 13%,var(--glass)) 0%,var(--glass) 100%);
  backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur));
  border-bottom:1px solid color-mix(in srgb,var(--neg) 28%,transparent);
  animation:orrise var(--dur-3) var(--ease-out);
}
.alertbar.hidden{display:none}
.alertbar-head{display:flex;align-items:center;gap:10px;padding-bottom:12px}
.alertbar .msi.alertbar-ic{font-size:22px;color:var(--neg);flex:none}
.alertbar-title{flex:1;min-width:0;font-size:var(--fs-15);font-weight:700;color:var(--ink-0)}
.alertbar-more{flex:none;height:30px;padding:0 12px;border-radius:8px;font-size:var(--fs-12);font-weight:700;
  color:var(--on-accent);background:color-mix(in srgb,var(--neg) 78%,transparent);border:1px solid transparent}
.alertbar-more:hover{background:var(--neg)}
.alertbar-fold{flex:none;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  color:var(--ink-2);border:1px solid var(--line);transition:transform var(--dur-2) var(--ease)}
.alertbar-fold:hover{background:var(--surface-3);color:var(--ink-0)}
.alertbar-fold.open{transform:rotate(180deg)}
.alertbar-list{display:flex;flex-direction:column;gap:8px;padding-bottom:14px}
.alertbar-row{display:block;width:100%;text-align:left;padding:10px 13px;border-radius:10px;
  background:color-mix(in srgb,var(--neg) 8%,var(--surface-2));
  border:1px solid color-mix(in srgb,var(--neg) 22%,transparent)}
.alertbar-row:hover{background:color-mix(in srgb,var(--neg) 14%,var(--surface-2));
  border-color:color-mix(in srgb,var(--neg) 38%,transparent)}
.alertbar-row-t{display:block;font-size:var(--fs-13);font-weight:700;color:var(--ink-0)}
.alertbar-row-b{display:block;margin-top:3px;font-size:var(--fs-12);color:var(--ink-1);line-height:1.5;overflow-wrap:anywhere}
/* Модалка «подробно»: диагноз + что делать + куда идти чинить */
.health-card{padding:14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
.health-card + .health-card{margin-top:12px}
.health-card.focus{border-color:color-mix(in srgb,var(--neg) 45%,transparent);
  background:color-mix(in srgb,var(--neg) 9%,var(--surface-2))}
.health-card-t{display:flex;align-items:center;gap:8px;font-size:var(--fs-15);font-weight:700;color:var(--ink-0)}
.health-card-t .msi{font-size:19px;color:var(--neg)}
.health-card-b{margin-top:7px;font-size:var(--fs-13);color:var(--ink-1);line-height:1.55;overflow-wrap:anywhere}
.health-card-a{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);
  font-size:var(--fs-13);color:var(--ink-2);line-height:1.55}
.health-go{margin-top:12px}
@media (max-width:920px){
  .alertbar{position:static;padding:12px 16px 0}
}

/* ==========================================================================
   МОБИЛЬНЫЕ СИСТЕМНЫЕ ПРАВИЛА (аудит 2026-07-31 — .mobile-audit/REPORT.md)

   ⚠️ Здесь живут ПРАВИЛА, а не перечисления селекторов. До аудита три механизма
   («16px полям», «пол читаемости», «тач-цели ≥44px») были СПИСКАМИ классов, и
   каждый новый элемент по умолчанию оказывался ВНЕ правила — дефект возвращался
   снова и снова (§2 отчёта). Списки заменены на правила по ТИПУ элемента и по
   ТИПУ указателя. Не переписывать обратно в перечисление.
   ========================================================================== */
:root{
  --tap:44px;                 /* минимальная тач-цель (Apple HIG 44pt) */
  --tap-gap:8px;              /* минимальный зазор между соседними целями */
  --page-pad:13px;            /* отступ контейнера, мобильный */
  --page-pad-lg:24px;         /* отступ контейнера от 761px */
  --badge-bg:#d92d3f;         /* фон бейджа-счётчика: белый текст даёт 4.77:1 (у --neg было 3.36:1) */
  --fs-badge:10px;            /* ЦИФРА В КРУЖКЕ-СЧЁТЧИКЕ — единственное законное место 10px:
                                 на мобильном --fs-10 поднимается до 11px (пол читаемости),
                                 а бейджу 10px уместны и в 16px-кружок он влезает только так. */
}

/* --- 1. Длинное слово не должно распирать раскладку ------------------------
   overflow-wrap НАСЛЕДУЕТСЯ, поэтому одно объявление на контейнерах закрывает
   ВЕСЬ серверный текст (названия команд/лиг, метки ставок, идентификаторы).
   Раньше правило стояло точечно в 8 местах — там, где баг уже кусал, — и любое
   новое поле ломалось заново (замер: карточка плана уезжала на 59–90px).
   ⚠️ ДВА УРОВНЯ, и это не перестраховка:
   `break-word` НА КОНТЕЙНЕРАХ — общая сеть: длинное слово рвётся, когда не влезает
   в строку, но min-content ширина НЕ меняется, то есть раскладка остаётся прежней.
   `anywhere` ТОЛЬКО НА ТЕКСТЕ С СЕРВЕРА — он один влияет на min-content и лечит саму
   причину распирания (карточка плана уезжала на 59–90px).
   ⚠️ Ставить `anywhere` на контейнеры ЦЕЛИКОМ НЕЛЬЗЯ (пробовали 31.07): узкие
   колонки, чья ширина берётся от min-content, схлопываются до одного символа —
   подпись «с прогноза» на карточке события разорвалась как «с / прогноз / а».
   Элементы с white-space:nowrap не задеты ни тем, ни другим. */
.main,.sheet,.drawer,.pop,.dd-menu,.alertbar{overflow-wrap:break-word}
/* Текст, который приходит с сервера: имена команд/лиг, метки ставок, идентификаторы */
.ev-teams,.ev-team,.ev-side,.tc-teams,.pdm-sel,.pred-sel,.pred-team,
.rec-body,.rec-teams,.rec-title,.mb-leg-sel,.mb-leg,.bh-etext,.hero-tname,
.lever-label,.mkt-line,.adm-diag-name,.scope-unr-row{overflow-wrap:anywhere}

/* --- 2. Поля ввода: 16px на тач-устройствах -------------------------------
   iOS зумит страницу при фокусе в поле мельче 16px. Правило по ТИПУ элемента и
   по указателю (а не по max-width): планшет и телефон в ландшафте шире 760px,
   но это тач — прежнее правило их не покрывало. */
@media (pointer:coarse){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),
  textarea,select{font-size:var(--fs-16)}
}

/* --- 3. Тач-цели ----------------------------------------------------------
   Пол поднят с 40px до 44px. Микро-иконки внутри строк текста растить нельзя —
   им невидимая тач-зона псевдоэлементом (приём уже применяется у .switch/.term). */
@media (pointer:coarse){
  .chip,.seg,.cfg-seg,.dd-opt,.toggle,.alertbar-more,.alertbar-fold,.auto-robot,
  .rail-item,.scope-chip,.bookie,.btn-sec,.dd-btn,.btn-ghost{min-height:var(--tap)}
  .toggle,.alertbar-fold,.auto-robot,.chart-tool{min-width:var(--tap);min-height:var(--tap)}
  /* ссылка-иконка «открыть в ЛС» в журнале автоставок: 15×15 визуально → зона 45px */
  .ab-log-ls{position:relative}
  .ab-log-ls::after{content:"";position:absolute;inset:-15px}
  /* строка события в истории банка: высота 19px → зона 45px по вертикали */
  .bh-event{position:relative}
  .bh-event::after{content:"";position:absolute;inset:-13px -4px}
}

/* --- 4. Пол читаемости ----------------------------------------------------
   10px нечитаемы на телефоне. Поднимаем САМ ТОКЕН — это закрывает все 58 мест
   разом; цифра в кружке-счётчике остаётся исключением (там 10px уместны).
   ⚠️ Гейт по УКАЗАТЕЛЮ, а не по ширине: телефон в ландшафте — 844px, и правило
   с max-width:760px его не покрывало (ровно тот дефект, который здесь чинится). */
@media (pointer:coarse){
  :root{--fs-10:11px}
  .user-badge,.pop-item-badge,.mburger-badge,.tab-badge,.th-badge{font-size:var(--fs-badge)}
}

/* --- 5. Контраст ----------------------------------------------------------
   Вторичный текст живёт НА КАРТОЧКАХ, а не на фоне страницы: --ink-3 давал
   4.74:1 против --bg-0, но 3.91–4.31:1 на стекле. Пересчитано против самой
   светлой стеклянной поверхности rgb(30,32,39): ink-3 → 4.57:1, ink-2 → 5.78:1. */
:root{ --ink-2:#949aa9; --ink-3:#848b9b; }   /* 4.70:1 на самой светлой карточке rgb(31,34,44) */
.user-badge,.pop-item-badge,.mburger-badge,.tab-badge{background:var(--badge-bg)}

/* --- 6. Баннер критических проблем: потолок высоты и свёрнутая суть --------
   Развёрнутый список проблем не должен вытеснять продукт: на телефоне он занимал
   треть экрана, в ландшафте — весь экран целиком. Баннер остаётся видимым всегда
   (§140), ограничена только его ДОЛЯ экрана. */
.alertbar-sub{display:block;margin-top:2px;font-size:var(--fs-12);font-weight:400;color:var(--ink-1);line-height:1.4}
.alertbar-list{max-height:40vh;overflow-y:auto;overscroll-behavior:contain}
@media (max-height:560px){
  .alertbar-list{max-height:46vh}
  .alertbar-head{padding-bottom:9px}
}

/* --- 7. Ландшафт телефона: каркас выбирается по ВЫСОТЕ, а не только по ширине
   Телефон в ландшафте — 844×390: он шире брейкпоинта 760px, поэтому получал
   ДЕСКТОПНУЮ раскладку (боковой рельс 236px) на экране высотой 390px. Замер:
   хром съедал 72% высоты, до контента 524px = 1.34 экрана, нижние пункты рельса
   недостижимы. Признак «это телефон» — малая высота И грубый указатель. */
@media (max-height:500px) and (pointer:coarse){
  .rail{display:none}
  .crumb{display:none}
  .usermenu{display:none}
  .mhead{display:flex}
  .tabbar{display:flex}
  .drawer{display:flex}
  .drawer-bd{display:block}
  .main{padding:12px var(--page-pad) calc(66px + env(safe-area-inset-bottom))}
  .topbar{padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));gap:8px}
  .modal{align-items:flex-end;padding:0}
  .sheet{max-width:none;border-radius:20px 20px 0 0;max-height:94dvh;overscroll-behavior:contain;
    padding-bottom:calc(8px + env(safe-area-inset-bottom))}
  .toast{left:13px;right:13px;bottom:calc(70px + env(safe-area-inset-bottom));transform:none}
  .toast.show{transform:none}
  /* таб-бар ниже — экран короткий, каждый пиксель на счету */
  .tab{min-height:46px;padding:4px 2px 3px}
  .tab .msi{font-size:20px}
}
/* Выпадающее меню фильтра не должно вылезать за нижнюю кромку короткого экрана */
.dd-menu{max-height:min(340px,60dvh)}

/* --- 8. Рельс: динамическая высота вьюпорта -------------------------------
   100vh на мобильных браузерах больше видимой области (плавающая панель адреса)
   — низ рельса срезался. У .app dvh уже используется, здесь было забыто. */
.rail{height:100dvh}

/* .chip-strip — обёртка однородной полосы чипов (фильтры уведомлений). Нужен flex:
   у блочного контейнера строчные чипы переносятся сами, и overflow-x его не спасает. */
.chip-strip{display:flex;align-items:center;gap:var(--tap-gap)}

/* --- 9. Сегментные группы не распирают экран ------------------------------
   Замер: «Статистика» ехала вбок на 10px из-за .chip-group шириной 357px при
   экране 360px. Группа — это сегментный контрол, переносить его строкой нельзя;
   правильный мобильный приём — горизонтальная прокрутка внутри самой группы. */
@media (max-width:760px){
  .chip-group,.seg-group,.cfg-seg-group,.adm-tabs,.chip-strip{min-width:0;max-width:100%;flex-wrap:nowrap;
    overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .chip-group::-webkit-scrollbar,.seg-group::-webkit-scrollbar,.cfg-seg-group::-webkit-scrollbar,
  .adm-tabs::-webkit-scrollbar,.chip-strip::-webkit-scrollbar{display:none}
  .chip-group>.chip,.seg-group>.seg,.cfg-seg-group>.cfg-seg,.adm-tabs>.chip,.chip-strip>.chip{flex-shrink:0}
}

/* --- 10. Счёт не переносится ---------------------------------------------
   В зоне 761–920px десктопная колонка счёта слишком узкая, и «0 : 0» вставало
   в две строки (замер на iPad mini). Счёт короткий — переносить его незачем. */
.ev-score-n{white-space:nowrap}
@media (min-width:761px) and (max-width:920px){ .ev-score{min-width:62px} }

/* --- 11. Якорь не уезжает под липкую шапку --------------------------------
   Запас нужен ЛЮБОМУ элементу с id (переход по ссылке-якорю и scrollIntoView),
   а не только :target — :target применяется уже ПОСЛЕ перехода. */
[id]{scroll-margin-top:calc(var(--topbar-h) + 12px)}

/* --- 12. Ничего не раскрывается ТОЛЬКО по наведению -----------------------
   На тач-устройстве hover не существует: отложенная рекомендация была приглушена
   навсегда и не читалась.
   ⚠️ Приглушение НЕ снимаем совсем — оно несёт смысл («отложено»).
   Поднимаем до читаемого уровня: состояние по-прежнему видно, текст доступен.
   ⚠️ У ленты уведомлений приглушения прочитанного БОЛЬШЕ НЕТ ВООБЩЕ (2026-08-08) — заход на экран
   помечает всё прочитанным, так что оно накрывало бы ленту целиком, а его hover-снятие и было тем
   «морганием», из-за которого не получалось выделить текст. */
@media (pointer:coarse){
  .rec-card.rec-held{opacity:.85}
}

/* --- 13. Быстрые суммы в модалке ставки — видимые кнопки ------------------
   «.chip» без активного состояния не имеет ни фона, ни рамки: суммы читались
   как обычный текст. Здесь это не фильтр, а действие — фон нужен. */
.bet-quick .chip{background:var(--surface-2);border-color:var(--line);color:var(--ink-1)}
.bet-quick .chip:hover{background:var(--hover-2);color:var(--ink-0)}

/* --- 14. Кнопки подвала модалки не переносятся ----------------------------
   «Принять ставку» ломалась на две строки на 360px: у главного действия должно
   быть больше места, чем у «Отмены». */
.sheet-foot .btn,.sheet-foot .btn-sec{white-space:nowrap}
@media (max-width:430px){
  .sheet-foot .btn.grow{flex:1.7}
  .sheet-foot .btn-sec.grow{flex:1}
  .sheet-foot .btn{padding:0 12px;gap:6px}
}

/* --- 15. Модалки не отдают жест прокрутки странице ------------------------ */
.sheet-body{overscroll-behavior:contain}

/* --- 16. Компактная шапка экрана на мобильном -----------------------------
   До первой карточки события оставалось 77–100% высоты экрана. Заголовок в 26px
   и отступы, рассчитанные на десктоп, на телефоне съедают экран без пользы. */
@media (max-width:760px){
  .t-h1{font-size:var(--fs-22)}
  .page-head{margin-bottom:12px}
  .page-head .t-h1{margin-bottom:2px}
  .filters-row{margin-bottom:12px;gap:var(--tap-gap)}
}
@media (max-height:500px) and (pointer:coarse){
  .t-h1{font-size:var(--fs-20)}
  .page-head{margin-bottom:10px}
}

/* --- 17. Добор тач-целей по замеру after-прогона ---------------------------
   Оставшиеся контролы ниже 44px: поля ввода (высота задавалась под десктоп),
   сортируемые заголовки таблиц, свёртка секций и низкие инлайновые кнопки. */
@media (pointer:coarse){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),
  textarea,select{min-height:var(--tap)}
  .th,.th-sort,th{min-height:var(--tap)}
  .sec-head.sec-toggle{min-height:var(--tap)}
  /* невидимые зоны: визуал не растим, зона до 44+ */
  .switch::before{inset:-12px}
  .rec-why::after{inset:-15px}
  /* ⚠️ Пол 44px у .btn-ghost растил ВСЮ подпись карточки плана: «ⓘ» стоит ВНУТРИ строки текста, и
     .rec-sub становилась 65px вместо 39 (замер 02.08). Тач-зона у кнопки уже своя — ::after выше. */
  .btn-ghost.rec-why{min-height:0}
  .ntf-open{position:relative}
  .ntf-open::after{content:"";position:absolute;inset:-14px -6px}
  .rec-stake{position:relative}
  .rec-stake::after{content:"";position:absolute;inset:-5px 0}
}

/* --- 18. Добор II: таблицы, свёртки, имя команды в шапке события ----------
   ⚠️ min-height у ячейки таблицы игнорируется раскладкой таблиц — нужна height.
   ⚠️ Ячейка календаря (7 колонок) 44px на 360px не даёт НИ ПРИ КАКИХ отступах:
   306px под 7 ячеек = 43.7px максимум. Это осознанное исключение, не недоделка. */
@media (pointer:coarse){
  th,.tbl-head .th{height:var(--tap)}
  summary{min-height:var(--tap);display:flex;align-items:center}
  .hero-tname{position:relative}
  .hero-tname::after{content:"";position:absolute;inset:-9px -4px}
  /* пункты меню — независимые цели, зазор по норме */
  .drawer{gap:var(--tap-gap)}
}
/* метрика на карточке события — низкая кликабельная ячейка */
@media (pointer:coarse){
  .px-cell.px-click{position:relative}
  .px-cell.px-click::after{content:"";position:absolute;inset:-4px 0}
}

/* --- 19. Выравнивание шапки баннера ---------------------------------------
   Свёрнутый баннер несёт заголовок + суть (2–4 строки). При align-items:center
   иконка и «Подробно» повисали по центру этого блока и читались как съехавшие. */
.alertbar-head{align-items:flex-start}
.alertbar .msi.alertbar-ic,.alertbar-more,.alertbar-fold{margin-top:1px}

/* --- 20. Служебные кнопки «Настроек» — ровный столбик, а не лесенка -------
   «Сохранить / Загрузить / Сбросить к рекомендуемым» вставали друг под другом
   с разной шириной по контенту: рваный правый край читается как небрежность.
   На узком экране это одна колонка полной ширины с общим выравниванием. */
@media (max-width:520px){
  .cfg-head-acts,.cfg-snap-acts{width:100%;flex-direction:column;align-items:stretch;gap:var(--tap-gap)}
  .cfg-head-acts .cfg-rec-btn,.cfg-head-acts .cfg-reset-btn{width:100%;justify-content:flex-start}
  .cfg-snap-when{margin-left:auto}
}

/* --- 21. Добор III (по замеру after) --------------------------------------
   Строка баннера не дотягивала 1px до нормы, узкий сегмент сжимался до 30px.
   ⚠️ Ячейка календаря остаётся исключением: 7 колонок в 306px дают максимум
   43.7px на ячейку при НУЛЕВЫХ отступах — 44px там недостижимы в принципе. */
@media (pointer:coarse){
  .alertbar-row,.crumb{min-height:var(--tap)}
  .seg,.chip{min-width:var(--tap)}
}
