/* NikPulse 2 — интерфейс приложения */
:root, :root[data-theme="dark"]{
  color-scheme:dark; /* нативные контролы (селекты, date, скроллбары) — тёмные */
  --bg:#101114; --panel:#1a1c21; --panel2:#15171c; --line:#2c2f37;
  --text:#f2f3f5; --muted:#9aa0ab; --accent:#4f7cff; --accent-d:#3f66d8;
  --green:#4ade80; --red:#f87171;
  /* производные (перекрашиваются вместе с темой) */
  --card-shadow:0 1px 3px rgba(0,0,0,.35);
  --row-b:#24272e;                 /* тонкая внутренняя граница строк таблиц */
  --accent-soft:#20304f; --accent-soft-tx:#cdd8ff;   /* активный чип / тег «кто» */
  --chip-alt-line:#3a4a6b;
  --paid-bg:#14201a; --paid-line:#245a3a;
  --cat-bg:#1d2a20; --cat-line:#2f5a3c; --cat-tx:#bfe6cc;
  --src-bg:#241f2e; --src-line:#4a3a5e; --src-tx:#d9cdea;
  --warn:#c9a94f; --warn-bg:rgba(201,169,79,.12); --warn-line:#5a4a2a; --warn-tx:#e6d29a;
  --toast-bg:#1f2937; --toast-err:#7f1d1d; --del-bg:#7f1d1d; --del-bg-h:#991b1b;
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#f5f6f8; --panel:#ffffff; --panel2:#f0f1f4; --line:#e2e5ea;
  --text:#16181d; --muted:#667085; --accent:#3b6cf0; --accent-d:#2f57cc;
  --green:#149a52; --red:#d92d20;
  --card-shadow:0 1px 3px rgba(16,24,40,.08);
  --row-b:#eceef2;
  --accent-soft:#e6edfd; --accent-soft-tx:#28468f;
  --chip-alt-line:#b9c4e0;
  --paid-bg:#eafaf0; --paid-line:#a9e0c0;
  --cat-bg:#eaf7ef; --cat-line:#bfe6cc; --cat-tx:#1a7a44;
  --src-bg:#f1ecf9; --src-line:#d9cdea; --src-tx:#6b4aa0;
  --warn:#b7791f; --warn-bg:#fdf5e6; --warn-line:#f0d9a8; --warn-tx:#8a5a12;
  --toast-bg:#1f2937; --toast-err:#b42318; --del-bg:#d92d20; --del-bg-h:#b42318;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--text)}
.app{max-width:1080px;margin:0 auto;padding:16px}
/* Тонкие тёмные скроллбары вместо системных серых. */
*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:var(--muted)}
::-webkit-scrollbar-track{background:transparent}
/* Лёгкий fade при перерисовке вкладки. */
#view{animation:np-fade .12s ease-out}
@keyframes np-fade{from{opacity:0}to{opacity:1}}
/* Формы ввода остаются узкими; списки/таблицы — на всю ширину контейнера. */
.form-narrow{max-width:560px}
/* Шапка липкая: не уезжает под статус-бар; лого не прилипает к верху. */
.app-top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:var(--bg);padding:calc(16px + env(safe-area-inset-top,0px)) 2px 14px}
.brand{display:flex;align-items:center;gap:9px;font-size:19px;font-weight:800;letter-spacing:-.2px}
.brand>span span{color:var(--accent)}
.brand .logo{width:26px;height:26px;flex:0 0 auto;border-radius:8px;display:block}
.who{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:10px;white-space:nowrap}
.who a{color:var(--accent);text-decoration:none}
.theme-toggle{background:var(--panel);border:1px solid var(--line);border-radius:9px;width:34px;height:34px;
  font-size:16px;line-height:1;cursor:pointer;color:var(--text);display:inline-flex;align-items:center;justify-content:center}
.theme-toggle:hover{border-color:var(--accent)}

.app-tabs{position:sticky;top:calc(56px + env(safe-area-inset-top,0px));z-index:19;background:var(--bg);display:flex;gap:6px;overflow-x:auto;padding-bottom:12px}
.app-tabs button{
  flex:0 0 auto;padding:9px 15px;border:1px solid var(--line);background:var(--panel);
  color:var(--muted);border-radius:10px;font:600 14px inherit;cursor:pointer;font-family:inherit;
}
.app-tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}
.app-tabs button:disabled{opacity:.45;cursor:default}

/* Лиды */
.leads-search{position:sticky;top:0;background:var(--bg);padding:6px 0 12px;z-index:5}
.leads-search input{
  width:100%;padding:14px 16px;border-radius:12px;background:var(--panel);
  border:1.5px solid var(--line);color:var(--text);font-size:17px;outline:none;
}
.leads-search input:focus{border-color:var(--accent)}
/* Чипы: на мобиле — одна строка с горизонтальным скроллом (не переносятся). */
.chips{display:flex;gap:8px;margin-top:10px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}
.chips::-webkit-scrollbar{display:none}
@media(min-width:700px){.chips{flex-wrap:wrap;overflow:visible}}
.chip{flex:0 0 auto;padding:7px 13px;border:1px solid var(--line);background:var(--panel);color:var(--muted);
  border-radius:20px;font:600 13px inherit;cursor:pointer;font-family:inherit;white-space:nowrap}
.chip.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-soft-tx)}
.chip.chip-alt:not(.active){border-color:var(--chip-alt-line);border-style:dashed}
.count{color:var(--muted);font-size:13px;margin:4px 2px 10px}
.count-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 2px 8px}
.count-row .count{margin:0}
.icon-btn{flex:0 0 auto;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:9px;width:34px;height:34px;font-size:16px;cursor:pointer;line-height:1}
.icon-btn:hover{border-color:var(--accent);color:var(--accent)}
.synbar{display:flex;align-items:center;gap:12px;margin:2px 0 6px;flex-wrap:wrap}
.synbar .btn.ghost{padding:8px 13px;font-size:13px}
.synbar .count{margin:0}

