/* app.css — компонентная библиотека Suv mini-app «светлый редакторский».
 *
 * Язык: тёплый белый фон, почти-чёрные чернила, ОДИН зелёный акцент (скупо),
 * hairline-границы вместо теней, линейные иконки, много воздуха, tabular-nums для чисел,
 * тонкая анимация 150–200ms. Все цвета/отступы/радиусы — из tokens.css.
 *
 * Порядок: reset → header/nav → таблица лидов (Attio-style) → карточка-панель лида →
 * бейджи/чипы/фит → кнопки/поля → ICP/поиск → аналитика → опт-ин → состояния → тост/панель → motion.
 */

@import url("./tokens.css?v=20260929a");

/* Onest (self-hosted, v2 2026-09-29) — кириллица + латиница (узбекская oʻ/gʻ в latin). */
@font-face { font-family: "Onest"; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url("../fonts/onest-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Onest"; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url("../fonts/onest-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Onest"; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url("../fonts/onest-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* ПРИНЦИПЫ дизайн-системы (Apple/Emil-вайб — держать при любой правке):
 *   - Иерархию строим ВОЗДУХОМ и ТИПОГРАФИКОЙ (size+weight+leading+tracking), не рамками.
 *   - Акцент (коралл) СКУПО: действие/активное/фокус. Не раскрашиваем интерфейс.
 *   - Тач-таргет >=44px (в плотных тулбарах hit-area через ::before на pointer:coarse).
 *   - hover-стили только под media-гейт «hover + pointer fine»; active-стиль на всех (тач тоже).
 *   - safe-area (env) на плавающей хроме; reduced-motion + reduced-transparency уважаем.
 *   - Не стакаем светлое-на-светлом (стекло на стекле — читаемость рушится).
 *   - Никаких магических px — только токены (spacing/radius/shadow/type/motion). */

/* ─────────────────────────── reset / база ─────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
/* mobile-native: убрать серо-синюю вспышку при тапе глобально (было только на .fit-ring) */
/* Сплошной светлый фон под ВСЕМ (html): оверскролл/переключение экранов больше не
 * показывают тёмную подложку клиента Telegram (light-warm 2026-09-21). */
html { -webkit-tap-highlight-color: transparent; background: var(--bg); }

body {
  font-family: var(--font-sans);
  font-size: var(--text-md);
  line-height: var(--leading-normal);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  padding-bottom: env(safe-area-inset-bottom);
  /* mobile-native: у приложения свой pull-to-refresh на доске (board.js) — гасим
   * браузерный PTR/rubber-band по вертикали, чтобы он не конкурировал. Кастомный PTR
   * читает дельту touch.clientY и не зависит от нативного bounce, поэтому не ломается. */
  overscroll-behavior-y: none;
  /* v2 «Нейтральный pro»: ровный почти-белый фон без ambient-пятен. */
  background: var(--bg);
}

h1, h2, h3, h4, p, ul, figure { margin: 0; }
ul { padding: 0; list-style: none; }

/* [hidden] должен побеждать display компонентов (напр. .btn-back{display:inline-flex}). */
[hidden] { display: none !important; }

/* mobile-native: страховка — на тач-устройствах любое поле ввода ≥16px, иначе iOS
 * Safari зумит страницу при фокусе. Именованные поля уже используют --text-input;
 * это ловит любые голые input/textarea/select. */
@media (pointer: coarse) {
  input, textarea, select { font-size: var(--text-input); }
}

/* apple-design §14: prefers-reduced-transparency — стекло делаем плотным
 * (backdrop-filter off + непрозрачный фон), чтобы текст не терял контраст.
 * Переопределяем glass-токены → все стеклянные поверхности реагируют разом. */
@media (prefers-reduced-transparency: reduce) {
  :root {
    --glass-bg: var(--surface);
    --glass-bg-strong: var(--surface);
    --glass-blur: 0px;
  }
  .topbar, .topbar__nav, .sheet, .lead-sheet, .glass, [class*="-glass"] { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
}

a { color: var(--link); text-decoration: none; }
@media (hover: hover) and (pointer: fine) { a:hover { text-decoration: underline; } }

/* числа выравниваем табличными цифрами повсеместно, где это данные */
.tnum, .card__count, .funnel-row__val, .wr-row__pct, .sq-metric__val,
.calib-row__bin, .ab-row__pct, .transition__n, .score-dots__label { font-variant-numeric: tabular-nums; }

/* Единый видимый фокус — только для клавиатуры. Кольцо в акценте. */
:focus-visible {
  outline: 2px solid transparent;
  box-shadow: var(--shadow-focus);
  border-radius: var(--radius-sm);
}

.visually-hidden {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ─────────────────────────── линейные SVG-иконки ─────────────────────────── */
.icon {
  width: 1em; height: 1em; flex: none;
  fill: none; stroke: currentColor;
  stroke-width: 1.7;              /* stroke чуть плотнее на светлом фоне */
  stroke-linecap: round; stroke-linejoin: round;
  vertical-align: -0.15em;
}
.icon--sm { width: 14px; height: 14px; }
.icon--md { width: 16px; height: 16px; }

/* ─────────────────────────── топбар / хедер ─────────────────────────── */
/* Шапка = ПЛАВАЮЩАЯ скруглённая стеклянная панель (2026-09-23), а не прямоугольник во всю
 * ширину. Сам .topbar — прозрачная sticky-обёртка с полями; видимая карточка = __inner. */
.topbar {
  position: sticky; top: 0; z-index: var(--z-header);
  background: transparent; border: 0;
  padding: max(var(--space-2), env(safe-area-inset-top)) var(--space-3) var(--space-1);
}
.topbar__inner {
  display: flex; align-items: center; justify-content: center; gap: var(--space-3);
  position: relative;
  max-width: 1240px; margin: 0 auto;
  padding: var(--space-2) var(--space-3);
  min-height: 50px;
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-glass), inset 0 1px 0 var(--glass-hi);
}

/* Переключатель воркспейсов в шапке (docs/26) — компактная пилюля СЛЕВА (2026-09-24):
 * #ws-slot позиционирован absolute слева (как .btn-back), лого остаётся по центру. */
.topbar__status { position: relative; display: inline-flex; align-items: center; gap: var(--space-2); }
.ws-slot {
  position: absolute; left: var(--space-3); top: 50%; transform: translateY(-50%);
  z-index: 1;
}
.ws-slot[hidden] { display: none; }
.ws-switch {
  display: inline-flex; align-items: center; gap: 5px; max-width: 42vw;
  padding: 5px 8px 5px 10px; border-radius: var(--radius-pill);
  background: var(--surface); border: 1px solid var(--border); color: var(--text);
  font: inherit; font-size: var(--text-sm); font-weight: var(--weight-medium); cursor: pointer;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  transition: background var(--dur-fast) var(--ease-standard);
}
.ws-switch:active { background: var(--surface-hover); }
.ws-switch__ic { width: 15px; height: 15px; flex: none; color: var(--accent-strong); }
.ws-switch__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ws-switch__chev { width: 14px; height: 14px; flex: none; color: var(--text-faint); transform: rotate(90deg); transition: transform var(--dur-fast) var(--ease-standard); }
.ws-switch[aria-expanded="true"] .ws-switch__chev { transform: rotate(-90deg); }
.ws-menu {
  position: absolute; top: calc(100% + 8px); left: 0; z-index: var(--z-panel);
  min-width: 210px; display: flex; flex-direction: column; gap: 2px; padding: 6px;
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg); box-shadow: var(--shadow-glass);
  animation: fade-up var(--dur-fast) var(--ease-standard);
}
.ws-menu__item {
  display: flex; align-items: center; gap: var(--space-2); width: 100%; text-align: left;
  padding: 9px var(--space-3); border: 0; background: none; border-radius: var(--radius-md);
  font: inherit; font-size: var(--text-md); color: var(--text); cursor: pointer; touch-action: manipulation;
}
.ws-menu__item .icon { width: 16px; height: 16px; flex: none; color: var(--text-muted); }
.ws-menu__item:active { background: var(--surface-hover); }
.ws-menu__item.is-active, .ws-menu__item.is-active .icon { color: var(--accent-strong); }
.ws-menu__label { flex: 1; min-width: 0; }
.ws-menu__check { margin-left: auto; width: 16px; height: 16px; color: var(--accent-strong); }
.b2c-tab { display: flex; flex-direction: column; gap: var(--space-4); }

/* бренд: логотип-плитка (градиентная капля+волна) + вордмарк. Кликабелен → на главную. */
.brand {
  display: inline-flex; align-items: center; gap: var(--space-3); min-width: 0;
  text-decoration: none;
  transition: opacity var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .brand:hover { text-decoration: none; opacity: 0.86; } }
.brand__mark {
  width: 32px; height: 32px; flex: none; display: block;
  border-radius: var(--radius-md);
  box-shadow: 0 3px 10px -3px rgba(232, 90, 79, 0.40), inset 0 1px 0 rgba(255,255,255,0.55);
}
.brand__logo { width: 100%; height: 100%; display: block; border-radius: var(--radius-md); }
.brand__text { display: inline-flex; flex-direction: column; gap: 0; line-height: 1; }
.brand__name {
  font-size: var(--text-lg); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); color: var(--text);
}
.brand__sub {
  font-size: 9.5px; color: var(--text-faint);
  font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-wider); text-transform: uppercase; margin-top: 1px;
}
.topbar__status { display: inline-flex; align-items: center; gap: var(--space-2); margin-left: auto; }

/* ═══ Навигация: нижний СТЕКЛЯННЫЙ таб-бар (thumb-зона, на ВСЕХ ширинах) ═══
 * .topbar__nav — ПРЯМОЙ потомок <body> (не внутри .topbar): у шапки backdrop-
 * filter, а он делает элемент containing-block для fixed-потомков, из-за чего
 * бар прижимался бы к низу ШАПКИ, а не экрана. Иконка над подписью, safe-area
 * снизу, матовое стекло. Те же id → логика active в app.js не трогается. */
.topbar__nav {
  position: fixed; z-index: var(--z-header);
  left: 12px; right: 12px; bottom: calc(10px + env(safe-area-inset-bottom));
  margin: 0 auto; max-width: 480px;
  display: flex; align-items: stretch; justify-content: space-around; gap: 2px;
  padding: 7px 8px;
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke);
  border-radius: var(--radius-xl);
  box-shadow: inset 0 1px 0 var(--glass-hi), 0 10px 34px -8px rgba(28, 25, 23, 0.16),
              0 2px 8px -3px rgba(28, 25, 23, 0.10);
}
.nav-link {
  position: relative; flex: 1 1 0; min-width: 0;
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 7px 2px 5px; border-radius: var(--radius-lg);
  border: none; background: none; color: var(--text-muted);
  text-decoration: none;
  transition: color var(--dur-fast) var(--ease-standard),
              background var(--dur-base) var(--ease-standard);
}
/* :active нужен и на тач — вне hover-гейта; :hover — только для мыши */
.nav-link:active { color: var(--text); text-decoration: none; }
@media (hover: hover) and (pointer: fine) { .nav-link:hover { color: var(--text); text-decoration: none; } }
.nav-link .icon {
  width: 22px; height: 22px; color: var(--text-muted);
  transition: color var(--dur-fast) var(--ease-standard),
              transform var(--dur-base) var(--ease-spring);
}
.nav-link__text {
  font-size: 10px; font-weight: var(--weight-medium);
  letter-spacing: 0.02em; line-height: 1; max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* активный таб — мягкая акцентная «пилюля»-подложка (iOS floating tab) */
.nav-link.is-active { color: var(--accent-strong); background: var(--accent-soft); }
.nav-link.is-active .nav-link__text { color: var(--accent-strong); font-weight: var(--weight-semibold); }
.nav-link.is-active .icon { color: var(--accent-strong); transform: translateY(-1px); }
/* контент не заезжает под плавающий бар */
.app { padding-bottom: calc(96px + env(safe-area-inset-bottom)); }

.mode-badge {
  font-size: var(--text-2xs); text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  background: var(--surface-2); color: var(--text-muted);
  padding: 3px var(--space-2); border-radius: var(--radius-sm);
  font-weight: var(--weight-semibold);
  border: 1px solid var(--border);
}

/* Кнопка «назад» */
.btn-back {
  display: inline-flex; align-items: center; gap: 4px;
  position: absolute; left: var(--space-3); top: 50%; transform: translateY(-50%);
  background: none; border: none; color: var(--text-muted);
  font: inherit; font-weight: var(--weight-medium); cursor: pointer;
  padding: 6px var(--space-2); border-radius: var(--radius-sm);
  transition: color var(--dur-fast) var(--ease-standard), background var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .btn-back:hover { background: var(--surface-hover); color: var(--text); } }
.btn-back .icon { width: 16px; height: 16px; }

/* ─────────────────────────── access-баннер (подписка) ─────────────────────────── */
/* access-баннер = отдельная скруглённая карточка ПОД плавающей шапкой (2026-09-23). */
.access-banner {
  display: flex; align-items: center; gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  margin: var(--space-2) auto 0; max-width: 1240px;
  font-size: var(--text-xs); line-height: var(--leading-snug);
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
}
.access-banner .icon { flex: none; }
.access-banner__text { flex: 1; }
.access-banner--trial { color: var(--warn); background: var(--warn-soft); }
.access-banner--locked { color: var(--danger); background: var(--danger-soft); }
.access-banner__cta { font-weight: var(--weight-semibold); color: inherit; text-decoration: underline; white-space: nowrap; }

/* Баннер режима «поставщики» (docs/33 B): честный контекст на доске #/suppliers. */
.supplier-banner {
  display: flex; align-items: center; gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  margin: var(--space-2) auto 0; max-width: 1240px;
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  background: var(--surface-2, var(--surface));
}
.supplier-banner__icon { flex: none; display: inline-flex; color: var(--text); }
.supplier-banner__sub { font-size: var(--text-xs); line-height: var(--leading-snug); color: var(--text-muted); }

/* Честный пустой стейт линзы «поиск поставщика» (docs/33 B2). База — .empty. */
.supplier-empty__title { font-weight: var(--weight-semibold); color: var(--text); margin-bottom: var(--space-1); }
.supplier-empty__actions { display: flex; justify-content: center; margin-top: var(--space-3); }

/* ─────────────────────────── контейнер ─────────────────────────── */
/* низ = клиренс под плавающий таб-бар (иначе shorthand перебивал padding-bottom выше
 * → бар перекрывал конец страницы). */
.app { padding: var(--space-6) var(--space-5) calc(96px + env(safe-area-inset-bottom)); max-width: 1240px; margin: 0 auto; }
.loader { text-align: center; color: var(--text-muted); padding: var(--space-12) var(--space-4); font-size: var(--text-sm); }

/* ─────────────────────────── заголовок страницы (общий) ─────────────────────────── */
.page-head { margin-bottom: var(--space-6); }
/* Плотный вариант шапки без подзаголовка (доска): заголовок вплотную к контролам,
 * чтобы строки лида поднимались выше сгиба на телефоне. */
.page-head--tight { margin-bottom: var(--space-3); }
.page-head__title {
  font-size: var(--text-2xl); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tighter); line-height: var(--leading-tight);
  color: var(--text);
}
.page-head__sub {
  margin-top: var(--space-2); font-size: var(--text-md);
  color: var(--text-muted); line-height: var(--leading-snug); max-width: 62ch;
}

/* ─────────────────────────── тулбар доски ─────────────────────────── */
.board-toolbar {
  display: flex; align-items: center; gap: var(--space-3);
  margin-bottom: var(--space-3); flex-wrap: wrap;
}
.board-toolbar__spacer { flex: 1; }

/* Экспорт с выбором формата (CSV / amoCRM / Bitrix) — сплит-кнопка + меню. */
.export-menu { position: relative; display: inline-flex; }
/* компактная иконка-кнопка экспорта (дизайн-проход 2026-09-17): без текста */
.export-menu .export-menu__trigger { padding-left: var(--space-3); padding-right: var(--space-3); }
.export-menu .export-menu__trigger .btn__label:empty { display: none; }
.export-menu__pop {
  position: absolute; top: calc(100% + 6px); right: 0; z-index: var(--z-sticky);
  min-width: 180px; padding: var(--space-1);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-md); box-shadow: var(--shadow-lg);
  display: flex; flex-direction: column; gap: 2px;
}
.export-menu__item {
  display: flex; align-items: baseline; gap: var(--space-2); width: 100%; text-align: left;
  font: inherit; font-size: var(--text-sm); color: var(--text);
  background: none; border: none; border-radius: var(--radius-sm);
  padding: 7px var(--space-3); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .export-menu__item:hover { background: var(--surface-hover); } }
.export-menu__item:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.export-menu__item-sub { font-size: var(--text-2xs); color: var(--text-faint); margin-left: auto; }

/* тумблер «сначала неуверенные» — role=switch, спокойный hairline */
.sort-toggle {
  display: inline-flex; align-items: center; gap: var(--space-2);
  font: inherit; font-size: var(--text-sm); font-weight: var(--weight-medium);
  color: var(--text-muted);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 6px var(--space-3) 6px var(--space-3); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard),
              color var(--dur-fast) var(--ease-standard),
              border-color var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .sort-toggle:hover { background: var(--surface-hover); color: var(--text); } }
.sort-toggle .icon { width: 15px; height: 15px; color: var(--text-faint); }
.sort-toggle__knob {
  position: relative; width: 30px; height: 16px; flex: none;
  border-radius: var(--radius-pill); background: var(--border-strong);
  transition: background var(--dur-fast) var(--ease-standard);
}
.sort-toggle__knob::after {
  content: ""; position: absolute; top: 2px; left: 2px;
  width: 12px; height: 12px; border-radius: 50%;
  background: var(--surface); box-shadow: var(--shadow-md);
  transition: transform var(--dur-fast) var(--ease-standard);
}
.sort-toggle.is-active { color: var(--text); border-color: var(--border-strong); }
.sort-toggle.is-active .icon { color: var(--accent-strong); }
.sort-toggle.is-active .sort-toggle__knob { background: var(--text); }
.sort-toggle.is-active .sort-toggle__knob::after { transform: translateX(14px); }

.board-toolbar__hint {
  font-size: var(--text-xs); font-weight: var(--weight-medium);
  color: var(--accent-strong);
  background: var(--accent-soft);
  border: 1px solid var(--border);
  padding: 4px var(--space-2); border-radius: var(--radius-sm);
}

/* ═══════════════════════════ таблица лидов (Attio-style) ═══════════════════════════ */
.lead-table-wrap {
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--surface);
  box-shadow: var(--shadow-card);
}
.lead-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--text-md);
}
.lead-table thead th {
  text-align: left;
  font-size: var(--text-2xs);
  font-weight: var(--weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--text-faint);
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border);
  background: var(--surface-2);
  white-space: nowrap;
}
.lead-table tbody tr {
  border-bottom: 1px solid var(--border-subtle);
  transition: background var(--dur-fast) var(--ease-standard),
              transform var(--dur-fast) var(--ease-standard);
}
.lead-table tbody tr:last-child { border-bottom: none; }
@media (hover: hover) and (pointer: fine) { .lead-table tbody tr:hover { background: var(--surface-hover); } }
/* Вся строка — тап-мишень (открывает карточку), не только название/«Открыть». */
.lead-table tbody tr { cursor: pointer; }
/* apple-design: мгновенный тактильный отклик на нажатие строки — :active нужен и на тач */
.lead-table tbody tr:active { background: var(--surface-hover); transform: scale(0.99); }
.lead-table tbody tr.is-needs-label td:first-child { box-shadow: inset 2px 0 0 var(--text); }
.lead-table td { padding: var(--space-3) var(--space-4); vertical-align: middle; }

/* колонка «компания» — крупнее, кликабельна */
.lt-company { min-width: 220px; }
.lt-company .why-now--inline { margin-top: 6px; max-width: 340px; }
.lt-company__btn {
  display: inline-flex; align-items: baseline; gap: var(--space-2);
  background: none; border: none; padding: 0; margin: 0; text-align: left;
  font: inherit; font-size: var(--text-md); font-weight: var(--weight-semibold);
  color: var(--text); cursor: pointer; letter-spacing: -0.005em;
}
@media (hover: hover) and (pointer: fine) { .lt-company__btn:hover { color: var(--accent-strong); } }
.lt-tin { font-variant-numeric: tabular-nums; color: var(--text-muted); font-size: var(--text-sm); white-space: nowrap; }
.lt-region { color: var(--text-muted); font-size: var(--text-sm); white-space: nowrap; }
.lt-signals { max-width: 280px; }
.lt-signals__row { display: flex; flex-wrap: wrap; gap: 5px; }
.lt-fit { white-space: nowrap; }
.lt-status { white-space: nowrap; }
.lt-actions { white-space: nowrap; text-align: right; }
.lt-actions__row { display: inline-flex; gap: var(--space-2); justify-content: flex-end; }

/* мобильная адаптация: прячем менее важные колонки, таблица дышит */
@media (max-width: 860px) {
  .app { padding: var(--space-4) var(--space-4) calc(96px + env(safe-area-inset-bottom)); }
  .lt-hide-md { display: none; }
  .lead-table td, .lead-table thead th { padding: var(--space-3); }
}
/* Мета-строка «регион · сфера» — атрибут мобильной карточки, на десктопе скрыта
 * (там отдельные колонки таблицы). */
.lt-meta-mobile { display: none; }

/* ═══ МОБИЛЬНАЯ ДОСКА = КАРТОЧКИ КОМПАНИЙ (редизайн 2026-09-15) ═══
 * Таблица на телефоне разваливалась в шумную простыню. Теперь каждый лид —
 * самостоятельная карточка с иерархией: имя → регион·сфера → «почему сейчас» →
 * сигналы → (фит + статус) одной строкой. ИНН/кнопка «Открыть» на мобиле не
 * нужны (вся карточка — тап-мишень). */
@media (max-width: 560px) {
  /* ВАЖНО: селектор с td — иначе `.lead-table td {display:block}` (специфичнее
   * класса) перебивал hide, и ИНН/регион/«Открыть» «просачивались» на мобилу
   * (давний баг, вскрыт редизайном 2026-09-15). */
  .lead-table td.lt-hide-sm { display: none; }
  /* бейдж чёткое/похоже дублирует точки фита — прячем; дайджест — одна строка */
  .lt-company .badge--label { display: none; }
  .digest__sub { display: none; }
  .digest { padding: var(--space-2) var(--space-3); }

  /* контейнер таблицы растворяется — карточки лежат прямо на фоне */
  .lead-table-wrap {
    background: transparent; border: none; box-shadow: none;
    -webkit-backdrop-filter: none; backdrop-filter: none;
    overflow: visible; border-radius: 0;
  }
  .lead-table thead { display: none; }
  .lead-table, .lead-table tbody { display: block; width: 100%; }
  .lead-table tbody tr {
    display: flex; flex-wrap: wrap; align-items: center;
    row-gap: 2px; column-gap: var(--space-2);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
    padding: var(--space-4);
    margin-bottom: var(--space-3);
  }
  .lead-table tbody tr:last-child { margin-bottom: 0; border-bottom: 1px solid var(--border); }
  .lead-table td { display: block; padding: 0; border: none; }

  /* иерархия карточки */
  .lt-company { width: 100%; min-width: 0; }
  .lt-company__btn { font-size: var(--text-base); line-height: var(--leading-snug); }
  .lt-meta-mobile {
    display: block; margin-top: 2px;
    font-size: var(--text-xs); color: var(--text-muted);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .lead-table td.lt-region { display: none; }   /* дубль мета-строки */
  .lt-signals { width: 100%; max-width: none; margin-top: var(--space-2); }
  .lt-fit { margin-right: auto; margin-top: var(--space-2); }
  .lt-status { margin-top: var(--space-2); }
  .lead-table td.lt-actions { display: none; }   /* вся карточка — тап-мишень */

  .lead-table tbody tr.is-needs-label td:first-child { box-shadow: none; }
  .lead-table tbody tr.is-needs-label { box-shadow: var(--shadow-card), inset 2px 0 0 var(--border-strong); }

  /* «почему сейчас» — во всю ширину, до 2 строк без обрезки «…» */
  .lt-company .why-now--inline { max-width: 100%; margin-top: var(--space-2); }
  .lt-company .why-now--inline .why-now__text {
    white-space: normal;
    display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2;
    -webkit-box-orient: vertical; overflow: hidden;
  }
}

/* ─────────────────────────── фит-индикатор (минималист: 5 точек) ─────────────────────────── */
.score-dots { display: inline-flex; align-items: center; gap: var(--space-2); }
.score-dots__track { display: inline-flex; gap: 3px; }
.score-dots__dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--border-strong);
}
.score-dots__dot.is-on { background: var(--text); }
.score-dots--muted .score-dots__dot.is-on { background: var(--text-faint); }
.score-dots__label { font-size: var(--text-xs); color: var(--text-muted); font-weight: var(--weight-medium); }

/* линейный тонкий бар-вариант фита (для карточки-панели) */
.score-bar { display: flex; flex-direction: column; gap: 6px; min-width: 120px; }
.score-bar__track { height: 4px; border-radius: var(--radius-pill); background: var(--surface-sunken); overflow: hidden; }
.score-bar__fill { height: 100%; background: var(--text); border-radius: var(--radius-pill); transition: width var(--dur-slow) var(--ease-emphasized); }
.score-bar--muted .score-bar__fill { background: var(--text-faint); }
.score-bar__meta { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
.score-bar__pct { font-size: var(--text-xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tight); font-variant-numeric: tabular-nums; }
.score-bar__cap { font-size: var(--text-xs); color: var(--text-muted); text-transform: uppercase; letter-spacing: var(--tracking-wide); }

/* ─────────────────────────── статус-select (спокойный) ─────────────────────────── */
.status-select-wrap { position: relative; display: inline-flex; align-items: center; }
.status-select {
  appearance: none; -webkit-appearance: none;
  font: inherit; font-size: var(--text-input); font-weight: var(--weight-medium);
  color: var(--text); min-height: 44px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 10px 28px 10px var(--space-3);
  cursor: pointer;
  transition: border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
}
@media (hover: hover) and (pointer: fine) { .status-select:hover { background: var(--surface-hover); border-color: var(--border-strong); } }
.status-select:focus-visible { outline: none; border-color: var(--accent-strong); box-shadow: var(--shadow-focus); }
.status-select-wrap::after {
  content: ""; position: absolute; right: 10px; top: 50%;
  width: 7px; height: 7px; border-right: 1.5px solid var(--text-faint); border-bottom: 1.5px solid var(--text-faint);
  transform: translateY(-70%) rotate(45deg); pointer-events: none;
}
.status-select.is-loading { opacity: 0.55; pointer-events: none; }

/* ─────────────────────────── бейджи / чипы ─────────────────────────── */
.badge {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: var(--text-xs); font-weight: var(--weight-medium);
  padding: 3px var(--space-2); border-radius: var(--radius-sm);
  white-space: nowrap; line-height: 1.4;
  border: 1px solid var(--border);
  background: var(--surface); color: var(--text-muted);
}
.badge .icon { width: 12px; height: 12px; stroke-width: 1.8; }
/* фит-метка: «Чётко» несёт лёгкий акцент, «Похоже» — нейтраль */
.badge--clear { color: var(--accent-strong); border-color: var(--border); background: var(--accent-soft); }
.badge--clear .icon { color: var(--accent-strong); }
.badge--maybe { color: var(--text-muted); border-color: var(--border-strong); background: var(--surface-2); }
.badge--muted { color: var(--text-faint); border-color: var(--border); background: var(--surface); }
.badge--needs-label { color: var(--accent-strong); border-color: var(--border); background: var(--accent-soft); }
/* «Похожие» — лид из расширенной ЦА (never-empty): нейтрально-информационный. */
.badge--relaxed { color: var(--info); border-color: color-mix(in srgb, var(--info) 26%, transparent); background: var(--info-soft); }
.badge--relaxed .icon { color: var(--info); }
/* «Просрочено» — есть просроченная задача (P1-B): тревожный тон (кому звонить сейчас). */
.badge--overdue { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 30%, transparent); background: var(--danger-soft); }
.badge--overdue .icon { color: var(--danger); }

/* ── Задачи/напоминания на лиде (P1-B, docs/30) ── */
.lead-tasks__list { display: flex; flex-direction: column; gap: var(--space-2); margin: var(--space-2) 0; }
.lead-tasks__empty { display: flex; align-items: center; gap: var(--space-2);
  color: var(--text-faint); font-size: var(--text-footnote); margin: var(--space-2) 0; }
.lead-tasks__empty .icon { flex: none; width: 14px; height: 14px; }

.lead-task { display: flex; align-items: flex-start; gap: var(--space-2);
  padding: var(--space-2) var(--space-3); border: 1px solid var(--border);
  border-radius: var(--radius-md); background: var(--surface); }
.lead-task.is-overdue { border-color: color-mix(in srgb, var(--danger) 35%, transparent);
  background: var(--danger-soft); }
.lead-task.is-done { opacity: 0.6; }
.lead-task.is-done .lead-task__title { text-decoration: line-through; }
/* Чекбокс-тоггл: тач-таргет ≥44px (mobile-native). */
.lead-task__check { flex: none; display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; min-height: 44px; margin: -10px 0 -10px -8px;
  background: none; border: 0; color: var(--text-muted); cursor: pointer; }
.lead-task.is-done .lead-task__check { color: var(--accent-strong); }
.lead-task__body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; padding-top: 2px; }
.lead-task__title { font-size: var(--text-body); color: var(--text); word-break: break-word; }
.lead-task__due { display: inline-flex; align-items: center; gap: 5px; flex-wrap: wrap;
  font-size: var(--text-caption); color: var(--text-muted); }
.lead-task__due .icon { width: 12px; height: 12px; }
.lead-task__badge--overdue { color: var(--danger); font-weight: 600; }
.lead-task__del { flex: none; display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; min-height: 44px; margin: -10px -8px -10px 0;
  background: none; border: 0; color: var(--text-faint); cursor: pointer; }
.lead-task__del:active { color: var(--danger); }

.lead-task-form { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-2); }
.lead-task-form__row { display: flex; gap: var(--space-2); align-items: stretch; }
/* 🛑 mobile-native: инпуты 16px, чтобы iOS не зумил при фокусе. */
.lead-task-form__title, .lead-task-form__due { font-size: var(--text-input); min-height: 44px; }
.lead-task-form__due { flex: 1 1 auto; min-width: 0; }
.lead-task-form__add { flex: none; white-space: nowrap; }
/* Быстрые чипы срока: тач-таргет ≥44px (mobile-native), перенос по ширине.
 * Специфичность .lead-task-form__chips .chip — чтобы перебить примитив .chip
 * (min-height:24px), объявленный НИЖЕ по файлу. */
.lead-task-form__chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.lead-task-form__chips .lead-task-form__chip {
  min-height: 44px; padding: 0 var(--space-3); font-size: var(--text-input);
  cursor: pointer; -webkit-tap-highlight-color: transparent;
}
@media (hover: hover) and (pointer: fine) {
  .lead-task-form__chips .lead-task-form__chip:hover { background: var(--surface-hover); color: var(--text); }
}
.lead-task-form__chips .lead-task-form__chip:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.lead-task-form__chips .lead-task-form__chip[aria-pressed="true"] {
  background: var(--accent-soft);
  border-color: var(--border);
  color: var(--accent-strong); font-weight: var(--weight-medium);
}
/* Подпись выбранной даты (dd.mm.yyyy) рядом с native-picker. */
.lead-task-form__due-preview { flex: none; align-self: center; font-size: var(--text-sm); color: var(--text-muted); white-space: nowrap; }
/* Подзаголовок пачки «Без срока» — мягкий разделитель, не «CRM-секция». */
.lead-tasks__group-title {
  display: flex; align-items: center; gap: var(--space-2);
  margin: var(--space-2) 0 calc(var(--space-1)); font-size: var(--text-sm);
  color: var(--text-muted); font-weight: var(--weight-medium);
}
.lead-tasks__group-title .icon { flex: none; width: 14px; height: 14px; }

/* «В задачи» рядом с советом ИИ — компактная ghost-кнопка. */
.ai-block__to-task { margin-left: auto; flex: none; }

/* статус-чип (спокойный, hairline-контур, точка статуса) */
/* ═══ Примитив .chip — ЕДИНАЯ пилюля-бейдж (24px). Раньше ~15 разных
 * пилюль-паддингов; сведены к одному: padding 4px 10px, footnote, hairline.
 * .chip--lg = 32px. Цвет несут модификаторы (accent/success/warn/info-soft). ═══ */
.chip {
  display: inline-flex; align-items: center; gap: 6px; min-height: 24px;
  font-size: var(--text-footnote); font-weight: var(--weight-medium);
  padding: 4px 10px; border-radius: var(--radius-pill);
  background: var(--surface); color: var(--text-muted);
  border: 1px solid var(--border); line-height: 1.2;
}
.chip--lg { min-height: 32px; padding: 6px var(--space-3); }
/* мягкие цветовые модификаторы (заливка + читаемый текст на светлом) */
.chip--accent { background: var(--accent-soft); border-color: var(--border); color: var(--accent-strong); }
.chip--success { background: var(--success-soft); border-color: color-mix(in srgb, var(--success) 30%, transparent); color: var(--success); }
.chip--warn { background: var(--warn-soft); border-color: color-mix(in srgb, var(--warn) 30%, transparent); color: var(--warn); }
.chip--info-soft { background: var(--info-soft); border-color: color-mix(in srgb, var(--info) 30%, transparent); color: var(--info); }
.chip__dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex: none; }
.chip--new { color: var(--col-new); }
.chip--contacted { color: var(--col-contacted); }
.chip--replied { color: var(--col-replied); }
.chip--meeting { color: var(--col-meeting); }
.chip--in_progress { color: var(--col-in_progress); }
.chip--won { color: var(--col-won); }
.chip--lost { color: var(--col-lost); }

/* сигнал-чип (контурный, спокойный текст — НЕ цветная пилюля) */
.signal-chip {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: var(--text-2xs); font-weight: var(--weight-medium);
  padding: 2px var(--space-2); border-radius: var(--radius-sm);
  background: var(--surface); color: var(--text-muted);
  border: 1px solid var(--border); white-space: nowrap;
}
.signal-chip .icon { width: 11px; height: 11px; color: var(--text-faint); }

/* чип источника (тот же спокойный контур) */
.source-chip {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: var(--text-2xs); font-weight: var(--weight-medium);
  padding: 2px var(--space-2); border-radius: var(--radius-sm);
  background: var(--surface); color: var(--text-muted);
  border: 1px solid var(--border); white-space: nowrap;
  text-transform: uppercase; letter-spacing: 0.03em;
}
.source-chip .icon { width: 11px; height: 11px; color: var(--text-faint); }

/* «Почему сейчас» — выделенный акцентный повод (reasons[0], самый time-sensitive).
 * Микрокапс-подпись + текст. Скупой акцент: тонкая заливка + hairline слева, без тени. */
.why-now {
  display: flex; flex-direction: column; gap: 3px;
  border: 1px solid var(--border);
  border-left: 0;
  background: var(--why-bg); border-color: var(--why-border);
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
}
.why-now__cap {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--accent-strong);
}
.why-now__cap .icon { color: var(--accent-strong); }
.why-now__text { font-size: var(--text-md); color: var(--text); line-height: var(--leading-snug); }
/* компактный вариант для строки таблицы: подпись слева, текст в одну строку с эллипсисом */
.why-now--inline {
  flex-direction: row; align-items: baseline; gap: var(--space-2);
  padding: 3px var(--space-2); max-width: 100%;
}
.why-now--inline .why-now__cap { flex: none; }
.why-now--inline .why-now__text {
  font-size: var(--text-sm); min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* «Почему горячий» (горячая очередь) — тот же glass-акцент, что и «Почему сейчас»,
   без НОВЫХ цветов (строго --accent). Отличие — чуть плотнее левая полоса, чтобы
   «приоритет обзвона» читался как более настойчивый сигнал в общем ряду. */
.why-hot { border-left-width: 3px; }

/* reason-чип (почему подходит) — строка с тонкой галочкой */
.reason-chip {
  display: flex; align-items: flex-start; gap: var(--space-2);
  font-size: var(--text-md); padding: var(--space-2) 0;
  color: var(--text); line-height: var(--leading-snug);
  border-bottom: 1px solid var(--border-subtle);
}
.reason-chip:last-child { border-bottom: none; }
.reason-chip .icon { color: var(--accent-strong); width: 15px; height: 15px; flex: none; margin-top: 2px; }

/* ─────────────────────────── кнопки ─────────────────────────── */
/* ═══ Примитив .btn — размер через min-height (sm 36 / md 44 / lg 52),
 * вариант через модификатор (primary=accent по умолчанию). Тач ≥44px вне
 * плотных тулбаров; press = scale(.97) на --dur-instant; :focus-visible = ring. ═══ */
.btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  font: inherit; font-size: var(--text-callout); font-weight: var(--weight-medium);
  min-height: 44px; padding: 0 var(--space-4); border-radius: var(--radius-md);
  border: 1px solid var(--accent); background: var(--accent); color: var(--accent-text);
  cursor: pointer; user-select: none; -webkit-user-select: none;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  transition: background var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out),
              color var(--dur-fast) var(--ease-out),
              transform var(--dur-instant) var(--ease-out);
}
@media (hover: hover) and (pointer: fine) { .btn:hover { background: var(--accent-hover); border-color: var(--accent-hover); transform: translateY(-1px); } }
.btn:active { transform: scale(0.97); }
.btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.btn:disabled, .btn.is-loading { opacity: 0.5; cursor: default; transform: none; }

/* варианты */
.btn--primary { background: var(--accent); color: var(--accent-text); border-color: var(--accent); }
.btn--secondary { background: var(--surface); color: var(--text); border-color: var(--border); }
@media (hover: hover) and (pointer: fine) { .btn--secondary:hover { background: var(--surface-hover); border-color: var(--border-strong); color: var(--text); } }

.btn--ghost { background: transparent; color: var(--text-muted); border-color: transparent; }
@media (hover: hover) and (pointer: fine) { .btn--ghost:hover { background: var(--surface-hover); color: var(--text); } }

.btn--outline { background: transparent; color: var(--text); border-color: var(--border); }
@media (hover: hover) and (pointer: fine) { .btn--outline:hover { background: var(--surface-hover); border-color: var(--border-strong); } }

.btn--danger { background: var(--surface); color: var(--danger); border-color: color-mix(in srgb, var(--danger) 35%, var(--border)); }
@media (hover: hover) and (pointer: fine) { .btn--danger:hover { background: var(--danger-soft); border-color: var(--danger); } }

/* размеры */
.btn--sm { min-height: 36px; font-size: var(--text-footnote); padding: 0 var(--space-3); border-radius: var(--radius-sm); }
.btn--lg { min-height: 52px; font-size: var(--text-headline); padding: 0 var(--space-5); }
.btn--wide { width: 100%; }
.btn .icon { width: 15px; height: 15px; }

/* ═══ Примитивы поверхностей (канон; именованные компоненты equivalent-им их).
 * .card — поверхность surface + hairline + radius-lg + shadow-card; воздух внутри.
 * .section — группа без своей рамки (разделение воздухом + опц. верхний hairline).
 * .row — строка ≥44px с press-состоянием. ═══ */
.card {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: var(--space-5);
  box-shadow: var(--shadow-card);
}
.section { display: flex; flex-direction: column; gap: var(--space-3); }
.section + .section { margin-top: var(--space-6); }
.section--divided + .section--divided { border-top: 1px solid var(--border-subtle); padding-top: var(--space-6); }
.section__cap {
  font-size: var(--text-micro); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-caps); color: var(--text-faint);
}
.row {
  display: flex; align-items: center; gap: var(--space-3);
  min-height: 44px; padding: var(--space-3) var(--space-4);
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
}
.row:active { background: var(--surface-hover); }

.btn.is-loading .btn__label { visibility: hidden; }
.btn.is-loading::after {
  content: ""; position: absolute; width: 14px; height: 14px;
  border: 1.7px solid currentColor; border-top-color: transparent; border-radius: 50%;
  animation: spin 0.5s linear infinite;
}

/* transition-кнопка (используется в карточке-панели) с точкой-намёком статуса */
.btn-move { display: inline-flex; align-items: center; gap: 6px; }
.btn-move .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--to-color, var(--text-muted)); }
.btn-move--new { --to-color: var(--col-new); }
.btn-move--contacted { --to-color: var(--col-contacted); }
.btn-move--replied { --to-color: var(--col-replied); }
.btn-move--meeting { --to-color: var(--col-meeting); }
.btn-move--in_progress { --to-color: var(--col-in_progress); }
.btn-move--won { --to-color: var(--col-won); }
.btn-move--lost { --to-color: var(--col-lost); }

/* ═══════════ карточка лида — НЕ-модальный полноэкранный экран #/lead/<id> ═══════════
 * Редизайн 2026-09-21: боковая панель-оверлей убрана. Единственная презентация —
 * маршрут. Структура: липкая шапка → липкие сегмент-вкладки (Обзор/Досье/Письмо) →
 * пейны → липкий статус-бар. reduced-motion глушит анимации глобально. */
.lead {
  max-width: 680px; margin: 0 auto;
  display: flex; flex-direction: column; gap: var(--space-4);
  animation: fade-up var(--dur-slow) var(--ease-emphasized);
}

/* Шапка (герой + повод + контакт) — обычный поток, скроллится под липкие вкладки. */
.lead__header { display: flex; flex-direction: column; gap: var(--space-4); }

/* Сегмент-вкладки — липкие под топбаром, стеклянная пилюля, 3 равные кнопки. */
.lead-tabs {
  position: sticky; top: calc(env(safe-area-inset-top, 0px) + 46px);
  z-index: var(--z-sticky);
  display: flex; gap: 2px; padding: 4px;
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-pill);
}
.lead-tabs__btn {
  position: relative; flex: 1 1 0; min-width: 0;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 9px var(--space-2); font-size: var(--text-sm);
  border-radius: var(--radius-pill);
}
.lead-tabs__btn .icon { width: 15px; height: 15px; flex: none; }
.lead-tabs__btn.is-active { background: var(--surface); color: var(--text); box-shadow: var(--shadow-md); }
/* индикатор «досье готово» — коралловая точка на НЕактивной вкладке «Досье». */
.lead-tabs__btn.has-dot::after {
  content: ""; position: absolute; top: 7px; right: 12px;
  width: 6px; height: 6px; border-radius: 50%; background: var(--col-new);
}

/* Пейны вкладок: активный виден, остальные display:none (панели держатся в DOM —
 * поллинг досье продолжается даже на неактивной вкладке). */
.lead-pane {
  display: flex; flex-direction: column; gap: var(--space-5);
  padding-top: var(--space-4);
  animation: fade-up var(--dur-base) var(--ease-standard);
}
.lead-pane[hidden] { display: none; }

/* Липкий статус-бар — переход канбана всегда под рукой над плавающим таб-баром.
 * Компактный: без заголовка «Статус» и подписи «Сейчас:», всё в один ряд с переносом. */
.lead__statusbar {
  position: sticky; bottom: calc(78px + env(safe-area-inset-bottom));
  z-index: var(--z-sticky); margin-top: var(--space-3);
  /* Непрозрачный фон (не glass): это бар с кнопками действий — читаемость важнее
     полупрозрачности; на 0.90-glass контент просвечивал сквозь бар (apple-design:
     vibrancy/legibility для контролов). blur оставляем как лёгкий бонус поверх. */
  background: var(--surface);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  padding: var(--space-3) var(--space-4); box-shadow: var(--shadow-glass);
}

/* ═══════════ bottom-sheet карточки лида (вариант A, 2026-09-21) ═══════════
 * Выезжает снизу поверх доски/разбора; peek → full тянется за «ручку». Скрим —
 * opacity ведёт JS по позиции шторки. Sticky-оффсеты карты перенастроены на шторку. */
.lead-sheet-overlay {
  position: fixed; inset: 0; z-index: var(--z-panel);
  background: color-mix(in srgb, var(--warm-900) 34%, transparent);
  opacity: 0; will-change: opacity;
}
.lead-sheet {
  position: fixed; left: 0; right: 0; bottom: 0;
  height: 94dvh; max-width: 640px; margin: 0 auto;
  display: flex; flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--border); border-bottom: none;
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
  box-shadow: 0 -14px 46px -12px rgba(28, 25, 23, 0.30);
  transform: translateY(100%); will-change: transform; outline: none;
}
/* Крупная зона захвата для свайпа шторки (min-height 44px = комфортный тач-таргет);
   раньше strip был ~23px и промахнуться легко → палец попадал по контенту и тянул апп. */
.lead-sheet__grip { flex: none; display: grid; place-items: center; min-height: 44px; padding: 16px 0 12px; cursor: grab; touch-action: none; }
.lead-sheet__grip:active { cursor: grabbing; }
.lead-sheet__grip-bar { width: 48px; height: 5px; border-radius: var(--radius-pill); background: var(--border-strong); }
.lead-sheet__body {
  flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 0 var(--space-5) calc(var(--space-6) + env(safe-area-inset-bottom));
}
/* карта внутри шторки: своя ширина, без собственной анимации-въезда, sticky к шторке */
.lead-sheet .lead { max-width: none; animation: none; }
.lead-sheet .lead-tabs { top: 0; }
.lead-sheet .lead__statusbar { bottom: 0; }
@media (prefers-reduced-motion: reduce) {
  .lead-sheet { transition-duration: 0.001ms !important; }
  .lead-sheet-overlay { transition-duration: 0.001ms !important; }
}
.lead__statusbar .block {
  display: flex; flex-direction: row; align-items: center;
  flex-wrap: wrap; gap: var(--space-2) var(--space-3);
}
.lead__statusbar .block__title { display: none; }            /* «Статус» — лишний в баре */
/* Текущий статус в баре — КОМПАКТНАЯ ПОДПИСЬ («Сейчас: •Новые»), НЕ пилюля: раньше это был
   чип-пилюля меньшего размера рядом с кнопками действий и читался как «кнопка не того
   размера» (жалоба 2026-09-21: «Новые имеет другой размер»). Теперь это явная подпись,
   а кнопки действий (.status-switch .btn-move, flex:1) занимают остаток строки поровну. */
.lead__statusbar .status-switch__current { margin: 0; gap: 6px; flex: 0 0 auto; font-size: var(--text-sm); color: var(--text-muted); }
.lead__statusbar .status-switch__current > span:first-child { display: inline; } /* вернуть «Сейчас:» */
.lead__statusbar .status-switch__current .chip { background: none; border: none; padding: 0; font-size: var(--text-sm); color: var(--text); font-weight: var(--weight-semibold); }
.lead__statusbar .status-switch { display: flex; flex: 1 1 auto; flex-wrap: wrap; gap: var(--space-2); margin: 0; }

/* герой-шапка: имя + фит-бар (без градиента, без тени) */
.lead__hero {
  display: flex; gap: var(--space-5); align-items: flex-start;
  padding-bottom: var(--space-5); border-bottom: 1px solid var(--border);
}
.lead__hero-main { flex: 1; min-width: 0; }
.lead__name {
  font-size: var(--text-2xl); font-weight: var(--weight-bold);
  line-height: var(--leading-tight); letter-spacing: var(--tracking-tighter);
  margin-bottom: var(--space-3); color: var(--text);
}
.lead__badges { display: flex; gap: var(--space-2); flex-wrap: wrap; align-items: center; }

/* блоки-секции — просто заголовок-микрокапс + контент, разделённые воздухом */
.block { padding: 0; }
.block__title {
  display: flex; align-items: center; gap: 6px;
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--text-faint); margin-bottom: var(--space-3);
}
.block__title .icon { width: 13px; height: 13px; color: var(--text-faint); }

/* key-value реквизиты */
.kv-grid { display: grid; gap: 0; }
.kv {
  display: grid; grid-template-columns: 140px 1fr; gap: var(--space-4);
  padding: var(--space-2) 0; font-size: var(--text-md);
  border-bottom: 1px solid var(--border-subtle);
}
.kv:last-child { border-bottom: none; }
.kv__key { color: var(--text-muted); display: inline-flex; align-items: center; gap: 6px; }
.kv__key .icon { width: 14px; height: 14px; color: var(--text-faint); }
.kv__val { word-break: break-word; color: var(--text); }
.kv__link { color: var(--link); }
/* tap-to-copy значения (ИНН/почта/телефон): значение — кнопка, иконка copy → green на копии */
.kv__copy {
  display: inline-flex; align-items: center; gap: 6px; justify-self: start;
  max-width: 100%; padding: 0; background: none; border: 0; font: inherit; color: var(--text);
  text-align: left; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent;
}
.kv__copy-text { word-break: break-word; }
.kv__copy-ic { width: 13px; height: 13px; flex: none; color: var(--text-faint); opacity: 0.65; transition: color var(--dur-fast) var(--ease-standard), opacity var(--dur-fast) var(--ease-standard); }
.kv__copy:active .kv__copy-ic { color: var(--accent-strong); opacity: 1; }
.kv__copy.is-copied .kv__copy-ic { color: var(--success); opacity: 1; }
@media (hover: hover) and (pointer: fine) { .kv__copy:hover .kv__copy-ic { color: var(--accent-strong); opacity: 1; } }
@media (max-width: 460px) { .kv { grid-template-columns: 1fr; gap: 2px; } }

.reasons { display: flex; flex-direction: column; }

/* источники */
.sources { display: flex; flex-direction: column; gap: var(--space-2); }
.source-row {
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-3); background: var(--surface-2);
  border: 1px solid var(--border-subtle); border-radius: var(--radius-md);
}
.source-row__icon {
  width: 30px; height: 30px; flex: none;
  display: grid; place-items: center; border-radius: var(--radius-sm);
  background: var(--surface); border: 1px solid var(--border); color: var(--text-muted);
}
.source-row__body { flex: 1; min-width: 0; }
.source-row__name { font-weight: var(--weight-semibold); font-size: var(--text-md); text-transform: uppercase; letter-spacing: 0.02em; }
.source-row__date { font-size: var(--text-xs); color: var(--text-muted); }
.source-row__link {
  color: var(--link); display: inline-flex; align-items: center; gap: 4px;
  font-size: var(--text-sm); white-space: nowrap;
}
.sources__empty { display: flex; align-items: center; gap: var(--space-2); color: var(--text-muted); font-size: var(--text-md); }
.sources__empty .icon { color: var(--warn); }

/* «Как связаться» — прямой контакт-канал (website/phone/email/справочник) */
.how-to {
  display: flex; align-items: flex-start; gap: var(--space-3);
  padding: var(--space-3); background: var(--surface-2);
  border: 1px solid var(--border-subtle); border-radius: var(--radius-md);
}
.how-to__icon {
  flex: none; display: grid; place-items: center; width: 32px; height: 32px;
  border-radius: var(--radius-sm); background: var(--surface); border: 1px solid var(--border); color: var(--accent-strong);
}
.how-to__icon .icon { width: 16px; height: 16px; }
.how-to__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.how-to__channel { font-size: var(--text-2xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); }
.how-to__value { font-size: var(--text-md); color: var(--text); word-break: break-word; font-variant-numeric: tabular-nums; }
.how-to__value--link { color: var(--link); }
.how-to__note { font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }
.how-to__head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.how-to__badge { font-size: var(--text-2xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide); padding: 1px 7px; border-radius: 999px; white-space: nowrap; }
.how-to__badge--high { color: var(--pos-600); background: var(--pos-050); }
.how-to__badge--medium { color: var(--warn-600); background: var(--warn-050); }
.how-to__badge--low { color: var(--neg-600); background: var(--neg-050); }

/* черновик */
.block--draft {}
.draft__head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-3); }
.draft__head .block__title { margin-bottom: 0; flex: 1; }
.draft__body {
  background: var(--surface-2); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md); padding: var(--space-4); margin-bottom: var(--space-3);
}
.draft__text { white-space: pre-wrap; font-size: var(--text-md); line-height: var(--leading-normal); color: var(--text); }
.draft__empty { display: flex; align-items: center; gap: var(--space-2); color: var(--text-muted); font-size: var(--text-md); }
.draft__disclaimer {
  display: flex; align-items: flex-start; gap: var(--space-2);
  font-size: var(--text-xs); color: var(--text-muted);
  background: var(--surface-2); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-sm); padding: var(--space-2) var(--space-3);
  margin-bottom: var(--space-3); line-height: var(--leading-snug);
}
.draft__disclaimer .icon { flex: none; margin-top: 1px; color: var(--text-faint); }
.draft__actions { display: flex; gap: var(--space-2); }
.draft__actions .btn { flex: 1 1 0; min-width: 0; } /* min-width:0 — длинная подпись не толкает ряд за экран */
.draft__regen { width: 100%; margin-top: var(--space-2); } /* «Обновить черновик» — своя строка на всю ширину */
.btn.is-copied { background: var(--accent); border-color: var(--accent-strong); color: var(--accent-text); }

/* статус-переключатель в карточке */
.status-switch { display: flex; flex-wrap: wrap; gap: var(--space-2); }
/* кнопки перехода статуса — равной ширины в своём ряду (flex:1 + basis 0),
   центрированный лейбл, единая высота; текст не рвём — короткие подписи влезают. */
.status-switch .btn-move { flex: 1 1 0; min-width: 0; justify-content: center; white-space: nowrap; }
.status-switch__none { color: var(--text-muted); font-size: var(--text-md); display: inline-flex; align-items: center; gap: var(--space-2); }
.status-switch__current { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-3); font-size: var(--text-sm); color: var(--text-muted); }

/* score-ring — сохранён (используется как компактный монохромный акцент-индикатор) */
.score-ring { position: relative; width: 56px; height: 56px; flex: none; }
.score-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.score-ring__track { stroke: var(--border); fill: none; }
.score-ring__fill { fill: none; stroke-linecap: round; transition: stroke-dashoffset var(--dur-slow) var(--ease-emphasized); }
.score-ring--clear .score-ring__fill { stroke: var(--text); }
.score-ring--maybe .score-ring__fill { stroke: var(--text-faint); }
.score-ring--muted .score-ring__fill { stroke: var(--text-faint); }
.score-ring__value { position: absolute; inset: 0; display: grid; place-items: center; font-size: var(--text-md); font-weight: var(--weight-bold); color: var(--text); font-variant-numeric: tabular-nums; }

/* ─────────────────────────── состояния: skeleton ─────────────────────────── */
.skeleton { position: relative; overflow: hidden; background: var(--surface-2); border-radius: var(--radius-xs); }
.skeleton::after {
  content: ""; position: absolute; inset: 0; transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--text) 5%, transparent), transparent);
  animation: shimmer 1.4s infinite;
}
.skel-line { height: 12px; margin-bottom: 8px; }
.skel-line--title { height: 16px; width: 60%; }
.skel-line--short { width: 40%; }
.skel-line--wide { width: 100%; }
.skel-card { background: var(--surface); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: var(--space-3); }
.skel-block { background: var(--surface); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: var(--space-4); }
.skel-row { display: flex; align-items: center; gap: var(--space-4); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--border-subtle); }
.skel-row:last-child { border-bottom: none; }

/* ─────────────────────────── состояния: empty / error / locked ─────────────────────────── */
.empty, .error, .locked {
  display: flex; flex-direction: column; align-items: center; gap: var(--space-3);
  text-align: center; padding: var(--space-16) var(--space-4); margin: 0 auto; max-width: 440px;
}
.empty { color: var(--text-muted); }
.empty__icon, .error__icon, .locked__icon {
  width: 52px; height: 52px; display: grid; place-items: center;
  border-radius: var(--radius-lg); border: 1px solid var(--border);
  background: var(--surface-2); color: var(--text-faint);
}
.empty__icon .icon, .error__icon .icon, .locked__icon .icon { width: 24px; height: 24px; }
.error__icon { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 25%, var(--border)); }
.locked__icon { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 25%, var(--border)); }
.empty__title, .error__title, .locked__title { font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--text); letter-spacing: var(--tracking-tight); }
.empty__hint, .locked__hint { font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); }
.error__msg { color: var(--text-muted); }
.error__hint { color: var(--text-faint); font-size: var(--text-sm); }
.empty__cta { margin-top: var(--space-4); }

/* Приветственная CTA-карточка новичка на пустой доске (§5 #1). Glass-панель в
 * общих токенах: акцент-«свечение» иконки, крупный заголовок, широкая CTA. */
.board-welcome {
  display: flex; flex-direction: column; align-items: center; gap: var(--space-4);
  text-align: center; max-width: 440px; margin: var(--space-12) auto 0;
  padding: var(--space-8) var(--space-6);
  background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-xl);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass);
}
.board-welcome__glow {
  width: 60px; height: 60px; display: grid; place-items: center;
  border-radius: 50%; color: var(--accent-text);
  background: radial-gradient(120% 120% at 30% 20%, var(--accent-strong), var(--accent));
  box-shadow: 0 8px 28px var(--accent-soft), inset 0 1px 0 var(--glass-hi);
}
.board-welcome__glow .icon { width: 28px; height: 28px; }
.board-welcome__title {
  font-size: var(--text-2xl); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); color: var(--text); margin: 0;
}
.board-welcome__sub {
  font-size: var(--text-md); color: var(--text-muted);
  line-height: var(--leading-normal); margin: 0;
}
.board-welcome__cta { margin-top: var(--space-2); }
.board-welcome__secondary { margin: 0; font-size: var(--text-sm); }
.board-welcome__secondary a { color: var(--text-muted); }
@media (hover: hover) and (pointer: fine) { .board-welcome__secondary a:hover { color: var(--text); } }

/* ─── Демо-лиды «Пример» (P0-активация): пустое состояние первого запуска ─── */
.demo-leads {
  max-width: 560px; margin: var(--space-6) auto 0;
  display: flex; flex-direction: column; gap: var(--space-3);
}
.demo-leads__head {
  display: flex; align-items: flex-start; gap: var(--space-2);
}
.demo-leads__head-text { flex: 1; min-width: 0; }
.demo-leads__title {
  display: flex; align-items: center; gap: 6px; margin: 0;
  font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text);
}
.demo-leads__title .icon { color: var(--accent-strong); }
.demo-leads__sub {
  margin: 4px 0 0; font-size: var(--text-sm); color: var(--text-muted);
  line-height: var(--leading-normal);
}
.demo-leads__close { flex: none; }
.demo-leads__list { display: flex; flex-direction: column; gap: var(--space-2); }

.demo-card {
  position: relative; display: flex; flex-direction: column; gap: 6px;
  padding: var(--space-3) var(--space-4);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  cursor: pointer; touch-action: pan-y; will-change: transform;
  -webkit-tap-highlight-color: transparent;
}
.demo-card:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (hover: hover) and (pointer: fine) { .demo-card:hover { background: var(--surface-hover); } }
.demo-card.is-swiping { transition: none; }
.demo-card__title-row {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.demo-card__name {
  font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text);
  min-width: 0;
}
.demo-card__meta { font-size: var(--text-sm); color: var(--text-muted); }
.demo-card__foot {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-2);
  margin-top: 2px;
}
.demo-card__signals { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }

/* Бейдж «Пример» — заметный, но нейтрально-информационный (не путать с фит-метками) */
.badge--demo {
  color: var(--info); border-color: color-mix(in srgb, var(--info) 30%, transparent);
  background: var(--info-soft);
}
.badge--demo .icon { color: var(--info); }
/* На мобиле бейдж «Пример» ОСТАЁТСЯ видимым в строке (в отличие от badge--label) */
.demo-card .badge--label { display: inline-flex; }

/* Мягкая плашка «это пример» в demo-карточке лида (вместо мутирующих блоков) */
.demo-note {
  display: flex; align-items: flex-start; gap: 6px; margin: 0;
  padding: var(--space-2) var(--space-3);
  font-size: var(--text-sm); color: var(--text-muted);
  background: var(--info-soft); border-radius: var(--radius-md);
  line-height: var(--leading-normal);
}
.demo-note .icon { color: var(--info); flex: none; margin-top: 2px; }

@media (prefers-reduced-motion: reduce) {
  .demo-card { transition: none !important; }
}

/* ─────────────────────────── тост ─────────────────────────── */
/* Тост СВЕРХУ (2026-09-23) — светлое стекло в тон приложения, смахивается вверх/в стороны,
 * с обратным таймером-полоской (у undo-тостов = окно отмены). */
.toast {
  position: fixed; left: 50%; top: calc(var(--space-4) + env(safe-area-inset-top));
  transform: translate(-50%, -16px);
  overflow: hidden;
  background: var(--glass-bg-strong); color: var(--text);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-glass);
  opacity: 0; pointer-events: none;
  transition: opacity var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-spring);
  will-change: transform, opacity;
  z-index: var(--z-toast); max-width: min(94vw, 460px); width: max-content;
  touch-action: none; user-select: none; -webkit-user-select: none;
}
.toast--show { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.toast__row { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-3) var(--space-4); }
.toast__row > .icon { flex: none; width: 18px; height: 18px; color: var(--toast-accent, var(--accent-strong)); }
.toast__msg { flex: 1; min-width: 0; font-size: var(--text-md); font-weight: var(--weight-medium); color: var(--text); line-height: var(--leading-snug); }
.toast__action {
  flex: none; margin-left: var(--space-2); background: none; border: 0; font: inherit;
  font-weight: var(--weight-semibold); color: var(--accent-strong); cursor: pointer;
  padding: 5px 8px; border-radius: var(--radius-sm); touch-action: manipulation;
}
.toast__action:active { background: var(--accent-soft); }
.toast__timer { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: color-mix(in srgb, var(--toast-accent, var(--accent)) 16%, transparent); }
.toast__timer-fill { display: block; height: 100%; transform-origin: left center; background: var(--toast-accent, var(--accent)); }
.toast--error { --toast-accent: var(--danger); }
.toast--info  { --toast-accent: var(--info); }
.toast--success { --toast-accent: var(--success); }
@media (prefers-reduced-motion: reduce) { .toast__timer-fill { transition: none !important; transform: scaleX(1) !important; } }

/* ─────────────────────────── bottom-sheet: пикер причины проигрыша ─────────────────────────── */
.sheet-overlay {
  position: fixed; inset: 0; z-index: var(--z-toast);
  display: flex; align-items: flex-end; justify-content: center;
  background: color-mix(in srgb, var(--warm-900) 22%, transparent);
  opacity: 0; transition: opacity var(--dur-base) var(--ease-standard);
  padding: var(--space-4); padding-bottom: max(var(--space-4), env(safe-area-inset-bottom));
}
.sheet-overlay[data-open="true"] { opacity: 1; }
.sheet {
  width: 100%; max-width: 480px; background: var(--surface);
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg); padding: var(--space-5);
  transform: translateY(16px); transition: transform var(--dur-slow) var(--ease-emphasized);
  will-change: transform; /* apple-design: sheet часто слайдит снизу */
  outline: none; max-height: calc(100vh - var(--space-8)); overflow-y: auto;
}
.sheet-overlay[data-open="true"] .sheet { transform: translateY(0); }
@media (min-width: 561px) { .sheet-overlay { align-items: center; } }
.sheet__head { display: flex; align-items: flex-start; gap: var(--space-3); margin-bottom: var(--space-4); }
.sheet__head-text { flex: 1; min-width: 0; }
.sheet__title { font-size: var(--text-lg); font-weight: var(--weight-bold); color: var(--text); line-height: var(--leading-tight); letter-spacing: var(--tracking-tight); }
.sheet__desc { margin-top: 4px; font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); }
.sheet__close {
  flex: none; display: grid; place-items: center; width: 32px; height: 32px;
  border-radius: var(--radius-sm); border: 1px solid var(--border);
  background: var(--surface); color: var(--text-muted); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .sheet__close:hover { background: var(--surface-hover); color: var(--text); } }
.sheet__close .icon { width: 18px; height: 18px; }
.sheet__options { display: flex; flex-direction: column; gap: var(--space-2); }
.reason-option {
  display: flex; align-items: center; gap: var(--space-3); width: 100%; text-align: left;
  font: inherit; padding: var(--space-3); border-radius: var(--radius-md);
  border: 1px solid var(--border); background: var(--surface); color: var(--text); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .reason-option:hover { background: var(--surface-hover); border-color: var(--border-strong); } }
.reason-option__icon {
  flex: none; display: grid; place-items: center; width: 34px; height: 34px;
  border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--surface-2); color: var(--text-muted);
}
.reason-option__icon .icon { width: 16px; height: 16px; }
.reason-option__body { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.reason-option__label { font-weight: var(--weight-semibold); font-size: var(--text-md); }
.reason-option__hint { font-size: var(--text-xs); color: var(--text-muted); }
.sheet__foot { margin-top: var(--space-4); display: flex; justify-content: center; }
.sheet__skip { width: 100%; }

/* ═══════════════════════════ аналитика ═══════════════════════════ */
.analytics { max-width: 860px; margin: 0 auto; display: flex; flex-direction: column; gap: var(--space-6); animation: fade-up var(--dur-slow) var(--ease-emphasized); }
.analytics__head {}
.analytics__title { font-size: var(--text-2xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tighter); color: var(--text); }
.analytics__sub { margin-top: var(--space-2); font-size: var(--text-md); color: var(--text-muted); line-height: var(--leading-snug); }

.analytics-block {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: var(--space-5);
  box-shadow: var(--shadow-card);
}
.analytics-block__head { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-4); flex-wrap: wrap; }
.analytics-block__title {
  display: flex; align-items: center; gap: 7px;
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--text-faint); flex: 1; min-width: 0;
}
.analytics-block__title .icon { width: 14px; height: 14px; color: var(--accent-strong); }
.analytics-block__hint { font-size: var(--text-2xs); color: var(--text-faint); text-align: right; }

/* ROI-панель (сводка pipeline вверху аналитики).
 * Stat-карточки — порт «Stat Card» из 21st (id 26138) в vanilla+токены: каждая
 * метрика в своей карте с tinted-иконкой в углу, подписью-капсом и крупным числом.
 * Сетка авто-подгоняется (мобайл: 2→1 в ряд). Тренд-бейдж не портирован (нет дельты). */
.roi__metrics {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: var(--space-3); margin-bottom: var(--space-5);
}
/* stat-карта: hairline-рамка, sunken-фон чуть темнее панели, иконка в правом верхнем углу */
.roi__metric {
  position: relative; display: flex; min-width: 0;
  padding: var(--space-4);
  background: var(--surface-2); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
}
.roi__metric-ic {
  position: absolute; top: var(--space-3); right: var(--space-3);
  width: 34px; height: 34px; flex: none; display: grid; place-items: center;
  border-radius: var(--radius-sm);
}
.roi__metric-ic .icon { width: 17px; height: 17px; }
/* apple-craft: карты метрик въезжают лёгким каскадом (как строки доски), а не разом. */
.roi__metric { animation: fade-up var(--dur-base) var(--ease-standard) both; }
.roi__metric:nth-child(2) { animation-delay: 45ms; }
.roi__metric:nth-child(3) { animation-delay: 90ms; }
.roi__metric-ic--accent { color: var(--accent-strong); background: var(--accent-soft); }
.roi__metric-ic--pos { color: var(--pos-600); background: var(--pos-050); }
.roi__metric-ic--info { color: var(--info); background: var(--info-soft); }
.roi__metric-body { display: flex; flex-direction: column; gap: var(--space-2); padding-right: 40px; min-width: 0; }
.roi__metric-val { font-size: var(--text-2xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tighter); line-height: 1.05; color: var(--text); font-variant-numeric: tabular-nums; }
.roi__metric--lead .roi__metric-val { color: var(--text); }
.roi__metric-cap { font-size: var(--text-2xs); color: var(--text-faint); text-transform: uppercase; letter-spacing: var(--tracking-wide); font-weight: var(--weight-medium); line-height: var(--leading-snug); }

/* #4 (2026-09-23) СВОРАЧИВАЕМАЯ stat-плитка — тот же язык раскрытия, что на карточке
 * лида: тап раскрывает деталь (спарклайн + расшифровка). Анимация — grid-template-rows
 * 0fr→1fr (sanctioned accordion: без JS-замера высоты, чисто на CSS). */
.roi__metric--x {
  flex-direction: column; align-items: stretch; cursor: pointer;
  -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none;
  touch-action: manipulation;
  transition: background var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard);
}
.roi__metric--x:active { background: var(--surface-hover); }
.roi__metric--x:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.roi__metric.is-open { border-color: var(--border-strong); background: var(--surface); }
.roi__metric-caprow { display: inline-flex; align-items: center; gap: 5px; min-width: 0; }
.roi__metric-chev {
  width: 14px; height: 14px; flex: none; color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-standard), color var(--dur-base) var(--ease-standard);
}
.roi__metric.is-open .roi__metric-chev { transform: rotate(90deg); color: var(--accent-strong); }
.roi__metric-detail {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows var(--dur-slow) var(--ease-emphasized);
}
.roi__metric.is-open .roi__metric-detail { grid-template-rows: 1fr; }
.roi__metric-detail-inner { overflow: hidden; min-height: 0; }
.roi__metric-detail-inner > :first-child {
  margin-top: var(--space-3); padding-top: var(--space-3);
  border-top: 1px solid var(--border-subtle);
}
.roi__metric-note { margin: var(--space-2) 0 0; font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }
.roi__spark { width: 100%; height: 46px; display: block; }
.roi__spark-area { fill: var(--text); fill-opacity: 0.12; }
.roi__spark-line { stroke: var(--text); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.roi__spark-dot { fill: var(--text); stroke: var(--surface); stroke-width: 1.5; }
@media (prefers-reduced-motion: reduce) {
  .roi__metric-detail { transition: none; }
  .roi__metric-chev { transition: color var(--dur-base) var(--ease-standard); }
}
/* Разбивка по статусам — ровная сетка 2 колонки (дизайн-проход 2026-09-17:
 * flex-wrap давал рваные переносы «2 Новые · 2 Связались · 1 Ответил…»). */
.roi__breakdown {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3) var(--space-5);
  padding-top: var(--space-4); border-top: 1px solid var(--border-subtle);
}
.roi__stat { display: inline-flex; align-items: baseline; gap: 7px; min-width: 0; }
.roi__stat .analytics-dot { align-self: center; }
.roi__stat-n { font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--text); font-variant-numeric: tabular-nums; }
.roi__stat-label { font-size: var(--text-xs); color: var(--text-muted); }
.roi__summary { margin-top: var(--space-4); font-size: var(--text-md); color: var(--text); line-height: var(--leading-snug); }
.roi__note { display: flex; align-items: flex-start; gap: var(--space-2); margin-top: var(--space-3); font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }
.roi__note .icon { flex: none; margin-top: 1px; color: var(--text-faint); }

/* «Пульс ниши» (зависть-триггер): одна фраза-факт + ссылка на публичный лот */
.niche-pulse__fact { font-size: var(--text-md); color: var(--text); line-height: var(--leading-snug); }
.niche-pulse__amount { font-weight: var(--weight-bold); font-variant-numeric: tabular-nums; white-space: nowrap; }
.niche-pulse__more { color: var(--text-muted); }
.niche-pulse__link {
  display: inline-flex; align-items: center; gap: var(--space-2);
  margin-top: var(--space-3); font-size: var(--text-sm); font-weight: var(--weight-medium);
  color: var(--accent-strong); text-decoration: none;
}
@media (hover: hover) and (pointer: fine) { .niche-pulse__link:hover { text-decoration: underline; } }
.niche-pulse__link .icon { width: 14px; height: 14px; flex: none; }

/* горизонтальный бар — крупнее и с мягким градиентом-объёмом (build-free «график») */
.abar__track { position: relative; flex: 1; height: 9px; min-width: 40px; background: var(--surface-sunken); border-radius: var(--radius-pill); overflow: hidden; box-shadow: inset 0 1px 1.5px rgba(74,63,48,0.08); }
.abar__fill {
  position: absolute; inset: 0; transform-origin: left center; transform: scaleX(var(--f, 0));
  --accent-fill: var(--text);
  background: linear-gradient(90deg,
    color-mix(in srgb, var(--accent-fill) 72%, white) 0%, var(--accent-fill) 100%);
  border-radius: var(--radius-pill); transition: transform var(--dur-slow) var(--ease-emphasized);
}

/* ─── SVG-донат (кольцо конверсии) ─── */
.donut { display: inline-flex; flex-direction: column; align-items: center; gap: 4px; flex: none; }
.donut__svg { width: 96px; height: 96px; display: block; }
.donut__track { stroke: var(--surface-sunken); }
.donut__bar { transition: stroke-dashoffset var(--dur-slow) var(--ease-emphasized); }
.donut__num { font-size: 26px; font-weight: var(--weight-bold); fill: var(--text); letter-spacing: var(--tracking-tight); font-variant-numeric: tabular-nums; }
.donut__cap { font-size: var(--text-2xs); color: var(--text-muted); text-transform: uppercase; letter-spacing: var(--tracking-wide); font-weight: var(--weight-medium); }

/* #1 delta-чип на stat-карте (vs прошлая неделя) */
.roi__delta { display: inline-flex; align-items: center; gap: 2px; margin-top: 2px; font-size: var(--text-xs); font-weight: var(--weight-semibold); font-variant-numeric: tabular-nums; }
.roi__delta .icon { width: 12px; height: 12px; }
.roi__delta--up { color: var(--success); }
.roi__delta--down { color: var(--text-muted); }
.roi__export { margin-left: auto; }

/* #2 SVG-график тренда новых лидов по неделям */
.trend { margin-top: var(--space-4); }
.trend__cap { font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); font-weight: var(--weight-medium); margin-bottom: var(--space-2); }
.trend__svg { width: 100%; height: 76px; display: block; }
.trend__area { fill: var(--text); fill-opacity: 0.13; }
.trend__line { stroke: var(--text); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.trend__dot { fill: var(--text); stroke: var(--surface); stroke-width: 1.5; }

/* точки-цвета статусов */
.analytics-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; flex: none; }
.analytics-dot--new { background: var(--col-new); }
.analytics-dot--contacted { background: var(--col-contacted); }
.analytics-dot--replied { background: var(--col-replied); }
.analytics-dot--meeting { background: var(--col-meeting); }
.analytics-dot--in_progress { background: var(--col-in_progress); }
.analytics-dot--won { background: var(--col-won); }
.analytics-dot--lost { background: var(--col-lost); }

.analytics-empty { display: flex; align-items: center; gap: var(--space-2); color: var(--text-muted); font-size: var(--text-sm); padding: var(--space-2) 0; }
.analytics-empty__icon { color: var(--text-faint); display: inline-flex; }
.analytics-empty--lg { align-items: flex-start; gap: var(--space-3); padding: var(--space-2) 0; }
.analytics-empty__badge {
  flex: none; display: grid; place-items: center; width: 40px; height: 40px;
  border-radius: var(--radius-md); border: 1px solid var(--border); background: var(--surface-2); color: var(--text-muted);
}
.analytics-empty__badge .icon { width: 18px; height: 18px; }
.analytics-empty__body { flex: 1; min-width: 0; }
.analytics-empty__title { font-weight: var(--weight-semibold); color: var(--text); font-size: var(--text-md); }
.analytics-empty__hint { font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); margin-top: 2px; }

/* воронка */
/* хедлайн воронки: донат конверсии + крупное число лидов */
.funnel-headline { display: flex; align-items: center; gap: var(--space-5); flex-wrap: wrap; margin-bottom: var(--space-5); }
.funnel-headline__main { display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap; }
.funnel-headline__val { font-size: var(--text-3xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tighter); color: var(--text); line-height: 1; }
.funnel-headline__cap { font-size: var(--text-sm); color: var(--text-muted); }
.funnel-headline__delta-cap { font-size: var(--text-xs); color: var(--text-faint); margin-left: -4px; }
.funnel-rows { display: flex; flex-direction: column; gap: var(--space-3); }
.funnel-row { display: grid; grid-template-columns: 100px 1fr 36px 40px; align-items: center; gap: var(--space-3); }
.funnel-row__label { display: inline-flex; align-items: center; gap: 7px; font-size: var(--text-sm); color: var(--text); }
.funnel-row__val { font-weight: var(--weight-semibold); text-align: right; color: var(--text); }
.funnel-row__share { font-size: var(--text-xs); color: var(--text-faint); text-align: right; font-variant-numeric: tabular-nums; }
.transitions { margin-top: var(--space-5); padding-top: var(--space-4); border-top: 1px solid var(--border-subtle); }
.transitions__title { font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); margin-bottom: var(--space-3); }
.transitions__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: var(--space-2); }
.transition {
  display: flex; align-items: center; gap: 6px; font-size: var(--text-sm);
  padding: var(--space-2) var(--space-3); background: var(--surface-2);
  border: 1px solid var(--border-subtle); border-radius: var(--radius-sm);
}
.transition__arrow { width: 13px; height: 13px; transform: rotate(180deg); color: var(--text-faint); }
.transition__from, .transition__to { color: var(--text-muted); }
.transition__to { color: var(--text); }
.transition__n { margin-left: auto; font-weight: var(--weight-semibold); color: var(--accent-strong); }

/* ═══ Сегмент-контрол (ЕДИНОЕ каноническое определение — примитив seg) ═══
 * Ранее .seg/.seg__btn были объявлены дважды (тут + board-pill ниже) с разными
 * значениями — второе молча перебивало первое. Теперь одна база (md-радиус) +
 * модификатор .seg--pill для «капсульного» варианта доски. */
.seg {
  display: inline-flex; align-items: center; gap: 2px;
  background: var(--surface-2); border: 1px solid var(--border);
  border-radius: var(--radius-md); padding: 2px;
}
.seg__btn {
  font: inherit; font-size: var(--text-footnote); font-weight: var(--weight-medium); color: var(--text-muted);
  background: transparent; border: none; border-radius: var(--radius-sm);
  min-height: 36px; padding: 0 var(--space-3); cursor: pointer; white-space: nowrap;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none;
  transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}
@media (hover: hover) and (pointer: fine) { .seg__btn:hover { color: var(--text); } }
.seg__btn.is-active { background: var(--surface); color: var(--text); font-weight: var(--weight-semibold); box-shadow: var(--shadow-card); }
/* капсульный вариант (доска: сорт + фильтр этапов) */
.seg--pill { border-radius: var(--radius-pill); background: var(--surface-sunken); padding: 3px; }
.seg--pill .seg__btn { border-radius: var(--radius-pill); padding: 0 11px; }
@media (max-width: 400px) { .seg--pill .seg__btn { padding: 0 8px; } }

/* win-rate */
.wr-rows { display: flex; flex-direction: column; gap: var(--space-4); }
.wr-row { display: grid; grid-template-columns: minmax(110px, 1fr) 2fr auto; align-items: center; gap: var(--space-3); }
.wr-row__key { font-size: var(--text-sm); color: var(--text); font-weight: var(--weight-medium); word-break: break-word; }
.wr-row__pct { font-weight: var(--weight-semibold); color: var(--text); }
.wr-row__meta { grid-column: 1 / -1; font-size: var(--text-2xs); color: var(--text-faint); margin-top: -8px; }

/* качество источников */
.sq-rows { display: flex; flex-direction: column; gap: var(--space-3); }
.sq-row { padding: var(--space-4); background: var(--surface-2); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); display: flex; flex-direction: column; gap: var(--space-3); }
.sq-row__top { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
.sq-row__source { font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: 0.02em; font-size: var(--text-sm); color: var(--text); }
.sq-row__leads { font-size: var(--text-xs); color: var(--text-muted); }
.sq-metric { display: grid; grid-template-columns: 56px 1fr 40px; align-items: center; gap: var(--space-2); }
.sq-metric__label { font-size: var(--text-2xs); color: var(--text-muted); }
.sq-metric__val { font-size: var(--text-xs); font-weight: var(--weight-semibold); text-align: right; color: var(--text); }

/* калибровка */
.calib-rows { display: flex; flex-direction: column; gap: var(--space-3); }
.calib-row { display: grid; grid-template-columns: 84px 1fr auto; align-items: center; gap: var(--space-3); }
.calib-row__bin { font-size: var(--text-xs); color: var(--text-muted); }
.calib-row__bars { display: flex; flex-direction: column; gap: 5px; }
.calib-pair { display: grid; grid-template-columns: 52px 1fr; align-items: center; gap: var(--space-2); }
.calib-pair__lbl { font-size: var(--text-2xs); color: var(--text-faint); }
.calib-row__meta { font-size: var(--text-2xs); color: var(--text-faint); text-align: right; white-space: nowrap; }

/* A/B eval */
.ab-rows { display: flex; flex-direction: column; gap: var(--space-4); }
.ab-row { display: grid; grid-template-columns: 96px 1fr auto; align-items: center; gap: var(--space-3); }
.ab-row__variant { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text); }
.ab-row__variant--a { color: var(--accent-strong); }
.ab-row__variant--b { color: var(--info); }
.ab-row__variant--unknown { color: var(--text-muted); }
.ab-row__pct { font-weight: var(--weight-semibold); color: var(--text); }
.ab-row__meta { grid-column: 1 / -1; font-size: var(--text-2xs); color: var(--text-faint); margin-top: -8px; }
.ab-proxy {
  display: flex; align-items: flex-start; gap: var(--space-2); margin-top: var(--space-4);
  padding: var(--space-3); font-size: var(--text-xs); color: var(--text-muted);
  background: var(--surface-2); border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); line-height: var(--leading-snug);
}
.ab-proxy .icon { flex: none; margin-top: 1px; color: var(--text-faint); }

@media (max-width: 460px) {
  .funnel-row { grid-template-columns: 84px 1fr 28px 34px; }
  .wr-row { grid-template-columns: minmax(80px, 1fr) 2fr auto; }
}

/* ═══════════════════════════ отраслевые пресеты (быстрый путь) ═══════════════════════════ */
.preset-block { margin-bottom: var(--space-6); }
.preset-block__head { display: flex; align-items: baseline; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-3); }
.preset-block__title {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint);
}
.preset-block__title .icon { width: 14px; height: 14px; color: var(--text-faint); }
.preset-block__hint { font-size: var(--text-xs); color: var(--text-faint); flex: 1; min-width: 0; }

.preset-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--space-2); }

.preset-card {
  border: 1px solid var(--border); border-radius: var(--radius-md);
  background: var(--surface); overflow: hidden;
  transition: border-color var(--dur-fast) var(--ease-standard);
}
.preset-card.is-expanded { border-color: var(--border-strong); grid-column: 1 / -1; }
.preset-card__trigger {
  display: flex; align-items: center; gap: var(--space-3); width: 100%; text-align: left;
  font: inherit; padding: var(--space-3) var(--space-4); background: none; border: none; cursor: pointer;
  color: var(--text);
  transition: background var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .preset-card__trigger:hover { background: var(--surface-hover); } }
.preset-card__trigger:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.preset-card__icon {
  flex: none; display: grid; place-items: center; width: 32px; height: 32px;
  border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--surface-2); color: var(--text-muted);
}
.preset-card__icon .icon { width: 16px; height: 16px; }
.preset-card__text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.preset-card__name { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); letter-spacing: -0.005em; }
.preset-card__meta { font-size: var(--text-xs); color: var(--text-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.preset-card__chevron { width: 15px; height: 15px; flex: none; color: var(--text-faint); transition: transform var(--dur-fast) var(--ease-standard); }
.preset-card.is-expanded .preset-card__chevron { transform: rotate(90deg); color: var(--accent-strong); }
.preset-card__icon { transition: color var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard); }
.preset-card.is-expanded .preset-card__icon { color: var(--accent-strong); border-color: var(--border); }

.preset-card__expand { padding: 0 var(--space-4) var(--space-4); border-top: 1px solid var(--border-subtle); }
.preset-card__expand-hint { margin: var(--space-3) 0; font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }
.preset-card__regions { margin-bottom: var(--space-3); }
.preset-card__actions { display: flex; }
.preset-card__go { flex: 1; }

/* ═══════════════════════════ ICP / on-demand поиск ═══════════════════════════ */
.icp { max-width: 720px; margin: 0 auto; animation: fade-up var(--dur-base) var(--ease-standard); }
.icp__head { margin-bottom: var(--space-6); }
.icp__title { font-size: var(--text-2xl); font-weight: var(--weight-bold); color: var(--text); letter-spacing: var(--tracking-tighter); margin-bottom: var(--space-2); }
.icp__sub { font-size: var(--text-md); color: var(--text-muted); line-height: var(--leading-snug); max-width: 60ch; }

.icp-form { display: flex; flex-direction: column; gap: var(--space-5); }

.field { padding: 0 0 var(--space-5); border-bottom: 1px solid var(--border-subtle); }
.field:last-of-type { border-bottom: none; }
.field__head { margin-bottom: var(--space-3); }
.field__title { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); letter-spacing: -0.005em; }
.field__title .icon { width: 16px; height: 16px; color: var(--text-faint); }
.field__hint { margin-top: var(--space-3); font-size: var(--text-xs); color: var(--text-faint); line-height: var(--leading-snug); }

/* свободное описание — крупное editorial-поле */
.field--freetext {
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  padding: var(--space-5); background: var(--surface);
}
.field--freetext .field__title { font-size: var(--text-lg); letter-spacing: var(--tracking-tight); }
.field--freetext .field__title .icon { color: var(--accent-strong); }

/* текстовый инпут / число / textarea */
/* ═══ Примитив поля ввода: padding 10px 12px, min-height 44, 16px (без iOS-зума),
 * radius md, :focus-visible = border-accent-strong + ring. ═══ */
.text-input {
  width: 100%; font: inherit; font-size: var(--text-input); color: var(--text);
  min-height: 44px;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: 10px var(--space-3);
  transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
}
.text-input::placeholder { color: var(--text-faint); }
.text-input:focus-visible { outline: none; border-color: var(--accent-strong); box-shadow: var(--shadow-focus); }
.textarea { resize: vertical; min-height: 92px; line-height: var(--leading-snug); font-size: var(--text-input); }
.field--freetext .textarea { min-height: 108px; font-size: var(--text-lg); border-color: var(--border); }

/* чипы-мультиселект (переключатели) */
.chip-group { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.chip-group .chip {
  font: inherit; font-size: var(--text-sm); color: var(--text-muted);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: 6px var(--space-3); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .chip-group .chip:hover { background: var(--surface-hover); color: var(--text); } }
.chip-group .chip:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.chip-group .chip.is-selected { background: var(--accent-soft); border-color: var(--border); color: var(--accent-strong); font-weight: var(--weight-medium); }

/* свежесть */
.freshness__row { display: flex; align-items: center; gap: var(--space-3); }
.range-input { flex: 1; accent-color: var(--accent-strong); height: 4px; cursor: pointer; }
.range-input:focus-visible { outline: 2px solid var(--accent-ring); outline-offset: 4px; }
.freshness__num { width: 92px; flex: none; text-align: center; }
.freshness__unit { font-size: var(--text-sm); color: var(--text-muted); }
.freshness__value { display: inline-block; margin-top: var(--space-2); font-size: var(--text-xs); color: var(--text-muted); font-variant-numeric: tabular-nums; }

/* сигналы */
.signal-list { display: flex; flex-direction: column; gap: var(--space-3); }
.signal-row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); flex-wrap: wrap; }
.signal-row__text { display: flex; flex-direction: column; min-width: 0; }
.signal-row__label { font-size: var(--text-md); color: var(--text); font-weight: var(--weight-medium); }
.signal-row__hint { font-size: var(--text-xs); color: var(--text-faint); }
.signal-seg { display: inline-flex; background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 2px; gap: 2px; }
.signal-seg__btn {
  font: inherit; font-size: var(--text-xs); color: var(--text-muted); background: transparent; border: none;
  border-radius: var(--radius-sm); padding: 5px var(--space-3); cursor: pointer; white-space: nowrap;
  transition: background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .signal-seg__btn:hover { color: var(--text); } }
.signal-seg__btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.signal-seg__btn.is-active { background: var(--text); color: var(--accent-text); font-weight: var(--weight-medium); }

/* действия формы */
.icp-form__actions { display: flex; gap: var(--space-3); flex-wrap: wrap; padding-top: var(--space-2); }
.icp-form__actions .btn { flex: 1; min-width: 160px; }
.icp-freetext__actions { display: flex; margin-top: var(--space-3); }
.icp-freetext__actions .btn { flex: 1; }