.lead{background:var(--panel);border:1px solid transparent;box-shadow:var(--card-shadow);border-radius:14px;padding:13px 14px;margin-bottom:10px;transition:border-color .15s,box-shadow .15s}
.lead:hover{border-color:var(--line);box-shadow:0 2px 10px rgba(0,0,0,.22)}
.lead.paid{border-color:var(--paid-line);background:var(--paid-bg)}
.lead-h{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.lead-name{font-weight:700;font-size:15px}
.lead-phone{font-size:14px;color:var(--text);white-space:nowrap;text-decoration:none}
a.lead-phone:hover{color:var(--accent)}
.lead-meta{color:var(--muted);font-size:12.5px;margin-top:3px;line-height:1.4}
.lead-ordno{color:var(--muted)}
.lead-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.lead-tag{font-size:12px;font-weight:600;padding:3px 9px;border-radius:20px;background:var(--panel2);border:1px solid var(--line);color:var(--text);white-space:nowrap}
.lead-tag.who{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-soft-tx)}
.lead-tag.cat{background:var(--cat-bg);border-color:var(--cat-line);color:var(--cat-tx)}
.lead-tag.src{background:var(--src-bg);border-color:var(--src-line);color:var(--src-tx)}
/* Товар в архиве, а лид всё равно пришёл — рекламу забыли выключить. */
.lead-tag.cat.arch{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-tx)}
.lead-act{display:flex;gap:8px;margin-top:11px;align-items:center;flex-wrap:wrap}
.lead-act input{
  width:150px;padding:10px 12px;border-radius:10px;background:var(--panel2);
  border:1.5px solid var(--line);color:var(--text);font-size:16px;outline:none;
}
.lead-act input:focus{border-color:var(--accent)}
.lead-act .unit{color:var(--muted);font-size:13px;margin-left:-4px}
.btn{padding:10px 15px;border:none;border-radius:10px;background:var(--accent);color:#fff;
  font:700 14px inherit;cursor:pointer;font-family:inherit}
.btn:active{background:var(--accent-d)}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--muted)}
a.btn{display:inline-block;text-decoration:none}
.paid-badge{color:var(--green);font-weight:700;font-size:13px}
.lead-act input.paid-date{width:auto;padding:7px 10px;font-size:13px;color-scheme:dark}
.spacer{flex:1}
.lead-act select.dept{padding:9px 11px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none;cursor:pointer}
.lead-act select.dept:focus{border-color:var(--accent)}

/* Настройки / отделы */
.set-block{background:var(--panel);border:1px solid transparent;box-shadow:var(--card-shadow);border-radius:14px;padding:18px}
.set-title{font-size:15px;font-weight:800;margin-bottom:4px;padding-left:10px;position:relative}
.set-title::before{content:"";position:absolute;left:0;top:1px;bottom:1px;width:3px;border-radius:2px;background:var(--accent)}
/* Описания секций читаемее: чуть крупнее и светлее muted. */
.set-sub{color:var(--text);opacity:.72;font-size:13px;margin-bottom:14px;line-height:1.45}
.dept-row{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.dept-row .dname{flex:1;padding:10px 12px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none}
.dept-row .dname:focus{border-color:var(--accent)}
.dept-row .dname-ro{flex:1;padding:10px 2px;font-weight:600}
.dept-row .btn.ghost{padding:9px 12px;font-size:13px}
.dept-add{display:flex;gap:8px;margin-top:12px}
.dept-add input{flex:1;padding:10px 12px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none}
.dept-add input:focus{border-color:var(--accent)}
.dept-row .cab-count{color:var(--muted);font-size:12px;white-space:nowrap}
.dept-row .dshort{width:110px;flex:0 0 auto;padding:10px 12px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none}
.dept-row .dcrm{width:140px;flex:0 0 auto;padding:10px 12px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none}
/* Ссылка своей CRM отдела (Техношторм). */
.dept-row .dcrmurl{width:230px;flex:0 0 auto;padding:10px 12px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 13px inherit;font-family:inherit;outline:none}
.dept-row .dshort:focus,.dept-row .dcrm:focus,.dept-row .dcrmurl:focus{border-color:var(--accent)}
/* Поле с мини-подписью сверху («ID Цитрус» / «ID Техношторм») — видно, к какой CRM относится. */
.fld{display:flex;flex-direction:column;gap:3px;flex:0 0 auto}
.fld>span{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);padding-left:2px}