/* сохранённые профили */
.icp-saved { margin-top: var(--space-8); }
.icp-saved__title { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--text-2xs); font-weight: var(--weight-semibold); color: var(--text-faint); text-transform: uppercase; letter-spacing: var(--tracking-wide); margin-bottom: var(--space-3); }
.icp-saved__title .icon { width: 14px; height: 14px; color: var(--text-faint); }
.icp-saved__list { display: flex; flex-direction: column; gap: var(--space-2); }
.icp-saved__item { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); }
.icp-saved__item-text { display: flex; flex-direction: column; min-width: 0; }
.icp-saved__item-title { font-size: var(--text-md); color: var(--text); font-weight: var(--weight-medium); }
.icp-saved__item-meta { font-size: var(--text-xs); color: var(--text-faint); }

/* баннер извлечения */
.extract-notice { margin-top: var(--space-3); border-radius: var(--radius-md); padding: var(--space-3); font-size: var(--text-sm); line-height: var(--leading-snug); border: 1px solid var(--border); background: var(--surface-2); }
.extract-notice--ok { border-color: var(--border); background: var(--accent-soft); }
.extract-notice--warn { border-color: color-mix(in srgb, var(--warn) 30%, var(--border)); background: var(--warn-soft); }
.extract-notice__head { display: flex; align-items: center; gap: var(--space-2); color: var(--text); font-weight: var(--weight-medium); }
.extract-notice--ok .extract-notice__head .icon { color: var(--accent-strong); }
.extract-notice--warn .extract-notice__head .icon { color: var(--warn); }
.extract-notice__list { margin: var(--space-2) 0 0; padding-left: var(--space-5); color: var(--text-muted); }
.extract-notice__list li { margin-top: 2px; }
/* пояснение warn-блока «широкий профиль» (broad_profile from-text) */
.extract-notice__note { margin: var(--space-2) 0 0; color: var(--text-muted); }

/* индикатор прогресса поиска — спокойный тонкий бар + шаги */
.search-progress {
  margin: var(--space-4) 0 0; background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: var(--space-5); animation: fade-up var(--dur-base) var(--ease-standard);
}
.search-progress__head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-4); }
.search-progress__head .icon { color: var(--accent-strong); }
.search-progress__label { font-size: var(--text-md); font-weight: var(--weight-medium); color: var(--text); }
.search-progress__bar { height: 3px; background: var(--surface-sunken); border-radius: var(--radius-pill); overflow: hidden; }
.search-progress__fill { height: 100%; width: 6%; background: var(--text); border-radius: var(--radius-pill); transition: width var(--dur-slow) var(--ease-emphasized); }
.search-progress.is-done .search-progress__fill { background: var(--text); }
.search-progress.is-error .search-progress__fill { background: var(--danger); }
.search-progress__channels { list-style: none; margin: var(--space-4) 0 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.search-channel { display: flex; align-items: center; gap: var(--space-3); font-size: var(--text-sm); color: var(--text-muted); }
.search-channel__icon { display: inline-flex; color: var(--text-faint); }
.search-channel__name { color: var(--text); flex: 1; min-width: 0; }
.search-channel__status { font-size: var(--text-xs); color: var(--text-faint); font-variant-numeric: tabular-nums; }
.search-channel--ok .search-channel__icon .icon { color: var(--accent-strong); }
.search-channel--ok .search-channel__status { color: var(--accent-strong); }
.search-channel--error .search-channel__icon .icon { color: var(--danger); }
.search-channel--error .search-channel__status { color: var(--danger); }
.search-channel--skipped { opacity: 0.55; }
.search-channel--pending .search-channel__icon .icon { color: var(--text-faint); animation: spin 1.4s linear infinite; }

@media (max-width: 460px) { .icp-form__actions .btn { min-width: 0; } .signal-row { align-items: flex-start; } }

/* ═══════════════════════════ опт-ин контур (docs/14) ═══════════════════════════ */
.lang-toggle {
  display: inline-flex; align-items: center; gap: 4px; font: inherit;
  font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--text-muted);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: 4px var(--space-2); cursor: pointer;
}
@media (hover: hover) and (pointer: fine) { .lang-toggle:hover { background: var(--surface-hover); } }
.lang-toggle__opt { padding: 1px 4px; border-radius: var(--radius-xs); }
.lang-toggle__opt.is-active { color: var(--accent-strong); }
.lang-toggle__sep { color: var(--text-faint); }

/* публичная форма */
.intake-page { background: var(--bg); }
.intake-wrap { max-width: 560px; margin: 0 auto; padding-top: var(--space-4); }
.intake-form { display: flex; flex-direction: column; gap: var(--space-5); }
.intake-head { margin-bottom: var(--space-1); }
.intake-title { font-size: var(--text-3xl); font-weight: var(--weight-bold); line-height: var(--leading-tight); letter-spacing: var(--tracking-tighter); color: var(--text); }
.intake-purpose { margin-top: var(--space-3); font-size: var(--text-md); color: var(--text-muted); line-height: var(--leading-snug); }
.intake-purpose__label { color: var(--text-faint); }

.intake-field { display: flex; flex-direction: column; gap: var(--space-2); border: none; padding: 0; }
.intake-field__label { font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--text); }
.intake-field__req { color: var(--accent-strong); font-size: var(--text-xs); font-weight: var(--weight-semibold); }
.intake-field__err { font-size: var(--text-xs); color: var(--danger); }
.intake-field .text-input[aria-invalid="true"] { border-color: var(--danger); }

/* согласие — акцентный, но сдержанный блок */
.intake-consent {
  border: 1px solid var(--border);
  background: var(--accent-soft); border-radius: var(--radius-lg);
  padding: var(--space-5);
}
.intake-consent__title { display: flex; align-items: center; gap: 6px; font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); margin-bottom: var(--space-2); }
.intake-consent__title .icon { width: 16px; height: 16px; color: var(--accent-strong); }
.intake-consent__text { font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-normal); }
.intake-consent__version { margin-top: var(--space-2); font-size: var(--text-2xs); color: var(--text-faint); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.intake-consent__row { display: flex; align-items: flex-start; gap: var(--space-2); margin-top: var(--space-3); padding-top: var(--space-3); border-top: 1px solid var(--border); cursor: pointer; }
.intake-consent__check { width: 20px; height: 20px; flex: none; margin-top: 1px; accent-color: var(--accent-strong); cursor: pointer; }
.intake-consent__label { font-size: var(--text-md); font-weight: var(--weight-medium); color: var(--text); }
.intake-submit { margin-top: var(--space-1); }

.intake-result { display: flex; flex-direction: column; align-items: center; gap: var(--space-3); text-align: center; padding: var(--space-16) var(--space-4); max-width: 460px; margin: 0 auto; }
.intake-result__icon { width: 60px; height: 60px; display: grid; place-items: center; border-radius: var(--radius-xl); border: 1px solid var(--border); background: var(--accent-soft); color: var(--accent-strong); }
.intake-result__icon .icon { width: 28px; height: 28px; }
.intake-result__title { font-size: var(--text-xl); font-weight: var(--weight-bold); color: var(--text); letter-spacing: var(--tracking-tight); }
.intake-result__hint { color: var(--text-muted); font-size: var(--text-md); }

/* вкладка «Заявки» (tenant) */
.intake-tab { display: flex; flex-direction: column; gap: var(--space-5); }
.intake-context {
  display: flex; gap: var(--space-3); align-items: flex-start;
  background: var(--accent-soft); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: var(--space-4) var(--space-5);
}
.intake-context__icon { flex: none; width: 34px; height: 34px; display: grid; place-items: center; border-radius: var(--radius-sm); background: var(--surface); border: 1px solid var(--border); color: var(--accent-strong); }
.intake-context__icon .icon { width: 17px; height: 17px; }
.intake-context__text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.intake-context__title { font-weight: var(--weight-semibold); color: var(--text); font-size: var(--text-md); }
.intake-context__hint { font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }

.intake-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--space-4); }
.intake-card { display: flex; flex-direction: column; gap: var(--space-3); background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--space-5); }
.intake-card__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.intake-card__time { font-size: var(--text-xs); color: var(--text-faint); }
.intake-card__payload { display: flex; flex-direction: column; gap: var(--space-2); }
.intake-card__field { display: flex; gap: var(--space-2); font-size: var(--text-sm); align-items: baseline; }
.intake-card__field--key { align-items: center; }
.intake-card__field-icon { flex: none; color: var(--text-faint); display: inline-flex; }
.intake-card__field-icon .icon { width: 15px; height: 15px; }
.intake-card__field-key { flex: none; min-width: 96px; color: var(--text-muted); font-size: var(--text-xs); }
.intake-card__field-val { color: var(--text); word-break: break-word; }
.intake-card__name .intake-card__field-val { font-size: var(--text-lg); font-weight: var(--weight-semibold); letter-spacing: var(--tracking-tight); }

.intake-consent-block { border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--surface-2); overflow: hidden; }
.intake-consent-block__summary { display: flex; align-items: center; gap: 6px; padding: var(--space-2) var(--space-3); cursor: pointer; font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--accent-strong); list-style: none; }
.intake-consent-block__summary::-webkit-details-marker { display: none; }
.intake-consent-block__summary .icon { width: 14px; height: 14px; color: var(--accent-strong); }
.intake-consent-block__ver { margin-left: auto; font-size: var(--text-2xs); color: var(--text-faint); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.intake-consent-block__body { padding: var(--space-2) var(--space-3) var(--space-3); border-top: 1px solid var(--border-subtle); }
.intake-consent-block__meta { display: flex; flex-direction: column; gap: 2px; margin-bottom: var(--space-2); }
.intake-consent-block__kv { display: flex; gap: var(--space-2); font-size: var(--text-xs); }
.intake-consent-block__key { color: var(--text-muted); min-width: 96px; flex: none; }
.intake-consent-block__val { color: var(--text); word-break: break-word; }
.intake-consent-block__text { font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }

.intake-card__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.intake-card__foot { padding-top: var(--space-2); border-top: 1px solid var(--border-subtle); }
.intake-card__delete { color: var(--danger); border-color: transparent; }
@media (hover: hover) and (pointer: fine) { .intake-card__delete:hover { background: var(--danger-soft); } }
.intake-card__delete .icon { color: var(--danger); }

@media (max-width: 460px) { .intake-card__field-key { min-width: 0; } }

/* ─────────────────────────── keyframes / motion ─────────────────────────── */
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes shimmer { 100% { transform: translateX(100%); } }
@keyframes fade-up { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@keyframes row-flash { 0% { background: var(--accent-soft); } 100% { background: transparent; } }
.lead-table tbody tr.just-moved { animation: row-flash var(--dur-slow) var(--ease-standard); }
/* Микроанимация появления строк: лёгкий stagger при заходе на экран (board.js
 * ставит --row-i; после смены статуса не применяется). reduced-motion глушит. */
.lead-table tbody tr.row-in {
  animation: fade-up var(--dur-base) var(--ease-standard) both;
  animation-delay: calc(var(--row-i, 0) * 18ms);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important; animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important; scroll-behavior: auto !important;
  }
  .skeleton::after { display: none; }
  /* P2-5 (docs/18): под reduced-motion (и как перф-фолбэк на слабых устройствах)
   * снимаем дорогой backdrop-filter со стеклянных поверхностей → плотный фон.
   * Читаемость и глубина остаются (тень/кромка), GPU-нагрузка скролла падает. */
  .topbar, .topbar__nav, .lead-table-wrap, .analytics-block, .billing-card, .billing-plan, .paywall,
  .saved-row, .icp-advanced, .preset-card, .field--freetext, .app > .lead,
  .market-est, .recap, .lookalike, .xsell, .welcome__card {
    -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    background: var(--surface) !important;
  }
}

/* ═══════════════════════ Подписка (billing) ═══════════════════════
 * Экран рендерит billing.js (billing-card / expiry / usage / paywall), но стили
 * ранее отсутствовали → метки и значения слипались. Карточка в языке системы:
 * hairline + shadow-card, статус-цвета приглушённые, вертикальный ритм воздухом. */
.billing-card {
  display: flex; flex-direction: column; gap: var(--space-5);
  max-width: 520px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  padding: var(--space-6);
}
.billing-card__head {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-3); flex-wrap: wrap;
}
.billing-state {
  display: inline-flex; align-items: center; gap: var(--space-2);
  padding: 4px 10px; border-radius: var(--radius-pill);
  font-size: var(--text-sm); font-weight: var(--weight-semibold);
  background: var(--surface-2); color: var(--text-muted);
}
.billing-state .icon { width: 15px; height: 15px; }
.billing-state--trial  { background: var(--warn-soft); color: var(--warn); }
.billing-state--active { background: var(--success-soft); color: var(--success); }
.billing-state--expired { background: var(--danger-soft); color: var(--danger); }
.billing-card__plan {
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--text-faint);
}
.billing-expiry { display: flex; flex-direction: column; gap: 3px; }
.billing-expiry__cap {
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--text-faint);
}
.billing-expiry__val {
  font-size: var(--text-2xl); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); color: var(--text);
  line-height: var(--leading-tight);
}
.billing-expiry__date { font-size: var(--text-sm); color: var(--text-muted); }
.billing-usage { display: flex; flex-direction: column; gap: var(--space-2); }
.billing-usage__top {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3);
}
.billing-usage__cap { font-size: var(--text-sm); color: var(--text-muted); }
.billing-usage__val { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); }
.billing-usage__track {
  height: 6px; border-radius: var(--radius-pill);
  background: var(--surface-sunken); overflow: hidden;
}
.billing-usage__fill {
  height: 100%; border-radius: var(--radius-pill); background: var(--accent);
  transition: width var(--dur-slow) var(--ease-emphasized);
}
.billing-card__foot { display: flex; flex-direction: column; gap: var(--space-3); }
.billing-active-note {
  display: inline-flex; align-items: center; gap: var(--space-2);
  color: var(--success); font-size: var(--text-md); font-weight: var(--weight-medium); margin: 0;
}
.billing-active-note .icon { width: 16px; height: 16px; }
.billing-card__hint {
  font-size: var(--text-xs); color: var(--text-muted);
  line-height: var(--leading-snug); text-align: center; margin: 0;
}

/* Пейволл (триал завершён) — спокойный empty-state по центру. */
.paywall {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: var(--space-3); max-width: 420px; margin: var(--space-8) auto 0;
  padding: var(--space-8) var(--space-6);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
}
.paywall__icon {
  width: 48px; height: 48px; display: grid; place-items: center;
  border-radius: var(--radius-lg); background: var(--warn-soft); color: var(--warn);
}
.paywall__icon .icon { width: 22px; height: 22px; }
.paywall__title { font-size: var(--text-xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tight); margin: 0; }
.paywall__hint { font-size: var(--text-md); color: var(--text-muted); line-height: var(--leading-normal); margin: 0; }

/* Карточка плана «Стандарт» (порт pricing-card из 21st в vanilla+токены):
 * шапка «имя + бейдж рекомендуем | ценность вместо числа», чеклист фич, CTA.
 * Подсветка рекомендованного — СКУПО: тонкая коралловая кромка + мягкая заливка
 * (иерархия воздухом/hairline, один акцент; цену не показываем — docs/04). */
.billing-plan {
  display: flex; flex-direction: column; gap: var(--space-5);
  max-width: 520px;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  padding: var(--space-6);
}
/* Двойной класс — специфичность выше стеклянной группы (.billing-plan) ниже по файлу,
 * поэтому коралловая подсветка переживает glass-правило независимо от порядка. */
.billing-plan.billing-plan--featured {
  border-color: var(--accent);
  background:
    linear-gradient(180deg, var(--accent-050) 0%, transparent 108px),
    var(--glass-bg);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass), var(--shadow-focus);
}
.billing-plan__head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: var(--space-4); flex-wrap: wrap;
}
.billing-plan__title { display: flex; flex-direction: column; gap: var(--space-2); }
.billing-plan__name {
  font-size: var(--text-xl); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); color: var(--text);
}
.billing-plan__badge {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 9px; border-radius: var(--radius-pill);
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  background: var(--accent-soft); color: var(--accent-strong);
}
.billing-plan__badge .icon { width: 12px; height: 12px; }
.billing-plan__price { display: flex; flex-direction: column; gap: 2px; text-align: right; }
.billing-plan__price-lead {
  font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--text);
}
.billing-plan__price-sub { font-size: var(--text-xs); color: var(--text-muted); }

/* Чеклист возможностей — галочка-акцент + строка, вертикальный ритм воздухом. */
.plan-features { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.plan-features__item {
  display: flex; align-items: flex-start; gap: var(--space-3);
  font-size: var(--text-md); line-height: var(--leading-snug); color: var(--text);
}
.plan-features__item .icon { color: var(--accent-strong); flex-shrink: 0; margin-top: 1px; }
.billing-plan__foot { display: flex; flex-direction: column; gap: var(--space-3); }

/* Пейволл переиспользует чеклист: он центрирован → выравниваем строки по левому краю. */
.paywall .plan-features { text-align: left; align-self: stretch; margin-top: var(--space-1); }

/* Список тарифов в пейволле (из каталога plans.py): карточка на тариф с ценой и
 * кнопкой «Оплатить». Один акцент, hairline, tabular-nums; без выдуманных чисел. */
.paywall-plans {
  display: flex; flex-direction: column; gap: var(--space-3);
  align-self: stretch; text-align: left; margin-top: var(--space-2);
}
.paywall-plan {
  display: flex; flex-direction: column; gap: var(--space-3);
  padding: var(--space-4) var(--space-5);
  border: 1px solid var(--border); border-radius: var(--radius-md);
  background: var(--surface);
}
.paywall-plan__head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3);
}
.paywall-plan__name {
  font-size: var(--text-lg); font-weight: var(--weight-semibold);
  letter-spacing: var(--tracking-tight); color: var(--text);
}
.paywall-plan__price { display: flex; flex-direction: column; gap: 2px; text-align: right; }
.paywall-plan__price-lead {
  font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--text);
  font-variant-numeric: tabular-nums;
}
.paywall-plan__price-sub { font-size: var(--text-xs); color: var(--text-muted); }
.paywall-plan__limit { font-size: var(--text-sm); color: var(--text-muted); margin: 0; }
.paywall-plan__cta { align-self: stretch; }

/* Индикатор триала в шапке доски: «Осталось N бесплатных лидов» — ненавязчивый чип. */
.trial-chip {
  display: inline-flex; align-items: center; gap: 5px;
  align-self: flex-start; margin-top: var(--space-1);
  padding: 3px 10px; border-radius: var(--radius-pill);
  font-size: var(--text-xs); font-weight: var(--weight-medium);
  color: var(--warn); background: var(--warn-soft);
}
.trial-chip .icon { width: 13px; height: 13px; flex: none; }
.trial-chip__text { font-variant-numeric: tabular-nums; }

/* apple-craft: экран billing въезжает так же, как analytics/icp (единый идиом fade-up).
 * Лёгкий stagger — статус-карта, затем карта плана. reduced-motion глушит глобально. */
.billing-card, .billing-plan, .paywall {
  animation: fade-up var(--dur-base) var(--ease-standard) both;
}
.billing-plan { animation-delay: 55ms; }

/* ═══════════════════════ Сохранённые поиски (saved) ═══════════════════════
 * Экран рендерит saved.js; стили ранее отсутствовали → строки были без раскладки.
 * Строка-карточка: слева label+интервал, справа тумблер вкл/выкл + удаление. */
.saved-list { display: flex; flex-direction: column; gap: var(--space-3); }
.saved-row {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  padding: var(--space-4);
}
.saved-row__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.saved-row__label {
  font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text);
  letter-spacing: -0.005em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.saved-row__meta { font-size: var(--text-xs); color: var(--text-faint); }
/* итог последнего прогона (найдено/новых) и пояснение «Новых нет» — на тон заметнее меты */
.saved-row__stats { color: var(--text-muted); }
.saved-row__nonew { color: var(--text-muted); font-style: italic; }
/* «Запустить сейчас» — вторичная кнопка в колонке текста, не растягивается на всю ширину */
.saved-row__run { margin-top: var(--space-2); align-self: flex-start; }
.saved-row__controls { display: inline-flex; align-items: center; gap: var(--space-2); flex: none; }

/* тумблер-чип: подпись + «костяшка»-индикатор; is-active → акцент */
.saved-toggle {
  display: inline-flex; align-items: center; gap: var(--space-2);
  padding: 5px 10px 5px 12px; border-radius: var(--radius-pill);
  border: 1px solid var(--border-strong); background: var(--surface-2);
  color: var(--text-muted); font: inherit; font-size: var(--text-sm);
  font-weight: var(--weight-medium); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard),
              color var(--dur-fast) var(--ease-standard),
              border-color var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .saved-toggle:hover { border-color: var(--accent-strong); } }
.saved-toggle.is-active { background: var(--accent-soft); color: var(--accent-strong); border-color: transparent; }
.saved-toggle__label { line-height: 1; }
.saved-toggle__knob {
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--border-strong);
  transition: background var(--dur-fast) var(--ease-standard);
}
.saved-toggle.is-active .saved-toggle__knob { background: var(--text); }

.saved-row__delete {
  display: inline-grid; place-items: center; width: 34px; height: 34px;
  border-radius: var(--radius-md); border: 1px solid transparent;
  background: none; color: var(--text-faint); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard),
              color var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .saved-row__delete:hover { background: var(--danger-soft); color: var(--danger); } }
.saved-row__delete .icon { width: 16px; height: 16px; }

/* ═══════════ ICP: прогрессивное раскрытие («или»-разделитель + свёрнутое уточнение) ═══════════ */
.icp-or {
  display: flex; align-items: center; gap: var(--space-3);
  color: var(--text-faint); font-size: var(--text-2xs);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  margin: var(--space-1) 0;
}
.icp-or::before, .icp-or::after { content: ""; height: 1px; background: var(--border); flex: 1; }

.icp-advanced {
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  background: var(--surface); box-shadow: var(--shadow-card); overflow: hidden;
}
.icp-advanced__summary {
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-4); cursor: pointer; list-style: none; user-select: none;
  transition: background var(--dur-fast) var(--ease-standard);
}
.icp-advanced__summary::-webkit-details-marker { display: none; }
@media (hover: hover) and (pointer: fine) { .icp-advanced__summary:hover { background: var(--surface-hover); } }
.icp-advanced__summary .icon { width: 16px; height: 16px; color: var(--text-faint); flex: none; }
.icp-advanced__summary-text { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); }
.icp-advanced__summary-hint { font-size: var(--text-xs); color: var(--text-faint); margin-left: auto; }
.icp-advanced__chevron { margin-left: var(--space-2); transition: transform var(--dur-base) var(--ease-standard); }
.icp-advanced[open] .icp-advanced__chevron { transform: rotate(180deg); }
.icp-advanced__body {
  display: flex; flex-direction: column; gap: var(--space-5);
  padding: var(--space-5) var(--space-4) var(--space-5);
  border-top: 1px solid var(--border);
}
@media (max-width: 560px) {
  .icp-advanced__summary-hint { display: none; }  /* на узком — без длинной подсказки */
}

/* ═══════════ Карточка лида: секция «Сигналы» (факты-моат чипами) ═══════════ */
.sig-list { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.sig-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 11px; border: 1px solid var(--border); border-radius: var(--radius-pill);
  background: var(--surface-2); font-size: var(--text-sm); max-width: 100%;
}
.sig-chip .icon { width: 11px; height: 11px; color: var(--accent-strong); flex: none; }
.sig-chip__label { color: var(--text); font-weight: var(--weight-medium); white-space: nowrap; }
.sig-chip__detail { color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sig-chip__detail::before { content: "· "; color: var(--text-faint); }

/* ═══════════════════════════════════════════════════════════════════════ *
 *  LIQUID GLASS (Apple-стиль) — матовые полупрозрачные материалы поверх     *
 *  амбиентного градиента. Один блок в конце: переопределяет фон/кромку/     *
 *  тень базовых поверхностей на «стекло» (backdrop-blur + saturate + блик). *
 * ═══════════════════════════════════════════════════════════════════════ */

/* Верхняя панель — тонкое матовое стекло, прилипшее к верху. */
/* (стекло шапки переехало на .topbar__inner — плавающая скруглённая панель, см. выше) */

/* Нижний таб-бар (мобайл) — матовое стекло с бликом сверху. */
/* (стекло нижнего таб-бара — уже в базовом .topbar__nav правиле выше) */

/* Карточки/панели — стеклянный материал с внутренним верхним бликом и мягкой тенью. */
.lead-table-wrap,
.analytics-block,
.billing-card,
.billing-plan,
.paywall,
.saved-row,
.icp-advanced,
.preset-card,
.field--freetext {
  background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass);
}

/* Карточка лида (маршрут #/lead) — единая стеклянная панель поверх фона. */
.app > .lead {
  background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass);
  border-radius: var(--radius-card);
  padding: var(--space-5) var(--space-5) var(--space-6);
}

/* Все контентные панели — ЕДИНЫЙ радиус карточки (--radius-card = lg 18), как строки
 * списков и карточки ботов. Раньше здесь был xl (22) → рассинхрон с bots-row/more-item. */
.lead-table-wrap, .analytics-block, .billing-card, .billing-plan, .paywall, .icp-advanced { border-radius: var(--radius-card); }

/* Кнопки — чуть выпуклое стекло у вторичных; акцент остаётся плотным. */
.btn { border-radius: var(--radius-md); }

/* Хедер таблицы на стекле — полупрозрачный, а не плотная плашка. */
.lead-table thead th { background: color-mix(in srgb, var(--glass-bg-strong) 70%, transparent); }

/* На стеклянных картах внутренние hairline-разделители мягче. */
.lead-table tbody tr { border-bottom-color: color-mix(in srgb, var(--border) 60%, transparent); }

/* ═══ Оценка рынка/потока на экране «Поиск» (анти-лотерея) ═══
 * Акцентная карточка: «сейчас N компаний · +M/нед · K свежих» — подписка как
 * прогноз потока, а не гадание «найдут/не найдут». */
.market-est {
  background: var(--accent-soft);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-4) var(--space-5);
  box-shadow: var(--shadow-card);
  transition: opacity var(--dur-fast) var(--ease-standard);
}
.market-est.is-loading { opacity: 0.55; }
.market-est__hint { display: flex; align-items: flex-start; gap: var(--space-2); margin: 0; font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); }
.market-est__hint .icon { width: 15px; height: 15px; color: var(--accent-strong); flex: none; margin-top: 2px; }
.market-est__head { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-2xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--accent-strong); margin-bottom: var(--space-3); }
.market-est__head .icon { width: 14px; height: 14px; }
.market-est__metrics { display: flex; gap: var(--space-6); flex-wrap: wrap; }
.market-est__metric { display: flex; flex-direction: column; gap: 1px; }
.market-est__val { font-size: var(--text-2xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tight); color: var(--text); line-height: 1.05; }
.market-est__cap { font-size: var(--text-xs); color: var(--text-muted); }
.market-est__note { margin: var(--space-3) 0 0; font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }

/* delta-пилюля тренда (приём BoardUI): глиф направления + tabular-nums. */
.delta-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 9px 2px 7px; border-radius: var(--radius-pill);
  font-size: var(--text-lg); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); line-height: 1.1;
}
.delta-chip__ic { width: 0.72em; height: 0.72em; stroke-width: 2.4; }
.delta-chip--up { color: var(--pos-600); background: var(--pos-050); }
.delta-chip--down { color: var(--neg-600); background: var(--neg-050); }
.delta-chip--flat { color: var(--text-muted); background: var(--surface-2); }

/* ═══ «Итоги недели» — тонкий retention-баннер над доской (docs/17) ═══ */
/* Итоги недели — тонкий одностроч­ный стрип (не карточка): один hairline-акцент
 * слева, заголовок + сводка в одну строку. Разгружает шапку доски на телефоне. */
.digest {
  display: flex; align-items: center; gap: var(--space-2);
  padding: var(--space-2) 0; margin-bottom: var(--space-2);
  animation: fade-up var(--dur-base) var(--ease-standard);
}
.digest__icon { display: grid; place-items: center; width: 22px; height: 22px; flex: none;
  border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent-strong); }
.digest__icon .icon { width: 13px; height: 13px; }
.digest__body { display: flex; align-items: baseline; gap: var(--space-2); min-width: 0; flex: 1; }
.digest__title { display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap; font-size: var(--text-sm); color: var(--text); }
.digest__hot { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--accent-strong); }
.digest__sub { font-size: var(--text-xs); color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* На телефоне сводка-хвост уходит: заголовок «за неделю: N» несёт суть, строка одна. */
@media (max-width: 560px) { .digest__sub { display: none; } }

/* «Похожи на ваши сделки» (lookalike) — карточка рекомендаций над доской. */
.lookalike { margin-bottom: var(--space-3); background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-card); padding: var(--space-3) var(--space-4);
  animation: fade-up var(--dur-base) var(--ease-standard); }
.lookalike__head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-2); }
/* Свёрнутый lookalike на телефоне — тонкая строка-подсказка, не карточка:
 * снимаем стеклянную плашку и паддинг, остаётся кликабельная строка-тумблер. */
@media (max-width: 560px) {
  .lookalike.is-collapsed {
    background: none; border: none; box-shadow: none;
    padding: var(--space-2) 0; margin-bottom: var(--space-2);
  }
}
/* Шапка-тумблер (мобильная разгрузка): свёрнут — список скрыт, шеврон вниз. */
.lookalike__head--btn { width: 100%; background: none; border: none; padding: 0;
  cursor: pointer; font: inherit; text-align: left; }
.lookalike__head-chev { width: 15px; height: 15px; color: var(--text-faint); margin-left: auto;
  transition: transform var(--dur-fast) var(--ease-standard); transform: rotate(90deg); }
.lookalike.is-collapsed .lookalike__head-chev { transform: rotate(0deg); }
.lookalike.is-collapsed .lookalike__list { display: none; }
.lookalike.is-collapsed .lookalike__head { margin-bottom: 0; }
.lookalike__icon { display: grid; place-items: center; width: 26px; height: 26px; flex: none;
  border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent-strong); }
.lookalike__icon .icon { width: 15px; height: 15px; }
.lookalike__title { font-size: var(--text-2xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); }
.lookalike__list { display: flex; flex-direction: column; gap: 4px; }
.lookalike__item { display: flex; align-items: center; gap: var(--space-2); width: 100%;
  background: none; border: none; border-radius: var(--radius-sm); padding: 7px var(--space-2);
  text-align: left; cursor: pointer; font: inherit;
  transition: background var(--dur-fast) var(--ease-standard); }
@media (hover: hover) and (pointer: fine) { .lookalike__item:hover { background: var(--surface-hover); } }
.lookalike__co { font-size: var(--text-md); font-weight: var(--weight-medium); color: var(--text); white-space: nowrap; }
.lookalike__reason { font-size: var(--text-xs); color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; min-width: 0; }
.lookalike__chev { width: 15px; height: 15px; color: var(--text-faint); flex: none; }

/* ═══ Cross-sell «Соседние сегменты» на экране ICP (docs/17 №5) ═══
 * Язык блока = lookalike: стеклянная карточка, uppercase-заголовок, строки-кнопки.
 * Клик раскрывает карточку соответствующего пресета (тот же путь активации). */
.xsell { background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-card); padding: var(--space-3) var(--space-4);
  animation: fade-up var(--dur-base) var(--ease-standard); }
.xsell-slot { margin-top: var(--space-4); }
.xsell__head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-2); }
.xsell__icon { display: grid; place-items: center; width: 26px; height: 26px; flex: none;
  border-radius: var(--radius-sm); background: var(--accent-soft); color: var(--accent-strong); }
.xsell__icon .icon { width: 15px; height: 15px; }
.xsell__head-text { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.xsell__title { font-size: var(--text-2xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); }
.xsell__sub { font-size: var(--text-xs); color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.xsell__list { display: flex; flex-direction: column; gap: 4px; }
.xsell__item { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%;
  background: none; border: none; border-radius: var(--radius-sm); padding: 7px var(--space-2);
  text-align: left; cursor: pointer; font: inherit;
  transition: background var(--dur-fast) var(--ease-standard); }
@media (hover: hover) and (pointer: fine) { .xsell__item:hover { background: var(--surface-hover); } }
.xsell__name { font-size: var(--text-md); font-weight: var(--weight-medium); color: var(--text); }
.xsell__reason { font-size: var(--text-xs); color: var(--text-muted); }

/* ═══ Renewal-nudge на экране «Подписка»: ценность за период ═══ */
.recap { max-width: 520px; margin-top: var(--space-4); padding: var(--space-5) var(--space-6);
  background: var(--glass-bg); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-xl);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass); }
.recap__head { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-2xs);
  font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--text-faint); margin-bottom: var(--space-4); }
.recap__head .icon { width: 14px; height: 14px; color: var(--accent-strong); }
.recap__metrics { display: flex; gap: var(--space-6); flex-wrap: wrap; }
.recap__metric { display: flex; flex-direction: column; gap: 1px; }
.recap__val { font-size: var(--text-2xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tight); color: var(--text); line-height: 1.05; }
.recap__cap { font-size: var(--text-xs); color: var(--text-muted); }
.recap__note { margin: var(--space-4) 0 0; font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); }

/* ═══════════════ Онбординг-волшебник (#/welcome, 3 шага) ═══════════════ */
.welcome { max-width: 560px; margin: 0 auto; display: flex; flex-direction: column; gap: var(--space-6); }
.welcome__steps { display: flex; align-items: center; justify-content: center; gap: var(--space-3); }
.welcome__step { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--text-faint); }
.welcome__step-dot {
  width: 24px; height: 24px; flex: none; display: grid; place-items: center;
  border-radius: 50%; border: 1px solid var(--border-strong);
  font-size: var(--text-xs); font-weight: var(--weight-semibold); background: var(--surface);
}
.welcome__step-dot .icon { width: 14px; height: 14px; stroke-width: 2.4; }
.welcome__step-label { font-size: var(--text-xs); font-weight: var(--weight-medium); }
.welcome__step.is-active { color: var(--accent-strong); }
.welcome__step.is-active .welcome__step-dot { border-color: var(--accent-strong); color: var(--accent-strong); background: var(--accent-soft); }
.welcome__step.is-done { color: var(--success); }
.welcome__step.is-done .welcome__step-dot { border-color: transparent; color: #fff; background: var(--success); }

.welcome__card {
  display: flex; flex-direction: column; gap: var(--space-4);
  background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-xl);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass);
  padding: var(--space-6);
}
.welcome__card--center { align-items: center; text-align: center; }
.welcome__title { font-size: var(--text-2xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tight); margin: 0; }
.welcome__sub { font-size: var(--text-md); color: var(--text-muted); line-height: var(--leading-normal); margin: 0; }
.welcome__actions { margin-top: var(--space-2); }
.welcome__skip { text-align: center; font-size: var(--text-sm); margin: 0; }
.welcome__chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.welcome__market { display: flex; gap: var(--space-6); flex-wrap: wrap; padding: var(--space-2) 0; }
.welcome__metric { display: flex; flex-direction: column; gap: 1px; }
.welcome__metric-val { font-size: var(--text-3xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tight); color: var(--accent-strong); line-height: 1.05; }
.welcome__metric-cap { font-size: var(--text-xs); color: var(--text-muted); }
.welcome__note { font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); margin: 0; }
.welcome__done-icon { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 50%; background: var(--success-soft); color: var(--success); }
.welcome__done-icon .icon { width: 28px; height: 28px; }

/* ═══ Мобильные карточки: противо-оверрайд glass-слоя (он объявлен выше и иначе
 * перебивал бы медиа-правила; специфичность у медиа не растёт — решает порядок). ═══ */
@media (max-width: 560px) {
  .lead-table-wrap {
    background: transparent !important;
    border: none; box-shadow: none; border-radius: 0; overflow: visible;
    -webkit-backdrop-filter: none; backdrop-filter: none;
  }
  .lead-table tbody tr {
    border: 1px solid var(--border);
    border-bottom-color: var(--border);
  }
  .lead-table tbody tr:last-child { border-bottom: 1px solid var(--border); }
}

/* ═══ Человеческая сводка на карточке лида (редизайн 2026-09-15) ═══
 * «Кто это» обычным текстом + «почему этот лид у вас» — акцент-плашкой.
 * Отвечает на вопрос владельца без чтения реквизитов и чипов. */
.lead-brief {
  margin-top: var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-3);
}
.lead-brief__about {
  margin: 0;
  font-size: var(--text-base); line-height: var(--leading-normal);
  color: var(--text);
}
.lead-brief__why {
  margin: 0; display: flex; gap: var(--space-2); align-items: flex-start;
  font-size: var(--text-md); line-height: var(--leading-normal);
  color: var(--accent-strong);
  background: var(--accent-soft);
  border: 1px solid var(--border);
  border-radius: var(--radius-md); padding: var(--space-3) var(--space-4);
}
.lead-brief__why .icon { flex: none; margin-top: 3px; width: 14px; height: 14px; }

/* Сегмент-контрол доски (сорт + фильтр этапов) использует .seg + .seg--pill;
 * само определение .seg/.seg__btn/.seg--pill живёт выше (единый примитив). */

/* ═══ Фильтр этапов воронки над доской (редизайн 2026-09-15) ═══ */
.stage-filter { margin-bottom: var(--space-2); overflow-x: auto; -webkit-overflow-scrolling: touch; }
.stage-filter::-webkit-scrollbar { display: none; }
.seg--stage { min-width: max-content; }
.seg__count {
  margin-left: 5px; padding: 1px 6px; border-radius: var(--radius-pill);
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  background: var(--accent-soft); color: var(--accent-strong);
}
.stage-empty { color: var(--text-muted); font-size: var(--text-md); padding: var(--space-6) 0; text-align: center; }

/* ═══ Экран «Ещё» (#/more): меню-карточки второстепенных разделов ═══ */
.more-list { display: flex; flex-direction: column; gap: var(--space-3); max-width: 520px; }
/* Настройки: подпись секции + сегмент выбора языка (переехал из шапки) */
.more-sect-cap { padding: var(--space-3) var(--space-1) var(--space-1); font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); font-weight: var(--weight-semibold); }
.lang-seg { flex: none; display: inline-flex; gap: 2px; padding: 3px; border-radius: var(--radius-pill); background: var(--surface-sunken); border: 1px solid var(--border); }
.lang-seg__btn {
  border: 0; background: none; font: inherit; font-size: var(--text-sm); font-weight: var(--weight-semibold);
  color: var(--text-muted); padding: 5px 13px; border-radius: var(--radius-pill); cursor: pointer;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  transition: background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);
}
.lang-seg__btn.is-active { background: var(--surface); color: var(--accent-strong); box-shadow: var(--shadow-md); }
.more-item {
  display: flex; align-items: center; gap: var(--space-4); width: 100%;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  padding: var(--space-4) var(--space-5);
  font: inherit; text-align: left; cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard);
  animation: fade-up var(--dur-base) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .more-item:hover { background: var(--surface-hover); } }
.more-item__icon {
  display: grid; place-items: center; width: 38px; height: 38px; flex: none;
  border-radius: var(--radius-md); background: var(--accent-soft); color: var(--accent-strong);
}
.more-item__icon .icon { width: 19px; height: 19px; }
.more-item__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.more-item__title { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--text); }
.more-item__sub { font-size: var(--text-xs); color: var(--text-muted); }
.more-item__chev { width: 16px; height: 16px; color: var(--text-faint); flex: none; }
/* Статичная строка (не переход): «ИНН ваших клиентов» — счётчики + кнопка действия. */
.more-item--static { cursor: default; }
@media (hover: hover) and (pointer: fine) { .more-item--static:hover { background: var(--surface); } }
.more-item--static .btn { flex: none; }
/* Карточка комьюнити (docs/33 срез A): та же more-item, лёгкий акцент на иконке. */
.more-item--community .more-item__icon { background: var(--accent-soft); color: var(--accent-strong); }

/* ═══ Комьюнити-плашка (docs/33 срез A): доска лидов + аналитика ═══
   Ненавязчивая: тонкая surface-полоса с иконкой, текстом и CTA «Вступить».
   Только исходящая TG-ссылка, 0 ПДн. empty-safe: пусто → элемент не рендерится. */
.community-slot:empty { display: none; }
.community-banner {
  display: flex; align-items: center; gap: var(--space-3);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  padding: var(--space-3) var(--space-4); margin-top: var(--space-4);
  animation: fade-up var(--dur-base) var(--ease-standard);
}
.community-banner__icon {
  display: grid; place-items: center; width: 32px; height: 32px; flex: none;
  border-radius: var(--radius-md); background: var(--accent-soft); color: var(--accent-strong);
}
.community-banner__icon .icon { width: 17px; height: 17px; }
.community-banner__text { flex: 1; min-width: 0; font-size: var(--text-sm); color: var(--text); }
.community-banner__cta {
  flex: none; min-height: 44px; padding: 0 var(--space-4);
  border: 1px solid var(--text); border-radius: var(--radius-md);
  background: var(--text); color: var(--text-on-accent);
  font: inherit; font-size: var(--text-sm); font-weight: var(--weight-semibold);
  cursor: pointer; transition: opacity var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .community-banner__cta:hover { opacity: 0.9; } }
.community-banner__close {
  flex: none; display: grid; place-items: center;
  width: 44px; height: 44px; margin: -6px -8px -6px -4px;
  border: none; background: transparent; color: var(--text-muted);
  cursor: pointer; border-radius: var(--radius-md);
}
.community-banner__close .icon { width: 18px; height: 18px; }
@media (hover: hover) and (pointer: fine) { .community-banner__close:hover { color: var(--text); } }

/* ═══ Сворачиваемые справочные блоки карточки лида (details/summary) ═══ */
.block--fold { border-top: 1px solid var(--border-subtle); padding-top: var(--space-3); }
.block__title--fold {
  display: flex; align-items: center; gap: var(--space-2);
  cursor: pointer; list-style: none; user-select: none;
}
.block__title--fold::-webkit-details-marker { display: none; }
.fold-chev {
  width: 14px; height: 14px; color: var(--text-faint); margin-left: auto;
  transition: transform var(--dur-fast) var(--ease-standard);
}
details[open] > summary .fold-chev { transform: rotate(90deg); }
.block--fold > *:not(summary) { margin-top: var(--space-3); }

/* ═══ Свайп-жесты по мобильной карточке лида (UI/UX-слайс 3) ═══ */
@media (max-width: 560px) {
  .lead-table tbody tr { position: relative; overflow: hidden; }
  .lead-table tbody tr.is-swiping { transition: none; }
  .lead-table tbody tr:not(.is-swiping) { transition: transform var(--dur-base) var(--ease-standard); }
  .lead-table tbody tr.is-swiped-out { transition: transform 240ms var(--ease-standard); }
}
.swipe-hint {
  position: absolute; top: 50%; transform: translateY(-50%) scale(0.9);
  display: inline-flex; align-items: center; gap: 5px;
  font-size: var(--text-sm); font-weight: var(--weight-semibold);
  padding: 7px 13px; border-radius: var(--radius-pill);
  opacity: 0; pointer-events: none;
  transition: transform var(--dur-fast) var(--ease-spring), box-shadow var(--dur-fast) var(--ease-standard);
}
.swipe-hint .icon { width: 15px; height: 15px; }
/* «Взведён» (за порогом): подрастает + плотный цвет — «отпусти, сработает». */
.swipe-hint.is-armed { transform: translateY(-50%) scale(1.06); box-shadow: var(--shadow-md); }
.swipe-hint--work { left: 12px; background: var(--accent-soft); color: var(--accent-strong); }
.swipe-hint--work.is-armed { background: var(--accent); color: var(--accent-text); }
.swipe-hint--notfit { right: 12px; background: var(--danger-soft); color: var(--danger); }
.swipe-hint--notfit.is-armed { background: var(--danger); color: #fff; }
@media (prefers-reduced-motion: reduce) { .swipe-hint { transition: none; } }

/* (.toast__action — единое определение в блоке тоста выше, 2026-09-23) */

/* «Показать все отрасли» под усечённой сеткой пресетов */
.preset-more { width: 100%; justify-content: center; margin-top: var(--space-2); color: var(--text-muted); }
.preset-more .icon { transform: rotate(90deg); }

/* ═══ UI/UX-слайс 4: лента по дням, pull-to-refresh, бейдж «+N» ═══ */
.day-row__cell {
  padding: var(--space-4) 0 var(--space-1) !important;
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--text-faint); border: none !important; background: transparent;
}
@media (min-width: 561px) {
  .day-row__cell { padding: var(--space-3) var(--space-4) var(--space-1) !important; }
}
@media (max-width: 560px) {
  /* day-row — не карточка: снимаем карточные стили tr */
  .lead-table tbody tr.day-row {
    background: transparent; border: none; box-shadow: none;
    padding: 0; margin-bottom: var(--space-1);
  }
}
.ptr {
  text-align: center; font-size: var(--text-xs); color: var(--text-muted);
  padding: var(--space-2) 0;
}
.ptr.is-ready { color: var(--accent-strong); font-weight: var(--weight-semibold); }
.nav-badge {
  /* якорится к .nav-link (у него position:relative в основном правиле выше) */
  position: absolute; top: 4px; right: 50%; margin-right: -22px;
  min-width: 16px; height: 16px; padding: 0 4px;
  border-radius: var(--radius-pill);
  background: var(--accent); color: var(--accent-text);
  font-size: 10px; font-weight: var(--weight-bold);
  display: grid; place-items: center; line-height: 1;
}

/* ═══ Мобильная пилюля статуса + action-sheet переходов ═══ */
.status-pill { border: 1px solid var(--border); background: var(--surface-sunken);
  font: inherit; font-size: var(--text-xs); cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px; border-radius: var(--radius-pill); }
.status-pill__chev { width: 12px; height: 12px; transform: rotate(90deg); color: var(--text-faint); }
/* ═══ Action-sheet смены статуса (отдельный от lost/won .sheet__*, чтобы не делить
 * классы с конфликтующим определением: тут column-head + semibold-title) ═══ */
.action-sheet__head { display: flex; flex-direction: column; gap: 2px; margin-bottom: var(--space-3); }
.action-sheet__title { font-size: var(--text-lg); font-weight: var(--weight-semibold); }
.action-sheet__sub { font-size: var(--text-footnote); color: var(--text-muted); }
.action-sheet__list { display: flex; flex-direction: column; gap: var(--space-2); }
.action-sheet__opt { display: flex; align-items: center; gap: var(--space-3); width: 100%;
  background: var(--surface-sunken); border: 1px solid var(--border);
  border-radius: var(--radius-md); padding: var(--space-4);
  font: inherit; font-size: var(--text-body); text-align: left; cursor: pointer; }
@media (hover: hover) and (pointer: fine) { .action-sheet__opt:hover { background: var(--surface-hover); } }
.action-sheet__dot { width: 9px; height: 9px; border-radius: 50%; background: var(--border-strong); flex: none; }
.action-sheet__dot.chip--won { background: var(--col-won); }
.action-sheet__dot.chip--lost { background: var(--col-lost); }
.action-sheet__dot.chip--contacted { background: var(--col-contacted); }
.action-sheet__dot.chip--replied { background: var(--col-replied); }
.action-sheet__dot.chip--meeting { background: var(--col-meeting); }
.action-sheet__dot.chip--in_progress { background: var(--col-in_progress); }
.action-sheet__dot.chip--new { background: var(--col-new); }
.action-sheet__cancel { margin-top: var(--space-3); width: 100%; text-align: center;
  background: none; border: none; font: inherit; font-size: var(--text-callout);
  color: var(--text-muted); padding: var(--space-3); cursor: pointer; }

/* Кнопка диктовки free-text (Web Speech; без движка кнопки нет) */
.icp-freetext__mic { margin-top: var(--space-2); color: var(--text-muted); }
.icp-freetext__mic.is-recording { color: var(--danger); animation: pulse-rec 1.2s ease-in-out infinite; }
@keyframes pulse-rec { 50% { opacity: 0.55; } }

/* Скорость сигнала + share-обоснование в сводке карточки */
.lead-brief__speed { margin: 0; display: flex; gap: var(--space-2); align-items: center;
  font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--accent-strong); }
.lead-brief__speed .icon { width: 13px; height: 13px; }
.lead-brief__share { align-self: flex-start; color: var(--text-muted); }

/* ═══ Блок «Оценка ИИ» на карточке лида (советник поверх правил) ═══ */
.ai-block { margin-top: var(--space-4); padding: var(--space-4) var(--space-5);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  display: flex; flex-direction: column; gap: var(--space-3); }
.ai-block__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.ai-block__cap { display: inline-flex; align-items: center; gap: var(--space-2);
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); }
.ai-score { display: inline-flex; align-items: baseline; gap: 7px;
  padding: 4px 12px; border-radius: var(--radius-pill); font-size: var(--text-xs); }
.ai-score b { font-size: var(--text-lg); font-variant-numeric: tabular-nums; }
.ai-score--strong { background: var(--accent-soft); color: var(--accent-strong); }
.ai-score--medium { background: var(--info-soft, var(--surface-2)); color: var(--info, var(--text)); }
.ai-score--weak { background: var(--surface-2); color: var(--text-muted); }
.ai-block__text { margin: 0; font-size: var(--text-md); line-height: var(--leading-normal); color: var(--text); }
.ai-block__step { margin: 0; display: flex; gap: var(--space-2); align-items: flex-start;
  font-size: var(--text-md); color: var(--accent-strong);
  background: var(--accent-soft); border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4); }
.ai-block__step .icon { flex: none; margin-top: 3px; width: 14px; height: 14px; }
.ai-block__risks { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.ai-risk { display: inline-flex; align-items: center; gap: 5px;
  font-size: var(--text-xs); color: var(--warn);
  background: var(--warn-soft); border-radius: var(--radius-pill); padding: 3px 10px; }
.ai-risk .icon { width: 12px; height: 12px; }
.ai-block__meta { margin: 0; font-size: var(--text-2xs); color: var(--text-faint); }
.ai-block__ask { align-self: flex-start; }

/* Свободный текст причины отвала в пикере (классифицируется ИИ, не хранится) */
.sheet__note { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-3); }
.sheet__note-input { font-size: var(--text-input); }

/* ═══════════════════════════ режим «Разбор» (docs/21 §1) ═══════════════════════════
 * Свайп-стопка новых лидов. Витринная деталь продукта: стеклянные карточки поверх
 * амбиентного фона, штампы-вердикты, пружины/инерция. Все цвета — из токенов. */

/* ── плавающая пилюля входа над таб-баром (градиентная окантовка + один pulse) ── */
.triage-pill {
  position: fixed; z-index: var(--z-header);
  left: 50%; transform: translateX(-50%);
  bottom: calc(78px + env(safe-area-inset-bottom));
  padding: 1.5px; border: none; border-radius: var(--radius-pill);
  background: linear-gradient(135deg, var(--accent-500), var(--accent-600), var(--accent-700));
  box-shadow: 0 10px 30px -10px color-mix(in srgb, var(--accent-600) 55%, transparent),
              0 2px 8px -2px rgba(28, 25, 23, 0.16);
  cursor: pointer;
  animation: triage-pill-in 0.5s var(--ease-spring) both, triage-pill-pulse 1.4s var(--ease-standard) 0.5s 1;
}
.triage-pill__inner {
  display: inline-flex; align-items: center; gap: var(--space-2);
  padding: 9px 16px; border-radius: var(--radius-pill);
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  box-shadow: inset 0 1px 0 var(--glass-hi);
  color: var(--text); font-size: var(--text-md); font-weight: var(--weight-semibold);
}
.triage-pill__ic { width: 16px; height: 16px; color: var(--accent-strong); }
.triage-pill__count {
  min-width: 22px; padding: 1px 7px; border-radius: var(--radius-pill);
  background: var(--accent); color: var(--accent-text);
  font-size: var(--text-xs); font-weight: var(--weight-bold); text-align: center;
}
@media (hover: hover) and (pointer: fine) { .triage-pill:hover .triage-pill__inner { background: var(--glass-bg); } }
@keyframes triage-pill-in {
  from { opacity: 0; transform: translateX(-50%) translateY(14px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}
@keyframes triage-pill-pulse {
  0%, 100% { box-shadow: 0 10px 30px -10px color-mix(in srgb, var(--accent-600) 55%, transparent); }
  40% { box-shadow: 0 10px 34px -6px color-mix(in srgb, var(--accent-600) 80%, transparent),
                    0 0 0 7px color-mix(in srgb, var(--accent-600) 14%, transparent); }
}

/* ── полноэкранный оверлей ── */
.triage-overlay {
  /* НИЖЕ таб-бара (30): бар виден и кликабелен на «Разборе» (инвариант владельца
     2026-09-17 «бар на всех экранах»); переход по табу закрывает оверлей через
     hashchange. Панель лида (55) по-прежнему ложится поверх. */
  position: fixed; inset: 0; z-index: 25;
  display: flex; flex-direction: column;
  background: color-mix(in srgb, var(--bg) 55%, transparent);
  -webkit-backdrop-filter: blur(26px) saturate(var(--glass-sat));
  backdrop-filter: blur(26px) saturate(var(--glass-sat));
  opacity: 0; transition: opacity var(--dur-slow) var(--ease-standard);
  overscroll-behavior: contain;
}
.triage-overlay[data-open="true"] { opacity: 1; }

.triage__top {
  display: flex; align-items: center; gap: var(--space-4);
  padding: var(--space-4) var(--space-5) var(--space-3);
  padding-top: max(var(--space-4), env(safe-area-inset-top));
}
.triage__close {
  flex: none; display: grid; place-items: center; width: 36px; height: 36px;
  border-radius: var(--radius-md); border: 1px solid var(--glass-stroke);
  background: var(--glass-bg); color: var(--text-muted); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .triage__close:hover { background: var(--surface-hover); color: var(--text); } }
.triage__close-chev { width: 18px; height: 18px; transform: rotate(90deg); } /* шеврон вниз */
.triage__progress { flex: 1; display: flex; flex-direction: column; gap: 6px; }
.triage__progress-text {
  font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text-muted);
  letter-spacing: var(--tracking-wide);
}
.triage__bar { height: 3px; border-radius: var(--radius-pill); background: var(--surface-sunken); overflow: hidden; }
.triage__bar-fill {
  height: 100%; width: 0; border-radius: var(--radius-pill);
  background: linear-gradient(90deg, var(--accent-500), var(--accent-600));
  transition: width var(--dur-slow) var(--ease-emphasized);
}

/* ── стопка ── */
.triage-stack { position: relative; flex: 1; min-height: 0; }
/* Карта не должна вылезать за стопку и накрывать кнопки (баг на низких экранах:
 * центрированная absolute-карта переполняла стопку → «кнопки под карточкой»). */
.triage-card { max-height: 100%; overflow: hidden; }
/* Низкие экраны: ужимаем карту + прячем вторичное (контакт/мета — есть на полной
 * карточке), чтобы кнопка «Анализ» и action-кнопки гарантированно влезали над баром.
 * Двойной класс — специфичнее базовых правил .triage-card__* ниже по файлу. */
@media (max-height: 760px) {
  .triage-overlay .triage-card { padding: var(--space-4); gap: var(--space-3); }
  .triage-overlay .triage-card__contact,
  .triage-overlay .triage-card__meta { display: none; }
  .triage-actions { padding-top: var(--space-2); }
}
.triage-card {
  position: absolute; left: 0; right: 0; top: 50%;
  margin: 0 auto; width: min(420px, calc(100vw - 40px));
  translate: 0 -50%;
  display: flex; flex-direction: column; gap: var(--space-4);
  padding: var(--space-6);
  border-radius: var(--radius-xl);
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass);
  touch-action: none; user-select: none; -webkit-user-select: none; cursor: grab;
  will-change: transform;
}
.triage-card.is-dragging { cursor: grabbing; transition: none !important; }
/* Пока возврат ведёт JS-пружина (velocity-handoff), CSS не должен транзишенить
 * transform — иначе два движка дерутся за одно свойство. Позицию в стопке
 * (translate/scale) оставляем на CSS: она с жестом не конфликтует. */
.triage-card.is-spring { transition: translate 300ms var(--ease-emphasized), scale 300ms var(--ease-emphasized); }
/* промоция подложек и пружинный возврат: translate/scale — позиция в стопке,
 * transform — жест (композитятся независимо, конфликтов нет) */
.triage-card:not(.is-dragging):not(.is-spring) {
  transition: transform 420ms var(--ease-spring),
              /* подложка поднимается в pos0 с лёгким overshoot — «живой» подъём */
              translate 360ms var(--ease-spring),
              scale 360ms var(--ease-spring),
              opacity 240ms var(--ease-standard),
              box-shadow var(--dur-base) var(--ease-standard);
}
@media (prefers-reduced-motion: reduce) {
  /* reduced-motion: подложки не «пружинят» и не едут — простая смена без движения */
  .triage-card:not(.is-dragging):not(.is-spring) {
    transition: opacity 200ms var(--ease-out);
  }
}
.triage-card.is-flying {
  transition: transform 340ms cubic-bezier(0.2, 0, 0.55, 1), opacity 320ms var(--ease-standard);
}
.triage-card.is-pos1 { scale: 0.95; translate: 0 calc(-50% + 10px); pointer-events: none; }
.triage-card.is-pos2 { scale: 0.90; translate: 0 calc(-50% + 20px); pointer-events: none; }
.triage-card.is-pos1, .triage-card.is-pos2 { box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-card); }

/* цветное свечение края по направлению жеста (интенсивность — var(--glow) из JS) */
.triage-card.is-glow-work {
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass),
    0 0 calc(var(--glow, 0) * 40px) color-mix(in srgb, var(--success) 45%, transparent),
    inset 0 0 0 1.5px color-mix(in srgb, var(--success) calc(var(--glow, 0) * 70%), transparent);
}
.triage-card.is-glow-notfit {
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass),
    0 0 calc(var(--glow, 0) * 40px) color-mix(in srgb, var(--danger) 45%, transparent),
    inset 0 0 0 1.5px color-mix(in srgb, var(--danger) calc(var(--glow, 0) * 70%), transparent);
}
.triage-card.is-glow-later {
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-glass),
    0 0 calc(var(--glow, 0) * 40px) color-mix(in srgb, var(--warn) 45%, transparent),
    inset 0 0 0 1.5px color-mix(in srgb, var(--warn) calc(var(--glow, 0) * 70%), transparent);
}

/* ── содержимое карточки ── */
.triage-card__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.triage-card__score {
  font-size: var(--text-xl); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); color: var(--text);
}
.triage-card__name {
  font-size: var(--text-2xl); font-weight: var(--weight-bold);
  line-height: var(--leading-tight); letter-spacing: var(--tracking-tighter);
  color: var(--text); margin: 0;
}
.triage-card__meta { margin: -6px 0 0; font-size: var(--text-sm); color: var(--text-muted); }
.triage-card__signals { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.triage-card__contact {
  display: flex; align-items: baseline; gap: var(--space-2);
  padding-top: var(--space-3); border-top: 1px solid var(--border-subtle);
  font-size: var(--text-sm); min-width: 0;
}
/* явная кнопка «Анализ и досье» — вход в панель лида со свайп-карточки */
.triage-card__analyze {
  display: flex; align-items: center; gap: var(--space-2);
  width: 100%; margin-top: var(--space-3); padding: 10px var(--space-3);
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  background: var(--accent-soft); color: var(--accent-strong);
  font-size: var(--text-sm); font-weight: var(--weight-semibold); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard);
}
.triage-card__analyze:active { background: var(--surface-sunken); }
.triage-card__analyze .icon { width: 17px; height: 17px; flex: none; }