/* Таблица команды с источниками по отделам */
#teamMgr{overflow-x:auto}
.team-table{border-collapse:collapse;width:100%;font-size:13px}
@media(max-width:640px){.team-table{min-width:520px}}
.team-table th{text-align:left;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.team-table th.src-h{text-align:center}
.team-table td{padding:5px 8px;border-bottom:1px solid var(--row-b);vertical-align:middle}
.team-table tr.owner-row td{opacity:.5}
.team-table .dname{width:100%;min-width:120px;padding:8px 10px;border-radius:8px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:inherit;font-family:inherit;outline:none}
.team-table .dname:focus{border-color:var(--accent)}
.src-cell{width:64px;text-align:center;padding:8px 6px;border-radius:8px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:inherit;font-family:inherit;outline:none}
.src-cell:focus{border-color:var(--accent)}
.team-table td.tcount,.team-table th.tcount{color:var(--muted);text-align:center;white-space:nowrap}
.team-table td.tact{white-space:nowrap}
.team-table .btn.ghost{padding:7px 10px;font-size:12px}
.la-form{display:flex;flex-direction:column;gap:8px}
.la-form select.dept-add-inp{cursor:pointer}
.dept-add-inp{width:100%;max-width:560px;padding:11px 13px;border-radius:10px;background:var(--panel);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none}
.dept-add-inp:focus{border-color:var(--accent)}

/* Кабинеты */
.cab-row{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid transparent;box-shadow:var(--card-shadow);border-radius:12px;padding:12px 14px;margin-bottom:8px;flex-wrap:wrap;transition:border-color .15s,box-shadow .15s}
.cab-row:hover{border-color:var(--line);box-shadow:0 2px 10px rgba(0,0,0,.22)}
/* Строки разметки — сеткой, чтобы селекты стояли столбиками. */
.cab-row.mk{display:grid;gap:10px 12px;align-items:center;max-width:none}
/* Сайты: домен, категория, сотрудник, комментарий в заказ, две ссылки, удалить. */
.cab-row.mk-sites{grid-template-columns:1fr 140px 115px minmax(95px,1fr) minmax(95px,1fr) minmax(95px,1fr) 32px}
/* Товары: название, цена, id в двух CRM, «в архиве», удалить. */
.cab-row.mk-cats{grid-template-columns:1fr 120px 100px minmax(100px,1fr) minmax(100px,1fr) auto 32px 32px}
/* Товар без справочника: имя, куда переносим, кнопка слияния. */
.cab-row.mk-orph{grid-template-columns:1fr minmax(160px,1fr) auto}
@media(max-width:720px){.cab-row.mk-orph{grid-template-columns:1fr}}
.cab-row.mk .ct-price{min-width:0;width:100%;text-align:right}
.cab-row.mk-forms{grid-template-columns:1fr 140px 115px minmax(95px,1fr) minmax(95px,1fr) minmax(95px,1fr) 32px}
.cab-row.mk-camps{grid-template-columns:1fr auto 180px}
.cab-row.mk .cab-person{width:auto;min-width:0}
/* Поле выбора товара с поиском (input+datalist) — выглядит как селект рядом. */
.cat-pick{cursor:text}
.cat-pick::placeholder{color:var(--muted)}
.cab-row.mk .fm-comment{min-width:0}
.cab-row.mk-camps .cab-meta{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:720px){
  .cab-row.mk{grid-template-columns:1fr 1fr}
  .cab-row.mk .cab-main{grid-column:1 / -1}
  .cab-row.mk .fm-comment{grid-column:1 / -1}
  .cab-row.mk-cats{grid-template-columns:1fr 1fr}
  .cab-row.mk .ct-price{grid-column:1}
  .cab-row.mk .row-del{grid-column:2;justify-self:end}
  .cab-row.mk-camps{grid-template-columns:1fr auto}
}
.cab-main{flex:1;min-width:0}
.cab-name{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cab-meta{color:var(--muted);font-size:12px;margin-top:2px}
.cab-person{flex:0 0 auto;padding:9px 11px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none;cursor:pointer}
.cab-person:focus{border-color:var(--accent)}
.fm-comment{flex:1;min-width:160px;padding:9px 11px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none}
.fm-comment:focus{border-color:var(--accent)}

.empty{color:var(--muted);text-align:center;padding:40px 0}
.loadmore{display:block;width:100%;margin:6px 0 20px;padding:12px;border:1px solid var(--line);
  background:var(--panel);color:var(--muted);border-radius:10px;font:600 14px inherit;cursor:pointer}

/* Импорт расхода */
.imp-card{background:var(--panel2);border:1px dashed var(--line);border-radius:14px;padding:14px 15px;margin-bottom:14px}
.imp-title{font-size:13px;font-weight:700;color:var(--text);margin-bottom:10px}
.imp-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.imp-row input[type=file]{color:var(--muted);font-size:13px;max-width:100%}
.imp-row input[type=date]{padding:9px 11px;border-radius:10px;background:var(--panel);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none}
.imp-lbl{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}
.imp-hint{color:var(--muted);font-size:12px;margin-top:8px;line-height:1.4}
#impStatus{margin-top:10px;display:block}
/* Спам: карточка-счётчик за период + график + раскрывающиеся списки */
.sp-count-card{margin-top:12px;max-width:280px}
.sp-count-card .kval{font-size:30px}
.sp-summary{font-weight:700;font-size:15px;cursor:pointer;user-select:none;list-style:none}
.sp-summary::-webkit-details-marker{display:none}
.sp-summary::before{content:'▸ ';color:var(--muted)}
details[open]>.sp-summary::before{content:'▾ '}

.imp-days{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.imp-days>summary{color:var(--muted);font-size:13px;cursor:pointer;user-select:none}
.imp-days>summary:hover{color:var(--text)}
#impDaysList{margin-top:10px;display:flex;flex-direction:column;gap:6px;max-width:560px}
.imp-day{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 11px}
.imp-day-date{font-weight:700;font-size:13px;white-space:nowrap}
.imp-day-meta{color:var(--muted);font-size:12px;flex:1}
.imp-day-del{padding:6px 11px;font-size:12px}

/* Обзор */
.ov-controls{margin-bottom:14px}
/* Секции под якорной лентой (Итоги/Разрезы + блоки аналитики): при переходе по чипу
   заголовок не должен уезжать под липкую шапку+табы+ленту. */
#ovTotals,#ovCuts,.an-block[id]{scroll-margin-top:165px}
.ov-row{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.ov-row input[type=date],.ov-row select{
  padding:9px 11px;border-radius:10px;background:var(--panel);border:1.5px solid var(--line);
  color:var(--text);font:600 14px inherit;font-family:inherit;outline:none;
}
.ov-row select{cursor:pointer}
.ov-row .dash{color:var(--muted)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.kcard{background:var(--panel);border:1px solid transparent;box-shadow:var(--card-shadow);border-radius:14px;padding:14px 15px}
.klabel{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px}
/* Всегда одна строка: длинные значения ужимает fitKvals() в JS. */
.kval{font-size:26px;font-weight:800;letter-spacing:-.5px;white-space:nowrap;overflow:hidden}
.kdelta{font-size:12px;font-weight:700;margin-top:6px}
.kdelta.pos{color:var(--green)}
.kdelta.neg{color:var(--red)}
.kval.pos{color:var(--green)}
.kval.neg{color:var(--red)}
.ov-lbl{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}
.range-btn{padding:9px 13px;border-radius:10px;background:var(--panel);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.range-btn:hover{border-color:var(--accent)}
.range-btn .cal{opacity:.8}

/* Пикер диапазона */
.range-pop{position:absolute;z-index:60;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.5);padding:12px;max-width:calc(100vw - 16px)}
.rp-body{display:flex;gap:14px;flex-wrap:wrap}
.rp-presets{display:flex;flex-direction:column;gap:4px;min-width:150px}
.rp-preset{text-align:left;padding:9px 12px;border:none;background:transparent;color:var(--text);border-radius:9px;font:600 13px inherit;font-family:inherit;cursor:pointer}
.rp-preset:hover{background:var(--panel2)}
.rp-preset.active{background:var(--accent);color:#fff}
.rp-cals{position:relative}
.rp-nav{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;pointer-events:none}
.rp-nav button{pointer-events:auto;width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--text);cursor:pointer;font-size:16px;line-height:1}
.rp-months{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start}
.rp-month{width:224px}
.rp-mtitle{text-align:center;font-weight:700;font-size:13px;margin-bottom:8px}
/* Шапка дней недели — отдельный грид; ряды дат жёстко 30px и прижаты кверху,
   чтобы растяжение контейнера не разносило недели по высоте. */
.rp-wdrow{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:2px}
.rp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;grid-auto-rows:30px;align-content:start}
.rp-wd{color:var(--muted);font-size:11px;text-align:center;padding:2px 0}
.rp-day{height:30px;border:none;background:transparent;color:var(--text);border-radius:8px;font:600 13px inherit;font-family:inherit;cursor:pointer}
.rp-day.empty{visibility:hidden}
.rp-day:hover{background:var(--panel2)}
.rp-day.inrange{background:var(--accent-soft);border-radius:0}
.rp-day.pick{background:var(--accent);color:#fff}
.rp-foot{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.rp-sel{color:var(--muted);font-size:13px}
.rp-spacer{flex:1}
.rp-foot .btn{padding:8px 14px;font-size:13px}

/* ---- Аналитика ---- */
.an-block{background:var(--panel);border:1px solid transparent;box-shadow:var(--card-shadow);border-radius:14px;padding:16px;margin-bottom:14px}
.an-title{font-size:15px;font-weight:800;margin-bottom:6px;padding-left:10px;position:relative}
.an-title::before{content:"";position:absolute;left:0;top:1px;bottom:1px;width:3px;border-radius:2px;background:var(--accent)}
.an-targets{display:inline-flex;gap:12px;flex-wrap:wrap;margin-left:8px}
.an-tg{width:64px;padding:7px 9px;border-radius:9px;background:var(--panel);border:1.5px solid var(--line);color:var(--text);font:600 13px inherit;font-family:inherit;outline:none}
.an-tg:focus{border-color:var(--accent)}
.an-cards{margin-bottom:10px}
.an-verdict{border-radius:10px;padding:10px 13px;font-size:13px;line-height:1.45;margin-bottom:10px;background:var(--panel2);border:1px solid var(--line)}
.an-verdict.bad{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-tx)}
.an-verdict.good{background:var(--cat-bg);border-color:var(--cat-line);color:var(--cat-tx)}
.an-split-ind{display:inline-block;border-radius:10px;padding:9px 13px;font-size:14px;background:var(--panel2);border:1px solid var(--line)}
.an-split-ind.good{background:var(--cat-bg);border-color:var(--cat-line);color:var(--cat-tx)}
.an-split-ind.bad{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-tx)}
.an-sub{color:var(--muted);font-size:12.5px;margin-top:10px;line-height:1.45}
.an-line{font-size:13px;padding:5px 0;border-bottom:1px solid var(--row-b);display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.an-line:last-child{border-bottom:none}
.neg-tx{color:var(--red)}
.pos-tx{color:var(--green)}
/* Матрица и недельные ДРР: цвет ячейки по целям. */
.an-mx-wrap{overflow-x:auto}
/* Колонок много (все товары с расходом), поэтому ширина — по заголовку, а не
   «сколько влезет»: имена товаров и значения не переносятся, таблица скроллится. */
/* Селекторы с .ovp-table — иначе базовое table-layout:fixed (объявлено ниже)
   пересиливает и все колонки схлопываются в равные узкие полоски. */
.ovp-table.an-mx{table-layout:auto;min-width:640px;width:auto}
.ovp-table.an-mx th,.ovp-table.an-mx td{white-space:nowrap;min-width:104px}
.ovp-table.an-mx .an-nosale .an-drr{white-space:nowrap}
/* Первая колонка (сотрудник/товар) закреплена при прокрутке вбок. */
.ovp-table.an-mx th:first-child,.ovp-table.an-mx td:first-child{
  position:sticky;left:0;z-index:2;background:var(--panel);min-width:150px;width:auto;
  box-shadow:1px 0 0 var(--line)}
.ovp-table.an-mx thead th:first-child{z-index:4}
.an-person{font-weight:700;white-space:nowrap}
.an-cell{text-align:center!important}
.an-cell .an-drr{font-weight:800;font-size:13px}
.an-cell .an-mini{color:var(--muted);font-size:10.5px;margin-top:2px;white-space:nowrap}
.an-good{background:rgba(74,222,128,.14)}.an-good .an-drr{color:var(--green)}
.an-mid{background:rgba(201,169,79,.13)}.an-mid .an-drr{color:var(--warn)}
.an-bad{background:rgba(248,113,113,.13)}.an-bad .an-drr{color:var(--red)}
.an-null .an-drr{color:var(--muted)}
.an-nosale{background:rgba(155,110,230,.16)}.an-nosale .an-drr{color:#b791f0;font-size:11px}
.an-empty{color:var(--line)}
td.num.an-cell{text-align:right!important}
/* Кампании: переключатель разрезов + таблица «сотрудник / кабинет / кампания». */
.an-cmp-chips,.an-pg-chips{margin:2px 0 10px}
/* Архив: «кабинет забанен» / «товар больше не льём». */
.arc-lbl{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);white-space:nowrap;cursor:pointer}
.arc-lbl input{width:auto;margin:0;cursor:pointer}
.arc-row .cab-name,.arc-row .dname,.arc-row .dname-ro{opacity:.55;text-decoration:line-through}
.an-arch-note{margin:-4px 0 12px}
.an-warn-block .an-title{color:var(--warn-tx)}
.an-warn-block .an-title::before{background:var(--warn)}
/* Ручная ширина колонок: правый край заголовка — «ручка», при перетаскивании
   не выделяем текст и держим курсор col-resize на всей странице. */
.ovp-table[data-rz] th{position:relative}
.ovp-table[data-rz] th::after{content:"";position:absolute;top:6px;right:0;bottom:6px;width:1px;background:var(--line);opacity:.7}
.ovp-table[data-rz] th:last-child::after{display:none}
body.rz-active{cursor:col-resize!important;user-select:none}
body.rz-active *{cursor:col-resize!important}
.an-cmp-table th:first-child,.an-cmp-table td:first-child{width:14%}
.an-cmp-table th:nth-child(2),.an-cmp-table td:nth-child(2){width:16%}
.an-cmp-table td.an-cmpname{font-weight:600}
@media(max-width:699px){.an-cmp-table th:nth-child(2),.an-cmp-table td:nth-child(2){width:auto}}
/* «Стоит включить»: сотрудник+кабинет в одной ячейке, имя кампании — как можно шире,
   заголовки столбцов — в одну строку (поэтому шрифт и отступы чуть меньше). */
.an-paused th{white-space:nowrap;font-size:11.5px;padding-left:7px;padding-right:7px}
.an-paused td{padding-left:7px;padding-right:7px}
.an-paused td.an-cmpname{font-weight:600}
.an-paused th:first-child,.an-paused td:first-child{width:14%}
.an-paused th:nth-child(2),.an-paused td:nth-child(2){width:26%}
.an-paused th:nth-child(3),.an-paused td:nth-child(3){width:10%}
.an-cmp-who{font-weight:600}
.an-cmp-cab{color:var(--muted);font-size:11px;margin-top:2px}
@media(max-width:699px){
  .an-paused th:first-child,.an-paused td:first-child,
  .an-paused th:nth-child(2),.an-paused td:nth-child(2),
  .an-paused th:nth-child(3),.an-paused td:nth-child(3){width:auto}
  .an-paused td.an-cmpname{min-width:220px}
}
/* Тепловая карта часов. */
.an-heat-wrap{overflow-x:auto}
.an-heat{border-collapse:collapse;font-size:10.5px;min-width:760px}
.an-heat th{color:var(--muted);font-weight:600;padding:3px 4px;text-align:center}
.an-heat td{width:28px;height:24px;text-align:center;border-radius:4px;border:2px solid var(--panel);font-weight:600}
.an-stale{border-color:var(--warn-line);background:var(--warn-bg)}
.an-stale .ld-num{color:var(--warn)}
/* Переключатель разреза в «Сменах менеджеров» и в «Статусах заказов». */
.an-sh-chips,.an-st-chips{margin:2px 0 10px}
/* Спам: карточка номера с историей заявок и действиями. */
.sp-hit{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px}
.sp-hit-blocked{opacity:.7}
.sp-hit-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sp-hit-main{flex:1;min-width:180px}
.sp-hit-head .btn{padding:7px 11px;font-size:12.5px}
.sp-hit-body{margin-top:10px;border-top:1px solid var(--row-b);padding-top:8px}
.sp-try{display:grid;grid-template-columns:130px 1fr 150px auto;gap:8px;align-items:center;
  padding:6px 0;border-bottom:1px solid var(--row-b);font-size:12.5px}
.sp-try:last-child{border-bottom:none}
.sp-try-when{color:var(--muted);white-space:nowrap}
.sp-try-what{font-weight:600;overflow:hidden;text-overflow:ellipsis}
.sp-try-why{color:var(--muted)}
.sp-try .btn{padding:5px 10px;font-size:12px}
@media(max-width:699px){.sp-try{grid-template-columns:1fr auto}.sp-try-why{grid-column:1/-1}}
/* Учётные записи: модалка с правами (разделы + проекты). */
.us-modal{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.us-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px;width:100%;max-width:520px;max-height:90vh;overflow:auto}
.us-grid{display:grid;gap:10px;margin-top:12px}
.us-grid .ov-lbl{display:grid;gap:6px;justify-items:start}
.us-grid .tu-inp{width:100%}
.us-checks{display:flex;flex-wrap:wrap;gap:10px 18px}
.us-foot{display:flex;align-items:center;gap:10px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line);flex-wrap:wrap}
/* Переключатель проектов в шапке: у каждого проекта своя база. */
.proj-sel{padding:7px 10px;border-radius:9px;background:var(--panel);border:1px solid var(--line);
  color:var(--text);font:700 13px inherit;font-family:inherit;cursor:pointer;outline:none;max-width:170px}
.proj-sel:hover{border-color:var(--accent)}

/* Лиды по отделам: счёт заявок и доля от всех лидов периода. */
.ov-leaddepts{margin-top:14px}
.ld-title{font-weight:700;font-size:14px;margin-bottom:8px}
.ld-row{display:flex;gap:10px;flex-wrap:wrap}
.ld-item{display:flex;align-items:baseline;gap:9px;background:var(--panel);border:1px solid transparent;box-shadow:var(--card-shadow);border-radius:12px;padding:10px 14px}
.ld-name{color:var(--muted);font-size:13px;font-weight:600}
.ld-num{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums}
.ld-pct{color:var(--accent-soft-tx);background:var(--accent-soft);border-radius:14px;padding:2px 8px;font-size:12px;font-weight:700}

/* Выручка по отделам */
.ov-depts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:14px}
.ov-dept{border-radius:14px;padding:14px 16px;color:#fff}
.ov-dept-name{font-size:13px;font-weight:600;opacity:.95}
.ov-dept-val{font-size:24px;font-weight:800;margin-top:6px;letter-spacing:-.3px}

/* Графики — всегда друг под другом, во всю ширину блока */
.ov-charts{display:grid;grid-template-columns:1fr;gap:12px;margin-top:14px}
.ov-chart-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 15px}
.ov-chart-title{font-weight:700;font-size:14px;margin-bottom:10px}
.ov-chart{overflow-x:auto}
.ov-svg{display:block;width:100%;max-width:100%;height:auto}
.ov-grid{stroke:var(--line);stroke-width:1}
.ov-ytick{fill:var(--muted);font-size:10px}
.ov-xlabel{fill:var(--muted);font-size:10px}
.ov-vlabel{fill:var(--text);font-size:9px;font-weight:600}
.ov-target{stroke:var(--green);stroke-width:1.2;stroke-dasharray:4 3;opacity:.8}
.ov-target-tx{fill:var(--green);font-size:9px;font-weight:700}

/* Разрезы Обзора: один блок с переключателями */
.ov-cuts{margin-top:16px}
.ov-cut-chips{margin-bottom:10px}
.ov-people-title{font-weight:700;font-size:15px;margin-bottom:10px}
.ovp-table th.ovp-th{cursor:pointer;user-select:none}
.ovp-table th.ovp-th:hover{color:var(--text)}
/* Влезает без бокового скролла: числа в одну строку, заголовки/названия переносятся;
   не более ~10 строк по высоте (задаётся из JS), дальше вертикальный скролл; шапка закреплена. */
.ov-people-wrap{overflow:auto;background:var(--panel);box-shadow:var(--card-shadow);border-radius:14px}
.ovp-table{border-collapse:collapse;width:100%;font-size:12.5px;table-layout:fixed}
.ovp-table th{text-align:left;color:var(--muted);font-weight:600;padding:9px 9px;border-bottom:1px solid var(--line);white-space:normal;vertical-align:bottom;position:sticky;top:0;background:var(--panel);z-index:1}
.ovp-table td{padding:9px 9px;border-bottom:1px solid var(--row-b);white-space:normal;word-break:break-word}
.ovp-table td.num,.ovp-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.ovp-table td.num{white-space:nowrap}
.ovp-table th:first-child,.ovp-table td:first-child{width:20%}
.ovp-table tbody tr:last-child td{border-bottom:none}
/* Мобила: не ужимаем 9 колонок в 375px, а даём скролл; имя закреплено слева. */
@media(max-width:699px){
  .ovp-table{table-layout:auto;min-width:640px}
  .ovp-table th:first-child,.ovp-table td:first-child{width:auto;position:sticky;left:0;background:var(--panel);box-shadow:1px 0 0 var(--line)}
  .ovp-table th:first-child{z-index:3}
  .ovp-table tfoot td:first-child{background:var(--panel2)}
}
.ovp-table tr.ovp-rest td{color:var(--muted)}
.ovp-table td.pos{color:var(--green);font-weight:700}
.ovp-table td.neg{color:var(--red);font-weight:700}

/* Пополнения */
.tu-inp{padding:10px 12px;border-radius:10px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:600 14px inherit;font-family:inherit;outline:none;width:150px}
.tu-inp:focus{border-color:var(--accent)}
.tu-table{border-collapse:collapse;width:100%;font-size:13px}
@media(max-width:640px){.tu-table{min-width:560px}}
.tu-table th{text-align:left;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.tu-table td{padding:7px 10px;border-bottom:1px solid var(--row-b);vertical-align:middle}
.tu-table td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.tu-table th:nth-child(3),.tu-table th:nth-child(4){text-align:right}
.tu-cell{padding:8px 10px;border-radius:8px;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font:inherit;font-family:inherit;outline:none}
.tu-cell.rub{width:120px}
.tu-cell.com{width:100%;min-width:180px}
.tu-cell:focus{border-color:var(--accent)}
.tu-del{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:8px;width:32px;height:32px;cursor:pointer;font-size:14px}
.tu-del:hover{border-color:var(--red);color:var(--red)}
.ov-note{color:var(--muted);font-size:12px;margin-top:14px;line-height:1.5}

.toast{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:var(--toast-bg);color:#fff;
  padding:10px 16px;border-radius:10px;font-size:14px;opacity:0;transition:opacity .2s;z-index:50;box-shadow:0 6px 20px rgba(0,0,0,.4);
  display:flex;align-items:center;gap:12px;max-width:calc(100vw - 24px)}
.toast.show{opacity:.97}
.toast.err{background:var(--toast-err)}
/* Ошибки — вверху: внизу на мобиле их закрывает клавиатура при вводе суммы. */
.toast.top{top:calc(16px + env(safe-area-inset-top,0px));bottom:auto}
/* На десктопе — правый нижний угол, не по центру (в т.ч. ошибки: клавиатуры нет). */
@media(min-width:700px){.toast{left:auto;right:20px;transform:none}.toast.top{left:auto;right:20px;top:auto;bottom:16px}}
.toast-undo,.toast-x{background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;border-radius:8px;
  font-family:inherit;cursor:pointer;flex:0 0 auto}
.toast-undo{padding:5px 10px;font:600 13px inherit}
.toast-x{width:24px;height:24px;padding:0;font-size:14px;line-height:1}

/* ---- Правки UX (сигналы, история, мобилка) ---- */
/* Чип с красной точкой при наличии проблем (Не в CRM / Спам). */
.chip.has-alert:not(.active){border-color:var(--red);border-style:solid;color:var(--red)}
.chip.has-alert::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red);margin-right:6px;vertical-align:middle}
/* Пометка «не дошёл до CRM» в карточке лида. */
.lead-fail{color:var(--red);font-weight:700}
/* История номера. */
.lead-hist{color:var(--warn);font-size:12px;margin-top:3px}
/* Разделитель дней в списке лидов. */
.lead-day{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin:14px 2px 8px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.lead-day:first-child{margin-top:2px}
/* Индикатор поиска: бегущий блик в поле поиска, пока грузится список. */
.leads-search.searching input{background-image:linear-gradient(90deg,transparent,rgba(79,124,255,.25),transparent);background-size:200% 100%;animation:np-load 1s linear infinite}
@keyframes np-load{0%{background-position:200% 0}100%{background-position:-200% 0}}
/* Бейдж «неразмечено» и подсветка строк без категории/сотрудника. */
.sf-badge{color:var(--warn);font-size:13px;font-weight:600;margin-left:8px}
.cab-row.sf-unmarked{border-color:var(--warn-line);background:var(--warn-bg)}
/* Плашка «расход не загружен» в Обзоре. */
.ov-warn{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn-tx);border-radius:12px;
  padding:11px 14px;font-size:13px;line-height:1.45;margin-bottom:12px}
.ov-warn-go{margin-left:8px;background:var(--warn);border:none;color:#1a1200;border-radius:8px;padding:5px 11px;font:700 13px inherit;font-family:inherit;cursor:pointer}
/* Строка «Итого» в таблицах разрезов (закреплена снизу). */
.ovp-table tfoot td{position:sticky;bottom:0;background:var(--panel2);border-top:2px solid var(--line);
  border-bottom:none;font-weight:800;padding:9px;font-variant-numeric:tabular-nums}
.ovp-table tfoot td.num{text-align:right;white-space:nowrap}
/* Пикер периода на узком экране: один месяц, пресеты — лентой чипов. */
.rp-body.narrow{flex-direction:column;gap:10px}
.rp-body.narrow .rp-presets{flex-direction:row;flex-wrap:wrap;min-width:0}
/* Диагностика. */
.diag-t{border-collapse:collapse;width:100%;font-size:13px}
.diag-t td{padding:7px 6px;border-bottom:1px solid #24272e}
.diag-t .diag-k{color:var(--muted);white-space:nowrap;width:48%}
.diag-t .diag-v{text-align:right;font-variant-numeric:tabular-nums;word-break:break-word}
.diag-t .diag-v.warn{color:var(--red);font-weight:700}

/* ---- Редизайн: сохранение на blur, ✕-удаление, якоря настроек, справочник ---- */
:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
/* Зелёная вспышка рамки поля при сохранении на change/blur (без тоста на каждый чих). */
.saved-flash{border-color:var(--green)!important;box-shadow:0 0 0 2px rgba(20,154,82,.25);transition:box-shadow .15s,border-color .15s}
/* Иконка-крестик удаления строки (вместо серого прямоугольника «Удалить»). */
.row-del{flex:0 0 auto;border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:8px;
  width:32px;height:32px;cursor:pointer;font-size:14px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.row-del:hover{border-color:var(--red);color:var(--red)}
/* Якоря-чипы навигации по Настройкам (липкие под шапкой, активная секция подсвечена). */
.set-anchors{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin-bottom:12px;position:sticky;top:calc(104px + env(safe-area-inset-top,0px));z-index:15;background:var(--bg);padding:6px 0}
.set-anchors::-webkit-scrollbar{display:none}
.set-anchors a{flex:0 0 auto;padding:6px 12px;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:20px;font:600 13px inherit;text-decoration:none;white-space:nowrap}
.set-anchors a:hover{border-color:var(--accent);color:var(--text)}
.set-anchors a.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-soft-tx)}
/* Подменю «Обзора»: прижато к ленте вкладок и отчёркнуто снизу — читается как
   разделы текущей вкладки, а не как второй ряд табов. */
.set-anchors.ov-subnav{margin:0 0 18px;padding:6px 0 12px;border-bottom:1px solid var(--line)}
.set-anchors.ov-subnav a{padding:5px 11px;border-radius:9px;font-size:12.5px}
/* Липкие подвкладки «Сайты/Формы/Кампании». */
#sfTabs{position:sticky;top:calc(104px + env(safe-area-inset-top,0px));z-index:14;background:var(--bg);padding-top:6px}
details.set-block>summary{list-style:none;cursor:pointer;font-size:15px;font-weight:800;display:flex;align-items:center;gap:9px;padding:4px 8px 4px 10px;margin:-4px -8px -4px -10px;border-radius:8px;position:relative}
details.set-block>summary::-webkit-details-marker{display:none}
details.set-block>summary:hover{background:var(--panel2)}
/* Chevron слева — очевидно, что раскрывашка. */
details.set-block>summary::before{content:"▸";color:var(--accent);font-size:12px;width:12px;display:inline-block;transition:transform .12s}
details.set-block[open]>summary::before{transform:rotate(90deg)}
details.set-block[open]>summary{margin-bottom:12px}
/* Справочники: отделы + категории в две колонки на широком экране. */
.dict-grid{display:grid;grid-template-columns:1fr;gap:24px}
@media(min-width:720px){.dict-grid{grid-template-columns:repeat(2,minmax(320px,1fr))}}
.dict-h{font-size:13px;font-weight:700;color:var(--muted);margin-bottom:8px}
/* Кнопка копирования секретной ссылки sources.php. */
.src-copy-note{color:var(--muted);font-size:12px;margin-top:6px}
/* Компактная строка кампании/справочника: селект в одну строку с названием. */
.cab-row.compact{padding:8px 12px;gap:10px}
.cab-row.compact .cab-name{font-size:13px}
.cab-row.compact .cab-meta{margin-top:1px}
/* Логотип-знак (SVG в шапке) — квадрат с градиентом. */
.brand .logo rect.bgsq{fill:url(#npg)}
/* id формы: табличные цифры; полный номер в заголовке переносится, а не режется. */
.fm-idnum{font-variant-numeric:tabular-nums}
.cab-row.mk-forms .cab-name.fm-idfull{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-all;line-height:1.3}

/* Фильтры списка лидов: сотрудник / товар / источник. */
.lead-flt{display:flex;gap:8px;margin:0 0 10px;flex-wrap:wrap}
.lead-flt select{flex:1;min-width:150px;max-width:260px;padding:8px 11px;border-radius:10px;background:var(--panel);
  border:1.5px solid var(--line);color:var(--muted);font:600 13px inherit;font-family:inherit;outline:none;cursor:pointer}
.lead-flt select:focus{border-color:var(--accent)}
/* Активный фильтр подсвечен — видно, что список сужен. */
.lead-flt select.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-soft-tx)}
/* Кнопка выбора даты в ряду фильтров — под стиль селектов. */
.lead-flt .lead-date{flex:0 0 auto;font:600 13px inherit;font-family:inherit;padding:8px 12px;color:var(--muted)}
.lead-flt .lead-date.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-soft-tx)}
@media(max-width:520px){.lead-flt select{min-width:calc(50% - 8px);max-width:none}.lead-flt .lead-date{flex:1 1 100%;justify-content:center}}
/* Спам «Попало в спам»: слева счётчик+период, справа график (десктоп). */
.sp-topgrid{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-start}
.sp-topgrid .sp-left{flex:0 0 260px;max-width:260px}
.sp-topgrid .sp-right{flex:1;min-width:240px}
.sp-topgrid .sp-count-card{margin-top:10px;max-width:none}
@media(max-width:640px){.sp-topgrid .sp-left{flex:1 1 100%;max-width:none}}
/* Пустое состояние с эмодзи и действиями. */
.empty .emoji{font-size:34px;display:block;margin-bottom:10px;opacity:.65}
.empty .empty-acts{display:flex;gap:8px;justify-content:center;margin-top:14px;flex-wrap:wrap}
/* Мини-подпись над полем формы (Добавить лида). */
.field{display:flex;flex-direction:column;gap:4px}
.field>label{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
/* Панель разметки: фильтр + селекты категории/сотрудника + добавить + обновить. */
.mk-bar{display:flex;gap:8px;align-items:center;margin:2px 0 10px;flex-wrap:wrap}
.mk-bar .mk-filter{flex:1;min-width:160px}
.mk-sel{flex:0 1 auto;min-width:130px;max-width:200px;padding:9px 11px;border-radius:10px;background:var(--panel);
  border:1.5px solid var(--line);color:var(--muted);font:600 13px inherit;font-family:inherit;outline:none;cursor:pointer}
.mk-sel:focus{border-color:var(--accent)}
/* Активный фильтр подсвечен, как в Лидах. */
.mk-sel.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-soft-tx)}
.mk-add-wrap{display:flex;gap:8px;margin:0 0 10px}
.mk-add-wrap .tu-inp{flex:1}