/* Быстрые действия на свайп-карте (Написать/Позвонить) — пара нейтральных кнопок
 * с акцентным текстом; тап-таргет 44px, press-feedback (mobile-native). */
.triage-card__quick { display: flex; gap: var(--space-2); }
.triage-quick {
  flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  min-height: 44px; padding: 10px var(--space-3);
  font: inherit; font-size: var(--text-sm); font-weight: var(--weight-semibold);
  color: var(--accent-strong); background: var(--surface-2);
  border: 1px solid var(--border); border-radius: var(--radius-md);
  text-decoration: none; cursor: pointer; user-select: none; -webkit-user-select: none;
  touch-action: manipulation;
  transition: transform var(--dur-fast) var(--ease-standard), background var(--dur-fast) var(--ease-standard);
}
.triage-quick:active { transform: scale(0.97); background: var(--surface-hover); }
@media (hover: hover) and (pointer: fine) { .triage-quick:hover { background: var(--surface-hover); } }
.triage-quick .icon { width: 15px; height: 15px; flex: none; }

/* Риск-строка разбора — приглушённый warn-чип (не радуга, один акцент осторожности). */
.triage-card__risk {
  display: inline-flex; align-items: center; gap: 6px; align-self: flex-start;
  padding: 5px 10px; border-radius: var(--radius-pill);
  background: var(--warn-soft); color: var(--warn);
  font-size: var(--text-sm); font-weight: var(--weight-medium); line-height: var(--leading-snug);
}
.triage-card__risk .icon { flex: none; }

/* Подсказка жестов (гаснет после первого решения) — тонкая строка над кнопками. */
.triage-hint {
  display: flex; justify-content: center; flex-wrap: wrap; gap: var(--space-2) var(--space-4);
  padding: var(--space-2) var(--space-4) 0;
  font-size: var(--text-xs); color: var(--text-faint); font-weight: var(--weight-medium);
  transition: opacity var(--dur-base) var(--ease-standard);
}
.triage-hint.is-gone { opacity: 0; }

/* В режиме разбора прячем общий топбар: у разбора свой верх (закрыть + прогресс +
 * дневная цель), а топбар (z-header) перекрывал его (overlay ниже бара по z). Так
 * верх разбора (и кольцо цели) наконец видны. :has — авто-синхрон с наличием оверлея. */
body:has(.triage-overlay) .topbar { display: none; }

/* Дневная цель — мини-кольцо «разобрано сегодня / цель» в шапке разбора. */
.triage-goal { position: relative; flex: none; width: 34px; height: 34px; display: grid; place-items: center; }
.triage-goal__svg { width: 34px; height: 34px; }
.triage-goal__track { stroke: var(--surface-sunken); }
.triage-goal__bar { stroke: var(--text); transition: stroke-dashoffset var(--dur-slow) var(--ease-emphasized), stroke var(--dur-base); }
.triage-goal__num { position: absolute; font-size: var(--text-xs); font-weight: var(--weight-bold); color: var(--text); font-variant-numeric: tabular-nums; }
.triage-goal.is-reached .triage-goal__bar { stroke: var(--success); }
.triage-goal.is-reached .triage-goal__num { color: var(--success); }
.triage-card__analyze span { flex: 1; text-align: left; }
.triage-card__analyze-chev { opacity: 0.6; }
.triage-card__contact-cap {
  flex: none; font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint);
}
.triage-card__contact-val {
  color: var(--text); font-weight: var(--weight-medium);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
  font-variant-numeric: tabular-nums;
}
.triage-contact-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; align-self: center; }
.triage-contact-dot--high { background: var(--success); box-shadow: 0 0 0 3px var(--success-soft); }
.triage-contact-dot--medium { background: var(--warn); box-shadow: 0 0 0 3px var(--warn-soft); }
.triage-contact-dot--low { background: var(--danger); box-shadow: 0 0 0 3px var(--danger-soft); }
.triage-contact-dot--none { background: var(--border-strong); }

/* ── штампы-вердикты (проявляются с дистанцией) ── */
.triage-stamp {
  position: absolute; top: var(--space-5); z-index: 2;
  padding: 5px 14px; border-radius: var(--radius-sm);
  border: 2.5px solid currentColor;
  font-size: var(--text-lg); font-weight: var(--weight-bold);
  text-transform: uppercase; letter-spacing: var(--tracking-wider);
  opacity: 0; pointer-events: none;
  background: color-mix(in srgb, var(--surface) 55%, transparent);
}
.triage-stamp--work { left: var(--space-5); color: var(--success); transform: rotate(-12deg); }
.triage-stamp--notfit { right: var(--space-5); color: var(--danger); transform: rotate(12deg); }
.triage-stamp--later {
  left: 50%; top: auto; bottom: var(--space-5);
  color: var(--warn); transform: translateX(-50%) rotate(-4deg);
}

/* ── кнопки-фолбэк под стопкой (десктоп/доступность) ── */
.triage-actions {
  display: flex; align-items: center; justify-content: center; gap: var(--space-6);
  /* низ с запасом под плавающий таб-бар (оверлей теперь ПОД баром, z 25 < 30) */
  padding: var(--space-4) 0 calc(88px + env(safe-area-inset-bottom));
}
.triage-act {
  display: grid; place-items: center; width: 54px; height: 54px;
  border-radius: 50%; border: 1px solid var(--glass-stroke); cursor: pointer;
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-card);
  transition: transform var(--dur-fast) var(--ease-spring), box-shadow var(--dur-fast) var(--ease-standard);
}
.triage-act .icon { width: 22px; height: 22px; stroke-width: 2; }
@media (hover: hover) and (pointer: fine) { .triage-act:hover { transform: translateY(-2px) scale(1.06); } }
.triage-act:active { transform: scale(0.94); }
.triage-act--work { color: var(--success); }
.triage-act--notfit { color: var(--danger); }
.triage-act--later { color: var(--warn); width: 46px; height: 46px; }
.triage-act--later .icon { width: 19px; height: 19px; }

/* ── снекбар уточнения причины (после свайпа влево) ── */
.triage-snackbar {
  position: absolute; left: 50%; transform: translateX(-50%) translateY(14px);
  bottom: calc(96px + env(safe-area-inset-bottom));
  display: flex; align-items: center; gap: var(--space-2);
  max-width: min(94vw, 520px); flex-wrap: wrap; justify-content: center;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-lg);
  background: var(--warm-900); color: var(--warm-25);
  border: 1px solid var(--warm-800); box-shadow: var(--shadow-lg);
  opacity: 0; transition: opacity var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-spring);
  z-index: 5;
}
.triage-snackbar.is-show { opacity: 1; transform: translateX(-50%) translateY(0); }
.triage-snackbar__cap { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--warm-300); }
.triage-snackbar__chips { display: flex; gap: 6px; flex-wrap: wrap; justify-content: center; }
.triage-snackbar__chip {
  display: inline-flex; align-items: center; gap: 4px;
  font: inherit; font-size: var(--text-xs); font-weight: var(--weight-medium);
  color: var(--warm-100); background: color-mix(in srgb, var(--warm-25) 10%, transparent);
  border: 1px solid var(--warm-700); border-radius: var(--radius-pill);
  padding: 4px 10px; cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) { .triage-snackbar__chip:hover { background: color-mix(in srgb, var(--warm-25) 18%, transparent); } }
.triage-snackbar__chip.is-active {
  color: var(--warm-900); background: var(--warm-25); border-color: var(--warm-25);
  font-weight: var(--weight-semibold);
}
.triage-snackbar__undo {
  display: inline-flex; align-items: center; gap: 4px;
  font: inherit; font-size: var(--text-xs); font-weight: var(--weight-semibold);
  color: var(--accent-500); background: none; border: none; cursor: pointer;
  padding: 4px 8px; border-radius: var(--radius-sm);
}
@media (hover: hover) and (pointer: fine) { .triage-snackbar__undo:hover { background: color-mix(in srgb, var(--warm-25) 10%, transparent); } }

/* ── пустая стопка «Разобрано!» ── */
.triage-empty {
  position: absolute; inset: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--space-3); text-align: center; padding: var(--space-6);
}
.triage-empty__icon {
  width: 84px; height: 84px; display: grid; place-items: center; border-radius: 50%;
  background: linear-gradient(135deg, var(--accent-500), var(--accent-700));
  color: #fff; box-shadow: 0 18px 44px -14px color-mix(in srgb, var(--accent-600) 70%, transparent);
  animation: triage-done-pop 0.6s var(--ease-spring) both;
}
.triage-empty__icon .icon { width: 38px; height: 38px; stroke-width: 2.4; }
.triage-empty__icon--err { background: var(--danger-soft); color: var(--danger); box-shadow: none; }
.triage-empty__icon--err .icon { width: 30px; height: 30px; }
.triage-empty__title {
  margin: var(--space-2) 0 0; font-size: var(--text-2xl); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); color: var(--text);
}
.triage-empty__hint { margin: 0; font-size: var(--text-md); color: var(--text-muted); }
.triage-empty__cta { margin-top: var(--space-4); min-width: 180px; }
@keyframes triage-done-pop {
  0% { transform: scale(0.5); opacity: 0; }
  70% { transform: scale(1.06); opacity: 1; }
  100% { transform: scale(1); }
}

/* скелетон стопки (в позах карточек, shimmer из общей системы) */
.triage-card--skel { min-height: 300px; pointer-events: none; }

/* ═══════════════════════════ досье лида (docs/21 §2) ═══════════════════════════ */
.dossier__body { display: flex; flex-direction: column; gap: var(--space-3); }
.dossier__head { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; }
.dossier__built { font-size: var(--text-xs); color: var(--text-muted); }
/* #2 свежесть: тихий индикатор фонового обновления устаревшего досье */
.dossier__stale { display: inline-flex; align-items: center; gap: 5px; font-size: var(--text-xs); color: var(--warn); }
.dossier__stale .icon { color: var(--warn); width: 13px; height: 13px; }

/* #1 «Что нового» — акцентный блок вверху досье (дельта с прошлой сборки). */
.dossier-changes {
  background: var(--accent-050); border: 1px solid var(--accent-soft);
  border-radius: var(--radius-lg); padding: var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-3);
}
.dossier-changes__cap {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide);
  font-weight: var(--weight-semibold); color: var(--accent-strong);
}
.dossier-changes__cap .icon { color: var(--accent-strong); }
.dossier-changes__list { display: flex; flex-direction: column; gap: var(--space-3); }
.dossier-change { display: flex; flex-direction: column; gap: 2px; text-decoration: none; }
.dossier-change__head { display: flex; align-items: center; gap: var(--space-2); }
.dossier-change__head .icon { color: var(--text-faint); margin-left: auto; }
.dossier-change__label { font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-muted); }
.dossier-change__value { font-size: var(--text-md); color: var(--text); line-height: var(--leading-snug); }
.dossier-change__date { font-size: var(--text-xs); color: var(--text-muted); font-variant-numeric: tabular-nums; }
@media (hover: hover) and (pointer: fine) { .dossier-change--link:hover .dossier-change__value { color: var(--accent-strong); } }

/* бейдж живости сайта: пульсирующая точка (зелёная/серая) */
.dossier-alive {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: var(--text-xs); font-weight: var(--weight-medium);
  padding: 3px 10px; border-radius: var(--radius-pill);
  border: 1px solid var(--border); background: var(--surface-2); color: var(--text-muted);
}
.dossier-alive__dot { width: 7px; height: 7px; border-radius: 50%; flex: none; }
.dossier-alive--up { color: var(--success); border-color: color-mix(in srgb, var(--success) 28%, transparent); background: var(--success-soft); }
.dossier-alive--up .dossier-alive__dot { background: var(--success); animation: alive-pulse 1.8s var(--ease-standard) infinite; }
.dossier-alive--down .dossier-alive__dot { background: var(--text-faint); }
@keyframes alive-pulse {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--success) 40%, transparent); }
  55% { box-shadow: 0 0 0 5px color-mix(in srgb, var(--success) 0%, transparent); }
}

/* сводка ИИ — курсивная glass-карточка с честной меткой */
.dossier-summary {
  background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-card);
  padding: var(--space-4) var(--space-5);
}
.dossier-summary__cap {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--accent-strong); margin-bottom: var(--space-2);
}
.dossier-summary__cap .icon { color: var(--accent-strong); }
.dossier-summary__text {
  margin: 0; font-size: var(--text-md); font-style: italic;
  line-height: var(--leading-normal); color: var(--text);
}

/* группы фактов — раскрывающиеся glass-блоки */
.dossier-group {
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  background: var(--glass-bg);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  box-shadow: inset 0 1px 0 var(--glass-hi), var(--shadow-card);
  overflow: hidden;
}
.dossier-group__head {
  display: flex; align-items: center; gap: var(--space-2);
  padding: var(--space-3) var(--space-4); cursor: pointer; list-style: none; user-select: none;
  transition: background var(--dur-fast) var(--ease-standard);
}
.dossier-group__head::-webkit-details-marker { display: none; }
@media (hover: hover) and (pointer: fine) { .dossier-group__head:hover { background: var(--surface-hover); } }
.dossier-group__title {
  font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text);
  letter-spacing: -0.005em;
}
/* счётчик фактов в заголовке свёрнутой группы */
.dossier-group__count {
  margin-left: auto; padding: 1px 7px; border-radius: var(--radius-full);
  background: var(--surface-hover); color: var(--text-muted);
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
}
.dossier-group__head:has(.dossier-group__count) .dossier-group__chev { margin-left: var(--space-2); }
.dossier-group__chev {
  width: 14px; height: 14px; color: var(--text-faint); margin-left: auto;
  transition: transform var(--dur-fast) var(--ease-standard);
}
.dossier-group[open] .dossier-group__chev { transform: rotate(90deg); }
.dossier-group__body {
  display: flex; flex-direction: column;
  padding: 0 var(--space-4) var(--space-3); border-top: 1px solid var(--border-subtle);
}

/* строка факта: label серым, value жирным, чип источника справа */
.dossier-fact {
  display: flex; align-items: flex-start; gap: var(--space-3);
  padding: var(--space-3) 0; border-bottom: 1px solid var(--border-subtle);
}
.dossier-fact:last-child { border-bottom: none; }
.dossier-fact__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.dossier-fact__label { font-size: var(--text-xs); color: var(--text-muted); }
.dossier-fact__value { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); word-break: break-word; }
.dossier-fact__src { flex: none; margin-top: 2px; }
a.dossier-fact__src { text-decoration: none; }
@media (hover: hover) and (pointer: fine) { a.dossier-fact__src:hover { border-color: var(--accent-strong); color: var(--accent-strong); text-decoration: none; } }

/* цитата с сайта/источника — гарантия подлинности факта */
.dossier-quote {
  margin-top: 3px; padding-left: var(--space-3);
  border-left: 2px solid var(--border);
  font-size: var(--text-sm); font-style: italic; font-weight: var(--weight-regular);
  color: var(--text-muted); line-height: var(--leading-snug);
}

/* список «Услуги» из site_facts */
.dossier-services { display: flex; flex-direction: column; gap: var(--space-2); margin: 4px 0 0; }
.dossier-services__item { display: flex; flex-direction: column; gap: 2px; }
.dossier-services__item .dossier-fact__src { align-self: flex-start; margin-top: 4px; }

/* CTA «Собрать досье» (status=none) */
.dossier-cta {
  display: flex; flex-direction: column; align-items: center; gap: var(--space-3);
  text-align: center; padding: var(--space-6) var(--space-4);
}
.dossier-cta__art {
  width: 64px; height: 64px; display: grid; place-items: center; border-radius: var(--radius-xl);
  background: linear-gradient(135deg, var(--accent-soft), color-mix(in srgb, var(--info-soft) 80%, transparent));
  border: 1px solid var(--border);
  color: var(--accent-strong);
}
.dossier-cta__art .icon { width: 28px; height: 28px; }
.dossier-cta__hint { margin: 0; max-width: 40ch; font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); }
.dossier-cta__btn { margin-top: var(--space-2); min-width: 200px; }

/* сборка: подпись + shimmer-строки */
.dossier__building {
  margin: 0; display: flex; align-items: center; gap: var(--space-2);
  font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--accent-strong);
}
.dossier__building-spin { animation: spin 1.4s linear infinite; color: var(--accent-strong); }
.dossier-shimmer { display: flex; flex-direction: column; gap: var(--space-2); }
.dossier-shimmer__row {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  background: var(--surface-2); border: 1px solid var(--border-subtle); border-radius: var(--radius-md);
}
.dossier__note {
  margin: 0; display: flex; align-items: flex-start; gap: var(--space-2);
  font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug);
}
.dossier__note .icon { flex: none; margin-top: 1px; color: var(--text-faint); }
.dossier__refresh { align-self: flex-start; }

/* ── упоминания в интернете (V3): карточка-ссылка публикации ── */
.dossier-mention {
  display: flex; flex-direction: column; gap: 4px;
  padding: var(--space-3) var(--space-4); margin: var(--space-2) 0;
  background: var(--surface-2); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  color: var(--text); text-decoration: none;
  transition: background var(--dur-fast) var(--ease-standard),
              border-color var(--dur-fast) var(--ease-standard),
              transform var(--dur-fast) var(--ease-standard);
}
@media (hover: hover) and (pointer: fine) {
  .dossier-mention:hover {
    background: var(--surface-hover); border-color: var(--border-strong);
    text-decoration: none; transform: translateY(-1px);
  }
}
.dossier-mention:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.dossier-mention__head { display: flex; align-items: center; gap: var(--space-2); min-width: 0; }
.dossier-mention__domain { text-transform: lowercase; letter-spacing: 0; }
.dossier-mention__pill {
  display: inline-flex; align-items: center;
  font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  padding: 2px 9px; border-radius: var(--radius-pill); white-space: nowrap;
}
.dossier-mention__pill--pos { color: var(--success); background: var(--success-soft); }
.dossier-mention__pill--accent { color: var(--accent-strong); background: var(--accent-soft); }
.dossier-mention__pill--info { color: var(--info); background: var(--info-soft); }
.dossier-mention__ext { width: 13px; height: 13px; color: var(--text-faint); margin-left: auto; flex: none; }
@media (hover: hover) and (pointer: fine) { .dossier-mention:hover .dossier-mention__ext { color: var(--accent-strong); } }
.dossier-mention__title { font-size: var(--text-md); font-weight: var(--weight-semibold); line-height: var(--leading-snug); }
.dossier-mention__date { font-size: var(--text-xs); color: var(--text-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dossier-mention__ext { margin-left: auto; }  /* стрелка «внешняя ссылка» — к правому краю */
.dossier-mentions__note {
  margin: var(--space-2) 0 var(--space-1); font-size: var(--text-2xs);
  color: var(--text-faint); line-height: var(--leading-snug);
}

/* reduced-motion: стекло оверлея/карточек → плотный фон (перф + вкус пользователя);
 * анимации уже глушит глобальное правило. Ротацию/пружины отключает JS. */
@media (prefers-reduced-motion: reduce) {
  .triage-overlay { -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    background: var(--bg) !important; }
  .triage-card, .triage-act, .triage-pill__inner, .dossier-summary, .dossier-group {
    -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    background: var(--surface) !important;
  }
}

/* узкие экраны (от 360px): компактнее карточка и кнопки */
@media (max-width: 400px) {
  .triage-card { padding: var(--space-5); width: calc(100vw - 32px); }
  .triage-card__name { font-size: var(--text-xl); }
  .triage-actions { gap: var(--space-5); }
}

/* ═══════════════════ fit v2 (дизайн блок D): кольцо фита ═══════════════════ */
/* Единый индикатор 0..100: карточка/triage (lg), строка доски (sm).
 * Кнопка (есть fit_parts) — тап открывает поп вкладов; span — только title. */
.fit-ring {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  flex: none; padding: 0; border: 0; background: none; color: var(--text);
  font: inherit; cursor: default;
}
button.fit-ring { cursor: pointer; -webkit-tap-highlight-color: transparent; }
button.fit-ring:focus-visible { outline: none; border-radius: 50%; box-shadow: var(--shadow-focus); }
.fit-ring--sm { width: 32px; height: 32px; }
.fit-ring--md { width: 42px; height: 42px; }
.fit-ring--lg { width: 64px; height: 64px; }
.fit-ring__svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.fit-ring__track { fill: none; stroke: var(--surface-sunken); stroke-width: 3.4; }
.fit-ring__bar {
  fill: none; stroke: var(--col-won); stroke-width: 3.4; stroke-linecap: round;
  /* draw-on: дуга дорисовывается от нуля как ЛЁГКИЙ акцент (число видно сразу, статично).
   * 300ms — критик Волны B: 600ms заставлял ждать оценку, которая нужна мгновенно. */
  transition: stroke-dashoffset 300ms var(--ease-out), stroke var(--dur-base) var(--ease-out);
}
@media (prefers-reduced-motion: reduce) {
  .fit-ring__bar { transition: stroke var(--dur-base) var(--ease-out); }
}
/* Кап (широкий/adjacency-профиль) — warn-тон: предупреждение, не успех. */
.fit-ring--capped .fit-ring__bar { stroke: var(--warn); }
.fit-ring__num {
  position: relative; font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); line-height: 1;
}
.fit-ring--sm .fit-ring__num { font-size: 11px; }
.fit-ring--md .fit-ring__num { font-size: var(--text-xs); }
.fit-ring--lg .fit-ring__num { font-size: var(--text-lg); }
/* Флаг «отрасль не проверялась» — warn-точка на кольце (видна и в sm). */
.fit-ring__flag {
  position: absolute; top: 0; right: 0; width: 9px; height: 9px;
  border-radius: 50%; background: var(--warn); border: 2px solid var(--bg);
}
.fit-ring--lg .fit-ring__flag { width: 12px; height: 12px; }
/* lg-обёртка с видимой подписью-пометкой (кап / отрасль не проверялась) */
.fit-ring-box { display: inline-flex; flex-direction: column; align-items: center; gap: 6px; flex: none; }
.fit-ring__note {
  font-size: var(--text-2xs); color: var(--warn); text-align: center;
  max-width: 104px; line-height: var(--leading-snug);
}

/* Поп «из чего складывается фит»: glass-панель, position:fixed (не режется
 * overflow таблицы/панели), топ-3 вклада + пометки. */
.fit-pop {
  position: fixed; z-index: var(--z-toast);
  min-width: 230px; max-width: 300px;
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-glass);
  padding: var(--space-3) var(--space-4);
}
.fit-pop__cap {
  font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide);
  color: var(--text-muted); margin-bottom: var(--space-2);
}
.fit-pop__row {
  display: flex; align-items: baseline; gap: var(--space-2);
  padding: 6px 0; border-top: 1px solid var(--border-subtle);
}
.fit-pop__label { font-size: var(--text-sm); font-weight: var(--weight-medium); flex: none; }
.fit-pop__detail {
  font-size: var(--text-2xs); color: var(--text-muted); flex: 1; min-width: 0;
  line-height: var(--leading-snug);
}
.fit-pop__val { margin-left: auto; font-weight: var(--weight-bold); color: var(--accent-strong); flex: none; }
.fit-pop__val.is-neg { color: var(--danger); }
.fit-pop__note {
  display: flex; align-items: center; gap: 6px; margin: var(--space-2) 0 0;
  font-size: var(--text-2xs); color: var(--warn); line-height: var(--leading-snug);
}
.fit-pop__note .icon { flex: none; }

/* ═══════ hero-вариант по доминирующему сигналу: акцентный блок повода ═══════ */
/* Одна вёрстка, модификатор класса меняет палитру/градиент (дизайн: не разная
 * разметка). Токены дарк-glass: tender=success, fresh=accent, hiring=info, tech=warn. */
.hero-accent {
  display: flex; gap: var(--space-3); align-items: flex-start;
  padding: var(--space-3) var(--space-4); margin-bottom: var(--space-4);
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  background: var(--surface); position: relative; overflow: hidden;
}
.hero-accent__icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: var(--radius-md); flex: none;
}
.hero-accent__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.hero-accent__cap { display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap; }
.hero-accent__overline {
  font-size: var(--text-2xs); text-transform: uppercase;
  letter-spacing: var(--tracking-wide); color: var(--text-muted);
}
.hero-accent__kind { font-size: var(--text-sm); font-weight: var(--weight-semibold); }
.hero-accent__text { font-size: var(--text-md); line-height: var(--leading-snug); }
.hero-accent--tender {
  border-color: color-mix(in srgb, var(--success) 40%, var(--border));
  background: linear-gradient(135deg, var(--success-soft), transparent 62%);
}
.hero-accent--tender .hero-accent__icon { background: var(--success-soft); color: var(--success); }
.hero-accent--tender .hero-accent__kind { color: var(--success); }
.hero-accent--fresh {
  border-color: var(--border);
  background: linear-gradient(135deg, var(--accent-soft), transparent 62%);
}
.hero-accent--fresh .hero-accent__icon { background: var(--accent-soft); color: var(--accent-strong); }
.hero-accent--fresh .hero-accent__kind { color: var(--accent-strong); }
.hero-accent--hiring {
  border-color: color-mix(in srgb, var(--info) 40%, var(--border));
  background: linear-gradient(135deg, var(--info-soft), transparent 62%);
}
.hero-accent--hiring .hero-accent__icon { background: var(--info-soft); color: var(--info); }
.hero-accent--hiring .hero-accent__kind { color: var(--info); }
.hero-accent--tech {
  border-color: color-mix(in srgb, var(--warn) 40%, var(--border));
  background: linear-gradient(135deg, var(--warn-soft), transparent 62%);
}
.hero-accent--tech .hero-accent__icon { background: var(--warn-soft); color: var(--warn); }
.hero-accent--tech .hero-accent__kind { color: var(--warn); }

/* ═══════════════ фильтр активной ниши на доске (блок B/D) ═══════════════ */
.niche-filter {
  display: flex; align-items: center; gap: var(--space-2);
  margin: 0 0 var(--space-2);
}
.niche-filter__cap {
  display: inline-flex; align-items: center; gap: 6px; flex: none;
  font-size: var(--text-2xs); text-transform: uppercase;
  letter-spacing: var(--tracking-wide); color: var(--text-muted);
}
.niche-filter__select {
  appearance: none; -webkit-appearance: none;
  font: inherit; font-size: var(--text-sm); font-weight: var(--weight-medium);
  color: var(--text); background: var(--surface);
  border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: 7px 28px 7px var(--space-3);
  flex: 1; min-width: 0; max-width: 340px; cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, var(--text-muted) 50%),
    linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);
  background-position: calc(100% - 16px) 55%, calc(100% - 11px) 55%;
  background-size: 5px 5px; background-repeat: no-repeat;
  transition: border-color var(--dur-fast) var(--ease-standard);
}
.niche-filter__select:focus-visible { outline: none; border-color: var(--accent-strong); box-shadow: var(--shadow-focus); }

/* ═══════════ досье v4: инсайт-секции (Персона/Зацепки/…): компактно ═══════════ */
.dossier-insight { display: flex; flex-direction: column; gap: var(--space-2); margin: var(--space-3) 0; }
/* v5: hero «Следующий шаг» (next-best-action) — самый акцентный элемент досье.
 * Тот же вёрстка-язык, что hero-accent (иконка-плашка + overline + текст) и тот же
 * liquid-glass словарь токенов (accent-градиент, стеклянная кромка) — новых цветовых
 * языков не вводим, только чуть громче: заметная кромка + мягкое accent-свечение. */
.dossier-next {
  display: flex; gap: var(--space-3); align-items: flex-start;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, var(--accent-soft), transparent 62%), var(--surface);
  box-shadow: 0 0 24px -12px var(--border);
  position: relative; overflow: hidden;
}
.dossier-next__icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: var(--radius-md); flex: none;
  background: var(--accent-soft); color: var(--accent-strong);
}
.dossier-next__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dossier-next__cap {
  font-size: var(--text-2xs); text-transform: uppercase;
  letter-spacing: var(--tracking-wide); color: var(--accent-strong);
  font-weight: var(--weight-semibold);
}
.dossier-next__text {
  font-size: var(--text-md); font-weight: var(--weight-semibold);
  line-height: var(--leading-snug); color: var(--text);
}
.dossier-insight__cap {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: var(--text-2xs); text-transform: uppercase;
  letter-spacing: var(--tracking-wide); color: var(--text-muted);
}
.dossier-insight__cap .icon { color: var(--accent-strong); }
.insight-row {
  display: flex; gap: var(--space-2); align-items: baseline; margin: 0;
  padding: var(--space-2) 0; border-top: 1px solid var(--border-subtle);
  font-size: var(--text-sm); line-height: var(--leading-snug);
}
.insight-row:first-child { border-top: 0; }
.insight-row__date { flex: none; font-size: var(--text-xs); color: var(--text-muted); }
.insight-row__text { min-width: 0; }

/* ─────────────────────── self-serve конструктор бота (docs/25 §3) ───────────────────────
   Список ботов (#/bots) + 4-шаговый визард (#/bots/new, #/bots/<id>). Токен-driven,
   переиспользует базовые .badge/.field/.text-input/.empty/.error. */
.bots-tab { display: flex; flex-direction: column; gap: var(--space-4); }
.bots-create { align-self: flex-start; }
.bots-list { display: flex; flex-direction: column; gap: var(--space-3); }

/* свайп-строка (iOS swipe-to-reveal «Удалить»): карточный вид переносится на обёртку,
 * внутренняя строка — плоская; overflow:hidden клипит открытое действие по скруглению. */
.bots-swipe {
  position: relative; border-radius: var(--radius-lg); overflow: hidden;
  border: 1px solid var(--border); box-shadow: var(--shadow-card);
  animation: fade-up var(--dur-base) var(--ease-standard);
}
.bots-swipe.is-removing { opacity: 0; transform: scale(0.96); transition: opacity var(--dur-base) var(--ease-standard), transform var(--dur-base) var(--ease-standard); }
.bots-swipe__actions { position: absolute; top: 0; right: 0; bottom: 0; display: flex; }
.bots-swipe__del {
  width: 88px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  border: 0; background: var(--danger); color: #fff; font: inherit;
  font-size: var(--text-2xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide);
  cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  transition: background var(--dur-fast) var(--ease-standard);
}
.bots-swipe__del .icon { width: 20px; height: 20px; }
.bots-swipe__del.is-armed { background: var(--accent-strong); }
.bots-swipe__del:active { filter: brightness(0.94); }
.bots-swipe__fg { position: relative; z-index: 1; touch-action: pan-y; will-change: transform; }
.bots-swipe__fg .bots-row { border: 0; border-radius: 0; box-shadow: none; animation: none; }
.bots-row {
  display: flex; align-items: center; gap: var(--space-4); width: 100%;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
  padding: var(--space-4) var(--space-5);
  font: inherit; text-align: left; cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard);
  animation: fade-up var(--dur-base) var(--ease-standard);
}
.bots-row:active { background: var(--surface-2); }
.bots-row__icon {
  flex: none; width: 38px; height: 38px; border-radius: var(--radius-md);
  display: grid; place-items: center; background: var(--accent-soft); color: var(--accent-strong);
}
.bots-row__icon .icon { width: 19px; height: 19px; }
.bots-row__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.bots-row__name {
  font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--text);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.bots-row__sub {
  font-size: var(--text-xs); color: var(--text-muted);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.bots-row__status { flex: none; }
.bots-row__chev { width: 16px; height: 16px; color: var(--text-faint); flex: none; }

/* ── визард ── */
.bot-wizard { gap: var(--space-5); }
.bot-wizard__head { display: flex; flex-direction: column; gap: var(--space-2); }
.bot-wizard__back {
  display: inline-flex; align-items: center; gap: 4px; align-self: flex-start;
  font: inherit; font-size: var(--text-sm); font-weight: var(--weight-medium);
  color: var(--text-muted); background: none; border: none; cursor: pointer;
  /* touch-target ≥44px (mobile-native): негативный left-margin компенсирует паддинг,
     чтобы визуально текст остался на месте, а зона тапа — крупной. */
  padding: var(--space-2) var(--space-2) var(--space-2) 0; min-height: 44px; margin-left: -2px;
}
.bot-wizard__back .icon { width: 16px; height: 16px; }
.bot-wizard__body { display: flex; flex-direction: column; gap: var(--space-3); }
.bot-wizard__nav { display: flex; justify-content: space-between; gap: var(--space-3); margin-top: var(--space-4); }
.bot-wizard__next { align-self: flex-start; }

/* ── степпер шагов ── */
.bot-stepper {
  display: flex; align-items: center; gap: var(--space-2);
  list-style: none; margin: 0; padding: 0; overflow-x: auto;
}
.bot-stepper__item { display: inline-flex; align-items: center; gap: 6px; flex: none; }
.bot-stepper__item::after {
  content: ""; width: 14px; height: 1px; background: var(--border-strong); margin-left: 2px;
}
.bot-stepper__item:last-child::after { display: none; }
.bot-stepper__dot {
  width: 22px; height: 22px; border-radius: 50%; flex: none;
  display: grid; place-items: center;
  font-size: var(--text-xs); font-weight: var(--weight-semibold);
  background: var(--surface-2); color: var(--text-faint); border: 1px solid var(--border);
}
.bot-stepper__label { font-size: var(--text-xs); color: var(--text-faint); }
.bot-stepper__item.is-current .bot-stepper__dot { background: var(--text); color: #fff; border-color: var(--text); }
.bot-stepper__item.is-current .bot-stepper__label { color: var(--text); font-weight: var(--weight-medium); }
.bot-stepper__item.is-done .bot-stepper__dot { background: var(--accent-soft); color: var(--accent-strong); border-color: transparent; }
.bot-stepper__dot--done .icon { width: 13px; height: 13px; }
.field__note { display: block; margin-top: var(--space-2); font-size: var(--text-xs); color: var(--text-faint); line-height: var(--leading-snug); }

/* ── поля / подсказки ── */
.field__label { display: block; margin-bottom: var(--space-2); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--text); }
.bot-hint { font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); margin: 0; }
.bot-actions-row { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.bot-kb-status { font-size: var(--text-xs); color: var(--text-muted); margin: 0; min-height: 16px; }

/* ── вердикт Jev ── */
.bot-verdict:empty { display: none; }
.bot-verdict__inner {
  display: flex; flex-direction: column; gap: var(--space-3);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: var(--space-4);
}
.bot-verdict__cap { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--text-faint); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.bot-verdict__chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.bot-verdict__warn, .bot-verdict__note {
  display: flex; align-items: flex-start; gap: 6px;
  font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); margin: 0;
}
.bot-verdict__warn .icon { color: var(--accent-strong); flex: none; margin-top: 1px; }

/* ── тест-ход ── */
.bot-test-row { display: flex; gap: var(--space-2); align-items: stretch; }
.bot-test-row .text-input { flex: 1; }
.bot-test-reply:empty { display: none; }
.bot-test-reply {
  background: var(--surface-2); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md); padding: var(--space-3) var(--space-4);
}
.bot-test-reply__text { margin: 0; font-size: var(--text-sm); color: var(--text); line-height: var(--leading-snug); }
.bot-test-reply__note { margin: 0; font-size: var(--text-xs); color: var(--text-muted); }

/* ── тест-чат (движок Atlas): настоящая переписка вместо одного пузыря ──
 * Пузырь клиента справа (коралл), ответ бота слева с аватаром, индикатор набора. */
.bot-chat {
  display: flex; flex-direction: column; gap: var(--space-2);
  max-height: 340px; overflow-y: auto; overscroll-behavior: contain;
  padding: var(--space-3); margin-bottom: var(--space-3);
  background: var(--surface-2); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg); scroll-behavior: smooth;
}
.bot-chat__empty {
  margin: auto; display: flex; flex-direction: column; align-items: center; gap: var(--space-2);
  padding: var(--space-6) var(--space-4); text-align: center; color: var(--text-faint);
}
.bot-chat__empty .icon { width: 26px; height: 26px; opacity: 0.7; }
.bot-chat__empty p { margin: 0; font-size: var(--text-sm); line-height: var(--leading-snug); max-width: 30ch; }
.bot-msg {
  display: flex; align-items: flex-end; gap: var(--space-2); max-width: 88%;
  animation: bot-msg-in var(--dur-base) var(--ease-emphasized) both;
}
.bot-msg--user { align-self: flex-end; }
.bot-msg--bot { align-self: flex-start; }
.bot-msg__ava {
  flex: none; width: 26px; height: 26px; border-radius: var(--radius-pill);
  display: grid; place-items: center; background: var(--accent-soft); color: var(--accent-strong);
  margin-bottom: 1px;
}
.bot-msg__ava .icon { width: 15px; height: 15px; }
.bot-msg__bubble {
  padding: 8px var(--space-3); border-radius: var(--radius-lg);
  font-size: var(--text-sm); line-height: var(--leading-snug); white-space: pre-wrap; word-break: break-word;
}
.bot-msg--user .bot-msg__bubble {
  background: var(--text); color: var(--accent-text);
  border-bottom-right-radius: var(--radius-xs);
}
.bot-msg--bot .bot-msg__bubble {
  background: var(--surface); color: var(--text); border: 1px solid var(--border-subtle);
  border-bottom-left-radius: var(--radius-xs);
}
.bot-msg__bubble--note { color: var(--text-muted); font-size: var(--text-xs); font-style: italic; }
/* индикатор набора — три пульсирующие точки */
.bot-typing { display: inline-flex; gap: 4px; align-items: center; padding: 2px 0; }
.bot-typing i {
  width: 6px; height: 6px; border-radius: 50%; background: var(--text-faint);
  animation: bot-typing-dot 1.1s var(--ease-standard) infinite;
}
.bot-typing i:nth-child(2) { animation-delay: 0.15s; }
.bot-typing i:nth-child(3) { animation-delay: 0.30s; }
@keyframes bot-msg-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes bot-typing-dot { 0%, 60%, 100% { opacity: 0.35; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-3px); } }
@media (prefers-reduced-motion: reduce) {
  .bot-msg { animation: none; }
  .bot-typing i { animation: none; opacity: 0.6; }
}

/* быстрые реплики теста — горизонтальный ряд чипов (типовые вопросы клиента одним тапом) */
.bot-quickies {
  display: flex; gap: var(--space-2); overflow-x: auto; padding: 2px 1px var(--space-1);
  margin-bottom: var(--space-2); overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.bot-quickies::-webkit-scrollbar { display: none; }
.bot-quickies__chip {
  flex: none; padding: 6px var(--space-3); min-height: 34px; border-radius: var(--radius-pill);
  background: var(--surface); border: 1px solid var(--border); color: var(--text);
  font: inherit; font-size: var(--text-sm); white-space: nowrap; cursor: pointer;
  touch-action: manipulation; user-select: none; -webkit-user-select: none;
  transition: transform var(--dur-fast) var(--ease-standard), background var(--dur-fast) var(--ease-standard);
}
.bot-quickies__chip:active { transform: scale(0.96); background: var(--surface-hover); }
@media (hover: hover) and (pointer: fine) { .bot-quickies__chip:hover { border-color: var(--border-strong); background: var(--surface-2); } }

/* расписка добавленных источников знаний — честный «чек» (без «удалить»: нет remove-API) */
.bot-kb-list { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin: 0 0 var(--space-3); }
.bot-kb-list:empty { display: none; }
.bot-kb-list__cap { font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); font-weight: var(--weight-medium); }
.bot-kb-chip {
  display: inline-flex; align-items: center; gap: 5px; max-width: 100%;
  padding: 4px var(--space-2); border-radius: var(--radius-pill);
  background: var(--pos-050); border: 1px solid color-mix(in srgb, var(--success) 26%, transparent);
  color: var(--success); font-size: var(--text-xs); font-weight: var(--weight-medium);
}
.bot-kb-chip .icon { width: 13px; height: 13px; flex: none; }
.bot-kb-chip__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ─── Авто-правила (#/rules): триггеры «сигнал → авто-черновик + пуш» ─── */
.rules-tab { display: flex; flex-direction: column; gap: var(--space-4); }
.rules-list { display: flex; flex-direction: column; gap: var(--space-3); }
.rules-row {
  display: flex; align-items: flex-start; gap: var(--space-3);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card); padding: var(--space-4);
  animation: fade-up var(--dur-base) var(--ease-standard);
}
.rules-row.is-off { opacity: 0.6; }
.rules-row__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.rules-row__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.rules-row__niche { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--text); min-width: 0; }
.rules-row__kinds { display: flex; flex-wrap: wrap; gap: 6px; }
.rules-row__del {
  flex: none; display: grid; place-items: center; width: 34px; height: 34px;
  border: 0; background: none; border-radius: var(--radius-md); color: var(--text-faint);
  cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent;
}
.rules-row__del .icon { width: 18px; height: 18px; }
.rules-row__del:active { background: var(--surface-hover); color: var(--danger); }

/* переключатель (switch) — тёплый iOS-тумблер, переиспользуемый */
.switch {
  flex: none; width: 46px; height: 28px; border-radius: var(--radius-pill);
  border: 1px solid var(--border-strong); background: var(--surface-sunken);
  padding: 2px; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  transition: background var(--dur-base) var(--ease-standard), border-color var(--dur-base) var(--ease-standard);
}
.switch__knob {
  display: block; width: 22px; height: 22px; border-radius: 50%; background: #fff;
  box-shadow: 0 1px 3px rgba(28, 25, 23, 0.28);
  transition: transform var(--dur-base) var(--ease-emphasized);
}
.switch.is-on { background: var(--text); border-color: var(--text); }
.switch.is-on .switch__knob { transform: translateX(18px); }
.switch:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
@media (prefers-reduced-motion: reduce) { .switch, .switch__knob { transition: none; } }

/* ─── «Модель учится» (самообучение reranker от свайпов Разбора) ─── */
.learn__head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-3); }
.learn__head .icon { width: 15px; height: 15px; color: var(--accent-strong); flex: none; }
.learn__head > span:not(.learn-chip) { font-size: var(--text-2xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--accent-strong); }
.learn-chip {
  margin-left: auto; flex: none; font-size: var(--text-2xs); font-weight: var(--weight-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-wide); padding: 3px 9px;
  border-radius: var(--radius-pill); background: var(--surface-sunken); color: var(--text-muted);
}
.learn-chip.is-live { background: var(--pos-050); color: var(--pos-600); }
.learn-bar { height: 8px; border-radius: var(--radius-pill); background: var(--surface-sunken); overflow: hidden; }
.learn-bar__fill { display: block; height: 100%; border-radius: var(--radius-pill); background: var(--text); transition: width var(--dur-slow) var(--ease-emphasized); }
.learn__line { margin: var(--space-3) 0 0; font-size: var(--text-md); color: var(--text); line-height: var(--leading-snug); font-variant-numeric: tabular-nums; }
.learn__sub { margin: var(--space-2) 0 0; font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }
.learn__acc { margin: var(--space-2) 0 0; font-size: var(--text-sm); color: var(--text); font-weight: var(--weight-medium); }
@media (prefers-reduced-motion: reduce) { .learn-bar__fill { transition: none; } }

/* «Чему доучить бота» — вопросы клиентов без ответа (пробелы KB) */
.learn-gaps { display: flex; flex-direction: column; gap: var(--space-2); margin: var(--space-2) 0; }
.learn-gap {
  display: flex; align-items: center; gap: var(--space-3); width: 100%; text-align: left;
  padding: 10px var(--space-3); border-radius: var(--radius-md);
  background: var(--surface-2); border: 1px solid var(--border-subtle); color: var(--text);
  font: inherit; font-size: var(--text-sm); cursor: pointer;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  transition: background var(--dur-fast) var(--ease-standard);
}
.learn-gap:active { background: var(--surface-hover); }
.learn-gap__q { flex: 1; min-width: 0; }
.learn-gap__n { flex: none; font-size: var(--text-2xs); font-weight: var(--weight-semibold); color: var(--text-faint); font-variant-numeric: tabular-nums; }
@media (hover: hover) and (pointer: fine) { .learn-gap:hover { border-color: var(--border-strong); } }

/* «Пульс бота» — сводка живого бота (сообщений / answered-rate / пробелы) */
.bot-pulse { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: var(--space-4); margin-bottom: var(--space-3); }
.pulse__head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-3); font-size: var(--text-2xs); font-weight: var(--weight-semibold); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--accent-strong); }
.pulse__head .icon { width: 14px; height: 14px; }
.pulse__stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3); }
.pulse__stat { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pulse__val { font-size: var(--text-2xl); font-weight: var(--weight-bold); letter-spacing: var(--tracking-tight); color: var(--text); line-height: 1.05; }
.pulse__cap { font-size: var(--text-2xs); text-transform: uppercase; letter-spacing: var(--tracking-wide); color: var(--text-faint); font-weight: var(--weight-medium); }

/* ── гейт публикации ── */
.bot-publish-gate {
  display: flex; align-items: center; gap: 6px; margin: 0;
  font-size: var(--text-sm); line-height: var(--leading-snug);
}
.bot-publish-gate.is-block { color: var(--text-muted); }
.bot-publish-gate.is-block .icon { color: var(--text-faint); }
.bot-publish-gate.is-ok { color: var(--accent-strong); }
.bot-publish-gate .icon { flex: none; }
.bot-publish { align-self: flex-start; }

/* ─────────── B2C-канал Telegram в конструкторе бота (docs/25 §A) ─────────── */
.bot-tg {
  display: flex; flex-direction: column; gap: var(--space-3);
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: var(--space-4); margin-top: var(--space-4);
}
.bot-tg__head { display: flex; align-items: center; gap: var(--space-2); }
.bot-tg__head .icon { width: 18px; height: 18px; color: var(--accent-strong); }
.bot-tg__title { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--text); flex: 1; }
.bot-tg__steps { margin: 0; padding-left: var(--space-5); display: flex; flex-direction: column; gap: 4px; }
.bot-tg__steps li { font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); }
.bot-tg__token { font-family: var(--font-mono); font-size: var(--text-sm); letter-spacing: 0; }
.bot-tg__ok { display: flex; align-items: center; gap: 6px; margin: 0; font-size: var(--text-sm); color: var(--accent-strong); }
.bot-tg__ok .icon { flex: none; }

/* ─── библиотека шаблонов скрипта продаж (docs/25 §A; skill: mobile-native) ─── */
.sales-tpl { display: flex; flex-direction: column; gap: var(--space-2); margin-bottom: var(--space-2); }
.sales-tpl__cap { font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--text-faint); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.sales-tpl__row {
  display: flex; gap: var(--space-2); overflow-x: auto; padding: 2px 1px var(--space-1);
  /* mobile-native: горизонтальный скролл не «цепляет» страницу; инерция на iOS */
  overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.sales-tpl__row::-webkit-scrollbar { display: none; }
.sales-tpl__chip {
  display: inline-flex; align-items: center; gap: 5px; flex: none;
  padding: 8px var(--space-3); min-height: 38px; border-radius: var(--radius-pill);
  background: var(--surface); border: 1px solid var(--border); color: var(--text);
  font: inherit; font-size: var(--text-sm); font-weight: var(--weight-medium); white-space: nowrap;
  /* mobile-native: мгновенный тап, без выделения текста контрола, без 300ms */
  touch-action: manipulation; user-select: none; -webkit-user-select: none; cursor: pointer;
  transition: transform var(--dur-fast) var(--ease-standard), background var(--dur-fast) var(--ease-standard);
}
.sales-tpl__chip .icon { width: 14px; height: 14px; color: var(--accent-strong); }
/* press-фидбэк работает на тач (в отличие от :hover) */
.sales-tpl__chip:active { transform: scale(0.96); background: var(--surface-hover); }
@media (hover: hover) and (pointer: fine) {
  .sales-tpl__chip:hover { border-color: var(--border-strong); background: var(--surface-2); }
}

/* ─── полировка визарда бота (инспирация 21st: onboarding stepper + grouped settings) ─── */
.bot-wizard__titlerow { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); width: 100%; }
.bot-wizard__count { flex: none; font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--accent-strong); font-variant-numeric: tabular-nums; }
/* тонкий прогресс-бар заполнения */
.bot-progress { height: 6px; border-radius: var(--radius-pill); background: var(--surface-sunken); overflow: hidden; margin: var(--space-1) 0 var(--space-2); }
.bot-progress__fill { display: block; height: 100%; border-radius: var(--radius-pill); background: var(--text); transition: width var(--dur-slow) var(--ease-emphasized); }
@media (prefers-reduced-motion: reduce) { .bot-progress__fill { transition: none; } }
/* секция-карточка сгруппированных полей */
.bot-section { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: var(--space-2) var(--space-4) var(--space-3); margin-bottom: var(--space-3); animation: fade-up var(--dur-base) var(--ease-standard); }
.bot-section__cap { font-size: var(--text-2xs); font-weight: var(--weight-semibold); color: var(--text-faint); text-transform: uppercase; letter-spacing: var(--tracking-wide); padding: var(--space-2) 0 var(--space-1); }
.bot-section .field { padding-bottom: var(--space-3); }
.bot-section .field:last-of-type { padding-bottom: var(--space-1); }

/* СВОРАЧИВАЕМАЯ секция ревью (тот же язык, что на карточке лида): шапка-кнопка с chevron,
 * тело на grid-template-rows 0fr→1fr (sanctioned accordion, без JS-замера высоты). */
.bot-section--fold { padding: 0; overflow: hidden; }
.bot-section__head {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  width: 100%; background: none; border: 0; font: inherit; text-align: left; cursor: pointer;
  padding: var(--space-3) var(--space-4);
  -webkit-tap-highlight-color: transparent; touch-action: manipulation; user-select: none; -webkit-user-select: none;
}
.bot-section__head .bot-section__cap { padding: 0; }
.bot-section__head:focus-visible { outline: none; box-shadow: var(--shadow-focus); border-radius: var(--radius-md); }
.bot-section__chev {
  width: 16px; height: 16px; flex: none; color: var(--text-faint);
  transition: transform var(--dur-base) var(--ease-standard), color var(--dur-base) var(--ease-standard);
}
.bot-section--fold:not(.is-collapsed) .bot-section__chev { transform: rotate(90deg); color: var(--accent-strong); }
.bot-section__body {
  display: grid; grid-template-rows: 1fr;
  transition: grid-template-rows var(--dur-slow) var(--ease-emphasized);
}
.bot-section--fold.is-collapsed .bot-section__body { grid-template-rows: 0fr; }
.bot-section__clip { overflow: hidden; min-height: 0; }
.bot-section__inner { padding: 0 var(--space-4) var(--space-3); }
@media (prefers-reduced-motion: reduce) {
  .bot-section__body { transition: none; }
  .bot-section__chev { transition: color var(--dur-base) var(--ease-standard); }
}

/* ─── направленный переход между шагами визарда (skill: animate) ───
   Цель: spatial consistency (вперёд слева-направо, назад — обратно). transform+opacity,
   strong ease-out, 220ms (occasional tier). reduced-motion → только opacity, без сдвига. */
@keyframes bot-step-fwd  { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: none; } }
@keyframes bot-step-back { from { opacity: 0; transform: translateX(-16px); } to { opacity: 1; transform: none; } }
.bot-wizard__body { animation: bot-step-fwd var(--dur-slow) var(--ease-emphasized) both; }
.bot-wizard__body--back { animation-name: bot-step-back; }
/* один согласованный жест: секции не анимируются отдельно, пока едет body */
.bot-wizard__body .bot-section { animation: none; }
@media (prefers-reduced-motion: reduce) {
  @keyframes bot-step-fade { from { opacity: 0; } to { opacity: 1; } }
  .bot-wizard__body, .bot-wizard__body--back { animation: bot-step-fade var(--dur-base) var(--ease-standard) both; }
}

/* ─── список ботов: крупнее карточка + мета (статус/канал/продажи) ─── */
.bots-row--card { align-items: flex-start; padding: var(--space-4); gap: var(--space-3); }
.bots-row--card .bots-row__icon { width: 44px; height: 44px; }
.bots-row--card .bots-row__icon .icon { width: 21px; height: 21px; }
.bots-row--card .bots-row__body { gap: 4px; }
.bots-row--card .bots-row__chev { align-self: center; }
.bots-row__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 4px; }
.bots-row__tg, .bots-row__sales {
  display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: var(--radius-pill);
  font-size: var(--text-2xs); font-weight: var(--weight-medium); background: var(--surface-2); color: var(--text-muted);
}
.bots-row__tg .icon { color: var(--info); } .bots-row__sales .icon { color: var(--accent-strong); }
/* статус базы знаний с иконкой */
.bot-kb-status.is-ok { display: flex; align-items: center; gap: 6px; color: var(--accent-strong); }
.bot-kb-status .icon { flex: none; }

/* ─── микро-анимации конструктора (skill animate) ─── */
/* вставка шаблона: одноразовый ring-flash поля (feedback, ~450ms) */
@keyframes insert-flash { from { box-shadow: 0 0 0 3px var(--accent-ring); } to { box-shadow: 0 0 0 0 transparent; } }
.text-input.just-filled { animation: insert-flash 450ms var(--ease-emphasized) both; }
/* Telegram подключён: pop-in галочки (delight, rare/first-time), лёгкий overshoot */
@keyframes tg-pop { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: none; } }
.tg-pop { animation: tg-pop 280ms var(--ease-spring) both; }
@media (prefers-reduced-motion: reduce) {
  .text-input.just-filled { animation: none; }
  @keyframes tg-pop-fade { from { opacity: 0; } to { opacity: 1; } }
  .tg-pop { animation: tg-pop-fade var(--dur-base) var(--ease-standard) both; }
}

/* ══════════════════════════ B2C: клиенты бота (docs/26, воркспейс kind=b2c) ══════════════════════════ */
/* «Лиды» = живые люди из Telegram-бота. Паритет к B2B: список-пайплайн + карточка со вкладками
 * (Обзор/Переписка/Ответ) + канбан. Свои статусы (b2c-*), интерес-вердикт (hot/warm/cold),
 * консент-бейдж, чат-пузыри. Переиспользует .lead-*/.seg/.chip/.fit-ring/.reasons/.block-примитивы. */

/* ── B2C-статусы канбана (свои цвета, независимы от B2B) ── */
.chip--b2c-new         { color: var(--col-new); }
.chip--b2c-interested  { color: var(--accent-strong); }
.chip--b2c-in_progress { color: var(--info); }
.chip--b2c-won         { color: var(--col-won); }
.chip--b2c-lost        { color: var(--col-lost); }
.btn-move--interested  { --to-color: var(--accent-strong); }

/* ── аватар-инициал (цвет по вердикту интереса) ── */
.b2c-avatar {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%;
  font-size: var(--text-md); font-weight: var(--weight-bold); color: #fff;
  background: var(--col-new);
}
.b2c-avatar--hot  { background: var(--why-icon); box-shadow: 0 2px 8px -2px transparent; }
.b2c-avatar--warm { background: var(--col-contacted); }
.b2c-avatar--cold { background: var(--info); }

/* ── вердикт-бейдж (badge-стиль) ── */
.b2c-verdict { text-transform: none; }
.b2c-verdict--hot  { color: var(--accent-strong); border-color: var(--border); background: var(--accent-soft); }
.b2c-verdict--hot .icon { color: var(--accent-strong); }
.b2c-verdict--warm { color: var(--col-contacted); border-color: color-mix(in srgb, var(--col-contacted) 30%, transparent); background: color-mix(in srgb, var(--col-contacted) 12%, transparent); }
.b2c-verdict--cold { color: var(--info); border-color: color-mix(in srgb, var(--info) 26%, transparent); background: var(--info-soft); }

/* ── unread-бейдж в шапке карточки ── */
.b2c-unread-badge { display: inline-flex; align-items: center; gap: 5px; font-size: var(--text-2xs); font-weight: var(--weight-semibold); color: var(--accent-strong); text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.b2c-unread-badge__dot { width: 6px; height: 6px; border-radius: 50%; background: var(--col-new); }

/* ═══ список «Клиенты» (пайплайн-карточки) ═══ */
.b2c-list { display: flex; flex-direction: column; gap: var(--space-3); }
.b2c-item {
  position: relative; overflow: hidden;
  display: flex; flex-direction: column; gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card); cursor: pointer;
  touch-action: pan-y; -webkit-tap-highlight-color: transparent;
  transition: transform var(--dur-base) var(--ease-emphasized), border-color var(--dur-fast) var(--ease-standard);
}
.b2c-item:active { border-color: var(--border-strong); }
.b2c-item.is-swiping { transition: none; }
.b2c-item.is-swiped-out { transition: transform var(--dur-base) var(--ease-emphasized), opacity var(--dur-base) var(--ease-standard); opacity: 0; }
.b2c-item:focus-visible { outline: none; border-color: var(--accent-strong); box-shadow: var(--shadow-focus); }
.b2c-item.row-in { animation: fade-up var(--dur-base) var(--ease-standard) both; animation-delay: calc(var(--row-i, 0) * 24ms); }