/* ---------- Сверка с выгрузкой TikTok ---------- */
/* Строка формы: кликается — фильтрует список лидов ниже. */
.mx-form{cursor:pointer}
.mx-form:hover{border-color:var(--line)}
.mx-form.bad{border-color:var(--red)}
.mx-form.act{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.mx-badge{font-size:12px;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap;
  border:1px solid var(--line);background:var(--panel2);color:var(--text)}
.mx-badge.bad{background:var(--warn-bg);border-color:var(--red);color:var(--red)}
.mx-badge.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-tx)}
.mx-badge.ok{color:var(--green)}
.mx-badge.mut{color:var(--muted)}
/* Карточка лида с чекбоксом слева. */
.mx-l{display:flex;gap:11px;align-items:flex-start}
.mx-body{flex:1;min-width:0}
.mx-l>.mx-ck{flex:0 0 auto;width:19px;height:19px;margin-top:3px;accent-color:var(--accent);cursor:pointer}
.mx-ans{color:var(--muted);font-size:12px;margin-top:6px;line-height:1.45}
/* Кнопка массовой отправки гаснет, пока ничего не выбрано. */
#mxSend:disabled{opacity:.45;cursor:default;background:var(--panel2);color:var(--muted)}
/* Кабинеты, где надо включить интеграцию: без дублей, чипами. */
.mx-cabs{margin-top:14px;padding:13px 15px}
.mx-cabs-h{font-size:13px;font-weight:700;margin-bottom:10px}
.mx-cabs-list{display:flex;flex-wrap:wrap;gap:8px}
.mx-cab{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;
  padding:5px 11px;border-radius:20px;background:var(--panel);border:1px solid var(--warn-line);color:var(--text)}
.mx-cab b{font-variant-numeric:tabular-nums;color:var(--red)}
.mx-cabs-act{display:flex;align-items:center;gap:10px;margin-top:11px}
.mx-cabs-act .btn.ghost{padding:7px 12px;font-size:12.5px;border-color:var(--warn-line)}
/* Номер неразмеченной формы на карточке — кликается, копируется в буфер. */
.lead-tag.mx-fid{cursor:pointer;font-variant-numeric:tabular-nums}
.lead-tag.mx-fid:hover{border-color:var(--warn);color:var(--text)}
/* Имя кампании в разрезе — ссылка в TikTok Ads Manager. */
.ovp-table a.ovp-link{color:inherit;text-decoration:none;border-bottom:1px dashed var(--line)}
.ovp-table a.ovp-link:hover{color:var(--accent);border-bottom-color:var(--accent)}