.b2c-item__top { display: flex; align-items: center; gap: var(--space-3); }
.b2c-item__ident { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.b2c-item__name { font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.b2c-item__handle { font-size: var(--text-xs); color: var(--text-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.b2c-item__right { flex: none; display: inline-flex; align-items: center; gap: 6px; }
.b2c-score { font-size: var(--text-sm); font-weight: var(--weight-bold); padding: 2px 7px; border-radius: var(--radius-pill); }
.b2c-score--hot  { color: var(--accent-text); background: var(--why-icon); }
.b2c-score--warm { color: var(--accent-text); background: var(--col-contacted); }
.b2c-score--cold { color: var(--info); background: var(--info-soft); }
.b2c-item__unread { width: 8px; height: 8px; border-radius: 50%; background: var(--col-new); flex: none; }

.b2c-item__preview { display: flex; align-items: flex-start; gap: 6px; margin: 0; font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); }
.b2c-item__preview .icon { flex: none; margin-top: 2px; color: var(--text-faint); }
.b2c-item__preview-text { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.b2c-item__foot { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.b2c-item__reason { display: inline-flex; align-items: center; gap: 5px; font-size: var(--text-xs); color: var(--accent-strong); min-width: 0; }
.b2c-item__reason .icon { flex: none; color: var(--accent-strong); }
.b2c-item__reason span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ═══ лента «Диалоги» ═══ */
.b2c-conv-toolbar { margin-bottom: var(--space-3); }
.b2c-conv-list { display: flex; flex-direction: column; gap: 2px; }
.b2c-conv {
  display: flex; align-items: flex-start; gap: var(--space-3);
  padding: var(--space-3) var(--space-3);
  border-radius: var(--radius-lg); cursor: pointer;
  border: 1px solid transparent;
  -webkit-tap-highlight-color: transparent; touch-action: manipulation;
  transition: background var(--dur-fast) var(--ease-standard);
}
.b2c-conv + .b2c-conv { border-top: 1px solid var(--border); border-top-left-radius: 0; border-top-right-radius: 0; }
.b2c-conv:active { background: var(--surface-hover); }
@media (hover: hover) and (pointer: fine) { .b2c-conv:hover { background: var(--surface-hover); } }
.b2c-conv:focus-visible { outline: none; border-color: var(--accent-strong); box-shadow: var(--shadow-focus); }
.b2c-conv.is-unread .b2c-conv__name { font-weight: var(--weight-bold); }
.b2c-conv__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.b2c-conv__head { display: flex; align-items: baseline; gap: var(--space-2); }
.b2c-conv__name { flex: 1; min-width: 0; font-size: var(--text-md); font-weight: var(--weight-medium); color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.b2c-conv__time { flex: none; font-size: var(--text-2xs); color: var(--text-faint); }
.b2c-conv__preview { margin: 0; font-size: var(--text-sm); color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.b2c-conv__foot { display: flex; align-items: center; gap: var(--space-2); }
.b2c-conv__score { display: inline-flex; align-items: center; gap: 3px; font-size: var(--text-xs); font-weight: var(--weight-semibold); }
.b2c-conv__score--hot  { color: var(--accent-strong); }
.b2c-conv__score--warm { color: var(--col-contacted); }
.b2c-conv__score--cold { color: var(--info); }
.b2c-conv__dot { flex: none; width: 9px; height: 9px; border-radius: 50%; background: var(--col-new); margin-top: 6px; }
.b2c-conv--skel { pointer-events: none; }

/* ═══ карточка человека (паритет B2B) ═══ */
.b2c-hero__ident { display: flex; align-items: center; gap: var(--space-3); }
.b2c-hero__names { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.b2c-hero__handle { font-size: var(--text-xs); color: var(--text-faint); overflow: hidden; text-overflow: ellipsis; }
.b2c-card .lead__hero { align-items: flex-start; }

/* кольцо интереса (перекрашивает fit-ring bar по вердикту) */
.b2c-ring--b2c-hot .fit-ring__bar  { stroke: var(--why-icon); }
.b2c-ring--b2c-warm .fit-ring__bar { stroke: var(--col-contacted); }
.b2c-ring--b2c-cold .fit-ring__bar { stroke: var(--info); }

.b2c-overview { display: flex; flex-direction: column; gap: var(--space-4); }
.b2c-summary { margin: 0; }

/* консент-бейдж */
.b2c-consent { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-radius: var(--radius-lg); border: 1px solid var(--border); }
.b2c-consent__icon .icon { width: 20px; height: 20px; }
.b2c-consent__body { display: flex; flex-direction: column; gap: 2px; }
.b2c-consent__title { font-size: var(--text-sm); font-weight: var(--weight-semibold); }
.b2c-consent__sub { font-size: var(--text-xs); color: var(--text-muted); }
.b2c-consent--ok { background: var(--success-soft); border-color: color-mix(in srgb, var(--success) 24%, transparent); }
.b2c-consent--ok .b2c-consent__icon .icon, .b2c-consent--ok .b2c-consent__title { color: var(--success); }
.b2c-consent--warn { background: var(--warn-soft); border-color: color-mix(in srgb, var(--warn) 26%, transparent); }
.b2c-consent--warn .b2c-consent__icon .icon, .b2c-consent--warn .b2c-consent__title { color: var(--warn); }

/* ═══ чат-транскрипт ═══ */
.b2c-chat__stream { display: flex; flex-direction: column; gap: var(--space-2); }
.b2c-chat__empty, .b2c-chat__more { display: flex; align-items: center; gap: 6px; justify-content: center; color: var(--text-faint); font-size: var(--text-sm); padding: var(--space-4) 0; }
.b2c-chat__more { padding: 0 0 var(--space-2); }
.b2c-msg { max-width: 82%; display: flex; flex-direction: column; gap: 3px; padding: var(--space-2) var(--space-3); border-radius: var(--radius-lg); }
.b2c-msg--in  { align-self: flex-start; background: var(--surface-sunken); border: 1px solid var(--border); border-bottom-left-radius: var(--radius-xs); }
.b2c-msg--out { align-self: flex-end; background: var(--accent-soft); border: 1px solid var(--border); border-bottom-right-radius: var(--radius-xs); }
.b2c-msg__text { margin: 0; font-size: var(--text-sm); line-height: var(--leading-snug); color: var(--text); white-space: pre-wrap; }
.b2c-msg__meta { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-2xs); color: var(--text-faint); }
.b2c-msg--out .b2c-msg__meta { justify-content: flex-end; }
.b2c-msg__intent { padding: 1px 6px; border-radius: var(--radius-pill); background: var(--surface); border: 1px solid var(--border); color: var(--text-muted); }

/* ═══ живой чат B2C (docs/28 Волна 2): перехват + композер ═══ */
.b2c-chat--live { display: flex; flex-direction: column; gap: var(--space-3); }

/* индикатор режима + перехват/возврат */
.b2c-mode { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); flex-wrap: wrap; }
.b2c-mode__chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: var(--radius-pill); background: var(--surface-sunken); border: 1px solid var(--border); font-size: var(--text-xs); font-weight: var(--weight-semibold); color: var(--text-muted); }
.b2c-mode__chip--human { background: var(--accent-soft); border-color: var(--border); color: var(--accent-strong); }
.b2c-mode__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--text-faint); flex: none; }
.b2c-mode__dot.is-human { background: var(--accent-strong); }
.b2c-mode__actions { display: inline-flex; gap: var(--space-2); }
.b2c-mode__btn[hidden] { display: none; }

/* лента: ограничим высоту, чтобы композер держался внизу пейна */
.b2c-chat--live .b2c-chat__stream { max-height: 46vh; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; padding: 2px; }

/* автор outbound-пузыря («бот» / «вы») */
.b2c-msg__author { font-weight: var(--weight-semibold); text-transform: none; }
.b2c-msg__author--human { color: var(--accent-strong); }
.b2c-msg__author--bot { color: var(--text-muted); }
.b2c-msg.is-pending { opacity: 0.6; }
.b2c-msg.is-failed { border-color: var(--danger, #c0392b); }
.b2c-msg.is-failed .b2c-msg__text { color: var(--danger, #c0392b); }

/* дисклеймер «отправляет живой человек» */
.b2c-chat__note { display: flex; align-items: center; gap: 6px; margin: 0; font-size: var(--text-2xs); color: var(--text-faint); }
.b2c-chat__note .icon { flex: none; }

/* композер: инпут (16px — не зумит на iOS) + touch-action + без tap-highlight */
.b2c-chat__composer { display: flex; align-items: flex-end; gap: var(--space-2); }
.b2c-chat__input {
  flex: 1; min-width: 0; resize: none; font: inherit; font-size: 16px;
  line-height: var(--leading-snug); padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-lg); border: 1px solid var(--border);
  background: var(--surface); color: var(--text);
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  max-height: 120px; overflow-y: auto;
}
.b2c-chat__input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.b2c-chat__send { flex: none; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.b2c-chat__send .btn__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ═══════════════════ B2C паритет-волна 1 (docs/28) ═══════════════════ */

/* analytics-dot для новых стадий воронки бота */
.analytics-dot--interested { background: var(--col-interested); }

/* «нужен человек»-чип (списки Диалоги/Клиенты) */
.chip--needs-human {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: var(--radius-pill);
  font-size: var(--text-xs); font-weight: var(--weight-semibold);
  color: var(--accent-strong); background: var(--accent-soft);
  border: 1px solid var(--border);
}
.chip--needs-human .icon { flex: none; color: var(--accent-strong); }
.b2c-item--needs-human { border-color: var(--border); box-shadow: 0 0 0 1px var(--border), var(--shadow-card); }
.b2c-conv--needs-human .b2c-conv__name { color: var(--accent-strong); }

/* ── page-head строка с действием + link-btn ── */
.page-head__row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.link-btn {
  display: inline-flex; align-items: center; gap: 5px;
  background: transparent; border: none; cursor: pointer;
  font: inherit; font-size: var(--text-sm); font-weight: var(--weight-semibold);
  color: var(--accent-strong); padding: 4px 4px;
  -webkit-tap-highlight-color: transparent;
}
.link-btn .icon { flex: none; }
.link-btn:active { opacity: 0.6; }

/* ═══ лента «События» (алерты) ═══ */
.alert-list { display: flex; flex-direction: column; gap: var(--space-2); }
.alert-item {
  position: relative; display: flex; align-items: flex-start; gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card); cursor: pointer;
  -webkit-tap-highlight-color: transparent; touch-action: manipulation;
  transition: border-color var(--dur-fast) var(--ease-standard), background var(--dur-fast) var(--ease-standard);
}
.alert-item:active { border-color: var(--border-strong); }
@media (hover: hover) and (pointer: fine) { .alert-item:hover { border-color: var(--border-strong); } }
.alert-item:focus-visible { outline: none; border-color: var(--accent-strong); box-shadow: var(--shadow-focus); }
.alert-item.is-read { opacity: 0.66; }
.alert-item.row-in { animation: fade-up var(--dur-base) var(--ease-standard) both; animation-delay: calc(var(--row-i, 0) * 24ms); }
.alert-item--needs-human { }
.alert-item__icon {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%;
}
.alert-item__icon .icon { width: 20px; height: 20px; }
.alert-item__icon--hot { background: var(--accent-soft); color: var(--accent-strong); }
.alert-item__icon--hot .icon { color: var(--accent-strong); }
.alert-item__icon--escalation { background: var(--warn-soft); color: var(--warn); }
.alert-item__icon--escalation .icon { color: var(--warn); }
.alert-item__icon--sla { background: color-mix(in srgb, var(--col-lost) 18%, transparent); color: var(--text-muted); }
.alert-item__icon--sla .icon { color: var(--text-muted); }
.alert-item__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.alert-item__head { display: flex; align-items: baseline; gap: var(--space-2); }
.alert-item__kind { flex: 1; min-width: 0; font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.alert-item__time { flex: none; font-size: var(--text-2xs); color: var(--text-faint); }
.alert-item__reason { margin: 0; font-size: var(--text-sm); color: var(--text-muted); line-height: var(--leading-snug); }
.alert-item__right { flex: none; display: inline-flex; align-items: center; gap: var(--space-2); }
.alert-item__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--col-new); flex: none; }
.alert-item__read {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--surface-sunken); border: 1px solid var(--border); cursor: pointer;
  color: var(--text-muted); -webkit-tap-highlight-color: transparent;
}
/* Тач-цель 44×44 (WCAG 2.5.5 / iOS HIG) — расширяем ХИТ-зону, не визуал: невидимый
 * ::before накрывает 44px по центру 30px-кнопки. Кружок остаётся 30px. */
.alert-item__read::before {
  content: ""; position: absolute; top: 50%; left: 50%;
  width: 44px; height: 44px; transform: translate(-50%, -50%);
}
.alert-item__read .icon { width: 16px; height: 16px; }
.alert-item__read:active { background: var(--surface-hover); }

/* ═══ сегменты + экспорт (Клиенты) ═══ */
/* Экспорт-кнопка НЕ в скролл-ряду: держим её отдельным flex-none столбцом справа,
 * чтобы горизонтальный скролл чипов не таскал её и не резал последний чип. */
.seg-toolbar { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-3); min-width: 0; }
/* Регресс-фикс (Волна B §8): чип «Клиенты» обрезался справа при wrap+сжатии экспортом.
 * Ряд теперь ГОРИЗОНТАЛЬНО скроллится со snap — ни один чип не режется, ощущение
 * нативной iOS-полосы фильтров. edge-fade маской намекает «есть ещё». */
.seg-chips {
  display: flex; align-items: center; gap: 6px; flex: 1 1 0; min-width: 0;
  overflow-x: auto; overflow-y: hidden; flex-wrap: nowrap;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
  scrollbar-width: none;
  padding-bottom: 2px; /* место под скрытый скроллбар, чтобы чипы не подрезались снизу */
  /* мягкое затухание у правого края — сигнал «ряд продолжается» */
  -webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 20px), transparent 100%);
          mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 20px), transparent 100%);
}
.seg-chips::-webkit-scrollbar { display: none; }
.seg-chip {
  display: inline-flex; align-items: center; gap: 5px; flex: none;
  scroll-snap-align: start;
  padding: 5px 11px; border-radius: var(--radius-pill);
  background: var(--surface-sunken); border: 1px solid var(--border); cursor: pointer;
  font: inherit; font-size: var(--text-xs); font-weight: var(--weight-medium); color: var(--text-muted);
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
}
.seg-chip:active { background: var(--surface-hover); }
.seg-chip__count { font-weight: var(--weight-bold); color: var(--accent-strong); }
.seg-export { flex: none; }

/* ═══ B2C-аналитика ═══ */
.b2c-kpi-row { display: flex; align-items: stretch; gap: var(--space-3); flex-wrap: wrap; }
.b2c-kpi {
  flex: 1; min-width: 90px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  padding: var(--space-3); border-radius: var(--radius-lg); background: var(--surface-sunken); text-align: center;
}
.b2c-kpi--donut { padding: var(--space-2); background: transparent; }
.b2c-kpi--wide { flex: 1.4; }
.b2c-kpi__val { font-size: var(--text-xl); font-weight: var(--weight-bold); color: var(--text); }
.b2c-kpi__cap { font-size: var(--text-2xs); color: var(--text-muted); line-height: var(--leading-snug); }
.b2c-kpi--warn .b2c-kpi__val { color: var(--warn); }

/* split-bar «бот vs человек» */
.split-bar { display: flex; height: 14px; border-radius: var(--radius-pill); overflow: hidden; background: var(--surface-sunken); margin-bottom: var(--space-2); }
.split-bar__seg { flex-grow: var(--f, 0); transition: flex-grow var(--dur-slow) var(--ease-emphasized); }
.split-bar__seg--bot { background: var(--info); }
.split-bar__seg--human { background: var(--text); }
.split-legend { display: flex; gap: var(--space-4); flex-wrap: wrap; }
.split-legend__item { display: inline-flex; align-items: center; gap: 6px; font-size: var(--text-xs); color: var(--text-muted); }
.split-legend__dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.split-legend__dot--bot { background: var(--info); }
.split-legend__dot--human { background: var(--text); }

/* next-step: подсказка второй строкой */
.dossier-next__hint { display: block; font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); margin-top: 2px; }

/* ─────────────────────────── Пилот-кит ─────────────────────────── */
/* Лёгкий фидбек по лиду (👍/👎) + «Оставить отзыв» на карточке (пилот-кит). */
.lead-feedback {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  flex-wrap: wrap;
  margin: var(--space-3) 0; padding: var(--space-3) var(--space-4);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md);
}
.lead-feedback__rate { display: flex; align-items: center; gap: var(--space-2); }
.lead-feedback__q { font-size: var(--text-sm); color: var(--text-muted); margin-right: 2px; }
.lead-feedback__btn {
  flex: none; display: grid; place-items: center; width: 44px; height: 44px;
  border-radius: var(--radius-md); border: 1px solid var(--border);
  background: var(--surface); color: var(--text-muted); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-standard),
    border-color var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard),
    transform var(--dur-fast) var(--ease-standard);
  -webkit-tap-highlight-color: transparent;
}
.lead-feedback__btn:active { transform: scale(0.92); }
.lead-feedback__btn .icon { width: 20px; height: 20px; }
@media (hover: hover) and (pointer: fine) {
  .lead-feedback__btn:hover { background: var(--surface-hover); border-color: var(--border-strong); color: var(--text); }
}
.lead-feedback__btn.is-on[data-testid="lead-feedback-up"] {
  color: var(--success); border-color: var(--success); background: var(--success-soft);
}
.lead-feedback__btn.is-on[data-testid="lead-feedback-down"] {
  color: var(--danger); border-color: var(--danger); background: var(--danger-soft);
}

/* Bottom-sheet свободного отзыва: textarea (16px — без iOS-зума) + «Отправить». */
.feedback-sheet__ta {
  width: 100%; box-sizing: border-box; margin: var(--space-3) 0;
  min-height: 96px; resize: vertical; font: inherit; font-size: 16px;
  color: var(--text); background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-md); padding: var(--space-3);
  line-height: var(--leading-snug);
}
.feedback-sheet__ta:focus { outline: none; border-color: var(--accent); }
.feedback-sheet__send { width: 100%; margin-bottom: var(--space-2); }

/* Владельческая пилот-панель (#/pilot): числовые KPI-карточки + счётчики фидбека. */
.pilot { display: flex; flex-direction: column; gap: var(--space-4); }
.pilot-note {
  display: flex; align-items: flex-start; gap: var(--space-2);
  font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug);
}
.pilot-note .icon { flex: none; width: 14px; height: 14px; margin-top: 2px; }
.pilot-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-3);
}
.pilot-card {
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: var(--space-4); display: flex; flex-direction: column; gap: 4px; min-width: 0;
}
.pilot-card__label {
  font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug);
  display: flex; align-items: center; gap: 6px;
}
.pilot-card__label .icon { width: 14px; height: 14px; flex: none; }
.pilot-card__value {
  font-size: var(--text-2xl); font-weight: var(--weight-bold); color: var(--text);
  line-height: 1.1; letter-spacing: var(--tracking-tight);
  font-variant-numeric: tabular-nums;
}
.pilot-card__sub { font-size: var(--text-xs); color: var(--text-muted); }
.pilot-sect-cap {
  font-size: var(--text-xs); font-weight: var(--weight-bold); color: var(--text-muted);
  text-transform: uppercase; letter-spacing: 0.05em; margin: var(--space-2) 0 calc(-1 * var(--space-1));
}
.pilot-fb { display: flex; gap: var(--space-3); }
.pilot-fb__item {
  flex: 1; display: flex; align-items: center; gap: var(--space-2);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4);
}
.pilot-fb__item .icon { width: 18px; height: 18px; flex: none; }
.pilot-fb__item--up { color: var(--success); }
.pilot-fb__item--down { color: var(--danger); }
.pilot-fb__num { font-size: var(--text-lg); font-weight: var(--weight-bold); font-variant-numeric: tabular-nums; }
.pilot-empty { text-align: center; color: var(--text-muted); font-size: var(--text-sm); padding: var(--space-6) 0; }

/* ─────────────────────── Каналы для продвижения (docs/33 слайс C) ───────────────────────
 * B2C-экран канал-файндера: форма описания ЦА → карточки публичных TG-каналов «купить
 * рекламу». Тёплая палитра, единый радиус. 0 действий кроме показа + внешней ссылки. */
.channels { padding-bottom: var(--space-6); }
.channels-form { display: flex; flex-direction: column; gap: var(--space-3); margin: var(--space-4) 0; }
.channels-input {
  width: 100%; box-sizing: border-box; resize: vertical; min-height: 76px;
  padding: var(--space-3) var(--space-4);
  font-size: 16px; /* ≥16px — iOS не зумит при фокусе (mobile-native) */
  line-height: 1.4; color: var(--text);
  background: var(--surface-sunken); border: 1px solid var(--border);
  border-radius: var(--radius-lg); font-family: inherit;
  transition: border-color var(--dur-fast) var(--ease-standard);
}
.channels-input:focus { outline: none; border-color: var(--accent); }
.channels-submit { align-self: stretch; min-height: 44px; } /* tap-target ≥44 */

.channels-results { display: block; }
.channels-list { display: flex; flex-direction: column; gap: var(--space-3); }

.channels-hint {
  display: flex; flex-direction: column; align-items: center; gap: var(--space-3);
  text-align: center; color: var(--text-muted);
  padding: var(--space-6) var(--space-4);
}
.channels-hint .icon { width: 34px; height: 34px; color: var(--text); opacity: 0.85; }
.channels-hint p { margin: 0; font-size: var(--text-sm); max-width: 30ch; }

.channels-fallback-note {
  display: flex; align-items: flex-start; gap: var(--space-2);
  padding: var(--space-3) var(--space-4); margin-bottom: var(--space-3);
  background: var(--surface-2); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg); color: var(--text-muted); font-size: var(--text-sm);
}
.channels-fallback-note .icon { width: 18px; height: 18px; flex: none; color: var(--text); margin-top: 1px; }

.channel-card {
  padding: var(--space-4); background: var(--surface);
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: 0 1px 2px -1px rgba(28, 25, 23, 0.08);
}
.channel-card--fallback { background: var(--surface-2); }
.channel-card__head { display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap; }
.channel-card__title { margin: 0; font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--text); }
.channel-card__badge {
  font-size: 11px; font-weight: var(--weight-medium); color: var(--accent-strong);
  background: var(--accent-soft); border-radius: var(--radius-sm, 8px);
  padding: 2px 7px; white-space: nowrap;
}
.channel-card__meta { display: flex; flex-wrap: wrap; gap: 6px; margin: var(--space-2) 0; }
.channel-chip {
  font-size: 12px; color: var(--text-muted);
  background: var(--surface-sunken); border-radius: var(--radius-sm, 8px);
  padding: 3px 8px; white-space: nowrap;
}
.channel-chip--topic { color: var(--accent-strong); }
.channel-chip--subs { font-variant-numeric: tabular-nums; }
.channel-card__reason { margin: var(--space-2) 0 0; font-size: var(--text-sm); color: var(--text); }
.channel-card__about { margin: 6px 0 0; font-size: var(--text-sm); color: var(--text-muted); line-height: 1.4; }
.channel-card__actions {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  margin-top: var(--space-3);
}
/* Тач-таргет ≥44px (mobile-native): даём кнопке базовый .btn min-height (44),
 * не срезаем её до 40 — иначе кнопка «Купить рекламу» ниже тап-минимума. */
.channel-card__actions .btn { min-height: 44px; }
.channel-card__handle { font-size: 12px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.channels-scale-note {
  margin: var(--space-3) 0 0; font-size: var(--text-sm); color: var(--text-muted);
  text-align: center;
}

/* ── B2C-аналитика рынка (docs/33 слайс D): спрос + объём + соседние ниши + петли ── */
.market-slot { display: flex; flex-direction: column; gap: var(--space-4); }
.market-head { margin-top: var(--space-2); }
.market-card__body { display: flex; flex-direction: column; gap: var(--space-3); }
.market-card__lead { margin: 0; font-size: var(--text-sm); color: var(--text); line-height: var(--leading-snug); }
.market-card__stat { display: flex; align-items: baseline; gap: var(--space-2); margin: 0; }
.market-card__num { font-size: var(--text-2xl); font-weight: var(--weight-bold); color: var(--accent-strong); }
.market-card__cap { font-size: var(--text-sm); color: var(--text-muted); }
.market-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-2); }
.market-metric { display: flex; flex-direction: column; gap: 2px; align-items: center; text-align: center;
  padding: var(--space-3) var(--space-2); background: var(--surface-sunken, var(--bg)); border-radius: var(--radius-md); }
.market-metric__val { font-size: var(--text-lg); font-weight: var(--weight-bold); color: var(--text); font-variant-numeric: tabular-nums; }
.market-metric__cap { font-size: var(--text-2xs); color: var(--text-muted); line-height: var(--leading-tight); }
.market-adjacent { display: flex; flex-direction: column; gap: var(--space-3); }
.market-adjacent__row { display: flex; flex-direction: column; gap: var(--space-2);
  padding: var(--space-3); background: var(--surface-sunken, var(--bg)); border-radius: var(--radius-md); }
.market-adjacent__info { display: flex; flex-direction: column; gap: 2px; }
.market-adjacent__title { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text); }
.market-adjacent__reason { font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }
.market-action { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-1); }
.market-action__cap { font-size: var(--text-xs); color: var(--text-muted); }
.market-action__cta, .market-adjacent__cta { align-self: flex-start; min-height: 44px; }

/* ═══════════════════════ Веб-вход через бота (docs/35 S2) ═══════════════════════ */
/* Экран «Войти через Telegram» — показывается ТОЛЬКО в обычном браузере вне TG при
 * отсутствии токена/сессии. На время входа хром (шапка/таб-бар) скрыт (is-weblogin). */
body.is-weblogin .topbar,
body.is-weblogin .topbar__nav { display: none !important; }

.weblogin {
  min-height: 100dvh;
  display: flex; align-items: center; justify-content: center;
  padding: var(--space-6) var(--space-4) calc(var(--space-8) + env(safe-area-inset-bottom));
}
.weblogin__card {
  width: 100%; max-width: 380px;
  display: flex; flex-direction: column; align-items: center; gap: var(--space-4);
  text-align: center;
  padding: var(--space-7) var(--space-5);
  background: var(--glass-bg-strong);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat));
  border: 1px solid var(--glass-stroke);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-glass), inset 0 1px 0 var(--glass-hi);
}
.weblogin__card--msg { gap: var(--space-3); }
.weblogin__brand {
  width: 52px; height: 52px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-lg);
  background: var(--accent-soft); color: var(--accent-strong);
}
.weblogin__brand-ic { width: 28px; height: 28px; }
.weblogin__icon {
  width: 48px; height: 48px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-lg); background: var(--surface-2, var(--surface)); color: var(--text-muted);
}
.weblogin__icon .icon { width: 26px; height: 26px; }
.weblogin__title {
  margin: 0; font-size: var(--text-xl); font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-tight); color: var(--text);
}
.weblogin__hint {
  margin: 0; font-size: var(--text-sm); color: var(--text-muted);
  line-height: var(--leading-snug); max-width: 30ch;
}
.weblogin__qr {
  padding: var(--space-3); background: #ffffff;
  border-radius: var(--radius-lg); border: 1px solid var(--border);
  line-height: 0; box-shadow: 0 2px 10px -4px rgba(28, 25, 23, 0.18);
}
.weblogin__qr svg { display: block; width: 208px; height: 208px; }
.weblogin__open { width: 100%; min-height: 46px; }
.weblogin__status {
  display: inline-flex; align-items: center; gap: var(--space-2);
  margin: 0; font-size: var(--text-sm); color: var(--text-muted);
}
.weblogin__dot {
  width: 8px; height: 8px; flex: none; border-radius: 50%;
  background: var(--accent-strong);
  animation: weblogin-pulse 1.4s ease-in-out infinite;
}
.weblogin__status.is-ok .weblogin__dot { background: var(--success, #3a9d5d); animation: none; }
.weblogin__status.is-ok .weblogin__status-text { color: var(--success, #3a9d5d); font-weight: var(--weight-semibold); }
@keyframes weblogin-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.35; transform: scale(0.7); } }
@media (prefers-reduced-motion: reduce) { .weblogin__dot { animation: none !important; } }
.weblogin__ttl { margin: 0; font-size: var(--text-xs); color: var(--text-faint); }
.weblogin__ttl-val { font-variant-numeric: tabular-nums; font-weight: var(--weight-semibold); color: var(--text-muted); }
.weblogin__linkrow {
  width: 100%; display: flex; align-items: center; gap: var(--space-2);
  padding-top: var(--space-2); border-top: 1px solid var(--border);
}
.weblogin__linktext {
  flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: var(--text-2xs); color: var(--text-faint);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace; text-align: left;
}
.weblogin__copy {
  flex: none; display: inline-flex; align-items: center; gap: 4px;
  padding: 6px var(--space-2); border-radius: var(--radius-md);
  background: var(--surface); border: 1px solid var(--border); color: var(--text-muted);
  font: inherit; font-size: var(--text-xs); cursor: pointer;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent;
}
.weblogin__copy .icon { width: 15px; height: 15px; }
.weblogin__copy:active { background: var(--surface-hover); }
@media (hover: hover) and (pointer: fine) { .weblogin__copy:hover { background: var(--surface-hover); color: var(--text); } }

/* ═══════════════════════ S3: адаптив-десктоп (только вне Telegram) ═══════════════════════ */
/* На широком экране (≥900px) в БРАУЗЕРЕ (body.is-browser) кабинет = центр-колонка +
 * боковая навигация (тот же DOM .topbar__nav / .nav-link — только CSS-раскладка).
 * Мобильный (<900px) и Telegram-webview НЕ трогаем: правила строго под гейтом. */
@media (min-width: 900px) {
  /* Контент — центр-колонка, сдвинутая вправо от sidebar (256px = 216 sidebar + поля).
   * margin auto центрирует в оставшемся пространстве; снизу — десктоп-паддинг (не под таб-бар). */
  body.is-browser #app.app {
    max-width: 820px;
    margin: 0 auto 0 256px;
    padding: var(--space-7) var(--space-6) var(--space-8);
  }
  /* Шапка выравнивается по той же колонке (учёт ширины sidebar). */
  body.is-browser .topbar { padding-left: 256px; }
  body.is-browser .topbar__inner { max-width: 820px; margin: 0 auto; }

  /* Нижний таб-бар → вертикальный sidebar слева (fixed колонка). Тот же DOM. */
  body.is-browser .topbar__nav {
    left: 16px; right: auto; top: 88px; bottom: auto;
    width: 216px; max-width: none;
    flex-direction: column; align-items: stretch; justify-content: flex-start;
    gap: 4px; padding: var(--space-3);
    border-radius: var(--radius-lg);
  }
  body.is-browser .nav-link {
    flex: none; flex-direction: row; align-items: center; justify-content: flex-start;
    gap: var(--space-3); padding: 11px var(--space-3);
    text-align: left; border-radius: var(--radius-md);
  }
  body.is-browser .nav-link .icon { width: 20px; height: 20px; }
  body.is-browser .nav-link__text { font-size: var(--text-md); letter-spacing: normal; max-width: none; }
  body.is-browser .nav-link.is-active .icon { transform: none; }
  /* nav-badge (счётчики) сдвигаем к правому краю строки sidebar. */
  body.is-browser .nav-link .nav-badge { margin-left: auto; }
}

/* Очень широкий экран — колонку центрируем в пространстве ПРАВЕЕ sidebar
 * (sidebar остаётся фиксированным слева, контент не наезжает). */
@media (min-width: 1280px) {
  body.is-browser #app.app { margin-right: 256px; }
}
