:root{
  --bg:#f4f6f9; --card:#ffffff; --ink:#1e293b; --muted:#64748b;
  --line:#e5e9f0; --accent:#0ea5a4; --accent-ink:#0b7c7b;
  --shadow:0 1px 3px rgba(16,24,40,.06), 0 1px 2px rgba(16,24,40,.04);
  /* с46: производные акцента — раньше эти оттенки были захардкожены в каждом правиле,
     из-за чего вкладку нельзя было перекрасить, не тронув полсотни строк */
  --accent-tint:#e6f6f5;      /* заливка-подложка (активный пункт, шапка блока) */
  --accent-tint-h:#d9f0ef;    /* она же под курсором */
  --accent-tint2:#eefbfa;     /* самая светлая подложка */
  --accent-line:#cdeceb;      /* граница в тон акценту */
  --accent-wsub:#64748b;      /* мелкая подпись на подложке (даты недели) */
  --accent-hot:#e11d48;       /* точечный «горячий» акцент канала */
}
/* ЦВЕТ КАНАЛА (с46). Дашборд построен на ОДНОМ акценте, поэтому вкладку канала красим
   не набором частных правил, а подменой самих токенов — вся вкладка становится одноцветной,
   а геометрия, тени, радиусы и типографика остаются общими для всего дашборда.
   Ozon: фирменный синий #005BFF + малиновый #F91155 (brandlab.ozon.ru).
   Контрасты проверены: #0047CC на белом 7,6:1, на тинте 6,7:1; #3D5FA8 на тинте 5,5:1.
   Атрибут ставит switchTab по каналу вкладки — так токены достаются и элементам,
   которые живут в <body> вне панели (тост, липкая шапка матрицы).
   Будущий РНП · WB получится добавлением блока body[data-ch="wb"] с фиолетовыми значениями. */
body[data-ch="ozon"]{
  --accent:#005bff; --accent-ink:#0047cc;
  --accent-tint:#eaf1ff; --accent-tint-h:#dce8ff; --accent-tint2:#f5f8ff;
  --accent-line:#c7dcff; --accent-wsub:#3d5fa8; --accent-hot:#f91155;
}
/* с51 (аудит скина, Б3): шрифт скина «кабинет Ozon» — Onest (свободный округлый гротеск, OFL,
   вариативный, self-hosted в static/fonts — внешних загрузок нет). ПРИМЕНЯЕТСЯ только внутри
   скина (см. блок в конце файла): «Классика», РНП·WB и остальной дашборд — системный стек. */
@font-face{font-family:"Onest";src:url("/static/fonts/onest-cyrillic-wght-normal.woff2") format("woff2");
  font-weight:100 900;font-style:normal;font-display:swap;
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Onest";src:url("/static/fonts/onest-latin-wght-normal.woff2") format("woff2");
  font-weight:100 900;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;font-size:14px}

/* ---- каркас: меню слева + контент ---- */
.app{display:flex;min-height:100vh}

.sidebar{width:232px;flex-shrink:0;background:var(--card);border-right:1px solid var(--line);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.side-brand{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:baseline;gap:9px}
.brand-mark{font-weight:800;letter-spacing:.5px;color:var(--accent-ink);font-size:20px}
.brand-sub{color:var(--muted);font-size:13px}
.nav{padding:12px 10px;flex:1;overflow-y:auto}
.nav-group{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);padding:8px 12px 6px}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;color:var(--ink);
  text-decoration:none;font-size:14px;margin-bottom:2px}
.nav-ico{width:20px;text-align:center}
.nav-item:hover{background:#f1f5f9}
/* с46: подсветка активного пункта — через токен, поэтому на вкладке канала она берёт цвет
   канала (пункт «Ozon» в меню загорается фирменным синим, а не общей бирюзой) */
.nav-item.active{background:var(--accent-tint);color:var(--accent-ink);font-weight:600}
.nav-item.soon{color:#9aa6b2;cursor:default}
.nav-item.soon:hover{background:transparent}
.nav-item.soon em{margin-left:auto;font-style:normal;font-size:10px;background:#eef1f5;color:#94a3b8;
  padding:2px 7px;border-radius:20px}
/* раскрывающийся родительский пункт (напр. «Склад») + вложенные подпункты */
.nav-parent{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;color:var(--ink);
  cursor:pointer;font-size:14px;margin-bottom:2px;user-select:none}
.nav-parent:hover{background:#f1f5f9}
.nav-parent.has-active{color:var(--accent-ink);font-weight:600}
.nav-parent-label{flex:1}
.nav-caret{font-size:10px;color:#94a3b8;transition:transform .15s;flex:0 0 auto}
.nav-parent.expanded .nav-caret{transform:rotate(90deg)}
.nav-children.collapsed{display:none}
.nav-item.nav-child{padding-left:42px;font-size:13px}
.nav-subparent{padding-left:42px}                                    /* «Unit-экономика» — подпункт с вложением */
.nav-children .nav-children .nav-item.nav-child{padding-left:60px}   /* WB/Ozon — 3-й уровень */
.nav-logout{margin:10px;padding:9px 12px;text-align:center;color:var(--muted);text-decoration:none;
  border:1px solid var(--line);border-radius:9px;font-size:13px}
.nav-logout:hover{color:var(--ink);border-color:var(--muted)}

.main{flex:1;min-width:0;display:flex;flex-direction:column}

/* ---- панель фильтров ---- */
.filters{position:sticky;top:0;z-index:5;background:var(--card);border-bottom:1px solid var(--line);
  padding:12px 22px;display:flex;gap:14px;align-items:end;flex-wrap:wrap}
.fld{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.fld select{min-width:180px;max-width:260px;padding:8px 10px;border:1px solid var(--line);
  border-radius:8px;font-size:14px;color:var(--ink);background:#fff}
.fld select:focus{outline:none;border-color:var(--accent)}
.f-reset{align-self:end;padding:9px 14px;border:1px solid var(--line);background:#fff;border-radius:8px;
  color:var(--muted);font-size:13px;cursor:pointer}
.f-reset:hover{color:var(--ink);border-color:var(--muted)}

.content{padding:20px 22px 40px;max-width:var(--content-max, none)}   /* ширина — из «Настроек» (localStorage → --content-max); дефолт none = вся ширина (Vladi 04.08) */
.set-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:8px 0}
.set-label{font-weight:600;font-size:14px;color:var(--ink);min-width:150px}
.set-hint{font-size:12.5px;color:var(--muted);flex:1;min-width:220px}
/* Чат 203: «Настройки» → памятка «Дашборд на телефоне как приложение» (текст в рамке копирует кнопка) */
.set-app-lead{margin:4px 0 12px;max-width:760px}
.set-app-text{white-space:pre-line;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px 14px;
  font-size:13.5px;line-height:1.55;max-width:760px;color:var(--ink);user-select:text}
.set-app-acts{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:10px 0 14px}
.set-app-notes{margin:0;padding-left:18px;font-size:12.5px;line-height:1.5;color:var(--muted);max-width:760px}
/* Чат 203: «Настройки» → «Уведомления на телефон · проба» (рисует static/push.js) */
.set-push-line{font-size:13.5px;line-height:1.5;max-width:760px;color:var(--ink)}
.set-push-line.st-denied,.set-push-line.st-no{color:#b45309}
.set-push-line.st-on b{color:#1a7f37}
.set-push-lnk{border:0;background:none;padding:0;font:inherit;font-size:12.5px;color:var(--accent);cursor:pointer;text-decoration:underline}
.set-push-devs{display:flex;flex-direction:column;gap:4px;margin:2px 0 10px;max-width:760px}
.set-push-dev{display:flex;gap:6px 10px;align-items:baseline;flex-wrap:wrap;font-size:12.5px;padding:6px 10px;border:1px solid var(--line);border-radius:9px;color:var(--muted)}
.set-push-dev b{color:var(--ink)}.set-push-dev i{font-style:normal;color:#b3261e}
.set-push-dev.me{background:var(--bg)}
.set-push-me{font-size:10.5px;border:1px solid var(--line);border-radius:999px;padding:0 6px}
/* Чат 203: пункт «Включить уведомления» вверху меню (первым в «Избранном») и его окно — static/push.js */
.nav-push[hidden]{display:none}
.nav-push[data-st="off"]{background:var(--accent-tint);color:var(--accent-ink);font-weight:600}
.nav-push[data-st="on"]{color:var(--muted)}
.nav-push[data-st="denied"],.nav-push[data-st="no"]{color:#b45309}
.push-ovl{position:fixed;inset:0;z-index:5000;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;padding:16px}
.push-pop{background:var(--card);border-radius:14px;width:100%;max-width:460px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);
  overflow:auto;padding:16px 18px;box-shadow:0 18px 50px rgba(15,23,42,.28)}
.push-pop-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;font-size:15px;color:var(--ink)}
.push-pop-x{border:0;background:none;font-size:22px;line-height:1;color:var(--muted);cursor:pointer;padding:0 4px}
.push-pop-f{margin-top:10px;min-width:0}
.note{background:#fff8ec;border:1px solid #fde3b3;color:#8a5a12;
  padding:10px 14px;border-radius:10px;margin-bottom:18px;font-size:13px}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:18px}
.kpis-sub{grid-template-columns:repeat(4,1fr)}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow)}
.kpi-label{color:var(--muted);font-size:12px;margin-bottom:6px}
.kpi-val{font-size:24px;font-weight:700;letter-spacing:.2px}
.kpi-note{color:var(--muted);font-size:11px;margin-top:4px;min-height:14px}
.kpi-alert{cursor:pointer;transition:box-shadow .12s,transform .12s}
.kpi-alert:hover{box-shadow:0 4px 12px rgba(16,24,40,.12);transform:translateY(-1px)}
.kpi-alert.on{border-color:#f4c4c4;background:#fef6f6}
.kpi-alert.on .kpi-val{color:#b42318}

/* ряд-формула: остаток всего = на складах + к клиентам + возвраты */
.kpis-formula{display:flex;align-items:stretch;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.kpis-formula .kpi{flex:1 1 150px}
.kpi-op{display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;
  color:#94a3b8;flex:0 0 auto;padding:0 2px}
.kpi-total{background:#e6f6f5;border-color:var(--accent)}
.kpi-total .kpi-val{color:var(--accent-ink)}

/* Строка остатка Ozon: равенство + две справочные плитки В ОДНУ строку, плитки узкие
   (правка Vladi 12.08 — было много пустоты). Акцент — синий Ozon, а не бирюзовый WB. */
.oz-formula{align-items:stretch;gap:8px}
/* строка растянута на всю ширину, вровень с рядом KPI выше (правка Vladi 12.08):
   плитки делят ширину поровну, поэтому пустоты внутри нет, а край совпадает с первой строкой */
.oz-formula .kpi{flex:1 1 0;min-width:96px;padding:10px 12px}
.oz-formula .kpi-label{font-size:11.5px;margin-bottom:4px;white-space:nowrap}
.oz-formula .kpi-val{font-size:20px}
.oz-formula .kpi-note{font-size:10.5px;min-height:12px}
.oz-formula .kpi-total{background:var(--accent-tint);border-color:var(--accent)}
.oz-formula .kpi-total .kpi-val{color:var(--accent-ink)}
.oz-formula .kpi-op{font-size:19px}
.oz-formula .kpi-sep{flex:0 0 0;border-left:1px dashed #cbd5e1;margin:2px 6px}
.oz-formula .kpi-ref{background:#f8fafc;border-style:dashed}
.oz-formula .kpi-ref .kpi-val{font-size:17px;color:#475569}
/* «Что везти» — черновик: заголовок приглушён, чтобы блок не звал кликать */
.oz-draftblock>summary .card-title{color:var(--muted)}
.oz-draftblock[open]>summary .card-title{color:var(--ink)}
/* строка возврата из drill-детализации (клик по столбику кластера) */
.oz-drill{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-4px 0 10px;font-size:13px}

/* блок «замороженные деньги» */
.frozen-summary{font-size:13px;font-weight:600;color:#9a6b00;white-space:nowrap}
.note-sub{color:var(--muted);font-size:12px;margin:-2px 0 14px;line-height:1.4}
/* с59 (правка Vladi 15.08, п.2+5): ОДИН механизм сворачиваемых пояснений. Кнопка-ссылка,
   под которой лежит длинный .note-sub (в разметке он с атрибутом hidden — по умолчанию
   свёрнуто). Тихая: пунктир и серый текст, без заливки, чтобы не спорить с .illiq-btn */
.note-foldbtn{display:inline-block;margin:-2px 0 12px;padding:1px 9px;font:inherit;
  font-size:11.5px;line-height:1.6;color:var(--muted);background:transparent;
  border:1px dashed var(--line);border-radius:8px;cursor:pointer}
.note-foldbtn:hover{border-color:var(--accent);color:var(--accent)}
.note-foldbtn.on{border-style:solid;margin-bottom:8px}

/* карточки */
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:16px 18px;box-shadow:var(--shadow);margin-bottom:18px}
.card-title{font-weight:600;margin-bottom:12px;color:var(--ink)}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.card-head .card-title{margin-bottom:0}
.card-select{padding:6px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;
  font-family:inherit;color:var(--ink);background:#fff;max-width:230px}
.card-select:focus{outline:none;border-color:var(--accent)}
/* поле-поиск артикула (input+datalist) в один рост с сегментами рядом */
input.card-select{height:34px;min-width:180px}

/* блок детализации: переключатель режима + селектор артикула */
.detail-ctrls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
/* чекбокс «Показать остатки» на вкладке «Сезонность» — в один ряд с сегментами и селектором */
.seas-chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#475569;
  white-space:nowrap;cursor:pointer;user-select:none}
.seas-chk input{cursor:pointer;margin:0}
/* ячейки «Спрос»/«Рост» с подсказкой-формулой по наведению */
.has-formula{cursor:help;text-decoration:underline dotted rgba(71,85,105,.45);text-underline-offset:3px}
/* полоса выбора года на вкладке «Сезонность» (общая для графика и таблицы) */
.seas-toolbar{margin:2px 0 12px}
.seas-hint{font-size:12px;color:#94a3b8}
.seg{display:inline-flex;background:#f1f5f9;border:1px solid var(--line);border-radius:9px;padding:3px;gap:2px}
.seg-btn{border:0;background:transparent;color:var(--muted);font-size:13px;padding:6px 14px;
  border-radius:7px;cursor:pointer;font-weight:500;white-space:nowrap}
.seg-btn:hover{color:var(--ink)}
.seg-btn.active{background:var(--card);color:var(--accent-ink);font-weight:600;box-shadow:var(--shadow)}
/* Чат 72: переключатель каналов вкладки «Остатки» (.st-channel) удалён — вид = канал шапки меню */
/* Ozon: раскрывающиеся строки артикулов (клик → разбивка по размерам; Vladi 08.08) */
.oz-artrow{cursor:pointer}
.oz-artrow:hover td{background:#f0fdfc}
.oz-caret{display:inline-block;width:12px;color:#94a3b8;font-size:11px}
.oz-szrow td{background:#f8fafc;color:#475569;font-size:12.5px}
.oz-szrow .oz-szname{padding-left:30px;color:#64748b}
/* Ozon: сверка поставок (заявлено → факт → дельта; Vladi 08.08) */
.oz-sc-order{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:8px;background:#fff}
.oz-sc-order summary{cursor:pointer;font-size:13.5px;color:var(--ink)}
.oz-sc-order[open] summary{margin-bottom:8px}
.oz-sc-num{font-weight:600}
.oz-sc-plus{color:#b45309}    /* излишек — янтарный */
.oz-sc-minus{color:#dc2626}   /* недостача — красный */
.oz-sc-diff td{background:#fffbeb}
/* Ozon: сворачиваемый блок «Замороженные» (свёрнут на старте продаж) */
.oz-collapsible summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:12px}
.oz-collapsible summary::-webkit-details-marker{display:none}
.oz-collapsible summary::before{content:"▸";color:#94a3b8;font-size:13px}
.oz-collapsible[open] summary::before{content:"▾"}
.oz-sum-hint{font-size:12px;color:#94a3b8;font-weight:400}
/* строка «Итого» в таблицах Ozon */
.ws-total td{border-top:2px solid var(--line);background:#f8fafc}
/* кнопка Excel в Ozon-виде — как ссылка-кнопка (наследует .illiq-btn), без подчёркивания */
a#oz_export{text-decoration:none;display:inline-flex;align-items:center}
.detail-empty{color:var(--muted);text-align:center;padding:24px;font-size:13px}

.chart-box{position:relative;height:300px}
.chart-box.donut{height:260px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}

/* ===== вкладка «Риски» — Exposure по складам ===== */
.risk-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;
  flex-wrap:wrap;margin-bottom:16px}
.risk-title{font-weight:800;letter-spacing:.4px;font-size:16px;color:var(--ink)}
.risk-sub{color:var(--muted);font-size:12.5px}
/* KPI-плитки: всего · складов · крупнейший · тёмная «концентрация» */
.risk-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.risk-tile{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fbfcfe}
.rt-cap{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:6px}
.rt-val{font-size:22px;font-weight:800;color:var(--ink);line-height:1.1}
.rt-sub{font-size:12px;color:var(--muted);margin-top:5px}
/* плитка «Концентрация риска» — цвет по % (пороги Vladi): <15 зелёный · 15–20 жёлтый · >20 красный */
.risk-tile.lvl-green{background:#e9f7ef;border-color:#c6ebd5}
.risk-tile.lvl-green .rt-val{color:#0f9d6b}
.risk-tile.lvl-yellow{background:#fef6e5;border-color:#f5e1a8}
.risk-tile.lvl-yellow .rt-val{color:#b7791f}
.risk-tile.lvl-red{background:#fdecec;border-color:#f5c7c7}
.risk-tile.lvl-red .rt-val{color:#d64545}
/* колаут «крупнейшая точка риска» — ИНДИГО (намеренно вне шкалы зелёный/жёлтый/красный) */
.risk-callout{display:flex;align-items:center;justify-content:space-between;gap:20px;
  background:#eef0fc;border:1px solid #d7dbf6;border-radius:12px;padding:16px 20px;margin-bottom:18px}
.rc-text{font-size:14px;line-height:1.5;color:#2a2e4a;max-width:70ch}
.rc-num{text-align:center;flex-shrink:0}
.rc-big{font-size:30px;font-weight:800;color:#5b5bd6;line-height:1}
.rc-cap{font-size:12px;color:#6b6ea8;margin-top:4px}
/* ранжированный список складов */
.risk-list{display:flex;flex-direction:column;gap:8px}
/* Все числовые колонки СПРАВА — фиксированной ширины (76/58/110/56): иначе auto-колонка «По закупке»
   с числами разной длины плавает и сдвигает соседей → правый край скачет по строкам (Vladi поймал).
   Фикс = одинаковые позиции во всех строках = ровный правый край у всех столбцов. */
.risk-row{display:grid;grid-template-columns:46px minmax(120px,1.5fr) minmax(70px,3fr) 76px 58px 110px 56px;
  align-items:center;gap:14px;border:1px solid var(--line);border-radius:11px;padding:11px 16px;background:#fff}
.ch-badge{display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;
  color:#fff;border-radius:20px;padding:3px 0;width:44px}
.ch-badge.wb{background:#7c5cf0}
.ch-badge.ozon{background:#2f77e6}
.rr-name{min-width:0}
.rr-wh{font-weight:600;font-size:14px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rr-reg{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.rr-bar{height:9px;border-radius:6px;background:#eceaf6;overflow:hidden}
.rr-bar-fill{display:block;height:100%;border-radius:6px;background:#7c5cf0}
.rr-bar-fill.ozon{background:#2f77e6}
/* 🔥 сгоревшие склады: баннер-пометка (остаток обнулён → «Потери») + список под Exposure */
.burned-banner{display:flex;align-items:center;gap:12px;background:#fff4f0;border:1px solid #f6c6b4;
  border-left:4px solid #e0562f;border-radius:10px;padding:11px 14px;margin-bottom:12px;font-size:13px;color:#7a3418;line-height:1.4}
.burned-banner[hidden]{display:none}
.bb-fire{font-size:20px;line-height:1;flex:none}
.bb-text{flex:1}
.bb-text b{color:#c0392b}
.bb-btn{flex:none;border:1px solid #e0562f;background:#fff;color:#c0392b;border-radius:8px;
  padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.bb-btn:hover{background:#fdeee9}
.burned-wh{margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}
.burned-wh[hidden]{display:none}
.burned-wh-head{font-size:12px;font-weight:600;color:#9a4a2a;margin-bottom:8px}
.burned-wh-row{opacity:.9}
.ch-badge.burned{background:#fdece5}
.rr-bar-fill.burned{background:#e7a58f}
.rr-val{font-variant-numeric:tabular-nums;font-weight:600;font-size:14px;color:var(--ink);text-align:right;white-space:nowrap}
.rr-pct{font-variant-numeric:tabular-nums;font-size:13px;color:var(--muted);text-align:right}
#risk_note{text-align:left;padding:14px 2px 0}
@media (max-width:760px){
  .risk-tiles{grid-template-columns:1fr 1fr}
  .risk-callout{flex-direction:column;align-items:flex-start;gap:10px}
  .risk-row{grid-template-columns:40px 1fr auto;row-gap:6px}
  .risk-row .rr-bar{grid-column:1 / -1;order:5}
}

/* ===== блок «Куда грузить» (план поставок) ===== */
.supply-callout{background:#eef4ff;border-color:#d3e0f7}
.supply-callout .rc-text{color:#26324a;max-width:none}
#tbl_supply th{white-space:nowrap}
.conc-badge{display:inline-block;padding:2px 8px;border-radius:20px;font-weight:700;font-size:12px}
.conc-badge.lvl-green{background:#e9f7ef;color:#0f9d6b}
.conc-badge.lvl-yellow{background:#fef6e5;color:#b7791f}
.conc-badge.lvl-red{background:#fdecec;color:#d64545}
.act-pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}
.act-refill{background:#e7f0ff;color:#2f66d0}
.act-ok{background:#e9f7ef;color:#0f9d6b}
.act-over{background:#fdecec;color:#c23b3b}
.act-none{background:#eef1f5;color:#8a95a3}
.burn-mark{font-size:12px;cursor:help}

/* ===== вкладка «🔥 Потери» ===== */
.loss-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
  flex-wrap:wrap;margin-bottom:14px}
/* v84: базовая кнопка — нейтральная (в тему), не «тревожно-красная». Красный/бирюза — по смыслу:
   бирюза = «Сохранить» (primary), красный = «Удалить» когда что-то выбрано (danger). */
.excel-btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:9px;
  padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.excel-btn:hover{border-color:var(--accent);color:var(--accent-ink);background:#f6fbfb}
/* Официальные файлы БЗ Ozon: кнопки-источники, тултип-история, меню версий (v69) */
.ozu-srcwrap{position:relative;display:inline-block}
.ozu-src{background:#eefaf9;border-color:#9fdad7;color:#0b7c7b}
.ozu-src:hover{background:#dcf5f3}
.ozu-src[data-tip]:hover::after{
  content:attr(data-tip);white-space:pre-line;position:absolute;left:0;top:calc(100% + 6px);
  z-index:60;background:#0f172a;color:#fff;padding:9px 11px;border-radius:8px;
  font-size:12px;font-weight:500;line-height:1.5;width:max-content;max-width:340px;
  box-shadow:0 6px 22px rgba(0,0,0,.28);pointer-events:none}
.ozu-srcmenu{position:absolute;left:0;top:calc(100% + 6px);z-index:61;background:#fff;
  border:1px solid var(--line);border-radius:9px;box-shadow:0 10px 26px rgba(0,0,0,.18);
  min-width:230px;overflow:hidden}
.ozu-srcmenu[hidden]{display:none}
.ozu-srcitem{display:flex;justify-content:space-between;gap:14px;align-items:center;
  padding:10px 13px;font-size:13px;font-weight:600;color:#0b7c7b;text-decoration:none;
  border-bottom:1px solid #eef2f6;cursor:pointer}
.ozu-srcitem:last-child{border-bottom:none}
.ozu-srcitem:hover{background:#f0fbfa}
.ozu-srcitem span{color:#94a3b8;font-size:11px;font-weight:500}
.ozu-srcitem.dim{color:#94a3b8;cursor:default}
.loss-banner{background:#fff4f0;border:1px solid #f3cebf;border-radius:12px;
  padding:14px 18px;margin-bottom:12px}
.lb-big{font-size:16px;color:#7a2e12}
.lb-sub{font-size:12.5px;color:#9c5a41;margin-top:6px}
/* группа-заголовок по пожару + строка «Итого» */
#tbl_loss th.loss-grp{text-align:center;background:#fff4f0;color:#b23c17;
  border-bottom:2px solid #f0c9bb;font-size:12px}
#tbl_loss tr.loss-total{background:#f5f7fa;font-weight:700}
#tbl_loss tr.loss-total td{border-bottom:2px solid var(--line);color:var(--ink)}
#tbl_loss thead th{position:sticky;top:0;background:#f8fafc;z-index:1}
#tbl_loss thead tr:nth-child(2) th{top:31px}

/* детализация склада по клику в пончике */
#chart_wh, #chart_cat{cursor:pointer}
.wh-hint{color:var(--muted);font-size:11px;margin-top:8px;text-align:center}
.wh-detail{margin-top:12px;padding:12px 14px;background:#f8fafc;border:1px solid var(--line);border-radius:10px}
.wh-detail-title{font-weight:600;margin-bottom:6px;color:var(--accent-ink);font-size:14px}
.wh-detail-row{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.wh-detail-row b{color:var(--ink);font-weight:700}
/* справочная строка «не входит в „всего“» (с59): размещается + черновики заявок.
   Тонет внутри панели намеренно — это не часть суммы: инсет-подложка, верхняя граница,
   приглушённый серый (в т.ч. у чисел, иначе <b> тянет на себя внимание). */
.wh-detail-ref{margin-top:8px;padding:7px 9px 6px;border-top:1px solid var(--line);
  background:rgba(0,26,52,.03);border-radius:8px;font-size:12.5px;color:var(--oz-dim,#8b95a1)}
.wh-detail-ref b{color:var(--oz-dim,#8b95a1);font-weight:600}
.wh-arts{height:280px;overflow-y:auto;margin-top:12px;border-top:1px solid var(--line)}

/* «Структура остатков» — склады и категории должны быть строго симметричны:
   шапка одной высоты (слева селектор региона + заголовок в 2 строки при выборе),
   подсказка тоже, список артикулов фиксированной высоты → панели совпадают по уровню */
.grid2 .card-head{min-height:46px}
.grid2 .wh-hint{min-height:30px;display:flex;align-items:center;justify-content:center}
.wh-arts thead th{position:sticky;top:0;background:#f8fafc}

/* таблица */
.table-box{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line)}
th{color:var(--muted);font-weight:600;font-size:12px}
td.num,th.num{text-align:right}
td.empty{text-align:center;color:var(--muted);padding:18px}
.pill{display:inline-block;min-width:34px;text-align:center;padding:2px 8px;border-radius:20px;font-weight:600}
.pill.ok{background:#e7f7f0;color:#0b7a4b}
.pill.warn{background:#fff3d6;color:#9a6b00}
.pill.bad{background:#fde5e5;color:#b42318}
.pill.none{background:#eef1f5;color:#94a3b8}

/* статус оборачиваемости (излишки / норма / внимание / поставка) */
.status{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}
.status.ok{background:#e7f7f0;color:#0b7a4b}
.status.warn{background:#fff3d6;color:#9a6b00}
.status.bad{background:#fde5e5;color:#b42318}
.status.none{background:#eef1f5;color:#94a3b8}

/* ширины столбцов «Оборачиваемости» зафиксированы: иначе при листании страниц
   колонки «Хватит дней» и «Статус» съезжают под ширину содержимого страницы */
#tbl_cov{table-layout:fixed}
#tbl_cov th:nth-child(1){width:130px}
#tbl_cov th:nth-child(3){width:90px}
#tbl_cov th:nth-child(4){width:85px}
#tbl_cov th:nth-child(5){width:115px}
#tbl_cov th:nth-child(6){width:160px}
#tbl_cov th:nth-child(7){width:150px}
#tbl_cov td:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cov-act{padding-left:24px}

/* сортируемый заголовок таблицы */
th.sortable{cursor:pointer;user-select:none}
th.sortable:hover{color:var(--ink)}
.sort-ind{font-size:10px;color:#94a3b8;margin-left:3px}

/* блок покрытия: фильтр по дням + постраничная навигация */
.cov-filter{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.cov-filter input{width:84px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;
  font-size:13px;color:var(--ink);background:#fff}
.cov-filter input:focus{outline:none;border-color:var(--accent)}
.cov-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px;
  font-size:13px;color:var(--muted)}
.cov-pager button{padding:6px 13px;border:1px solid var(--line);background:#fff;border-radius:8px;
  color:var(--ink);font-size:13px;cursor:pointer}
.cov-pager button:hover:not(:disabled){border-color:var(--muted)}
.cov-pager button:disabled{opacity:.45;cursor:default}

.foot{color:var(--muted);font-size:12px;text-align:center;margin-top:24px}

/* ---- вкладки левого меню ---- */
.tab-panel[hidden]{display:none}
.filters[hidden]{display:none}   /* иначе .filters{display:flex} перебивает атрибут hidden */
.tab-stub{max-width:560px;margin:56px auto;text-align:center;background:var(--card);
  border:1px dashed #cdd5e0;border-radius:16px;padding:44px 34px;box-shadow:var(--shadow)}
.tab-stub .stub-ico{font-size:44px;line-height:1;margin-bottom:16px}
.tab-stub h2{margin:0 0 10px;font-size:20px;font-weight:700;color:var(--ink)}
.tab-stub p{margin:0 auto;max-width:420px;color:var(--muted);font-size:14px;line-height:1.55}
.tab-stub .stub-badge{display:inline-block;margin-top:18px;font-size:12px;font-weight:600;
  color:var(--accent-ink);background:#e6f6f5;padding:5px 14px;border-radius:20px}

/* login */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg)}
.login-card{background:var(--card);border:1px solid var(--line);border-radius:16px;
  box-shadow:var(--shadow);padding:34px 32px;width:320px;text-align:center}
.login-logo{font-weight:800;font-size:28px;color:var(--accent-ink);letter-spacing:.5px}
.login-sub{color:var(--muted);margin:4px 0 22px}
.login-input{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:15px;margin-bottom:12px}
.login-input:focus{outline:none;border-color:var(--accent)}
.login-btn{width:100%;padding:11px;border:0;border-radius:10px;background:var(--accent);
  color:#fff;font-size:15px;font-weight:600;cursor:pointer}
.login-btn:hover{background:var(--accent-ink)}
.login-error{background:#fde5e5;color:#b42318;padding:8px 12px;border-radius:8px;margin-bottom:14px;font-size:13px}

@media(max-width:900px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .kpis-sub{grid-template-columns:repeat(2,1fr)}
  .grid2{grid-template-columns:1fr}
}
@media(max-width:820px){
  .sidebar{display:none}
  .fld select{min-width:140px}
}

/* ===== блок «Что везти» — план поставок по артикулам и размерам ===== */
#tbl_plan th{white-space:nowrap}
.plan-row{cursor:pointer}
.plan-row:hover{background:#f8fafc}
.plan-row.open{background:#f1f5f9}
.plan-row td:nth-child(2)::after{content:" ▸";color:var(--muted);font-size:11px}
.plan-row.open td:nth-child(2)::after{content:" ▾"}
.plan-size{background:#fbfcfe;font-size:12px;color:#475569}
.plan-size td{border-bottom:1px dashed var(--line)}
.size-cell{padding-left:22px}
.dim{color:var(--muted);font-weight:400;font-size:12px}
.cover-fire{color:#b42318;font-weight:700}
.cover-warn{color:#9a6b00;font-weight:600}

/* ===== «Что везти»: разрез по складам + переключатель видов + модалка складов ===== */
/* атрибут hidden должен побеждать любые display у наших блоков/модалки (класс/ID иначе перебивают) */
[hidden]{display:none !important}
.plan-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.plan-seg{display:inline-flex;background:#f1f5f9;border:1px solid var(--line);border-radius:9px;padding:3px;gap:2px}
.pseg-btn{border:0;background:transparent;color:var(--muted);font-size:13px;padding:6px 12px;border-radius:7px;cursor:pointer}
.pseg-btn:hover{color:var(--ink)}
.pseg-btn.active{background:var(--card);color:var(--accent-ink);font-weight:600;box-shadow:var(--shadow)}
.wh-btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:9px;padding:8px 12px;font-size:13px;cursor:pointer}
.wh-btn:hover{border-color:var(--accent);color:var(--accent-ink)}
.plan-days{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.plan-days input{width:56px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;font-size:13px;text-align:right;color:var(--ink);font-weight:600}
.plan-days input:focus{outline:none;border-color:var(--accent)}
.plan-recalc{border-color:#b8e6e4;background:#f0faf9;color:var(--accent-ink);font-weight:600}
.plan-recalc:hover{background:#e2f5f4;border-color:var(--accent)}
.plan-ts{font-size:11.5px;color:var(--muted);margin-top:4px}
.plan-ts.plan-ts-warn{color:#b7791f;font-weight:600}
/* фильтр «размеры в нуле» + сводка склада + вид «Отгрузки» */
.pz-link{color:var(--accent-ink);font-weight:800;text-decoration:underline;cursor:pointer}
.pz-link.active{background:#fde8e8;border-radius:4px;padding:0 4px}
.pz-reset{margin-left:8px;padding:3px 10px;border:1px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;font-size:12px;font-weight:600;color:var(--ink)}
.pz-reset:hover{border-color:var(--accent)}
.wh-stats{font-size:11.5px;color:var(--muted);margin-left:10px;white-space:nowrap}
.wh-stats b{color:var(--ink)}
.ship-items{padding:4px 10px 10px 26px;overflow-x:auto}
.ship-tbl{border-collapse:collapse;font-size:12.5px;min-width:520px}
.ship-tbl th,.ship-tbl td{padding:5px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.ship-tbl th{font-size:11px;color:var(--muted);font-weight:600;text-align:left}
.ship-tbl th.num,.ship-tbl td.num{text-align:right}
.ship-tbl .ship-total td{border-top:2px solid var(--line);border-bottom:none;background:#fafafa}
/* 📦 учёт отгрузок (подсвеченная область во вкладке «Отгрузки») */
.ship-entry{background:#f0f7ee;border:1px solid #cfe5c8;border-radius:10px;padding:14px 16px;margin-bottom:12px}
.se-head{font-weight:800;font-size:14px;margin-bottom:6px}
.se-text{font-size:12.5px;color:var(--ink);line-height:1.55;margin-bottom:10px}
.se-list-head{font-size:12px;font-weight:700;color:var(--muted);margin:12px 0 6px}
.se-batch{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:7px 12px;margin-bottom:6px;flex-wrap:wrap}
.se-batch-name{font-size:13px}
.se-batch-info{font-size:12px;color:var(--muted)}
.se-batch.se-stale{background:#fdf6e3;border-color:#e0c778}
.se-stale-warn{font-size:12px;color:#b7791f;font-weight:600}
.se-btn{padding:4px 10px;border:1px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;font-size:12px;font-weight:600}
.se-btn.se-recv{color:#1e7c37}.se-btn.se-recv:hover{border-color:#1e7c37}
.se-btn.se-del{color:#c0392b}.se-btn.se-del:hover{border-color:#c0392b}
.se-num{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin:6px 0 10px}
.se-num input{margin-left:6px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px;width:220px}
.ship-form-list{max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:0 8px}
.ship-qty{width:74px;padding:5px 8px;border:1px solid var(--accent);border-radius:6px;font-size:13px;font-weight:700;text-align:right;background:#f4f8ff}
/* «Цена ↔ Оборачиваемость» · вид по складам */
#pt_wh_result{margin-top:12px}
.ptw-rec{font-size:12px;white-space:normal;min-width:260px}
#price_turn .loss-head{margin-bottom:10px}
.ptw-sum{font-size:12.5px;line-height:1.6;background:#f4f8ff;border:1px solid #d5e3f5;border-radius:8px;padding:9px 12px;margin:2px 0 10px}
.ptw-sum b{color:var(--accent-ink)}

/* вид «по складам» — карточки складов с раскрытием до размеров */
#plan_by_wh{display:flex;flex-direction:column;gap:8px}
.wh-block{border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#fff}
.wh-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 15px;cursor:pointer}
.wh-row:hover{background:#f8fafc}
.wh-row.open{background:#f1f7f7}
.wh-row-main{display:flex;align-items:center;gap:10px;min-width:0}
.wh-caret{color:#94a3b8;font-size:11px;transition:transform .15s}
.wh-row.open .wh-caret{transform:rotate(90deg)}
.wh-name{font-weight:700;color:var(--ink)}
.wh-reg{font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.wh-row-nums{display:flex;align-items:center;gap:16px;flex-shrink:0}
.wh-share{font-size:12px;padding:3px 10px;border-radius:20px;font-weight:600;white-space:nowrap}
.wh-share.over{background:#fdecec;color:#b42318}
.wh-share.under{background:#eafaf1;color:#0f9d6b}
.wh-share.ok{background:#eef1f5;color:#64748b}
.wh-need{font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink);white-space:nowrap}
.wh-items{border-top:1px solid var(--line);background:#fbfcfe}
.dest-cell{color:#334155}
/* по складам: склад → артикул → размеры (три уровня раскрытия) */
.wa-block{border-top:1px solid var(--line)}
.wa-block:first-child{border-top:0}
.wa-row{display:flex;align-items:center;gap:10px;padding:8px 12px 8px 26px;cursor:pointer;font-size:12.5px}
.wa-row:hover{background:#f4f8f8}
.wa-row.open{background:#eef5f5}
.wa-caret{color:#94a3b8;font-size:10px;transition:transform .15s;flex:0 0 auto}
.wa-row.open .wa-caret{transform:rotate(90deg)}
.wa-art{flex:1;min-width:0}
.wa-sizes{color:var(--muted);white-space:nowrap}
.wa-need{font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap;min-width:130px;text-align:right}
.wa-sztbl{width:100%;background:#fff}
.wa-sztbl td{padding:5px 8px;border-bottom:1px dashed var(--line);font-size:12px;color:#475569}
.wa-sztbl td:first-child{padding-left:44px}
.wa-sztbl tr:last-child td{border-bottom:0}
/* «По складам» → раскрытие склада: таблица с колоночной шапкой «по товару» (правка Vladi, новый блок) */
.wa-arttbl{width:100%;border-collapse:collapse;background:#fff;font-size:12.5px}
.wa-arttbl thead th{text-align:left;color:var(--muted);font-weight:600;font-size:11px;padding:6px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:#f7fafc}
.wa-arttbl th.num,.wa-arttbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.wa-arttbl td{padding:6px 10px;border-bottom:1px dashed var(--line);color:#475569;white-space:nowrap}
.wa-art-row{cursor:pointer}
.wa-art-row:hover{background:#f4f8f8}
.wa-art-row.open{background:#eef5f5}
.wa-art-row .wa-caret{display:inline-block;color:#94a3b8;font-size:10px;transition:transform .15s}
.wa-art-row.open .wa-caret{transform:rotate(90deg)}
.wa-size-row td{background:#fbfcfe;color:#64748b}
.wa-size-c{padding-left:30px!important}
#supply_plan_card_v2 > .plan-actions{margin-top:12px}
.was-bc,.bc-cell{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);font-size:11.5px}

/* модалка складов (просмотр карты риска + редактор состава) */
.wh-modal{position:fixed;inset:0;background:rgba(15,23,42,.42);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}
.wh-modal-box{background:var(--card);border-radius:14px;box-shadow:0 20px 50px rgba(16,24,40,.25);width:min(640px,100%);max-height:86vh;display:flex;flex-direction:column;overflow:hidden}
.wh-modal-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--line)}
.wh-modal-title{font-weight:700;font-size:15px}
.wh-modal-x{border:0;background:transparent;font-size:18px;color:var(--muted);cursor:pointer;line-height:1}
.wh-modal-x:hover{color:var(--ink)}
.wh-modal-body{padding:16px 18px;overflow-y:auto}
.wh-modal-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 18px;border-top:1px solid var(--line);background:#fbfcfe}
.wh-view-tbl th,.wh-view-tbl td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left}
.wh-view-tbl th.num,.wh-view-tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.wh-view-note{color:var(--muted);font-size:12px;margin-top:12px;line-height:1.45}
.wh-edit-hint{color:var(--muted);font-size:12.5px;margin-bottom:12px;line-height:1.45}
.wh-edit-list{display:flex;flex-direction:column;gap:4px}
.wh-edit-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:9px}
.wh-edit-row.burned{opacity:.5;background:#fafbfc}
.wh-edit-lbl{display:flex;align-items:center;gap:9px;cursor:pointer;flex:1;min-width:0}
.wh-edit-lbl input{width:16px;height:16px;flex-shrink:0}
.wh-edit-name{font-weight:600;color:var(--ink)}
.wh-edit-reg{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.wh-edit-stat{font-size:12px;color:var(--muted);white-space:nowrap}
.wh-edit-share{display:flex;align-items:center;gap:3px;font-size:12px;color:var(--muted);white-space:nowrap}
.wh-share-in{width:52px;padding:5px 7px;border:1px solid var(--line);border-radius:7px;font-size:13px;text-align:right}
.wh-share-in:disabled{background:#f1f5f9;color:#cbd5e1}
.wh-turn-cols{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-size:12px;color:var(--muted)}
.wh-turn{width:46px;padding:5px 4px;border:1px solid var(--line);border-radius:7px;font-size:13px;text-align:center}
.wh-turn:disabled{background:#f1f5f9;color:#cbd5e1}
.wh-turn-head{border:0!important;padding:2px 10px!important;font-size:11px;color:var(--muted)}
.wh-turn-head .wh-edit-lbl{flex:1;cursor:default}
.wh-sum{font-size:13px;font-weight:600}
.wh-sum.ok{color:#0f9d6b}
.wh-sum.bad{color:#b42318}
.wh-save-btn{border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:9px;padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer}
.wh-save-btn:hover{background:var(--accent-ink)}
.wh-save-btn:disabled{opacity:.6;cursor:default}
@media (max-width:640px){
  .wh-row{flex-direction:column;align-items:flex-start;gap:8px}
  .wh-edit-row{flex-wrap:wrap}
}

/* «Всего потеряно» — в две строки, столбец уже (освобождает место для «Себест. ₽/ед» в одну строку) */
#tbl_loss th.col-narrow{white-space:normal;line-height:1.15;min-width:64px}

/* ===== вкладка «Unit-экономика» ===== */
.unit-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.unit-controls select{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:13px}
.unit-art-input{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:13px;min-width:190px}
.unit-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.unit-chips:empty{display:none}
.uchip{display:inline-flex;align-items:center;gap:6px;background:#e6f6f5;color:var(--accent-ink);border:1px solid #b8e6e4;border-radius:16px;padding:3px 5px 3px 10px;font-size:12px;font-weight:600}
.uchip b{cursor:pointer;font-weight:700;color:#4d7d7c;background:#cdeceb;border-radius:50%;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;line-height:1;font-size:13px}
.uchip b:hover{background:#b3dddb;color:var(--accent-ink)}
/* П2.2 — панель массовой правки цены */
.unit-massprice{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ump-lbl{font-size:12px;color:var(--muted);font-weight:600}
.ump-btn{padding:6px 11px;border:1px solid #e3b3b3;background:#fdf2f2;color:#c0392b;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}
.ump-btn:hover{background:#fbe6e6}
.ump-btn.ump-up{border-color:#b3d9c4;background:#f0faf4;color:#0f9d6b}
.ump-btn.ump-up:hover{background:#e2f5ea}
.ump-hint{font-size:12px;color:var(--muted)}
.ut-delta{font-size:12px;font-weight:700;margin-left:5px}
/* П4.1 — сортировка кликом по заголовку */
#tbl_unit th.u-sortable{cursor:pointer}
#tbl_unit th.u-sortable:hover{background:#eef7f7}
#tbl_unit th.u-sorted{color:var(--accent-ink)}
.u-arr{margin-left:3px;font-size:10px}
/* П4.2 — кликабельная плитка «убыточных» */
.u-tile-clk{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.u-tile-clk:hover{border-color:var(--accent)}
.u-tile-clk.active{border-color:var(--accent);box-shadow:0 0 0 2px rgba(14,165,164,.2)}
/* Чат 96: плитка «отрицательных» юнитки — слегка красноватая, при включённом фильтре — красная рамка */
.unit-tile.u-tile-neg{background:#fdf4f3;border-color:#eecfcb}
.unit-tile.u-tile-neg:hover{border-color:#d98b86}
.unit-tile.u-tile-neg.active{border-color:#d64545;box-shadow:0 0 0 2px rgba(214,69,69,.18)}
/* П3.3 — плашка «Склад/Предмет пока не влияют на тарифы» */
.unit-warn{background:#fff8e1;border:1px solid #ffe082;border-left:4px solid #f5a623;border-radius:9px;padding:9px 13px;font-size:12.5px;color:#7a5f12;margin-bottom:10px;line-height:1.45}
.unit-assume-card{padding:12px 16px;margin-bottom:10px}
/* П1.4 — «Допущения» в аккордеоне (свёрнуты по умолчанию → таблице больше высоты) */
summary.ua-head{cursor:pointer;list-style:none;user-select:none;margin-bottom:0;display:flex;align-items:center;gap:7px}
summary.ua-head::-webkit-details-marker{display:none}
summary.ua-head::before{content:'▸';color:var(--muted);font-size:11px}
details.unit-assume-card[open] summary.ua-head::before{content:'▾'}
details.unit-assume-card[open] .ua-grid{margin-top:12px}
details.unit-massprice-card[open] .unit-massprice{margin-top:12px}
.ua-head{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:10px}
.ua-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.ua-item{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.ua-in{display:flex;align-items:center;gap:5px}
.ua-in input{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:7px;font-size:13px;text-align:right}
.ua-in i{color:var(--muted);font-style:normal;font-size:12px;min-width:16px}
.ua-in select{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:7px;font-size:13px;background:var(--card)}
/* с52: живой бейдж кС у «Времени отгрузки» FBS — скидка зелёным, наценка красным */
.ua-ks{font-size:11px;font-weight:700;color:var(--muted);white-space:nowrap}
.ua-ks.ok{color:#0b8457}
.ua-ks.bad{color:#c62828}
.ua-info{cursor:help;color:var(--muted);font-size:12px;margin-left:3px}.ua-info svg{vertical-align:-2.5px}
.ua-info:hover{color:var(--accent-ink)}
.unit-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:10px}
.unit-tile{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px;box-shadow:var(--shadow)}
.ut-val{font-size:18px;font-weight:700;color:var(--ink)}
.ut-lbl{font-size:12px;color:var(--muted);margin-top:3px}
#tbl_unit th{white-space:normal;overflow-wrap:break-word;vertical-align:top;text-align:center;line-height:1.25;position:sticky;top:0;background:var(--card);z-index:1}
#tbl_unit thead th{text-align:center;vertical-align:top;height:54px}   /* все заголовки выровнены ПО ВЕРХУ (первая строка у всех на одном уровне) */
#tbl_unit td{white-space:nowrap}
/* колонки сами подбирают ширину под заголовок (авто-раскладка), в разумных пределах — читабельно и без разнобоя */
#tbl_unit thead th:not([class*="u-stick"]){min-width:60px;max-width:112px}
input.unit-price{width:78px;padding:5px 7px;border:1px solid #cbd5e1;border-radius:7px;font-size:13px;text-align:right;font-weight:600}
input.unit-price.changed{border-color:var(--accent);background:#effcfb;color:var(--accent-ink)}
.u-pos{color:#0f9d6b}
.u-neg{color:#d64545}

/* сворачиваемые группы столбцов (как «+» в Excel) */
#tbl_unit th.ug-plus{cursor:pointer;color:var(--accent-ink);background:#eef7f7;font-weight:700;text-align:center;min-width:24px;padding:9px 4px}
#tbl_unit th.ug-plus:hover{background:#dcefef}
#tbl_unit td.ug-plus{background:#f6fafa;border-left:1px dashed var(--line);border-right:1px dashed var(--line)}
.ug-min{border:none;background:#e6eef0;color:#5a6b72;border-radius:4px;font-weight:700;cursor:pointer;position:absolute;left:4px;top:6px;padding:1px 5px;line-height:1.2;font-size:12px}
#tbl_unit thead th.has-min{padding-left:28px;min-width:94px}   /* слева — место под «−» (по центру полосы); шире, чтобы имя группы не рвалось по слогам */
.ug-min:hover{background:#d3dee1}
#tbl_unit{font-size:12px}
#tbl_unit td,#tbl_unit th{padding:7px 8px}

/* Unit-экономика: фиксированная шапка + всегда доступный скролл (по обеим осям внутри блока) */
.unit-scroll{max-height:calc(100vh - 200px);overflow:auto}
.unit-scroll #tbl_unit thead th{position:sticky;top:0;z-index:3;background:var(--card);box-shadow:0 1px 0 var(--line)}
/* редактируемые поля в таблице */
.u-edit{border:1px solid #cbd5e1;border-radius:6px;font-size:12px;padding:4px 5px;background:#fff}
input.u-edit{width:82px;text-align:right;font-weight:600}
/* Чат 74: реальный выкуп из раздела «Выкуп → экономика» — подсвечен, редактируем (правка — для прикидки) */
input.u-edit.oz-bo-real{background:var(--accent-tint2,#eef4ff);color:var(--accent-ink,#0047cc);border-color:var(--accent-line,#c7dcff)}
input.u-edit.oz-bo-real.changed{border-color:var(--accent);background:#effcfb;color:var(--accent-ink)}
/* Чат 96: авто-ячейки юниток (цена/скидка/СПП/соинвест/габариты) — данные тянутся сами, вид как у реального выкупа */
input.u-edit.oz-auto{background:var(--accent-tint2,#eef4ff);color:var(--accent-ink,#0047cc);border-color:var(--accent-line,#c7dcff)}
input.u-edit.oz-auto.changed{border-color:var(--accent);background:#effcfb;color:var(--accent-ink)}
span.oz-auto-val{background:var(--accent-tint2,#eef4ff);color:var(--accent-ink,#0047cc);border-radius:6px;padding:1px 6px;display:inline-block}
.u-edm{color:var(--accent);font-size:10px;margin-left:3px;opacity:.75;font-weight:400}
select.u-edit{max-width:120px;font-weight:500}
.u-edit.changed{border-color:var(--accent);background:#effcfb;color:var(--accent-ink)}
.u-edit:focus{outline:2px solid var(--accent);outline-offset:-1px}
/* фикс. колонки: слева Артикул(E)/Статус(F)/Литры(B), справа Прибыль(AP)/Маржа(AQ) — не уезжают при скролле */
#tbl_unit td.u-stick-a,#tbl_unit th.u-stick-a{position:sticky;left:0;width:96px;min-width:96px;max-width:96px}
#tbl_unit td.u-stick-b,#tbl_unit th.u-stick-b{position:sticky;left:96px;width:124px;min-width:124px;max-width:124px;overflow:hidden;text-overflow:ellipsis}
#tbl_unit td.u-stick-y,#tbl_unit th.u-stick-y{position:sticky;right:68px;width:76px;min-width:76px;max-width:76px}   /* Прибыль: под «Прибыль,» (53px) + число */
#tbl_unit td.u-stick-z,#tbl_unit th.u-stick-z{position:sticky;right:0;width:68px;min-width:68px;max-width:68px}       /* Маржа: под «−170.8%» */
#tbl_unit tbody td.u-stick-a,#tbl_unit tbody td.u-stick-b,#tbl_unit tbody td.u-stick-y,#tbl_unit tbody td.u-stick-z{z-index:2;background:var(--card)}
#tbl_unit thead th.u-stick-a,#tbl_unit thead th.u-stick-b,#tbl_unit thead th.u-stick-y,#tbl_unit thead th.u-stick-z{z-index:4}
#tbl_unit td.u-stick-b{box-shadow:2px 0 0 var(--line)}                       /* правый край левого фикс-блока (Артикул) */
#tbl_unit th.u-stick-b{box-shadow:2px 0 0 var(--line),0 1px 0 var(--line)}
#tbl_unit td.u-stick-y{box-shadow:-2px 0 0 var(--line)}                      /* левый край правого фикс-блока */
#tbl_unit th.u-stick-y{box-shadow:-2px 0 0 var(--line),0 1px 0 var(--line)}
/* зебра + подсветка строки (sticky-ячейкам фон дублируем, иначе сквозь них просвечивает контент) */
#tbl_unit tbody tr:nth-child(even){background:#fafbfc}
#tbl_unit tbody tr:nth-child(even) td.u-stick-a,#tbl_unit tbody tr:nth-child(even) td.u-stick-b,#tbl_unit tbody tr:nth-child(even) td.u-stick-y,#tbl_unit tbody tr:nth-child(even) td.u-stick-z{background:#fafbfc}
#tbl_unit tbody tr:hover{background:#eef6f7}
#tbl_unit tbody tr:hover td.u-stick-a,#tbl_unit tbody tr:hover td.u-stick-b,#tbl_unit tbody tr:hover td.u-stick-y,#tbl_unit tbody tr:hover td.u-stick-z{background:#eef6f7}

/* 🎯 Калькулятор скидки для акции (виджет под юниткой) */
.promo-calc{margin-top:14px}
.pc-note{font-size:12.5px;color:var(--muted);line-height:1.5;margin-bottom:14px}
.pc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:4px}
.pc-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted);font-weight:600}
.pc-field input{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:15px;font-weight:700;color:var(--ink);text-align:right;background:#fff}
.pc-field input:focus{outline:2px solid var(--accent);outline-offset:-1px}
.pc-result{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.pc-big{font-size:15px;color:var(--ink)}
.pc-big b{font-size:24px;color:var(--accent-ink);font-weight:800;margin-left:4px}
.pc-line{font-size:13px;color:var(--ink);line-height:1.55;margin-top:9px}
.pc-line b{color:var(--accent-ink)}
.pc-table{border-collapse:collapse;margin:12px 0 2px;font-size:13px}
.pc-table th,.pc-table td{padding:7px 14px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}
.pc-table th{font-size:11px;color:var(--muted);font-weight:600}
.pc-table td:first-child,.pc-table th:first-child{text-align:left;color:var(--muted)}
.pc-mut{color:var(--muted);font-weight:400;font-size:11px}
.pc-hl{color:var(--accent-ink);font-weight:700}
.pc-warn{color:#c0392b;font-size:13px;font-weight:600}
/* 📉 Цена ↔ Оборачиваемость */
.pc-field select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:15px;font-weight:700;color:var(--ink);background:#fff}
.pc-field select:focus{outline:2px solid var(--accent);outline-offset:-1px}
.pt-hint{color:var(--muted);font-size:12.5px}
.pt-table td,.pt-table th{padding:7px 12px}
/* лучшая по прибыли/день — зелёная, текущая цена — голубая (правка Vladi 28.07) */
.pt-table tr.pt-cur td{background:#e8f1fb;font-weight:700}
.pt-table tr.pt-best td{background:#e8f6ec;font-weight:700}
.pt-table tr.pt-loss td{color:#c0392b}

/* 🏆 Куда грузить артикул — склады-продавцы (вкладка «Остатки») */
.ws-norm{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);white-space:nowrap}
.ws-norm input{width:64px;height:34px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;
  font-size:13px;font-weight:600;color:var(--ink);text-align:right;background:#fff}
.ws-norm input:focus{outline:none;border-color:var(--accent)}
/* «Куда грузить»: норма и поле артикула держим вместе, кнопки окна компактнее — чтобы всё влезало в строку шапки */
.ws-normart{display:inline-flex;align-items:center;gap:10px}
#ws_article{min-width:150px}
#ws_window .seg-btn{padding:6px 10px}
.ws-region{margin:0 0 14px}
.ws-reghead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 10px;
  background:#f1f5f9;border:1px solid var(--line);border-radius:9px 9px 0 0}
.ws-regname{font-weight:700;font-size:13.5px}
.ws-regstats{color:var(--muted);font-size:12.5px}
.ws-conflict{margin-left:auto;font-size:12px;font-weight:700;color:#9a3412;background:#ffedd5;
  border:1px solid #fdba74;border-radius:7px;padding:3px 9px;cursor:help}
/* бейджи перекоса «спрос ↔ товар» в строке кластера Ozon (аудит 12.08, U6) и
   вложенная таблица складов кластера (второй уровень, аналог «регион → склады» WB) */
.ws-conflict,.ws-skew{margin-left:6px;display:inline-block;vertical-align:middle}
.ws-skew{font-size:12px;font-weight:700;color:#475569;background:#f1f5f9;
  border:1px solid #cbd5e1;border-radius:7px;padding:3px 9px;cursor:help}
.oz-wsrow{cursor:pointer}
.oz-wssub>td{background:#f8fafc;padding:10px 14px}
.ws-subtable{border-radius:9px;border-top:1px solid var(--line);background:#fff;max-width:640px}
.oz-depth{margin-top:8px;font-style:italic}

/* «Сверка поставок» без активных заявок — приглушена и сжата (аудит 12.08, U9) */
.oz-sc-quiet{opacity:.72}
.oz-sc-quiet #oz_sc_result{max-height:200px;overflow-y:auto}
/* разбивка партии по размерам в блоке «Что везти на Ozon» */
.oz-alloc-sizes{margin-top:14px}
.oz-alloc-sizes .wh-detail-title{margin-bottom:6px}

.ws-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed;
  border:1px solid var(--line);border-top:0;border-radius:0 0 9px 9px}
.ws-table th,.ws-table td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-table th{font-size:11px;color:var(--muted);font-weight:600}
.ws-table th.num,.ws-table td.num{text-align:right}
.ws-table th:nth-child(1){width:15%}.ws-table th:nth-child(2),.ws-table th:nth-child(3),
.ws-table th:nth-child(4),.ws-table th:nth-child(5){width:9%}
.ws-table th:nth-child(6){width:17%}.ws-table th:nth-child(7){width:32%}
/* «Куда грузить» Ozon — 9 колонок; вердикт заметно шире прочих, как на WB (правка Vladi 12.08).
   Порядок: склад · заказы/дн · доля · хватит дней · остаток · динамика · едет · в заявках · вердикт.
   Селектор с двумя классами — чтобы перебить 7-колоночную раскладку WB выше. */
.ws-table.oz-ws-table th:nth-child(1){width:15%}
.ws-table.oz-ws-table th:nth-child(2),.ws-table.oz-ws-table th:nth-child(3),
.ws-table.oz-ws-table th:nth-child(4),.ws-table.oz-ws-table th:nth-child(5){width:7%}
.ws-table.oz-ws-table th:nth-child(6){width:10%}
.ws-table.oz-ws-table th:nth-child(7){width:5%}
.ws-table.oz-ws-table th:nth-child(8){width:6%}
.ws-table.oz-ws-table th:nth-child(9){width:35%}
/* спарклайн и соседние колонки прижаты друг к другу: «едет» и «в заявках» должны читаться
   как продолжение динамики, а не висеть в стороне (правка Vladi 12.08) */
.oz-ws-table .ws-sparkcell{padding-right:2px}
.oz-ws-table .ws-spark{width:92px}
.oz-ws-table td:nth-child(7),.oz-ws-table th:nth-child(7){padding-left:4px}
/* «Спрос есть — товара нет» (с59): кластеры доставки, где наших складов нет вовсе.
   Это не обычный кластер, а упущенная география — поэтому отдельный блок: пунктирная
   рамка «склада тут нет» + мягкая янтарная заливка. Токены с фолбэками — блок живёт и
   вне скина; шапку кластера внутри него перекрашиваем заново (в скине она белая). */
.ws-nowh{margin:0 0 14px;padding:8px 10px 10px;border:1px dashed var(--oz-a,#c77700);
  border-radius:10px;background:var(--oz-at,#fff7ed)}
.ws-nowh .ws-reghead{padding:2px 2px 8px;background:transparent;border:0;border-radius:0;
  border-bottom:1px dashed var(--oz-a,#c77700)}
.ws-nowh .ws-regname{color:var(--oz-a,#9a3412)}
.ws-nowh .ws-table{margin-top:8px;border:0;border-radius:9px;background:var(--card,#fff)}
.ws-nowh .note-sub{margin-top:8px}
/* внутри — таблица на 4 колонки, а не на 9: раскладку oz-ws-table выше нужно перебить,
   иначе «Вердикт» получает ~7% и обрезается многоточием (у .ws-table td overflow:hidden).
   Порядок: кластер доставки · заказов/дн · доля спроса · вердикт. */
.ws-nowh .ws-table.oz-ws-table th:nth-child(1){width:34%}
.ws-nowh .ws-table.oz-ws-table th:nth-child(2),
.ws-nowh .ws-table.oz-ws-table th:nth-child(3){width:11%}
.ws-nowh .ws-table.oz-ws-table th:nth-child(4){width:44%}
/* вердикт тут длинный («наших складов в кластере нет») — даём ему переноситься */
.ws-nowh .ws-table td:nth-child(4){white-space:normal;overflow:visible;text-overflow:clip}
tr.ws-row{cursor:pointer}
tr.ws-row:hover td{background:#f8fafc}
.ws-sparkcell{padding:3px 10px}
.ws-spark{width:130px;height:30px}
.ws-verdict{font-weight:600;font-size:12.5px}
.ws-verdict.bad{color:#c0392b}
.ws-verdict.ok{color:#1e7e34}
.ws-verdict.idle{color:#9a3412}
.ws-verdict.dead{color:var(--muted)}
.ws-bigbox{height:220px;padding:6px 2px}
/* конфликт складов: строка-пояснение под шапкой региона + кромки у участников */
.ws-confline{padding:7px 10px;font-size:12.5px;color:#7c2d12;background:#fff7ed;
  border:1px solid var(--line);border-top:0;line-height:1.45}
tr.ws-cd td:first-child{box-shadow:inset 3px 0 0 #dc2626}   /* продаёт и пустеет */
tr.ws-cs td:first-child{box-shadow:inset 3px 0 0 #f59e0b}   /* сидит на запасе */
/* «Замороженные деньги»: столбец «Что делать» + кнопка перехода в виджет цены */
.illiq-act{font-size:12.5px;line-height:1.4;white-space:normal}
.illiq-btn{border:1px solid var(--line);background:transparent;color:var(--muted);font-size:11px;
  font-weight:500;border-radius:6px;padding:1px 7px;cursor:pointer;white-space:nowrap}
.illiq-btn:hover{border-color:var(--accent);background:var(--accent);color:#fff}
/* фикс-раскладка: колонки не прыгают при листании страниц (грабля как у оборачиваемости) */
#tbl_illiq{table-layout:fixed}
#tbl_illiq th:nth-child(1){width:16%}
#tbl_illiq th:nth-child(2),#tbl_illiq th:nth-child(3){width:11%}
#tbl_illiq th:nth-child(4),#tbl_illiq th:nth-child(5){width:16%}
#tbl_illiq th:nth-child(6){width:30%}
/* короткий ярлык действия: пунктир = «наведи, будет пояснение» */
.illiq-short{font-weight:600;white-space:nowrap;cursor:help;
  border-bottom:1px dotted var(--muted);padding-bottom:1px}
/* воздух между «Хранение» и «Что делать» — числа не липнут к тексту (скрин Vladi) */
#tbl_illiq th:nth-child(6),#tbl_illiq td:nth-child(6){padding-left:64px}
/* плитки-сводки оборачиваемости: те же цвета, что статусы; клик — фильтр */
.cov-tiles{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.cov-tile{cursor:pointer;border:1px solid transparent;font-size:12.5px;padding:4px 12px}
.cov-tile:hover{border-color:currentColor}
.cov-tile.on{border-color:currentColor;box-shadow:0 0 0 1px currentColor inset}
/* строка «Шкала, дней»: видимые и редактируемые пороги статусов + сброс */
.cov-scale{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;
  font-size:12.5px;color:var(--muted)}
.cov-scale-cap{font-weight:600;color:var(--ink)}
/* сегмент шкалы: своя рамка+фон — смысловые блоки читаются раздельно (скрин Vladi) */
.sc-seg{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;
  border:1px solid var(--line);border-radius:9px;background:#f8fafc;white-space:nowrap}
.sc-echo{font-weight:600;color:var(--ink)}
.cov-scale input{width:56px;height:28px;padding:3px 7px;border:1px solid var(--line);
  border-radius:7px;font-size:12.5px;font-weight:600;color:var(--ink);text-align:right;background:#fff}
.cov-scale input:focus{outline:none;border-color:var(--accent)}
.cov-scale input.sc-bad{border-color:#dc2626;background:#fef2f2}
.cov-sep{color:var(--line)}
/* Цена↔Оборачиваемость: артикул в складском виде кликабелен → вид «По товарам» */
.ptw-art{cursor:pointer;font-weight:700;color:var(--accent-ink);border-bottom:1px dotted var(--accent-ink)}
.ptw-art:hover{color:var(--accent)}
/* виджет цены: значок ⓘ у эластичности + строка-калькулятор ручного подбора */
.info-i{cursor:help;color:var(--accent-ink);font-weight:700;margin:0 2px 0 4px;font-size:13px}
/* спокойный серый вместо жёлтого + компенсация отступов инпута, чтобы цифры
   строки-калькулятора стояли РОВНО под цифрами столбца (правки Vladi по скрину) */
.pt-table tr.pt-calc td{background:#f3f5f7;border-top:2px solid var(--line);font-weight:600}
/* поле-«невидимка»: без рамки/фона, шрифт строки — цифры стоят ровно по столбцу;
   пунктир снизу = «можно править» (правка Vladi по скрину: значения съезжали) */
.ptc-inp{padding:0;border:0;border-bottom:1px dashed #94a3b8;border-radius:0;
  font:inherit;font-weight:700;color:var(--ink);text-align:right;background:transparent;margin:0;
  appearance:textfield;-moz-appearance:textfield}
.ptc-inp::-webkit-outer-spin-button,.ptc-inp::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ptc-inp:focus{outline:none;border-bottom:1px dashed var(--accent)}
.ptc-inp:disabled{opacity:.4}
/* стрелочки-шаг калькулятора: СПРАВА от числа, но АБСОЛЮТНО в зоне отступа ячейки —
   в потоке контента их нет, поэтому правый край цифр остаётся ровно по столбцу */
.pt-table tr.pt-calc td{position:relative}
.ptc-step{position:absolute;right:1px;top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;gap:1px}
.ptc-step button{border:0;background:transparent;padding:0;margin:0;cursor:pointer;
  font-size:9px;line-height:8px;color:var(--muted)}
.ptc-step button:hover{color:var(--accent-ink)}
/* заголовки таблицы сценариев — серые, как были, но жирнее и чуть крупнее (правка Vladi) */
.pt-table th{font-weight:700;color:var(--muted);font-size:12px}

/* ===== вкладка «Unit Ozon» (v46) — свои селекторы, WB-таблицу не трогаем ===== */
#tbl_ozu{font-size:12px}
#tbl_ozu td,#tbl_ozu th{padding:7px 8px}
#tbl_ozu td{white-space:nowrap}
#tbl_ozu th{white-space:normal;overflow-wrap:break-word;vertical-align:top;text-align:center;line-height:1.25}
#tbl_ozu thead th{position:sticky;top:0;z-index:3;background:var(--card);box-shadow:0 1px 0 var(--line);height:44px}
#tbl_ozu thead th:not([class*="oz-stick"]){min-width:60px;max-width:112px}
/* фикс. колонки: слева ТОЛЬКО Артикул (v65), справа Прибыль+Маржа+Рентаб. */
#tbl_ozu td.oz-stick-a,#tbl_ozu th.oz-stick-a{position:sticky;left:0;width:138px;min-width:138px;max-width:138px}
#tbl_ozu td.oz-stick-x,#tbl_ozu th.oz-stick-x{position:sticky;right:136px;width:80px;min-width:80px;max-width:80px}
#tbl_ozu td.oz-stick-y,#tbl_ozu th.oz-stick-y{position:sticky;right:68px;width:68px;min-width:68px;max-width:68px}
#tbl_ozu td.oz-stick-z,#tbl_ozu th.oz-stick-z{position:sticky;right:0;width:68px;min-width:68px;max-width:68px}
#tbl_ozu tbody td.oz-stick-a,#tbl_ozu tbody td.oz-stick-x,#tbl_ozu tbody td.oz-stick-y,#tbl_ozu tbody td.oz-stick-z{z-index:2;background:var(--card)}
#tbl_ozu thead th.oz-stick-a,#tbl_ozu thead th.oz-stick-x,#tbl_ozu thead th.oz-stick-y,#tbl_ozu thead th.oz-stick-z{z-index:4}
#tbl_ozu td.oz-stick-a{font-weight:600;box-shadow:2px 0 0 var(--line)}
#tbl_ozu th.oz-stick-a{box-shadow:2px 0 0 var(--line),0 1px 0 var(--line)}
#tbl_ozu td.oz-stick-x{box-shadow:-2px 0 0 var(--line)}
#tbl_ozu th.oz-stick-x{box-shadow:-2px 0 0 var(--line),0 1px 0 var(--line)}
#tbl_ozu tbody tr:nth-child(even){background:#fafbfc}
#tbl_ozu tbody tr:nth-child(even) td.oz-stick-a,#tbl_ozu tbody tr:nth-child(even) td.oz-stick-x,#tbl_ozu tbody tr:nth-child(even) td.oz-stick-y,#tbl_ozu tbody tr:nth-child(even) td.oz-stick-z{background:#fafbfc}
#tbl_ozu tbody tr:hover{background:#eef6f7}
#tbl_ozu tbody tr:hover td.oz-stick-a,#tbl_ozu tbody tr:hover td.oz-stick-x,#tbl_ozu tbody tr:hover td.oz-stick-y,#tbl_ozu tbody tr:hover td.oz-stick-z{background:#eef6f7}
/* v63: структура шаблона — двухрядная шапка (ряд секций + ряд колонок), селекты в ячейках */
#tbl_ozu thead tr.oz-sectrow th{position:sticky;top:0;height:24px;z-index:3;background:#eef2f6;
  font-size:11px;font-weight:700;color:#33475b;text-align:center;box-shadow:0 1px 0 var(--line);white-space:nowrap}
#tbl_ozu thead tr.oz-sectrow th.oz-sect-clk{cursor:pointer}
#tbl_ozu thead tr.oz-sectrow th.oz-sect-clk:hover{background:#e2ebf3}
#tbl_ozu thead tr:nth-child(2) th{top:24px;height:auto}
/* v67: заголовок секции «Прогноз» липнет справа вместе со своими фикс-колонками (Прибыль/Маржа/Рентаб.) */
#tbl_ozu thead tr.oz-sectrow th.oz-sect-stickr{position:sticky;top:0;right:0;z-index:5;
  box-shadow:-2px 0 0 var(--line),0 1px 0 var(--line)}
/* v64: селекты «Unit Ozon» — класс .u-edit → один-в-один с WB-юниткой (бирюзовый changed);
   грид допущений выровнен: метки разной длины, инпуты прижаты к низу строки */
#ozu_assume .ua-item>span:first-child{min-height:2.4em}                 /* место под 2 строки метки → инпуты на одной линии */
#ozu_assume .ua-in{margin-top:auto}
#ozu_assume .ua-in select.u-edit{width:100%;max-width:none;padding:6px 22px 6px 8px;border:1px solid var(--line);
  border-radius:7px;font-size:13px;font-weight:500;text-align:left}
/* v66: стрелка выпадающего списка — СБОКУ (кастомная), текст не наезжает, длинный обрезается «…» */
#tbl_ozu select.u-edit,#ozu_assume select.u-edit{-webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-color:#fff;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6'%3E%3Cpath d='M0 0l4.5 5.5L9 0z' fill='%236b7684'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 7px center;padding-right:22px;
  text-overflow:ellipsis;white-space:nowrap}
#tbl_ozu td select.u-edit{padding-right:20px}
/* v65: допущения в 3 строки (Общие / FBO / FBS) — подпись группы слева */
#ozu_assume{display:flex;flex-direction:column;gap:12px}
.ozu-arow{display:flex;align-items:stretch;gap:12px}
.ozu-arow-cap{flex:0 0 130px;font-size:11px;font-weight:700;color:#33475b;padding-top:3px;   /* 46→84→130: подписи групп просторно, в 1-2 строки (Vladi, сессия 43) */
  border-right:2px solid var(--line)}
.ozu-agrid{flex:1;display:grid;grid-template-columns:repeat(auto-fill,118px);gap:10px}   /* фикс-ширина 146→118: ячейки ещё уже (Vladi, сессия 43) */
details.unit-assume-card[open] .ozu-arow .ua-grid{margin-top:0}   /* убрать общий отступ у вложенных грид-строк */
/* v65: визуальное разделение секций — вертикальная граница между блоками + чередование фона шапки */
#tbl_ozu .oz-sd{border-left:2px solid #c3d0e0}
#tbl_ozu tbody td.oz-sd{padding-left:11px}
#tbl_ozu thead tr.oz-sectrow th.oz-salt1{background:#e4ebf3}
#tbl_ozu thead tr.oz-sectrow th.oz-salt0{background:#eef2f6}

/* ===== Unit Ozon v47 (аудит): выравнивание, справка WB, сортировка, флаги ===== */
#tbl_ozu td.oz-num{text-align:right}
#tbl_ozu td.oz-ref,#tbl_ozu th.oz-ref{background:#f4f6f9}
#tbl_ozu tbody tr:nth-child(even) td.oz-ref{background:#eef1f5}
#tbl_ozu th.oz-sortable{cursor:pointer}
#tbl_ozu th.oz-sortable:hover{background:#eef7f7}
#tbl_ozu th.oz-sorted{color:var(--accent-ink)}
input.u-edit.oz-miss{border-color:#d64545;background:#fdf2f2}
.excel-btn.ozu-2808{border-color:#e6b0ad;color:#c0392b;background:#fdf4f3}                 /* всегда чуть красноватая — сигнал «меняет тарифы глобально» */
.excel-btn.ozu-2808:hover{background:#fbe9e7;border-color:#d98b86}
.excel-btn.ozu-2808.active{background:#d64545;color:#fff;border-color:#d64545}             /* включено — ярко-красная */
.excel-btn.ozu-2808.active:hover{background:#c93b3b}
/* кнопки «скачать Excel» — темнее-серые с иконкой, чтобы не терялись на белом тулбаре */
#cost_export{background:#e8edf3;border-color:#c3ccd8;color:#3f4b5b}   /* Чат 91: #ozu_export теперь sec-btn */
#cost_export:hover{background:#dbe3ec;border-color:#a9b6c6;color:var(--accent-ink)}

/* v80: чекбоксы выбора строк + удаление/добавление артикулов «Unit Ozon» */
.oz-rowchk{margin:0 6px 0 0;vertical-align:middle;cursor:pointer}
.oz-vname{display:inline-block;max-width:104px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
#tbl_ozu td.oz-stick-a{overflow:hidden}   /* длинные артикулы не вылезают из закреплённой колонки (чекбокс съел место) */

/* v82: вкладка «Себестоимость» */
#tbl_cost{width:100%;border-collapse:collapse;font-size:13px}
#tbl_cost th,#tbl_cost td{padding:6px 9px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
#tbl_cost thead th{position:sticky;top:0;z-index:2;background:var(--card);box-shadow:0 1px 0 var(--line);font-size:11px;color:#33475b}
#tbl_cost td.oz-num,#tbl_cost th.oz-num{text-align:right}
#tbl_cost input.cost-in{width:84px;text-align:right}
#tbl_cost tbody tr:hover{background:#f4f8f8}
/* вкладка «Себестоимость»: двухуровневая шапка с блоками (Себестоимость товара / Доп-расходы) */
#tbl_cost thead tr:nth-child(2) th{top:29px;z-index:1}
#tbl_cost th.cost-grp{cursor:pointer;user-select:none;text-align:center;color:var(--ink);font-weight:700;border-left:1px solid var(--line);border-right:1px solid var(--line)}
#tbl_cost th.cost-grp:hover{background:#eef5f5}
#tbl_cost th.cost-tot-h{color:#0b7c7b}
#tbl_cost b.cost-tot{color:#0b7c7b}
#tbl_cost input.cost-note{width:160px;text-align:left}   /* полный текст — в тултипе (title) при наведении */
/* раскрывающаяся история версий себеса (клик по «🕘 N») */
#tbl_cost tr.cost-hist-row > td{background:#eef5f5;padding:0}
.cost-hist-box{padding:10px 14px;overflow-x:auto}
.cost-hist-head{font-weight:700;color:#0b7c7b;margin-bottom:6px;font-size:12px}
.cost-hist-tbl{border-collapse:collapse;font-size:12px;background:var(--card)}
.cost-hist-tbl th,.cost-hist-tbl td{padding:4px 10px;border:1px solid var(--line);white-space:nowrap;text-align:left}
.cost-hist-tbl th{background:#e3efef;color:#33475b;font-weight:600}
.cost-hist-tbl td.oz-num{text-align:right}
.cost-hist-tbl tr.cost-hist-cur td{background:#fffbea}
.cost-hist-badge{background:#0b7c7b;color:#fff;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:600;margin-left:4px}
.wh-btn.cost-hist.open{outline:2px solid #0b7c7b;outline-offset:1px}
.cost-vf{font-size:12px;color:#5a6b7b;display:flex;align-items:center;gap:5px}
.cost-vf input{width:145px}

/* Чат 110 (концепция Б): вид «Партии · FIFO» вкладки «Себестоимость» */
.cbt-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:10px;margin:10px 0}
.cbt-kpi{background:var(--card,#fff);border:1px solid var(--line,#dfe6ee);border-radius:12px;padding:10px 14px}
.cbt-kpi .l{font-size:11.5px;color:#66758c}
.cbt-kpi .v{font-size:21px;font-weight:800;letter-spacing:-.4px;margin:2px 0;font-variant-numeric:tabular-nums}
.cbt-kpi .s{font-size:11.5px;color:#66758c}
#tbl_cbt{border-collapse:collapse;width:100%;font-size:13px}
#tbl_cbt th{background:#f6f8fb;color:#66758c;font-weight:600;text-align:left;padding:7px 10px;border-bottom:1px solid var(--line,#dfe6ee);white-space:nowrap}
#tbl_cbt td{padding:7px 10px;border-bottom:1px solid #edf1f6;white-space:nowrap}
#tbl_cbt th.oz-num,#tbl_cbt td.oz-num{text-align:right;font-variant-numeric:tabular-nums}
#tbl_cbt tr.cbt-art:hover td{background:#f7fafd}
#tbl_cbt tr.cbt-sub>td{background:#f4f8ff;border-left:3px solid #1d5fd6;padding:6px 12px 10px}
.cbt-subbox{display:grid;gap:4px}
.cbt-brow{display:flex;align-items:center;gap:10px;font-size:12.5px;white-space:nowrap}
.cbt-brow .bl{min-width:330px}
.cbt-brow .bar{flex:1;height:9px;border-radius:99px;background:#e2e9f2;overflow:hidden;min-width:120px}
.cbt-brow .bar i{display:block;height:100%;border-radius:99px}
.cbt-brow .br{color:#66758c;font-variant-numeric:tabular-nums}
#tbl_cbt_log{border-collapse:collapse;width:100%;font-size:12.5px}
#tbl_cbt_log th{background:#f6f8fb;color:#66758c;font-weight:600;text-align:left;padding:6px 10px;border-bottom:1px solid var(--line,#dfe6ee)}
#tbl_cbt_log td{padding:6px 10px;border-bottom:1px solid #edf1f6}
#tbl_cbt_log th.oz-num,#tbl_cbt_log td.oz-num{text-align:right;font-variant-numeric:tabular-nums}

/* v83: сброс одной ячейки к посеву (↺) + всплывающий тост */
#tbl_ozu tbody td{position:relative}   /* sticky-ячейки (класс) специфичнее — остаются sticky */
.oz-reset{position:absolute;top:-1px;right:0;font-size:10px;line-height:1;cursor:pointer;color:#0b7c7b;background:var(--card);border-radius:3px;padding:0 1px;z-index:1}
.oz-reset:hover{color:#d64545}
/* Чат 211: «↺» у ячейки «Допущений» юниток (своя ставка вместо авто) улетал в правый верхний угол страницы —
   у .ua-in не было опоры для position:absolute. Теперь значок стоит в строке, сразу после единицы измерения */
#ozu_assume .ua-in .oz-reset,#uv_assume .ua-in .oz-reset{position:static;flex:none;font-size:15px;line-height:1;padding:2px 3px;margin-left:-2px}
.oz-toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#0b5c5b;color:#fff;padding:9px 16px;border-radius:9px;font-size:13px;z-index:9999;box-shadow:0 6px 18px rgba(0,0,0,.22)}
.oz-vname.oz-new{color:#0a7d33;font-weight:700}                       /* новый, ещё не сохранённый артикул */
#ozu_del:not(:disabled){border-color:#e0b4b4;color:#c0392b;background:#fdf5f5}
#ozu_del:not(:disabled):hover{background:#fbeaea}
/* с57: «↺ Сбросить правки» — та же красноватая подсветка, что у «Удалить», когда есть правки ячеек */
#ozu_reset_all:not(:disabled){border-color:#e0b4b4;color:#c0392b;background:#fdf5f5}
#ozu_reset_all:not(:disabled):hover{background:#fbeaea}
.excel-btn.ozu-savebtn{border-color:var(--accent);color:var(--accent-ink);background:#eefaf9}   /* «Сохранить» всегда бирюзовая (акцент) */
.excel-btn.ozu-savebtn:hover{background:#e0f5f4;border-color:var(--accent)}
.excel-btn.ozu-savebtn.ozu-dirty{background:var(--accent,#0b7c7b);color:#fff;border-color:var(--accent,#0b7c7b)}   /* есть несохранённое → залита */
#ozu_dirty{color:#b26a00;font-weight:600}

/* ===== Unit ВБ v2 (#tbl_uv) — те же структурные правила, что у #tbl_ozu (вид как Unit Ozon; sql/81) ===== */
#tbl_uv{font-size:12px}
#tbl_uv td,#tbl_uv th{padding:7px 8px}
#tbl_uv td{white-space:nowrap}
#tbl_uv th{white-space:normal;overflow-wrap:break-word;vertical-align:top;text-align:center;line-height:1.25}
#tbl_uv thead th{position:sticky;top:0;z-index:3;background:var(--card);box-shadow:0 1px 0 var(--line);height:44px}
#tbl_uv thead th:not([class*="oz-stick"]){min-width:60px;max-width:112px}
#tbl_uv td.oz-stick-a,#tbl_uv th.oz-stick-a{position:sticky;left:0;width:138px;min-width:138px;max-width:138px}
#tbl_uv td.oz-stick-x,#tbl_uv th.oz-stick-x{position:sticky;right:136px;width:80px;min-width:80px;max-width:80px}
#tbl_uv td.oz-stick-y,#tbl_uv th.oz-stick-y{position:sticky;right:68px;width:68px;min-width:68px;max-width:68px}
#tbl_uv td.oz-stick-z,#tbl_uv th.oz-stick-z{position:sticky;right:0;width:68px;min-width:68px;max-width:68px}
#tbl_uv tbody td.oz-stick-a,#tbl_uv tbody td.oz-stick-x,#tbl_uv tbody td.oz-stick-y,#tbl_uv tbody td.oz-stick-z{z-index:2;background:var(--card)}
#tbl_uv thead th.oz-stick-a,#tbl_uv thead th.oz-stick-x,#tbl_uv thead th.oz-stick-y,#tbl_uv thead th.oz-stick-z{z-index:4}
#tbl_uv td.oz-stick-a{font-weight:600;box-shadow:2px 0 0 var(--line);overflow:hidden}
#tbl_uv th.oz-stick-a{box-shadow:2px 0 0 var(--line),0 1px 0 var(--line)}
#tbl_uv td.oz-stick-x{box-shadow:-2px 0 0 var(--line)}
#tbl_uv th.oz-stick-x{box-shadow:-2px 0 0 var(--line),0 1px 0 var(--line)}
#tbl_uv tbody tr:nth-child(even){background:#fafbfc}
#tbl_uv tbody tr:nth-child(even) td.oz-stick-a,#tbl_uv tbody tr:nth-child(even) td.oz-stick-x,#tbl_uv tbody tr:nth-child(even) td.oz-stick-y,#tbl_uv tbody tr:nth-child(even) td.oz-stick-z{background:#fafbfc}
#tbl_uv tbody tr:hover{background:#eef6f7}
#tbl_uv tbody tr:hover td.oz-stick-a,#tbl_uv tbody tr:hover td.oz-stick-x,#tbl_uv tbody tr:hover td.oz-stick-y,#tbl_uv tbody tr:hover td.oz-stick-z{background:#eef6f7}
#tbl_uv thead tr.oz-sectrow th{position:sticky;top:0;height:24px;z-index:3;background:#eef2f6;font-size:11px;font-weight:700;color:#33475b;text-align:center;box-shadow:0 1px 0 var(--line);white-space:nowrap}
#tbl_uv thead tr.oz-sectrow th.oz-sect-clk{cursor:pointer}
#tbl_uv thead tr.oz-sectrow th.oz-sect-clk:hover{background:#e2ebf3}
#tbl_uv thead tr:nth-child(2) th{top:24px;height:auto}
#tbl_uv thead tr.oz-sectrow th.oz-sect-stickr{position:sticky;top:0;right:0;z-index:5;box-shadow:-2px 0 0 var(--line),0 1px 0 var(--line)}
#tbl_uv .oz-sd{border-left:2px solid #c3d0e0}
#tbl_uv tbody td.oz-sd{padding-left:11px}
#tbl_uv thead tr.oz-sectrow th.oz-salt1{background:#e4ebf3}
#tbl_uv thead tr.oz-sectrow th.oz-salt0{background:#eef2f6}
#tbl_uv td.oz-num{text-align:right}
#tbl_uv th.oz-sortable{cursor:pointer}
#tbl_uv th.oz-sortable:hover{background:#eef7f7}
#tbl_uv th.oz-sorted{color:var(--accent-ink)}
#tbl_uv tbody td{position:relative}
#tbl_uv select.u-edit{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6'%3E%3Cpath d='M0 0l4.5 5.5L9 0z' fill='%236b7684'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 7px center;padding-right:20px;text-overflow:ellipsis;white-space:nowrap}
#uv_assume{display:flex;flex-direction:column;gap:12px}
#uv_assume .ua-item>span:first-child{min-height:2.4em}
#uv_assume .ua-in{margin-top:auto}
#uv_assume .ua-in select.u-edit{width:100%;max-width:none;padding:6px 22px 6px 8px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-weight:500;text-align:left}
.uv-rowchk{margin:0 6px 0 0;vertical-align:middle;cursor:pointer}
.uv-tarwarn{margin-left:3px;color:#d97706;cursor:help;font-size:12px}   /* предмет строки не найден в тарифах WB */
#uv_del:not(:disabled){border-color:#e0b4b4;color:#c0392b;background:#fdf5f5}
#uv_del:not(:disabled):hover{background:#fbeaea}
#uv_export{background:#e8edf3;border-color:#c3ccd8;color:#3f4b5b}
#uv_export:hover{background:#dbe3ec;border-color:#a9b6c6;color:var(--accent-ink)}
#uv_dirty{color:#b26a00;font-weight:600}
.ozu-addform{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:6px 0 2px;padding:10px 12px;
  background:#f2f8f8;border:1px solid #bfe0df;border-radius:9px}
.ozu-addform .ozu-af-title{align-self:center;font-weight:700;color:#0b5c5b}
.ozu-addform label{display:flex;flex-direction:column;gap:3px;font-size:11px;color:#5a6b7b}
.ozu-addform input.u-edit{width:130px;text-align:left;font-weight:500}
.ozu-addform #oza_cogs,.ozu-addform #oza_price,.ozu-addform #oza_vol{width:96px;text-align:right}

/* «Потери»: свой вертикальный скролл — иначе sticky-шапка не работает (скроллила вся страница) */
.loss-scroll{max-height:calc(100vh - 200px);overflow:auto}
#tbl_loss thead th{z-index:2}
#tbl_loss tr.loss-total td{background:#f5f7fa}   /* липкой ячейке нужен свой фон, фон tr не едет */

/* «Куда грузить»: регион «н/д» (склады без региона) — справочный, сворачиваемый, последний */
details.ws-nd summary.ws-reghead{cursor:pointer;list-style:none;user-select:none}
details.ws-nd summary.ws-reghead::-webkit-details-marker{display:none}
details.ws-nd summary.ws-reghead::before{content:'▸';color:var(--muted);font-size:11px;margin-right:6px}
details.ws-nd[open] summary.ws-reghead::before{content:'▾'}
details.ws-nd .ws-regname{color:var(--muted)}
/* с59 (правка Vladi 15.08, п.4): сворачиваемым стал КАЖДЫЙ кластер «Куда грузить» Ozon —
   кнопке «Свернуть все / Развернуть все» иначе нечего сворачивать. Маркер и курсор теперь
   нужны всем summary.ws-reghead, а не только справочному «н/д» (правила выше оставлены
   как есть: у «н/д» сверх этого приглушённое имя и запрет выделения) */
details.ws-region>summary.ws-reghead{cursor:pointer;list-style:none;user-select:none}
details.ws-region>summary.ws-reghead::-webkit-details-marker{display:none}
details.ws-region>summary.ws-reghead::before{content:'\25b8';color:var(--muted);font-size:11px;margin-right:6px}
details.ws-region[open]>summary.ws-reghead::before{content:'\25be'}
/* свёрнутый кластер — самостоятельная плашка, низ тоже скруглён */
details.ws-region:not([open])>summary.ws-reghead{border-radius:9px}
.ws-ndhint{font-size:11px;color:var(--muted);border:1px dashed var(--line);border-radius:8px;padding:2px 8px;margin-left:auto}

/* «Пользователи» (v49): админка ролей — в общем стиле дашборда */
.usr-box{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;background:#fff}
.usr-top{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.usr-login-b{min-width:80px;font-size:14px}
.usr-box .u-login,.usr-box .u-name,.usr-box .u-pass{padding:8px 10px;border:1px solid var(--line);
  border-radius:8px;font-size:13px;color:var(--ink);background:#fff}
.usr-box input:focus{outline:none;border-color:var(--accent)}
.usr-flag{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-size:12.5px;
  color:var(--ink);cursor:pointer;user-select:none}
.usr-tabs{display:flex;gap:6px 16px;flex-wrap:wrap;margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.usr-tabs label{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-size:12.5px;
  color:var(--ink);cursor:pointer;user-select:none}
.usr-box input[type="checkbox"]{accent-color:var(--accent);width:15px;height:15px}
.usr-box input[type="checkbox"]:disabled+span,.usr-tabs input:disabled{opacity:.55}
.u-status{font-size:12px}

/* v50: галочки «берём в поставку» в виде «Отгрузки» («Что везти») */
.ship-pick-l{display:inline-flex;align-items:center;margin-right:8px;cursor:pointer}
.ship-pick-l input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
.wh-block.ship-selected>.wh-row{background:#f0faf9}
.wh-block.ship-selected .wh-name::after{content:' ✓ в поставку';color:var(--accent-ink);font-size:11px;font-weight:600}
.ship-selbar{border:1px solid var(--line);background:#fafbfc;border-radius:10px;padding:10px 14px;
  margin:0 0 12px;font-size:13px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.ship-selbar b{color:var(--accent-ink)}
.ship-selbar .wh-btn{padding:5px 10px;font-size:12px}

/* v51: галочки по складам в виде «Отгрузки» */
.ship-whbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;width:100%;padding-top:8px;
  border-top:1px dashed var(--line);margin-top:2px}
.ship-wh-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);
  border-radius:16px;padding:4px 12px;font-size:12.5px;cursor:pointer;user-select:none;background:#fff}
.ship-wh-chip input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}
.ship-wh-chip.on{border-color:#b8e6e4;background:#f0faf9;font-weight:600}
th.ship-wh-off{opacity:.4;text-decoration:line-through}
td.ship-wh-off{opacity:.35}

/* v52: размеры без потребности в матрице «Отгрузок» — видны, но приглушены */
.ship-zero-row td{opacity:.55}

/* v53: колонка «ост.» (текущий остаток склада) рядом с «везти» в матрице «Отгрузок» */
.ship-tbl th.ship-st,.ship-tbl td.ship-st{color:var(--muted);background:#fafbfc;font-size:12px;
  border-left:1px dashed var(--line)}

/* v53.1: «везти»+«ост.» = визуальный блок склада (двухэтажная шапка, границы, чередование фона) */
.ship-tbl th.ship-whgrp{text-align:center;border-left:2px solid #d8dee6;border-bottom:1px dashed var(--line)}
.ship-tbl .ship-sub{font-weight:500;font-size:11px;color:var(--muted)}
.ship-tbl .ship-grp-l{border-left:2px solid #d8dee6}
.ship-tbl .ship-st{border-left:1px dashed var(--line)}
.ship-tbl .ship-alt{background:transparent}
.ship-tbl td.ship-st.ship-alt,.ship-tbl th.ship-st.ship-alt{background:#fafbfc}

/* v54: правка «везти» прямо в матрице «Отгрузок» */
.ship-need-inp{width:64px;padding:5px 6px;border:1px solid transparent;border-radius:7px;
  font-size:13px;font-weight:600;text-align:right;color:var(--ink);background:transparent}
.ship-need-inp:hover{border-color:var(--line);background:#fff}
.ship-need-inp:focus{outline:none;border-color:var(--accent);background:#fff}
.ship-need-inp.ov{border-color:#e8b93c;background:#fff8e6;color:#8a6d1a}
.ship-need-inp:disabled{opacity:.4;background:transparent;border-color:transparent}
.ship-need-inp::-webkit-outer-spin-button,.ship-need-inp::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ship-need-inp{-moz-appearance:textfield;appearance:textfield}
.ship-ov-note{color:#8a6d1a}

/* v54.2: колонка «Итого» — в цвет раскрытой шапки артикула (.wh-row.open), чтобы не сливалась со складами */
.ship-tbl th.ship-tot,.ship-tbl td.ship-tot{background:#f1f7f7;border-left:2px solid #d8dee6}

/* v55: Exposure — колонки «Остаток, шт» и «Обор., дн» (по заказам) + шапка списка.
   Колонки по ширине содержимого (auto) + выравнивание ВПРАВО, как «По закупке»/«Доля»:
   у чисел разной длины ровный правый край = чистая вертикальная линия (центрирование давало
   рваные края — Vladi поймал: выглядело криво). */
.rr-qty{font-variant-numeric:tabular-nums;font-size:13px;color:var(--ink);text-align:right;white-space:nowrap}
.rr-days{font-variant-numeric:tabular-nums;font-size:13px;color:var(--muted);text-align:right;white-space:nowrap;transform:translateX(7px)}
/* переключатель периода оборачиваемости в шапке Exposure (Vladi 03.08) */
.turn-period{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-self:start}
.tp-cap{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.tp-btn{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:6px;padding:2px 8px;font-size:11.5px;font-weight:600;line-height:1.5;cursor:pointer;font-variant-numeric:tabular-nums;white-space:nowrap}
.tp-btn:hover{border-color:#7c5cf0;color:#7c5cf0}
.tp-btn.on{background:#7c5cf0;border-color:#7c5cf0;color:#fff}
.tp-reset{margin-left:3px}
/* «Что везти»: переключатель «Окно продаж» (дублирует логику «Куда грузить») */
.plan-winseg{display:inline-flex;align-items:center;gap:2px;background:#f1f5f9;border:1px solid var(--line);border-radius:9px;padding:3px;flex:none;white-space:nowrap}
.winseg-cap{font-size:11px;color:var(--muted);padding:0 6px 0 4px;white-space:nowrap}
.winseg-cap-out{padding:0 2px 0 6px}
.plan-winseg .pseg-btn{padding:6px 10px}
#supply_plan_card > .plan-actions{margin-top:12px}
.risk-row-head{border:none;background:transparent;padding-top:0;padding-bottom:2px}
.rr-head-cap{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;
  text-align:right;font-weight:600;white-space:nowrap}
.rr-name.rr-head-cap{text-align:left}
@media (max-width:640px){
  .risk-row-head{display:none}
  .risk-row{grid-template-columns:40px 1fr auto auto}
  .risk-row .rr-qty,.risk-row .rr-days{display:none}
}
.rnp-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);
  border-radius:20px;padding:4px 10px;font-size:12.5px;color:var(--ink);cursor:pointer}
.rnp-chip:hover{border-color:var(--accent)}
.rnp-chip.active{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.rnp-chip-n{background:#eef1f5;color:#64748b;border-radius:12px;padding:1px 6px;font-size:10.5px}
.rnp-chip.active .rnp-chip-n{background:var(--accent-line);color:var(--accent-ink)}
/* «+N без заказов» — нулевые артикулы схлопнуты за пунктирным чипом-тоглом */
.rnp-chip-more{border-style:dashed;color:var(--muted);background:var(--bg)}
.rnp-chip-more.on,.rnp-chip-more:hover{color:var(--accent-ink);border-color:var(--accent);background:var(--card)}
.rnp-chip.rnp-chip-zero{opacity:.75}
.rnp-chip-sz{background:var(--accent-tint);color:var(--accent-ink)}
/* период: кнопка-диапазон + календарь-поповер, фильтры категория/бренд */
.rnp-period{position:relative}
.rnp-period-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:20px;
  background:var(--card);color:var(--ink);font-size:13px;padding:7px 14px;cursor:pointer;white-space:nowrap}
.rnp-period-btn:hover{border-color:var(--accent)}
.rnp-period-n{background:#eef1f5;color:#64748b;border-radius:12px;padding:1px 8px;font-size:11px}
.rnp-cal-pop{position:absolute;z-index:70;top:calc(100% + 6px);left:0;background:var(--card);
  border:1px solid var(--line);border-radius:12px;padding:12px 20px;box-shadow:0 8px 28px rgba(0,0,0,.12);min-width:540px}
.rnp-cal-top{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.rnp-cal-preset{border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);
  font-size:12px;padding:5px 12px;cursor:pointer}
.rnp-cal-preset:hover{border-color:var(--accent);background:var(--accent-tint)}
.rnp-cal-hint{color:var(--muted);font-size:12px;margin-left:auto}
.rnp-cal-months{display:flex;gap:20px;align-items:flex-start;position:relative}
.rnp-cal-m{flex:1}
.rnp-cal-mh{text-align:center;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:6px;text-transform:capitalize}
.rnp-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.rnp-cal-dow{text-align:center;font-size:11px;color:var(--muted);padding:2px 0}
.rnp-cal-cell{text-align:center;font-size:12.5px;padding:6px 0;border-radius:6px;cursor:pointer;color:var(--ink)}
.rnp-cal-cell:hover:not(.empty):not(.future){background:var(--accent-tint)}
.rnp-cal-cell.empty{cursor:default}
.rnp-cal-cell.future{color:#cbd5e1;cursor:default}
.rnp-cal-cell.in{background:var(--accent-line)}
.rnp-cal-cell.edge{background:var(--accent);color:#fff;font-weight:600}
.rnp-cal-arrow{position:absolute;top:-2px;border:1px solid var(--line);border-radius:6px;background:var(--card);
  cursor:pointer;width:26px;height:26px;color:#475569;display:flex;align-items:center;justify-content:center;
  font-size:18px;line-height:1;padding:0}
.rnp-cal-arrow:hover{border-color:var(--accent);color:var(--accent-ink)}
.rnp-cal-arrow[data-nav="-1"]{left:-14px}
.rnp-cal-arrow-r{right:-14px}

/* ===== База знаний ===== */
.kb-rule{display:flex;gap:14px;align-items:flex-start;background:var(--accent-tint);border-color:var(--accent)}
.kb-rule-ico{font-size:22px;line-height:1;flex-shrink:0}
.kb-rule-title{font-weight:800;color:var(--accent-ink);font-size:15px;margin-bottom:4px}
.kb-rule-text{color:var(--ink);font-size:13.5px;line-height:1.5}
.kb-art-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.kb-art-date{color:var(--muted);font-size:12px;white-space:nowrap}
.kb-p{color:var(--ink);font-size:13.5px;line-height:1.6;margin:0 0 14px}
.kb-figure{border:1px solid var(--line);border-radius:12px;background:#fbfcfe;padding:12px;margin:0 0 16px;overflow-x:auto}
.kb-figure svg{display:block;max-width:100%;height:auto;margin:0 auto}
.kb-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0 0 14px}
.kb-col{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fbfcfe}
.kb-col-h{font-weight:700;color:var(--ink);font-size:13px;margin-bottom:8px}
.kb-col ul{margin:0;padding-left:18px;color:var(--muted);font-size:13px;line-height:1.7}
.kb-table{border-collapse:collapse;width:100%;font-size:12.5px;margin:6px 0 12px;background:#fff} /* Чат 72: таблицы разборов в БЗ */
.kb-table th,.kb-table td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top;line-height:1.45}
.kb-table th{background:#f3f6fa;font-weight:700;color:var(--ink)}
.kb-flash{outline:2px solid var(--accent);outline-offset:4px;border-radius:12px;transition:outline-color .6s} /* Чат 72: подсветка цели перехода из раздела */
.kb-note{border-left:3px solid var(--accent);background:var(--accent-tint2);border-radius:0 8px 8px 0;padding:10px 14px;margin:0 0 10px;color:var(--ink);font-size:13px;line-height:1.55}
@media(max-width:720px){.kb-cols{grid-template-columns:1fr}}

/* «Замороженные деньги» Ozon: фиксируем раскладку — «Хранение ₽/30дн» вставало вплотную к
   «Что делать», хотя должно стоять посередине между ним и «Заморожено ₽» (правка Vladi 12.08) */
#tbl_oz_illiq{table-layout:fixed}
#tbl_oz_illiq th:nth-child(1){width:22%}
#tbl_oz_illiq th:nth-child(2){width:11%}
#tbl_oz_illiq th:nth-child(3){width:12%}
#tbl_oz_illiq th:nth-child(4){width:15%}
#tbl_oz_illiq th:nth-child(5){width:15%}
#tbl_oz_illiq th:nth-child(6){width:25%}
/* фильтр «Хватит дней ≤» внутри строки шкалы — прижат вправо */
.cov-filter-inline{margin-left:auto}

/* строка-указатель «Поставки» на вкладке «Остатки» (сам блок сверки переехал в свой раздел) */
.oz-supbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 18px;
  padding:10px 14px;background:var(--accent-tint,#eaf1ff);border:1px solid var(--accent-line,#c7dcff);
  border-radius:10px;font-size:13px}
.oz-supbar-txt{flex:1 1 auto}

/* ===== вкладка «Поставки» ===== */
.sup-card{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;background:var(--card)}
.sup-card.open{box-shadow:var(--shadow)}
.sup-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;cursor:pointer}
.sup-head:hover{background:#f8fafc}
.sup-num{font-weight:700;font-size:13.5px}
.sup-wh{color:var(--muted);font-size:12.5px}
.sup-sum{font-size:13px}
.sup-age{margin-left:auto;color:var(--muted);font-size:12px}
.sup-body{padding:0 14px 14px}
.sup-timeline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 12px;
  padding:10px 12px;background:#f8fafc;border:1px solid var(--line);border-radius:9px}
.sup-tl-step{display:flex;align-items:center;gap:7px}
.sup-tl-date{color:var(--muted);font-size:11.5px}
.sup-tl-arrow{color:#94a3b8}
#tbl_sup_short td:nth-child(5),#tbl_sup_short td:nth-child(6){font-weight:600}
.sup-pending td{opacity:.62}
.sup-tag{font-size:10.5px;color:#475569;background:#f1f5f9;border:1px solid #cbd5e1;
  border-radius:6px;padding:1px 6px;cursor:help}

/* =====================================================================
   с50: СКИН «КАБИНЕТ» для РНП (превью одобрил Vladi 13.08.2026; с54 — общий
   для ОБОИХ каналов: Ozon в синем #005BFF, WB в фиолете — цвет даёт подмена
   токенов --accent* по body[data-ch], сами правила скина одни на два канала).
   Включается классом skin-oz на <body>: кнопка «Стиль Ozon|WB / Классика» в
   заголовке панели (rnp.js; localStorage У КАЖДОГО канала свой —
   rnp_skin_ozon / rnp_skin_wb; по умолчанию ВКЛЮЧЁН). Все селекторы требуют
   body[data-ch="ozon"|"wb"] — на остальном дашборде класс безвреден;
   «Классика» = ни одно правило скина не активно, прежнее оформление лежит
   выше нетронутым.
   Язык кабинета Ozon Seller (снят со скринов Vladi): белая подложка панели,
   серые контейнеры-секции r16, белые карточки r12 без рамок, пилюли-кнопки,
   тонкие линии вместо цветных заливок в шапках таблиц, выходные — красной
   датой (как ось графика кабинета), сегодня — цветом канала. */
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz{
  --oz-sec:#f2f5f8;        /* серый контейнер секции */
  --oz-line:#e7ebef;       /* тонкие рамки/разделители */
  --oz-dim:#8b95a1;        /* вторичный серый текст */
  --oz-g:#00a650;  --oz-gt:#e4f6ec;   /* рост / прибыль + подложка */
  --oz-a:#c77700;  --oz-at:#fff3e0;   /* предупреждение + подложка */
  --oz-r:#e5124d;  --oz-rt:#fdecf1;   /* тревога (читаемый текст-красный) + подложка */
  --oz-we:#ff4257;         /* выходные в шапке дат */
}
/* --- чипы и контролы: прямоугольные r9, как фильтры кабинета; активный — белый с синей рамкой --- */
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip,
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-period-btn{border-color:var(--oz-line);border-radius:9px}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip{padding:5px 11px}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip.active{background:var(--card);border-color:var(--accent);
  box-shadow:inset 0 0 0 1px var(--accent);color:var(--accent)}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip.active .rnp-chip-n{background:var(--accent-tint);color:var(--accent)}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip-sz{background:var(--accent-tint);color:var(--accent-ink)}
/* с54: скин доступен на обоих каналах — тумблер виден и на РНП·WB (подпись меняет rnp.js) */
.rnp-skin-seg .seg-btn{padding:5px 11px;font-size:12px}

/* =====================================================================
   с51: ПРАВКИ ДИЗАЙН-АУДИТА скина (Vladi утвердил план целиком, 13.08.2026).
   Всё ниже — продолжение того же скина: действует только при
   body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz, «Классика» и РНП·WB не затронуты.
   Двойные иконки: .rnp-ico-e (эмодзи, для «Классики») / .rnp-ico-s (SVG, для скина). */
.rnp-ico-s{display:none;vertical-align:-2.5px}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-ico-s{display:inline-block}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-ico-e{display:none}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip-more{border-style:solid;background:var(--oz-sec);color:var(--oz-dim)}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-cal-pop{border-color:var(--oz-line)}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-cal-preset{border-radius:9px;border-color:var(--oz-line)}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-cal-arrow{border-radius:8px;border-color:var(--oz-line)}

/* =====================================================================
   с52: правки Vladi по глазам (13.08.2026) — всё так же только под скином. */
/* Ховеры вернулись: скин перебил базовые :hover большей специфичностью (чипы/сегменты
   выглядели «мёртвыми» при наведении). Реакция — лёгкий серый, как в кабинете. */
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip:hover{background:#f5f8fa;border-color:#d7dee6}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip.active:hover{background:var(--card);border-color:var(--accent)}

body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-period-btn:hover{background:#f5f8fa;border-color:#d7dee6}
body:is([data-ch="ozon"],[data-ch="wb"]).skin-oz .rnp-chip-more:hover{background:#e9eef3}

/* ===== Канал WB: те же токены, фиолетовая палитра (сессия 48, вкладка «РНП · WB») =====
   Панель РНП одна на два канала, поэтому цвет — единственное, что отличает вид: значения
   токенов подменяются на <body data-ch="wb">, ни одно правило .rnp-* не дублируется. */
body[data-ch="wb"]{
  --accent:#7c3aed; --accent-ink:#5b21b6;   /* фирменный фиолет WB (≈ #7D2AE8 брендбука) */
  --accent-tint:#f3e8ff;                    /* заливка-подложка (шапки блоков, активный пункт) */
  --accent-tint-h:#e9d5ff;                  /* она же под курсором */
  --accent-tint2:#faf5ff;                   /* самая светлая подложка */
  --accent-line:#ddd0f7;                    /* граница в тон акценту */
  --accent-wsub:#6d5aa8;                    /* мелкая подпись на подложке — фиолетово-серый (как у Ozon синий #3d5fa8) */
  --accent-hot:#cb11ab;                     /* «горячий» акцент = фуксия WB (у Ozon — малиновый #f91155) */
}
/* причал панели РНП: сам по себе ничего не рисует, панель просто переезжает между вкладками */
.rnp-mount{display:block}

/* ==========================================================================
   с55-3: МЕНЮ «Каналы сверху» (вариант Б, выбор Vladi, сессия 52).
   Стилистика «кабинета»: Onest, разделы-подписи капсом, SVG-иконки stroke,
   точки-цвета каналов у заголовков разделов, бейджи нов./скоро/админ.
   Активный пункт красится токенами канала: switchTab ставит body[data-ch]
   по ЗОНЕ меню (WB-вкладки — фиолет, Ozon — синий, общие — базовый акцент). */
.sidebar{font-family:'Onest',-apple-system,'Segoe UI',Roboto,sans-serif}
.nav-group{font-size:10.5px;letter-spacing:.8px;font-weight:600;color:#8b95a1;padding:14px 12px 5px}
.nav-group.nav-ch{display:flex;align-items:center;gap:7px}
.nav-dot{flex:none;width:7px;height:7px;border-radius:50%}
.nav-dot.wb{background:#7c3aed}
.nav-dot.oz{background:#005bff}
.nav-item{font-size:13.5px}
.nav-ico{display:flex;align-items:center;justify-content:center}
.nav-ico svg{width:16px;height:16px;color:#67717d;display:block}
.nav-item.active .nav-ico svg{color:var(--accent-ink)}
.nav-badge{margin-left:auto;font-size:10px;font-weight:600;border-radius:6px;padding:1.5px 6px;line-height:1.5;flex:none}
.nav-badge.new{background:#e4f6ec;color:#00a650}
.nav-badge.soon{background:#fff3e0;color:#c77700}
.nav-badge.adm{background:#f2f5f8;color:#8b95a1}
.nav-dots{margin-left:auto;display:inline-flex;gap:3px;flex:none}
.nav-dots .nav-dot{width:6px;height:6px}

/* --- вкладка «Монитор данных» (с55-3) --- */
.mon-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;margin-bottom:14px}
.mon-ch-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}
.mon-tbl{width:100%;border-collapse:collapse;font-size:13px}
.mon-tbl th{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);
  text-align:left;padding:6px 8px;border-bottom:1px solid #e7ebef}
.mon-tbl td{padding:7px 8px;border-bottom:1px solid #eef0f2}
.mon-tbl tr:last-child td{border-bottom:none}
.mon-num{text-align:right;font-variant-numeric:tabular-nums}
.mon-b{font-size:11px;font-weight:600;border-radius:6px;padding:2px 8px;white-space:nowrap}
.mon-ok{background:#e4f6ec;color:#00a650}
.mon-warn{background:#fff3e0;color:#c77700}
.mon-err{background:#fdecf1;color:#e5124d}
.mon-none{background:#f2f5f8;color:#8b95a1}

/* ==========================================================================
   с55-4: ФИНАЛ МЕНЮ (выбор Vladi) — структура «Чипы» (смысловые секции) +
   шапка «Цветная»: карточка в тинте канала с брендом и сегментом WB/Ozon.
   Канал переключает JS (applyDashChannel): класс ch-ozon на .sidebar. */
.side-banner{margin:10px 10px 4px;border-radius:11px;padding:12px 12px 10px;background:#f3e8ff}
.sidebar.ch-ozon .side-banner{background:#eaf1ff}
.sb-top{display:flex;align-items:baseline;gap:7px}
.side-banner .brand-mark{font-size:17px;font-weight:800;letter-spacing:-.2px;color:var(--ink)}
.sb-ch{font-size:12px;font-weight:600;color:#5b21b6}
.sidebar.ch-ozon .sb-ch{color:#0047cc}
.sb-seg{display:flex;background:rgba(255,255,255,.72);border-radius:10px;padding:2px;gap:2px;margin-top:9px}
.sb-seg button{flex:1;border:0;background:transparent;border-radius:8px;padding:6px 0;font:inherit;
  font-size:13px;font-weight:600;color:#67717d;cursor:pointer;display:flex;align-items:center;
  justify-content:center;gap:6px}
.sb-seg button.on{background:#fff;box-shadow:0 1px 2px rgba(0,26,52,.08);color:#5b21b6}
.sidebar.ch-ozon .sb-seg button.on{color:#0047cc}
.sdot{width:7px;height:7px;border-radius:50%;flex:none}
.sdot-wb{background:#7c3aed}
.sdot-oz{background:#005bff}
/* точка канала у канало-зависимых пунктов меню: цвет = канал шапки */
.nav-dot.chn{margin-left:auto;background:#7c3aed}
.sidebar.ch-ozon .nav-dot.chn{background:#005bff}
.nav-dot.chn + .nav-badge{margin-left:6px}

/* ===================== SEO · Ozon (с57, sql/86+106) ===================== */
.seo-tblwrap{overflow:auto;max-height:480px;margin-top:8px}
.seo-tblwrap thead th{position:sticky;top:0;background:#fff;z-index:1}
.seo-tbl th[data-sort]{cursor:pointer;white-space:nowrap;user-select:none}
.seo-tbl th.seo-sorted{color:var(--accent-ink,#0b7c7b)}
.seo-q-cell{max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seo-charts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:10px 0 4px}
@media (max-width:960px){.seo-charts{grid-template-columns:1fr}}
.seo-ch-t{font-size:12px;color:var(--muted,#68727d);margin-bottom:2px}
.seo-ch{border:1px solid var(--line,#e7ebef);border-radius:10px;padding:4px 6px;background:#fff}
.seo-up{color:#0f9d6b;font-weight:600;white-space:nowrap}
.seo-down{color:#d64545;font-weight:600;white-space:nowrap}
.seo-new{color:#0b7c7b;font-weight:600;font-size:12px;white-space:nowrap}
.seo-pi-red{color:#d64545;font-weight:600;white-space:nowrap}
.seo-pi-yellow{color:#c77700;font-weight:600;white-space:nowrap}
.seo-pi-green{color:#0f9d6b;font-weight:600;white-space:nowrap}
#seo_tiles{margin-bottom:12px}
#seo_q_find{max-width:200px}

/* ===== Отзывы · Ozon (с58, sql/101+107): лента, темы, вопросы, рейтинг продавца ===== */
#fb_tiles{margin-bottom:12px}
.fb-tile-bad .ut-val{color:#d64545}
.fb-tile-warn .ut-val{color:#c77700}
.fb-chips{display:inline-flex;gap:6px;flex-wrap:wrap;vertical-align:middle}
.fb-chip{border:1px solid var(--accent-line,#d6dde6);background:transparent;border-radius:999px;
  padding:3px 12px;font-size:12.5px;cursor:pointer;color:inherit;white-space:nowrap}
.fb-chip:hover{background:var(--accent-tint,#eef3fb)}
.fb-chip.on{background:var(--accent,#005bff);border-color:var(--accent,#005bff);color:#fff;font-weight:600}
#fb_find{max-width:180px}
.fb-item{border-top:1px solid #edf1f5;padding:10px 2px}
.fb-item:first-child{border-top:none}
.fb-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
.fb-stars{color:#c77700;font-weight:700;letter-spacing:1px;white-space:nowrap}
.fb-stars i{font-style:normal;font-size:11px;color:#8b95a1;margin-left:3px}
.fb-stars.fb-neg{color:#d64545}
.fb-art{font-weight:600}
.fb-badge{font-size:11px;padding:1px 8px;border-radius:999px;white-space:nowrap}
.fb-noans{background:#fdeaea;color:#c0392b}
.fb-ans{background:#e7f6ef;color:#0f7c53}
.fb-cancel{background:#fff4e0;color:#b06000}
.fb-tps{display:inline-flex;gap:4px;flex-wrap:wrap}
.fb-topic{font-size:11px;padding:1px 7px;border-radius:999px;background:#f0f3f7;color:#5a6675;white-space:nowrap}
.fb-t-minus{background:#fdeaea;color:#c0392b}
.fb-t-plus{background:#e7f6ef;color:#0f7c53}
.fb-text{font-size:13.5px;line-height:1.5;margin-top:5px;white-space:pre-line}
.fb-media{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap;align-items:center}
.fb-media img{height:72px;width:auto;border-radius:6px;border:1px solid #e3e8ee;display:block}
.fb-media a:hover img{border-color:var(--accent,#005bff)}
.fb-video{font-size:12px;border:1px solid var(--accent-line,#d6dde6);border-radius:6px;
  padding:26px 12px;color:var(--accent,#005bff);text-decoration:none;white-space:nowrap}
.fb-video:hover{background:var(--accent-tint,#eef3fb)}
.fb-answer{margin-top:7px;font-size:12.5px;line-height:1.45;color:#5a6675;background:#f6f8fa;
  border-left:3px solid var(--accent,#005bff);border-radius:0 6px 6px 0;padding:6px 10px}
.fb-morewrap{text-align:center;margin-top:10px}
.fb-more{border:1px solid var(--accent-line,#d6dde6);background:transparent;border-radius:8px;
  padding:6px 22px;font-size:13px;cursor:pointer;color:var(--accent,#005bff)}
.fb-more:hover{background:var(--accent-tint,#eef3fb)}
.fb-artlink{cursor:pointer;color:var(--accent,#005bff);font-weight:600}
.fb-artlink:hover{text-decoration:underline}
.fb-arch td{color:#8b95a1}
.fb-spark{width:76px;height:20px;color:var(--accent,#005bff);display:block}
.fb-sparkcell{min-width:84px}
.fb-topics{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:6px}
.fb-tcol-t{font-weight:600;font-size:13px;margin-bottom:6px}
.fb-trow{display:flex;align-items:center;gap:8px;margin:3px 0;font-size:12.5px}
.fb-tlbl{flex:0 0 96px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fb-tbar{flex:1;height:8px;border-radius:4px;background:#eef1f5;position:relative;overflow:hidden}
.fb-tbar i{position:absolute;left:0;top:0;bottom:0;border-radius:4px}
.fb-bar-bad{background:#e07070}
.fb-bar-good{background:#4cb98a}
.fb-tn{flex:0 0 34px;text-align:right;font-variant-numeric:tabular-nums}
.fb-qtext{max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fb-rgroup td{font-weight:700;font-size:12px;color:#5a6675;background:#f6f8fa;padding-top:8px}
.fb-rmeta td{color:#8b95a1}
@media (max-width: 1100px){ .fb-topics{grid-template-columns:1fr} }

/* ===== «Что везти» по кластерам Ozon (с58, sql/108) ===== */
.ozv-headline{font-size:14px;margin:8px 0 10px;padding:8px 12px;background:var(--accent-tint2,#f4f8ff);border-radius:10px}
.ozv-zero{color:var(--oz-r,#c0392b);font-weight:600;white-space:nowrap}
.ozv-cl{border:1px solid var(--oz-line,#e3e8ee);border-radius:12px;margin:8px 0;padding:0 12px;background:var(--card,#fff)}
.ozv-cl summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap;cursor:pointer;
  padding:10px 0;list-style:none;font-size:13.5px}
.ozv-cl summary::-webkit-details-marker{display:none}
.ozv-cl summary::before{content:"▸";color:var(--oz-dim,#8b95a1);transition:transform .15s}
.ozv-cl[open] summary::before{transform:rotate(90deg)}
.ozv-clname{font-weight:700}
.ozv-clmeta{color:var(--oz-dim,#5a6675);font-size:12.5px}
.ozv-clneed{margin-left:auto;white-space:nowrap}
.ozv-badge{font-size:11.5px;padding:2px 9px;border-radius:999px;background:var(--oz-sec,#eef1f5);color:var(--oz-dim,#5a6675);white-space:nowrap}
.ozv-b-over{background:var(--oz-rt,#fdeaea);color:var(--oz-r,#c0392b)}
.ozv-b-under{background:var(--oz-gt,#e7f6ef);color:var(--oz-g,#0f7c53)}
.ozv-tbl{width:100%;border-collapse:collapse;font-size:13px;margin:0 0 10px}
.ozv-tbl th{font-size:11.5px;color:var(--oz-dim,#5a6675);text-align:left;padding:5px 8px;border-bottom:1px solid var(--oz-line,#e3e8ee)}
.ozv-tbl th.num,.ozv-tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.ozv-tbl td{padding:4px 8px;border-bottom:1px solid #f1f4f7}
.ozv-artrow td{border-top:1px solid var(--oz-line,#e3e8ee)}
.ozv-sumrow td{font-weight:600;background:var(--oz-sec,#f6f8fa)}
/* --- с59 (правка Vladi п.6): таблица ВНУТРИ кластера пересобрана по образцу
   WB-блока «Что везти» (карточка #supply_plan_card_v2, вид «По складам») —
   с ночной правкой Vladi 15.08 колонок ТРИНАДЦАТЬ (добавлен SKU перед
   «Размером»): Артикул | Класс | SKU | Размер | Баркод | Заказов/день |
   Остаток | Едет | Хватит дней | Размеров в нуле | Сезон | Везти, шт | Сумма ₽.
   Разметка двухэтажная, как у WB-образца (.wa-art-row / .wa-size-row): строка
   АРТИКУЛА — кликабельный агрегат ПО ЭТОМУ КЛАСТЕРУ, под ней скрытые строки
   размеров с баркодами (фронт держит их на атрибуте hidden).
   Модификатор .ozv-plan сегодня единственный носитель .ozv-tbl: вид «По
   товару» с матрицей «размер × кластер» удалён той же правкой, класса
   .ozv-matrix в index.html больше нет (проверено grep-ом). Модификатор
   оставлен на случай второй таблицы блока.
   Скролл — ВНУТРИ обёртки .ozs-scroll (правило блока Б7 ниже, переиспользуем
   вместо второй такой же): 13 колонок в карточку кластера влезают не всегда,
   но страница по горизонтали ехать не должна.
   Токены с фолбэками: базовые .ozv-* живут вне скоупа .skin-cab. --- */
/* страховка: широкая таблица не должна тащить за собой ВСЮ страницу — карточка
   кластера сама себе контейнер скролла, даже если обёртку .ozs-scroll забыли */
.ozv-cl{overflow-x:auto}
.ozv-tbl.ozv-plan{width:100%;min-width:960px;table-layout:auto}
.ozv-plan th{padding:5px 7px;white-space:normal;line-height:1.25;vertical-align:bottom}
.ozv-plan td{padding:5px 7px;white-space:nowrap}
/* ширины-опоры: текстовые колонки не схлопываются, числовые не раздуваются.
   Заголовкам разрешён перенос («Заказов/день» в две строки) — так 13 колонок
   держатся в ~960px, а на узком окне обёртка даёт горизонтальный скролл.
   ⚠️ нумерация СДВИНУТА на единицу начиная с «Размера»: третьей колонкой встал
   SKU (правка Vladi 15.08, ночь). 1 Артикул, 2 Класс, 3 SKU, 4 Размер,
   5 Баркод, 6 Заказов/день, 7 Остаток, 8 Едет, 9 Хватит дней,
   10 Размеров в нуле, 11 Сезон, 12 Везти шт, 13 Сумма ₽ */
.ozv-plan th:nth-child(1){min-width:132px}
.ozv-plan th:nth-child(2){min-width:46px}
.ozv-plan th:nth-child(3){min-width:92px}
.ozv-plan th:nth-child(4){min-width:66px}
.ozv-plan th:nth-child(5){min-width:104px}
.ozv-plan th:nth-child(6),.ozv-plan th:nth-child(10){min-width:62px}
.ozv-plan th:nth-child(7),.ozv-plan th:nth-child(8),
.ozv-plan th:nth-child(9),.ozv-plan th:nth-child(11){min-width:52px}
.ozv-plan th:nth-child(12),.ozv-plan th:nth-child(13){min-width:66px}
/* строка артикула: агрегат по кластеру — заметнее соседей (плотнее шрифт, лёгкая
   подложка, курсор-указатель); маркер ▸ фронт кладёт в первую ячейку */
.ozv-plan tr.ozv-artrow{cursor:pointer}
.ozv-plan tr.ozv-artrow>td{background:var(--oz-sec,#f6f8fa);font-weight:600}
.ozv-plan td.ozv-artc{font-weight:700}
.ozv-caret{display:inline-block;margin-right:5px;font-size:10px;
  color:var(--oz-dim,#8b95a1);transition:transform .15s}
.ozv-plan tr.ozv-artrow.open .ozv-caret{transform:rotate(90deg)}
/* строки размеров — вложенные: отступ первой ячейки, приглушённый тон, пунктир снизу */
.ozv-plan tr.ozv-szrow>td{color:var(--oz-dim,#5a6675);border-bottom:1px dashed #f1f4f7}
.ozv-plan td.ozv-szc{padding-left:26px}
/* с59 (ревью): под артикулом раскрываются ВСЕ его размеры в этом кластере, включая те,
   что везти не нужно — иначе итог артикула и «N из M» не сходятся с видимыми строками.
   Такие строки приглушаем: они справочные, а не задание на отгрузку */
.ozv-plan tr.ozv-szrow.ozv-noneed>td{opacity:.62}
/* баркод и SKU — техническая справка: моноширинные и тише цифр плана. SKU у Ozon
   свой на каждый размер, в строке артикула ячейка пустая (с59, правка Vladi) */
.ozv-plan td.ozv-bc,.ozv-plan td.ozv-sku{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:11.5px;color:var(--oz-dim,#8b95a1)}
/* класс ABC: буква — весом, «нет продаж» — тихой подписью, иначе колонка кричит */
.ozv-plan td.ozv-cls{font-weight:600}
.ozv-plan td.ozv-cls.ozv-cls-none{font-weight:400;font-size:11px;color:var(--oz-dim,#8b95a1)}
/* «Везти, шт» — акцентная колонка: ради неё блок и открывают */
.ozv-plan td.ozv-need{font-weight:700;color:var(--accent-ink,#0047cc)}
/* тихие колонки: сезонный коэффициент и «N из M» размеров в нуле у артикула */
.ozv-plan td.ozv-season,.ozv-plan td.ozv-znote{color:var(--oz-dim,#8b95a1)}
/* «в нуле» у размера — мягкая метка янтарной триады (не красный .ozv-zero: там
   сводка по всему плану, а здесь рядовая строка) */
.ozv-zeroflag{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:6px;
  background:var(--oz-at,#fff3e0);color:var(--oz-a,#c77700);white-space:nowrap}
/* подсорт (с59): своих продаж этого размера в кластере нет, цифра ~N взята из доли
   неохваченного спроса — курсивом и тише, чтобы не путать с фактическими продажами */
.ozv-seed{font-style:italic;font-size:12px;color:var(--oz-dim,#8b95a1);cursor:help}
.ozv-empty{padding:6px 0 12px}
/* --- с59 (правка Vladi 15.08, ночь): плашка режима «план посчитан ПО НОРМЕ». Норма из
   #ozv_norm по кнопке «↻ Пересчитать» заменяет цели кластеров, и человек обязан видеть,
   ЧЕМ посчитаны цифры под ней. Язык — янтарная триада скина (--oz-at подложка / --oz-a
   чернила): это не ошибка, а «читай внимательно, режим необычный».
   Вариант .ozv-normbar-off — сервер норму НЕ применил (план вернулся по целям): та же
   плашка, но красной триадой (--oz-rt / --oz-r), потому что экран расходится с намерением.
   Кнопка внутри — обычная .illiq-btn, как соседи в шапке блока. --- */
.ozv-normbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:0 0 10px;
  padding:8px 12px;border-radius:12px;font-size:12.5px;line-height:1.4;
  background:var(--oz-at,#fff3e0);color:var(--oz-a,#c77700)}
.ozv-normbar[hidden]{display:none}
.ozv-normbar-tag{font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;
  padding:2px 8px;border-radius:999px;background:var(--oz-a,#c77700);color:#fff;white-space:nowrap}
.ozv-normbar-txt{flex:1;min-width:220px}
/* ⚠️ вес селектора: скин перекрашивает .illiq-btn правилом «.skin-cab .illiq-btn» (0-2-0)
   НИЖЕ по файлу — добираем тегом (0-2-1), иначе кнопка плашки уедет в синий тинт канала */
.ozv-normbar button.illiq-btn{border:1px solid var(--oz-a,#c77700);color:var(--oz-a,#c77700);background:transparent}
.ozv-normbar button.illiq-btn:hover{background:var(--oz-a,#c77700);border-color:var(--oz-a,#c77700);color:#fff}
.ozv-normbar-off{background:var(--oz-rt,#fdeaea);color:var(--oz-r,#c0392b)}
.ozv-normbar-off .ozv-normbar-tag{background:var(--oz-r,#c0392b)}
.ozv-normbar-off button.illiq-btn{border-color:var(--oz-r,#c0392b);color:var(--oz-r,#c0392b)}
.ozv-normbar-off button.illiq-btn:hover{background:var(--oz-r,#c0392b);border-color:var(--oz-r,#c0392b);color:#fff}
.ozv-modal{position:fixed;inset:0;background:rgba(20,28,40,.45);z-index:60;
  display:flex;align-items:center;justify-content:center;padding:16px}
.ozv-modal-box{background:var(--card,#fff);border-radius:16px;padding:16px 18px;max-width:520px;width:100%;
  max-height:86vh;overflow:auto}
.ozv-modal-list{margin:10px 0}
.ozv-mrow{display:flex;align-items:center;gap:10px;padding:5px 2px;font-size:13.5px;cursor:pointer}
.ozv-mname{flex:1}
/* «цель, дн» в редакторе кластеров носит ЕЩЁ и класс .ws-norm (index.html) — ту же ячейку,
   что контрол «Норма, дней» в шапке блока: рамка, высота, выключка вправо приходят оттуда
   (.ws-norm input выше), здесь остаётся только тон подписи (правка Vladi 15.08, ночь) */
.ozv-mdays{color:var(--oz-dim,#5a6675);font-size:12.5px;white-space:nowrap}
.ozv-modal-btns{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}

/* =====================================================================
   с59: скин «кабинет» для Остатков·Ozon и Поставок (аудит с59, ЧАСТЬ 3;
   решение Vladi 15.08.2026 — стиль ПОСТОЯННЫЙ, без переключателя: у этих
   вкладок «Классика» ценностью не является, а тогл стоил бы дублирования
   ховеров и двойной QA).
   Язык — тот же, что у скина РНП выше: белые карточки r12 в серых
   контейнерах r16, пилюли-кнопки, тонкие линии вместо цветных заливок,
   шрифт Onest. Скоуп СВОЙ — класс .skin-cab на <div id="st_view_ozon"> и
   на <section class="tab-panel" data-tab="supplies">; тумблер РНП сюда не
   тянем, на остальном дашборде класс безвреден.
   ЦВЕТ КАНАЛА НЕ ДУБЛИРУЕМ: --accent / --accent-tint / --accent-ink
   приходят с body[data-ch] (switchTab ставит "ozon" на «Поставках» и на
   Ozon-виде «Остатков») — будущий WB-вид станет фиолетовым сам собой.
   ⚠️ ГРАБЛЯ (та же, что в с52): скин перебивает базовые :hover большей
   специфичностью — ховер КАЖДОГО перекрашенного контрола прописан заново. */

/* --- 1. Токены кабинета + шрифт. Форм-контролы шрифт сами не наследуют — заставляем. --- */
.skin-cab{
  --oz-sec:#f2f5f8;        /* серый контейнер секции */
  --oz-line:#e7ebef;       /* тонкие рамки/разделители */
  --oz-dim:#8b95a1;        /* вторичный серый текст */
  --oz-g:#00a650;  --oz-gt:#e4f6ec;   /* норма / хорошо + подложка */
  --oz-a:#c77700;  --oz-at:#fff3e0;   /* предупреждение + подложка */
  --oz-r:#e5124d;  --oz-rt:#fdecf1;   /* тревога + подложка */
  --ink:#001a34; --muted:#8b95a1;     /* «тот самый» чёрный и серый кабинета */
  font-family:"Onest",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  color:var(--ink);
}
.skin-cab button,.skin-cab input,.skin-cab select,.skin-cab textarea{font-family:inherit}

/* --- 2. KPI-плитки в языке .rnp-lsum: серый контейнер r16, внутри белые карточки r12
       БЕЗ рамок и теней; метка 12px серым, число крупно. --- */
.skin-cab .kpis,.skin-cab .kpis-formula{background:var(--oz-sec);border-radius:16px;padding:10px 16px}  /* вертикаль ужата с 14px (правка Vladi 15.08) — см. блок ниже */
.skin-cab .kpi{background:var(--card);border:0;border-radius:12px;box-shadow:none}
.skin-cab .kpi-label{font-size:12px;color:var(--oz-dim)}
.skin-cab .kpi-val{font-size:22px}
.skin-cab .kpi-note{color:var(--oz-dim);font-size:11px}
.skin-cab .kpi-op{color:var(--oz-dim);font-weight:600}
/* строка-равенство узкая (7 плиток в ряд) — кегль числа и метки как был */
.skin-cab .oz-formula .kpi-val{font-size:20px}
.skin-cab .oz-formula .kpi-label{font-size:11.5px}
.skin-cab .oz-formula .kpi-total{background:var(--accent-tint);border:0}
.skin-cab .oz-formula .kpi-total .kpi-val{color:var(--accent-ink)}
.skin-cab .oz-formula .kpi-sep{border-left:1px dashed var(--oz-line)}
/* с59 (правка Vladi 15.08, вечер): ОТКАТ сжатия плиток по содержимому. Промежуточный
   вариант (grid minmax(150px,240px) + justify-content:start + width:fit-content + потолок
   max-width) собрал оба ряда влево и оставил справа пустую полосу — Vladi: «плитки просто
   взял, как бы влево их все собрал — это не подходит, вся их область должна быть на весь
   экран». Ширину НЕ трогаем вовсе: работают базовые правила (.kpis-sub — repeat(4,1fr),
   .oz-formula .kpi — flex:1 1 0), плитки снова делят всю ширину контента поровну, а узкое
   окно ловит базовый @media(max-width:900px){.kpis-sub{repeat(2,1fr)}}; ряд-равенство там
   переносится своим flex-wrap, знаки «=» и «+» (.kpi-op) остаются между плитками.
   Настоящая беда была в ВОЗДУХЕ ПО ВЕРТИКАЛИ: серый контейнер скина добавлял по 14px
   сверху и снизу к базовому margin-bottom:18px, и между рядами набегало 46px против 18px
   у вида ВБ (ориентир — «Остатки·ВБ»: .kpis gap 14 / margin-bottom 18, .kpi padding 14/16).
   Ужимаем именно вертикаль: паддинг контейнера 14px → 10px (правило выше) и margin-bottom
   рядов ниже. Горизонталь (16px по бокам) не трогаем — она держит плитки вровень с краем
   серой подложки. */
/* 8px, а не 4: ряды — два отдельных серых контейнера с радиусом 16px, и зазор меньше
   радиуса читался бы как трещина в одной подложке, а не как два блока */
.skin-cab .kpis-sub{margin-bottom:8px}       /* ряд KPI → ряд-равенство: 10+8+10 = 28px вместо 46 */
.skin-cab .kpis-formula{margin-bottom:14px}  /* ряд-равенство → следующая карточка: 10+14 = 24px вместо 32 */
/* «Поставки»: ряд KPI там один и последний — снизу ему нужен нормальный отступ, а не 4px.
   Вес селектора (класс + атрибут + класс) выше правила строкой выше, порядок тоже за нами */
.skin-cab[data-tab="supplies"] .kpis-sub{margin-bottom:14px}
/* от подписи-снимка (.note) до первого ряда: базовые 18px + паддинг контейнера = перебор.
   Класс .note внутри скина ровно один — та самая подпись сверху (index.html: 461 и 667) */
.skin-cab .note{margin-bottom:10px}
/* плитка-фильтр «Недобор» / «Скоро закончится»: тревога — на триаде кабинета.
   Ховеры возвращаем ЗАНОВО: базовые правила ниже по специфичности не проходят. */
.skin-cab .kpi-alert:hover{box-shadow:0 4px 12px rgba(0,26,52,.10);transform:translateY(-1px)}
.skin-cab .kpi-alert.on{background:var(--oz-rt);border:0;box-shadow:inset 0 0 0 1px var(--oz-r)}
.skin-cab .kpi-alert.on .kpi-val{color:var(--oz-r)}
.skin-cab .kpi-alert.on:hover{box-shadow:inset 0 0 0 1px var(--oz-r),0 4px 12px rgba(0,26,52,.10)}
/* ⚠️ медиазапрос меряет ОКНО, контенту меньше на ширину сайдбара (~276px): на 1100–1250px
   паддинги серого контейнера — единственное, что может уронить ряд-формулу на вторую строку */
@media (max-width:1250px){
  .skin-cab .kpis,.skin-cab .kpis-formula{padding:10px 12px}
  .skin-cab .oz-formula{gap:6px}
  .skin-cab .oz-formula .kpi{min-width:88px;padding:9px 10px}
}

/* --- 3. Карточки: мягче радиус, тонкая линия, лёгкая тень (как страница кабинета) --- */
.skin-cab .card{border-radius:16px;border-color:var(--oz-line);box-shadow:0 1px 3px rgba(0,26,52,.05)}
.skin-cab .card-title{font-size:15px;font-weight:600}
.skin-cab .oz-collapsible summary::before{color:var(--oz-dim)}
.skin-cab .oz-sum-hint,.skin-cab .wh-hint,.skin-cab .note-sub,.skin-cab .detail-empty,
.skin-cab .seas-hint,.skin-cab .sort-ind,.skin-cab .oz-caret{color:var(--oz-dim)}
.skin-cab div.empty{color:var(--oz-dim);padding:14px 2px;font-size:13px}
.skin-cab .wh-detail{background:var(--oz-sec);border:0;border-radius:12px}
.skin-cab .wh-detail-ref{border-top-color:var(--oz-line);background:rgba(0,26,52,.04);border-radius:10px}
.skin-cab .oz-supbar{border-radius:12px;border-color:transparent}
.skin-cab .frozen-summary{color:var(--oz-a)}

/* --- 4. Кнопки: главная форма — пилюля в тинте канала (заливки на ховер нет, только
       тинт темнее); вторичные (пагинация, «Отмена») — белые с тонкой рамкой. --- */
.skin-cab .illiq-btn{background:var(--accent-tint);border-color:transparent;color:var(--accent);
  font-weight:600;border-radius:9px;padding:3px 10px;font-size:11.5px}
.skin-cab .illiq-btn:hover{background:var(--accent-tint-h);border-color:transparent;color:var(--accent-ink)}
.skin-cab .cov-pager button{background:var(--card);border-color:var(--oz-line);border-radius:9px;color:var(--ink)}
.skin-cab .cov-pager button:hover:not(:disabled){background:#f5f8fa;border-color:#d7dee6}
.skin-cab #ozv_modal_cancel{background:var(--card);border:1px solid var(--oz-line);color:var(--ink);font-weight:500}
.skin-cab #ozv_modal_cancel:hover{background:#f5f8fa;border-color:#d7dee6;color:var(--ink)}

/* --- 5. Сегменты (Кластеры/Склады/Размеры, окно продаж): белая коробка с тонкой рамкой,
       активный — белый с кольцом в цвет канала (как активный таб кабинета). --- */
.skin-cab .seg{background:var(--card);border:1px solid var(--oz-line);border-radius:9px;padding:2px}
.skin-cab .seg-btn{color:#67717d;border-radius:7px}
.skin-cab .seg-btn:not(.active):hover{background:var(--oz-sec);color:var(--ink)}
.skin-cab .seg-btn.active{background:var(--card);color:var(--accent);font-weight:600;
  box-shadow:inset 0 0 0 1.5px var(--accent)}

/* --- 6. Поля и списки: r9, тонкая рамка кабинета (ховеры/фокус — заново) --- */
.skin-cab select,.skin-cab .card-select,
.skin-cab input:not([type="checkbox"]):not([type="radio"]),
.skin-cab .cov-scale input,.skin-cab .cov-filter input,.skin-cab .ws-norm input{
  border-color:var(--oz-line);border-radius:9px}
.skin-cab select:hover,.skin-cab .card-select:hover{border-color:#d7dee6}
.skin-cab select:focus,.skin-cab .card-select:focus,
.skin-cab input:not([type="checkbox"]):focus{outline:none;border-color:var(--accent)}
.skin-cab .cov-scale input.sc-bad{border-color:var(--oz-r);background:var(--oz-rt)}
.skin-cab input[type="checkbox"]{accent-color:var(--accent)}
.skin-cab .sc-seg{background:var(--card);border-color:var(--oz-line);border-radius:9px}
.skin-cab .cov-scale-cap,.skin-cab .sc-echo{color:var(--ink)}
/* тот же приём, что в РНП (с54-2): в Chrome с кастомным селектом попап рисует страница —
   значит, он красится токенами КАНАЛА, а не системным синим. Одна тонкая стрелка вместо двух. */
@supports selector(::picker(select)){
  .skin-cab select,.skin-cab select::picker(select){appearance:base-select}
  .skin-cab select::picker(select){background:var(--card);border:1px solid var(--oz-line);
    border-radius:10px;box-shadow:0 10px 28px rgba(0,26,52,.14);padding:4px;margin-top:4px}
  .skin-cab select option{padding:6px 10px;border-radius:7px;font-size:13px;color:var(--ink)}
  .skin-cab select option:hover,.skin-cab select option:focus{background:var(--accent-tint);color:var(--accent-ink)}
  .skin-cab select option:checked{background:var(--accent-tint);color:var(--accent);font-weight:600}
  .skin-cab select option:checked:hover{background:var(--accent-tint-h)}
  .skin-cab select::picker-icon{display:none}
  .skin-cab select{padding-right:26px;
    background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2367717d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 9px center}
}

/* --- 7. Таблицы: шапка — светло-серая полоса с тихими подписями, строки разделены тонкой
       линией. Ховер строки красим у <tr>, а НЕ у <td>: цветные строки (итоги, размеры,
       суммы) сохраняют свой фон, а у обычных он просвечивает.
       ⚠️ overflow:hidden на td не вводим — глушит sticky (грабля с50-7). --- */
.skin-cab th{font-size:11.5px;font-weight:500;color:var(--oz-dim);text-transform:none;letter-spacing:0}
.skin-cab thead th{background:#f3f6f9}
.skin-cab .wh-arts thead th{background:#f3f6f9}
.skin-cab th,.skin-cab td{border-bottom-color:#eef0f2}
.skin-cab tbody tr:hover{background:#f7f9fb}
.skin-cab .oz-artrow:hover td,.skin-cab tr.ws-row:hover td{background:transparent}
.skin-cab th.sortable:hover{color:var(--ink)}
.skin-cab .oz-szrow td{background:#f7f9fb;color:#5a6675}
.skin-cab .oz-sc-plus{color:var(--oz-a)}
.skin-cab .oz-sc-minus{color:var(--oz-r)}
.skin-cab .oz-sc-diff td{background:var(--oz-at)}

/* --- 8. Статус-пилюли (шкала оборачиваемости, плитки-фильтры, таймлайн заявки) — на
       триадах кабинета вместо старой палитры --- */
.skin-cab .status,.skin-cab .pill{border-radius:8px;font-weight:600}
.skin-cab .status.ok,.skin-cab .pill.ok{background:var(--oz-gt);color:var(--oz-g)}
.skin-cab .status.warn,.skin-cab .pill.warn{background:var(--oz-at);color:var(--oz-a)}
.skin-cab .status.bad,.skin-cab .pill.bad{background:var(--oz-rt);color:var(--oz-r)}
.skin-cab .status.none,.skin-cab .pill.none{background:var(--oz-sec);color:var(--oz-dim)}

/* --- 9. «Поставки»: карточка заявки r12, ховер шапки, таймлайн в сером контейнере --- */
.skin-cab .sup-card{border-radius:12px;border-color:var(--oz-line)}
.skin-cab .sup-card.open{box-shadow:0 1px 3px rgba(0,26,52,.05)}
.skin-cab .sup-head{border-radius:12px}
.skin-cab .sup-head:hover{background:#f7f9fb}
.skin-cab .sup-wh,.skin-cab .sup-age,.skin-cab .sup-tl-date{color:var(--oz-dim)}
.skin-cab .sup-timeline{background:var(--oz-sec);border:0;border-radius:12px}
.skin-cab .sup-tl-arrow{color:var(--oz-dim)}
.skin-cab .sup-tag{background:var(--oz-at);color:var(--oz-a);border-color:transparent;border-radius:6px}

/* --- 10. «Что везти»: сами правила .ozv-* живут выше вне скоупа и переведены на токены
       С ФОЛБЭКАМИ — здесь только то, что вне их (ховер строки-кластера) --- */
.skin-cab .ozv-cl summary:hover{color:var(--accent-ink)}
.skin-cab .ozv-mrow:hover{background:#f7f9fb;border-radius:8px}
/* с59: таблица .ozv-plan (13 колонок, строка артикула + строки размеров). Ховер и
   состояние «раскрыто» дублируем ЗДЕСЬ — базовые правила выше по специфичности
   не проходят (та же грабля, что у всех перекрашенных контролов скина). */
.skin-cab .ozv-plan th{font-weight:500;color:var(--oz-dim);background:#f3f6f9}
.skin-cab .ozv-plan td{border-bottom-color:#eef0f2}
.skin-cab .ozv-plan tr.ozv-artrow:hover>td{background:#eaeff4}
.skin-cab .ozv-plan tr.ozv-artrow.open>td{background:var(--accent-tint)}
.skin-cab .ozv-plan tr.ozv-artrow.open .ozv-caret{color:var(--accent)}
.skin-cab .ozv-plan tr.ozv-szrow>td{color:var(--oz-dim)}
.skin-cab .ozv-plan tr.ozv-szrow:hover>td{background:#f7f9fb}

/* --- 11. «Куда грузить»: шапка кластера — белая карточка r12, таблица под ней срастается
       с ней тонкой рамкой; бейджи перекоса — на янтарной триаде --- */
.skin-cab .ws-reghead{background:var(--card);border-color:var(--oz-line);border-radius:12px 12px 0 0}
.skin-cab details.ws-nd summary.ws-reghead:hover{background:#f7f9fb}
.skin-cab details.ws-nd summary.ws-reghead::before{color:var(--oz-dim)}
/* с59 (п.4): кластеры-details — все, ховер и маркер повторяем в языке скина */
.skin-cab details.ws-region>summary.ws-reghead:hover{background:#f7f9fb}
.skin-cab details.ws-region>summary.ws-reghead::before{color:var(--oz-dim)}
.skin-cab details.ws-region:not([open])>summary.ws-reghead{border-radius:12px}
/* тихая ссылка «ⓘ как это считается» — в тинте канала, на белой карточке */
.skin-cab .note-foldbtn{border-color:var(--oz-line);color:var(--oz-dim);background:var(--card)}
.skin-cab .note-foldbtn:hover{border-color:var(--accent);color:var(--accent)}
.skin-cab .note-foldbtn.on{background:var(--accent-tint);border-color:transparent;color:var(--accent)}
.skin-cab .ws-regstats{color:var(--oz-dim)}
.skin-cab .ws-conflict{background:var(--oz-at);color:var(--oz-a);border-color:transparent;border-radius:7px}
.skin-cab .ws-skew{background:var(--oz-sec);color:var(--oz-dim);border-color:transparent;border-radius:7px}
.skin-cab .ws-confline{background:var(--oz-at);color:var(--oz-a);border-color:var(--oz-line)}
.skin-cab .ws-table{border-color:var(--oz-line);border-radius:0 0 12px 12px}
.skin-cab .ws-table th,.skin-cab .ws-table td{border-bottom-color:#eef0f2}
.skin-cab .ws-subtable{border-color:var(--oz-line);border-radius:12px}
.skin-cab .oz-wssub>td{background:var(--oz-sec)}
.skin-cab .ws-verdict.ok{color:var(--oz-g)}
.skin-cab .ws-verdict.bad{color:var(--oz-r)}
.skin-cab .ws-verdict.idle{color:var(--oz-a)}
.skin-cab .ws-verdict.dead{color:var(--oz-dim)}
.skin-cab .ws-norm{color:var(--oz-dim)}
/* «Спрос есть — товара нет»: правила блока живут выше вне скоупа, но шапку и таблицу
   внутри него скин перекрывает своими (.skin-cab .ws-reghead / .ws-table) — возвращаем
   пунктир и прозрачный фон ЗАНОВО, иначе блок сливается с обычными кластерами */
.skin-cab .ws-nowh{border-radius:12px}
.skin-cab .ws-nowh .ws-reghead{background:transparent;border:0;border-radius:0;
  border-bottom:1px dashed var(--oz-a)}
.skin-cab .ws-nowh .ws-table{border:0;border-radius:12px}

/* --- 12. Подписи-примечания: та же янтарная триада, r12 --- */
.skin-cab .note{background:var(--oz-at);border-color:transparent;color:var(--oz-a);border-radius:12px}

/* =====================================================================
   с59-Б: вид «Отгрузки» на Ozon + сворачиваемые блоки «Поставок».
   Перенос WB-вида (карточка #supply_plan_card_v2, «Контроль рисков») в
   Ozon-блок «Что везти» третьим видом рядом с «По кластерам»/«По товару».
   Палитру WB (зелёная плашка #f0f7ee, жёлтая правка #fff8e6) НЕ копируем —
   всё переведено на язык скина «кабинет»: серые контейнеры r16, белые
   карточки r12, пилюли, тонкие линии, триады --oz-g/a/r.
   Скоуп — .skin-cab (панель «Поставки» и Ozon-вид «Остатков»); токены
   --oz-* приходят оттуда, --accent* — с body[data-ch="ozon"].
   ГРАБЛИ, учтённые здесь:
     • общий скин красит ЛЮБОЙ input (.skin-cab input:not([type=checkbox])…,
       вес 0-3-1) — поэтому ячейка матрицы описана как
       «.skin-cab .ozs-tbl input.ozs-qty» (0-3-1, ниже по файлу → берёт верх);
     • overflow:hidden на td не ставим (глушит липкую колонку размеров);
     • матрица «размер × кластер» широкая — горизонтальный скролл живёт
       ВНУТРИ .ozs-scroll, страница по горизонтали не едет;
     • ховер каждого перекрашенного контрола прописан заново;
     • модалка самодостаточна (свои токены + шрифт) — не развалится, даже
       если фронт вынесет её из .skin-cab в <body>.
   ФРОНТУ: клик по контролу внутри <summary> раскрывает <details> —
   гасить событие в JS, CSS тут не помощник.
   ЯКОРЯ ДЛЯ JS без своих правил (пустых правил под них НЕ заводим): .ozs-cl-pick
   красится через «.ozs-cl-chip input», .ozs-orph-x — через «.ozs-btn.ozs-del». */

/* --- Б1. Сворачиваемые блоки «Поставок»: маркер, отступы, контролы в шапке.
       Итог-подпись свёрнутой шапки («14 заявок») — обычным текстом в .oz-sum-hint
       (правило выше, скин перекрашивает его в блоке типографики), своей пилюли нет. --- */
.skin-cab .oz-collapsible>summary{flex-wrap:wrap;gap:10px;padding:0;align-items:center}
.skin-cab .oz-collapsible>summary::before{flex:none;font-size:12px;line-height:1;color:var(--oz-dim)}
.skin-cab .oz-collapsible>summary .card-title{margin-bottom:0}
.skin-cab .oz-collapsible>summary:hover .card-title{color:var(--accent-ink)}
/* контролы прижимаем вправо: заголовок и подсказка слева, кнопки/сегменты справа */
.skin-cab .oz-collapsible>summary .detail-ctrls{margin-left:auto;flex-wrap:wrap;row-gap:6px}
/* закрытая шапка не должна тянуть за собой нижний отступ карточки */
.skin-cab .oz-collapsible:not([open]){padding-bottom:14px}
/* первый элемент содержимого: единый отступ (у .note-sub своя отрицательная марджина) */
.skin-cab .oz-collapsible[open]>summary+*{margin-top:10px}

/* --- Б2. Кнопка «свернуть/развернуть все кластеры» (#ozv_toggle_all) и сквозная
       кнопка «🚚 план поставки →» в шапке кластера «Куда грузить».
       с59 (правка Vladi п.3): своей белой пилюли .ozs-allbtn у кнопки БОЛЬШЕ НЕТ.
       Просили «как остальные кнопки блока», а «✎ Кластеры и цели» и «↓ Excel» —
       это голый .illiq-btn (в скине — пилюля в тинте канала), так что весь
       перекрашивающий блок .ozs-allbtn удалён. Стрелку рисует сам текст кнопки
       (тот же знак, что у «↓ Excel»), CSS-маркера у неё нет.
       Сквозные кнопки-переходы блоков (#oz_ws_to_vezti, #ozv_to_ws) своих правил
       тоже НЕ имеют: они целиком на .illiq-btn. --- */
/* Выключенная пилюля (групп ещё нет — сворачивать нечего): правило ОБЩЕЕ для всех
   .illiq-btn, а не для одной кнопки. Ховер гасим заново — заливка есть и у
   .illiq-btn:hover (0-2-0), и у скина (0-3-0), перебить надо обе.
   Базовая пара (без .skin-cab) — страховка на случай выключенного скина; стоит ПОСЛЕ
   .illiq-btn:hover при той же силе 0-2-0, поэтому побеждает порядком. */
.illiq-btn:disabled{opacity:.45;cursor:default}
.illiq-btn:disabled:hover{border-color:var(--line);background:transparent;color:var(--muted)}
.skin-cab .illiq-btn:disabled{opacity:.45;cursor:default}
.skin-cab .illiq-btn:disabled:hover{background:var(--accent-tint);border-color:transparent;
  color:var(--accent)}
/* кнопка-переход в шапке кластера «Куда грузить»: прижата вправо и не сжимается
   (у соседнего .ws-conflict margin-left:6px, так что auto достаётся именно ей) */
.ws-toplan{margin-left:auto;flex:none}

/* --- Б3. Свой контрол «Окно продаж» блока «Что везти» (после переезда «Куда
       грузить» на другую вкладку общий контрол недоступен). Сегменты берут
       оформление скина, здесь только компактность: окон шесть. --- */
.ozs-winbar{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;flex:none}
.ozs-wincap{font-size:12px;color:var(--oz-dim,#8b95a1);cursor:help;white-space:nowrap}
.skin-cab .ozs-winbar .seg{padding:2px}
.skin-cab .ozs-winbar .seg-btn{padding:5px 9px;font-size:12.5px}

/* --- Б4. Блок «Учёт отгрузок»: серый контейнер секции, внутри белые карточки
       партий. Янтарная триада — предупреждение о задвоении и залежавшаяся партия. --- */
.ozs-entry{background:var(--oz-sec,#f2f5f8);border:0;border-radius:16px;padding:14px 16px;margin:0 0 14px}
.ozs-entry-head{font-weight:600;font-size:14px;margin-bottom:6px;color:var(--ink,#001a34)}
.ozs-entry-text{font-size:12.5px;color:var(--oz-dim,#8b95a1);line-height:1.5;margin-bottom:10px}
/* предупреждение о ДВОЙНОМ вычете: партия «в пути» плюс та же партия, доехавшая в transit */
.ozs-warn{background:var(--oz-at,#fff3e0);color:var(--oz-a,#c77700);border-radius:12px;
  padding:9px 12px;font-size:12.5px;line-height:1.45;margin:0 0 10px}
.ozs-warn b{color:inherit}
.ozs-list-head{font-size:12px;font-weight:600;color:var(--oz-dim,#8b95a1);margin:12px 0 6px}
.ozs-batch{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--card,#fff);
  border:1px solid var(--oz-line,#e7ebef);border-radius:12px;padding:8px 12px;margin-bottom:6px}
.ozs-batch-name{font-size:13px;font-weight:600}
.ozs-batch-info{font-size:12px;color:var(--oz-dim,#8b95a1)}
.ozs-batch-acts{margin-left:auto;display:inline-flex;gap:8px;flex:none}
.ozs-batch.ozs-stale{background:var(--oz-at,#fff3e0);border-color:transparent}
.ozs-stale-warn{font-size:12px;font-weight:600;color:var(--oz-a,#c77700)}
.ozs-empty{font-size:12.5px;color:var(--oz-dim,#8b95a1);padding:4px 2px}
/* кнопки партии: белая пилюля, цвет — только текст и рамка на ховере */
.ozs-btn{border:1px solid var(--oz-line,#e7ebef);background:var(--card,#fff);color:var(--ink,#001a34);
  border-radius:9px;padding:4px 11px;font-size:12px;font-weight:600;cursor:pointer;
  white-space:nowrap;font-family:inherit}
.skin-cab .ozs-btn:hover{background:#f5f8fa;border-color:#d7dee6}
.skin-cab .ozs-btn.ozs-recv{color:var(--oz-g)}
.skin-cab .ozs-btn.ozs-recv:hover{background:var(--oz-gt);border-color:transparent;color:var(--oz-g)}
.skin-cab .ozs-btn.ozs-del{color:var(--oz-r)}
.skin-cab .ozs-btn.ozs-del:hover{background:var(--oz-rt);border-color:transparent;color:var(--oz-r)}
/* Чат 112 (выбор Vladi — вариант А «акцентная»): главная кнопка блока — ЗАЛИВНАЯ
   цветом канала (--accent зоны: Ozon синий, WB фиолетовый), а не тинт-подложка */
.skin-cab .ozs-btn.ozs-main{background:var(--accent);border-color:transparent;color:#fff;
  padding:8px 18px;font-size:13px;box-shadow:0 3px 9px rgba(15,23,42,.22)}
.skin-cab .ozs-btn.ozs-main:hover{background:var(--accent-ink);border-color:transparent;color:#fff}
/* Чат 112: чип кластера в форме правки партии — активный красится каналом */
.skin-cab .ozs-btn.ozs-ecl-on{background:var(--accent);border-color:transparent;color:#fff}
.skin-cab .ozs-btn:disabled{opacity:.45;cursor:default}
.skin-cab .ozs-btn:disabled:hover{background:var(--card);border-color:var(--oz-line)}
/* «Номер поставки»: поле берёт рамку и радиус у скина, здесь только размеры */
.ozs-num{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;
  font-weight:600;color:var(--oz-dim,#8b95a1);margin:6px 0 10px}
.ozs-numinp{width:230px;max-width:100%;padding:7px 10px;font-size:13px}

/* --- Б5. Панель выбора: итог, массовые действия, чипы-галочки КЛАСТЕРОВ.
       Кластер — точка НАЗНАЧЕНИЯ, а не точка отгрузки: об этом говорит .ozs-selnote. --- */
.ozs-selbar{background:var(--oz-sec,#f2f5f8);border:0;border-radius:14px;padding:11px 14px;
  margin:0 0 12px;font-size:13px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.ozs-selsum{font-size:13px;margin-right:2px}
.ozs-selsum b{color:var(--accent-ink,#0047cc);font-variant-numeric:tabular-nums}
.ozs-selnote{flex:1 1 100%;font-size:11.5px;color:var(--oz-dim,#8b95a1);line-height:1.45}
.ozs-chipbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;width:100%;
  padding-top:9px;margin-top:2px;border-top:1px dashed var(--oz-line,#e7ebef)}
.ozs-chipcap{font-size:11.5px;color:var(--oz-dim,#8b95a1);white-space:nowrap}
.ozs-cl-chip{display:inline-flex;align-items:center;gap:6px;background:var(--card,#fff);
  border:1px solid var(--oz-line,#e7ebef);border-radius:16px;padding:4px 12px;font-size:12.5px;
  cursor:pointer;user-select:none;white-space:nowrap}
.ozs-cl-chip input{width:14px;height:14px;cursor:pointer;margin:0}
.skin-cab .ozs-cl-chip:hover{border-color:#d7dee6}
.skin-cab .ozs-cl-chip.on{background:var(--accent-tint);border-color:transparent;
  color:var(--accent);font-weight:600}
.skin-cab .ozs-cl-chip.on:hover{background:var(--accent-tint-h);border-color:transparent}
/* чекбокс «берём в поставку» у артикула */
.ozs-pick-l{display:inline-flex;align-items:center;margin-right:8px;cursor:pointer;flex:none}
.ozs-pick{width:16px;height:16px;cursor:pointer;margin:0}

/* --- Б6. Список артикулов вида «Отгрузки» — тот же язык, что у .ozv-cl --- */
.ozs-art{border:1px solid var(--oz-line,#e7ebef);border-radius:12px;margin:8px 0;padding:0 12px;
  background:var(--card,#fff)}
.ozs-art>summary{display:flex;align-items:center;gap:12px;flex-wrap:wrap;cursor:pointer;
  padding:10px 0;list-style:none;font-size:13.5px}
.ozs-art>summary::-webkit-details-marker{display:none}
.ozs-art>summary::before{content:"▸";color:var(--oz-dim,#8b95a1);transition:transform .15s;flex:none}
.ozs-art[open]>summary::before{transform:rotate(90deg)}
.ozs-artname{font-weight:700}
.ozs-artmeta{color:var(--oz-dim,#8b95a1);font-size:12.5px}
.ozs-artneed{margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums}
.skin-cab .ozs-art.ozs-selected{border-color:var(--accent-line,#c7dcff)}
.skin-cab .ozs-art.ozs-selected>summary{color:var(--accent-ink)}
.skin-cab .ozs-art>summary:hover{color:var(--accent-ink)}
/* группа «Правки вне плана»: кластер выключен или артикул/размер переименовали в кабинете —
   правка осталась без пары. Расчёт не роняем, просто метим шапку ГРУППЫ (мягкая деградация);
   строки внутри — обычная .ozs-tbl, своей метки у них нет, их и так единицы. */
.ozs-art.ozs-orphan>summary{box-shadow:inset 3px 0 0 var(--oz-a,#c77700)}
.ozs-orphan-tag{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:6px;
  background:var(--oz-at,#fff3e0);color:var(--oz-a,#c77700);white-space:nowrap}

/* --- Б7. Матрица «размер × кластер». Скролл — ВНУТРИ .ozs-scroll (страница по
       горизонтали стоит на месте); колонка размеров липкая слева. --- */
.ozs-scroll{overflow-x:auto;overflow-y:visible;max-width:100%;padding:2px 0 6px}
.ozs-scroll::-webkit-scrollbar{height:9px}
.ozs-scroll::-webkit-scrollbar-thumb{background:#d7dee6;border-radius:999px}
.ozs-scroll::-webkit-scrollbar-track{background:transparent}
.ozs-tbl{border-collapse:collapse;font-size:12.5px;min-width:520px}
/* матрица с колонкой SKU шире базовой на её 104px (с59, правка Vladi 15.08) */
.ozs-tbl.ozs-mx{min-width:624px}
.skin-cab .ozs-tbl th,.skin-cab .ozs-tbl td{padding:5px 10px;white-space:nowrap;
  border-bottom:1px solid #eef0f2}
.skin-cab .ozs-tbl th{font-size:11px;font-weight:500;color:var(--oz-dim);text-align:left;background:transparent}
.skin-cab .ozs-tbl thead th{background:#f3f6f9}
.ozs-tbl th.num,.ozs-tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
/* двухэтажная шапка: верхний этаж — кластер (colspan 2), нижний — «везти» и «ост.» */
.skin-cab .ozs-tbl th.ozs-clgrp{text-align:center;color:var(--ink);font-weight:600;
  border-left:2px solid var(--oz-line);border-bottom:1px dashed var(--oz-line)}
.ozs-sub{font-weight:500;font-size:11px;color:var(--oz-dim,#8b95a1)}
.skin-cab .ozs-tbl .ozs-grp-l{border-left:2px solid var(--oz-line)}
/* «ост.» — справочная половина пары: тише и с пунктирной границей от «везти» */
.skin-cab .ozs-tbl .ozs-st{color:var(--oz-dim);font-size:12px;border-left:1px dashed var(--oz-line)}
.skin-cab .ozs-tbl td.ozs-st.ozs-alt,.skin-cab .ozs-tbl th.ozs-st.ozs-alt{background:rgba(0,26,52,.025)}
/* липкая колонка размера — фон обязателен, overflow:hidden на td НЕ ставим */
.skin-cab .ozs-tbl th.ozs-szname,.skin-cab .ozs-tbl td.ozs-szname{position:sticky;left:0;z-index:2;
  background:var(--card);font-weight:600;box-shadow:1px 0 0 var(--oz-line)}
.skin-cab .ozs-tbl thead th.ozs-szname{background:#f3f6f9;z-index:3}
/* --- с59 (правка Vladi 15.08, ночь): в матрице «размер × кластер» перед «Размером» встала
   колонка SKU (у Ozon он свой на каждый размер). Липких колонок стало ДВЕ, поэтому
   «Размер» отъезжает вправо на ширину SKU — и ширина эта ЖЁСТКАЯ (104px), иначе при
   горизонтальной прокрутке колонки наедут друг на друга.
   Сдвиг разрешён только на .ozs-mx: тем же классом .ozs-tbl нарисованы «Правки вне плана»
   и форма отгрузки — там колонки SKU нет, и «Размер»/«Артикул» обязаны липнуть к нулю.
   ⚠️ box-sizing:border-box глобальный (строка 36), поэтому 104px включают паддинги
   и left:104px совпадает с реальной границей колонки. Десятизначный SKU в 104px влезает
   с запасом; будет длиннее — колонка расширится, и стык сдвинется на пару пикселей. --- */
.skin-cab .ozs-mx th.ozs-skuname,.skin-cab .ozs-mx td.ozs-skuname{position:sticky;left:0;z-index:2;
  width:104px;min-width:104px;background:var(--card);box-shadow:1px 0 0 #eef0f2;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;
  color:var(--oz-dim);font-variant-numeric:tabular-nums}
.skin-cab .ozs-mx thead th.ozs-skuname{background:#f3f6f9;z-index:3;font-family:inherit}
.skin-cab .ozs-mx th.ozs-szname,.skin-cab .ozs-mx td.ozs-szname{left:104px}
.skin-cab .ozs-mx tr.ozs-total>td.ozs-skuname{background:var(--oz-sec)}
/* колонка и строка «Итого» — в тинте канала, чтобы не слиться с кластерами */
.skin-cab .ozs-tbl th.ozs-tot,.skin-cab .ozs-tbl td.ozs-tot{background:var(--accent-tint2,#f5f8ff);
  border-left:2px solid var(--oz-line);font-weight:600}
.skin-cab .ozs-tbl tr.ozs-total>td{background:var(--oz-sec);font-weight:600;
  border-top:2px solid var(--oz-line);border-bottom:0}
.skin-cab .ozs-tbl tr.ozs-total>td.ozs-szname{background:var(--oz-sec)}
.skin-cab .ozs-tbl tr.ozs-total>td.ozs-tot{background:var(--accent-tint,#eaf1ff);color:var(--accent-ink)}
/* размер без потребности — виден, но приглушён (иначе обнулившийся руками не довезти) */
.ozs-zero-row td{opacity:.55}
/* выключенный чипом кластер: шапка зачёркнута, столбец притушен */
.skin-cab .ozs-tbl th.ozs-cl-off{opacity:.4;text-decoration:line-through}
.skin-cab .ozs-tbl td.ozs-cl-off{opacity:.35}
/* ховер строки матрицы красим у td: у «Итого» и нулевых строк свой фон */
.skin-cab .ozs-tbl tbody tr:hover>td{background-color:#f7f9fb}
.skin-cab .ozs-tbl tbody tr.ozs-total:hover>td{background-color:var(--oz-sec)}

/* --- Б8. Ячейка «везти»: пустая рамка, проявляется на ховере; .ov — ручная правка.
       Вес селекторов 0-3-1 и 0-4-1 — иначе общий .skin-cab input:not(…) перебьёт. --- */
.skin-cab .ozs-tbl input.ozs-qty{width:64px;padding:5px 6px;border:1px solid transparent;
  border-radius:7px;font-size:13px;font-weight:600;text-align:right;color:var(--ink);
  background:transparent;font-family:inherit;-moz-appearance:textfield;appearance:textfield}
.skin-cab .ozs-tbl input.ozs-qty::-webkit-outer-spin-button,
.skin-cab .ozs-tbl input.ozs-qty::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.skin-cab .ozs-tbl input.ozs-qty:hover{border-color:var(--oz-line);background:var(--card)}
.skin-cab .ozs-tbl input.ozs-qty:focus{outline:none;border-color:var(--accent);background:var(--card)}
.skin-cab .ozs-tbl input.ozs-qty:disabled{opacity:.4;background:transparent;border-color:transparent}
/* ручная правка: янтарная триада кабинета — заметно, но без крика (title = «расчёт: N») */
.skin-cab .ozs-tbl input.ozs-qty.ov{border-color:var(--oz-a);background:var(--oz-at);color:var(--oz-a)}
.skin-cab .ozs-tbl input.ozs-qty.ov:hover,
.skin-cab .ozs-tbl input.ozs-qty.ov:focus{border-color:var(--oz-a);background:var(--oz-at)}
.ozs-ov-note{color:var(--oz-a,#c77700);font-size:12px;font-weight:600;white-space:nowrap}

/* --- Б9. Модалка «Внести отгрузку». Самодостаточна: свои токены и шрифт — не
       расползётся, даже если фронт вынесет её из .skin-cab в <body>. --- */
.ozs-modal{position:fixed;inset:0;z-index:60;background:rgba(0,26,52,.42);
  display:flex;align-items:center;justify-content:center;padding:20px;
  --oz-sec:#f2f5f8; --oz-line:#e7ebef; --oz-dim:#8b95a1;
  --oz-g:#00a650; --oz-gt:#e4f6ec; --oz-a:#c77700; --oz-at:#fff3e0;
  --oz-r:#e5124d; --oz-rt:#fdecf1;
  font-family:"Onest",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}
.ozs-modal[hidden]{display:none}
.ozs-modal-box{background:var(--card,#fff);border-radius:16px;box-shadow:0 20px 50px rgba(0,26,52,.25);
  width:min(760px,100%);max-height:86vh;display:flex;flex-direction:column;overflow:hidden}
.ozs-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 18px;border-bottom:1px solid var(--oz-line)}
.ozs-modal-title{font-weight:600;font-size:15px}
.ozs-modal-x{border:1px solid var(--oz-line);background:var(--card,#fff);border-radius:9px;
  width:30px;height:30px;font-size:16px;line-height:1;color:var(--oz-dim);cursor:pointer;font-family:inherit}
.ozs-modal-x:hover{color:var(--ink,#001a34);border-color:#d7dee6}
.ozs-modal-body{padding:14px 18px;overflow-y:auto}
.ozs-modal-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 18px;border-top:1px solid var(--oz-line);background:var(--oz-sec)}
.ozs-form-list{max-height:52vh;overflow:auto;border:1px solid var(--oz-line);border-radius:12px;padding:0 8px}
.ozs-form-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.ozs-form-tbl th{position:sticky;top:0;z-index:1;background:#f3f6f9;font-size:11px;font-weight:500;
  color:var(--oz-dim);text-align:left;padding:6px 8px}
.ozs-form-tbl td{padding:5px 8px;border-bottom:1px solid #eef0f2;white-space:nowrap}
.ozs-form-tbl th.num,.ozs-form-tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.ozs-bcode{font-size:11.5px;color:var(--oz-dim);font-variant-numeric:tabular-nums}
.ozs-fact{width:72px;padding:5px 8px;text-align:right;font-size:13px;font-weight:600;font-family:inherit}
.ozs-formcount{font-size:12.5px;color:var(--oz-dim)}
.ozs-formcount b{color:var(--accent-ink,#0047cc);font-variant-numeric:tabular-nums}
/* размер, которого нет в плане (собран из юнитки или цен) — доступен, но помечен */
.ozs-form-tbl tr.ozs-extra td{color:var(--oz-dim)}
.ozs-extra-tag{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:6px;
  background:var(--oz-sec);color:var(--oz-dim);white-space:nowrap}

/* --- Б10. Узкое окно. Медиазапрос меряет ОКНО, контенту меньше на сайдбар (~276px):
       на 1250px матрица уже уезжает в свой скролл — это штатно, а не поломка. --- */
@media (max-width:1250px){
  .ozs-entry{padding:12px 13px}
  .ozs-selbar{padding:10px 12px;gap:8px}
  .skin-cab .ozs-tbl th,.skin-cab .ozs-tbl td{padding:5px 7px}
  .skin-cab .ozs-tbl input.ozs-qty{width:56px}
  .skin-cab .ozs-winbar .seg-btn{padding:5px 7px;font-size:12px}
}
@media (max-width:900px){
  .ozs-batch-acts{margin-left:0;width:100%}
  .skin-cab .oz-collapsible>summary .detail-ctrls{margin-left:0;width:100%}
}

/* ===== SEO · Ozon — блоки с60: здоровье карточек, очередь работ, воронка, теплокарта ===== */
.seo-art{font-weight:700;white-space:nowrap}
.seo-todo-cell{white-space:normal;color:var(--muted);font-size:12.5px;min-width:210px}
.seo-cov-ok{color:#0f9d6b;font-weight:600;white-space:nowrap}
.seo-cov-bad{color:#d64545;font-weight:600}
.seo-pi-ours{color:#c77700;font-weight:600;white-space:nowrap}
/* ключи, которых нет в карточках */
.seo-kw-t{margin-top:12px;font-weight:600;font-size:13.5px}
.seo-kw-chips{margin-top:7px}
.seo-kw{display:inline-block;background:#fff7ed;border:1px solid #fed7aa;color:#8a4b08;
  border-radius:20px;padding:4px 11px;margin:0 6px 6px 0;font-size:12.5px;cursor:help}
.seo-kw b{color:#b91c1c}
/* воронка поиска */
.seo-fun{margin:2px 0 12px}
.seo-fun-t{font-size:13px;color:var(--muted);margin-bottom:5px}
.seo-fun-row{display:flex;flex-wrap:wrap}
.seo-fun-st{flex:1 1 130px;border:1px solid var(--line);border-right:0;padding:9px 12px;background:#fff}
.seo-fun-st:first-child{border-radius:10px 0 0 10px}
.seo-fun-st:last-child{border-right:1px solid var(--line);border-radius:0 10px 10px 0}
.seo-fun-st .v{font-size:18px;font-weight:700;letter-spacing:-.3px}
.seo-fun-st .l{font-size:11.5px;color:var(--muted)}
.seo-fun-st .c{font-size:11.5px;font-weight:600;color:#005bff;margin-top:2px}
.seo-fun-st .c.bad{color:#d64545}
.seo-fun-st .c .med{color:var(--muted);font-weight:400}
/* теплокарта видимости */
.seo-heat{border-collapse:collapse;font-size:11.5px}
.seo-heat th{font-size:11px;white-space:nowrap;padding:4px 6px;color:var(--muted)}
.seo-heat td{border:1px solid #fff;padding:4px 7px;text-align:right;white-space:nowrap}
.seo-heat td.seo-art{background:#fff;text-align:left;font-size:12.5px}
.seo-heat th.seo-heat-today{color:#c77700}
.seo-alerts{margin:6px 0 4px}
.seo-alert{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:7px 11px;
  margin-bottom:6px;font-size:13px;color:#8a4b08}
.seo-alert.ok{background:#ecfdf5;border-color:#a7f3d0;color:#15803d}
.mini-note{margin-top:6px;font-size:12px;color:var(--muted)}

/* =====================================================================
   с60: скин «кабинет» на вкладке SEO·Ozon. Единое оформление с РНП·Ozon,
   «Остатками» и «Поставками» (просьба Vladi 16.08.2026): класс .skin-cab
   стоит на <div id="seo_oz_view">, поэтому всё общее — карточки r16, шапки
   таблиц, поля, шрифт Onest — приезжает из блока с59 выше. Здесь только то,
   что у SEO своё: плитки .unit-tile, скор-полоса, воронка, теплокарта,
   чипы ключей и алерты. Цвет канала берётся с body[data-ch] — не дублируем.
   ⚠️ Та же грабля скина: ховеры перекрашенных элементов прописываем заново. */

/* плитки KPI — язык .kpis: серый контейнер r16, белые карточки r12 без рамок */
.skin-cab .unit-tiles{background:var(--oz-sec);border-radius:16px;padding:10px 16px;
  gap:10px;margin-bottom:14px}
.skin-cab .unit-tile{background:var(--card);border:0;border-radius:12px;box-shadow:none;
  padding:10px 14px}
.skin-cab .ut-val{font-size:22px;letter-spacing:-.4px}
.skin-cab .ut-lbl{font-size:12px;color:var(--oz-dim)}

.skin-cab .seo-art{color:var(--ink)}
.skin-cab .seo-todo-cell{color:var(--oz-dim)}

/* статусные цвета → палитра кабинета (зелёный/жёлтый/красный Ozon) */
.skin-cab .seo-cov-ok,.skin-cab .seo-pi-green{color:var(--oz-g)}
.skin-cab .seo-cov-bad,.skin-cab .seo-pi-red{color:var(--oz-r)}
.skin-cab .seo-pi-yellow,.skin-cab .seo-pi-ours{color:var(--oz-a)}
.skin-cab .seo-new{color:var(--accent)}


/* ключи, которых нет в карточке: подложка-предупреждение кабинета, без рамки */
.skin-cab .seo-kw-t{font-size:13px;font-weight:600;color:var(--ink)}
.skin-cab .seo-kw{background:var(--oz-at);border:0;border-radius:20px;color:var(--ink)}
.skin-cab .seo-kw b{color:var(--oz-a)}

/* воронка поиска: не склеенные коробки, а плитки в сером контейнере — как «Итого магазин» */
.skin-cab .seo-fun-t{color:var(--oz-dim)}
.skin-cab .seo-fun-row{background:var(--oz-sec);border-radius:16px;padding:10px 12px;gap:10px}
.skin-cab .seo-fun-st{border:0;border-radius:12px;padding:9px 12px;background:var(--card)}
.skin-cab .seo-fun-st:first-child,.skin-cab .seo-fun-st:last-child{border-radius:12px}
.skin-cab .seo-fun-st .v{font-size:20px;letter-spacing:-.4px}
.skin-cab .seo-fun-st .l{color:var(--oz-dim)}
.skin-cab .seo-fun-st .c{color:var(--accent)}
.skin-cab .seo-fun-st .c.bad{color:var(--oz-r)}
.skin-cab .seo-fun-st .c .med{color:var(--oz-dim)}

/* теплокарта: цвет считает JS — синяя шкала Ozon (решение Vladi 16.08: пастель РНП тут
   не прижилась, показы читаются лучше синим), CSS держит сетку и подписи */
.skin-cab .seo-heat td{border-color:#fff}
.skin-cab .seo-heat th{color:var(--oz-dim)}
.skin-cab .seo-heat thead th{background:#f3f6f9}
.skin-cab .seo-heat td.seo-art{background:var(--card)}
.skin-cab .seo-heat th.seo-heat-today{color:var(--oz-a)}

/* алерты просадок: подложки кабинета вместо рамок */
.skin-cab .seo-alert{background:var(--oz-at);border:0;border-radius:12px;color:var(--ink)}
.skin-cab .seo-alert b{color:var(--oz-a)}
.skin-cab .seo-alert.ok{background:var(--oz-gt);color:var(--ink)}
.skin-cab .mini-note{color:var(--oz-dim)}

/* дельты недели и графики паспорта — в палитре кабинета (было бирюзово-зелёное из с57) */
.skin-cab .seo-up{color:var(--oz-g)}
.skin-cab .seo-down{color:var(--oz-r)}
.skin-cab .seo-ch-t{color:var(--oz-dim)}

/* ===== Выкуп · Ozon (с60): когорты, кривая, причины, чувствительность ===== */
.buy-stack{display:inline-flex;height:14px;width:150px;border-radius:6px;overflow:hidden;vertical-align:middle}
.buy-stack i{display:block;height:100%}
/* с67: «Когорты по артикулам» — близнец дневных когорт с собственным лицом:
   тонированная шапка и артикулы в цвете канала; сами колонки — один в один */
/* с67 (доработки 2/3/4): раскрытие причин, чипы виновников, темы отзывов, перезаказы */
.buy-reo-ctl{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
/* с67-6: шапка «Выкупа» как у РНП в стиле Ozon + контурные иконки карточек цветом канала */
/* полировка Vladi: у .note-foldbtn глобальные поля (-2px сверху, 12px снизу) роняли кнопку
   из центра липкой строки; в барах поля обнуляем — флекс сам центрирует */
.ci-bar .note-foldbtn{margin:0}
/* заголовок — левым краем по плитке «главная цифра» (контейнер плиток даёт 16px − 2px бара) */
.buy-h2{margin:0 0 0 14px;font-size:22px;font-weight:800;letter-spacing:0;color:var(--ink)}
/* полировка Vladi: шапка-строка — сверху 14px, вниз до плиток пошире (22px);
   с67-8 то же оформление у «Соинвеста» */
[data-tab="buyout"] .ci-bar,[data-tab="coinvest"] .ci-bar{margin-top:-6px;margin-bottom:22px}
/* с67-8: цифра «пульс дня» кликабельна — открывает график доплаты */
#ci_hero_l{cursor:pointer}
/* с67-9: блочный фильтр артикула в заголовке карточки (теплокарта, «Состав») */
.ci-t-art{margin-left:10px;vertical-align:middle;font-weight:400}
/* с67-7: график выкупа по дням — открывается кликом по главной плитке */
.unit-tile.buy-main{cursor:pointer}
.buy-ch-lg{display:inline-flex;gap:14px;margin-left:auto;font-weight:400;font-size:12px;
  color:var(--oz-dim,#8b95a1)}
#buy_ch{position:relative;min-height:60px}
.buy-title-ch{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  background:var(--accent,#005bff);color:#fff;border-radius:999px;padding:3px 10px;flex:none}
.buy-ico{vertical-align:-2.5px;color:var(--accent,#005bff);flex:none}
.bb-btn .buy-ico{vertical-align:-3px}
.buy-rrow{cursor:pointer}
.buy-rrow:hover td{background:var(--accent-tint2,#f5f8ff)}
.buy-rrow .oz-caret{color:var(--accent,#005bff)}
.buy-rexp td{background:var(--accent-tint2,#f5f8ff);padding:10px 12px 12px 24px}
.buy-rexp-t{font-size:12px}
.buy-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 8px}
.buy-chip{background:#fff;border:1px solid var(--accent-line,#c7dcff);border-radius:999px;
  padding:2px 10px;font-size:12px;white-space:nowrap}
.buy-chip b{color:var(--accent-ink,#0047cc)}
.buy-feed{margin-top:4px;font-size:12.5px}
.buy-feed th{background:transparent}
.buy-top-hd{font-size:12.5px;font-weight:600;margin:14px 0 6px}
.buy-topics{display:flex;flex-direction:column;gap:6px;max-width:520px}
.buy-top-row{display:grid;grid-template-columns:110px 1fr 40px;align-items:center;gap:8px;
  font-size:12.5px}
.buy-top-row b{text-align:right;font-variant-numeric:tabular-nums}
.buy-top-bar{height:9px;border-radius:5px;background:var(--accent,#005bff)}
.buy-top-bar.dim2{opacity:.35}
.buy-verdict{margin-top:10px;padding:8px 12px;border-radius:10px;
  background:var(--accent-tint,#eaf1ff);font-size:12.5px}
#tbl_buy_coharts{--buy-good:var(--accent,#005bff)}   /* «выкуплено» здесь синее, в дневном блоке — зелёное */
#tbl_buy_coharts thead th{background:var(--accent-tint,#eaf1ff);border-bottom:1px solid var(--accent-line,#c7dcff)}
#tbl_buy_coharts thead th:first-child{border-radius:8px 0 0 0}
#tbl_buy_coharts thead th:last-child{border-radius:0 8px 0 0}
#tbl_buy_coharts .oz-artrow .seo-art{color:var(--accent-ink,#0047cc);font-weight:700}
#tbl_buy_coharts .oz-artrow .oz-caret{color:var(--accent,#005bff)}
#tbl_buy_coharts .oz-artrow:hover td{background:var(--accent-tint2,#f5f8ff)}
.buy-bar{display:inline-block;width:96px;height:8px;border-radius:5px;background:#eef2f7;
  vertical-align:middle;margin-right:7px;position:relative;overflow:hidden}
.buy-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:5px}
.buy-pill{display:inline-block;border-radius:20px;padding:2px 10px;font-size:12px;white-space:normal}
.buy-pill.ok{background:#e4f6ec;color:#0a7a3f}
.buy-pill.warn{background:#fff3e0;color:#8a5a00}
.buy-pill.dim2{background:#f2f5f8;color:#67717d}
.buy-reason{white-space:normal;min-width:230px}
th.buy-base,td.buy-base{background:#eaf1ff}
.skin-cab th.buy-base,.skin-cab td.buy-base{background:var(--accent-tint,#eaf1ff)}
.skin-cab .buy-bar,.skin-cab .buy-stack{background:var(--oz-sec)}
.skin-cab .buy-pill.dim2{background:var(--oz-sec);color:var(--oz-dim)}

/* ===== Соинвест · Ozon (с60): наши деньги против денег Ozon ===== */
.ci-our .ut-val{color:#e5124d}
.ci-oz .ut-val{color:#00a650}
.seo-fun-st.ci-minus .v{color:#e5124d}
.seo-fun-st.ci-oz-st .v{color:#00a650}
.seo-fun-st.ci-minus .c{color:#e5124d}
.seo-fun-st.ci-oz-st .c{color:#00a650}
.skin-cab .seo-fun-st.ci-minus .v,.skin-cab .seo-fun-st.ci-minus .c{color:var(--oz-r)}
.skin-cab .seo-fun-st.ci-oz-st .v,.skin-cab .seo-fun-st.ci-oz-st .c{color:var(--oz-g)}
.skin-cab .ci-our .ut-val{color:var(--oz-r)}
.skin-cab .ci-oz .ut-val{color:var(--oz-g)}
/* с61: вторая картина моста — без промокодных заказов (промокод роняет цену продавца
   в разы и один такой заказ перекашивает «наши скидки») */
.ci-clean{margin:8px 0 0;padding:9px 12px;border-radius:8px;font-size:12.5px;line-height:1.5;
  background:#f2f7ff;border:1px solid #d8e6fb;color:#123043}
.skin-cab .ci-clean{background:var(--oz-sec);border-color:var(--oz-bd);color:var(--oz-tx)}
/* раскрытие размеров внутри артикула (просьба Vladi 18.08) */
.ci-art-row{cursor:pointer}
.ci-exp{display:inline-block;width:10px;color:#8b95a1;font-size:11px}
.ci-art-row.ci-open .ci-exp{color:#005bff}
tr.ci-sub>td{background:#f7fafd;font-size:12px}
tr.ci-sub .ci-sub-sz{padding-left:22px;color:#4a5b6e;font-weight:600}
.skin-cab tr.ci-sub>td{background:var(--oz-sec)}
.skin-cab .ci-art-row.ci-open .ci-exp{color:var(--oz-acc)}
/* две зоны таблицы: слева заказы, справа деньги выкупов (правка Vladi 18.08) */
#tbl_ci_arts tr.ci-zone th{font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;
  color:#6b7c90;font-weight:700;padding-bottom:2px;border-bottom:none}
#tbl_ci_arts th.ci-zf,#tbl_ci_arts td.ci-zf{background:#fbfcfe}
#tbl_ci_arts tr.ci-zone th.ci-zf{background:#f4f8fd;border-radius:6px 6px 0 0}
#tbl_ci_arts td.ci-nob{font-size:11.5px;font-style:italic;text-align:center}
.skin-cab #tbl_ci_arts th.ci-zf,.skin-cab #tbl_ci_arts td.ci-zf{background:var(--oz-bg2,#fbfcfe)}
.skin-cab #tbl_ci_arts tr.ci-zone th.ci-zf{background:var(--oz-sec)}
.skin-cab tr.ci-sub>td.ci-zf{background:var(--oz-sec)}
/* круг 3 правок Vladi: один блок «доплата Ozon», самовыкупы, кнопка карточки */
.ci-bridge-t{margin:10px 0 4px;font-size:12px;color:#6b7c90;font-weight:600}
.skin-cab .ci-bridge-t{color:var(--oz-dim)}
.ci-sb-box{margin-top:10px}
/* с66 (просьба Vladi): строка управления раздела ЛИПНЕТ к верху при прокрутке —
   период и фильтр всегда под рукой. Класс общий: «Соинвест», «Акции», «Выкуп». */
.ci-bar{position:sticky;top:0;z-index:30;display:flex;flex-wrap:wrap;gap:8px;
  align-items:center;background:var(--bg);padding:8px 2px;margin-bottom:8px;
  box-shadow:0 8px 14px -12px rgba(15,23,42,.45)}
.ci-bar-sp{flex:1}
/* с66: пояснение «что такое соинвест» — поповер ПОД липкой строкой, а не блок наверху
   раздела: открытый с середины страницы, тот блок оставался за кадром */
.ci-bar .ci-pop{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:35;
  margin:0;box-shadow:0 16px 28px -14px rgba(15,23,42,.45)}
/* с66: заголовок Ленты заказов — кликабельный тогл, стрелка как у теплокарты */
.ci-ord-head{cursor:pointer;user-select:none}
.ci-ord-head .ci-exp{display:inline-block;width:14px;color:#4a5b6e}
.bb-btn.bb-mini{padding:2px 8px;font-size:11px;line-height:1.5;white-space:nowrap}
#tbl_ci_arts td.ci-go{text-align:right;padding-right:6px}
#tbl_ci_heat tr.ci-hrow{cursor:pointer}
/* с66: клик по ячейке дня (и по «среднему») открывает Ленту заказов */
#tbl_ci_heat tbody td{cursor:pointer}
#tbl_ci_heat tbody td:hover{outline:2px solid #005bff55;outline-offset:-2px}
/* Лента заказов: самовыкупы и СНГ видны, но приглушены — они вне расчёта */
#tbl_ci_ord tr.ci-ord-x td{opacity:.55}
/* правка Vladi: размер в теплокарте — под артикулом, а не «уезжает» вправо.
   Причина съезда была в выравнивании: .seo-heat td по умолчанию text-align:right,
   а левым его делает только класс .seo-art — теперь он есть и у строки размера. */
#tbl_ci_heat tr.ci-hsub td.seo-art{padding-left:26px}
#tbl_ci_heat .ci-sub-sz{color:#4a5b6e;font-weight:600;font-size:12px}
/* Чат 65 (просьба Vladi): даты и значения теплокарты по центру, включая «среднее»;
   первая колонка (артикул/размер) остаётся слева */
#tbl_ci_heat thead th,#tbl_ci_heat tbody td{text-align:center}
#tbl_ci_heat thead th:first-child,#tbl_ci_heat tbody td.seo-art,
#tbl_ci_heat tbody td.ci-sub-sz{text-align:left}
/* Чат 65: кнопка-«пилюля» в стиле кабинета Ozon (как rnp-export-btn в скине РНП) —
   первый потребитель: «карточка ↗» в «Составе соинвеста» */
.oz-pill{border:none;border-radius:9px;background:var(--accent-tint);color:var(--accent);
  font-size:12px;font-weight:600;padding:5px 10px;cursor:pointer;white-space:nowrap}
.oz-pill:hover{background:var(--accent-tint-h);color:var(--accent-ink)}
/* ячейка-подстановка (заказов в этот день не было) — помечаем точкой */
.seo-heat td.ci-est{position:relative;opacity:.92}
.seo-heat td.ci-est::after{content:"";position:absolute;right:2px;top:2px;width:3px;height:3px;
  border-radius:50%;background:#8b95a1}
/* светофор на среднем + календарь периода теплокарты (правки Vladi 18.08) */
.seo-heat td.ci-avg{border-left:2px solid #fff}
.ci-period{position:relative;display:inline-block;vertical-align:middle;margin-left:10px}
/* Вид календаря на вкладке «Соинвест» = вид в РНП·Ozon. РНП живёт под скином .skin-oz,
   вкладка — под .skin-cab, поэтому ТЕ ЖЕ правила повторены для её скина; цвета берутся
   из токенов канала (var(--accent) = #005BFF), никаких своих оттенков. */
.skin-cab .ci-period .rnp-ico-s{display:inline-block}     /* линейная иконка вместо эмодзи */
.skin-cab .ci-period .rnp-ico-e{display:none}
.skin-cab .ci-period .rnp-period-btn{border-color:var(--oz-line);border-radius:9px}
.skin-cab .ci-period .rnp-period-btn:hover{background:#f5f8fa;border-color:#d7dee6}
.skin-cab .ci-period .rnp-cal-pop{border-color:var(--oz-line)}
.ci-period .rnp-cal-pop{font-size:14px}   /* как в панели РНП: там базовый 14px */
.skin-cab .ci-period .rnp-cal-preset{border-radius:9px;border-color:var(--oz-line)}
.skin-cab .ci-period .rnp-cal-arrow{border-radius:8px;border-color:var(--oz-line)}
.ci-cal-all{color:var(--accent);text-decoration:none}
.ci-cal-all:hover{text-decoration:underline}
/* значок расшифровки: весь текст блока ушёл в его подсказку (правка Vladi) */
.ci-i{display:inline-block;margin-left:6px;color:#8b95a1;font-size:13px;cursor:help;
  vertical-align:middle}
.ci-i:hover,.ci-i:focus{color:var(--accent)}
.skin-cab .ci-i:hover,.skin-cab .ci-i:focus{color:var(--oz-a)}
/* ===== с63. «Соинвест» · Ozon — КОМАНДНЫЙ ПУНКТ (выбор Vladi, концепция К1) =====
   Два блока с62 («Сколько Ozon доплачивает» + «Обещано против доехавшего») слиты в один
   из трёх ярусов: цифра дня и деньги -> график с осями -> «обещано | цена единицы |
   доехало». Убраны кольцо, вертикальный мост и превью-разворот графика: они повторяли
   те же числа третий раз. Цвета — только токены канала (var(--accent) #005BFF);
   var(--oz-a) остаётся цветом предупреждения. */

/* ── ярус 1: цифра дня | чипы дельт | деньги */
.ci-cmd{display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr) minmax(0,auto);
  gap:18px;align-items:center;margin-bottom:14px}
.ci-cmd-n{min-width:0}
.ci-hero-n{font-size:50px;line-height:1;font-weight:700;letter-spacing:-1.5px;color:var(--accent)}
.ci-hero-c{margin-top:5px;font-size:12.5px;line-height:1.5;color:var(--oz-dim,#8b95a1);max-width:320px}
.ci-hero-c b{color:var(--oz-tx,#1c2530);font-weight:600}
.ci-sub-warn{color:var(--oz-a,#c77700);font-weight:600}
.ci-cmd-c{display:flex;flex-direction:column;gap:6px;align-items:flex-start;min-width:0}
.ci-chip{display:inline-flex;align-items:baseline;gap:6px;border-radius:20px;padding:4px 11px;
  font-size:12px;font-weight:600;white-space:nowrap;max-width:100%}
.ci-chip i{font-style:normal;font-weight:400;opacity:.8;font-variant-numeric:tabular-nums}
.ci-chip.up{background:var(--oz-gt,#e4f6ec);color:var(--oz-g,#00a650)}
.ci-chip.dn{background:#fdecf1;color:#e5124d}
.ci-chip.fl{background:var(--oz-sec,#f0f3f7);color:var(--oz-tx2,#41505f)}
.ci-cmd-m{display:flex;gap:10px;flex-wrap:wrap}
.ci-mt{border:1px solid var(--oz-line,#e7ebef);border-radius:12px;padding:9px 13px;
  background:var(--oz-sec2,#f9fbfd);min-width:168px}
.ci-mt b{display:block;font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;
  color:var(--oz-tx,#1c2530)}
.ci-mt span{display:block;font-size:11px;color:var(--oz-dim,#8b95a1);margin-top:2px;line-height:1.45}
.ci-mt em{display:block;font-style:normal;color:var(--oz-a,#c77700)}

/* ── ярус 2: график фиксированной высоты (рисуется по реальной ширине, см. ciDrawChart) */
.ci-ch2{border-top:1px solid var(--oz-line,#e7ebef);padding-top:10px}
.ci-ch-lg{display:flex;gap:20px;flex-wrap:wrap;font-size:12px;color:var(--oz-tx2,#41505f);
  margin-bottom:4px}
.ci-lg-i{display:inline-flex;align-items:center;gap:7px}
.ci-lg-i b{font-weight:600;color:var(--oz-dim,#8b95a1)}
.ci-lg-i i{display:inline-block;width:22px;height:0;border-radius:2px}
.ci-lg-i i.ord{border-top:3px solid var(--accent)}
.ci-lg-i i.fct{border-top:3px dashed #8b95a1}
.ci-mainch{min-height:232px}
.ci-mainch svg{display:block;max-width:100%}
.ci-ch-no{height:200px;display:flex;align-items:center;justify-content:center;text-align:center;
  color:var(--oz-dim,#8b95a1);font-size:12.5px}

/* ── ярус 3: три панели одной высоты */
.ci-row3{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) minmax(0,1fr);
  gap:14px;margin-top:12px}
.ci-mini{border:1px solid var(--oz-line,#e7ebef);border-radius:12px;padding:11px 13px 10px;
  background:var(--card,#fff);min-width:0}
.ci-mini.ord{border-color:#b9d2ff;background:var(--oz-tint,#fbfdff)}
.ci-mini.fct{background:var(--oz-sec2,#fafbfc)}
.ci-mh{display:flex;align-items:center;gap:7px;font-weight:600;font-size:12.5px;
  margin-bottom:8px;flex-wrap:wrap}
.ci-tag{font-size:10px;font-weight:700;border-radius:6px;padding:2px 7px;letter-spacing:.4px}
.ci-tag.to{background:var(--accent);color:#fff}
.ci-tag.tf{background:#5b6b7c;color:#fff}
.ci-gapn{margin-left:auto;font-size:11.5px;font-weight:600;color:var(--oz-a,#c77700);cursor:help}
.ci-kv{display:flex;justify-content:space-between;align-items:baseline;gap:8px;
  padding:5px 0;border-bottom:1px dashed var(--oz-line2,#edf0f4);font-size:12.5px}
.ci-kv:last-of-type{border-bottom:0}
.ci-kv-v{font-weight:600;font-size:14.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.ci-kv-v.oz{color:var(--accent)}
.ci-mn{font-size:11px;color:var(--oz-dim,#8b95a1);margin-top:6px;line-height:1.5}

/* полоса цены: 100% = цена продавца (в с62 сегмент подписи занимал фикс. 26% и ломал
   пропорции — доли считались от оставшихся 74%) */
.ci-gbar{display:flex;height:36px;border-radius:9px;overflow:hidden;
  border:1px solid var(--oz-line,#e7ebef)}
.ci-goz{background:var(--accent);color:#fff;font-size:12px;font-weight:600;
  display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;
  box-shadow:inset 2px 0 0 var(--card,#fff)}
.ci-gby{background:var(--oz-g,#00a650);color:#fff;font-size:12px;font-weight:600;
  display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden}
.ci-gsum{font-size:11px;color:var(--oz-dim,#8b95a1);margin-top:7px;line-height:1.5}
.ci-gsum b{color:var(--oz-tx,#1c2530);font-weight:600;font-variant-numeric:tabular-nums}

/* ── артикулы с движением: одной строкой под ярусами */
.ci-movers{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:13px}
.ci-mvt{font-size:11.5px;color:var(--oz-dim,#8b95a1)}
.ci-sig{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;
  border:1px solid var(--oz-line,#e7ebef);border-left:3px solid var(--oz-g,#00a650);
  border-radius:9px;padding:5px 11px;background:var(--card,#fff)}
.ci-sig.bad{border-left-color:#e5124d}
.ci-sig.good{border-left-color:var(--oz-g,#00a650)}
.ci-sig-a{border:0;background:none;padding:0;font:inherit;font-weight:600;cursor:pointer;
  color:var(--accent)}
.ci-sig-a:hover{text-decoration:underline}
.ci-sig-d{font-weight:700;font-variant-numeric:tabular-nums}
.ci-sig-d.bad{color:#e5124d}
.ci-sig-d.good{color:var(--oz-g,#00a650)}
.ci-sig-v{font-style:normal;color:var(--oz-dim,#8b95a1);font-variant-numeric:tabular-nums}

/* ── паспорт данных: глубина, СНГ и самовыкупы одной строкой (были тремя абзацами) */
.ci-passport{margin-top:13px;padding-top:10px;border-top:1px solid var(--oz-line2,#edf0f4);
  font-size:11.5px;color:var(--oz-tx2,#5b6b7c);line-height:1.7}
.ci-passport b{color:var(--oz-tx,#1c2530)}

/* ── с66 (гибрид К1, выбор Vladi): ряд ТРЁХ ПЛИТОК ВРЕМЕНИ над графиком.
   «Сегодня» несёт всё из бывшей первой строки, поэтому цифра дня чуть меньше */
.ci-tri{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr) minmax(0,0.95fr);
  gap:12px;margin-bottom:14px}
.ci-mini.today{border-color:#b9d2ff;background:var(--oz-tint,#fbfdff)}
.ci-tri .ci-hero-n{font-size:38px;letter-spacing:-1px}
/* с66-2 (правка Vladi): чипы дельт СТОЛБИКОМ («за окно» встаёт под «к ср. за 7 дней»),
   обе денежные карточки — рядом в одну строку (делят её поровну, текст внутри переносится) */
.ci-tri .ci-cmd-c{flex-direction:column;align-items:flex-start;gap:5px;margin:7px 0}
.ci-tri .ci-cmd-m{display:flex;gap:8px;flex-wrap:wrap}
.ci-tri .ci-cmd-m .ci-mt{flex:1 1 0;min-width:118px}
.ci-tri .ci-mt{padding:7px 11px}
/* с66 (итоговая раскладка Vladi): верхний ряд «Сегодня» из трёх колонок одного уровня —
   цифра дня · чипы столбиком · движители столбиком; деньги — строкой внизу */
/* с66 (компоновка №3): слева цифра с чипами под ней, справа деньги СТОЛБИКОМ,
   внизу плитки — «двигались сильнее всех» одной строкой */
.ci-today-row{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:9px}
.ci-today-first{flex:1 1 220px;min-width:0}
.ci-today-row .ci-cmd-n{flex:0 0 auto}
.ci-today-row .ci-cmd-c{margin:8px 0 0}
.ci-today-row .ci-cmd-m{flex:1 1 170px;min-width:160px;flex-direction:column;gap:8px}
.ci-today-row .ci-cmd-m .ci-mt{flex:0 0 auto;min-width:0;width:100%}
.ci-movers-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;
  margin-top:2px;padding-top:8px;border-top:1px dashed var(--oz-line2,#edf0f4)}
.ci-movers-row .ci-sig{padding:4px 9px}
/* в строке — компактно: «было → стало» живёт в подсказке плашки */
.ci-movers-row .ci-sig-v{display:none}

/* ── с66: мини-график в строке теплокарты + модал большого графика по размерам */
/* первая колонка — строго по содержимому (имя + спарклайн): mon-tbl растянут на 100%,
   и весь лишний запас раньше доставался ей пустотой; теперь он уходит колонкам дат */
#tbl_ci_heat th:first-child,#tbl_ci_heat td.seo-art{width:1%}
/* календарь в ЛИПКОЙ строке раскрывается влево от кнопки — правый край не уезжает за экран */
.ci-bar .rnp-cal-pop{left:auto;right:0}
.ci-spark{cursor:zoom-in;vertical-align:middle;margin-left:8px;display:inline-block;opacity:.85}
.ci-spark:hover{opacity:1}
.ci-hm-modal{position:fixed;inset:0;background:rgba(15,23,42,.42);display:flex;
  align-items:center;justify-content:center;z-index:60;padding:20px}
.ci-hm-box{background:var(--card,#fff);border-radius:14px;padding:14px 18px 14px;
  width:min(980px,94vw);max-height:92vh;overflow:auto;
  box-shadow:0 30px 60px -28px rgba(15,23,42,.55)}
.ci-hm-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.ci-hm-lg{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 10px}
.ci-hm-chip{display:inline-flex;align-items:center;gap:7px;font-size:12px;
  border:1px solid var(--oz-line,#e7ebef);border-radius:9px;padding:4px 10px;
  background:var(--card,#fff);cursor:pointer;color:var(--oz-dim,#8b95a1)}
.ci-hm-chip.on{color:var(--oz-tx,#1c2530);border-color:#b9d2ff}
.ci-hm-chip i{display:inline-block;width:16px;height:0}
.ci-hm-chip.solid{cursor:default}

/* ── с66: наводимый тултип графика — дата и соинвест по обеим линиям */
.ci-mainch svg{cursor:crosshair}
.ci-ch-tip{position:absolute;background:var(--card,#fff);border:1px solid var(--oz-line,#e7ebef);
  border-radius:9px;padding:7px 11px;font-size:12px;line-height:1.55;
  box-shadow:0 10px 22px -12px rgba(15,23,42,.45);pointer-events:none;z-index:6;white-space:nowrap}
.ci-ch-tip b{font-variant-numeric:tabular-nums}
.ci-ch-tip .tord,.ci-ch-tip .tfct{display:inline-block;width:14px;height:0;
  border-top:2.5px solid var(--accent);vertical-align:middle;margin-right:6px}
.ci-ch-tip .tfct{border-top:2px dashed #8b95a1}

@media(max-width:1180px){
  .ci-cmd{grid-template-columns:1fr;gap:12px}
  .ci-cmd-c{flex-direction:row;flex-wrap:wrap}
  .ci-row3{grid-template-columns:1fr}
  .ci-tri{grid-template-columns:1fr}
}

/* ═══ с64: вкладка «Выкуп» — главная цифра, каскад методик, шкала достоверности,
   выкуп по размерам и матрица артикул×размер. Правила расчёта — в sql/119–120. */
.unit-tile.buy-main{border:2px solid var(--oz-g,#00a650);background:var(--oz-gt2,#fcfffd);position:relative}
.unit-tile.buy-main .ut-val{font-size:32px;color:var(--oz-g,#00a650);letter-spacing:-.8px}
.unit-tile.buy-main::before{content:"главная цифра";position:absolute;top:-9px;left:13px;
  background:var(--oz-g,#00a650);color:#fff;font-size:9.5px;font-weight:700;letter-spacing:.5px;
  border-radius:6px;padding:2px 8px}
/* каскад: сырая → минус самовыкупы → минус быстрые отмены */
.buy-casc{display:flex;gap:0;flex-wrap:wrap;align-items:stretch}
.bc-step{flex:1 1 190px;min-width:0;padding:10px 14px;border:1px solid var(--oz-line,#e7ebef);
  background:var(--oz-sec2,#fbfcfe)}
.bc-step:first-child{border-radius:10px 0 0 10px}
.bc-step:last-child{border-radius:0 10px 10px 0}
.bc-step.fin{background:var(--oz-gt2,#fcfffd);border-color:var(--oz-g,#00a650)}
.bc-step b{display:block;font-size:20px;font-variant-numeric:tabular-nums}
.bc-t{display:block;font-size:11.5px;font-weight:600;color:var(--oz-tx2,#41505f);margin-top:3px}
.bc-s{display:block;font-size:10.5px;color:var(--oz-dim,#8b95a1);line-height:1.4;margin-top:2px}
.bc-d{display:block;font-size:11px;font-weight:700;margin-top:4px}
/* когорты: серая колонка «до отгрузки», приглушённые свежие дни, оценка-пилюля */
.buy-gray{color:var(--oz-dim,#8b95a1);background:var(--oz-sec2,#f7f8fa)}
.buy-early td{color:#9aa5b1}
/* Чат 65: строка «Итого» под когортами (оба блока) — ЛИПНЕТ к низу прокрутки, как шапка
   к верху (просьба Vladi: видна без скролла в конец). Линия сверху — box-shadow:
   с border-collapse рамка к sticky-ячейке в Chrome не прилипает */
/* Чат 65 (правка Vladi ×2): «воздух» над липким итогом ВСТРОЕН в саму ячейку —
   верхние 8px фона белые (читаются пустым местом), затем линия 2px, затем заливка
   итога. Тень-полоса была незаметной; градиент работает при любой прокрутке. */
tr.buy-total td{font-weight:700;padding-top:18px;padding-bottom:8px;
  position:sticky;bottom:0;z-index:2;
  background:linear-gradient(to bottom,
    var(--card,#fff) 0 8px, #c9d6ea 8px 10px, #f6f9ff 10px 100%)}
.skin-cab tr.buy-total td{background:linear-gradient(to bottom,
  var(--card,#fff) 0 8px, #c9d6ea 8px 10px, var(--oz-sec,#f6f9ff) 10px 100%)}
.buy-grade{display:inline-block;font-size:10px;font-weight:700;border-radius:999px;
  padding:2px 9px;white-space:nowrap}
/* выкуп по размерам */
.buy-sz{display:grid;grid-template-columns:38px minmax(0,1fr) 60px auto;gap:11px;align-items:center;
  padding:6px 0;border-bottom:1px solid var(--oz-line2,#f4f6f8);font-size:12.5px}
.buy-sz:last-child{border-bottom:none}
.buy-sz.small .bs-n,.buy-sz.small b{color:var(--oz-dim,#8b95a1)}
.bs-n{font-weight:700}
.buy-sz b{text-align:right;font-variant-numeric:tabular-nums}
.bs-c{font-size:11px;color:var(--oz-dim,#8b95a1)}
/* матрица артикул × размер */
.buy-mx td,.buy-mx th{text-align:center}
.buy-mx td:first-child,.buy-mx th:first-child{text-align:left}
.bm-gate{color:#a7b1bc;background:var(--oz-sec2,#f7f8fa);font-size:10.5px}
.bm-emp{color:#d5dae0}
.bm-n{display:block;font-size:9.5px;color:var(--oz-dim,#8b95a1);font-weight:400}
.bm-art{font-weight:700;background:var(--oz-sec2,#fbfcfe);border-left:2px solid var(--oz-line2,#edf0f4)}
/* реестр самовыкупов */
.buy-sb-head{font-size:12.5px;line-height:1.5;margin-bottom:9px}
.buy-sb-add{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.buy-sb-add input{flex:1 1 220px;min-width:0}

/* ═══ с63: «От чего зависит доплата» — МАТРИЦА (концепция ФВ).
   Семь таблиц со своими шкалами заменены одной: точка каждой группы стоит на ОБЩЕЙ
   шкале, вертикальная риска — база окна (взвешенный соинвест из шапки раздела). */
.fac-ctrl{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.fac-lbl{font-size:11.5px;color:var(--oz-dim,#8b95a1)}
.fac-sp{flex:1 1 12px}
.fac-chip{border:1px solid var(--oz-line,#e7ebef);background:var(--card,#fff);border-radius:20px;
  padding:4px 12px;font:inherit;font-size:12px;color:var(--oz-tx2,#41505f);cursor:pointer}
.fac-chip:hover{border-color:var(--accent);color:var(--accent)}
.fac-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.fac-mx{width:100%}
.fac-mx th{font-size:10.5px;color:var(--oz-dim,#8b95a1);font-weight:600;vertical-align:bottom}
.fac-h2,.fac-h4{white-space:nowrap}
.fac-h3{min-width:240px}
.fac-axis{position:relative;display:block;height:15px;font-size:10px;color:var(--oz-dim,#8b95a1)}
.fac-axis i{position:absolute;left:0;font-style:normal}
.fac-axis i.r{left:auto;right:0}
.fac-axis b{position:absolute;transform:translateX(-50%);white-space:nowrap;font-weight:600;
  color:var(--oz-tx,#1c2530)}
.fac-mx td{font-size:12.5px;padding:6px 10px;vertical-align:middle}
.fac-g td{font-weight:700;font-size:12px;padding-top:14px;color:var(--oz-tx,#1c2530);
  border-bottom:1px solid var(--oz-line,#e7ebef)}
.fac-note{font-weight:400;font-size:11px;color:var(--oz-dim,#8b95a1);margin-left:6px}
.fac-n{max-width:330px;line-height:1.35;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fac-o{white-space:nowrap;color:var(--oz-tx2,#41505f);font-variant-numeric:tabular-nums}
.fac-vb{display:inline-block;width:58px;height:9px;background:var(--oz-sec,#f0f3f7);
  border-radius:4px;margin-right:8px;vertical-align:middle;overflow:hidden}
.fac-vb i{display:block;height:100%;background:#9db8d9;border-radius:4px}
.fac-sc{position:relative;display:block;height:14px;min-width:200px;
  background:linear-gradient(90deg,#fdf3f5,#f2f6f2);border-radius:7px}
.fac-base{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--oz-tx,#1c2530);
  opacity:.5;border-radius:1px}
.fac-dot{position:absolute;top:2px;width:10px;height:10px;border-radius:50%;
  transform:translateX(-5px);box-shadow:0 0 0 2px var(--card,#fff)}
.fac-d{white-space:nowrap;font-variant-numeric:tabular-nums}
.fac-d b{font-weight:700}
.fac-d b.up{color:var(--oz-g,#00a650)}
.fac-d b.dn{color:#e5124d}
.fac-d b.fl{color:var(--oz-dim,#8b95a1)}
.fac-d span{margin-left:8px;font-size:11px}
.fac-fold td,.fac-flat td{color:var(--oz-dim,#8b95a1);font-size:11.5px;
  background:var(--oz-sec2,#fafbfc)}
.fac-fold td{cursor:pointer}
.fac-fold:hover td{color:var(--accent)}
@media(max-width:820px){.fac-h3,.fac-sc{min-width:120px}.fac-n{max-width:150px}}

/* с62: заголовок липкой панели раздела «Акции» */
.ac-bar-t{font-size:15px;font-weight:600}

/* с65: под ценой в «Составе соинвеста» — та же цена «как в кабинете сейчас».
   Мелко и приглушённо: крупная цифра остаётся средним по заказам окна. */
#tbl_ci_arts td .ci-cab{font-size:11px;line-height:1.25;color:#8b95a1;font-weight:400;
  margin-top:1px;white-space:nowrap;cursor:help}
.skin-cab #tbl_ci_arts td .ci-cab{color:var(--oz-dim,#8b95a1)}

/* с65: цена покупателя, внесённая из кабинета (факт), против оценки дашборда */
#tbl_ci_arts td .ci-cab.fact{color:#005bff}
#tbl_ci_arts td .ci-cab.fact b{font-weight:700;font-size:10px;opacity:.75}

/* с65: главная (кабинетная) цифра в «Составе» — факт из кабинета выделяем цветом канала */
#tbl_ci_arts td .ci-fact{color:#005bff;font-weight:600}

/* ===== с68: раздел «Реклама» · Ozon (8 блоков) — префикс adx-, палитра из токенов канала ===== */
.adx-ctl{display:flex;align-items:center;gap:12px;margin:12px 0;flex-wrap:wrap}
.adx-sub{font-size:12px;color:var(--muted)}
.adx-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:14px}
.adx-kpi{background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.adx-kl{font-size:12px;color:var(--muted)}
.adx-kv{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink)}
.adx-kd{font-size:11px;margin-top:2px}
.adx-kd.up{color:#16a34a}.adx-kd.dn{color:#dc2626}.adx-kd.dim{color:var(--muted)}
.adx-card{background:var(--card,#fff);border:1px solid var(--line);border-radius:16px;padding:14px 16px;margin-bottom:14px}
.adx-h{font-size:15px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px;margin-bottom:2px}
.adx-h + .adx-sub{margin-bottom:10px;display:block}
.adx-pill{font-size:11px;font-weight:700;border-radius:999px;padding:1px 8px;white-space:nowrap}
.adx-pill.ok{background:#e7f6ec;color:#16a34a}
.adx-pill.warn{background:#fdf3e3;color:#d97706}
.adx-pill.bad{background:#fdeaea;color:#dc2626}
.adx-pill.dim{background:var(--accent-tint2,#eef1f6);color:var(--muted)}
.adx-al{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border-radius:10px;margin-bottom:8px}
.adx-al.bad{background:#fdeaea}.adx-al.warn{background:#fdf3e3}.adx-al.info{background:var(--accent-tint)}
.adx-al > div{flex:1;min-width:0}
.adx-al b{color:var(--ink)}
.adx-sum{font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}
.adx-gos{display:flex;gap:6px;flex-wrap:wrap;align-self:center}
.adx-go{border:1px solid var(--accent-line);background:transparent;color:var(--accent);font-size:12px;
  font-weight:600;border-radius:8px;padding:2px 8px;cursor:pointer;white-space:nowrap}
.adx-go:hover{background:var(--accent-tint)}
.adx-search{border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:13px;width:260px;
  margin-bottom:8px;background:var(--card,#fff);color:var(--ink)}
/* Чат 127 (О-35): у селектов ТОЛЬКО background-color — background-шорткат
   сбрасывает системную стрелку (норма dashboard-section-header); шеврон выживал
   лишь потому, что .skin-cab select специфичнее */
.adx-select{border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-size:13px;
  background-color:var(--card,#fff);color:var(--ink)}
/* Чат 127 (О-36): единое объявление (дубль с блоком с68-2 ниже переопределял
   overflow-x молча) — контейнер скроллит в обе стороны с потолком высоты */
.adx-scroll{max-height:520px;overflow:auto}
.adx-t{width:100%;border-collapse:collapse;font-size:13px}
.adx-t th{font-size:11px;color:var(--muted);text-align:right;font-weight:600;padding:6px 8px;
  border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer;user-select:none}
.adx-t td{padding:6px 8px;text-align:right;border-bottom:1px solid var(--line);
  font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink)}
.adx-t th:first-child,.adx-t td:first-child{text-align:left}
.adx-t tr:last-child td{border-bottom:none}
.adx-t tr:hover td{background:var(--accent-tint2)}
.adx-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:5px}
.adx-dot.on{background:#16a34a}.adx-dot.off{background:#c3cad6}
.adx-btn{border:1px solid var(--line);border-radius:8px;font-size:12px;font-weight:600;
  padding:3px 10px;cursor:pointer;background:transparent;white-space:nowrap}
.adx-btn.stop{color:#d97706;border-color:#f3ddb5}.adx-btn.stop:hover{background:#fdf3e3}
.adx-btn.go{color:#16a34a;border-color:#bfe6cc}.adx-btn.go:hover{background:#e7f6ec}
.adx-jr{font-size:12px;color:var(--muted);padding:5px 0;border-bottom:1px dashed var(--line)}
.adx-jr b{color:var(--ink)}
.adx-jr:last-child{border-bottom:none}
.adx-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink,#101828);
  color:#fff;font-size:13px;border-radius:10px;padding:8px 16px;z-index:9999;box-shadow:0 6px 24px rgba(0,0,0,.25)}

/* с68-2: улучшения раздела «Реклама» по аудиту — липкие шапки таблиц, клик-артикулы,
   счёт риска, раскладка дня под графиком (.adx-scroll слит в объявление выше, О-36) */
.adx-t th{position:sticky;top:0;background:var(--card,#fff);z-index:2}
.adx-artlink{color:var(--accent);cursor:pointer;font-weight:600}
.adx-artlink:hover{text-decoration:underline}
.adx-risk{font-size:12px;font-weight:700;color:#dc2626;margin-left:auto}
.adx-day{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}
.adx-day .adx-go{margin-left:8px}

/* ===== Чат 66 (21.08.2026): «Обзор · Ozon» — сводный экран канала (#ov_oz_view).
   Ярусы: как дела → что делать → здоровье → динамика → склад и деньги.
   Цвета — из токенов канала (--accent* на body[data-ch="ozon"]). ===== */
/* Чат 66, итерация Vladi: шапка вкладки ЛИПНЕТ при прокрутке (механика .ci-bar);
   слева 13px — название ровно по левому краю БЕЛЫХ плашек внутри секций (12px
   паддинга секции + 1px рамки); сверху отступ ужат, снизу добавлен (правка Vladi) */
.ovz-head{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;
  flex-wrap:wrap;background:var(--bg,#f4f6fa);padding:12px 0 12px 13px;margin-bottom:8px;
  box-shadow:0 8px 14px -12px rgba(15,23,42,.45)}
.ovz-title{font-size:22px;font-weight:800;letter-spacing:-.3px;margin:0}
.ovz-ch{background:var(--accent);color:#fff;font-size:11.5px;font-weight:700;
  letter-spacing:.6px;border-radius:999px;padding:4px 12px}
.ovz-note{color:var(--muted,#8b95a1);font-size:12px}
.ovz-sp{flex:1}
/* секции-разделы = ЦВЕТНЫЕ ПЛАШКИ (итерация Vladi 21.08): секция целиком светло-синяя
   (сверху чуть насыщеннее), заголовок с белым кружком-иконкой ВНУТРИ плашки, все блоки
   раздела лежат внутри неё; иконки — контурные SVG .buy-ico (стиль «Выкупа») */
.ovz-sec{background:linear-gradient(180deg,#e4eeff 0%,var(--accent-tint2,#f3f7ff) 110px);
  border:1px solid #d3e2ff;border-radius:16px;margin-top:16px;padding:0 12px 12px}
.ovz-sec-t{display:flex;align-items:center;gap:11px;padding:13px 6px 11px;flex-wrap:wrap}
/* Чат 77: «Обзор»·WB — те же блоки .ovz-*, но подложки ярусов и плитка «Сегодня» у
   Ozon-вида зашиты синими значениями (утверждённый вид, менять его нельзя). Для WB
   переопределяем ТОЛЬКО эти два места — остальное уже приходит токенами канала. */
body[data-ch="wb"] .ovz-sec{background:linear-gradient(180deg,#f0e6ff 0%,var(--accent-tint2,#faf5ff) 110px);
  border-color:#e2d4fb}
body[data-ch="wb"] .ovz-tile.today{border-color:#d9c7f7;box-shadow:0 0 0 2px rgba(124,58,237,.08)}
.ovz-sec-ico{width:32px;height:32px;border-radius:50%;background:#fff;
  color:var(--accent,#005bff);display:flex;align-items:center;justify-content:center;
  flex:none;box-shadow:0 2px 6px -2px rgba(0,91,255,.35)}
.ovz-sec-tt{font-size:16px;font-weight:800;color:var(--accent-ink,#0047cc);letter-spacing:-.2px}
.ovz-sec-sub{color:#5b708c;font-weight:400;font-size:12px;margin-top:1px}
.ovz-sec .card + .card{margin-top:10px}
.ovz-empty{color:var(--muted,#8b95a1);font-size:12.5px;padding:6px 2px}
.ovz-card{margin-top:0}
.ovz-chead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.ovz-chead b{font-size:15px;font-weight:800}
/* свежесть данных */
.ovz-fresh{display:flex;align-items:center;gap:11px;background:var(--card,#fff);
  border:1px solid var(--line,#e6eaf0);border-radius:12px;padding:9px 14px;font-size:12.5px}
.ovz-dot{width:9px;height:9px;border-radius:50%;background:#0f9d58;
  box-shadow:0 0 0 4px #e7f6ee;flex:0 0 auto}
.ovz-fresh.warn .ovz-dot{background:#e2a33d;box-shadow:0 0 0 4px #fdf3e2}
.ovz-fresh.bad .ovz-dot{background:#d93025;box-shadow:0 0 0 4px #fdecea}
.ovz-fresh-t span{color:var(--muted,#8b95a1)}
/* плитки периодов */
.ovz-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}
.ovz-tile{background:var(--card,#fff);border:1px solid var(--line,#e6eaf0);
  border-radius:14px;padding:13px 15px 11px}
/* «Сегодня» на синей плашке: белая с синим кольцом (тинт-фон сливался бы с секцией) */
.ovz-tile.today{background:#fff;border-color:#bcd4ff;box-shadow:0 0 0 2px rgba(0,91,255,.08)}
.ovz-tile .per{display:flex;align-items:baseline;gap:8px}
.ovz-tile .per b{font-size:13px;font-weight:700}
.ovz-tile .per span{color:var(--muted,#8b95a1);font-size:11px}
.ovz-tile .big{font-size:22px;font-weight:800;letter-spacing:-.5px;margin:5px 0 1px;
  white-space:nowrap}
.ovz-chip{display:inline-block;font-size:11px;font-weight:700;border-radius:999px;
  padding:2px 8px;vertical-align:2px}
.ovz-chip.up{background:#e7f6ee;color:#0f9d58}
.ovz-chip.dn{background:#fdecea;color:#d93025}
.ovz-chip.fl{background:#eef1f5;color:var(--muted,#8b95a1)}
.ovz-tile .rows{margin-top:8px;border-top:1px solid var(--line,#e6eaf0);padding-top:8px;
  display:grid;gap:5px}
.ovz-tile .rw{display:flex;justify-content:space-between;gap:8px;font-size:12.5px}
.ovz-tile .rw span{color:var(--muted,#8b95a1)}
.ovz-tile .rw b{font-weight:700;white-space:nowrap}
.ovz-tile .rw.profit b{color:#0f9d58}
.ovz-tile .rw.profit.neg b{color:#d93025}
.ovz-tile .foot{margin-top:8px;font-size:10.5px;color:var(--muted,#8b95a1)}
/* алерты */
.ovz-risk{background:#fdecea;color:#d93025;font-weight:800;font-size:12.5px;
  border-radius:999px;padding:4px 13px}
.ovz-al{display:flex;align-items:center;gap:11px;border:1px solid var(--line,#e6eaf0);
  border-left-width:4px;border-radius:10px;padding:9px 13px;margin-top:8px}
.ovz-al.bad{border-left-color:#d93025;background:#fffafa}
.ovz-al.warn{border-left-color:#e2a33d;background:#fffdf7}
.ovz-al.info{border-left-color:var(--accent);background:var(--accent-tint2,#f5f8ff)}
.ovz-al .ic{font-size:15px;flex:0 0 22px;text-align:center}
.ovz-al .tx{flex:1;font-size:12.5px;min-width:200px}
.ovz-al .tx .mut{color:var(--muted,#8b95a1)}
.ovz-al .rub{font-weight:800;font-size:12.5px;white-space:nowrap}
.ovz-al.bad .rub{color:#d93025}
.ovz-al.warn .rub{color:#b7791f}
.ovz-gob{background:var(--card,#fff);border:1px solid var(--line,#e6eaf0);border-radius:8px;
  font-size:12px;font-weight:600;font-family:inherit;color:var(--accent);padding:5px 11px;
  white-space:nowrap;cursor:pointer}
/* в ленте алертов кнопки-переходы ОДНОЙ ширины — колонка ровная (правка Vladi по скрину) */
.ovz-al .ovz-gob{width:112px;text-align:center;flex:none;padding:5px 4px}
.ovz-al .rub{min-width:86px;text-align:right}
.ovz-gob:hover{background:var(--accent-tint);border-color:var(--accent-line,#c7dcff)}
/* здоровье кабинета — 3×2 (правка Vladi): плитки крупнее, вторая строка-деталь */
.ovz-health{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.ovz-hc{background:var(--card,#fff);border:1px solid var(--line,#e6eaf0);border-radius:14px;
  padding:12px 15px;cursor:pointer}
.ovz-hc:hover{border-color:var(--accent-line,#c7dcff)}
.ovz-hc .l{display:flex;align-items:center;gap:6px;color:var(--muted,#8b95a1);
  font-size:11.5px;font-weight:600}
.ovz-hc .l i{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.ovz-hc .l i.ok{background:#0f9d58}
.ovz-hc .l i.warn{background:#e2a33d}
.ovz-hc .l i.bad{background:#d93025}
.ovz-hc .v{font-size:21px;font-weight:800;margin-top:4px;letter-spacing:-.4px;white-space:nowrap}
.ovz-hc .s{font-size:11px;color:var(--muted,#8b95a1);margin-top:2px}
.ovz-hc .s2{font-size:11.5px;color:#5b708c;margin-top:6px;border-top:1px dashed var(--line,#e6eaf0);
  padding-top:6px}
/* график-линии (механика ciDrawChart) + воронка */
.ovz-chart{position:relative;min-height:232px;padding:2px 0 0}
.ovz-dot-m{width:8px;height:8px;border-radius:50%;display:inline-block;
  margin-right:6px;vertical-align:0}
.ovz-funnel{display:flex;align-items:stretch;margin-top:14px;
  border-top:1px solid var(--line,#e6eaf0);padding-top:13px;flex-wrap:wrap}
.ovz-fstep{flex:1;min-width:120px;text-align:center;position:relative;padding:2px 6px}
.ovz-fstep:not(:last-child)::after{content:"→";position:absolute;right:-6px;top:15px;
  color:#c3cbd6;font-size:14px}
.ovz-fstep .fl{font-size:11px;color:var(--muted,#8b95a1);font-weight:600}
.ovz-fstep .fv{font-size:16.5px;font-weight:800;margin-top:2px}
.ovz-fstep .fc{font-size:10.5px;margin-top:2px;color:var(--muted,#8b95a1)}
.ovz-fstep .fc b{color:var(--ink,#1a1f29);font-weight:700}
/* движение по артикулам + светофор */
.ovz-move{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ovz-mcol h4{font-size:12px;font-weight:700;color:var(--muted,#8b95a1);margin:0 0 7px}
.ovz-mrow{display:flex;align-items:center;gap:10px;border:1px solid var(--line,#e6eaf0);
  border-radius:10px;padding:7px 11px;margin-bottom:6px;cursor:pointer}
.ovz-mrow:hover{border-color:var(--accent-line,#c7dcff)}
.ovz-mrow .art{font-weight:800;font-size:12.5px;min-width:60px}
.ovz-mrow .what{flex:1;font-size:12px;color:var(--muted,#8b95a1)}
.ovz-tlbox{margin-top:12px}
.ovz-tl{width:100%;border-collapse:collapse;font-size:12.5px}
.ovz-tl th{color:var(--muted,#8b95a1);font-weight:600;text-align:left;padding:7px 10px;
  border-bottom:1px solid var(--line,#e6eaf0);font-size:11px;white-space:nowrap}
.ovz-tl td{padding:7px 10px;border-bottom:1px solid #f0f2f6;white-space:nowrap}
.ovz-tl th.num,.ovz-tl td.num{text-align:right}
.ovz-tl tr[data-art]{cursor:pointer}
.ovz-tl tr[data-art]:hover td{background:var(--accent-tint2,#f5f8ff)}
.ovz-tl td.art{font-weight:700}
/* остатки/поставки + деньги */
.ovz-stline{display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.ovz-stpill{border-radius:10px;padding:7px 13px;font-size:12px;font-weight:600}
.ovz-stpill b{font-size:15px;font-weight:800;margin-right:3px}
.ovz-stpill.bad{background:#fdecea;color:#d93025}
.ovz-stpill.warn{background:#fdf3e2;color:#b7791f}
.ovz-stpill.ok{background:#e7f6ee;color:#0f9d58}
.ovz-stpill.dim{background:#eef1f5;color:var(--muted,#8b95a1)}
.ovz-stsub{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.ovz-stbx{border:1px solid var(--line,#e6eaf0);border-radius:12px;padding:10px 13px}
.ovz-stbx h4{font-size:11.5px;font-weight:700;color:var(--muted,#8b95a1);margin:0 0 7px}
.ovz-stbx .li{display:flex;justify-content:space-between;align-items:center;gap:8px;
  font-size:12.5px;padding:3px 0}
.ovz-stbx .li b{font-weight:700}
.ovz-stbx .li span{color:var(--muted,#8b95a1)}
.ovz-stbx .li.tot{border-top:1px dashed var(--line,#e6eaf0);margin-top:5px;padding-top:7px}
.ovz-money{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}
.ovz-mc{background:var(--card,#fff);border:1px solid var(--line,#e6eaf0);border-radius:12px;
  padding:11px 13px}
.ovz-mc .l{color:var(--muted,#8b95a1);font-size:11px;font-weight:600}
.ovz-mc .v{font-size:18px;font-weight:800;margin-top:3px;letter-spacing:-.4px;white-space:nowrap}
.ovz-mc .s{font-size:10.5px;color:var(--muted,#8b95a1);margin-top:2px}
@media (max-width:1180px){ /* контенту достаётся на ~276px меньше окна (меню+поля) */
  .ovz-tiles{grid-template-columns:repeat(2,1fr)}
  .ovz-money{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:820px){
  .ovz-move,.ovz-stsub{grid-template-columns:1fr}
  .ovz-health{grid-template-columns:1fr}
}

/* =====================================================================
   Чат 67 (21.08.2026): скин «кабинет» для Unit-экономики·Ozon — С ПЕРЕКЛЮЧАТЕЛЕМ
   (как в РНП: «Стиль Ozon / Классика», память в localStorage ozu_skin, дефолт — скин).
   Класс .skin-cab вешается на <section data-tab="ozon_unit"> (как у «Остатков»/SEO),
   поэтому общий язык (Onest, токены, карточки r16, поля r9, сегменты, шапки таблиц)
   приезжает из блока с59; здесь — только то, что у юнитки своё. Разметка и JS расчёта
   НЕ тронуты: «Классика» = прежний вид 1-в-1. Все селекторы под замком
   [data-tab="ozon_unit"].skin-cab; правила с #tbl_ozu — чтобы перебить id-правила выше.
   ⚠️ грабля скина: ховеры перекрашенных контролов — заново. */

/* дуал-иконки (механика rnpIco): эмодзи — в «Классике», SVG — в скине */
.ozu-ie{display:inline}
.ozu-is{display:none;vertical-align:-3px;margin-right:3px;color:currentColor}
[data-tab="ozon_unit"].skin-cab .ozu-ie{display:none}
[data-tab="ozon_unit"].skin-cab .ozu-is{display:inline-block}
/* заголовок: «Классика» — прежняя капс-строка; скин — «Unit-экономика» + бейдж канала */
.ozu-t-cab{display:none}
[data-tab="ozon_unit"].skin-cab .ozu-t-classic{display:none}
[data-tab="ozon_unit"].skin-cab .ozu-t-cab{display:inline-flex;align-items:center}

/* --- 1. Шапка = липкая строка управления (механика .ci-bar «Выкупа»/«Соинвеста»):
       заголовок + бейдж слева, фильтры + Excel + «Обновить с Ozon» + тогл справа;
       второй ряд — пилюли действий. Контейнеры «схлопнуты» (display:contents), чтобы
       кнопки можно было пересобрать порядком (order) без правки DOM. --- */
[data-tab="ozon_unit"].skin-cab .loss-head{position:sticky;top:0;z-index:30;display:flex;flex-wrap:wrap;
  gap:8px;align-items:center;background:var(--bg);padding:8px 2px;margin:-6px 0 14px;
  box-shadow:0 8px 14px -12px rgba(15,23,42,.45)}
[data-tab="ozon_unit"].skin-cab .loss-head>div:first-child,
[data-tab="ozon_unit"].skin-cab .unit-controls{display:contents}
[data-tab="ozon_unit"].skin-cab .risk-title{display:flex;align-items:center;gap:10px;order:0;
  margin:0 auto 0 14px;font-size:22px;font-weight:800;letter-spacing:0;color:var(--ink);text-transform:none}
[data-tab="ozon_unit"].skin-cab .risk-title .buy-title-ch{margin-left:0}
/* ряд 1 */
[data-tab="ozon_unit"].skin-cab #ozu_subject{order:2}
[data-tab="ozon_unit"].skin-cab #ozu_status{order:3}
[data-tab="ozon_unit"].skin-cab #ozu_art_input{order:4}
[data-tab="ozon_unit"].skin-cab #ozu_export{order:5}
[data-tab="ozon_unit"].skin-cab #ozu_refresh{order:6}
[data-tab="ozon_unit"].skin-cab .ozu-skin-seg{order:7;margin-left:6px}
/* ряд 2 */
[data-tab="ozon_unit"].skin-cab .uc-break{order:10}
[data-tab="ozon_unit"].skin-cab .ozu-srcwrap{order:11}
[data-tab="ozon_unit"].skin-cab #ozu_2808{order:12}
[data-tab="ozon_unit"].skin-cab #ozu_expand_all{order:13}
[data-tab="ozon_unit"].skin-cab #ozu_add{order:14}
[data-tab="ozon_unit"].skin-cab #ozu_selall{order:15}
[data-tab="ozon_unit"].skin-cab #ozu_del{order:16}
[data-tab="ozon_unit"].skin-cab #ozu_reset_all{order:17}
[data-tab="ozon_unit"].skin-cab #ozu_save{order:18;margin-left:4px}
[data-tab="ozon_unit"].skin-cab #ozu_dirty,[data-tab="ozon_unit"].skin-cab #ozu_edits{order:19;color:var(--oz-dim)}
/* поля шапки */
[data-tab="ozon_unit"].skin-cab .loss-head select,
[data-tab="ozon_unit"].skin-cab .loss-head input.unit-art-input{
  padding:6px 10px;border:1px solid var(--oz-line);border-radius:9px;background:var(--card);
  font-size:13px;color:var(--ink)}
[data-tab="ozon_unit"].skin-cab .loss-head select:hover,
[data-tab="ozon_unit"].skin-cab .loss-head input.unit-art-input:hover{border-color:#d7dee6}
[data-tab="ozon_unit"].skin-cab .loss-head input.unit-art-input:focus{outline:none;border-color:var(--accent)}

/* --- 2. Кнопки: вторичные — белые с тонкой рамкой; источники БЗ — пилюли в тинте канала;
       «Сохранить» — единственная сплошная (главное действие кабинета); «Удалить» — красный
       тинт, когда есть что удалять; «Тарифы 28.08» — янтарь (меняет расчёт глобально);
       «Обновить с Ozon» — красная обводка, как «Обновить данные» у «Выкупа»/«Соинвеста». --- */
[data-tab="ozon_unit"].skin-cab .excel-btn{border:1px solid var(--oz-line);background:var(--card);color:var(--ink);
  border-radius:9px;padding:6px 12px;font-size:12.5px;font-weight:600;line-height:1.4}
[data-tab="ozon_unit"].skin-cab .excel-btn:hover{background:#f5f8fa;border-color:#d7dee6;color:var(--ink)}
[data-tab="ozon_unit"].skin-cab .excel-btn:disabled{opacity:.45;cursor:default}
[data-tab="ozon_unit"].skin-cab .excel-btn:disabled:hover{background:var(--card);border-color:var(--oz-line)}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-src{background:var(--accent-tint);border-color:transparent;color:var(--accent)}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-src:hover{background:var(--accent-tint-h);color:var(--accent-ink);border-color:transparent}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-2808{background:var(--oz-at);border-color:transparent;color:var(--oz-a)}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-2808:hover{background:#ffe8c2;border-color:transparent}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-2808.active{background:var(--oz-a);color:#fff}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-2808.active:hover{background:#a86400}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-savebtn{background:var(--accent);border-color:var(--accent);color:#fff}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-savebtn:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-actdel:not(:disabled){background:var(--oz-rt);border-color:transparent;color:var(--oz-r)}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-actdel:not(:disabled):hover{background:#fbd9e3;border-color:transparent}
[data-tab="ozon_unit"].skin-cab #ozu_reset_all:not(:disabled){background:var(--oz-at);border-color:transparent;color:var(--oz-a)}
[data-tab="ozon_unit"].skin-cab #ozu_reset_all:not(:disabled):hover{background:#ffe8c2;border-color:transparent}
[data-tab="ozon_unit"].skin-cab #ozu_refresh{background:var(--accent);border-color:var(--accent);color:#fff;border-radius:9px}   /* Чат 91 (Vladi): синяя, как «Обновить данные» */
[data-tab="ozon_unit"].skin-cab #ozu_refresh:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff}
[data-tab="ozon_unit"].skin-cab .ozu-srcmenu{border:1px solid var(--oz-line);border-radius:12px;
  box-shadow:0 10px 28px rgba(0,26,52,.14);padding:4px}
[data-tab="ozon_unit"].skin-cab .ozu-srcitem{border-radius:8px;border-bottom:0}
[data-tab="ozon_unit"].skin-cab .ozu-srcitem:hover{background:var(--accent-tint)}

/* --- 3. Плитки (серый контейнер + белые карточки — из блока SEO) + триада кабинета
       вместо прежних зелёного/красного. Плитка-фильтр «прибыльных»: кольцо канала. --- */
[data-tab="ozon_unit"].skin-cab .ut-val[style*="#0f9d6b"]{color:var(--oz-g)!important}
[data-tab="ozon_unit"].skin-cab .ut-val[style*="#d64545"]{color:var(--oz-r)!important}
[data-tab="ozon_unit"].skin-cab .u-tile-clk:hover{box-shadow:0 4px 12px rgba(0,26,52,.10);transform:translateY(-1px)}
[data-tab="ozon_unit"].skin-cab .u-tile-clk.active{border:0;box-shadow:inset 0 0 0 1.5px var(--accent)}
[data-tab="ozon_unit"].skin-cab .u-tile-clk.active .ut-val{color:var(--accent)!important}

/* --- 4. Карточки допущений / массовой правки / методики / калькулятора скидки --- */
[data-tab="ozon_unit"].skin-cab .unit-assume-card{padding:12px 16px}
[data-tab="ozon_unit"].skin-cab .ua-head{font-size:15px;font-weight:600;color:var(--ink)}
[data-tab="ozon_unit"].skin-cab .ua-head .dim,[data-tab="ozon_unit"].skin-cab .pc-mut{color:var(--oz-dim);font-size:12px;font-weight:400}
[data-tab="ozon_unit"].skin-cab .ozu-arow-cap{color:var(--oz-dim);font-size:11.5px;font-weight:600;border-right:1px solid var(--oz-line)}
[data-tab="ozon_unit"].skin-cab .ua-item{color:var(--oz-dim)}
[data-tab="ozon_unit"].skin-cab .ua-in input,[data-tab="ozon_unit"].skin-cab .ua-in select{border-color:var(--oz-line);border-radius:9px;color:var(--ink)}
[data-tab="ozon_unit"].skin-cab .ua-in input:hover,[data-tab="ozon_unit"].skin-cab .ua-in select:hover{border-color:#d7dee6}
[data-tab="ozon_unit"].skin-cab .ua-in input:focus,[data-tab="ozon_unit"].skin-cab .ua-in select:focus{outline:none;border-color:var(--accent)}
[data-tab="ozon_unit"].skin-cab .ump-lbl{color:var(--oz-dim)}
[data-tab="ozon_unit"].skin-cab .ump-btn{border:0;border-radius:9px;background:var(--oz-rt);color:var(--oz-r);padding:6px 12px}
[data-tab="ozon_unit"].skin-cab .ump-btn:hover{background:#fbd9e3}
[data-tab="ozon_unit"].skin-cab .ump-btn.ump-up{background:var(--oz-gt);color:var(--oz-g)}
[data-tab="ozon_unit"].skin-cab .ump-btn.ump-up:hover{background:#cdeedb}
/* методика: вместо жёлтого «предупреждения» — тихая серая секция кабинета */
[data-tab="ozon_unit"].skin-cab .unit-warn{background:var(--oz-sec);border:0;border-radius:12px;color:var(--ink);
  padding:10px 16px;font-size:12.5px}
[data-tab="ozon_unit"].skin-cab .unit-warn summary{color:var(--ink)}
[data-tab="ozon_unit"].skin-cab .unit-warn .dim{color:var(--oz-dim)}
[data-tab="ozon_unit"].skin-cab .unit-warn>div{color:#3a4a5c}
/* форма добавления артикула */
[data-tab="ozon_unit"].skin-cab .ozu-addform{background:var(--oz-sec);border:0;border-radius:12px}
[data-tab="ozon_unit"].skin-cab .wh-save-btn{background:var(--accent);border-color:var(--accent);color:#fff;border-radius:9px}
/* калькулятор скидки */
[data-tab="ozon_unit"].skin-cab .promo-calc .card-title{font-size:15px;font-weight:600}
[data-tab="ozon_unit"].skin-cab .pc-note{color:var(--oz-dim)}
[data-tab="ozon_unit"].skin-cab .pc-field{color:var(--oz-dim);font-weight:500}
[data-tab="ozon_unit"].skin-cab .pc-field input{border-color:var(--oz-line);border-radius:9px}
[data-tab="ozon_unit"].skin-cab .pc-field input:focus{outline:none;border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}

/* --- 5. Таблица: плоская (без зебры и цветных заливок шапки); ряд секций — белый с тёмными
       подписями 12/600 и тонкой линией, ряд колонок — светло-серая полоса кабинета;
       разделители секций — волосяные; «Прогноз» (липкие колонки справа) — в самом светлом
       тинте канала, как база в «Выкупе». Липкие колонки — белые с inset-линией. --- */
[data-tab="ozon_unit"].skin-cab #tbl_ozu{font-size:12.5px}
[data-tab="ozon_unit"].skin-cab #tbl_ozu td,[data-tab="ozon_unit"].skin-cab #tbl_ozu th{border-bottom:1px solid #eef0f2}
[data-tab="ozon_unit"].skin-cab #tbl_ozu td.oz-num{font-variant-numeric:tabular-nums}
/* правка Vladi по превью (21.08): три ступени серого сверху вниз — ряд секций ТЕМНЕЕ (#e9eef3),
   ряд колонок — полоса кабинета (#f3f6f9), строки артикулов — белые */
[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr.oz-sectrow th{background:#e9eef3;color:var(--ink);
  font-size:12px;font-weight:600;height:28px;box-shadow:0 1px 0 var(--oz-line)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr.oz-sectrow th.oz-salt0,
[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr.oz-sectrow th.oz-salt1{background:#e9eef3}
[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr.oz-sectrow th.oz-sect-clk:hover{background:#dde5ed}
[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr:nth-child(2) th{top:28px;background:#f3f6f9;color:var(--oz-dim);
  font-size:11.5px;font-weight:500;box-shadow:0 1px 0 var(--oz-line)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu th.oz-sortable:hover{background:#e9eef3;color:var(--ink)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu th.oz-sorted{color:var(--accent)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu .oz-sd{border-left:1px solid var(--oz-line)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:nth-child(even),
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:nth-child(even) td.oz-stick-a{background:var(--card)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:hover,
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:hover td.oz-stick-a{background:#f7f9fb}
[data-tab="ozon_unit"].skin-cab #tbl_ozu td.oz-stick-a{box-shadow:inset -1px 0 0 var(--oz-line)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu th.oz-stick-a{box-shadow:inset -1px 0 0 var(--oz-line),0 1px 0 var(--oz-line)}
/* «Прогноз»: три липкие колонки + их заголовок — тинт канала */
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody td.oz-stick-x,[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody td.oz-stick-y,
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody td.oz-stick-z,
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:nth-child(even) td.oz-stick-x,[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:nth-child(even) td.oz-stick-y,
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:nth-child(even) td.oz-stick-z{background:var(--accent-tint2)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:hover td.oz-stick-x,[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:hover td.oz-stick-y,
[data-tab="ozon_unit"].skin-cab #tbl_ozu tbody tr:hover td.oz-stick-z{background:#ecf2ff}
[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr:nth-child(2) th.oz-stick-x,[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr:nth-child(2) th.oz-stick-y,
[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr:nth-child(2) th.oz-stick-z{background:var(--accent-tint);color:var(--accent-ink)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu thead tr.oz-sectrow th.oz-sect-stickr{background:var(--accent-tint-h);color:var(--accent);
  box-shadow:inset 1px 0 0 var(--accent-line),0 1px 0 var(--oz-line)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu td.oz-stick-x{box-shadow:inset 1px 0 0 var(--accent-line)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu th.oz-stick-x{box-shadow:inset 1px 0 0 var(--accent-line),0 1px 0 var(--oz-line)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu td.oz-stick-z{font-weight:600}
/* ячейки-поля: тонкая рамка, r7; правленные — тинт канала вместо бирюзы; чекбокс — канал */
[data-tab="ozon_unit"].skin-cab #tbl_ozu .u-edit{border-color:var(--oz-line);border-radius:7px;color:var(--ink)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu .u-edit:hover{border-color:#c9d2dc}
[data-tab="ozon_unit"].skin-cab #tbl_ozu .u-edit:focus{outline:none;border-color:var(--accent)}
[data-tab="ozon_unit"].skin-cab .u-edit.changed{border-color:var(--accent-line);background:var(--accent-tint);color:var(--accent-ink)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu .oz-vname{font-weight:600;color:var(--ink)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu input[type="checkbox"]{accent-color:var(--accent)}
[data-tab="ozon_unit"].skin-cab #tbl_ozu [style*="#0f9d6b"]{color:var(--oz-g)!important}
[data-tab="ozon_unit"].skin-cab #tbl_ozu [style*="#d64545"]{color:var(--oz-r)!important}
[data-tab="ozon_unit"].skin-cab #tbl_ozu .oz-ovr,[data-tab="ozon_unit"].skin-cab #tbl_ozu .oz-reset{color:var(--accent)}
/* прибыль/маржа: триада кабинета вместо прежних зелёного/красного; метка «↺ вернуть посев» — цвет канала */
[data-tab="ozon_unit"].skin-cab .u-pos{color:var(--oz-g)}
[data-tab="ozon_unit"].skin-cab .u-neg{color:var(--oz-r)}
[data-tab="ozon_unit"].skin-cab .oz-reset{color:var(--accent)}
[data-tab="ozon_unit"].skin-cab .oz-reset:hover{color:var(--oz-r)}

/* правки Vladi по проду (Чат 67, вечер): (1) второй ряд шапки — кнопки влево, а не вразброс
   (базовая .loss-head даёт justify-content:space-between, при переносе он раскидывал ряд на всю
   ширину; правый край ряда 1 держит margin-right:auto у заголовка); (2) бирюзовые остатки во
   всплывающих элементах юнитки → цвета канала: пункты меню источников БЗ, тост, чипы артикулов,
   заголовок формы нового артикула. */
[data-tab="ozon_unit"].skin-cab .loss-head{justify-content:flex-start}
[data-tab="ozon_unit"].skin-cab .ozu-srcitem{color:var(--accent);border-bottom:1px solid #eef0f2}
[data-tab="ozon_unit"].skin-cab .ozu-srcitem:last-child{border-bottom:0}
[data-tab="ozon_unit"].skin-cab .ozu-srcitem:hover{background:var(--accent-tint);color:var(--accent-ink)}
[data-tab="ozon_unit"].skin-cab .ozu-srcitem span{color:var(--oz-dim)}
[data-tab="ozon_unit"].skin-cab .ozu-srcitem.dim,[data-tab="ozon_unit"].skin-cab .ozu-srcitem.dim:hover{color:var(--oz-dim);background:transparent}
[data-tab="ozon_unit"].skin-cab .oz-toast{background:#29323c;border-radius:12px;font-family:inherit}
[data-tab="ozon_unit"].skin-cab .uchip{background:var(--accent-tint);color:var(--accent-ink);border-color:var(--accent-line)}
[data-tab="ozon_unit"].skin-cab .uchip b{background:var(--accent-tint-h);color:var(--accent)}
[data-tab="ozon_unit"].skin-cab .uchip b:hover{background:var(--accent-line);color:var(--accent-ink)}
[data-tab="ozon_unit"].skin-cab .ozu-addform .ozu-af-title{color:var(--ink)}
[data-tab="ozon_unit"].skin-cab .excel-btn.ozu-savebtn.ozu-dirty{background:var(--accent-ink);border-color:var(--accent-ink)}

/* правка Vladi: второй ряд шапки — по ПРАВОМУ краю (под фильтрами и тоглом первого ряда).
   justify-content:flex-end у всей шапки: и второй ряд, и его перенос в узком окне — вправо;
   первый ряд не затронут (его правую группу держит margin-right:auto заголовка). */
[data-tab="ozon_unit"].skin-cab .loss-head{justify-content:flex-end}   /* любой перенесённый ряд — вправо; заголовок держит левый край через margin-right:auto */
[data-tab="ozon_unit"].skin-cab #ozu_dirty:empty,[data-tab="ozon_unit"].skin-cab #ozu_edits:empty{display:none}   /* пустые подсказки не должны держать зазоры флекса (ряд не доходил до правого края на 16px) */
/* финальная правка Vladi: второй ряд = две группы — источники тарифов («Комиссия», «Тарифы логистики»,
   «Тарифы 28.08») слева, действия («Развернуть всё» … «Сохранить») справа; делит ряд margin-left:auto
   у первой кнопки правой группы (свободное место уходит в этот отступ) */
[data-tab="ozon_unit"].skin-cab #ozu_expand_all{margin-left:auto}

/* =====================================================================
   Чат 67 (21.08.2026): SEO·Ozon — шапка в стиле кабинета + трекер позиций по запросам.
   Скоуп .skin-cab уже стоит на #seo_oz_view, сюда — только своё. Цвет ячейки —
   по страницам выдачи Ozon (36 товаров на странице): 1–12 / 13–36 / 37–100 / глубже. */
[data-tab="seo"] .ci-bar{margin-top:-6px;margin-bottom:22px}
[data-tab="seo"] .ci-bar select.u-edit{padding:6px 26px 6px 10px;font-size:13px;max-width:160px}
.kwt-card .card-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kwt-ctrl{display:flex;align-items:center;justify-content:flex-start;gap:10px;flex-wrap:wrap;margin:8px 0 2px}   /* Чат 165: режим и фильтры трекера — своей строкой, по левому краю */
.kwt-seg .seg-btn{padding:4px 10px;font-size:12px}
/* Чат 180 (слово Vladi): строка под заголовком — «По дням / По неделям» слева, «Добавить запрос» по правому краю
   (margin-left:auto держит кнопку справа и при переносе на узком экране) */
.kwt-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 2px}
.kwt-bar #kwt_add{margin-left:auto}
.kwt-addrow{display:flex;gap:8px;align-items:center;margin:8px 0 2px;background:var(--oz-sec);border-radius:12px;padding:8px 12px}
.kwt-addrow input.u-edit{width:320px;max-width:100%;text-align:left;font-weight:500;padding:6px 10px;border-radius:9px}
.kwt-sum{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 4px}
.kwt-chip{background:var(--oz-sec);border-radius:10px;padding:6px 12px;font-size:12.5px;color:var(--ink);display:inline-flex;align-items:center;gap:6px}
.kwt-chip b{font-size:15px}
.kwt-chip-g{background:var(--oz-gt);color:var(--oz-g)} .kwt-chip-r{background:var(--oz-rt);color:var(--oz-r)} .kwt-chip-a{background:var(--oz-at);color:var(--oz-a)}
/* Чат 165: плашки трекера кликабельны (фильтр таблицы); «новые» — синяя, как метка «новый»; выбранная — обводка */
.kwt-chip-b{background:var(--accent-tint);color:var(--accent)}
.kwt-chip-f{cursor:pointer;user-select:none;border:1px solid transparent;transition:border-color .12s}
.kwt-chip-f:hover{border-color:var(--line)}
.kwt-chip-f.on{border-color:currentColor}
.kwt-chip-f:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
/* Чат 165: «Запросы артикула» — полоса-заголовок со сворачиванием; разделитель «шт · %» в воронке */
.seo-aq-bar{display:flex;align-items:center;gap:6px;margin-top:12px;padding:8px 12px;border-radius:10px;background:var(--oz-sec);
  font-size:12.5px;font-weight:600;color:var(--ink);cursor:pointer;user-select:none}
.seo-aq-bar:hover{filter:brightness(.97)}
.seo-aq-bar:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.seo-aq-caret{width:12px;color:var(--muted)}
#seo_aq_wrap{margin-top:6px}
/* Чат 165 (слово Vladi): блок «Анализ артикула» — две пронумерованные части: «Воронка поиска» и «Анализ поиска» */
.seo-part{border-top:1px solid var(--line);padding-top:12px;margin-top:6px}
.seo-part + .seo-part{margin-top:18px}
.seo-part-t{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;font-weight:700;font-size:13.5px;margin-bottom:10px;color:var(--ink)}
.seo-part-n{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;
  background:var(--accent-tint);color:var(--accent);font-size:11.5px;align-self:center}
#seo_an_card .seo-part .note{margin:0 0 10px}
/* Чат 166 (слово Vladi): «Анализ артикула» — воронка-лента, «Где течёт», карта артикулов своей категории (свёрнута), живые графики */
.seo-fun-viz{margin:4px 0 2px;overflow-x:auto;overflow-y:hidden}
.seo-leak{display:flex;gap:10px;align-items:flex-start;border-radius:12px;padding:10px 14px;margin:10px 0 2px;font-size:13px;line-height:1.5}
.seo-leak .lk-ic{flex:0 0 22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:#fff}
.seo-leak.bad{background:var(--oz-rt,#fdecf1)} .seo-leak.bad .lk-ic{background:var(--oz-r,#e5124d)} .seo-leak.bad b{color:var(--oz-r,#e5124d)}
.seo-leak.ok{background:var(--oz-gt,#e4f6ec)} .seo-leak.ok .lk-ic{background:var(--oz-g,#00a650)} .seo-leak.ok b{color:#007a3b}
.seo-map-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 4px}
.seo-cchips{display:inline-flex;gap:4px;background:var(--oz-sec,#f2f5f8);border-radius:10px;padding:3px}
.seo-cchips button{border:0;background:none;border-radius:8px;padding:4px 10px;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink);cursor:pointer}
.seo-cchips button.on{background:var(--card,#fff);box-shadow:0 1px 2px rgba(0,26,52,.12);color:var(--accent)}
.seo-cchips button:disabled{opacity:.45;cursor:not-allowed}
.seo-map-lg{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--oz-dim,#8b95a1);margin:2px 0 6px}
.seo-map-lg i{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.seo-map-box{position:relative;overflow-x:auto;overflow-y:hidden}
/* Чат 199 (слово Vladi): подсказка кружка — поверх всех блоков: привязана к окну, а не к рамке карты (та её обрезала);
   на узком экране текст переносится, за край окна подсказка не уходит */
.ci-ch-tip.seo-map-tip{position:fixed;z-index:96;white-space:normal;width:max-content;max-width:calc(100vw - 16px)}
.ci-ch-tip.seo-map-tip[hidden]{display:none}
.seo-map-grp{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.seo-map-grp .g{border-radius:12px;padding:9px 14px;font-size:13px;line-height:1.5}
.seo-map-grp .g.bad{background:var(--oz-rt,#fdecf1)} .seo-map-grp .g.ok{background:var(--oz-gt,#e4f6ec)}
.seo-map-grp .g b{margin-right:6px}
.seo-map-chip{display:inline-block;background:var(--card,#fff);border:1px solid var(--oz-line,#e7ebef);border-radius:20px;padding:1px 9px;margin:2px 3px 0 0;font-size:12px;font-weight:600;cursor:pointer}
.seo-map-chip:hover{border-color:var(--accent);color:var(--accent)}
.seo-ch-lg{display:inline-flex;align-items:center;gap:5px;margin-left:12px}
.seo-ch-lg i{display:inline-block;width:16px;height:0;border-top:2.5px solid #005bff}
.seo-ch-lg i.gr{border-top-color:#b8c2cc}
.seo-ch-lg i.dash{border-top:2px dashed var(--oz-dim,#8b95a1)}
.ci-ch-tip .tfct.seo-tip-gr{border-top:2.5px solid #b8c2cc}
.seo-tip-warn{color:var(--oz-a,#c77700);font-weight:600}
.ci-ch-tip.seo-ch-tip{white-space:normal;width:max-content;max-width:236px}
/* Чат 166 (слово Vladi): «Запросы недели» — листалка недель ‹ неделя › (список без предела ширины, в одну строку) */
.seo-wk{display:inline-flex;align-items:center;gap:4px;font-weight:500}
.seo-wk-l{font-size:13px;color:var(--muted);margin-right:2px}
.seo-wk-btn{border:1px solid var(--oz-line,#e7ebef);background:var(--card,#fff);border-radius:9px;width:30px;height:30px;padding:0;
  font-size:15px;line-height:1;color:var(--ink);cursor:pointer}
.seo-wk-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.seo-wk-btn:disabled{opacity:.35;cursor:not-allowed}
#seo_week.u-edit{max-width:none;white-space:nowrap;font-size:13px;padding:6px 26px 6px 10px;height:30px}
.kwt-wrap{max-height:560px}
.kwt-tbl{width:100%} .kwt-tbl th{text-align:center} .kwt-tbl th.seo-art{text-align:left} .kwt-tbl th.oz-num{text-align:right}
.kwt-tbl th.kwt-chk,.kwt-tbl td.kwt-chk{width:22px;padding:4px 2px 4px 6px} .kwt-cb{accent-color:var(--accent);margin:0}
.kwt-tbl th.kwt-dh{min-width:38px;font-weight:500} .kwt-tbl th.kwt-we{color:#ff4257} .kwt-tbl th.kwt-part{color:var(--oz-a)}
.kwt-tbl td.kwt-c{text-align:center;font-variant-numeric:tabular-nums;font-weight:600;min-width:38px;color:#123043}
.kwt-tbl td.c-g{background:#e4f6ec;color:#00733a} .kwt-tbl td.c-y{background:#eef6da;color:#4d6a00}
.kwt-tbl td.c-a{background:#fff3e0;color:#8a5200} .kwt-tbl td.c-r{background:#fdecf1;color:#a00d38}
.kwt-tbl td.c-n{background:#f3f6f9;color:var(--oz-dim);font-weight:400} .kwt-tbl td.c-nd{background:#fff;color:#c5ccd4;font-weight:400}
.kwt-lg{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin:0 2px 0 4px}
.kwt-lg.c-g{background:#e4f6ec} .kwt-lg.c-y{background:#eef6da} .kwt-lg.c-a{background:#fff3e0} .kwt-lg.c-r{background:#fdecf1} .kwt-lg.c-n{background:#f3f6f9;border:1px solid #e7ebef}
.kwt-q{font-weight:600;cursor:pointer;white-space:nowrap} .kwt-caret{display:inline-block;width:12px;color:var(--oz-dim);font-size:10px;transition:transform .15s}
.kwt-row.open .kwt-caret{transform:rotate(90deg)} .kwt-row.open td{background:var(--accent-tint2)}
.kwt-row:hover td.seo-art{color:var(--accent)}
.kwt-top{font-size:10px;font-weight:700;background:var(--oz-gt);color:var(--oz-g);border-radius:6px;padding:1px 5px;margin-left:6px;vertical-align:1px}
.kwt-tag{font-size:10px;font-weight:600;background:var(--oz-sec);color:var(--oz-dim);border-radius:6px;padding:1px 5px;margin-left:5px;vertical-align:1px}
.kwt-tag-new{background:var(--accent-tint);color:var(--accent)}
.kwt-pill{display:inline-block;border-radius:8px;padding:1px 7px;font-size:11.5px;font-weight:600;background:var(--oz-sec);color:var(--oz-dim)}
.kwt-up{background:var(--oz-gt);color:var(--oz-g)} .kwt-dn{background:var(--oz-rt);color:var(--oz-r)}
.kwt-spark{width:96px;height:22px;display:block} .kwt-tbl td.kwt-d{text-align:center}
.kwt-pin{border:0;background:transparent;color:#c5ccd4;cursor:pointer;font-size:15px;line-height:1;padding:0 2px} .kwt-pin:hover,.kwt-pin.on{color:var(--oz-a)}
/* Чат 171 (слово Vladi, sql/319): «Прокачка» — запросы, которые продвигают сами через внешние сервисы.
   Оформление — вариант C «ракета» в цветах Ozon: значок и метка — синяя заливка (как «Обновить данные»), плашка — светло-синяя без значка */
.kwt-tbl th.kwt-boost-th{font-size:11px;white-space:nowrap} .kwt-tbl td.kwt-boost-td{text-align:center}
.kwt-boost{border:0;background:transparent;color:#c5ccd4;cursor:pointer;border-radius:7px;padding:3px 6px;line-height:0;display:inline-flex;transition:background .12s,color .12s}
.kwt-boost:hover{color:var(--accent);background:var(--accent-tint)} .kwt-boost.on{color:#fff;background:var(--accent)} .kwt-boost.on:hover{color:#fff;background:var(--accent-ink)}
.kwt-tag-boost{background:var(--accent);color:#fff} .kwt-tag-boost svg{vertical-align:-1px;margin-right:3px}
.kwt-chip-v{background:var(--accent-tint);color:var(--accent)} .kwt-boost-inl{color:var(--accent)} .kwt-boost-inl svg{vertical-align:-2px}
/* Чат 171 (аудит SEO, этап 1): строка «не предлагаем вписывать» под подсказками ключей */
.seo-kw-skip{flex-basis:100%;margin-top:6px}
/* Чат 171 (аудит SEO, этап 2): ненадёжная позиция (размер увидели меньше 5 человек) — бледная; просадка показов при почти пустом складе */
.kwt-tbl td.kwt-weak{opacity:.42}
/* Чат 183 (слово Vladi): «Видели» раскрывается — «Открыли» и «Откр/Увид, %» (по умолчанию свёрнуто) */
.kwt-tbl .kwt-xp{display:inline-block;margin-right:5px;padding:0 5px;border-radius:5px;color:var(--accent);background:var(--accent-tint,#eef4ff);cursor:pointer;font-size:10px;line-height:16px}
.kwt-tbl .kwt-xp:hover{background:var(--accent-tint-h,#dde9ff)}
.kwt-tbl td.kwt-xc{background:var(--accent-tint2,#f5f8ff)}
/* Чат 183 (слово Vladi): «Средняя» и «Лучшая» — значения по центру; светофор страниц выдачи (c-g/c-y/c-a/c-r, как дни) —
   только у «Лучшей», «Средняя» — просто число. Вид «зазор» выбран вживую из трёх (зазор / плашки / рамка «за период»):
   белый промежуток с серой линией слева от «Средней» и справа от «Лучшей» */
.kwt-tbl th.kwt-avg,.kwt-tbl th.kwt-best,.kwt-tbl td.kwt-avg,.kwt-tbl td.kwt-best{text-align:center;position:relative}
.kwt-tbl td.kwt-avg,.kwt-tbl td.kwt-best{font-weight:600;font-variant-numeric:tabular-nums}
.kwt-tbl th.kwt-avg,.kwt-tbl td.kwt-avg{border-left:18px solid var(--card,#fff)}
.kwt-tbl th.kwt-best,.kwt-tbl td.kwt-best{border-right:18px solid var(--card,#fff)}
.kwt-tbl th.kwt-avg::before,.kwt-tbl td.kwt-avg::before,.kwt-tbl th.kwt-best::after,.kwt-tbl td.kwt-best::after{content:"";position:absolute;top:0;bottom:-1px;width:2px;background:#9fb3c8}
.kwt-tbl th.kwt-avg::before,.kwt-tbl td.kwt-avg::before{left:-10px}
.kwt-tbl th.kwt-best::after,.kwt-tbl td.kwt-best::after{right:-10px}
.seo-alert.seo-alert-stock{background:#fff3e0;border-left-color:#c77700}
.kwt-more{margin-top:8px;font-size:12.5px;color:var(--oz-dim)} .kwt-more a{color:var(--accent);text-decoration:none;font-weight:600}
.kwt-exp{margin-top:10px;background:var(--oz-sec);border-radius:12px;padding:10px 12px}
.kwt-exp .seo-ch{border:0} .kwt-exp-h{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:4px}
.kwt-exp-lg{display:inline-flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--ink)}
.kwt-exp-lg i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
/* Чат 172 (аудит SEO·Ozon, этап 3). В21 — плашка периода / снимка в заголовке каждого блока, одним видом */
.seo-per{display:inline-flex;align-items:center;gap:5px;background:var(--oz-sec,#f2f5f8);color:var(--ink);border-radius:8px;
  padding:3px 9px;font-size:12px;font-weight:600;white-space:nowrap;vertical-align:1px}
.seo-per svg{color:var(--oz-dim,#8b95a1);flex:none}
.seo-per[hidden]{display:none}
/* И7 — ссылки «запрос → выдача Ozon», «артикул → карточка»: маленький значок, по наведению — цвет Ozon */
.seo-ext{display:inline-flex;align-items:center;color:var(--oz-dim,#8b95a1);margin-left:5px;text-decoration:none;vertical-align:0;opacity:.75}
.seo-ext:hover{color:var(--accent);opacity:1}
.seo-ext-hdr{margin-left:0;width:33px;height:33px;justify-content:center;background:var(--card,#fff);border:1px solid var(--oz-line,#e7ebef);border-radius:9px;opacity:1}
.seo-ext-hdr[hidden]{display:none}
/* Чат 199 (заказ Vladi): плашка «OZON N SKU ▾» у артикула в шапке — та же, что в РНП·Ozon (стили .rnp-nmC — rnp_oz.css);
   здесь только рост под соседей по шапке (33 px) */
.seo-skupill{display:inline-flex;align-items:stretch;flex:none}
.seo-skupill[hidden]{display:none}
.seo-skupill .rnp-nmC{border-radius:9px}
.seo-skupill .rnp-nmC-main{padding:2px 10px}
/* с плашкой группа «артикул · SKU · ссылка · период» на телефоне шире экрана — период уходит на вторую строку */
@media (max-width:560px){[data-tab="seo"] .ci-strip .ci-igrp{flex-wrap:wrap;max-width:100%}}
/* У3 — режим и плашки-фильтры трекера одним рядом */
.kwt-ctrl .kwt-sum{margin:0}
#kwt_add:disabled{opacity:.45;cursor:not-allowed}
/* У7 — узкий экран: запрос (с галочкой) прилипает слева, ☆ и «Прокачка» — справа; фон ячеек — непрозрачный */
.kwt-tbl th.kwt-chk,.kwt-tbl td.kwt-chk{position:sticky;left:0;z-index:2;min-width:30px;width:30px;box-sizing:border-box;background:var(--card,#fff)}
.kwt-tbl th.kwt-qh,.kwt-tbl td.kwt-q{position:sticky;left:30px;z-index:2;background:var(--card,#fff);box-shadow:6px 0 6px -6px rgba(0,26,52,.18)}
.kwt-tbl th.kwt-pin-th,.kwt-tbl td.kwt-pin-td{position:sticky;right:66px;z-index:2;min-width:30px;width:30px;box-sizing:border-box;background:var(--card,#fff);text-align:center}
.kwt-tbl th.kwt-boost-th,.kwt-tbl td.kwt-boost-td{position:sticky;right:0;z-index:2;min-width:66px;width:66px;box-sizing:border-box;background:var(--card,#fff)}
.kwt-tbl th.kwt-pin-th{box-shadow:-6px 0 6px -6px rgba(0,26,52,.18)}
.kwt-tbl td.kwt-pin-td{box-shadow:-6px 0 6px -6px rgba(0,26,52,.18)}
.seo-tblwrap thead th.kwt-chk,.seo-tblwrap thead th.kwt-qh,.seo-tblwrap thead th.kwt-pin-th,.seo-tblwrap thead th.kwt-boost-th{z-index:3}
.skin-cab .seo-heat thead th.kwt-chk,.skin-cab .seo-heat thead th.kwt-qh,.skin-cab .seo-heat thead th.kwt-pin-th,.skin-cab .seo-heat thead th.kwt-boost-th{background:#f3f6f9}
.kwt-row.open td.kwt-chk,.kwt-row.open td.kwt-q,.kwt-row.open td.kwt-pin-td,.kwt-row.open td.kwt-boost-td{background:var(--accent-tint2)}
/* И7 — каннибализация: метка «N мод.» у запроса при «Все артикулы» */
.kwt-tag-multi{background:var(--oz-at,#fff3e0);color:var(--oz-a,#c77700);cursor:help}
/* И1 — эффект «Прокачки» под графиком запроса */
.kwt-boost-eff{background:var(--accent-tint);border-radius:10px;padding:8px 12px;margin:0 0 8px;font-size:12.5px;line-height:1.5;color:var(--ink)}
.kwt-boost-eff b{color:var(--accent)} .kwt-boost-eff b svg{vertical-align:-1px;margin-right:3px}
.kwt-boost-eff .dim{font-size:11.5px;margin-top:2px}
/* И2 — «какие запросы продают»: строка-итог над «Запросами недели» */
.seo-q-sum{margin:8px 0 2px;font-size:12.5px;background:var(--oz-sec,#f2f5f8);border-radius:10px;padding:7px 12px}
.seo-q-sum[hidden]{display:none}
#seo_q_mode{margin-left:4px}
/* И5 — остаток: у артикула в теплокарте и штриховка дней с остатком к продаже < 5 шт. */
.seo-heat-stk{font-size:11px;font-weight:600;color:var(--oz-dim,#8b95a1);margin-left:4px}
.seo-heat-stk.low{color:var(--oz-r,#e5124d)}
.seo-heat td.seo-heat-low{background-image:repeating-linear-gradient(135deg,rgba(229,18,77,.30) 0 2px,transparent 2px 6px)}
/* Чат 183 (слово Vladi): «Видимость по дням» — ▸ у артикула раскрывает «Корзины, шт» и «Заказы, шт» по тем же дням */
#tbl_seo_heat tr.seo-hrow td.seo-art{cursor:pointer;user-select:none}
#tbl_seo_heat tr.seo-hrow td.seo-art:hover{color:var(--oz-acc,#005bff)}
#tbl_seo_heat tr.seo-open .ci-exp{color:var(--oz-acc,#005bff)}
#tbl_seo_heat tr.seo-hsub td.seo-art{padding-left:26px;font-weight:600;font-size:12px;color:#4a5b6e}
.seo-heat-lg{display:inline-block;width:14px;height:11px;border-radius:3px;vertical-align:-1px;margin-left:4px;
  background:#f0f5fc repeating-linear-gradient(135deg,rgba(229,18,77,.30) 0 2px,transparent 2px 6px)}
/* Чат 172 (аудит SEO, п. 43 — вариант C «чек-лист», слово Vladi): «Карточка: что чинить» — слева матрица «живая карточка ×
   5 проверок» (светофор), справа — чек-лист выбранной карточки; на узком экране — друг под другом */
.seo-fix{display:grid;grid-template-columns:minmax(380px,1fr) 1.35fr;gap:14px;align-items:start}
.seo-fix-mx{max-height:640px;margin-top:0}
.seo-fix-tbl th.seo-fix-c,.seo-fix-tbl td.seo-fix-c{text-align:center;white-space:nowrap}
.seo-fix-row{cursor:pointer} .seo-fix-row:hover td{background:#f5f8ff}
.seo-fix-row.on td{background:var(--accent-tint)} .seo-fix-row.on td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
.seo-art-b{font-weight:700;white-space:nowrap}
.seo-fix-sub{font-size:11.5px;color:var(--oz-dim,#8b95a1);margin-top:1px}
.seo-fix-n{font-size:11.5px;font-weight:600;color:var(--oz-dim,#8b95a1)}
.seo-fix-dot{display:inline-block;width:18px;height:18px;border-radius:50%;text-align:center;line-height:18px;font-size:11px;font-weight:800;color:#fff;flex:none;vertical-align:middle}
.seo-fix-dot.g{background:var(--oz-g,#00a650)} .seo-fix-dot.r{background:var(--oz-r,#e5124d)} .seo-fix-dot.a{background:var(--oz-a,#c77700)} .seo-fix-dot.n{background:#c5ccd4}
.seo-fix-lg{display:inline-block;width:15px;height:15px;border-radius:50%;text-align:center;line-height:15px;font-size:10px;font-weight:800;color:#fff;vertical-align:-2px}
.seo-fix-lg.g{background:var(--oz-g,#00a650)} .seo-fix-lg.r{background:var(--oz-r,#e5124d)} .seo-fix-lg.a{background:var(--oz-a,#c77700)}
.chip-stk{display:inline-block;border-radius:7px;padding:1px 7px;margin-left:4px;font-size:11px;font-weight:600;background:var(--oz-sec,#f2f5f8);color:var(--ink);white-space:nowrap;vertical-align:1px}
.chip-stk.low{background:var(--oz-rt,#fdecf1);color:var(--oz-r,#e5124d)}
.seo-fix-h{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-size:14px;margin:2px 0 8px}
.seo-fix-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.seo-fix-box{border:1px solid var(--oz-line,#e7ebef);border-radius:12px;padding:10px 12px;background:var(--card,#fff)}
.seo-fix-box h4{margin:0 0 6px;font-size:12.5px;font-weight:700;color:var(--ink)}
.seo-fix-li{display:flex;gap:8px;align-items:flex-start;margin:5px 0;font-size:12.5px;line-height:1.45}
/* «Что ищут на Ozon» — вкладка «Запросов недели» (решение Vladi) */
.seo-q-tabs .seg-btn{font-size:13px;font-weight:600}
.seo-q-ctl{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}
.seo-q-ctl[hidden]{display:none}
.seo-top-st{display:inline-block;border-radius:8px;padding:2px 8px;font-weight:700;font-size:11.5px;white-space:nowrap}
.seo-top-st.r{background:var(--oz-rt,#fdecf1);color:var(--oz-r,#e5124d)} .seo-top-st.a{background:var(--oz-at,#fff3e0);color:#8a5200}
.seo-top-st.g{background:var(--oz-gt,#e4f6ec);color:#007a3b} .seo-top-st.y{background:#eef6da;color:#4d6a00}
@media (max-width:1100px){.seo-fix{grid-template-columns:1fr} .seo-fix-grid{grid-template-columns:1fr}}
/* Чат 172 (слово Vladi): заметки в ячейках трекера — окно как в РНП (rnp-pop); красная точка — заметка есть */
.kwt-tbl td.kwt-c[data-j]{cursor:pointer;position:relative}
.kwt-tbl td.kwt-c.has-note::after{content:"";position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background:var(--accent-hot,#f91155)}
.kwt-note-meta{display:block;font-size:11px;color:var(--oz-dim,#8b95a1);margin-top:2px}
/* ключи чек-листа: «…и ещё N — показать все» / «свернуть» */
.seo-fix-more{display:inline-block;margin-top:4px;font-size:12px;font-weight:600;color:var(--accent);text-decoration:none}
.seo-fix-more:hover{text-decoration:underline}
/* «Что ищут на Ozon»: «Моделей» — кнопка-число, окно со списком артикулов */
.seo-top-mdl{border:1px solid var(--accent-line,#c7dcff);background:var(--accent-tint);color:var(--accent-ink,#0047cc);border-radius:8px;
  min-width:30px;padding:1px 8px;font:inherit;font-weight:700;cursor:pointer}
.seo-top-mdl:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.rnp-pop.seo-mdl-pop{width:330px}
.seo-mdl-it{padding:7px 0;border-top:1px solid var(--oz-line,#e7ebef);font-size:12.5px}
.seo-mdl-it:first-of-type{border-top:0;padding-top:0}
.seo-mdl-nm{color:var(--ink);margin-top:2px;line-height:1.35}
.seo-mdl-st{margin-top:2px;color:var(--oz-dim,#8b95a1)}
.seo-mdl-ft{font-size:11px;margin-top:6px}
.kwt-ev{margin-top:8px;font-size:12px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.kwt-ev-t{color:var(--oz-dim)} .kwt-ev-i{background:#fff;border-radius:8px;padding:3px 8px;border-left:3px solid #8b95a1}
.kwt-ev-card{border-left-color:#7c3aed} .kwt-ev-price{border-left-color:#c77700}
/* Чат 173 (слово Vladi): дни «ждём Ozon» — после последнего загруженного по сегодня; пустые, заметку ставить можно */
.kwt-tbl th.kwt-wait,.skin-cab .kwt-tbl thead th.kwt-wait{color:var(--accent);background:var(--accent-tint2,#f5f8ff);line-height:1.15}
.kwt-tbl th.kwt-wait small{display:block;font-size:9.5px;font-weight:600;color:var(--accent);opacity:.8;white-space:nowrap}
.kwt-tbl th.kwt-wait1,.kwt-tbl td.kwt-wait1{border-left:2px dashed var(--accent-line,#c7dcff)}
.kwt-tbl td.c-wait{background:repeating-linear-gradient(135deg,#f3f7ff 0 5px,#fff 5px 10px);color:var(--accent);font-weight:400}
.kwt-tbl td.c-wait:hover{background:var(--accent-tint)}
.kwt-tbl td.c-wait:hover::before{content:"\270E"}
.kwt-tbl td.c-wait.has-note{background:var(--accent-tint)}
.kwt-lg.c-wait{background:repeating-linear-gradient(135deg,#dbe7ff 0 3px,#fff 3px 6px);border:1px solid var(--accent-line,#c7dcff)}
.kwt-pop-wait{font-size:11.5px;color:var(--accent);background:var(--accent-tint);border-radius:8px;padding:6px 9px;margin-bottom:8px}
/* заметки на графике запроса (вариант B): чипы в «Событиях периода» и переключатель «все по артикулу / только этого запроса» */
.kwt-ev-note{border-left-color:var(--accent-hot,#f91155);background:#fff0f4}
.kwt-ev-note.other{opacity:.55}
/* Чат 192 (заказ Vladi): «События периода» — две строки, дальше кнопка «показать все · ещё N» / «свернуть» */
.kwt-ev-more{border:1px solid var(--accent-line,#c7dcff);background:var(--accent-tint2,#f5f8ff);color:var(--accent,#005bff);border-radius:8px;padding:2px 9px;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap}
.kwt-ev-more:hover{background:var(--accent-tint,#eaf1ff)}
.kwt-ev-more[hidden],.kwt-ev-i[hidden]{display:none}
/* Чат 192 (слово Vladi): пояснение под трекером — сворачиваемое, по умолчанию свёрнуто */
.kwt-help>summary{cursor:pointer;list-style:none;user-select:none;display:inline-flex;align-items:center;gap:6px;font-weight:600}
.kwt-help>summary::-webkit-details-marker{display:none}
.kwt-help>summary::before{content:"\25B8";color:var(--muted,#94a3b8);font-size:11px}
.kwt-help[open]>summary::before{content:"\25BE"}
.kwt-help[open]>summary{margin-bottom:4px}
.kwt-help>summary:hover{color:var(--accent,#005bff)}
/* Чат 192: подпись переключателя стала длиннее («Заметки и события») — на узком экране кнопки уходят на свою строку */
.kwt-nsc{flex-wrap:wrap;justify-content:flex-end}
.kwt-nsc-l{white-space:nowrap}
.kwt-nsc{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:12px}
.kwt-nsc[hidden]{display:none}
.kwt-nsc-l{color:var(--accent-hot,#f91155);font-weight:600}

/* ===== Монитор данных 2.0 (Чат 68) — свои классы mon2-*, общий .mon-tbl не трогаем ===== */
.mon2-head{display:flex;align-items:center;gap:14px;margin-bottom:10px;flex-wrap:wrap}
.mon2-head h2{font-size:18px;margin:0;display:flex;align-items:center;gap:10px}
.mon2-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--accent-tint2,#e9f0ff);color:var(--accent,#005BFF)}
.mon2-ctrl{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.mon2-btn{border:1px solid var(--line,#d9dee5);background:#fff;border-radius:8px;padding:4px 10px;font-size:12px;cursor:pointer;color:var(--ink,#123043);white-space:nowrap}
.mon2-btn:hover{border-color:var(--accent,#005BFF);color:var(--accent,#005BFF)}
.mon2-btn.p{background:var(--accent,#005BFF);border-color:var(--accent,#005BFF);color:#fff}
.mon2-btn.mini{padding:1px 6px;font-size:10.5px}
.mon2-banner{display:flex;align-items:center;gap:14px;border-radius:14px;padding:12px 16px;margin-bottom:14px;border:1px solid var(--line,#d9dee5);background:#fff}
.mon2-banner.lvl-ok{background:#eefaf2;border-color:#bfe9d1}.mon2-banner.lvl-warn{background:#fff7ed;border-color:#fcd9a8}.mon2-banner.lvl-error{background:#fdecf1;border-color:#f5b5c8}
.mon2-banner .mon2-dot{width:14px;height:14px;border-radius:50%;background:#8b95a1;flex:none}
.mon2-banner.lvl-ok .mon2-dot{background:#00a650}.mon2-banner.lvl-warn .mon2-dot{background:#c77700}.mon2-banner.lvl-error .mon2-dot{background:#e5124d}
.mon2-banner b{font-size:15px}.mon2-sub{color:var(--muted,#6b7a8c);font-size:12px;margin-top:2px}
.mon2-kpis{display:flex;gap:10px;margin-left:auto;flex-wrap:wrap}
.mon2-kpi{background:#fff;border:1px solid var(--line,#d9dee5);border-radius:10px;padding:6px 12px;text-align:center;min-width:84px}
.mon2-kpi b{display:block;font-size:16px}.mon2-kpi span{font-size:11px;color:var(--muted,#6b7a8c)}
.mon2-ct{font-size:13px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mon2-ct .sub,.mon2-h3 .sub{font-weight:400;color:var(--muted,#6b7a8c);font-size:12px}
.mon2-h3{font-size:13px;font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mon2-al{display:grid;grid-template-columns:22px 1fr auto;gap:8px 12px;align-items:start;padding:9px 0;border-top:1px solid #eef0f2;font-size:13px}
.mon2-al:first-child{border-top:0}.mon2-al.muted{color:var(--muted,#6b7a8c)}.mon2-al.rec{color:var(--muted,#6b7a8c)}
.mon2-ic{font-size:14px}.mon2-why{color:var(--muted,#6b7a8c);margin-top:2px}.mon2-do{margin-top:3px;font-size:12.5px}
.mon2-raw{font-size:11.5px;color:#9aa7b5;margin-top:2px;font-family:Consolas,monospace;word-break:break-all}
.mon2-btns{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.mon2-empty{color:var(--muted,#6b7a8c);padding:8px 0}
.mon2-tag{font-size:10.5px;border-radius:5px;padding:1px 6px;background:#fff3e0;color:#c77700;font-weight:700;white-space:nowrap}
.mon2-tag.red{background:#fdecf1;color:#e5124d}.mon2-tag.dim{background:#eef0f2;color:#6b7a8c}
.mon2-tbl{width:100%;border-collapse:collapse;font-size:13px}
.mon2-tbl th{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted,#6b7a8c);text-align:left;padding:6px 8px;border-bottom:1px solid var(--line,#d9dee5)}
.mon2-tbl td{padding:7px 8px;border-bottom:1px solid #eef0f2;vertical-align:middle}
.mon2-tbl td.n,.mon2-tbl th.n{text-align:right;font-variant-numeric:tabular-nums}
.mon2-src tr.mon2-row{cursor:pointer}.mon2-src tr.mon2-row:hover td{background:#f7f9fc}
.mon2-lbl{white-space:nowrap}.mon2-exp{color:var(--accent,#005BFF);display:inline-block;width:12px}
.mon2-ch{font-size:10px;font-weight:700;margin-left:6px;padding:1px 5px;border-radius:4px;background:#eef0f2;color:#6b7a8c}
.mon2-ch.wb{background:#efe6fb;color:#7B2CBF}.mon2-ch.ozon{background:#e9f0ff;color:#005BFF}
.mon2-err{font-size:11px;color:#e5124d;white-space:normal;max-width:360px;margin-top:2px}
.mon2-bar{display:inline-flex;gap:2px}
.mon2-bar i{display:inline-block;width:7px;height:16px;border-radius:2px;background:#bfe9d1}
.mon2-bar i.err{background:#f08aa4}.mon2-bar i.warn{background:#ffd48a}.mon2-bar i.miss{background:#c9d0d8}.mon2-bar i.rec{background:#9fc9ff}.mon2-bar i.none{background:#eef0f2}.mon2-bar i.na{background:transparent;border:1px dashed #e3e7ec;width:5px}
.mon2-st.ok{background:#e4f6ec;color:#00a650}.mon2-st.rec{background:#e8f1ff;color:#005BFF}.mon2-st.warn{background:#fff3e0;color:#c77700}.mon2-st.err{background:#fdecf1;color:#e5124d}.mon2-st.miss{background:#eef0f2;color:#55606e}.mon2-st.none{background:#f2f5f8;color:#8b95a1}
.mon2-fold td{padding:8px}.mon2-fold a{color:var(--accent,#005BFF);text-decoration:none;font-size:12px}
.mon2-foot{font-size:11.5px;color:var(--muted,#6b7a8c);margin-top:8px}
.mon2-hist td{background:#f7f9fc;padding:10px 12px}
.mon2-hh{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px}.mon2-hu{margin-left:auto;font-size:12px;color:var(--muted,#6b7a8c)}
.mon2-hsig{font-size:12px;margin-bottom:6px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.mon2-htbl{width:100%;border-collapse:collapse;font-size:12px;background:#fff;border-radius:8px}
.mon2-htbl th{font-size:10px;text-transform:uppercase;color:var(--muted,#6b7a8c);text-align:left;padding:5px 8px;border-bottom:1px solid var(--line,#d9dee5)}
.mon2-htbl td{padding:5px 8px;border-bottom:1px solid #eef0f2}.mon2-htbl td.n,.mon2-htbl th.n{text-align:right}
.mon2-errfull{font-family:Consolas,monospace;font-size:11px;word-break:break-all;max-width:520px}
.mon2-two{display:grid;grid-template-columns:1.05fr 1fr;gap:18px}
@media (max-width:1100px){.mon2-two{grid-template-columns:1fr}}
.mon2-calwrap{display:flex;gap:6px;align-items:flex-start}
.mon2-caldn{display:grid;grid-template-rows:repeat(7,13px);gap:3px;font-size:10px;color:var(--muted,#6b7a8c)}
.mon2-cal{display:grid;grid-template-rows:repeat(7,13px);grid-auto-flow:column;gap:3px}
.mon2-cal i{width:13px;height:13px;border-radius:3px;background:#bfe9d1;display:block}
.mon2-cal i.y{background:#ffd48a}.mon2-cal i.r{background:#f08aa4}.mon2-cal i.g{background:#eef0f2}
.mon2-legend{font-size:11px;color:var(--muted,#6b7a8c);margin-top:6px}
.mon2-ep{padding:7px 0;border-top:1px solid #eef0f2;display:grid;grid-template-columns:90px 1fr auto;gap:10px;font-size:13px;align-items:center}
.mon2-ep:first-child{border-top:0}
.mon2-dur{display:inline-flex;align-items:flex-end;gap:1px;height:18px}
.mon2-dur i{display:inline-block;width:4px;background:#9fc3ff;border-radius:1px}.mon2-dur i.h{background:#e5124d}
.mon2-date{width:130px;padding:3px 6px;font-size:12px}
.mon2-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:#123043;color:#fff;padding:8px 14px;border-radius:10px;font-size:13px;opacity:0;transition:.25s;z-index:9999;pointer-events:none}
.mon2-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
body.skin-oz .mon2-banner,body.skin-oz .mon2-kpi{border-color:var(--oz-line,#d9dee5)}
/* ===================== Чат 69 (21.08.2026): «Фототест»·Ozon (photo.js, sql/131) ===================== */
.pab-list{display:grid;gap:10px;margin-bottom:16px}
.pab-row{display:grid;grid-template-columns:minmax(130px,1.2fr) 120px 1fr 1fr 170px;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;cursor:pointer}
.pab-row:hover{border-color:var(--accent)}
.pab-row .pab-art{font-weight:700;font-size:15px}
.pab-sub{font-size:12px;color:var(--muted)}
.pab-chip{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:#eef2f7;color:#475569;white-space:nowrap;line-height:1.6}
.pab-chip.run{background:#e4f5ea;color:#12753d}
.pab-chip.wait{background:#fff1e2;color:#b4570a}
.pab-chip.done{background:var(--accent-tint);color:var(--accent)}
.pab-chip.err{background:#fde9e9;color:#b42525}
.pab-chip.arch{background:#e8eaee;color:#6b7280} /* Чат 72: архив */
.pab-row.arch{opacity:.62}
[data-tab="photo_ab"] .ci-bar select.pab-flt{padding:5px 26px 5px 10px;font-size:12.5px;max-width:170px;height:32px;margin-left:4px} /* Чат 72: фильтры шапки */
.pab-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:6px 0 12px}
.pab-head h3{margin:0;font-size:18px;font-weight:800;color:var(--ink)}
.pab-head .sp{flex:1}
.pab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:16px}
.pab-v{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:6px;position:relative}
.pab-v.lead{border-color:#12753d;box-shadow:0 0 0 2px rgba(18,117,61,.2)}
.pab-v.cur::after{content:"сейчас на карточке";position:absolute;top:8px;left:8px;background:var(--accent);color:#fff;font-size:10px;font-weight:700;padding:2px 7px;border-radius:999px}
.pab-v.off{opacity:.55}
.pab-v .ph{aspect-ratio:3/4;border-radius:8px;background:#f1f5f9;overflow:hidden;display:flex;align-items:center;justify-content:center}
.pab-v .ph img{width:100%;height:100%;object-fit:cover;display:block}
.pab-v .lbl{font-weight:700;font-size:13px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;color:var(--ink)}
.pab-v .r{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.pab-v .r b{color:var(--ink);font-weight:600}
.pab-v .bar{height:5px;border-radius:3px;background:#e2e8f0;overflow:hidden}
.pab-v .bar i{display:block;height:100%;background:var(--accent)}
.pab-v .acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:2px}
.pab-btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:4px 10px;font-size:12px;cursor:pointer;font-family:inherit}
.pab-btn:hover{border-color:var(--accent);color:var(--accent)}
.pab-btn.pri{background:var(--accent);border-color:var(--accent);color:#fff}
.pab-btn.pri:hover{color:#fff;filter:brightness(1.08)}
.pab-btn.danger{color:#b42525;border-color:#f3c4c4;background:#fff4f4}
.pab-btn.danger:hover{color:#b42525;border-color:#e08a8a}
/* Чат 71 (Vladi): кнопки завершения по логике цвета — жёлтая «Завершить (обложка)» = осторожно, закрываешь
   тест; красная «Завершить (фото)» = закрываешь тест И меняешь обложку, пока тест идёт — не торопись */
.pab-btn.warn{color:#8a5a00;border-color:#f0d28a;background:#fff8e6}
.pab-btn.warn:hover{color:#8a5a00;border-color:#d9a93c}
.pab-btn:disabled{opacity:.5;cursor:default}
.pab-form{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;align-items:end}
.pab-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.pab-form select,.pab-form input{font-family:inherit;font-size:13px;padding:6px 8px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:var(--ink)}
.pab-drop{border:2px dashed var(--line);border-radius:12px;padding:18px;text-align:center;color:var(--muted);font-size:13px;margin-bottom:14px;cursor:pointer;background:var(--card)}
.pab-drop.on{border-color:var(--accent);background:var(--accent-tint)}
.pab-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:14px}
.pab-kpi .k{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.pab-kpi .k b{display:block;font-size:18px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.pab-kpi .k span{font-size:11px;color:var(--muted)}
.pab-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.pab-tbl th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.pab-tbl td{padding:6px 8px;border-bottom:1px solid #f1f5f9;font-variant-numeric:tabular-nums;vertical-align:top}
.pab-tbl tr.ex td{color:#b4570a}
.pab-tbl .num{text-align:right}
.pab-two{display:grid;grid-template-columns:1.3fr 1fr;gap:14px;margin-bottom:14px}
@media(max-width:900px){.pab-two{grid-template-columns:1fr}.pab-row{grid-template-columns:1fr 1fr}}
.pab-chart{width:100%;height:auto;display:block}
.pab-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:6px}
.pab-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.pab-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:#0f1a2e;color:#fff;padding:10px 16px;border-radius:10px;font-size:13px;opacity:0;transition:.25s;z-index:99;pointer-events:none}
.pab-toast.on{opacity:1;transform:translateX(-50%)}
.pab-warn{font-size:12px;color:#b4570a}
.pab-soft{font-size:12px;color:#5b6573;background:#f1f3f6;border-radius:6px;padding:4px 8px;display:inline-block} /* Чат 72: мягкая плашка «⏳» — Ozon временно ограничил запросы, робот повторит */
.pab-help{font-size:12.5px;color:var(--muted);line-height:1.5}
.pab-scroll{overflow-x:auto}
[data-tab="photo_ab"] .ci-bar{top:0}

/* ===== Чат 70 (22.08.2026, правка Vladi): «Поставки»·Ozon — липкие шапки таблиц кластеров =====
   В «Что везти» (вид «По кластерам») шапка таблицы каждого кластера ЛИПНЕТ к верху экрана
   под липкой строкой раздела #sup_bar (её высота — в --sup-bar-h, пишет JS).
   ⚠️ Почему раньше уезжала: .ozv-cl{overflow-x:auto} и .ozs-scroll{overflow-x:auto} делали из
   блока кластера СВОЙ контейнер прокрутки — sticky-th липнет к ближайшему scroll-контейнеру,
   а не к окну (та же грабля, что «overflow:hidden td глушит sticky» в РНП). На широких
   экранах таблица (min-width 960px) помещается — overflow снимаем; на узких (<1100px)
   возвращаем горизонтальную прокрутку, шапка там не липнет. Фон у th обязателен:
   без него сквозь липкую шапку просвечивают строки. */
[data-tab="supplies"] .ozv-cl{overflow:visible}
[data-tab="supplies"] .ozv-cl .ozs-scroll{overflow:visible}
[data-tab="supplies"] .ozv-plan thead th{position:sticky;top:var(--sup-bar-h,44px);z-index:3;
  background:var(--card,#fff);box-shadow:0 1px 0 var(--oz-line,#e3e8ee)}
.skin-cab[data-tab="supplies"] .ozv-plan thead th{background:#f3f6f9}
/* Чат 71 (правка Vladi): вид и артикул «Что везти» живут в липкой шапке раздела */
[data-tab="supplies"] .ci-bar #ozv_article{width:170px;max-width:170px;min-width:0;height:33px;padding:7px 12px;font-size:12.5px}
[data-tab="supplies"] .ci-bar .seg{flex:none;padding:2px}
[data-tab="supplies"] .ci-bar .seg-btn{padding:5px 9px;font-size:12.5px}  /* как .ozs-winbar в карточке */
/* Чат 71 (правка Vladi №3): в «Что везти» ОДНА строка управления — окно продаж, норма, «Пересчитать»,
   «Свернуть все», «Кластеры и цели», Excel, «куда грузить» (~1070px). Сжимаем отступы, чтобы влезало
   при окне шире ~1400px; на более узком flex-wrap честно переносит хвост на вторую линию */
#ozv_card > .card-head .detail-ctrls{gap:6px}
#ozv_card .ozs-winbar{gap:4px}
.skin-cab #ozv_card .ozs-winbar .seg-btn{padding:5px 7px;font-size:12px}
.skin-cab #ozv_card > .card-head .illiq-btn{padding:3px 8px}
#ozv_card #ozv_norm{width:52px}
@media (max-width:1100px){
  [data-tab="supplies"] .ozv-cl{overflow-x:auto}
  [data-tab="supplies"] .ozv-cl .ozs-scroll{overflow-x:auto}
  [data-tab="supplies"] .ozv-plan thead th{position:static}
}

/* ===== Чат 72 (22.08.2026): «Остатки»·Ozon — шапка раздела в стиле «Выкупа» + верхние фильтры в стиле кабинета ===== */
/* шапка липнет ПОД строкой фильтров (её высоту JS пишет в --filters-h), иначе пряталась бы за ней */
[data-tab="stocks"] .ci-bar{top:var(--filters-h,0px);margin-top:-6px;margin-bottom:16px}
[data-tab="stocks"] .ci-bar .oz-snap{display:inline-flex;align-items:center;gap:5px;margin-left:8px;font-size:12.5px;color:var(--oz-dim)}
[data-tab="stocks"] .ci-bar .oz-snap b{color:var(--ink);font-weight:600}
[data-tab="stocks"] .ci-bar a.bb-btn{text-decoration:none;display:inline-flex;align-items:center;gap:5px}
[data-tab="stocks"] .skin-cab .card-title .buy-ico{margin-right:2px}
/* верхняя строка фильтров (Бренд/Категория/Артикул/Период/Сбросить) — в каналах WB/Ozon тем же языком,
   что и разделы кабинета: Onest, селекты r9 с тонкой рамкой, «Сбросить» — пилюля в тинте канала */
body[data-ch="ozon"] .filters,body[data-ch="wb"] .filters{font-family:"Onest",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;gap:12px;padding:10px 22px;border-bottom-color:#e7ebef}
body[data-ch="ozon"] .fld,body[data-ch="wb"] .fld{color:#8b95a1;font-size:11.5px;gap:3px}
body[data-ch="ozon"] .fld select,body[data-ch="wb"] .fld select{min-width:160px;max-width:240px;height:34px;padding:6px 10px;border-radius:9px;border-color:#e7ebef;font-size:13px;font-family:inherit;color:#001a34}
body[data-ch="ozon"] .fld select:hover,body[data-ch="wb"] .fld select:hover{border-color:#d7dee6}
body[data-ch="ozon"] .fld select:focus,body[data-ch="wb"] .fld select:focus{border-color:var(--accent)}
body[data-ch="ozon"] .f-reset,body[data-ch="wb"] .f-reset{border:0;border-radius:9px;background:var(--accent-tint);color:var(--accent);font-weight:600;font-family:inherit;padding:0 14px;height:34px;font-size:13px}
body[data-ch="ozon"] .f-reset:hover,body[data-ch="wb"] .f-reset:hover{background:var(--accent-tint-h);color:var(--accent-ink)}
[data-tab="stocks"] .ws-verdict .buy-ico{color:inherit;vertical-align:-2px} /* значок вердикта — в цвете вердикта, не канала */

/* ===== Чат 72 (правка Vladi): «Остатки»·Ozon — фильтры и календарь в шапке, карточка «Остаток всего» ===== */
/* Чат 102: #fbso_bar — те же доки на вкладке «Продажи по FBS» (оформление 1:1 с «Остатками»);
   Чат 109: #wf_bar — WB-двойник «Свой склад (FBS)» (свои селекты в том же стиле) */
#ozs_bar .ozs-dock,#fbso_bar .ozs-dock,#wf_bar .ozs-dock{display:inline-flex;align-items:center;gap:8px}
#ozs_bar .ozs-dock:empty,#fbso_bar .ozs-dock:empty,#wf_bar .ozs-dock:empty{display:none}
#ozs_bar .ozs-dock select,#fbso_bar .ozs-dock select,#wf_bar .ozs-dock select{height:33px;min-width:0;max-width:170px;padding:7px 26px 7px 12px;font-size:12.5px;font-family:inherit;color:var(--ink);background-color:var(--card);border:1px solid var(--oz-line);border-radius:9px}  /* Чат 73: background-color, НЕ shorthand — иначе стирается шеврон скина кабинета */
#ozs_bar .ozs-dock select:hover,#fbso_bar .ozs-dock select:hover,#wf_bar .ozs-dock select:hover{border-color:#d7dee6}
#ozs_bar .ozs-dock select:focus,#fbso_bar .ozs-dock select:focus,#wf_bar .ozs-dock select:focus{outline:none;border-color:var(--accent)}
#ozs_bar .ozs-dock .f-reset,#fbso_bar .ozs-dock .f-reset,#wf_bar .ozs-dock .f-reset{height:33px;padding:0 12px;font-size:12.5px;align-self:auto;border:0;border-radius:9px;background:var(--accent-tint);color:var(--accent);font-weight:600;font-family:inherit}
#ozs_bar .ozs-dock .f-reset:hover,#fbso_bar .ozs-dock .f-reset:hover,#wf_bar .ozs-dock .f-reset:hover{background:var(--accent-tint-h);color:var(--accent-ink)}
#ozs_bar .ci-period{margin-left:0}
/* «Остаток всего» — карточка в стиле плитки «Сегодня» Обзора (.ovz-tile) */
.skin-cab .oz-formula .kpi.ozs-total{flex:1.5 1 240px;padding:12px 14px}
.ozs-total .per{display:flex;align-items:baseline;gap:8px}
.ozs-total .per b{font-size:13px;font-weight:700;color:var(--ink)}
.ozs-total .per span{color:var(--oz-dim);font-size:11px}
.ozs-total .big{display:flex;align-items:center;gap:8px;font-size:22px;font-weight:800;letter-spacing:-.5px;margin:5px 0 1px;color:var(--accent-ink)}
.ozs-total .rows{margin-top:8px;border-top:1px solid rgba(0,26,52,.08);padding-top:8px;display:grid;gap:4px}
.ozs-total .rw{display:flex;justify-content:space-between;gap:8px;font-size:12.5px}
.ozs-total .rw span{color:var(--oz-dim)}
.ozs-total .rw b{font-weight:700;white-space:nowrap;color:var(--ink)}
.ozs-total .foot{margin-top:8px;font-size:10.5px;color:var(--oz-dim)}

/* ===== Чат 73: шапка раздела из двух строк (вариант D, выбор Vladi) ========
   Первая строка — название, бейдж канала и сводка справа (главная цифра · окно ·
   свежесть), НЕ липкая. Вторая — строка управления между двумя линейками:
   слева артикул и период ОДНОЙ плашкой, следом ⓘ иконкой, справа действия;
   липнет при прокрутке. Классы новые — общий .ci-bar других разделов не задет.  */
/* боковой отступ шапки = отступ контента раздела: у «Выкупа» плитки .unit-tiles
   имеют свой padding 16px, у «Соинвеста» карточки идут по краю → 0.          */
.oz-head{display:flex;align-items:baseline;gap:10px;padding:2px var(--head-pad,0px) 8px;
  flex-wrap:wrap}
/* 16px там, где под шапкой идёт ряд плиток (.unit-tiles / .kpis со своим padding),
   0 — где сразу карточки (.card идут по краю раздела).                          */
[data-tab="buyout"],[data-tab="stocks"],[data-tab="supplies"],[data-tab="actions"],
[data-tab="seo"],[data-tab="wb_stocks"],[data-tab="wb_supplies"],[data-tab="wb_seo"],
[data-tab="ozon_fbs"],[data-tab="wb_fbs"]{--head-pad:16px}   /* Чат 76: «Остатки» и «Поставки»·WB; Чат 102: «Продажи по FBS»; Чат 109: FBS·WB */
/* Чат 76: строка размера в плане поставки — отступ, чтобы читалась как вложенная в артикул */
.wbp-ind{padding-left:26px!important;color:var(--oz-dim,#8b95a1)}
input.wbp-ov{width:76px;text-align:right}
.oz-head .buy-h2{margin-left:0}
.oz-head .buy-title-ch{align-self:center}
.oz-head-sum{margin-left:auto;font-size:12.5px;color:var(--oz-dim,#8b95a1);
  font-variant-numeric:tabular-nums;white-space:nowrap;cursor:help}
.oz-head-sum b{color:var(--ink);font-weight:700}
.ci-bar.ci-strip{gap:10px;padding:9px var(--head-pad,0px);margin:0 0 8px;background:var(--bg);
  border-top:1px solid var(--oz-line);border-bottom:0;box-shadow:none}
/* артикул + период = одна плашка: общая рамка, тонкий разделитель внутри.
   overflow НЕ режем — иначе календарь периода обрезался бы плашкой.          */
/* артикул и период — две отдельные ячейки в стиле кабинета (белый фон, светлая
   рамка, скругление 9): «что смотрим» и «за какое окно» — разные вопросы.      */
.ci-igrp{display:inline-flex;align-items:stretch;gap:8px;flex:none}
/* ВАЖНО: ни appearance:none, ни background-shorthand — вкладка носит .skin-cab,
   и он сам даёт селекту шеврон и стилизованный раскрытый список (::picker(select)),
   как в «A/B тестах». Shorthand background стирал его стрелку, appearance:none —
   убивал кастомный попап и возвращал системный список.                          */
.ci-strip select.u-edit,.ci-strip .rnp-period-btn,.ci-strip input.card-select{
  height:33px;padding:7px 12px;font-size:12.5px;
  background-color:var(--card);border:1px solid var(--oz-line);border-radius:9px;color:var(--ink)}
.ci-strip select.u-edit{max-width:190px;padding-right:26px;font-weight:500;
  text-overflow:ellipsis;white-space:nowrap}
.ci-igrp .rnp-period{margin:0}
.ci-igrp .rnp-period-btn:hover,.ci-igrp select.u-edit:hover{background:#f5f8fa;border-color:#d7dee6}
/* пояснение «как считается выкуп» — иконкой, чтобы разгрузить правую часть */
/* значок «как считается выкуп» — контурный SVG в стиле заголовков раздела (.buy-ico) */
.ci-bar .note-foldbtn.ci-iico{width:33px;height:33px;margin:0;padding:0;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--oz-line);border-radius:9px;background-color:var(--card)}
.ci-bar .note-foldbtn.ci-iico .buy-ico{vertical-align:0}
.ci-bar .note-foldbtn.ci-iico:hover{background-color:#f5f8fa;border-color:#d7dee6}
.ci-bar .note-foldbtn.ci-iico[aria-expanded="true"]{background-color:var(--accent-tint);
  border-color:var(--accent-tint)}
.ci-strip .ci-pop{top:calc(100% + 6px);left:0;right:0}
/* период стоит слева, поэтому календарь раскрываем ВПРАВО от кнопки:
   общее правило .ci-bar .rnp-cal-pop прижимает его к правому краю и он
   уезжал за левую границу раздела, под меню.                            */
.ci-strip .ci-period .rnp-cal-pop{left:0;right:auto}
@media (max-width:1100px){.oz-head-sum{white-space:normal;margin-left:0;flex-basis:100%}}

/* Чат 73: те же ячейки в «Остатках» и «Поставках» — причалы фильтров, поле артикула
   и переключатель вида. Боковой отступ шапки у каждого раздела свой (--head-pad).  */
.ci-strip .ozs-dock{display:inline-flex;align-items:stretch;gap:8px}
.ci-strip input.card-select{background-color:var(--card);border:1px solid var(--oz-line);
  border-radius:9px;color:var(--ink);min-width:170px}
.ci-strip .seg{flex:none;padding:2px;border-radius:9px;height:33px;align-items:center}
[data-tab="supplies"] .ci-strip input.card-select{height:33px;padding:7px 12px}
.ci-strip .seg-btn{padding:5px 10px;font-size:12.5px}
.ci-strip .oz-head-sum{margin-left:auto}
/* одна высота у всего, что стоит в строке: фильтры, календарь, кнопки, Excel */
.ci-strip select,.ci-strip button:not(.seg-btn),.ci-strip .bb-btn,
.ci-strip input.card-select{height:33px}
.ci-strip .bb-btn{display:inline-flex;align-items:center;padding:6px 11px}
[data-tab="stocks"] .oz-head,[data-tab="supplies"] .oz-head{padding-top:6px}

/* Чат 73: «Реклама» — свой селект (.adx-select) в тех же ячейках строки */
.ci-strip select.adx-select{height:33px;padding:7px 26px 7px 12px;font-size:12.5px;font-weight:500;
  background-color:var(--card);border:1px solid var(--oz-line);border-radius:9px;color:var(--ink);
  max-width:190px}

/* Чат 73: фильтры «A/B тестов» — ячейки строки, без старого margin-left */
[data-tab="photo_ab"] .ci-strip select.pab-flt{height:33px;margin-left:0;padding:7px 26px 7px 12px;
  max-width:190px}

/* ===== Чат 73: шапка не зависит от скина раздела ==========================
   «Отзывы» — единственный канальный раздел без .skin-cab, и там шапка брала
   системный шрифт и системные списки. Шрифт, токены и вид селектов вешаем на
   сами классы шапки: любой раздел выглядит одинаково, скин ему не нужен.    */
.oz-head,.ci-bar.ci-strip{--oz-line:#e7ebef;--oz-dim:#8b95a1;
  font-family:"Onest",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}
.oz-head *,.ci-bar.ci-strip *{font-family:inherit}
.ci-strip select{border:1px solid var(--oz-line);border-radius:9px;background-color:var(--card);
  color:var(--ink)}
.ci-strip select:hover{border-color:#d7dee6}
.ci-strip select:focus{outline:none;border-color:var(--accent)}
/* тот же кастомный попап, что даёт скин кабинета (одна тонкая стрелка, свои цвета) */
@supports selector(::picker(select)){
  .ci-strip select,.ci-strip select::picker(select){appearance:base-select}
  .ci-strip select::picker(select){background:var(--card);border:1px solid var(--oz-line);
    border-radius:10px;box-shadow:0 10px 28px rgba(0,26,52,.14);padding:4px;margin-top:4px}
  .ci-strip select option{padding:6px 10px;border-radius:7px;font-size:13px;color:var(--ink)}
  .ci-strip select option:hover,.ci-strip select option:focus{background:var(--accent-tint);
    color:var(--accent-ink)}
  .ci-strip select option:checked{background:var(--accent-tint);color:var(--accent);font-weight:600}
  .ci-strip select::picker-icon{display:none}
  .ci-strip select{padding-right:26px;background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2367717d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat:no-repeat;background-position:right 9px center}
}

/* Чат 73: сводка в шапке «Обзора» — тот же вид, что в остальных разделах */
.ovz-head .oz-head-sum{margin-left:auto;font-size:12.5px;color:var(--oz-dim,#8b95a1);
  font-variant-numeric:tabular-nums;white-space:nowrap;cursor:help}
.ovz-head .oz-head-sum b{color:var(--ink);font-weight:700}
/* строка «Обзора» = первая строка «Выкупа», но липкая: свои отступы и тень остаются */
[data-tab="overview"]{--head-pad:0px}   /* по левому краю секций «Обзора» */
/* Чат 100 (Vladi): в липком положении нижняя граница (та самая «полоса») резала текст
   и кнопку вплотную — отступы шапки 11px снизу И сверху (в прилипшем положении текст
   стоял впритык к верхнему краю окна; финальные правки Vladi после живого просмотра).
   ⚔️ var(--head-pad) БЕЗ фолбэка: у [data-tab="wb_overview"] переменная не задана, и вся
   строка padding молча выбрасывалась — на WB шапка жила вообще без отступов. Фолбэк 0px */
.ovz-head.oz-head{padding:11px var(--head-pad,0px);align-items:center;box-shadow:none;
  border-bottom:1px solid var(--oz-line,#e7ebef);margin-bottom:12px}
/* поле артикула «Динамики» — как ячейки строк управления */
.ovz-chead .ovz-dyn-art{height:33px;padding:7px 12px;font-size:12.5px;min-width:170px;
  background-color:var(--card);border:1px solid var(--oz-line);border-radius:9px;color:var(--ink)}
.ovz-chead .ovz-dyn-art:hover{border-color:#d7dee6}
.ovz-chead .ovz-dyn-art:focus{outline:none;border-color:var(--accent)}
/* Чат 100 (Vladi): строка метрик графика — по правому краю; с 8 кнопками она
   переносится на свою флекс-строку и без margin-left:auto прижималась влево.
   Обе копии каналов (правило rnp-two-channels): Ozon и WB */
#ovz_metric,#wbo_metric{margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
.ovz-head .oz-pill{flex:none}

/* ===== Чат 74: верхний блок «Остатков»·Ozon — строка 1 «лента» (A), строка 2 «полоса состава» (B) ===== */
.ozs-kpis .kpi{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px}
.ozs-kpis .kpi-val{font-size:22px}
.ozs-kpis .kpi-note{font-size:11px}
.ozs-spark{display:inline-flex;align-items:flex-end;gap:2px;height:22px;flex:0 0 auto}
.ozs-spark i{display:block;width:5px;border-radius:2px 2px 0 0;background:var(--accent-line,#c7dcff)}
.ozs-spark i:last-child{background:var(--accent,#005bff)}
.ozs-pill{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:2px 9px;flex:0 0 auto}
.ozs-pill.good{background:#e7f7ee;color:#00a650}
.ozs-pill.warn{background:#fff4e0;color:#c77700}
.ozs-pill.bad{background:#fdecf1;color:#e5124d}
.ozs-row2{display:grid;grid-template-columns:300px minmax(0,1fr) 300px;gap:12px;margin-bottom:18px}
.ozs-row2 .kpi{min-width:0;padding:14px 16px}
/* правка Vladi 23.08: карточка «Остаток всего» подсвечена ТОЧНО как плитка «Сегодня» в «Как дела» Обзора (.ovz-tile.today) */
.ozs-row2 .kpi-total{background:#fff;border:1px solid #bcd4ff;box-shadow:0 0 0 2px rgba(0,91,255,.08)}
.ozs-row2 .ozs-total .foot{text-align:left}
.ozs-row2 .kpi-total .kpi-val{color:var(--accent-ink,#0047cc)}
.ozs-mix{display:flex;flex-direction:column;gap:10px}
.ozs-stack{display:flex;height:26px;border-radius:8px;overflow:hidden;background:#e4ebf5}
.ozs-stack i{display:block;height:100%}
.ozs-stack .c1,.ozs-legend .c1{background:var(--accent,#005bff)}
.ozs-stack .c2,.ozs-legend .c2{background:#7fb0ff}
.ozs-stack .c3,.ozs-legend .c3{background:#c9a84a}
.ozs-stack .c4,.ozs-legend .c4{background:var(--accent-line,#c7dcff)}
.ozs-stack .c5,.ozs-legend .c5{background:#00a650}
.ozs-legend{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.ozs-legend .lg{display:flex;gap:8px;align-items:flex-start;min-width:0}
.ozs-legend s{display:block;width:10px;height:10px;border-radius:3px;margin-top:5px;text-decoration:none;flex:0 0 10px}
.ozs-legend .num{font-size:18px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.ozs-legend .lbl{font-size:11.5px;color:var(--muted,#667085)}
.ozs-mix-foot{margin-top:auto;font-size:11.5px;color:var(--muted,#667085)}
.ozs-way h4{margin:0 0 8px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted,#667085)}
.ozs-way .way{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;font-size:12.5px;margin-bottom:7px}
.ozs-way .way b{font-weight:700;font-size:14px;font-variant-numeric:tabular-nums}
.ozs-way .bar{grid-column:1/3;height:6px;border-radius:3px;background:#e4ebf5;overflow:hidden}
.ozs-way .bar i{display:block;height:100%;border-radius:3px;background:#7fb0ff;width:0}
.ozs-way .bar i.g{background:#00a650}
.ozs-way .bar i.y{background:#c9a84a}
.ozs-way .sub2{grid-column:1/3;font-size:11px;color:var(--muted,#667085)}
.ozs-way .sub2i{font-size:11px;color:var(--muted,#667085);font-weight:400}
.ozs-way .way.dim,.ozs-way .way.dim b{color:var(--muted,#667085);font-weight:500}
@media (max-width:1180px){.ozs-row2{grid-template-columns:1fr 1fr}.ozs-way{grid-column:1/3}}

/* Чат 74 (выбор Vladi — «Слагаемые»): плитка «Где лежит остаток» = карточки с плюсами + тонкая полоса + чипы */
.ozs-sum{display:flex;gap:8px;align-items:stretch}
.ozs-sum .s{flex:1 1 0;min-width:0;border-radius:10px;padding:10px 12px;border:1px solid var(--line,#dfe5ee);border-top:4px solid var(--accent,#005bff);background:var(--accent-tint2,#f5f8ff);display:flex;flex-direction:column;gap:2px}
.ozs-sum .s .n{font-size:22px;font-weight:800;letter-spacing:-.3px;line-height:1.1;font-variant-numeric:tabular-nums}
.ozs-sum .s .l{font-size:11.5px;color:var(--muted,#667085);line-height:1.25}
.ozs-sum .s .p{font-size:12px;font-weight:600}
.ozs-sum .op{display:grid;place-items:center;color:#98a2b3;font-size:18px;flex:0 0 14px}
.ozs-sum .s.c1{border-top-color:var(--accent,#005bff)}
.ozs-sum .s.c5{border-top-color:#00a650}
.ozs-sum .s.c2{border-top-color:#7fb0ff}
.ozs-sum .s.c3{border-top-color:#c9a84a}
.ozs-sum .s.c1 .p{color:var(--accent-ink,#0047cc)}
.ozs-sum .s.c5 .p{color:#00a650}
.ozs-sum .s.c2 .p{color:#3d7de0}
.ozs-sum .s.c3 .p{color:#9a7b1f}
.ozs-stack-thin{height:8px;margin-top:2px}
.ozs-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}
.ozs-chip{display:inline-flex;align-items:center;gap:5px;border:1px dashed var(--line,#dfe5ee);border-radius:999px;padding:3px 10px;font-size:11.5px;color:var(--muted,#667085);background:var(--card,#fff)}
.ozs-chip b{color:var(--ink,#101828)}

/* ===== «Выкуп»·WB (Чат 78): полоса судьбы заказов в плитке «За окно».
   Пять классов — всё остальное раздел берёт из общих .ci-* / .pill / .seo-tbl.  */
.wbb-brow{display:flex;align-items:center;gap:8px;margin:4px 0;font-size:12px}
.wbb-bl{flex:0 0 74px;color:var(--oz-dim,#8b95a1)}
.wbb-bar{flex:1 1 auto;height:10px;border-radius:6px;background:var(--oz-sec,#f0f3f7);
  overflow:hidden;display:block}
.wbb-bar i{display:block;height:100%;border-radius:6px}
.wbb-bar i.ok{background:var(--oz-g,#00a650)}
.wbb-bar i.warn{background:var(--oz-a,#c77700)}
.wbb-bar i.bad{background:#e5124d}
.wbb-bar i.none{background:var(--oz-dim,#8b95a1);opacity:.45}
.wbb-bn{flex:0 0 96px;text-align:right;font-variant-numeric:tabular-nums;
  color:var(--ink);font-weight:600}
/* неполный день когорт: строка приглушена, но читаема — её видно, а не спрятано */
.wbb-part td{opacity:.62}


/* ===== Чат 87: раздел «Пользователи» — люди слева, доступ справа ===== */
.usr-wrap{display:grid;grid-template-columns:250px minmax(0,1fr);gap:14px;align-items:start}
.usr-side{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px}
.usr-side-h{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;
  margin:2px 4px 8px}
.usr-person{display:block;width:100%;text-align:left;background:transparent;border:1px solid transparent;
  border-radius:9px;padding:8px 10px;cursor:pointer;margin-bottom:4px}
.usr-person:hover{background:var(--accent-tint)}
.usr-person.on{background:var(--accent-tint);border-color:var(--accent-line)}
.usr-person.off .usr-person-n{opacity:.6}
.usr-person.new{color:var(--accent-ink);font-size:13px;cursor:default}
.usr-person-n{display:block;font-size:13.5px;color:var(--ink);font-weight:600}
.usr-person-s{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.usr-you{font-size:10.5px;color:var(--muted);font-weight:400}
.usr-badge{font-size:10px;border-radius:999px;padding:1px 7px;background:var(--accent-tint);
  color:var(--accent-ink)}
.usr-badge.off{background:#fdece5;color:#c0392b}
.usr-add{width:100%;margin-top:6px;border:1px dashed var(--line);background:transparent;
  border-radius:9px;padding:8px;font-size:12.5px;color:var(--muted);cursor:pointer}
.usr-add:hover{border-color:var(--accent);color:var(--accent-ink)}
.usr-main{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.usr-card-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding-bottom:12px;
  border-bottom:1px solid var(--line)}
.usr-card-login{font-size:16px;color:var(--ink)}
.usr-card-h .u-edit{height:32px;font-size:13px}
#usr_f_name{width:150px}
#usr_f_pass{width:230px}
.usr-in-login{width:160px}
.usr-sp{flex:1}
.usr-status{font-size:12px;color:var(--muted)}
.usr-status.bad{color:#c0392b}
.usr-admin-note{margin-top:12px;font-size:12.5px;color:var(--muted);line-height:1.45}
.usr-presets{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:12px 0 6px}
.usr-presets-l{font-size:12px;color:var(--muted)}
.usr-preset{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:4px 12px;
  font-size:12px;color:var(--ink);cursor:pointer}
.usr-preset:hover{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-tint)}
.usr-legend{margin-left:auto;font-size:11.5px;color:var(--muted)}
.usr-legend i{font-style:normal;color:var(--ink)}
.usr-sum{font-size:12.5px;color:var(--muted);margin-bottom:10px}
.usr-sum b{color:var(--ink)}
.usr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:12px}
.usr-group{border:1px solid var(--line);border-radius:10px;padding:9px 11px}
.usr-group-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.usr-group-h b{font-size:13px;color:var(--ink)}
.usr-group-acts{display:flex;gap:5px}
.usr-mass{border:0;background:transparent;color:var(--muted);font-size:11px;cursor:pointer;padding:1px 3px}
.usr-mass:hover{color:var(--accent-ink);text-decoration:underline}
.usr-col-h{margin-left:auto;display:flex;gap:4px}
.usr-col-h i{font-style:normal;font-size:10px;color:var(--muted);width:78px;text-align:center}
.usr-row{display:flex;align-items:center;gap:8px;padding:3px 0;border-top:1px solid var(--line)}
.usr-row-l{flex:1;font-size:12.5px;color:var(--ink);min-width:0}
.usr-note{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 6px}
.usr-hint{display:block;font-size:10.5px;line-height:1.35;color:var(--muted)}   /* Чат 203: подсказка второй строкой под названием — какие этапы входят в зону «Возвратов» */
.usr-row-cells{display:flex;gap:4px}
.usr-cell{display:inline-flex;border:1px solid var(--line);border-radius:7px;overflow:hidden;width:78px}
/* Чат 87 (правка Vladi): общий раздел (нет разреза на каналы) занимает обе колонки —
   одиночная узкая ячейка вставала под «Ozon» и читалась как Ozon-раздел. 160px = две
   колонки по 78 плюс зазор 4. Раздел одного канала пишется как wb/oz, у второго — прочерк. */
.usr-row-cells.one .usr-cell{width:160px}
.usr-cell.empty{border:0;width:78px;color:var(--muted);font-size:11px;justify-content:center;align-items:center}   /* Чат 87: прочерк по центру колонки */
.usr-lv{flex:1;border:0;background:transparent;font-size:11.5px;line-height:20px;color:var(--muted);
  cursor:pointer;padding:0}
.usr-lv:hover{background:var(--accent-tint)}
.usr-lv.on{color:#fff}
.usr-lv.on.lv0{background:#9aa3ad}
.usr-lv.on.lv1{background:var(--accent)}
.usr-lv.on.lv2{background:#1a7f37}
@media (max-width:1100px){
  .usr-wrap{grid-template-columns:1fr}
}

/* ===== База знаний: каталог + читалка (Чат 88, концепция D) ================
   Было: 30 статей одной лентой во всю ширину, всё развёрнуто. Стало: шапка-
   фильтр (поиск и каналы / темы со счётчиками), слева каталог по структуре
   меню, справа одна открытая статья. Геометрия колонок — та же, что у
   «Пользователей» (Чат 87): 250px + остальное, обе колонки от верха.       */
[data-tab="kb"]{--head-pad:0px}
/* nowrap обязателен: .ci-bar носит flex-wrap:wrap, и в колоночной шапке он
   растягивал строки по высоте (поиск занимал 74px вместо 33). */
.kb-strip{flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:8px}
.kb-strip-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kb-strip-th{padding-top:8px;border-top:1px dashed var(--oz-line,#e7ebef)}
input.kb-q{flex:0 1 320px;min-width:200px;max-width:320px}
.kb-qx{height:33px;width:33px;flex:none;border:1px solid var(--oz-line,#e7ebef);
  background:var(--card);color:var(--oz-dim,#8b95a1);border-radius:9px;font-size:17px;
  line-height:1;cursor:pointer;padding:0}
.kb-qx:hover{color:var(--ink);border-color:#d7dee6}
.kb-chips{display:flex;flex-wrap:wrap;gap:6px}
.kb-chip{cursor:pointer}

.kb-wrap{display:grid;grid-template-columns:var(--kb-sidew,250px) minmax(0,1fr);gap:14px;
  align-items:start}
/* каталог липкий: статьи длинные, и без этого, прокрутив «Данные WB», уже не
   перейдёшь к соседней статье — надо возвращаться наверх. Отступ сверху берётся
   из --kb-stick: его ставит kbRender по РЕАЛЬНОЙ высоте липкой строки фильтров
   (она разной высоты — чипы переносятся на узком окне), а 116px — запасной. */
.kb-side{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px;
  position:sticky;top:var(--kb-stick,116px);max-height:calc(100vh - var(--kb-stick,116px) - 20px);
  overflow:auto}
.kb-side-h{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;
  margin:2px 0 8px;padding:0 6px}
.kb-grp{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;
  margin:12px 0 3px;padding:0 6px}
.kb-grp:first-child{margin-top:2px}
.kb-item{display:flex;align-items:center;gap:6px;width:100%;text-align:left;background:transparent;
  border:1px solid transparent;border-radius:9px;padding:6px 8px;cursor:pointer;
  font:inherit;font-size:13px;color:var(--ink)}
.kb-item:hover{background:var(--accent-tint)}
.kb-item.on{background:var(--accent-tint);border-color:var(--accent-line);
  color:var(--accent-ink);font-weight:600}
.kb-item-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* цвета каналов ФИКСИРОВАННЫЕ: раздел общий для обоих каналов, а body[data-ch]
   здесь чужой — на токенах акцента бейдж «Ozon» стал бы лавандовым вместе со
   всей вкладкой, и оба бейджа были бы одного цвета.                          */
.kb-ch{flex:none;font-size:9.5px;font-weight:700;letter-spacing:.04em;border-radius:999px;
  padding:1px 6px}
.kb-ch.wb{background:#f3e8ff;color:#5b21b6}
.kb-ch.oz{background:#eaf1ff;color:#0047cc}
.kb-side-none{font-size:12.5px;color:var(--muted);padding:8px 6px}

/* читалка: открыта ровно одна статья */
.kb-main .kb-article{display:none}
.kb-main .kb-article.on{display:block}
/* узкое окно: сначала ужимаем колонку каталога (статье остаётся больше места),
   и только потом складываем в одну. Сложенный каталог — со своей прокруткой:
   иначе до текста надо прокрутить все 30 пунктов (замер на 1000px: 1145px полотна). */
@media (max-width:1300px){ .kb-wrap{--kb-sidew:210px} }
@media (max-width:1100px){
  .kb-wrap{grid-template-columns:1fr}
  .kb-side{position:static;max-height:230px}
}

/* ===== Журнал решений: два вида раздела (Чат 88) ==========================
   Было: плоская лента всех заметок РНП, только чтение, без фильтров. Стало:
   «Журнал» — лента ДЕЙСТВИЙ (одинаковые заметки одного дня склеены в строку),
   «Анализ решений» — эффект «было → стало» + запись действия на несколько
   артикулов. Шапка и чипы — общие классы (.oz-head, .ci-strip, .rnp-chip). */
[data-tab="decisions"]{--head-pad:0px}
.dec-strip{flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:8px}
.dec-strip-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dec-strip-2{padding-top:8px;border-top:1px dashed var(--oz-line,#e7ebef)}
input.dec-q{flex:0 1 260px;min-width:170px;max-width:260px}
.dec-strip .oz-pill{margin-left:auto}
.dec-lbl{font-size:11.5px;color:var(--oz-dim,#8b95a1)}
.dec-lbl-r{margin-left:auto}
.dec-chip{cursor:pointer}

.dec-card{padding:6px 14px 10px}
.dec-h{font-size:12.5px;font-weight:700;color:var(--ink);margin:8px 0 6px}
.dec-ev{border-bottom:1px solid #eef0f2}
.dec-ev:last-child{border-bottom:none}
.dec-ev-h{display:flex;align-items:center;gap:9px;padding:9px 4px;cursor:pointer;font-size:13px}
.dec-ev-h:hover{background:var(--accent-tint2)}
.dec-ev.on .dec-ev-h{font-weight:600}
.dec-d{flex:none;width:42px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.dec-t{flex:none;font-size:10.5px;color:var(--muted);background:var(--bg);border-radius:6px;
  padding:2px 7px;white-space:nowrap}
.dec-b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
.dec-c{flex:none;color:var(--muted);font-size:12px;white-space:nowrap}
.dec-arr{color:var(--accent);font-size:10px}
.dec-due{flex:none;font-size:10.5px;font-weight:700;background:#fff4e5;color:#b25e00;
  border-radius:6px;padding:2px 7px;white-space:nowrap}
.dec-ev-b{padding:2px 4px 12px 51px}
.dec-art{display:inline-block;font-size:11.5px;color:var(--ink);background:var(--bg);
  border:1px solid var(--line);border-radius:7px;padding:2px 7px;margin:0 5px 5px 0}
.dec-meta{font-size:11.5px;color:var(--muted);margin-top:4px}

/* «было → стало»: числа читаются столбиком, поэтому таблица, а не карточки */
.dec-eff{margin-top:8px}
.dec-tbl{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}
.dec-tbl th{text-align:right;font-weight:400;color:var(--muted);font-size:11.5px;
  padding:4px 6px;border-bottom:1px solid var(--line);white-space:nowrap}
.dec-tbl th:first-child,.dec-tbl td:first-child{text-align:left}
.dec-tbl td{text-align:right;padding:4px 6px;border-bottom:1px solid #f1f4f7;white-space:nowrap}
.dec-tbl tr:last-child td{border-bottom:none}
.dec-tbl .dec-tot td{font-weight:700;border-top:1px solid var(--line)}
.dec-was{color:var(--muted)}
.dec-up{color:#1a7f37;font-weight:600}
.dec-down{color:#c0392b;font-weight:600}
.dec-note{font-size:11.5px;color:var(--muted);margin-top:7px;line-height:1.5}
.dec-early{font-size:12.5px;color:var(--muted);margin-top:8px}
.dec-due-card{border-color:#f0d3a8;background:#fffdf8}
.dec-done{margin-top:10px}

/* форма записи действия */
.dec-hidden{display:none}
.dec-lbl2{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;
  margin:10px 0 4px}
.dec-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dec-row-end{margin-top:12px}
textarea.dec-body{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:9px;
  font-family:inherit;font-size:13px;color:var(--ink);background:var(--card);resize:vertical}
textarea.dec-body:focus{outline:none;border-color:var(--accent)}
input.dec-date,select.dec-fu,input.dec-flt{height:33px;padding:6px 10px;font-size:12.5px;
  background-color:var(--card);border:1px solid var(--line);border-radius:9px;color:var(--ink)}
input.dec-flt{min-width:150px;max-width:200px}
.dec-arts{max-height:150px;overflow:auto;border:1px solid var(--line);border-radius:9px;
  padding:8px;display:flex;flex-wrap:wrap;gap:5px;background:var(--bg)}
.dec-arts .rnp-chip{background:var(--card)}
@media (max-width:900px){
  .dec-ev-b{padding-left:4px}
  .dec-strip .oz-pill{margin-left:0}
}
/* Чат 91: карточные подсказки разделов (UI.cardTips) — стиль тултипа графиков */
.ui-tip{position:fixed;background:var(--card,#fff);border:1px solid var(--oz-line,#e7ebef);
  border-radius:9px;padding:7px 11px;font-size:12px;line-height:1.55;color:var(--ink);
  box-shadow:0 10px 22px -12px rgba(15,23,42,.45);pointer-events:none;z-index:1200;
  max-width:400px;white-space:normal}
.ui-tip b{font-variant-numeric:tabular-nums}
.ui-tip .ui-tip-p{margin-top:5px}
.ui-tip .ui-tip-p:first-child{margin-top:0}
.ci-i svg{vertical-align:-2.5px}

/* Чат 91 (Vladi, вариант 3): второстепенные кнопки шапок «Выкуп»/«Соинвест» Ozon —
   нейтральные серые со значками, при наведении синеют; главное действие («Обновить
   данные») остаётся голубой пилюлей .oz-pill */
.sec-btn{flex:none;display:inline-flex;align-items:center;gap:6px;border:1px solid #d7dee6;
  border-radius:9px;background:var(--card,#fff);color:#47515c;font-size:12px;font-weight:600;
  padding:5px 11px;cursor:pointer;white-space:nowrap}
.sec-btn:hover{border-color:#9dbcf5;background:#f5f8ff;color:var(--accent)}
.sec-btn .buy-ico{color:inherit}   /* значок в тон текста: серый, при наведении синеет (превью Vladi) */

/* Чат 91 (Vladi, концепция 3): главное действие шапки — сплошная синяя, ховер темнее */
.oz-pill.oz-pill-pri{background:var(--accent);color:#fff}
.oz-pill.oz-pill-pri:hover{background:var(--accent-ink);color:#fff}
.oz-pill.oz-pill-pri .buy-ico{color:#fff}   /* значок белый — не сливается с заливкой */
a.sec-btn{text-decoration:none}   /* ссылки-кнопки (Excel в «Остатках») — без подчёркивания */

/* Чат 91 (Vladi): Unit·Ozon — «Сохранить» зелёная, «Обновить с Ozon» синяя,
   «Excel» в общем сером стиле с высотой ряда юнитки */
[data-tab="ozon_unit"] .excel-btn.ozu-savebtn:not(:disabled){background:#1d9e75;border-color:#1d9e75;color:#fff}
[data-tab="ozon_unit"] .excel-btn.ozu-savebtn:not(:disabled):hover{background:#0f6e56;border-color:#0f6e56;color:#fff}
[data-tab="ozon_unit"] .excel-btn.ozu-pri:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}
[data-tab="ozon_unit"] .excel-btn.ozu-pri:not(:disabled):hover{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff}
[data-tab="ozon_unit"] .sec-btn{padding:7px 13px;font-size:12.5px}

/* Чат 92 (Vladi): «СПП»·ВБ — заголовки и цифры теплокарты по центру (артикул остаётся слева) */
#tbl_wbc_heat th,#tbl_wbc_heat td{text-align:center}
#tbl_wbc_heat th:first-child,#tbl_wbc_heat td.seo-art{text-align:left}
#tbl_wbc_heat td.ci-avg{text-align:center}

/* Чат 92 (Vladi): ячейки теплокарты «СПП»·ВБ кликабельны — курсор-рука и обводка при
   наведении, как у «Соинвеста»·Ozon (#tbl_ci_heat), обводка в фиолете канала */
#tbl_wbc_heat tr.ci-hrow{cursor:pointer}
#tbl_wbc_heat tbody td{cursor:pointer}
#tbl_wbc_heat tbody td:hover{outline:2px solid #7c3aed55;outline-offset:-2px}

/* Чат 92 (выбор Vladi, вариант C превью): «сбросить» в «Ленте заказов»·СПП·ВБ — сразу
   фиолетовая с контуром на светлой подложке, при наведении темнеет БЕЗ полной заливки;
   крестик и текст центрированы друг по другу (align-items:center) */
.wbc-reset{display:inline-flex;align-items:center;gap:5px;border:1px solid #d9c7f7;border-radius:8px;
  background:#f5f0ff;color:#7c3aed;font-size:12px;font-weight:600;padding:5px 11px;cursor:pointer;
  font-family:inherit;transition:all .13s}
.wbc-reset:hover{background:#ece2fc;border-color:#5b21b6;color:#5b21b6}
.wbc-reset svg{flex:none}

/* Чат 92 (Vladi, вторая итерация): селекты «Ленты заказов»·СПП·ВБ — ОДИН В ОДИН как
   «Весь магазин» в липкой строке (.ci-strip select.u-edit): height 33, паддинг с местом
   под шеврон skin-cab (26px справа — раньше текст наезжал на стрелку), радиус 9.
   ⛔ только background-color, без shorthand и appearance — иначе слетает шеврон скина. */
#wbc_ord_body .buy-sb-add{align-items:center}
#wbc_ord_body .buy-sb-add select.u-edit{height:33px;max-width:190px;padding:7px 26px 7px 12px;
  font-size:12.5px;font-weight:500;background-color:var(--card);border:1px solid var(--oz-line);
  border-radius:9px;color:var(--ink);text-overflow:ellipsis;white-space:nowrap}
#wbc_ord_body .buy-sb-add select.u-edit:hover{background-color:#f5f8fa;border-color:#d7dee6}

/* Чат 92 (Vladi): «показать ещё» — по центру подвала карточки (сверху 16 = паддинг снизу) */
#wbc_ord_body > .buy-sb-add:last-child{margin:16px 0 0}

/* Чат 92 (Vladi): рука на всём кликабельном в разделе — цифра дня (открывает график)
   и артикулы «Состава» (раскрывают размеры; кликабельна первая ячейка строки) */
#wbc_hero_l,#wbb_hero_l{cursor:pointer}
#tbl_wbc_arts tbody tr.ci-hrow td.seo-art{cursor:pointer}

/* Чат 92 (Vladi): у второстепенных кнопок (.sec-btn, Чат 91) ховер захардкожен голубым
   Ozon (#9dbcf5/#f5f8ff) — в режиме ВБ рамка и фон переводятся в фиолет канала */
body[data-ch="wb"] .sec-btn:hover{border-color:#c8b1f2;background:#faf7ff;color:var(--accent)}

/* ===== Чат 93 (заказ Vladi): «Выкуп»·WB — когорты в виде Ozon-двойника ===== */
/* «Когорты по артикулам»: «выкуплено» и шапка — в цвете канала; токены --accent-*
   приходят из body[data-ch], поэтому правила канал-нейтральны (фолбэки — фиолет WB) */
#tbl_wbb_arts{--buy-good:var(--accent,#7c3aed)}   /* «выкуплено» здесь в цвете канала, в дневном блоке — зелёное */
#tbl_wbb_arts thead th{background:var(--accent-tint,#f3e8ff);border-bottom:1px solid var(--accent-line,#ddd0f7)}
#tbl_wbb_arts thead th:first-child{border-radius:8px 0 0 0}
#tbl_wbb_arts thead th:last-child{border-radius:0 8px 0 0}
#tbl_wbb_arts .oz-artrow .seo-art{color:var(--accent-ink,#5b21b6);font-weight:700}
#tbl_wbb_arts .oz-artrow .oz-caret{color:var(--accent,#7c3aed)}
#tbl_wbb_arts .oz-artrow:hover td{background:var(--accent-tint2,#faf5ff)}

/* =====================================================================
   Чат 93 (заказ Vladi): скин «кабинет» для Unit ВБ v2 (вкладка unit) — копия
   блока Unit·Ozon (Чат 67) с замком [data-tab="unit"], #tbl_uv и #uv_*.
   Тогл «Стиль WB / Классика» (localStorage uv_skin); цвета приходят токенами
   канала из body[data-ch] — фиолет ВБ сам. Правки языка скина — В ОБА блока.
   ===================================================================== */
/* =====================================================================
   Чат 67 (21.08.2026): скин «кабинет» для Unit-экономики·Ozon — С ПЕРЕКЛЮЧАТЕЛЕМ
   (как в РНП: «Стиль Ozon / Классика», память в localStorage ozu_skin, дефолт — скин).
   Класс .skin-cab вешается на <section data-tab="ozon_unit"> (как у «Остатков»/SEO),
   поэтому общий язык (Onest, токены, карточки r16, поля r9, сегменты, шапки таблиц)
   приезжает из блока с59; здесь — только то, что у юнитки своё. Разметка и JS расчёта
   НЕ тронуты: «Классика» = прежний вид 1-в-1. Все селекторы под замком
   [data-tab="unit"].skin-cab; правила с #tbl_uv — чтобы перебить id-правила выше.
   ⚠️ грабля скина: ховеры перекрашенных контролов — заново. */

/* дуал-иконки (механика rnpIco): эмодзи — в «Классике», SVG — в скине */
[data-tab="unit"].skin-cab .ozu-ie{display:none}
[data-tab="unit"].skin-cab .ozu-is{display:inline-block}
/* заголовок: «Классика» — прежняя капс-строка; скин — «Unit-экономика» + бейдж канала */
[data-tab="unit"].skin-cab .ozu-t-classic{display:none}
[data-tab="unit"].skin-cab .ozu-t-cab{display:inline-flex;align-items:center}

/* --- 1. Шапка = липкая строка управления (механика .ci-bar «Выкупа»/«Соинвеста»):
       заголовок + бейдж слева, фильтры + Excel + «Обновить с Ozon» + тогл справа;
       второй ряд — пилюли действий. Контейнеры «схлопнуты» (display:contents), чтобы
       кнопки можно было пересобрать порядком (order) без правки DOM. --- */
[data-tab="unit"].skin-cab .loss-head{position:sticky;top:0;z-index:30;display:flex;flex-wrap:wrap;
  gap:8px;align-items:center;background:var(--bg);padding:8px 2px;margin:-6px 0 14px;
  box-shadow:0 8px 14px -12px rgba(15,23,42,.45)}
[data-tab="unit"].skin-cab .loss-head>div:first-child,
[data-tab="unit"].skin-cab .unit-controls{display:contents}
[data-tab="unit"].skin-cab .risk-title{display:flex;align-items:center;gap:10px;order:0;
  margin:0 auto 0 14px;font-size:22px;font-weight:800;letter-spacing:0;color:var(--ink);text-transform:none}
[data-tab="unit"].skin-cab .risk-title .buy-title-ch{margin-left:0}
/* ряд 1 */
[data-tab="unit"].skin-cab #uv_subject{order:2}
[data-tab="unit"].skin-cab #uv_status{order:3}
[data-tab="unit"].skin-cab #uv_art_input{order:4}
[data-tab="unit"].skin-cab #uv_export{order:5}
[data-tab="unit"].skin-cab #uv_refresh{order:6}
[data-tab="unit"].skin-cab .ozu-skin-seg{order:7;margin-left:6px}
/* ряд 2 */
[data-tab="unit"].skin-cab .uc-break{order:10}
[data-tab="unit"].skin-cab .ozu-srcwrap{order:11}
[data-tab="unit"].skin-cab #uv_2808{order:12}
[data-tab="unit"].skin-cab #uv_expand_all{order:13}
[data-tab="unit"].skin-cab #uv_add{order:14}
[data-tab="unit"].skin-cab #uv_selall{order:15}
[data-tab="unit"].skin-cab #uv_del{order:16}
[data-tab="unit"].skin-cab #uv_reset_all{order:17}
[data-tab="unit"].skin-cab #uv_save{order:18;margin-left:4px}
[data-tab="unit"].skin-cab #uv_dirty,[data-tab="unit"].skin-cab #uv_edits{order:19;color:var(--oz-dim)}
/* поля шапки */
[data-tab="unit"].skin-cab .loss-head select,
[data-tab="unit"].skin-cab .loss-head input.unit-art-input{
  padding:6px 10px;border:1px solid var(--oz-line);border-radius:9px;background:var(--card);
  font-size:13px;color:var(--ink)}
[data-tab="unit"].skin-cab .loss-head select:hover,
[data-tab="unit"].skin-cab .loss-head input.unit-art-input:hover{border-color:#d7dee6}
[data-tab="unit"].skin-cab .loss-head input.unit-art-input:focus{outline:none;border-color:var(--accent)}

/* --- 2. Кнопки: вторичные — белые с тонкой рамкой; источники БЗ — пилюли в тинте канала;
       «Сохранить» — единственная сплошная (главное действие кабинета); «Удалить» — красный
       тинт, когда есть что удалять; «Тарифы 28.08» — янтарь (меняет расчёт глобально);
       «Обновить с Ozon» — красная обводка, как «Обновить данные» у «Выкупа»/«Соинвеста». --- */
[data-tab="unit"].skin-cab .excel-btn{border:1px solid var(--oz-line);background:var(--card);color:var(--ink);
  border-radius:9px;padding:6px 12px;font-size:12.5px;font-weight:600;line-height:1.4}
[data-tab="unit"].skin-cab .excel-btn:hover{background:#f5f8fa;border-color:#d7dee6;color:var(--ink)}
[data-tab="unit"].skin-cab .excel-btn:disabled{opacity:.45;cursor:default}
[data-tab="unit"].skin-cab .excel-btn:disabled:hover{background:var(--card);border-color:var(--oz-line)}
[data-tab="unit"].skin-cab .excel-btn.ozu-src{background:var(--accent-tint);border-color:transparent;color:var(--accent)}
[data-tab="unit"].skin-cab .excel-btn.ozu-src:hover{background:var(--accent-tint-h);color:var(--accent-ink);border-color:transparent}
[data-tab="unit"].skin-cab .excel-btn.ozu-2808{background:var(--oz-at);border-color:transparent;color:var(--oz-a)}
[data-tab="unit"].skin-cab .excel-btn.ozu-2808:hover{background:#ffe8c2;border-color:transparent}
[data-tab="unit"].skin-cab .excel-btn.ozu-2808.active{background:var(--oz-a);color:#fff}
[data-tab="unit"].skin-cab .excel-btn.ozu-2808.active:hover{background:#a86400}
[data-tab="unit"].skin-cab .excel-btn.ozu-savebtn{background:var(--accent);border-color:var(--accent);color:#fff}
[data-tab="unit"].skin-cab .excel-btn.ozu-savebtn:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff}
[data-tab="unit"].skin-cab .excel-btn.ozu-actdel:not(:disabled){background:var(--oz-rt);border-color:transparent;color:var(--oz-r)}
[data-tab="unit"].skin-cab .excel-btn.ozu-actdel:not(:disabled):hover{background:#fbd9e3;border-color:transparent}
[data-tab="unit"].skin-cab #uv_reset_all:not(:disabled){background:var(--oz-at);border-color:transparent;color:var(--oz-a)}
[data-tab="unit"].skin-cab #uv_reset_all:not(:disabled):hover{background:#ffe8c2;border-color:transparent}
[data-tab="unit"].skin-cab #uv_refresh{background:var(--accent);border-color:var(--accent);color:#fff;border-radius:9px}   /* Чат 91 (Vladi): синяя, как «Обновить данные» */
[data-tab="unit"].skin-cab #uv_refresh:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff}
[data-tab="unit"].skin-cab .ozu-srcmenu{border:1px solid var(--oz-line);border-radius:12px;
  box-shadow:0 10px 28px rgba(0,26,52,.14);padding:4px}
[data-tab="unit"].skin-cab .ozu-srcitem{border-radius:8px;border-bottom:0}
[data-tab="unit"].skin-cab .ozu-srcitem:hover{background:var(--accent-tint)}

/* --- 3. Плитки (серый контейнер + белые карточки — из блока SEO) + триада кабинета
       вместо прежних зелёного/красного. Плитка-фильтр «прибыльных»: кольцо канала. --- */
[data-tab="unit"].skin-cab .ut-val[style*="#0f9d6b"]{color:var(--oz-g)!important}
[data-tab="unit"].skin-cab .ut-val[style*="#d64545"]{color:var(--oz-r)!important}
[data-tab="unit"].skin-cab .u-tile-clk:hover{box-shadow:0 4px 12px rgba(0,26,52,.10);transform:translateY(-1px)}
[data-tab="unit"].skin-cab .u-tile-clk.active{border:0;box-shadow:inset 0 0 0 1.5px var(--accent)}
[data-tab="unit"].skin-cab .u-tile-clk.active .ut-val{color:var(--accent)!important}

/* --- 4. Карточки допущений / массовой правки / методики / калькулятора скидки --- */
[data-tab="unit"].skin-cab .unit-assume-card{padding:12px 16px}
[data-tab="unit"].skin-cab .ua-head{font-size:15px;font-weight:600;color:var(--ink)}
[data-tab="unit"].skin-cab .ua-head .dim,[data-tab="unit"].skin-cab .pc-mut{color:var(--oz-dim);font-size:12px;font-weight:400}
[data-tab="unit"].skin-cab .ozu-arow-cap{color:var(--oz-dim);font-size:11.5px;font-weight:600;border-right:1px solid var(--oz-line)}
[data-tab="unit"].skin-cab .ua-item{color:var(--oz-dim)}
[data-tab="unit"].skin-cab .ua-in input,[data-tab="unit"].skin-cab .ua-in select{border-color:var(--oz-line);border-radius:9px;color:var(--ink)}
[data-tab="unit"].skin-cab .ua-in input:hover,[data-tab="unit"].skin-cab .ua-in select:hover{border-color:#d7dee6}
[data-tab="unit"].skin-cab .ua-in input:focus,[data-tab="unit"].skin-cab .ua-in select:focus{outline:none;border-color:var(--accent)}
[data-tab="unit"].skin-cab .ump-lbl{color:var(--oz-dim)}
[data-tab="unit"].skin-cab .ump-btn{border:0;border-radius:9px;background:var(--oz-rt);color:var(--oz-r);padding:6px 12px}
[data-tab="unit"].skin-cab .ump-btn:hover{background:#fbd9e3}
[data-tab="unit"].skin-cab .ump-btn.ump-up{background:var(--oz-gt);color:var(--oz-g)}
[data-tab="unit"].skin-cab .ump-btn.ump-up:hover{background:#cdeedb}
/* методика: вместо жёлтого «предупреждения» — тихая серая секция кабинета */
[data-tab="unit"].skin-cab .unit-warn{background:var(--oz-sec);border:0;border-radius:12px;color:var(--ink);
  padding:10px 16px;font-size:12.5px}
[data-tab="unit"].skin-cab .unit-warn summary{color:var(--ink)}
[data-tab="unit"].skin-cab .unit-warn .dim{color:var(--oz-dim)}
[data-tab="unit"].skin-cab .unit-warn>div{color:#3a4a5c}
/* форма добавления артикула */
[data-tab="unit"].skin-cab .ozu-addform{background:var(--oz-sec);border:0;border-radius:12px}
[data-tab="unit"].skin-cab .wh-save-btn{background:var(--accent);border-color:var(--accent);color:#fff;border-radius:9px}
/* калькулятор скидки */
[data-tab="unit"].skin-cab .promo-calc .card-title{font-size:15px;font-weight:600}
[data-tab="unit"].skin-cab .pc-note{color:var(--oz-dim)}
[data-tab="unit"].skin-cab .pc-field{color:var(--oz-dim);font-weight:500}
[data-tab="unit"].skin-cab .pc-field input{border-color:var(--oz-line);border-radius:9px}
[data-tab="unit"].skin-cab .pc-field input:focus{outline:none;border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}

/* --- 5. Таблица: плоская (без зебры и цветных заливок шапки); ряд секций — белый с тёмными
       подписями 12/600 и тонкой линией, ряд колонок — светло-серая полоса кабинета;
       разделители секций — волосяные; «Прогноз» (липкие колонки справа) — в самом светлом
       тинте канала, как база в «Выкупе». Липкие колонки — белые с inset-линией. --- */
[data-tab="unit"].skin-cab #tbl_uv{font-size:12.5px}
[data-tab="unit"].skin-cab #tbl_uv td,[data-tab="unit"].skin-cab #tbl_uv th{border-bottom:1px solid #eef0f2}
[data-tab="unit"].skin-cab #tbl_uv td.oz-num{font-variant-numeric:tabular-nums}
/* правка Vladi по превью (21.08): три ступени серого сверху вниз — ряд секций ТЕМНЕЕ (#e9eef3),
   ряд колонок — полоса кабинета (#f3f6f9), строки артикулов — белые */
[data-tab="unit"].skin-cab #tbl_uv thead tr.oz-sectrow th{background:#e9eef3;color:var(--ink);
  font-size:12px;font-weight:600;height:28px;box-shadow:0 1px 0 var(--oz-line)}
[data-tab="unit"].skin-cab #tbl_uv thead tr.oz-sectrow th.oz-salt0,
[data-tab="unit"].skin-cab #tbl_uv thead tr.oz-sectrow th.oz-salt1{background:#e9eef3}
[data-tab="unit"].skin-cab #tbl_uv thead tr.oz-sectrow th.oz-sect-clk:hover{background:#dde5ed}
[data-tab="unit"].skin-cab #tbl_uv thead tr:nth-child(2) th{top:28px;background:#f3f6f9;color:var(--oz-dim);
  font-size:11.5px;font-weight:500;box-shadow:0 1px 0 var(--oz-line)}
[data-tab="unit"].skin-cab #tbl_uv th.oz-sortable:hover{background:#e9eef3;color:var(--ink)}
[data-tab="unit"].skin-cab #tbl_uv th.oz-sorted{color:var(--accent)}
[data-tab="unit"].skin-cab #tbl_uv .oz-sd{border-left:1px solid var(--oz-line)}
[data-tab="unit"].skin-cab #tbl_uv tbody tr:nth-child(even),
[data-tab="unit"].skin-cab #tbl_uv tbody tr:nth-child(even) td.oz-stick-a{background:var(--card)}
[data-tab="unit"].skin-cab #tbl_uv tbody tr:hover,
[data-tab="unit"].skin-cab #tbl_uv tbody tr:hover td.oz-stick-a{background:#f7f9fb}
[data-tab="unit"].skin-cab #tbl_uv td.oz-stick-a{box-shadow:inset -1px 0 0 var(--oz-line)}
[data-tab="unit"].skin-cab #tbl_uv th.oz-stick-a{box-shadow:inset -1px 0 0 var(--oz-line),0 1px 0 var(--oz-line)}
/* «Прогноз»: три липкие колонки + их заголовок — тинт канала */
[data-tab="unit"].skin-cab #tbl_uv tbody td.oz-stick-x,[data-tab="unit"].skin-cab #tbl_uv tbody td.oz-stick-y,
[data-tab="unit"].skin-cab #tbl_uv tbody td.oz-stick-z,
[data-tab="unit"].skin-cab #tbl_uv tbody tr:nth-child(even) td.oz-stick-x,[data-tab="unit"].skin-cab #tbl_uv tbody tr:nth-child(even) td.oz-stick-y,
[data-tab="unit"].skin-cab #tbl_uv tbody tr:nth-child(even) td.oz-stick-z{background:var(--accent-tint2)}
[data-tab="unit"].skin-cab #tbl_uv tbody tr:hover td.oz-stick-x,[data-tab="unit"].skin-cab #tbl_uv tbody tr:hover td.oz-stick-y,
[data-tab="unit"].skin-cab #tbl_uv tbody tr:hover td.oz-stick-z{background:#ecf2ff}
[data-tab="unit"].skin-cab #tbl_uv thead tr:nth-child(2) th.oz-stick-x,[data-tab="unit"].skin-cab #tbl_uv thead tr:nth-child(2) th.oz-stick-y,
[data-tab="unit"].skin-cab #tbl_uv thead tr:nth-child(2) th.oz-stick-z{background:var(--accent-tint);color:var(--accent-ink)}
[data-tab="unit"].skin-cab #tbl_uv thead tr.oz-sectrow th.oz-sect-stickr{background:var(--accent-tint-h);color:var(--accent);
  box-shadow:inset 1px 0 0 var(--accent-line),0 1px 0 var(--oz-line)}
[data-tab="unit"].skin-cab #tbl_uv td.oz-stick-x{box-shadow:inset 1px 0 0 var(--accent-line)}
[data-tab="unit"].skin-cab #tbl_uv th.oz-stick-x{box-shadow:inset 1px 0 0 var(--accent-line),0 1px 0 var(--oz-line)}
[data-tab="unit"].skin-cab #tbl_uv td.oz-stick-z{font-weight:600}
/* ячейки-поля: тонкая рамка, r7; правленные — тинт канала вместо бирюзы; чекбокс — канал */
[data-tab="unit"].skin-cab #tbl_uv .u-edit{border-color:var(--oz-line);border-radius:7px;color:var(--ink)}
[data-tab="unit"].skin-cab #tbl_uv .u-edit:hover{border-color:#c9d2dc}
[data-tab="unit"].skin-cab #tbl_uv .u-edit:focus{outline:none;border-color:var(--accent)}
[data-tab="unit"].skin-cab .u-edit.changed{border-color:var(--accent-line);background:var(--accent-tint);color:var(--accent-ink)}
[data-tab="unit"].skin-cab #tbl_uv .oz-vname{font-weight:600;color:var(--ink)}
[data-tab="unit"].skin-cab #tbl_uv input[type="checkbox"]{accent-color:var(--accent)}
[data-tab="unit"].skin-cab #tbl_uv [style*="#0f9d6b"]{color:var(--oz-g)!important}
[data-tab="unit"].skin-cab #tbl_uv [style*="#d64545"]{color:var(--oz-r)!important}
[data-tab="unit"].skin-cab #tbl_uv .oz-ovr,[data-tab="unit"].skin-cab #tbl_uv .oz-reset{color:var(--accent)}
/* прибыль/маржа: триада кабинета вместо прежних зелёного/красного; метка «↺ вернуть посев» — цвет канала */
[data-tab="unit"].skin-cab .u-pos{color:var(--oz-g)}
[data-tab="unit"].skin-cab .u-neg{color:var(--oz-r)}
[data-tab="unit"].skin-cab .oz-reset{color:var(--accent)}
[data-tab="unit"].skin-cab .oz-reset:hover{color:var(--oz-r)}

/* правки Vladi по проду (Чат 67, вечер): (1) второй ряд шапки — кнопки влево, а не вразброс
   (базовая .loss-head даёт justify-content:space-between, при переносе он раскидывал ряд на всю
   ширину; правый край ряда 1 держит margin-right:auto у заголовка); (2) бирюзовые остатки во
   всплывающих элементах юнитки → цвета канала: пункты меню источников БЗ, тост, чипы артикулов,
   заголовок формы нового артикула. */
[data-tab="unit"].skin-cab .loss-head{justify-content:flex-start}
[data-tab="unit"].skin-cab .ozu-srcitem{color:var(--accent);border-bottom:1px solid #eef0f2}
[data-tab="unit"].skin-cab .ozu-srcitem:last-child{border-bottom:0}
[data-tab="unit"].skin-cab .ozu-srcitem:hover{background:var(--accent-tint);color:var(--accent-ink)}
[data-tab="unit"].skin-cab .ozu-srcitem span{color:var(--oz-dim)}
[data-tab="unit"].skin-cab .ozu-srcitem.dim,[data-tab="unit"].skin-cab .ozu-srcitem.dim:hover{color:var(--oz-dim);background:transparent}
[data-tab="unit"].skin-cab .oz-toast{background:#29323c;border-radius:12px;font-family:inherit}
[data-tab="unit"].skin-cab .uchip{background:var(--accent-tint);color:var(--accent-ink);border-color:var(--accent-line)}
[data-tab="unit"].skin-cab .uchip b{background:var(--accent-tint-h);color:var(--accent)}
[data-tab="unit"].skin-cab .uchip b:hover{background:var(--accent-line);color:var(--accent-ink)}
[data-tab="unit"].skin-cab .ozu-addform .ozu-af-title{color:var(--ink)}
[data-tab="unit"].skin-cab .excel-btn.ozu-savebtn.ozu-dirty{background:var(--accent-ink);border-color:var(--accent-ink)}

/* правка Vladi: второй ряд шапки — по ПРАВОМУ краю (под фильтрами и тоглом первого ряда).
   justify-content:flex-end у всей шапки: и второй ряд, и его перенос в узком окне — вправо;
   первый ряд не затронут (его правую группу держит margin-right:auto заголовка). */
[data-tab="unit"].skin-cab .loss-head{justify-content:flex-end}   /* любой перенесённый ряд — вправо; заголовок держит левый край через margin-right:auto */
[data-tab="unit"].skin-cab #uv_dirty:empty,[data-tab="unit"].skin-cab #uv_edits:empty{display:none}   /* пустые подсказки не должны держать зазоры флекса (ряд не доходил до правого края на 16px) */
/* финальная правка Vladi: второй ряд = две группы — источники тарифов («Комиссия», «Тарифы логистики»,
   «Тарифы 28.08») слева, действия («Развернуть всё» … «Сохранить») справа; делит ряд margin-left:auto
   у первой кнопки правой группы (свободное место уходит в этот отступ) */
[data-tab="unit"].skin-cab #uv_expand_all{margin-left:auto}

/* Чат 93: Unit ВБ, классика — «Сохранить» зелёная, «Excel» серым (зеркало Чата 91) */
[data-tab="unit"] .excel-btn.ozu-savebtn:not(:disabled){background:#1d9e75;border-color:#1d9e75;color:#fff}
[data-tab="unit"] .excel-btn.ozu-savebtn:not(:disabled):hover{background:#0f6e56;border-color:#0f6e56;color:#fff}
[data-tab="unit"] .sec-btn{padding:7px 13px;font-size:12.5px}

/* ===== Чат 94: «Остатки»·WB — подпись «В дороге» с новой строки; раскрытие размеров
   рисуют общие .oz-artrow/.oz-szrow каркаса ===== */
.tab-panel[data-tab="wb_stocks"] .ozs-way .sub2{display:block}

/* ===== Чат 94: «Поставки»·WB — таймлайн статусов заявки (вид «Заявки») ===== */
.wbp-tl{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:10px 0 4px;font-size:12px;color:var(--muted,#667085)}
.wbp-tl-step{background:#f6f4fb;border:1px solid #e6e1f5;border-radius:8px;padding:3px 9px;white-space:nowrap}
.wbp-tl-step b{font-variant-numeric:tabular-nums}
.wbp-tl-step.cur{border-color:var(--accent,#7c3aed);color:var(--ink,#1c2430);font-weight:600}
.wbp-tl-arr{color:#b6bfca}

/* ===== Чат 94: ровные колонки плана «Что везти»·WB — фикс-раскладка, ширины задаёт
   colgroup из wb_supplies.js (у каждого артикула своя таблица, без fixed они разъезжались) ===== */
.tab-panel[data-tab="wb_supplies"] .ozv-plan{table-layout:fixed;width:100%}
.tab-panel[data-tab="wb_supplies"] .ozv-plan td{overflow-wrap:break-word}

/* ===== Чат 94: правки Vladi по «Поставкам»·WB ===== */
/* сегменты WB-каркаса носят класс .on (Чат 76), а стилей у него не было — выбранная
   кнопка не подсвечивалась НИГДЕ в WB-разделах; вид тот же, что у .active (Ozon) */
.seg-btn.on{background:var(--card);color:var(--accent-ink,#0047cc);font-weight:600;box-shadow:var(--shadow)}
.skin-cab .seg-btn.on{background:var(--card);color:var(--accent);font-weight:600;box-shadow:inset 0 0 0 1.5px var(--accent)}
.skin-cab .seg-btn.on:hover{background:var(--card)}
/* третья строка контролов плана — по внутреннему краю карточек поставок (их паддинг 12px) */
#wbp_planctl{padding-left:12px}
/* кнопка «остатки →» — одним столбцом по правому краю первой ячейки */
.tab-panel[data-tab="wb_supplies"] .ozv-artrow td:first-child .illiq-btn{float:right;margin-left:8px}
/* чекбокс «учитывать сезон» — общий стиль полей растягивал его до 64×34 */
#wbp_planctl input[type="checkbox"]{width:17px;height:17px;min-width:0;padding:0;flex:none}

/* ===== Чат 94: «Что везти»·WB — зебра с колонкой действия (концепция 3, выбор Vladi) ===== */
/* sticky шапке нужен overflow:visible у карточки (приём Ozon, строка ~3308); на узких
   экранах возвращаем прокрутку — липкость там теряется осознанно */
.tab-panel[data-tab="wb_supplies"] #wbp_result .ozv-cl{overflow:visible}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra thead th{position:sticky;top:0;z-index:3;
  background:var(--card,#fff);box-shadow:0 2px 0 var(--oz-line,#e7ebef)}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra tbody.wbp-art:nth-of-type(even)>tr.ozv-artrow>td{background:#f8f8fc}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra tbody.wbp-art:hover>tr.ozv-artrow>td{background:var(--accent-tint2,#faf5ff)}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra tr.ozv-artrow{cursor:pointer}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra td.wbp-act,
.tab-panel[data-tab="wb_supplies"] .wbp-zebra th.wbp-act{background:var(--accent-tint,#f5f0ff);
  border-left:1px solid #e9defb;border-right:1px solid #e9defb}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra thead th.wbp-act{background:#efe7fd}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra tr.ozv-artrow>td.wbp-act{font-weight:800;color:var(--accent-ink,#5b21b6)}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra .wbp-ov{background:var(--card,#fff)}
@media (max-width:1180px){.tab-panel[data-tab="wb_supplies"] #wbp_result .ozv-cl{overflow-x:auto}}

/* Чат 94: зебра: нечётные артикулы — белые (перебиваем старую серую заливку artrow) */
.tab-panel[data-tab="wb_supplies"] .wbp-zebra tbody.wbp-art>tr.ozv-artrow>td{background:var(--card,#fff)}

/* Чат 94: «Что везти»·WB — плашки второй строкой (превью согласовано Vladi) */
.wbp-badges{display:flex;gap:6px;flex-wrap:wrap;margin:5px 0 0 24px}
.tab-panel[data-tab="wb_supplies"] .wbp-zebra tr.ozv-artrow>td{vertical-align:top}

/* ===== Чат 95: раздел «Уведомлялки» (sql/184) — карточки рассылок ===== */
.ntf-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:14px;margin-top:14px}
.ntf-card{background:var(--card,#fff);border:1px solid #e6ebf0;border-radius:12px;padding:14px 16px}
.ntf-card.off{opacity:.62}
.ntf-top{display:flex;align-items:flex-start;gap:10px;justify-content:space-between}
.ntf-name{font-weight:650;font-size:15px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ntf-ch{font-size:11px;font-weight:600;padding:2px 7px;border-radius:999px;background:#eef2f6;color:#5b6b7c}
.ntf-ch.ch-ozon{background:#e8f1ff;color:#1f6feb}
.ntf-ch.ch-wb{background:#f3ecff;color:#7a3ff2}
.ntf-verd{font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}
.ntf-verd.ok{background:#e7f7ee;color:#12805c}
.ntf-verd.wait{background:#eef2f6;color:#5b6b7c}
.ntf-verd.bad{background:#fdecf1;color:#c0335c}
.ntf-verd.off{background:#f2f2f2;color:#8a8a8a}
.ntf-descr{color:#5b6b7c;font-size:12.5px;line-height:1.5;margin:8px 0 10px}
.ntf-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-bottom:10px}
.ntf-meta>div{display:flex;flex-direction:column;gap:2px}
.ntf-meta span{font-size:11px;color:#8a97a5}
.ntf-meta b{font-size:12.5px;font-weight:600}
.ntf-err{background:#fdecf1;color:#a32b4d;font-size:12px;border-radius:8px;padding:7px 10px;margin-bottom:10px}
.ntf-note{color:#8a97a5;font-size:11.5px;margin-bottom:10px}
.ntf-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ntf-st{font-size:12px}
.ntf-msg{background:#f7f9fb;border:1px solid #e6ebf0;border-radius:10px;padding:12px 14px;
         white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.55;margin:8px 0 0}
@media (max-width:900px){.ntf-cards{grid-template-columns:1fr}.ntf-meta{grid-template-columns:1fr}}

/* Чат 95: «Уведомлялки» — рассылки блоками по каналам (у каждого свой бот и чат) */
.ntf-cards{display:block}
.ntf-group{display:flex;align-items:baseline;gap:10px;margin:18px 0 10px}
.ntf-group:first-child{margin-top:14px}
.ntf-g-name{font-size:15px;font-weight:650}
.ntf-group.ch-ozon .ntf-g-name{color:#1f6feb}
.ntf-group.ch-wb .ntf-g-name{color:#7a3ff2}
.ntf-g-sub{font-size:12px;color:#8a97a5}
.ntf-cards-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:14px}
@media (max-width:900px){.ntf-cards-row{grid-template-columns:1fr}}

/* Чат 95: кнопки карточек «Уведомлялок» — в цвете своего канала.
   Раздел общий (body[data-ch] пуст), поэтому палитра берётся с КЛАССА КАРТОЧКИ,
   а не из канальных правил каскада. */
.ntf-card.ch-ozon{--ntf-a:#005bff;--ntf-ai:#0047cc;--ntf-bd:#9dbcf5;--ntf-bg:#f5f8ff;--ntf-soft:#e8f1ff}
.ntf-card.ch-wb{--ntf-a:#7c3aed;--ntf-ai:#5b21b6;--ntf-bd:#c8b1f2;--ntf-bg:#faf7ff;--ntf-soft:#f3ecff}
.ntf-card.ch-common{--ntf-a:#0ea5a4;--ntf-ai:#0b7c7b;--ntf-bd:#8fd6d5;--ntf-bg:#f2fbfb;--ntf-soft:#e6f7f7}
/* «История и текст» / «Отправить сейчас» — серые, при наведении в цвете канала */
.ntf-card .sec-btn:hover{border-color:var(--ntf-bd);background:var(--ntf-bg);color:var(--ntf-a)}
/* «Выключить» — в цвете канала (у общих — красноватая, см. ниже) */
.ntf-card .wbc-reset{border-color:var(--ntf-bd);background:var(--ntf-bg);color:var(--ntf-ai)}
.ntf-card .wbc-reset:hover{background:var(--ntf-soft);border-color:var(--ntf-a);color:var(--ntf-a)}
.ntf-card.ch-common .wbc-reset{border-color:#f0b6c3;background:#fff5f7;color:#a32b4d}
.ntf-card.ch-common .wbc-reset:hover{background:#fdecf1;border-color:#c0335c;color:#c0335c}

/* ==== Чат 101: карточка кампании «Рекламы»·Ozon (static/ads_card.js) ==== */
.adc-crumb{display:flex;align-items:center;gap:10px;margin:6px 0 12px;flex-wrap:wrap}
.adc-back{border:1px solid var(--line);background:var(--card);border-radius:10px;
  padding:6px 12px;font-size:13px;color:var(--accent-ink);cursor:pointer;font-weight:600}
.adc-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.adc-head h3{margin:0;font-size:18px;font-weight:800}
.adc-id{color:var(--muted);font-size:12px}
.adc-acts{margin-left:auto;display:flex;gap:8px}
.adc-tag{font-size:10.5px;font-weight:700;border-radius:999px;padding:2px 8px;white-space:nowrap}
.adc-tag.ours{background:var(--accent-tint);color:var(--accent-ink)}
.adc-tag.check{background:#fdf3e3;color:#d97706}
.adc-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:10px;margin-top:12px}
.adc-tile{border:1px solid var(--line);border-radius:12px;padding:9px 12px;background:var(--accent-tint2)}
.adc-tile .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);
  font-weight:700;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.adc-tile .v{font-size:16px;font-weight:800;margin-top:3px}
.adc-tile .s{font-size:11.5px;color:var(--muted);margin-top:2px}
.adc-bar{height:6px;border-radius:4px;background:var(--accent-tint-h);margin-top:6px;overflow:hidden}
.adc-bar i{display:block;height:100%;background:var(--accent);border-radius:4px}
/* расписание показов 7×24 */
.adc-sp{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 10px;align-items:center}
.adc-swrap{overflow-x:auto;padding-bottom:4px}
.adc-sched{display:grid;grid-template-columns:34px repeat(24,26px);gap:3px;width:max-content}
.adc-sched .hh{font-size:10px;color:var(--muted);text-align:center;cursor:pointer;font-weight:600;line-height:24px}
.adc-sched .dd{font-size:11px;color:var(--muted);font-weight:700;line-height:24px;cursor:pointer}
.adc-sc{width:26px;height:24px;border-radius:6px;background:var(--accent-tint2);
  border:1px solid var(--line);cursor:pointer;position:relative}
.adc-sc.on{background:var(--accent);border-color:var(--accent-ink)}
.adc-sc.on::after{content:"✓";position:absolute;inset:0;color:#fff;font-size:11px;line-height:24px;text-align:center}
.adc-sfoot{display:flex;gap:14px;align-items:center;margin-top:10px;flex-wrap:wrap}
/* тепловая карта активности */
.adc-chips{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin:0 0 10px}
.adc-chip{background:var(--accent-tint);border:1px solid var(--accent-line);border-radius:10px;
  text-align:center;padding:6px 4px}
.adc-chip b{display:block;font-size:15px}
.adc-chip span{font-size:10.5px;color:var(--muted)}
.adc-heat{display:grid;grid-template-columns:34px repeat(24,32px);gap:3px;width:max-content}
.adc-heat .hh{font-size:10px;color:var(--muted);text-align:center;font-weight:600;line-height:22px}
.adc-heat .dd{font-size:11px;color:var(--muted);font-weight:700;line-height:22px}
.adc-hc{width:32px;height:22px;border-radius:5px;font-size:10.5px;line-height:22px;text-align:center;
  background:var(--accent-tint2);color:var(--muted)}
.adc-hc.na{background:transparent;border:1px dashed var(--line);box-sizing:border-box}   /* Чат 179: час ещё не наблюдали (показы рекламы) */
/* Чат 179 (слово Vladi, вариант A из трёх превью): кнопки «Применить / Сохранить» карточки кампании — в шапке блока
   справа; есть неприменённые изменения (.dirty, btnState) — синяя, а пульсирует только ЖЁЛТАЯ ТОЧКА слева (выбор Vladi
   из превью ads_card_dot_c179: место — слева, пульсация — «средняя», ×1,35 + кольцо 7 px раз в 1,4 с). Точка 9 px по
   середине: строка 18 px + поля 7+7, рамка рисуется 1 px → сверху, снизу, слева и до текста ровно по 12,5 px */
@keyframes adcDot{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,197,61,.8)}50%{transform:scale(1.35);box-shadow:0 0 0 7px rgba(255,197,61,0)}}
#adx_card_view .adx-h{flex-wrap:wrap;row-gap:6px}
#adx_card_view .adx-h .adc-save{margin-left:auto;font-size:13px;line-height:18px;padding:7px 16px;border-radius:9px;color:var(--accent);border:1.5px solid var(--accent);background:#fff}
#adx_card_view .adx-h .adc-save:hover{background:var(--accent-tint2,#f5f8ff)}
#adx_card_view .adx-h .adc-save.dirty{background:var(--accent);color:#fff;display:inline-flex;align-items:center;padding-left:11.5px;gap:12.5px}
#adx_card_view .adx-h .adc-save.dirty::before{content:"";box-sizing:border-box;width:9px;height:9px;border-radius:50%;background:#ffc53d;flex:none;
  animation:adcDot 1.4s ease-in-out infinite}
#adx_card_view .adx-h .adc-save:disabled{opacity:.6}
#adx_card_view .adx-h .adc-save:disabled::before{animation:none}
@media (prefers-reduced-motion: reduce){#adx_card_view .adx-h .adc-save.dirty::before{animation:none}}
/* правила защиты */
.adc-rule{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.adc-rule:last-child{border-bottom:none}
.adc-rule input[type=checkbox]{width:16px;height:16px;margin-top:2px;accent-color:var(--accent)}
.adc-rule .t{flex:1;min-width:260px;font-size:13px}
.adc-rule .t small{display:block;color:var(--muted);margin-top:2px;font-size:11.5px}
.adc-rule input[type=number]{width:70px;padding:3px 6px;border:1px solid var(--accent-line);
  border-radius:7px;font-weight:700;text-align:right;font-size:13px}
/* ставки */
.adc-reco{display:inline-block;background:var(--accent-tint);border:1px solid var(--accent-line);
  color:var(--accent-ink);border-radius:8px;padding:2px 8px;font-weight:700;cursor:pointer;font-size:12px}
.adc-reco.warn{background:#fdf3e3;border-color:#f3ddb5;color:#d97706}
.adc-bid{width:72px;padding:4px 6px;border:1px solid var(--accent-line);border-radius:7px;
  font-weight:700;text-align:right}
/* темп бюджета */
.adc-pace{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;align-items:end;height:104px;margin:10px 0 4px}
.adc-pv{position:relative;border-radius:8px 8px 4px 4px;background:var(--accent-tint-h)}
.adc-pv i{position:absolute;left:0;right:0;bottom:0;background:var(--accent);border-radius:8px 8px 4px 4px}
.adc-pv.today i{background:var(--accent-hot)}
.adc-pv.future{opacity:.45}
.adc-pacel{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;text-align:center;font-size:11px;color:var(--muted)}
.adc-pacel b{display:block;color:var(--ink)}

/* ---- Чат 103 (v374): плашка мультифильтра статусов «Конвейера FBS» — вид как у
   нативных выпадашек кабинета (скрин Vladi): строки читаемые, голубой ховер,
   выбранные — синим с галочкой (галочка через input:checked + следующий span,
   подсветка строки через :has — дашборд живёт в Chrome) ---- */
/* Чат 107: плашки фильтров «Пути отправлений» — стадии (#fbsx_tlr_pop) и артикулы
   (#fbsx_tlr_apop, раунд 9, с поиском); общий класс .fbsp-pop (очередь Конвейера удалена) */
.fbsp-pop{font-size:13.5px;color:#1f2c43}
.fbsp-pop label{display:flex;align-items:center;padding:9px 14px 9px 8px;
  border-radius:9px;cursor:pointer;white-space:nowrap;font-weight:500}
.fbsp-pop label[hidden]{display:none}
.fbsp-pop label:hover{background:#e9f1fd}
.fbsp-pop label input{position:absolute;opacity:0;pointer-events:none}
.fbsp-pop .fbsp-ck{visibility:hidden;width:24px;text-align:center;
  color:var(--accent,#2563eb);font-weight:700;flex:none}
.fbsp-pop input:checked + .fbsp-ck{visibility:visible}
.fbsp-pop label:has(input:checked){color:var(--accent,#2563eb);font-weight:600}
.fbsp-pop .fbsp-n{margin-left:7px;color:#7a8aa0;font-weight:400}
.fbsp-pop .fbsp-foot{margin:4px 8px 2px;border-top:1px solid #edf1f5;padding-top:8px;font-size:12.5px}
#fbsx_tlr_asearch{display:block;width:calc(100% - 20px);margin:4px 8px 6px;padding:6px 10px;
  border:1px solid #d8e0ea;border-radius:8px;font-size:13px;outline:none;box-sizing:border-box}
#fbsx_tlr_asearch:focus{border-color:var(--accent,#2563eb)}
#fbsx_tlr_alist{max-height:260px;overflow:auto}

/* ---- Чат 103 (v375): пять KPI-плиток первой строки «Продаж по FBS» — в одну строку
   (базовый .kpis-sub делит на 4); на узких экранах — обычные две колонки ---- */
[data-tab="ozon_fbs"] .ozs-kpis,[data-tab="wb_fbs"] .ozs-kpis{grid-template-columns:repeat(5,1fr)}
@media(max-width:900px){[data-tab="ozon_fbs"] .ozs-kpis,[data-tab="wb_fbs"] .ozs-kpis{grid-template-columns:repeat(2,1fr)}}

/* ---- Чат 103 (v376): апгрейд «Заказов FBS в графике» — плитки периода с дельтами
   и живой тултип дня (выбор Vladi «все три концепции») ---- */
.fbslt{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:6px 0 10px}
/* Чат 103 (v378, правка Vladi): нейтральная плитка — слегка серая, как в превью */
.fbslt .t{border:1px solid var(--oz-line,#e3e9f2);border-radius:12px;padding:9px 12px;background:#fbfdff}
.fbslt .l{font-size:11.5px;color:var(--oz-dim,#66758c);letter-spacing:.2px}
.fbslt .v{font-size:18px;font-weight:700;margin:1px 0}
.fbslt .v small{font-size:12px;color:var(--oz-dim,#66758c);font-weight:600}
.fbslt .d{font-size:12px;font-weight:600}
.fbslt .d.up{color:#0b7a4b}
.fbslt .d.dn{color:#b42318}
.fbslt .d.na{color:var(--oz-dim,#66758c);font-weight:400}
@media(max-width:900px){.fbslt{grid-template-columns:repeat(2,1fr)}}
#fbsl_tip,#wfl_tip{position:absolute;top:6px;z-index:60;background:#fff;border:1px solid #d8e0ea;
  border-radius:12px;box-shadow:0 14px 34px rgba(15,23,42,.18);padding:11px 14px;
  font-size:12.5px;min-width:240px;pointer-events:none}
#fbsl_tip .r,#wfl_tip .r{display:flex;justify-content:space-between;gap:16px;padding:1px 0}
#fbsl_tip .r i,#wfl_tip .r i{display:inline-block;width:8px;height:8px;border-radius:99px;margin-right:6px}
#fbsl_tip .warn,#wfl_tip .warn{color:#66758c;border-top:1px solid #edf1f5;margin-top:6px;padding-top:6px;max-width:36ch}
#fbsl_tip .tot,#wfl_tip .tot{border-top:1px solid #edf1f5;margin-top:6px;padding-top:6px;font-weight:700;display:flex;justify-content:space-between}

/* ---- Чат 103 (v377): плитки периода FBS — цветной фон по «хорошести» дельты,
   как в превью-концепции (зелёный лучше / красный хуже) ---- */
.fbslt .t.good{background:#eefaf3;border-color:#d3f0de}
.fbslt .t.bad{background:#fdf0f0;border-color:#f6d9d9}

/* ===== Чат 104: новые блоки «Продажи по FBS» (static/fbs_ext.js, концепции А–Е аудита) ===== */
[data-tab="ozon_fbs"] .fx-card .fx-tag{display:inline-block;margin-left:8px;background:#e6efff;color:#005bff;border-radius:99px;padding:1px 9px;font-size:11.5px;font-weight:600;vertical-align:middle}
.fx-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:8px 0 10px}
.fx-tile{border:1px solid var(--line,#e3e9f2);border-radius:12px;padding:10px 12px;background:#fbfdff;min-width:0}
.fx-tile.good{background:#eefaf3;border-color:#d3f0de}
.fx-tile.bad{background:#fdf0f0;border-color:#f6d9d9}
.fx-tile.warn{background:#fff7e6;border-color:#f8e3b6}
.fx-tile .l{font-size:11.5px;color:var(--muted,#66758c);display:flex;align-items:center;gap:5px}
.fx-tile .l i{display:inline-block;width:8px;height:8px;border-radius:99px;flex:none}
.fx-tile .v{font-size:19px;font-weight:700;margin:2px 0;white-space:nowrap}
.fx-tile .v small{font-size:12px;font-weight:600;color:var(--muted,#66758c);white-space:normal}
.fx-tile .s{font-size:11.5px;color:var(--muted,#66758c);margin-top:2px}
.fx-tile .d{font-size:12px;font-weight:600}
.fx-tile .v .pill{vertical-align:middle;font-size:11px}
.fx-up{color:#0b7a4b}.fx-dn{color:#b42318}.fx-dim{color:var(--muted,#66758c);font-size:12px}
.fx-tbl{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.fx-tbl th{font-size:12px;color:var(--muted,#66758c);font-weight:600;text-align:left;padding:6px 8px;border-bottom:1px solid var(--line,#e3e9f2);white-space:nowrap}
.fx-tbl td{padding:6px 8px;border-bottom:1px solid var(--line,#e3e9f2);vertical-align:top}
.fx-tbl td.num,.fx-tbl th.num{text-align:right}
/* Чат 189 (выбор Vladi из трёх вариантов, обкатанных вживую, — «В · Значок»): столбцы таблицы «Конвейера FBS»,
   по которым можно щёлкать, помечены значком в цветном квадрате — воронка у фильтров «Товар» и «Стадия», стрелки
   у сортировок («Заказан»; в Ozon ещё «Дедлайн»); включённый фильтр (.wf-hf.on) — квадрат залит цветом канала,
   подпись цветная. Таблицы: #wf_tl_rows — WB, #fbsx_tl_rows — Ozon (тем же словом Vladi «на Ozon то же самое») */
#wf_tl_rows th:has(> .wf-hf),#fbsx_tl_rows th:has(> .wf-hf){padding-left:3px;padding-right:2px}
#wf_tl_rows .wf-hf,#fbsx_tl_rows .wf-hf{display:inline-flex;align-items:center;gap:4px;vertical-align:middle;color:#1f2c43;
  font-weight:600;transition:color .12s}
#wf_tl_rows .wf-hf-ico,#fbsx_tl_rows .wf-hf-ico{display:inline-flex;align-items:center;justify-content:center;width:18px;
  height:18px;border-radius:5px;background-color:var(--accent-tint,#f3e8ff);color:var(--accent);flex:none;
  transition:background-color .12s,color .12s}
#wf_tl_rows th:hover > .wf-hf .wf-hf-ico,#wf_tl_rows .wf-hf.on .wf-hf-ico,
#fbsx_tl_rows th:hover > .wf-hf .wf-hf-ico,#fbsx_tl_rows .wf-hf.on .wf-hf-ico{background-color:var(--accent);color:#fff}
#wf_tl_rows .wf-hf.on,#fbsx_tl_rows .wf-hf.on{color:var(--accent)}
/* Ozon: у столбца «Товар» слева отступ 38 px (см. ниже) — значок встаёт в этот отступ, подпись остаётся над товарами */
#fbsx_tl_rows #fbsx_tlr_art > .wf-hf{margin-left:-22px}
/* подписи фильтров («Товар: YNG52», «Стадия: отменён») длиннее столбца — переносятся на вторую строку, а не
   наезжают на соседний заголовок (столбцы фиксированной ширины) */
#wf_tl_rows #wf_tlr_art,#fbsx_tl_rows #fbsx_tlr_art,#fbsx_tl_rows #fbsx_tlr_status{white-space:normal !important;line-height:1.25}
/* Ozon, узкое окно: столбец «Заказан» сужен вручную (сдвиг на 50 px), значок в него не помещается — прячем */
@media (max-width:1340px){#fbsx_tl_rows #fbsx_tlr_created .wf-hf-ico{display:none}}
.fx-tbl code{font-size:12px}
.fx-two{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0}
.fx-box{border:1px solid var(--line,#e3e9f2);border-radius:12px;padding:12px 14px;background:#fff}
.fx-box .bt{font-weight:600;margin-bottom:6px}
.fx-box .kv{display:flex;justify-content:space-between;gap:10px;padding:3px 0;font-size:13px}
.fx-box .kv span:first-child{color:var(--muted,#66758c)}
.fx-spark{display:flex;align-items:flex-end;gap:2px;height:26px;margin-top:6px}
.fx-spark i{flex:1 1 0;display:block;border-radius:2px 2px 0 0;min-width:3px}
.fx-stages{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 10px}
.fx-stage-c{flex:1 1 150px;border-radius:10px;padding:9px 10px;color:#fff;min-width:0}
.fx-stage-c .n{font-size:11px;opacity:.92}
.fx-stage-c .v{font-size:17px;font-weight:700;margin-top:2px;white-space:nowrap}
.fx-stage-c .s{font-size:11px;opacity:.92}
.fx-stage-c.ghost{background:#fff;color:var(--muted,#66758c);border:1px dashed #c9d4e3}
.fx-hrow{display:grid;grid-template-columns:90px 1fr 50px;gap:8px;align-items:center;font-size:12.5px;margin:2px 0}
.fx-hrow .bar,.fx-tbl .bar{height:9px;border-radius:99px;background:#e6ecf5;overflow:hidden;display:flex}
.fx-hrow .bar i,.fx-tbl .bar i{display:block;height:100%;border-radius:99px}
/* Чат 162 (вариант А превью fbs_wb_speed_tasks_c162): строки «Скорости отгрузки»·WB кликаются — задания зоны
   списком под блоком (#wfx_zone_list, wb_fbs.js zoneRender) */
.fx-hrow.fx-zclk{cursor:pointer;border-radius:8px;padding:3px 6px;margin:1px -6px}
.fx-hrow.fx-zclk:hover{background:#f5f0ff}
.fx-hrow.fx-zclk.on{background:#ede5ff;box-shadow:inset 0 0 0 1px #c4b0f5}
.fx-hrow.fx-zclk:focus-visible{outline:2px solid #a78bfa;outline-offset:1px}
.fx-hrow .fx-zgo{font-size:11px;color:#7c3aed;opacity:0;margin-left:4px}
.fx-hrow.fx-zclk:hover .fx-zgo,.fx-hrow.fx-zclk.on .fx-zgo{opacity:1}
.fx-zhint{margin-top:6px}
.fx-zl{margin-top:12px;border-top:1px dashed #d8dff0;padding-top:10px}
.fx-zl-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;font-size:13px}
.fx-zl-x{border:0;background:transparent;color:#7c3aed;cursor:pointer;font-size:12.5px;white-space:nowrap}
.fx-cp{border:0;background:transparent;cursor:pointer;color:#7c3aed;font-size:12px;padding:0 3px}
.fx-tl{height:10px;width:100%;border-radius:99px;background:#e6ecf5;overflow:hidden;display:flex}
.fx-tl i{display:block;height:100%}
.fx-hours{display:flex;align-items:flex-end;gap:3px;height:70px;margin:6px 0 2px}
.fx-hours .c{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:9.5px;color:var(--muted,#66758c)}
.fx-hours .c i{display:block;width:100%;border-radius:2px 2px 0 0;min-height:1px}
.pill.info{background:#e6efff;color:#005bff}
.pill.good{background:#eefaf3;color:#0b7a4b}
@media(max-width:900px){.fx-two{grid-template-columns:1fr}}
/* ===== Чат 105: «Живые» данные по складам — ⓘ по наведению (белая карточка, как .ui-tip) и
   строка переключателя склада над графиком динамики ===== */
.fx-info{position:relative}
.fx-info[data-tip]:hover::after,.fx-info[data-tip]:focus-visible::after{content:attr(data-tip);white-space:pre-line;position:absolute;left:0;top:calc(100% + 8px);z-index:70;background:#fff;color:#1f2937;border:1px solid #d8e0ea;border-radius:12px;padding:10px 13px;font-size:12.5px;font-weight:400;line-height:1.5;width:max-content;max-width:min(520px,80vw);text-align:left;box-shadow:0 10px 26px rgba(15,23,42,.14);pointer-events:none}
.fx-whrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 8px}
.fbsd-chips{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:900px){.fbsd-chips{margin-left:0;justify-content:flex-start}}
/* вариант C (Чат 105, выбор Vladi): подпись группы — первая серая ячейка внутри .seg; три прибора в шапке
   «Свой склад по артикулам и размерам» разведены зазором 14px */
.seg.seg-capped{padding-left:0;overflow:hidden}
.seg-cap{display:inline-flex;align-items:center;padding:0 10px 0 11px;margin:-2px 4px -2px 0;background:#f2f5f8;color:#6b7684;font-size:12px;font-weight:500;border-right:1px solid #e7ebef;border-radius:8px 0 0 8px;white-space:nowrap;cursor:default}
.skin-cab .seg-cap{background:var(--oz-sec,#f2f5f8);border-right-color:var(--oz-line,#e7ebef)}
/* Чат 189 (слово Vladi по превью): в блоке с серой подписью на месте ряда кнопок может стоять выпадающий
   список — подпись и обводка блока прежние, у списка своей рамки нет. Только background-color: запись
   background одной строкой стёрла бы стрелку списка */
.seg.seg-capped > select.seg-sel{border:0;background-color:transparent;min-height:0;padding:6px 26px 6px 10px;
  font-size:13px;line-height:17px;font-weight:600;color:var(--ink);border-radius:7px;cursor:pointer;max-width:none;
  align-items:center}
.seg.seg-capped > select.seg-sel:hover{background-color:var(--oz-sec,#f2f5f8)}
.seg.seg-capped > select.seg-sel:focus{outline:none}
.seg.seg-capped > select.seg-sel:focus-visible{box-shadow:inset 0 0 0 1.5px var(--accent)}
#fbsw_ctrls.detail-ctrls{gap:14px}
/* Чат 105 (Vladi): «Плитки кабинета» — две строки плиток фиксированной ширины (6 + 4) */
.fx-tiles.r5{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1200px){.fx-tiles.r5{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* Чат 105 (Vladi, вариант C): конвейер стадий в «Плитках кабинета» */
.fx-flow{display:flex;align-items:stretch;margin:4px 0 12px}
.fx-step{flex:1 1 0;min-width:0;position:relative;padding:8px 8px 8px 18px;background:var(--oz-sec,#f2f5f8);clip-path:polygon(0 0,calc(100% - 12px) 0,100% 50%,calc(100% - 12px) 100%,0 100%,12px 50%);margin-right:-6px}
.fx-step:first-child{clip-path:polygon(0 0,calc(100% - 12px) 0,100% 50%,calc(100% - 12px) 100%,0 100%);padding-left:14px;border-radius:10px 0 0 10px}
.fx-step:last-child{clip-path:polygon(0 0,100% 0,100% 100%,0 100%,12px 50%);border-radius:0 10px 10px 0;margin-right:0}
.fx-step .n{font-size:12px;color:#66758c;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fx-step .n i{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
.fx-step .v{font-size:17px;font-weight:700;margin-top:2px}
.fx-step .v small{font-size:11.5px;font-weight:500;color:var(--oz-dim,#8b95a1)}
.fx-step .r{font-size:12px;color:var(--oz-dim,#8b95a1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fx-step.hot{background:#e8f0ff}
.fx-step.cancel{background:#fff7f7}
.fx-step.prob{background:#fdf0f0;cursor:pointer}
.fx-step.prob .v{color:#b42318}
.fx-step.prob.ok{background:var(--oz-sec,#f2f5f8)}
.fx-step.prob.ok .v{color:inherit}
.fx-side{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px}
.fx-sbox{border:1px solid var(--oz-line,#e7ebef);border-radius:10px;padding:8px 12px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;background:#fff}
.fx-sbox .n{font-size:12px;color:#66758c;flex:1 1 auto;white-space:nowrap}
.fx-sbox .n i{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}
.fx-sbox .v{font-size:16px;font-weight:700}
.fx-sbox .v small{font-size:11.5px;font-weight:500;color:var(--oz-dim,#8b95a1)}
.fx-sbox .r{font-size:12px;color:var(--oz-dim,#8b95a1)}
.fx-sbox.cancel{background:#fff7f7;border-color:#f6d9d9}
.fx-sbox.prob{background:#fdf0f0;border-color:#f6d9d9;cursor:pointer}
.fx-sbox.prob .v{color:#b42318}
.fx-sbox.prob.ok{background:#fff;border-color:var(--oz-line,#e7ebef)}
.fx-sbox.prob.ok .v{color:inherit}
@media(max-width:900px){.fx-flow{flex-wrap:wrap}.fx-step{flex:1 1 45%}.fx-side{grid-template-columns:1fr}}
/* Чат 105 (Vladi, концепция 1): часовая полоса заказов с зонами по слоту склада («Хронометраж пути») */
.fx-hchart{position:relative;height:150px;display:grid;grid-template-columns:repeat(24,1fr);gap:3px;align-items:end;padding:18px 0 20px;border-bottom:1px solid var(--oz-line,#e7ebef);margin-top:6px}
.fx-hcol{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-width:0}
.fx-hcol i{display:block;width:100%;border-radius:3px 3px 0 0;background:#005bff}
.fx-hcol.tail i{background:#f59e0b}
.fx-hcol.after i{background:#cbd5e1}
.fx-hcol b{font-size:10.5px;font-weight:600;color:var(--ink,#001a34);line-height:1;margin-bottom:3px}
.fx-hcol span{position:absolute;bottom:-18px;left:0;right:0;text-align:center;font-size:10px;color:var(--oz-dim,#8b95a1)}
.fx-hzone{position:absolute;top:0;bottom:20px;background:rgba(245,158,11,.08);border-left:1px dashed #f59e0b;pointer-events:none}
.fx-hzone.after{background:rgba(148,163,184,.12);border-left-color:#94a3b8}
.fx-hzone span{position:absolute;top:2px;left:5px;font-size:10.5px;color:#b45309;white-space:nowrap}
.fx-hzone.after span{color:#64748b}
.fx-hchips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;font-size:12px}
.fx-hchips span{border:1px dashed #d8e0ea;border-radius:99px;padding:3px 10px;color:var(--ink,#001a34)}
.fx-hchips span b{font-weight:600}
/* Чат 107 (Vladi): подсказка часов «Когда приходят заказы» — мгновенная тёмная карточка у вершины
   столбца (вид тултипа Chart.js из «Детализации остатков по артикулу»), вместо нативного title */
.fx-htip{position:absolute;z-index:70;background:rgba(0,0,0,.8);color:#fff;border-radius:7px;
  padding:7px 11px;font-size:12px;line-height:1.5;pointer-events:none;white-space:nowrap;
  transform:translateX(-50%)}
.fx-htip .t{font-weight:700;margin-bottom:2px}
.fx-htip .r{display:flex;justify-content:space-between;gap:14px}
.fx-htip .r i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.fx-htip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:rgba(0,0,0,.8)}
/* Чат 107 (Vladi): «Живые» данные по складам — колонки со 2-й («На полке») до последней одной
   ширины (colgroup ставит renderLive в fbs_ext.js); заголовкам разрешён перенос.
   Раунд 2 (скрин Vladi): равной ширины мало — числа прижимались вправо и липли к тексту
   соседней колонки («Едет» ↔ «Дедлайн склада», «Сегодня» ↔ «Первый / последний»);
   всё, кроме «Склада», по центру — расстояние между колонками одинаковое на глаз */
/* раунд 6: #fbsx_tl_wh_tbl — точная копия этой таблицы под плитками «Конвейера FBS» */
#fbsx_live_tbl,#fbsx_tl_wh_tbl{table-layout:fixed}
#fbsx_live_tbl th,#fbsx_tl_wh_tbl th{white-space:normal}
#fbsx_live_tbl th:not(:first-child),#fbsx_live_tbl td:not(:first-child),
#fbsx_tl_wh_tbl th:not(:first-child),#fbsx_tl_wh_tbl td:not(:first-child){text-align:center}
/* раунд 6 (Vladi): «Товар» и «Шт» в «Пути отправлений» — чуть правее (+5px);
   раунд 8 — «Товар» ещё +5px, «Заказан»/«Собран»/«Передан»/«Дедлайн» — на 5px левее;
   раунд 9 — «Товар» ещё +10px, даты ещё −10px через ширины колонок (fxTlHead);
   раунд 10 — «Товар» ещё +10px (итого 38px), даты ещё −20px (сдвиг границ 30px) */
#fbsx_tl_rows th:nth-child(2),#fbsx_tl_rows td:nth-child(2){padding-left:38px}
#fbsx_tl_rows th:nth-child(3),#fbsx_tl_rows td:nth-child(3){padding-left:13px}
#fbsx_tl_rows th:nth-child(4),#fbsx_tl_rows td:nth-child(4),
#fbsx_tl_rows th:nth-child(5),#fbsx_tl_rows td:nth-child(5),
#fbsx_tl_rows th:nth-child(6),#fbsx_tl_rows td:nth-child(6),
#fbsx_tl_rows th:nth-child(7),#fbsx_tl_rows td:nth-child(7){padding-left:3px}
/* раунд 7 (выбор Vladi — концепция Б «Полоска-таймер»): дедлайн в «Пути отправлений» —
   полоска = доля окна заказ→дедлайн, что уже сгорело; цвет по зоне, подпись с точным временем */
.fxdl-bar{width:100%;max-width:130px;height:6px;border-radius:99px;background:#e6ecf5;overflow:hidden;margin-top:5px}
.fxdl-bar i{display:block;height:100%;border-radius:99px}
.fxdl-cap{font-size:11px;margin-top:3px;white-space:normal}
/* Раунд 2: тултип графика динамики «Живых» данных — тот же .fx-htip, позиция от #fbsd_box */
#fbsd_box{position:relative}
.fx-whrow .ws-norm{white-space:normal}
/* Чат 106 (Vladi): низ «Плиток кабинета» — блок «Заказы FBS в графике» (2/3) + бокс «Скорость отгрузки» (1/3);
   заголовок блока графика с кнопкой ⓘ в одну строку */
.fx-two.fx-two-wide{grid-template-columns:minmax(0,2fr) minmax(0,1fr);margin-top:12px}
@media(max-width:900px){.fx-two.fx-two-wide{grid-template-columns:1fr}}
#fbs_life_card .bt,#wf_life_card .bt{display:flex;align-items:center;gap:4px;font-size:14px}
#fbs_life_card .bt .note-foldbtn,#wf_life_card .bt .note-foldbtn{margin:0 0 0 2px}
/* Чат 106, раунд 2 (Vladi): «Сводка за период» — контролы в шапке, узкий бокс скорости (300px), ⓘ в заголовках
   боксов, чипы линий графика мельче и одной строкой с легендой */
.fx-two.fx-two-wide{grid-template-columns:minmax(0,1fr) 300px}
#fbsx_ctl{margin-left:auto}
#fbsx_ctl .u-edit{font-size:12px;padding:4px 6px}
#fbsx_hist_box .bt,#wfx_hist_box .bt{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
#fbsx_hist_box .bt .note-foldbtn,#wfx_hist_box .bt .note-foldbtn{margin:0 0 0 2px}
#fbsx_hist_box .note,#wfx_hist_box .note{font-size:12px;line-height:1.45}
#fbsl_row,#wfl_row{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap;margin:6px 0 8px}
#fbsl_chips,#wfl_chips{display:flex;gap:6px;flex-wrap:wrap}
#fbsl_legend,#wfl_legend{margin:0 0 0 auto;font-size:11.5px}
.oz-pill.sm{font-size:11px;padding:3px 8px}
/* Чат 106, раунд 2b (Vladi): чипы линий и легенда статусов — ещё мельче, чтобы уместиться в одну строку */
#fbsl_legend,#wfl_legend{font-size:11px}
.oz-pill.sm{font-size:10.5px;padding:2px 7px}
/* Чат 106, раунд 3 (выбор Vladi — вариант А превью): тарифная лента под корзинами «Скорости отгрузки».
   ⛔ не называть сетку .seg — это глобальный сегментный переключатель */
.fx-tstrip{margin:12px 0 0}
.fx-tstrip .tcap{font-size:11.5px;color:var(--oz-dim,#8b95a1);margin-bottom:5px;display:flex;justify-content:space-between;gap:8px}
.fx-tstrip .sc{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:2px}
.fx-tstrip .sc span{font-size:11px;line-height:1.25;padding:5px 6px;border-radius:6px;text-align:center;background:var(--oz-sec,#f2f5f8);color:#66758c}
.fx-tstrip .sc span b{display:block;font-size:12.5px;color:var(--ink,#001a34);font-weight:700}
.fx-tstrip .sc span.g{background:#eefaf3;color:#0b7a4b}.fx-tstrip .sc span.g b{color:#0b7a4b}
.fx-tstrip .sc span.w{background:#fff7e6;color:#b45309}.fx-tstrip .sc span.w b{color:#b45309}
.fx-tstrip .sc span.r{background:#fdf0f0;color:#b42318}.fx-tstrip .sc span.r b{color:#b42318}
/* Чат 109 (WB, «Тарифная лента 2.0»): вторая зона скидки — светло-зелёная; сетка WB под свои подписи */
.fx-tstrip .sc span.g2{background:#e4f6ec;color:#3f9e6e}.fx-tstrip .sc span.g2 b{color:#2b7d54}
[data-tab="wb_fbs"] .fx-tstrip .sc{grid-template-columns:1fr 1.1fr 1fr 1.35fr}
/* Чат 109, раунд 4 (Vladi): «Остаток всего»·WB — значение на строке заголовка (вместо текста
   снимка, вид как у бывшего .big), справка под ⓘ; легенда графика — все 8 статусов одной строкой */
/* раунд 6 (Vladi): то же оформление у Ozon-двойника (ozsf2_*) */
[data-tab="wb_fbs"] .ozs-total .per,[data-tab="ozon_fbs"] .ozs-total .per{justify-content:space-between}
[data-tab="wb_fbs"] .ozs-total .per span.wf2-val,[data-tab="ozon_fbs"] .ozs-total .per span.wf2-val{display:flex;align-items:center;gap:8px;margin-left:auto;line-height:1}
/* ⚔️ раунд 5: общее правило .ozs-total .per span (11px, серое) перекрашивало ВЛОЖЕННЫЙ span
   значения — сам текст красим id-селектором (специфичность выше), чип дельты не трогаем */
[data-tab="wb_fbs"] .ozs-total .per #wf2_all,[data-tab="ozon_fbs"] .ozs-total .per #ozsf2_all{font-size:22px;font-weight:800;letter-spacing:-.5px;color:var(--accent-ink);line-height:1}
/* Чат 110 (Vladi): чип дельты плитки «Остаток всего» — цвета как в разделе «Остатки»
   (то же общее правило .per span серило текст чипа — возвращаем цвета .ovz-chip) */
[data-tab="wb_fbs"] .ozs-total .per .ovz-chip.up,[data-tab="ozon_fbs"] .ozs-total .per .ovz-chip.up{color:#0f9d58}
[data-tab="wb_fbs"] .ozs-total .per .ovz-chip.dn,[data-tab="ozon_fbs"] .ozs-total .per .ovz-chip.dn{color:#d93025}
[data-tab="wb_fbs"] .ozs-total .per .ovz-chip.fl,[data-tab="ozon_fbs"] .ozs-total .per .ovz-chip.fl{color:#8b95a1}
#wfl_legend{font-size:10.5px}
#wfl_legend span{margin-right:6px}
/* раунд 5 (Vladi): график тянется до низа карточки — ось дат на уровне низа бокса скорости */
#wf_life_card{display:flex;flex-direction:column}
#wfl_wrap{flex:1;min-height:250px}
.fx-tidx{margin-top:10px;font-size:11.5px;color:#66758c;line-height:1.45;border-top:1px dashed var(--oz-line,#e7ebef);padding-top:8px}
.fx-tidx b{color:var(--ink,#001a34);font-weight:600}
.fx-tidx .pill{font-size:10.5px;padding:1px 7px;min-width:0;vertical-align:middle}
.fx-tfact{margin-top:8px;font-size:11.5px;color:#66758c;line-height:1.45}
.fx-tfact b{color:var(--ink,#001a34);font-weight:600}
/* Чат 106, раунд 4 (Vladi): фильтры «Сводки за период» — слева, сразу после заголовка, и 1:1 как ячейки
   строки управления (.ci-strip: 33px, скругление 9, белый фон, шеврон от скина — без background-shorthand);
   легенда графика перед чипами; бокс скорости 340px */
#fbsx_ctl,#wfx_ctl,#wf_st_ctl,#fbsw_st_ctl{margin-left:0;gap:10px}
#fbsx_ctl select.u-edit,#fbsx_ctl .rnp-period-btn,#wfx_ctl select.u-edit,#wfx_ctl .rnp-period-btn,#wf_st_ctl select.u-edit,#wf_st_ctl .rnp-period-btn,#fbsw_st_ctl select.u-edit,#fbsw_st_ctl .rnp-period-btn{height:33px;padding:7px 12px;font-size:12.5px;background-color:var(--card);border:1px solid var(--oz-line,#e7ebef);border-radius:9px;color:var(--ink)}
#fbsx_ctl select.u-edit,#wfx_ctl select.u-edit,#wf_st_ctl select.u-edit,#fbsw_st_ctl select.u-edit{max-width:190px;padding-right:26px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}
#fbsx_ctl .rnp-period-btn:hover,#fbsx_ctl select.u-edit:hover,#wfx_ctl .rnp-period-btn:hover,#wfx_ctl select.u-edit:hover,#wf_st_ctl .rnp-period-btn:hover,#wf_st_ctl select.u-edit:hover,#fbsw_st_ctl .rnp-period-btn:hover,#fbsw_st_ctl select.u-edit:hover{background-color:#f5f8fa;border-color:#d7dee6}
#fbsx_ctl .rnp-period,#wfx_ctl .rnp-period,#wf_st_ctl .rnp-period,#fbsw_st_ctl .rnp-period{margin:0}
#fbsx_ctl .rnp-cal-pop,#wfx_ctl .rnp-cal-pop,#wf_st_ctl .rnp-cal-pop,#fbsw_st_ctl .rnp-cal-pop{left:0;right:auto}
#fbsl_legend,#wfl_legend{margin:0 4px 0 0}
#fbsl_chips,#wfl_chips{margin-left:0}
.fx-two.fx-two-wide{grid-template-columns:minmax(0,1fr) 340px}
/* Чат 106, раунд 5 (Vladi): легенда+чипы на строке названия графика по правому краю; бокс скорости 370px;
   подпись тарифной ленты слева */
#fbs_life_card .bt,#wf_life_card .bt{flex-wrap:wrap;gap:6px 10px}
#fbsl_row,#wfl_row{margin:0 0 0 auto;justify-content:flex-end}
.fx-two.fx-two-wide{grid-template-columns:minmax(0,1fr) 370px}
.fx-tstrip .tcap{justify-content:flex-start}
/* Чат 106, раунд 7 (Vladi, вариант А): плитки «Ждут в ПВЗ» и «Выкуплено» в конвейере — всегда в тоне статуса;
   «самая массовая» у них — тон глубже вместо синего (.hot). Заголовок графика: текст + ⓘ одним флекс-элементом */
.fx-step.pvz{background:#e6faf7}
.fx-step.done{background:#eafaf1}
.fx-step.pvz.hot{background:#cdf4ed}
.fx-step.done.hot{background:#d3f0de}
#fbs_life_card .bt .bt-t,#wf_life_card .bt .bt-t{display:inline-flex;align-items:center;gap:0}
/* Чат 106, раунд 8 (Vladi): строка статусов конвейера — в рамке плитки «Остаток всего, шт»
   (замер с прода: border 1px #bcd4ff, кольцо 2px rgba(0,91,255,.08), radius 12, белый фон) */
.fx-flowbox{background:var(--card,#fff);border:1px solid #bcd4ff;box-shadow:0 0 0 2px rgba(0,91,255,.08);border-radius:12px;padding:5px 6px;margin:12px 0 12px}   /* раунд 8b: отступ вдвое меньше; раунд 9: сверху как снизу */
.fx-flowbox .fx-flow{margin:0}
/* ===== Чат 111 (выбор Vladi по превью): меню — «Избранное» + секции-аккордеон ===== */
/* заголовок секции — кнопка: шеврон + название + точка активности + счётчик пунктов */
.nav-group.nav-acc{display:flex;align-items:center;gap:7px;cursor:pointer;user-select:none;border-radius:9px;margin-top:6px;padding:9px 10px}   /* свой паддинг: базовый (14px сверху) делал ховер-пилюлю кривой */
.nav-group.nav-acc:hover{background:#f1f5f9}
.acc-chev{flex:none;width:13px;height:13px}
.acc-chev svg{width:13px;height:13px;display:block;transition:transform .15s}
.nav-sec.open>.nav-group .acc-chev svg{transform:rotate(90deg)}
.nav-sec:not(.open)>.nav-sec-body{display:none}
.acc-cnt{margin-left:auto;flex:none;font-size:10.5px;font-weight:600;color:#9aa6b2;background:#f1f4f8;border-radius:6px;padding:1px 7px;font-variant-numeric:tabular-nums}
.nav-sec.open>.nav-group .acc-cnt{visibility:hidden}   /* место держит — заголовки не прыгают */
/* точка «активная вкладка внутри» — только на свёрнутой секции; цвет — канал шапки.
   Чат 113 (Vladi): точка — сразу ПОСЛЕ названия секции, как у пунктов; счётчик — у правого края */
.acc-act{display:none;flex:none;width:7px;height:7px;border-radius:50%;background:#7c3aed;margin-left:2px}
.acc-act+.acc-cnt{margin-left:auto}
.nav-sec.has-act:not(.open)>.nav-group .acc-act{display:inline-block}
.sidebar.ch-ozon .acc-act{background:#005bff}
/* группа «Скоро» — приглушена: это заглушки */
.nav-sec[data-sec="soon"] .nav-group.nav-acc{color:#b08652}
.nav-sec[data-sec="soon"] .nav-item{color:#9aa6b2}
/* звёздочка избранного: появляется при наведении на пункт (закреплённая — золотая) */
.nav-star{display:none;flex:none;border:0;background:none;padding:0 2px;margin-left:6px;font-size:13px;line-height:1;color:#c8d0da;cursor:pointer}
.nav-star.lone{margin-left:auto}   /* у пункта без точки/бейджа — прижать вправо */
.nav-item:hover .nav-star{display:inline-block}
.nav-star:hover,.nav-star.on{color:#f2b01e}
/* блок «Избранное» сверху: заголовок без шеврона, подсказка при пустом списке */
.nav-fav .nav-group{padding:10px 12px 5px}
.fav-hint{font-size:11px;color:#9aa6b2;line-height:1.45;padding:2px 12px 6px}
/* Чат 111.2 (Vladi): точка канала — сразу ПОСЛЕ названия пункта, не у правого края;
   бейджи («нов.»/«админ») остаются справа, звезда без бейджа прижимается вправо (.lone в JS) */
.nav-item .nav-dot.chn{margin-left:2px}
.nav-dot.chn + .nav-badge{margin-left:auto}

/* ===================== Чат 118: режим «Сравнение» + раздел «Цены» (cmpp_) ===================== */
/* Кнопка режима — ВО ВСЮ ШИРИНУ под сегментом WB/Ozon (заказ Vladi). Палитра режима —
   общая бирюза дашборда: карточку красит .ch-cmp на сайдбаре, body[data-ch] у cmp-вкладок
   пустой (CH_ZONE без записи — осознанно, режим сквозной). */
.sb-cmp{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:6px;width:100%;
  border:0;border-radius:8px;padding:6px 0;font:inherit;font-size:12.5px;font-weight:600;
  color:#64748b;background:rgba(255,255,255,.72);cursor:pointer}
.sb-cmp.on{background:#fff;box-shadow:0 1px 2px rgba(0,26,52,.08);color:var(--accent-ink,#0b7c7b)}
.sdot-cmp{background:#0ea5a4}
/* карточка канала в режиме «Сравнение» — бирюзовый тинт (правила ПОСЛЕ .ch-ozon, чтобы победить) */
.sidebar.ch-cmp .side-banner{background:#e6f6f5}
.sidebar.ch-cmp .sb-ch{color:#0b7c7b}

/* --- раздел «Цены»: строка управления --- */
.cmpp-strip{gap:10px}
.cmpp-cell{background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px 11px;
  font:inherit;font-size:13px;color:var(--ink)}
.cmpp-q{width:190px}
.cmpp-q::placeholder{color:#9aa6b2}
.cmpp-q:focus{outline:none;border-color:var(--accent)}
.cmpp-sp{flex:1}
.cmpp-btn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 13px;
  font:inherit;font-size:13px;color:var(--ink);cursor:pointer}
.cmpp-btn:hover{border-color:#c3cdd9}
.cmpp-btn-acc{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.cmpp-btn-acc:hover{border-color:var(--accent);filter:brightness(1.05)}
.cmpp-ch{align-self:center}

/* --- таблица цен: группы колонок в тинтах каналов --- */
.cmpp-card{overflow:hidden}
.cmpp-wrap{overflow-x:auto}
.cmpp-tbl{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
.cmpp-tbl th,.cmpp-tbl td{padding:9px 12px;font-size:13px;white-space:nowrap}
.cmpp-gr th{font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:800;padding:8px 12px}
.cmpp-gwb{background:#f3e8ff;color:#5b21b6}
.cmpp-goz{background:#eaf1ff;color:#0047cc}
.cmpp-gd{background:#f1f5f9;color:#64748b}
.cmpp-sub th{font-size:11.5px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--line);
  text-align:right;background:#fafbfd}
.cmpp-sub th:first-child{text-align:left}
.cmpp-tbl td{border-bottom:1px solid #eef2f7;text-align:right}
.cmpp-tbl td:first-child{text-align:left}
.cmpp-sep{border-left:1px solid var(--line)}
tr.cmpp-art{cursor:pointer;background:#fff}
tr.cmpp-art:hover{background:#f8fafc}
.cmpp-chev{display:inline-block;width:14px;color:#94a3b8;transition:transform .15s;font-size:11px}
tr.cmpp-art.open .cmpp-chev{transform:rotate(90deg)}
tr.cmpp-size td{background:#fbfcfe;color:#334155}
tr.cmpp-size td:first-child{padding-left:38px}
.cmpp-sz{color:var(--ink);font-weight:600}
.cmpp-lbl{font-size:11px;color:#94a3b8;margin-left:6px;font-weight:400}
.cmpp-pct{font-size:12px;color:var(--muted)}
.cmpp-buy{font-weight:700}
.cmpp-na{color:#b6c0cc}
.cmpp-chip{display:inline-block;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:20px;
  vertical-align:1px;white-space:nowrap}
.cmpp-chip-warn{background:#fff4e5;color:#b45309;border:1px solid #fde3b3}
.cmpp-chip-mut{background:#eef1f5;color:#94a3b8}
.cmpp-doz{color:#0047cc}   /* покупателю дешевле на Ozon */
.cmpp-dwb{color:#5b21b6}   /* покупателю дешевле на WB */
.cmpp-hot{background:#fef2f2;color:#b42318;font-weight:700;border-radius:6px;padding:2px 7px}
.cmpp-empty{color:#94a3b8;text-align:center!important;padding:22px 12px!important}

/* ===================== Чат 118: «Конкуренты»·WB — полки «Смотрите также» (wbrv_) ===================== */
/* Палитра приходит из body[data-ch="wb"] (CH_ZONE competitors="wb") — тут только геометрия и роли. */
.wbrv-strip{gap:10px}
.wbrv-cell{background:#fff;border:1px solid var(--line);border-radius:9px;padding:6px 11px;
  font-size:13px;display:inline-flex;align-items:center;gap:7px}
.wbrv-cell select{border:0;font:inherit;background:transparent;color:var(--ink);max-width:230px}
.wbrv-cell select:focus{outline:none}
.wbrv-sp{flex:1}
.wbrv-btn{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 13px;
  font:inherit;font-size:13px;color:var(--ink);cursor:pointer}
.wbrv-btn:hover{border-color:#c3cdd9}
.wbrv-btn-acc{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.wbrv-btn-acc:disabled{opacity:.65;cursor:default}
.wbrv-card{margin-bottom:16px;overflow:hidden}
.wbrv-title{font-size:13px;font-weight:700;padding:10px 12px 0}
.wbrv-wrap{overflow-x:auto}
.wbrv-tbl{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
.wbrv-tbl th,.wbrv-tbl td{padding:8px 11px;font-size:13px;white-space:nowrap;border-bottom:1px solid #eef2f7}
.wbrv-tbl thead th{font-size:11.5px;font-weight:600;color:var(--muted);background:#fafbfd;text-align:right}
.wbrv-tbl thead th:first-child{text-align:left}
.wbrv-tbl td{text-align:right}
.wbrv-tbl td:first-child{text-align:left}
.wbrv-sumtbl td:first-child{font-weight:600}
.wbrv-last{background:var(--accent-tint2,#f7f4ff)}
tr.wbrv-all td{background:#fafbfd;font-weight:700}
/* Чат 119 (правка Vladi, вариант Б превью): «Средняя позиция за замер» — серым,
   ТЕМНЕЕ подложки SKU ALL (#fafbfd), цифры почти чёрным; лиловый остался секциям */
tr.wbrv-avg td{background:#e2e7ee;font-weight:700;color:#2e3945}
.wbrv-up{color:#16a34a}.wbrv-dn{color:#dc2626}.wbrv-nul{color:#94a3b8}
.wbrv-pup{background:#eaf7ee;border-radius:6px;padding:1px 7px;color:#15803d}
.wbrv-pdn{background:#fdeeee;border-radius:6px;padding:1px 7px;color:#b42318}
.wbrv-na{color:#b6c0cc}
.wbrv-rival a{color:var(--ink);text-decoration:none;font-weight:600}
.wbrv-rival a:hover{color:var(--accent-ink);text-decoration:underline}
.wbrv-rival small{display:block;color:#94a3b8;font-size:11px;font-weight:400;max-width:260px;
  overflow:hidden;text-overflow:ellipsis}
.wbrv-star{color:#d3dae3;cursor:pointer;font-size:15px}
.wbrv-star.on{color:#f59e0b}
tr.wbrv-prio td{background:#fffdf3}
tr.wbrv-prio td.wbrv-last{background:#fdf6e0}
.wbrv-del{color:#c9d2dc;cursor:pointer;font-size:13px;padding:2px 5px}
.wbrv-del:hover{color:#b42318}
.wbrv-empty{color:#94a3b8;text-align:center!important;padding:22px 12px!important}
.wbrv-foot{font-size:11.5px;color:#94a3b8;padding:10px 12px;background:#fafbfd;line-height:1.5;white-space:normal}

/* Чат 118 (правка Vladi): сводка + конкуренты «Конкурентов»·WB — ОДНА таблица (даты в один
   столбец); строки-заголовки секций внутри таблицы; ячейка «Наш артикул» выровнена */
.wbrv-cell{padding:5px 11px;line-height:1}
.wbrv-cell select{margin:0;padding:3px 2px;height:auto;font-size:13px}
tr.wbrv-sec td{background:var(--accent-tint);color:var(--accent-ink);font-weight:700;
  font-size:12.5px;text-align:left;padding:9px 12px}
tr.wbrv-sumrow td:first-child{font-weight:600}
.wbrv-rival a{font-variant-numeric:tabular-nums}

/* Чат 118 (ещё две правки Vladi): ячейка «Наш артикул» — подпись и выпадашка СТРОГО в одну
   строку; ID конкурентов — по ЛЕВОМУ краю, сразу после звёздочек (звёздная колонка узкая).
   ⚔️ Грабля: общий стиль .ci-strip select делает селект самостоятельной «ячейкой кабинета»
   (height 33px, рамка, фон) — внутри нашей обёртки получалась двойная коробка и текст
   селекта визуально уезжал от подписи. Здесь селект «раздевается» селектором БОЛЬШЕЙ
   специфичности, и обоим текстам даётся одна строка 33px (глифы по одному центру).
   Ровнять колонки через td:nth-child нельзя — у строк сводки colspan=3 сдвинул бы даты. */
.ci-bar.ci-strip .wbrv-cell{display:inline-flex;align-items:center;gap:7px;
  padding:0 11px;height:33px;min-height:0;line-height:33px;font-size:13px}
.ci-bar.ci-strip .wbrv-cell select{height:33px;line-height:33px;border:0;margin:0;
  background-color:transparent;box-shadow:none;padding:0 22px 0 0;font-size:13px}
.ci-bar.ci-strip .wbrv-cell select:hover,.ci-bar.ci-strip .wbrv-cell select:focus{border:0;outline:none}
.wbrv-tbl td.wbrv-rival{text-align:left}
.wbrv-tbl thead th:first-child{width:34px}   /* только th: у строк сводки первый td с colspan */

/* Чат 118 (три правки Vladi): стрелка у выпадашки «Наш артикул» (общая svg-стрелка .ci-strip
   select живёт в @supports и прижата к краю — рисуем свою, у самого текста); чекбоксы
   массового удаления + красная кнопка; комментарии на ячейках дат (механика заметок РНП:
   точка-маркер в углу, поповер с лентой, удаление только в день создания) */
.ci-bar.ci-strip .wbrv-cell select{padding:0 20px 0 0;
  background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2367717d' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 2px center}
.wbrv-btn-danger{border-color:#f1b8b8;color:#b42318}
.wbrv-btn-danger:hover{background:#fdf1f1;border-color:#e39a9a}
/* Чат 121: «🛒 Снять витрину» — янтарная плашка (выбор Vladi, превью, вариант А):
   тёплый сигнал «платный трафик», спокойнее акцентной «Снять артикул» */
.wbrv-btn-vit{background:#fff7e6;border-color:#f0d59a;color:#92600a;font-weight:600}
.wbrv-btn-vit:hover{background:#fdefd2;border-color:#e5c37e}
.wbrv-btn-vit:disabled{opacity:.65;cursor:default}
/* Чат 121 (правка Vladi): сортировка «Поиска» — своя вторая строка у левого края,
   НЕ липкая (две липкие строки перекрывались бы при скролле) */
.wbsp-sort-row{display:flex;align-items:center;gap:10px;margin:0 0 10px;
  padding:0 var(--head-pad,0px)}
/* Чат 187 (план «Конкурентов», этап 1): строка-предупреждение обоих видов — что и с какого
   числа не снимается; цвета жёлтой плашки «Монитора данных» */
.wbcm-warn{display:flex;align-items:flex-start;gap:10px;margin:0 var(--head-pad,0px) 10px;
  padding:10px 14px;border:1px solid #fcd9a8;border-radius:12px;background:#fff7ed;
  color:#5c3b00;font-size:13px;line-height:1.5}
.wbcm-warn[hidden]{display:none}
.wbcm-warn-ico{flex:none;font-size:15px;line-height:1.3;color:#c77700}
.wbcm-warn b{color:#7a4a00}
.wbrv-chk{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;vertical-align:middle}
td.wbrv-hasnote{position:relative;cursor:pointer}
td.wbrv-hasnote::after{content:"";position:absolute;top:3px;right:3px;width:6px;height:6px;
  border-radius:50%;background:#f59e0b}
#wbrv_tbl tr[data-nm] td[data-run]{cursor:pointer}
.wbrv-pop{position:absolute;z-index:120;width:320px;background:var(--card);border:1px solid var(--line);
  border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.18);padding:12px;font-size:13px}
.wbrv-pop-head{font-weight:700;font-size:12.5px;margin-bottom:8px;color:var(--accent-ink)}
.wbrv-pop-note{display:flex;justify-content:space-between;gap:8px;background:#f8fafc;border-radius:8px;
  padding:7px 9px;margin-bottom:6px;line-height:1.4}
.wbrv-pop-note small{display:block;color:#94a3b8;font-size:11px;margin-top:2px}
.wbrv-pop-del{border:0;background:transparent;cursor:pointer;font-size:13px;opacity:.55;flex:none}
.wbrv-pop-del:hover{opacity:1}
.wbrv-pop-lock{opacity:.45;flex:none;font-size:12px}
.wbrv-pop-ta{width:100%;min-height:56px;border:1px solid var(--line);border-radius:8px;padding:7px 9px;
  font:inherit;font-size:13px;resize:vertical;margin:2px 0 8px}
.wbrv-pop-ta:focus{outline:none;border-color:var(--accent)}
.wbrv-pop-btns{display:flex;gap:8px;justify-content:flex-end}
.wbrv-pop-btns button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 12px;
  font:inherit;font-size:13px;cursor:pointer}
.wbrv-pop-save{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff;font-weight:600}
/* Чат 119: «🗑 Удалить замер» в поповере даты — жёсткое удаление одного замера
   выбранного артикула (sql/230: истории артикулов изолированы) */
.wbrv-pop-sp{flex:1}
.wbrv-pop-delrun{border-color:#f1b8b8!important;color:#b42318}
.wbrv-pop-delrun:hover{background:#fdf1f1;border-color:#e39a9a!important}

/* Чат 119 (заказ Vladi): выпадашка «Наш артикул» С ПОИСКОМ — кнопка в ячейке кабинета,
   поповер со строкой поиска (лупа) и списком; поповер живёт на body (как .wbrv-pop),
   чтобы его не резал возможный overflow полосы управления */
.wbrv-cb-btn{border:0;background:transparent;font:inherit;font-size:13px;color:var(--ink);
  cursor:pointer;display:inline-flex;align-items:center;gap:7px;padding:0;height:33px}
.wbrv-cb-btn b{font-weight:600}
/* Чат 122 (заказ Vladi): имя артикула в ячейке — ссылка в его карточку WB
   (вид как у ссылок конкурентов в таблице); без href — обычный текст */
.wbrv-our-link{color:var(--ink);text-decoration:none}
.wbrv-our-link b{font-weight:600}
.wbrv-our-link[href]:hover{color:var(--accent-ink);text-decoration:underline}
/* Чат 122 (выбор Vladi — концепция А превью): чип с ID карточки после имени —
   клик копирует ID в буфер; .ok — зелёная вспышка «скопировано» */
.wbrv-id-chip{background:#f1f4f8;border:1px solid var(--line);border-radius:7px;
  padding:2px 8px;font-size:12px;line-height:1.3;color:#67717d;cursor:pointer;
  display:inline-flex;align-items:center;gap:5px;font-variant-numeric:tabular-nums;
  transition:background .12s,color .12s,border-color .12s}
.wbrv-id-chip:hover{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-ink)}
.wbrv-id-chip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.wbrv-id-chip.ok{color:#16a34a;border-color:#16a34a;background:#f0fdf4}
.wbrv-cb-pop{position:absolute;z-index:130;width:280px;background:var(--card);
  border:1px solid var(--line);border-radius:11px;box-shadow:0 12px 32px rgba(15,23,42,.16);padding:8px}
.wbrv-cb-find{display:flex;align-items:center;gap:7px;border:1px solid var(--line);
  border-radius:8px;padding:6px 9px;margin-bottom:6px}
.wbrv-cb-find:focus-within{border-color:var(--accent)}
.wbrv-cb-find input{border:0;outline:none;font:inherit;font-size:13px;width:100%;background:transparent}
.wbrv-cb-list{max-height:236px;overflow:auto}
.wbrv-cb-it{display:flex;justify-content:space-between;gap:10px;padding:7px 9px;border-radius:8px;
  cursor:pointer;font-size:13px}
.wbrv-cb-it small{color:#94a3b8}
.wbrv-cb-it:hover,.wbrv-cb-it.hot{background:var(--accent-tint)}
.wbrv-cb-it.cur{font-weight:700;color:var(--accent-ink)}
.wbrv-cb-empty{color:#94a3b8;font-size:12.5px;text-align:center;padding:12px 0 8px}

/* Чат 119 (концепция А): «Конкуренты» = виды «Полки | Поиск» (полоса #wbcm_views) +
   вид «Поиск» (wbsp_): строки = запросы со статусом SEO (чипы из файла Vladi),
   таблица переиспользует классы полок (wbrv-*) — вид одинаковый.
   ⚔️ Общая ширина th:nth-child(2)=30px заточена под ★-колонку полок — у поиска
   вторая колонка «Запрос», ширину возвращаем точечным #wbsp_tbl-селектором. */
/* Правка Vladi: сегмент «Полки | Поиск» переехал в СТРОКУ ЗАГОЛОВКА (.oz-head) —
   выравниваем по центру строки; старая верхняя полоса .wbcm-views ушла */
.wbcm-seg{align-self:center;margin-left:8px;flex:none}
#wbsp_tbl thead th:nth-child(2){width:auto;min-width:220px}
.wbsp-chk{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;vertical-align:middle}
td.wbsp-q{font-weight:600}
td.wbsp-st{cursor:pointer;text-align:left}
td.wbsp-st:hover{background:var(--accent-tint-h,#efe3ff)}
.wbsp-chip{display:inline-block;font-size:11px;font-weight:600;border-radius:6px;padding:1px 8px}
.wbsp-c-act{background:#eaf7ee;color:#15803d}
.wbsp-c-cand{background:#fff4e5;color:#b45309}
.wbsp-c-test{background:#fef9c3;color:#a16207}
.wbsp-c-off{background:#f1f4f8;color:#94a3b8}
tr.wbsp-dead td{color:#a7b0bb}
tr.wbsp-dead td.wbsp-q{text-decoration:line-through;font-weight:400}
.wbsp-radios{display:flex;flex-wrap:wrap;gap:6px 12px;margin-bottom:8px}
.wbsp-radio{display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-size:12.5px}
/* Чат 119 (sql/233): главная цифра ячейки — ВИТРИНА (через прокси), органика — мелкой
   серой припиской «орг.N»; обе позиции целиком — в подсказке ховером */
.wbsp-org{color:#9aa4b0;font-size:10.5px;font-weight:400}

/* Чат 118 (правка Vladi): чекбоксы — ПЕРВОЙ колонкой; комментарии — В ЦЕЛОМ ПО ДНЮ:
   ячейки дат в строке-заголовке «Конкуренты…» (💬N + точка-маркер, клик — поповер) */
tr.wbrv-noterow td.wbrv-daynote{text-align:right;cursor:pointer;font-size:12px;padding:9px 11px}
tr.wbrv-noterow td.wbrv-daynote:hover{background:var(--accent-tint-h,#e9d5ff)}

/* Чат 118 (правка Vladi): ID карточек — сразу за чекбоксами. Служебные колонки (чекбокс, ★)
   фиксируются узкими, свободную ширину таблица отдаёт колонке ID и датам; текст ID у левого
   края своей колонки — дыры между чекбоксом и ID больше нет. Ширины только на thead th. */
.wbrv-tbl thead th:nth-child(2){width:30px}

/* Чат 118: пометка «(РК)» — на момент замера на наш артикул шла реклама В ПОЛКАХ
   (место показа «Рекомендации»; определяется по advert-api при каждом замере) */
.wbrv-rk{font-size:10.5px;font-weight:700;color:#b45309;white-space:nowrap;cursor:help}

/* ===== Чат 122 (превью, выбор Vladi: «теплокарта+спарклайн», сводка — вариант 1
   с белым фоном; SKU ALL без жирности, «Средняя позиция» серая жирная) =====
   Сначала внедрено «Полкам» (#wbrv_tbl); той же сессией по заказу Vladi раскатано
   и на «Поиск» (#wbsp_tbl) — селекторы парные, скоуп по id таблиц. */
/* даты двухэтажно в тёмной чернильной шапке; последний замер — цветом канала */
#wbrv_tbl thead th,#wbsp_tbl thead th{background:#26334d;color:#c7d2e2;border-bottom:0}
#wbrv_tbl thead th b,#wbsp_tbl thead th b{display:block;font-size:13px;font-weight:700;color:#fff;line-height:1.15}
#wbrv_tbl thead th span,#wbsp_tbl thead th span{display:block;font-size:11px;font-weight:400;line-height:1.2}
#wbrv_tbl thead th.wbrv-last,#wbsp_tbl thead th.wbrv-last{background:var(--accent)}
#wbrv_tbl thead th.wbrv-last b,#wbsp_tbl thead th.wbrv-last b{color:#fff}
#wbrv_tbl thead th.wbrv-last span,#wbsp_tbl thead th.wbrv-last span{color:#e9defc}
#wbrv_tbl thead th:first-child,#wbsp_tbl thead th:first-child{border-radius:9px 0 0 0}
#wbrv_tbl thead th:last-child,#wbsp_tbl thead th:last-child{border-radius:0 9px 0 0}
/* правки Vladi к сводке: SKU ALL / «Запросов в замере» — белая и НЕ жирная (подпись
   как у остальных строк), «Средняя позиция» — серая варианта 2 и жирная */
#wbrv_tbl tr.wbrv-all td,#wbsp_tbl tr.wbrv-all td{background:#fff;font-weight:400}
#wbrv_tbl tr.wbrv-all td:first-child,#wbsp_tbl tr.wbrv-all td:first-child{font-weight:600}
#wbrv_tbl tr.wbrv-avg td,#wbsp_tbl tr.wbrv-avg td{background:#eceff4;font-weight:700;color:#2e3945}
/* Чат 188 (превью, выбор Vladi — вариант 2): в «Полках» SKU ALL — светло-серая, светлее
   «Средней позиции»; Чат 189 (слово Vladi): «Запросов в замере» в «Поиске» — так же */
#wbrv_tbl tr.wbrv-all td,#wbsp_tbl tr.wbrv-all td{background:#f5f7fa}
/* Чат 189 (слово Vladi, правило про всплывающие окна): памятка «i» обоих видов не уходит за
   низ экрана — высоту по месту ставит wb_rivals.js / wb_serp.js, текст прокручивается внутри */
#wbrv_intro,#wbsp_intro{overflow-y:auto;overscroll-behavior:contain}
/* сводка закрывается толстой чертой канала + воздушный зазор перед строками */
#wbrv_tbl tr.wbrv-close td,#wbsp_tbl tr.wbrv-close td{padding:0;height:0;border-bottom:3px solid var(--accent)}
#wbrv_tbl tr.wbrv-gap td,#wbsp_tbl tr.wbrv-gap td{padding:0;height:12px;border-bottom:0;background:#fff}
/* теплокарта позиций: цвет = бакет ТОПа (id в селекторе бьёт подложку приоритетных
   строк и лиловую .wbrv-last) */
#wbrv_tbl td.wbrv-hm[data-b="6"],#wbsp_tbl td.wbrv-hm[data-b="6"]{background:#bbf7d0}
#wbrv_tbl td.wbrv-hm[data-b="10"],#wbsp_tbl td.wbrv-hm[data-b="10"]{background:#d9f8e5}
#wbrv_tbl td.wbrv-hm[data-b="30"],#wbsp_tbl td.wbrv-hm[data-b="30"]{background:#eefad2}
#wbrv_tbl td.wbrv-hm[data-b="50"],#wbsp_tbl td.wbrv-hm[data-b="50"]{background:#fdf6c8}
#wbrv_tbl td.wbrv-hm[data-b="100"],#wbsp_tbl td.wbrv-hm[data-b="100"]{background:#ffe9d4}
#wbrv_tbl td.wbrv-hm[data-b="300"],#wbsp_tbl td.wbrv-hm[data-b="300"]{background:#fee2e2}
#wbrv_tbl td.wbrv-hm[data-b="far"],#wbsp_tbl td.wbrv-hm[data-b="far"]{background:#f1f5f9;color:#94a3b8}
/* колонка «динамика» — спарклайн истории строки */
#wbrv_tbl td.wbrv-spk,#wbsp_tbl td.wbrv-spk{padding:4px 8px}
#wbrv_tbl td.wbrv-spk svg,#wbsp_tbl td.wbrv-spk svg{display:block;margin:0 auto}
/* Чат 122 (правка Vladi): даты, Δ и числовые колонки — ПО ЦЕНТРУ. ⚔️ nth-child для
   колонок нельзя (colspan строк сводки сдвигает счёт) — центрируем всё и точечно
   возвращаем лево подписям, чекбоксам, ID и запросу */
#wbrv_tbl td,#wbrv_tbl thead th,#wbsp_tbl td,#wbsp_tbl thead th{text-align:center}
#wbrv_tbl td:first-child,#wbrv_tbl thead th:first-child,#wbrv_tbl td.wbrv-rival,
#wbsp_tbl td:first-child,#wbsp_tbl thead th:first-child,#wbsp_tbl td.wbsp-q{text-align:left}

/* Чат 122 (выбор Vladi — концепция А превью «слияние кнопок»): кнопки-меню
   «＋ Конкуренты ▾» и «⚙ Расписание ▾» — поповер прямо под кнопкой (строка липкая,
   z выше липкой шапки дат) */
.wbrv-dd{position:relative;display:inline-flex}
.wbrv-dd>.wbrv-btn{display:inline-flex;align-items:center;gap:6px}
.wbrv-dd>.wbrv-btn small{color:#67717d;font-weight:400}
.wbrv-dd-menu{position:absolute;left:0;top:calc(100% + 6px);z-index:140;min-width:264px;
  background:var(--card);border:1px solid var(--line);border-radius:11px;
  box-shadow:0 12px 32px rgba(15,23,42,.16);padding:6px}
.wbrv-mi{display:flex;gap:9px;align-items:baseline;padding:8px 10px;border-radius:8px;
  cursor:pointer;font-size:13px;white-space:nowrap}
.wbrv-mi:hover{background:var(--accent-tint)}
.wbrv-mi small{margin-left:auto;color:#94a3b8;font-size:11.5px;padding-left:14px}

/* ===== Чат 188 (превью, выбор Vladi — концепция Б «двухтон»): значки раздела «Конкуренты» —
   SVG из спрайта #wbcm-i-* (index.html, начало раздела) вместо смайликов. Контур цветом
   канала + светлая заливка (.wbcm-f); предупреждения янтарные, удаление красное, на залитой
   кнопке и в тёмной шапке дат — белые. Цвета идут переменными --wbi / --wbi-t: внутрь <use>
   проходят только наследуемые значения ===== */
.wbcm-ic{--wbi:var(--accent);--wbi-t:rgba(124,58,237,.17);width:16px;height:16px;flex:none;
  vertical-align:-3px;fill:none;stroke:var(--wbi);stroke-width:2.1;stroke-linecap:round;
  stroke-linejoin:round;pointer-events:none}
.wbcm-f{fill:var(--wbi-t)}
.wbcm-ic-warn,.wbcm-ic-pause,.wbrv-btn-vit .wbcm-ic{--wbi:#c77700;--wbi-t:rgba(245,158,11,.22)}
.wbcm-ic-trash,.wbcm-ic-x,.wbcm-ic-ban{--wbi:#d92d20;--wbi-t:rgba(239,68,68,.16)}
.wbrv-btn-acc .wbcm-ic,#wbrv_tbl thead .wbcm-ic,#wbsp_tbl thead .wbcm-ic{--wbi:#fff;--wbi-t:rgba(255,255,255,.28)}
#wbrv_tbl thead .wbcm-ic-warn,#wbsp_tbl thead .wbcm-ic-warn{--wbi:#fbbf24;--wbi-t:rgba(251,191,36,.25)}
/* звезда приоритета — цветом самой звезды (серая / золотая), включённая — залита */
.wbcm-ic-star{--wbi:currentColor;--wbi-t:none}
.wbrv-star.on .wbcm-ic-star{--wbi-t:currentColor}
/* Чат 194 (слово Vladi): ракета «в прокачке» рядом со звездой — как «Прокачка» в трекере SEO·Ozon, в цветах WB:
   выключена — серый контур, включена — белая ракета на заливке канала; кнопка отбора «В прокачке» — в строке отбора */
.wbrv-tbl td.wbrv-marks{white-space:nowrap;padding-left:7px;padding-right:5px}
.wbrv-boost{display:inline-flex;vertical-align:middle;margin-left:4px;padding:3px 4px;border-radius:7px;color:#c5ccd4;cursor:pointer;line-height:0;transition:background .12s,color .12s}
.wbrv-boost:hover{color:var(--accent);background:var(--accent-tint)}
.wbrv-boost.on{color:#fff;background:var(--accent)}
.wbrv-boost.on:hover{background:var(--accent-ink)}
.wbcm-ic-rocket{--wbi:currentColor;--wbi-t:none;width:15px;height:15px;vertical-align:0}
.wbrv-fchip-boost .wbcm-ic-rocket{width:13px;height:13px;vertical-align:-2px;margin-right:2px;color:var(--accent)}
.wbrv-fchip-boost.on .wbcm-ic-rocket{color:#fff}
.wbcm-seg .seg-btn:not(.active) .wbcm-ic{opacity:.6}
.wbrv-mi .wbcm-ic{align-self:center}
/* Чат 194 (слово Vladi): строка «Корзина» у конкурентов «в прокачке» в «Полках» — стрелка после ID раскрывает
   под конкурентом строку: под каждым днём ячейка, в которую текст вписывается и сразу виден (переносится по словам,
   столбцы не расширяет); по умолчанию строка свёрнута */
.wbrv-cart-tg{display:inline-flex;margin-left:6px;padding:2px;border-radius:5px;color:#a78bfa;cursor:pointer;vertical-align:-2px;transition:transform .12s}
.wbrv-cart-tg:hover{background:var(--accent-tint);color:var(--accent)}
.wbrv-cart-tg.on{transform:rotate(90deg);color:var(--accent)}
#wbrv_tbl tr.wbrv-cartrow td{background:#faf7ff;border-bottom:1px solid #e4d9fb;vertical-align:top;padding-top:5px;padding-bottom:6px}
#wbrv_tbl td.wbrv-cart-lbl{text-align:right;font-weight:600;font-size:12.5px;color:#5b21b6;padding-top:9px}
#wbrv_tbl td.wbrv-cart-lbl small{font-weight:400;font-size:11.5px;color:#94a3b8;margin-left:8px}
#wbrv_tbl td.wbrv-cart-cell{padding-left:3px;padding-right:3px;white-space:normal}
.wbrv-cart-in{min-height:24px;padding:3px 5px;border:1px dashed #d4c6f7;border-radius:6px;background:#fff;font-size:12.5px;
  line-height:1.3;text-align:center;white-space:pre-wrap;overflow-wrap:anywhere;outline:none;cursor:text;color:var(--ink)}
.wbrv-cart-in:hover{border-color:#a78bfa}
.wbrv-cart-in:focus{border-style:solid;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-tint)}
.wbrv-cart-in:empty::before{content:"+";color:#cbd5e1}
.wbrv-cart-in.saving{opacity:.55}
/* Чат 194 (слово Vladi, вид «Поиск»): меньше кнопок в строке управления.
   Сдвоенная кнопка = действие по выбранному артикулу + узкая стрелка, открывающая меню с тем же действием «по всем»;
   на кнопке расписания вместо текста — значок состояния (пауза / идёт), текст — строкой .wbrv-mh внутри меню;
   монета — платный съём витрины */
.wbrv-split>.wbrv-split-main{border-radius:9px 0 0 9px}
.wbrv-split>.wbrv-split-arr{border-radius:0 9px 9px 0;margin-left:-1px;padding:7px 8px}
.wbrv-split>.wbrv-btn-acc.wbrv-split-arr{border-left-color:rgba(255,255,255,.4)}
.wbrv-split>.wbrv-btn:disabled{opacity:.65;cursor:default}
.wbrv-dd-right{left:auto;right:0}
.wbrv-mi.wbrv-mi-off{opacity:.5;pointer-events:none}
.wbrv-mh{padding:6px 10px 8px;margin-bottom:4px;border-bottom:1px solid #eef2f7;font-size:12px;line-height:1.45;
  color:#64748b;white-space:normal;max-width:330px}
.wbsp-sched-st{display:inline-flex}
.wbcm-ic-play{--wbi:#0b8a52;--wbi-t:rgba(16,185,129,.2)}
.wbsp-sched-st.off .wbcm-ic{--wbi:#94a3b8;--wbi-t:rgba(148,163,184,.2)}
.wbrv-btn-vit .wbcm-ic-coin,.wbrv-mi .wbcm-ic-coin{--wbi:#c77700;--wbi-t:rgba(245,158,11,.22)}
#wbsp_tbl thead .wbcm-ic-coin{--wbi:#fbbf24;--wbi-t:rgba(251,191,36,.25)}

/* Чат 122 (заказ Vladi): строка ДАТ липнет под строкой управления при прокрутке.
   ⚔️ Грабля «Поставок» (Чат 70): overflow-x:auto обёртки и overflow:hidden карточки
   делают СВОЙ scroll-контейнер и глушат sticky — на широких экранах обёртки «Полок»
   открываются; на узких скролл возвращается, липкость там теряется осознанно.
   Высоту липкой строки пишут wb_rivals.js (--wbrv-bar-h) и wb_serp.js (--wbsp-bar-h) —
   строка переносится на 2–3 ряда, число не зашиваем. */
#wbrv_root .wbrv-card,#wbsp_root .wbrv-card{overflow:visible}
#wbrv_root .wbrv-wrap,#wbsp_root .wbrv-wrap{overflow-x:visible}
#wbrv_tbl thead th{position:sticky;top:var(--wbrv-bar-h,50px);z-index:6}
/* ===== Чат 193 (слово Vladi): «жирность» конкурентов в «Полках» — отзывы карточки за 30 дней, выкупы, цена =====
   Столбцы «Отзывов за 30 дн», «≈ выкупов в мес», «Цена, ₽» стоят сразу после ID; жирные (от 20 отзывов) — жирным
   шрифтом; цена: зелёная — в пределах ±30 % от нашей, серая — дешевле, жёлтая — дороже; small — доля от нашей.
   Кнопки отбора — в строке сортировки; блок жирных соседей по склейке — отдельной карточкой под таблицей */
#wbrv_tbl td.wbrv-fatv,.wbrv-sibtbl td.wbrv-fatv{font-weight:700;color:#1f2937}
#wbrv_tbl td.wbrv-rev,#wbrv_tbl td.wbrv-sal{color:#475569}
#wbrv_tbl td.wbrv-pr small,.wbrv-sibtbl td.wbrv-pr small{font-size:11px;font-weight:400;color:inherit;opacity:.8;margin-left:3px}
#wbrv_tbl td.wbrv-pr-near,.wbrv-sibtbl td.wbrv-pr-near{background:#e7f6ee;color:#0b6b42;font-weight:600}
#wbrv_tbl td.wbrv-pr-cheap,.wbrv-sibtbl td.wbrv-pr-cheap{background:#f1f5f9;color:#64748b}
#wbrv_tbl td.wbrv-pr-pricey,.wbrv-sibtbl td.wbrv-pr-pricey{background:#fdf3d7;color:#8a5a00}
#wbrv_tbl td.wbrv-pr-out{background:#f8fafc;color:#94a3b8;font-weight:400}
#wbrv_tbl td.wbrv-pr small.wbrv-out{display:block;margin:0;font-size:10.5px}
.wbsp-sort-row:has(#wbrv_flt){display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.wbrv-flt{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.wbrv-flt[hidden]{display:none}
.wbrv-fchip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 12px;font:inherit;font-size:12.5px;
  color:var(--ink);cursor:pointer;white-space:nowrap}
.wbrv-fchip b{font-weight:700;margin-left:2px}
.wbrv-fchip:hover{border-color:#c3cdd9}
.wbrv-fchip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.wbrv-fsum{font-size:12px;color:#64748b;margin-left:6px}
.wbrv-fsum b{color:var(--ink)}
.wbrv-sib summary{cursor:pointer;padding:11px 14px;font-size:13px;font-weight:600;list-style-position:inside}
.wbrv-sib summary b{color:var(--accent-ink)}
.wbrv-sib-hint{font-weight:400;color:#94a3b8;font-size:12px}
.wbrv-sibtbl thead th{background:#fafbfd;text-align:center}
.wbrv-sibtbl td{text-align:center}
.wbrv-sibtbl td.wbrv-sib-name{text-align:left;max-width:420px;overflow:hidden;text-overflow:ellipsis;color:#475569}
.wbrv-sib-add{padding:3px 10px;font-size:12px}
/* Чат 194 (слово Vladi): блок «Жирные вне набора — соседи по полкам» под блоком соседей по склейке —
   строка управления (порог числа полок, порядок), столбцы «В полках набора» и «Рекламой» */
.wbrv-nb-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:2px 14px 10px}
.wbrv-nb-lbl{font-size:12.5px;color:#64748b;margin-left:8px}
.wbrv-nb-lbl:first-child{margin-left:0}
.wbrv-nb .wbrv-sibtbl th,.wbrv-nb .wbrv-sibtbl td{padding:8px 8px}
.wbrv-nb .wbrv-sibtbl thead th{white-space:normal;line-height:1.25;vertical-align:bottom}
.wbrv-nb .wbrv-sibtbl td.wbrv-sib-name{max-width:0;width:36%}   /* название берёт остаток ширины и обрезается многоточием */
.wbrv-sibtbl td.wbrv-nbv b{font-weight:700;color:#1f2937}
.wbrv-sibtbl td.wbrv-nbv small{font-size:11px;color:#94a3b8;margin-left:2px}
.wbrv-sibtbl td.wbrv-nb-ad{color:#64748b}
.wbrv-sibtbl td.wbrv-nb-adall{color:#8a5a00}
.wbrv-sibtbl td.wbrv-nb-adall small{font-size:10.5px;font-weight:700;background:#fdf3d7;border-radius:4px;padding:1px 5px;margin-left:3px}
.wbrv-nb-tag{font-size:11px;color:#64748b;background:#f1f5f9;border-radius:4px;padding:1px 6px;margin-right:4px;white-space:nowrap}
.wbrv-nb-empty{padding:4px 14px 12px;font-size:13px;color:#94a3b8}
.wbrv-nb .wbrv-foot{padding:8px 14px 12px}

#wbsp_tbl thead th{position:sticky;top:var(--wbsp-bar-h,50px);z-index:6}
@media (max-width:1450px){
  #wbrv_root .wbrv-card,#wbsp_root .wbrv-card{overflow:hidden}
  #wbrv_root .wbrv-wrap,#wbsp_root .wbrv-wrap{overflow-x:auto}
  #wbrv_tbl thead th,#wbsp_tbl thead th{position:static}
}
/* Чат 194 (замечание Vladi «поехала вёрстка»): то же самое, когда таблица не помещается в карточку на ШИРОКОМ окне
   (10 замеров, длинные запросы; меню развёрнуто) — класс wbcm-nofit ставит скрипт вида (tblFit) после отрисовки
   и при смене размера окна. Запрос в «Поиске» длиннее 340 px обрезается многоточием (полный текст — в подсказке) */
#wbrv_root.wbcm-nofit .wbrv-card,#wbsp_root.wbcm-nofit .wbrv-card{overflow:hidden}
#wbrv_root.wbcm-nofit .wbrv-wrap,#wbsp_root.wbcm-nofit .wbrv-wrap{overflow-x:auto}
#wbrv_root.wbcm-nofit #wbrv_tbl thead th,#wbsp_root.wbcm-nofit #wbsp_tbl thead th{position:static}
#wbsp_tbl td.wbsp-q{max-width:340px;overflow:hidden;text-overflow:ellipsis}

/* ===== Чат 120: «Цены v2» режима «Сравнение» (static/cmp_prices2.js) =====
   Артикул-карточка: колонки WB | Ozon | Разница, блоки размеров, «Средняя по
   активным размерам». Общие мелочи (чипы, hot, doz/dwb, na, строка управления)
   переиспользуются из cmpp-* раздела «Цены». */
.cmp2-card{overflow:hidden;margin-bottom:14px;padding:0}
.cmp2-card table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
.cmp2-card th,.cmp2-card td{padding:9px 14px;font-size:13px;text-align:right;white-space:nowrap}
.cmp2-card th:first-child,.cmp2-card td:first-child{text-align:left}
th.cmp2-cwb,th.cmp2-coz,th.cmp2-cd{font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:800}
th.cmp2-cwb{width:19%;background:#f3e8ff;color:#5b21b6}
th.cmp2-coz{width:19%;background:#eaf1ff;color:#0047cc}
th.cmp2-cd{width:25%;background:#f1f5f9;color:#64748b}
tr.cmp2-head{cursor:pointer;background:#fff}
tr.cmp2-head:hover th:first-child{background:#f8fafc}
tr.cmp2-head th{border-bottom:1px solid var(--line);padding:12px 14px}
.cmp2-name{font-size:14.5px;font-weight:800}
.cmp2-chev{display:inline-block;width:15px;color:#94a3b8;transition:transform .15s;font-size:11px}
.cmp2-card.open .cmp2-chev{transform:rotate(90deg)}
tr.cmp2-sz td{background:#f8fafc;font-weight:700;border-top:1px solid var(--line);
              border-bottom:1px solid var(--line);padding:8px 14px}
tr.cmp2-sz.cmp2-avg td{background:#f0fbfb;color:var(--accent-ink)}
.cmp2-avgb tr.cmp2-m td{background:#fbfffe}
tr.cmp2-m td{border-bottom:1px solid #eef2f7}
tr.cmp2-m td.cmp2-mn{color:var(--muted);font-size:12.5px}
tr.cmp2-m.cmp2-buy td{font-weight:700}
tr.cmp2-m.cmp2-buy td.cmp2-mn{font-weight:400}
td.cmp2-vwb,td.cmp2-voz,td.cmp2-vd{border-left:1px solid var(--line)}
td.cmp2-vd{font-size:12.5px}
.cmp2-mut{color:#94a3b8;font-weight:400;font-size:12px}
.cmp2-ap{color:#94a3b8;font-weight:400}
.cmp2-offlbl{font-size:11px;color:#94a3b8;font-weight:400;margin-left:8px}
.cmp2-offlbl b{color:#b45309;font-weight:700}
.cmp2-off{font-size:10.5px;color:#b45309;font-weight:600;margin-left:8px}
.cmp2-empty{color:#94a3b8;text-align:center;padding:22px 12px}

/* ═══ Чат 125: шапка карточки РК «как в e-Comet» (концепция А, выбор Vladi) ═══ */
.wbadc-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wbadc-ph{width:44px;height:56px;border-radius:8px;background:var(--accent-tint,#f3eefe);
  overflow:hidden;flex:none;display:flex;align-items:center;justify-content:center;
  color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.5px}
.wbadc-ph img{width:100%;height:100%;object-fit:cover;display:block}
.wbadc-type{background:var(--accent-tint,#f3eefe);color:var(--accent-ink);font-weight:700;
  font-size:11px;border-radius:6px;padding:2px 8px;white-space:nowrap}
.wbadc-name{font-size:16px;font-weight:700;min-width:0;color:var(--ink)}
.wbadc-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);
  border-radius:8px;padding:2px 8px;font-size:12px;background:var(--card,#fff);cursor:pointer;
  font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink)}
.wbadc-chip:hover{border-color:var(--accent)}
.wbadc-chip .cp{color:var(--muted);font-size:11px}
.wbadc-right{margin-left:auto;display:flex;gap:8px;align-items:center}
/* Чат 195 (слово Vladi): справа от картинки — колонка из двух строк: имя с метками (.wbadc-l1) и ПОД НИМ блок
   кнопок (.wbadc-acts) — «сразу после фотографии и под текстом „Ручная · Поиск + Полки“»; строка тумблеров
   «Робот / Пауза» и меток зон (.wbadc-ctl) — отдельно ниже, как была */
.wbadc-top{align-items:flex-start;flex-wrap:nowrap}
.wbadc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:9px}
.wbadc-l1{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:30px}
.wbadc-acts{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.wbadc-ext{display:inline-flex;align-items:center;justify-content:center}
.wbadc-ext .wbcm-ic{width:17px;height:17px;vertical-align:0}
/* Чат 195 (слово Vladi): значки «Статистики» и «Графика бюджета» — в том же стиле; значок и подпись в одну линию */
.wbadc-acts .adx-go{display:inline-flex;align-items:center;gap:6px}
.wbadc-acts button .wbcm-ic{width:16px;height:16px;vertical-align:0}
/* Чат 195: «Пополнить» — значок в том же стиле, белый на залитой кнопке; значки в заголовках окон карточки */
.wbadc-acts .adx-btn{display:inline-flex;align-items:center;gap:6px}
#wbac_dep .wbcm-ic{--wbi:#fff;--wbi-t:rgba(255,255,255,.28)}
.wbac-modal .adx-h .wbcm-ic{width:18px;height:18px;vertical-align:0}
/* Чат 127 (О-14): отступ «под название, после картинки» — классом, не инлайном
   (жёсткая привязка к ширине фото 44+10 в одном месте) */
.wbadc-ctl{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:11px;
  padding-top:10px;padding-left:54px;border-top:1px solid var(--line)}
.wbadc-tgl{width:34px;height:19px;border-radius:999px;background:#c3cad6;position:relative;
  flex:none;transition:background .15s}
.wbadc-tgl::after{content:"";position:absolute;top:2px;left:2px;width:15px;height:15px;
  border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:left .15s}
.wbadc-tgl.on{background:var(--accent)}
.wbadc-tgl.on::after{left:17px}
.wbadc-trow{display:flex;align-items:center;gap:7px;font-weight:600;font-size:12.5px;
  cursor:pointer;user-select:none;color:var(--ink)}
.wbadc-trow.ro{cursor:default;opacity:.75}
.wbadc-live{margin-left:auto;display:flex;gap:14px;color:var(--muted);font-size:12.5px;
  flex-wrap:wrap;font-variant-numeric:tabular-nums;align-items:center}
.wbadc-live b{color:var(--ink)}
@media (max-width:900px){.wbadc-live{margin-left:0;flex-basis:100%}}

/* ═══ Чат 125: блок робота карточки РК — панели «порог ↔ факт» (концепция А) ═══ */
.wbadg-m{display:flex;align-items:center;gap:8px;margin:8px 0 10px;flex-wrap:wrap;font-size:13px}
.wbadg-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:11px}
.wbadg-p{border:1px solid var(--line);border-radius:12px;padding:10px 12px;
  transition:opacity .15s}
.wbadg-p.off{opacity:.55}
.wbadg-ph{display:flex;align-items:center;gap:8px;font-size:13px;margin-bottom:8px}
.wbadg-r{display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-size:12.5px;padding:3px 0}
.wbadg-r .l{color:var(--muted)}
.wbadg-r .v{font-weight:600;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}
.wbadg-f{border-top:1px dashed var(--line);margin-top:7px;padding-top:5px}
.wbadg-r.fct .v{font-weight:700}
.wbadg-r.fct .v.ok{color:#16a34a}
.wbadg-r.fct .v.warn{color:#d97706}
.wbadg-sw{position:relative;display:inline-block;width:30px;height:17px;flex:none}
.wbadg-sw input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.wbadg-sw span{position:absolute;inset:0;border-radius:999px;background:#c3cad6;
  pointer-events:none;transition:background .15s}
.wbadg-sw span::after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;
  border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:left .15s}
.wbadg-sw input:checked + span{background:var(--accent)}
.wbadg-sw input:checked + span::after{left:15px}
.wbadg-sched{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:12.5px;
  color:var(--muted);flex-wrap:wrap}
.wbadg-sched b{color:var(--ink)}
.wbadg-p .adx-search{margin:0 4px;padding:2px 6px;font-size:12.5px;text-align:center}

/* ═══ Чат 125: блок «Настройки» карточки РК — один в один e-Comet (правки Vladi) ═══ */
.wbst-tgls{display:flex;align-items:center;gap:22px;flex-wrap:wrap;padding:6px 0 12px}
.wbst-tgls .right{margin-left:auto;color:var(--muted);font-size:12px}
.wbst-tgls .right b{color:var(--ink)}
.wbst-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
@media (max-width:980px){.wbst-grid{grid-template-columns:1fr}}
.wbst-p{border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:opacity .15s}
.wbst-p.off{opacity:.5}
.wbst-pt{padding:8px 14px;border-bottom:1px solid var(--line);font-size:12.5px;font-weight:600;
  color:var(--muted);display:flex;align-items:center;gap:9px}
.wbst-pt .nm{color:var(--ink)}
.wbst-pt .zone{color:var(--accent-ink)}
.wbst-pt .ss{font-size:10.5px;color:var(--muted);font-weight:400}
.wbst-cols{display:flex;flex-wrap:wrap}
.wbst-c{padding:10px 14px;min-width:96px;flex:1;border-right:1px solid var(--accent-tint2,#eef1f6)}
.wbst-c:last-child{border-right:0}
.wbst-c .l{font-size:11px;color:var(--muted);font-weight:600;white-space:nowrap}
.wbst-c .v{font-size:14px;font-weight:700;margin-top:3px;white-space:nowrap;color:var(--ink)}
.wbst-c .v.ok{color:#16a34a}
.wbst-c .v.warn{color:#d97706}
.wbst-c .s{font-size:10.5px;color:var(--muted);margin-top:2px;white-space:nowrap}
.wbst-c .adx-search{padding:2px 6px;font-size:13px;text-align:center}
.wbst-sched{display:flex;align-items:center;gap:8px;padding:10px 14px;font-size:12.5px;
  color:var(--ink);font-weight:600;flex-wrap:wrap}
/* ── Чат 126: карточка РК — тумблеры «Робот/Пауза» в шапке «Настроек», акценты значений ── */
#wbac_g_tgls{display:inline-flex;gap:16px;margin-left:4px}
#wbac_g_tick{font-size:12px;color:var(--muted);font-weight:400;white-space:nowrap}
#wbac_g_tick b{color:var(--ink)}
#wbac_g_body{padding-top:8px}
.wbst-c .v.my{font-size:17px;font-weight:800}
.wbst-c .v.my .adx-go{font-size:15px;font-weight:800;padding:3px 10px}
.wbst-c .v.hint{color:var(--muted);font-weight:500}
.wbst-dep{font-size:11.5px;font-weight:600;color:var(--ink)}
.wbst-c .adx-search{font-weight:700}
.wbadc-ext{text-decoration:none;display:inline-flex;align-items:center;font-size:14px}
/* ── Чат 156 (находка 14 перепроверки Чата 155): «Настройки» карточки РК WB на ширине 1100–1300 px — подписи
   наезжали на соседнюю колонку, последняя обрезалась (flex:1 + min-width:96px + nowrap). Колонка теперь не уже
   своего самого длинного слова, подписи и пояснения переносятся в 2 строки, строки общие для всех колонок панели
   (subgrid) — значения стоят на одной линии. Узкая раскладка «Триггеров паузы» 3 × 2 (≤ 520 px) убрана в Чате 196:
   панель теперь «три правила с линией» (.wbst-pr, блок в конце файла). ── */
#wbac_g_body .wbst-cols{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(min-content,1fr);
  grid-template-rows:repeat(3,auto)}
#wbac_g_body .wbst-c{min-width:0;padding:10px;display:grid;grid-row:span 3;grid-template-rows:subgrid}
#wbac_g_body .wbst-c .l{white-space:normal;line-height:1.2;align-self:end;text-wrap:balance}
#wbac_g_body .wbst-c .v{white-space:normal;align-self:start}
#wbac_g_body .wbst-c .v:has(input){white-space:nowrap}
#wbac_g_body .wbst-c .s{white-space:normal;line-height:1.25;text-wrap:balance}
/* ── Чат 126: блок «Поиск: Кластеры» карточки РК WB (один в один e-Comet) ── */
.wbcl-tgls{display:flex;gap:22px;align-items:center;padding:4px 0 10px;border-bottom:1px solid var(--line)}
.wbcl-tgl{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink)}
.wbcl-kpis{display:flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:12px;margin:10px 0}
.wbcl-k{padding:9px 14px;border-right:1px solid var(--line);flex:1;min-width:120px}
.wbcl-k:last-child{border-right:0}
.wbcl-k .l{font-size:11px;color:var(--muted);font-weight:600;white-space:nowrap}
/* Чат 127 (О-18): цвет канала вместо чужого синего; «рука» — только у кликабельных */
.wbcl-k .v{font-size:13px;font-weight:700;color:var(--accent,#2563eb);margin-top:3px;white-space:nowrap}
.wbcl-k .v.clk{cursor:pointer}
.wbcl-ctl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}
.wbcl-right{margin-left:auto;display:flex;gap:6px;align-items:center}
.wbcl-dd{position:relative;display:inline-block}
.wbcl-pop{position:absolute;top:calc(100% + 4px);right:0;z-index:60;background:var(--card,#fff);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.12);padding:10px 12px;display:flex;flex-direction:column;gap:5px;font-size:12.5px;min-width:200px;max-height:320px;overflow:auto}
.wbcl-pop label{display:flex;gap:6px;align-items:center;white-space:nowrap}
.wbcl-t th{white-space:nowrap}
.wbcl-t .wbcl-h1 th{border-bottom:0;padding-bottom:0}
.wbcl-t th.mgrp a{color:var(--accent);text-decoration:none;font-weight:700}
.wbcl-name{white-space:nowrap;max-width:340px;overflow:hidden;text-overflow:ellipsis}
.wbcl-exp{color:var(--muted);text-decoration:none;font-weight:700}
.wbcl-kid td{background:var(--accent-tint2,#f6f8fb)}
.wbcl-ico{cursor:pointer;text-align:center}
.wbcl-st{cursor:pointer;text-align:center}
.wbcl-org{color:#16a34a;font-weight:700}
/* Чат 128 (баг-репорт Vladi «кнопка исчезла»): тумблер строки в ЯЧЕЙКЕ таблицы —
   inline-span без display, width/height не работали и от пилюли оставался только
   белый кружок ::after; белая липкая подложка stickLead (Чат 127) добила его
   окончательно. В шапке карточки тумблер жив как flex-item — там display не нужен */
.wbcl-st .wbadc-tgl{display:inline-block;vertical-align:middle}
/* Чат 128: «Тек. позиция» — витринное промо-место (кнопка «🛒 Позиции») жирным
   тёмно-янтарным рядом с зелёной органикой; язык янтаря = платный трафик витрины */
.wbcl-vit{color:#92600a;font-weight:700}
/* Чат 128 (правка Vladi): меню ⋯ строки — первой колонкой слева; свой класс,
   НЕ .wbcl-dd — его display:inline-block сломал бы sticky первой ячейки */
.wbcl-mn{text-align:center;padding:2px 4px}
.wbcl-edit{cursor:pointer}
.wbcl-cmt{cursor:pointer;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wbcl-menu{position:absolute;z-index:70;background:var(--card,#fff);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.15);padding:6px 0;min-width:230px}
.wbcl-menu a{display:block;padding:7px 14px;font-size:12.5px;color:var(--ink);text-decoration:none}
.wbcl-menu a:hover{background:var(--accent-tint,#f3eefe)}
.wbcl-thr{position:fixed;z-index:80;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--card,#fff);border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 40px rgba(15,23,42,.2);padding:16px 18px;min-width:270px}
.wbcl-thr .t{font-weight:700;margin-bottom:10px;display:flex;justify-content:space-between;gap:16px}
.wbcl-thr .t .x{color:var(--muted);text-decoration:none;font-size:15px}
.wbcl-thr .r{display:flex;align-items:center;gap:8px;justify-content:space-between;margin:7px 0;font-size:12.5px}
.wbcl-thr button{margin-top:8px}
.wbcl-schedp{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:10px}
.wbadc-tgl.org{background:#f59e0b}
.ring-red{outline:2px solid #dc2626;outline-offset:1px;border-radius:8px}
.wbadg-sw.dis{opacity:.5}
/* ── Чат 126: перетаскивание колонок в ⚙ «Поиск: Кластеры» ── */
.wbcl-pop label{cursor:default}
.wbcl-pop .dh{cursor:grab;color:var(--muted);font-size:11px;user-select:none}
.wbcl-pop label.dragging{opacity:.4}
/* ── Чат 126: якорь групп метрик слева + «Кластер» по левому краю ── */
.wbcl-t th.mgrp{text-align:left}
.wbcl-t th.tl{text-align:left}
.wbcl-t td.wbcl-name{text-align:left}
/* ── Чат 126: попапы минус/плюс-фраз блока «Поиск: Кластеры» ── */
.wbcl-phr{max-width:520px}
.wbcl-phr .list{max-height:260px;overflow:auto;display:flex;flex-wrap:wrap;gap:6px;margin:10px 0;align-content:flex-start}
.wbcl-phr textarea{width:100%;min-height:64px;margin-bottom:6px;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font:inherit;font-size:12.5px;resize:vertical}
/* ── Чат 126: модалки «Бюджет» и «Статистика» карточки РК ── */
.wbac-modal{position:fixed;inset:0;z-index:90;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;padding:20px}
.wbac-modal .box{background:var(--card,#fff);border-radius:16px;box-shadow:0 24px 60px rgba(15,23,42,.3);padding:16px 20px;max-width:min(1100px,94vw);width:100%;max-height:92vh;overflow:auto}
.wbac-stgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;margin-top:10px}
@media (max-width:900px){.wbac-stgrid{grid-template-columns:1fr}}
.wbac-stt{text-align:center;font-size:13px;font-weight:700;color:var(--ink);margin-bottom:2px}
.wbac-chips{display:inline-flex;gap:6px}
.wbac-chips .adx-go.on{background:var(--accent);color:#fff}
/* ── Чат 127 (аудит AUDIT_127, этап 3) ── */
/* О-16: двойная шапка кластеров — обе строки th липли к top:0 и перекрывались;
   первой фиксируем высоту (padding-bottom у неё уже 0), вторая липнет ПОД ней */
.wbcl-t tr.wbcl-h1 th{top:0;height:24px;box-sizing:border-box}
.wbcl-t tr.wbcl-h2 th{top:24px}
/* правка Vladi (обкатка Чата 127): серая заливка шапки, как у таблиц свода —
   строки шапки кластеров собраны БЕЗ thead, и .skin-cab thead th их не ловит */
.wbcl-t tr.wbcl-h1 th,.wbcl-t tr.wbcl-h2 th{background:#f3f6f9}
/* О-3: липкая первая колонка «Кампаний» свода — имя кампании не уезжает при
   горизонтальном скролле 15 колонок (фон сплошной: зебры у .mon-tbl нет) */
#tbl_wba_r_camp th:first-child,#tbl_wba_r_camp td:first-child{position:sticky;left:0;background:#fff;z-index:2}
#tbl_wba_r_camp thead th:first-child{z-index:3;background:#f3f6f9}
/* правка Vladi (обкатка Чата 127): липкий белый перекрывал серую заливку шапки
   .skin-cab thead th — первой колонке возвращён цвет остальной шапки (выше);
   ховер строки не выключается на липкой ячейке */
#tbl_wba_r_camp tr:hover td:first-child{background:var(--accent-tint2,#f6f8fb)}
/* чип зон показов под названием кампании — заливкой, серый текст терялся */
.wba-zone{display:inline-block;background:var(--accent-tint,#f3eefe);color:var(--accent,#7c3aed);
  border-radius:6px;padding:1px 7px;font-size:11px;font-weight:600;margin-top:3px}
/* бледная метка «колонка сортируется» на неактивных заголовках */
.wba-srt{color:#c3cad6;font-size:10px;font-weight:400}
.wba-fon{color:var(--accent,#7c3aed);font-weight:700}
/* выпадающий фильтр колонок «Кто ведёт»/«Состояние» (живёт в body) */
.wba-fpop{position:absolute;z-index:200;background:var(--card,#fff);border:1px solid var(--line);
  border-radius:10px;box-shadow:0 8px 24px rgba(15,23,42,.15);padding:9px 12px;display:flex;
  flex-direction:column;gap:6px;font-size:12.5px;min-width:160px;text-align:left}
.wba-fpop label{display:flex;gap:7px;align-items:center;white-space:nowrap;cursor:pointer;
  font-weight:400;color:var(--ink);text-transform:none;letter-spacing:0}
.wba-fpop .adx-go{align-self:flex-start;margin-top:2px}
/* О-19: заливка ячеек сеток 7×24 — классом, цвет канала (был хардкод в JS) */
td[data-gc].on,td[data-c].on{background:var(--accent,#7c3aed)}
/* О-32: свод в .adx-t — текстовым колонкам «Кампаний» вернуть левое выравнивание
   (adx-t по умолчанию правит всё вправо, кроме первой) */
#tbl_wba_r_camp td:nth-child(-n+4),#tbl_wba_r_camp th:nth-child(-n+4){text-align:left}
/* О-12: липкая мини-полоса карточки РК «← · имя» — видна после ухода шапки */
.wbac-topbar{position:sticky;top:0;z-index:30;display:flex;gap:10px;align-items:center;
  background:var(--card,#fff);border:1px solid var(--line);border-top:none;
  border-radius:0 0 12px 12px;padding:8px 14px;box-shadow:0 6px 16px rgba(15,23,42,.08);
  font-size:13px}
/* ── Чат 129: «🤖 Что сделать сегодня» — робот рекомендаций в «Слабых местах» «Рекламы»·Ozon (static/ozon_reco.js) ── */
/* Чат 133: блок робота — ОБА канала (#adx_reco Ozon, #wba_reco WB); правки — парой селекторов */
#adx_reco .rc-box,#wba_reco .rc-box{border:1px solid var(--accent-line,#c7d7fe);background:var(--accent-tint2,#f5f8ff);border-radius:12px;padding:10px 12px;margin:4px 0 12px}
#adx_reco .rc-head,#wba_reco .rc-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#adx_reco .rc-head b,#wba_reco .rc-head b{font-size:14px;color:var(--ink,#111)}
#adx_reco .rc-meta,#wba_reco .rc-meta{font-size:12px;color:var(--muted,#6b7280)}
#adx_reco .rc-sp,#wba_reco .rc-sp{flex:1}
#adx_reco .rc-link,#wba_reco .rc-link{border:none;background:transparent;color:var(--accent,#2563eb);font-size:12px;cursor:pointer;padding:0}
#adx_reco .rc-link:hover,#wba_reco .rc-link:hover{text-decoration:underline}
#adx_reco .rc-chk,#wba_reco .rc-chk{font-size:12px;color:var(--muted,#6b7280);display:flex;align-items:center;gap:4px;cursor:pointer}
#adx_reco .rc-warn,#wba_reco .rc-warn{margin-top:6px;padding:6px 10px;border-radius:8px;background:#fdf3e3;color:#92400e;font-size:12px}
#adx_reco .rc-dim,#wba_reco .rc-dim{color:var(--muted,#6b7280);font-size:12px}
#adx_reco .rc-bad,#wba_reco .rc-bad{color:#dc2626;font-weight:600}
#adx_reco .rc-sum,#wba_reco .rc-sum{margin-top:8px;background:var(--card,#fff);border-radius:10px}
#adx_reco .rc-grp,#wba_reco .rc-grp{margin-top:12px}
#adx_reco .rc-gh,#wba_reco .rc-gh{font-size:13px;font-weight:700;color:var(--ink,#111);margin-bottom:6px}
#adx_reco .rc-art,#wba_reco .rc-art{background:var(--card,#fff);border-radius:10px;padding:6px 8px;margin-bottom:8px}
#adx_reco .rc-ah,#wba_reco .rc-ah{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 4px}
#adx_reco .rc-steps,#wba_reco .rc-steps{table-layout:fixed}
#adx_reco .rc-steps th,#wba_reco .rc-steps th,#adx_reco .rc-steps td,#wba_reco .rc-steps td{text-align:left;vertical-align:top;white-space:normal;cursor:default}
#adx_reco .rc-steps th:nth-child(1),#wba_reco .rc-steps th:nth-child(1){width:26px}#adx_reco .rc-steps th:nth-child(2),#wba_reco .rc-steps th:nth-child(2){width:30%}
#adx_reco .rc-steps th:nth-child(3),#wba_reco .rc-steps th:nth-child(3){width:17%}#adx_reco .rc-steps th:nth-child(5),#wba_reco .rc-steps th:nth-child(5){width:190px}
#adx_reco .rc-steps td:first-child,#wba_reco .rc-steps td:first-child{width:22px;color:var(--muted,#6b7280)}
#adx_reco .rc-act,#wba_reco .rc-act{font-weight:600}
#adx_reco .rc-why,#wba_reco .rc-why{color:var(--muted,#6b7280);font-size:12px}
#adx_reco .rc-steps td.rc-btns,#wba_reco .rc-steps td.rc-btns{white-space:normal;text-align:right}
#adx_reco .rc-btns .adx-go,#wba_reco .rc-btns .adx-go{margin:0 0 4px 4px}
#adx_reco .rc-ok,#wba_reco .rc-ok{border-color:#86efac;color:#15803d}
#adx_reco .rc-ok:hover,#wba_reco .rc-ok:hover{background:#e7f6ec}
#adx_reco .rc-no,#wba_reco .rc-no{border-color:#e5e7eb;color:var(--muted,#6b7280)}
#adx_reco .rc-no:hover,#wba_reco .rc-no:hover{background:#f3f4f6}
#adx_reco tr.rc-sev-bad td:first-child,#wba_reco tr.rc-sev-bad td:first-child{box-shadow:inset 3px 0 0 #dc2626}
#adx_reco tr.rc-sev-warn td:first-child,#wba_reco tr.rc-sev-warn td:first-child{box-shadow:inset 3px 0 0 #d97706}
#adx_reco tr.rc-done td,#wba_reco tr.rc-done td{opacity:.55}
#adx_reco tr.rc-done td.rc-btns,#wba_reco tr.rc-done td.rc-btns{opacity:1}

/* Чат 140 (Vladi): свой артикул + календарь блока «Свой склад по артикулам и размерам»·WB — сразу после названия,
   оформление 1:1 с фильтрами «Сводки за период» (правила выше расширены на #wf_st_ctl) */
#wf_st_ctl .rnp-cal-pop,#fbsw_st_ctl .rnp-cal-pop{z-index:80}   /* Чат 189: тот же календарь в блоке Ozon */

/* ── Чат 175 (аудит «Реклама»·Ozon AUDIT_175, этап 2): вердикт «доля рекламы в прибыли», одна таблица
   кампаний, состояние загрузки в шапке, плашка «свой период» «Динамики», липкая первая колонка ── */
.adx-state{font-size:12px;font-weight:600;border-radius:8px;padding:2px 9px;margin-left:8px;white-space:nowrap}
.adx-state.load{color:var(--muted,#6b7280);background:var(--accent-tint2,#eef1f6)}
.adx-state.err{color:#dc2626;background:#fdeaea;white-space:normal}
.adx-pill.minus{background:#dc2626;color:#fff}
.adx-t th.adx-tl,.adx-t td.adx-tl{text-align:left}
.adx-cname{color:var(--accent,#005BFF);font-weight:600;text-decoration:none}
.adx-cname:hover{text-decoration:underline}
a.adx-artlink{text-decoration:none}
.adx-t tr.adx-dimrow td{color:var(--muted,#6b7280)}
.adx-t td.adx-dimc{color:var(--muted,#6b7280)}
.adx-t td.adx-neg{color:#dc2626;font-weight:700}
.adx-ii{cursor:help;border-bottom:1px dotted var(--muted,#6b7280)}
.adx-ii.bad{color:#dc2626;font-weight:700}
.adx-own{margin-top:8px;padding:6px 10px;border-radius:10px;background:#fdf3e3;color:#92400e;font-size:12.5px;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.adx-today{margin:0 0 10px}
.adx-today b{color:var(--ink,#101828)}
/* М8: на телефоне при прокрутке таблицы вправо название не теряется — первая колонка липкая
   (фон обязателен; overflow на td не ставим — он глушит sticky) */
.adx-stick1 td:first-child{position:sticky;left:0;z-index:1;background:var(--card,#fff);box-shadow:1px 0 0 var(--line,#e5e7eb)}
.adx-stick1 th:first-child{left:0;z-index:3;box-shadow:1px 0 0 var(--line,#e5e7eb)}
.adx-stick1 tr:hover td:first-child{background:var(--accent-tint2,#f5f8ff)}
.adx-stick1 td:first-child{min-width:170px;max-width:260px;white-space:normal}
/* М8: кнопки под палец */
@media (max-width:700px){
  .adx-go{padding:6px 10px;font-size:13px}
  .adx-btn{padding:7px 12px;font-size:13px}
  .adx-search{width:100%}
  #adx_camp_st,#adx_metric{flex-wrap:wrap;max-width:100%}
  .adx-stick1 td:first-child{min-width:120px;max-width:150px}
}
/* Чат 176 (С11): «🤖 Сейчас: …» — что робот сделает в ближайший прогон (карточка кампании) */
.adc-now{display:block;margin-top:5px;padding:4px 9px;border-radius:8px;font-size:12px;font-weight:600;
  color:var(--accent-ink,#1e3a8a);background:var(--accent-tint,#eef4ff);border:1px solid var(--accent-line,#c7d7fe)}
/* ── Чат 178 (слово Vladi, вариант B из превью ads_camps_concepts_c178): «Кампании» по артикулам —
   плашки сводки, строка артикула (вердикт и деньги один раз, мини-полоски бюджетов кампаний,
   ⏸ Остановить / ▶ Запустить), под ней его кампании с ⏸/▶ и ✎ бюджета прямо в строке ── */
.adx-info{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;border:1.5px solid var(--muted,#8b95a1);
  color:var(--muted,#8b95a1);font-size:10.5px;font-weight:700;cursor:help;flex:none}
.adx-cview{margin-left:6px;font-weight:500}
.adx-camp-at{margin-left:auto;font-size:12px;font-weight:500;color:var(--muted,#8b95a1)}
.adx-cstats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;background:var(--oz-sec,#f2f5f8);
  border-radius:14px;padding:8px;margin-top:10px}
.adx-cstat{background:var(--card,#fff);border-radius:10px;padding:8px 12px;min-width:0}
.adx-cstat .l{font-size:12px;color:var(--muted,#8b95a1)}
.adx-cstat .v{font-size:18px;font-weight:700;color:var(--ink);margin-top:2px;font-variant-numeric:tabular-nums}
.adx-cstat .v small{font-size:12px;font-weight:500;color:var(--muted,#8b95a1)}
.adx-cstat .adx-mb{margin-top:6px;display:block}
.adx-camp-sum{margin-left:auto}
.adx-mb{display:inline-block;height:6px;border-radius:3px;background:#e3e9f2;overflow:hidden;width:90px;flex:none;vertical-align:middle}
.adx-mb > i{display:block;height:100%;background:var(--accent,#005bff);border-radius:3px}
.adx-mb.lim > i{background:#e89a1a}
.adx-budb{display:inline-flex;align-items:center;gap:8px}
.adx-budb .bt{font-size:12px;color:var(--muted,#8b95a1);min-width:96px;text-align:left}
.adx-budb .bt b{color:var(--ink);font-weight:600}
.adx-limtag{font-size:11px;color:#d97706;font-weight:600}
.adx-budw{display:inline-flex;align-items:center;gap:2px}
.adx-wico{color:#d97706;font-weight:700;cursor:help}
.adx-cmp{display:flex;flex-direction:column;gap:1px;text-align:left}
.adx-cmp .l1{font-weight:600;white-space:nowrap}
.adx-cmp .l2{font-size:12px;color:var(--muted,#8b95a1);white-space:nowrap}
.adx-cg-top{display:flex;align-items:center;gap:12px;margin:2px 0 0}
.adx-cg-all{margin-left:auto;font-size:12px;color:var(--accent,#005bff);text-decoration:none}
.adx-cg{border:1px solid var(--line);border-radius:12px;margin-top:8px;overflow:hidden}
.adx-cgh{display:grid;grid-template-columns:22px minmax(100px,130px) 130px minmax(150px,1fr) 100px minmax(170px,1.4fr) 132px;
  gap:10px;align-items:center;padding:10px 12px;cursor:pointer}
.adx-cgh:hover{background:var(--accent-tint2,#f5f8ff)}
.adx-cg.open .adx-cgh{background:var(--oz-sec,#f2f5f8);border-bottom:1px solid var(--line)}
.adx-cgh .tg{color:var(--muted,#8b95a1);text-align:center}
.adx-cgh .ar{font-weight:700;font-size:15px;color:var(--ink)}
.adx-cgh .ar small{display:block;font-size:11.5px;font-weight:500;color:var(--muted,#8b95a1)}
.adx-cgh .m{font-size:12.5px;color:var(--muted,#8b95a1)}
.adx-cgh .m b{color:var(--ink)}
.adx-cgh .sp{text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}
.adx-cgh .sp b{font-size:15px}
.adx-cgh .sp small{display:block;font-size:11.5px;color:var(--muted,#8b95a1)}
.adx-cgh .chips{display:flex;flex-wrap:wrap;gap:6px}
.adx-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:3px 7px;
  font-size:12px;background:var(--card,#fff);white-space:nowrap;color:var(--ink)}
.adx-chip .adx-mb{width:38px;height:5px}
.adx-chip.off{color:var(--muted,#8b95a1)}
.adx-cgh .acts{display:flex;flex-direction:column;gap:4px;align-items:stretch}
.adx-cgh .wline{grid-column:2 / -1;font-size:12px;color:#d97706;font-weight:600}
.adx-cgb{padding:0 8px 6px 34px}
.adx-cgscroll{overflow-x:auto}
.adx-cgt th{cursor:default;position:static}
.adx-abtn{border:1px solid var(--line);background:var(--card,#fff);border-radius:8px;padding:5px 10px;font-size:12.5px;
  font-weight:600;cursor:pointer;white-space:nowrap}
.adx-abtn small{font-weight:600;opacity:.75;margin-left:2px}
.adx-abtn.stop{color:#dc2626;border-color:#f3c4c4}
.adx-abtn.stop:hover{background:#fdeaea}
.adx-abtn.go{color:#16a34a;border-color:#bfe6cc}
.adx-abtn.go:hover{background:#e7f6ec}
.adx-abtn:disabled,.adx-rbtn:disabled,.adx-pen:disabled{opacity:.45;cursor:not-allowed}
.adx-rbtn{width:30px;height:28px;border-radius:8px;border:1px solid var(--line);background:var(--card,#fff);cursor:pointer;font-size:12px}
.adx-rbtn.stop{color:#dc2626}
.adx-rbtn.go{color:#16a34a}
.adx-rbtn:hover{background:var(--accent-tint2,#f5f8ff)}
.adx-pen{border:0;background:none;color:var(--accent,#005bff);cursor:pointer;font-size:15px;padding:2px 5px;border-radius:6px}
.adx-pen:hover{background:var(--accent-tint,#eef4ff)}
.adx-pen-sp{display:inline-block;width:25px}
.adx-apanel{margin:0 12px 10px 34px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--card,#fff);
  display:flex;flex-direction:column;gap:6px;cursor:default}
.adx-apanel.stop{border-color:#f3c4c4}
.adx-apanel.go{border-color:#bfe6cc}
.adx-apanel .ap-h{font-weight:700;color:var(--ink)}
.adx-apanel .ap-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;cursor:pointer}
.adx-apanel .ap-n{font-weight:600;min-width:130px;color:var(--ink)}
.adx-apanel .ap-b{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.adx-reason{border:1px solid var(--line);background:var(--card,#fff);color:var(--ink);border-radius:8px;padding:6px 10px;
  font-size:13px;flex:1;min-width:200px;max-width:520px}
.adx-lnk{border:0;background:none;color:var(--muted,#8b95a1);cursor:pointer;text-decoration:underline;font-size:13px}
.adx-t tr.adx-sub-row > td{background:var(--accent-tint,#eef4ff);text-align:left;white-space:normal;padding:10px 12px}
.adx-t tr.adx-editing td{background:var(--accent-tint,#eef4ff)}
.adx-bed{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.adx-bed .bl{font-weight:600;color:var(--ink)}
.adx-bed-in{width:110px;border:1px solid var(--accent,#005bff);border-radius:8px;padding:5px 8px;font-weight:600;text-align:right;
  background:var(--card,#fff);color:var(--ink);font-size:13px}
.adx-bed-note{font-size:12.5px;color:var(--muted,#8b95a1)}
.adx-bed-note b{color:var(--ink)}
.adx-warn-t{color:#d97706;font-weight:600}
.adx-bad-t{color:#dc2626;font-weight:600}
@media (max-width:900px){
  .adx-cstats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .adx-cgh{grid-template-columns:22px minmax(0,1fr) auto;grid-template-areas:"tg ar vv" ". m sp" ". ch ch" ". ac ac" ". w w";row-gap:8px}
  .adx-cgh > .tg{grid-area:tg}
  .adx-cgh > .ar{grid-area:ar}
  .adx-cgh > .vv{grid-area:vv}
  .adx-cgh > .m{grid-area:m}
  .adx-cgh > .sp{grid-area:sp}
  .adx-cgh > .chips{grid-area:ch}
  .adx-cgh > .acts{grid-area:ac;flex-direction:row}
  .adx-cgh > .wline{grid-area:w}
  .adx-apanel{margin-left:12px}
  .adx-cgb{padding-left:8px}
}
/* Чат 178, правки Vladi 01.10: у кампаний — вердикт и ДРР (таблица шире → заголовки в две строки,
   «упёрлась» под цифрами), полоски бюджета — по левому краю, артикулы «зеброй» (белый / серый) */
.adx-cg .adx-cgh,.adx-cg.open .adx-cgh{background:var(--card,#fff)}
.adx-cg .adx-cgh:hover{background:var(--accent-tint2,#f5f8ff)}
.adx-cgt th{white-space:normal;line-height:1.2;padding:6px}
.adx-cgt td{padding:7px 6px}
.adx-cgt th:first-child,.adx-cgt td:first-child{padding-left:0}
.adx-cgt .adx-budw{justify-content:flex-start}
.adx-cgt .adx-budb .bt{min-width:104px}
.adx-cgt .adx-budb .adx-mb{width:60px}
.adx-cgt .adx-limtag{display:block;line-height:1.1}
/* Чат 179 (слово Vladi): «зебра» у «Окупается ли реклама · по артикулам» снята — строки как до Чата 178 */
/* ── Чат 179 (слово Vladi): «Кампании» по артикулам — оформление как список «Репрайсера» (ozon_prices.css .orl-*):
   серая подложка, каждый артикул — белая карточка с отступами (подписи колонок сверху убраны словом Vladi); наведение — голубая рамка,
   раскрытый — синяя рамка с тенью и пунктир под строкой; оранжевая полоса слева — у артикула есть ⚠. «Зебра» Чата 178 снята ── */
.adx-cgl{background:#f4f6f9;border-radius:14px;padding:8px 10px;margin-top:8px}
.adx-cgl .adx-cg{background:var(--card,#fff)}
.adx-cgl .adx-cg + .adx-cg{margin-top:16px}
.adx-cgl .adx-cg .adx-cgh,.adx-cgl .adx-cg.open .adx-cgh,.adx-cgl .adx-cg .adx-cgh:hover{background:transparent}
.adx-cgl .adx-cg:hover{border-color:var(--accent-line,#c7dcff)}
.adx-cgl .adx-cg.open{border-color:var(--accent,#005bff);box-shadow:0 2px 10px rgba(0,91,255,.08)}
.adx-cgl .adx-cg.open .adx-cgh{border-bottom:1px dashed var(--line)}
.adx-cgl .adx-cg.att{box-shadow:inset 3px 0 0 #b45309}
.adx-cgl .adx-cg.open.att{box-shadow:inset 3px 0 0 #b45309,0 2px 10px rgba(0,91,255,.08)}
@media (max-width:900px){
  .adx-cgl{padding:6px}
}
/* строка артикула — вариант A «Равные промежутки» (выбор Vladi из трёх превью): столбцы по ширине содержимого (adxCgtFit
   меряет под .adx-measure и ставит --cgcols), свободное место — поровну между столбцами; ▸ и артикул — один столбец,
   иначе промежуток встаёт и между ними; «₽/нед» не переносится (на экране Vladi «нед» уезжал на третью строку) */
@media (min-width:901px){
  .adx-cgl .adx-cgh{grid-template-columns:var(--cgcols,minmax(130px,160px) 130px minmax(150px,1fr) 110px minmax(170px,1.4fr) 132px);
    justify-content:space-between;column-gap:16px}
  .adx-cgl .adx-cgh > .tg{grid-column:1;grid-row:1;justify-self:start}
  .adx-cgl .adx-cgh > .ar{grid-column:1;grid-row:1;margin-left:32px}
  .adx-cgl .adx-cgh > .wline{grid-column:1 / -1;margin-left:32px}
  .adx-cgl .adx-cgh > .sp{white-space:nowrap}
  .adx-cgl.adx-measure .adx-cgh > *{width:max-content;white-space:nowrap}
}
/* Чат 179 (слово Vladi): таблица кампаний раскрытого артикула — заголовки в две строки по смыслу (перенос только по <br>),
   цифры, вердикт и заголовки — по центру столбца: отступ до соседей слева и справа одинаковый; «Кампания» и «Бюджет» — по левому краю */
.adx-cgt th{white-space:nowrap;text-align:center;vertical-align:bottom;padding:6px calc(10px + var(--cgx,0px))}
.adx-cgt td{text-align:center;padding:7px calc(10px + var(--cgx,0px))}   /* --cgx — свободное место поровну всем столбцам (adxCgtFit) */
.adx-cgt th.adx-tl,.adx-cgt td.adx-tl,.adx-cgt th:first-child,.adx-cgt td:first-child{text-align:left}
/* Чат 179 (слово Vladi, вариант 3 из трёх): строка «Итого» таблицы кампаний (adxCampTotRow) — внизу, серая с чертой сверху;
   под расходом и заказами кампании — её доля в итоге (.adx-tsh) */
.adx-cgt tr.adx-tot td{font-weight:700;background:#f4f6f9;border-top:2px solid var(--line);border-bottom:0;color:var(--ink)}
.adx-cgt tr.adx-tot td:first-child{padding-left:10px;border-radius:8px 0 0 8px}
.adx-cgt tr.adx-tot td:last-child{border-radius:0 8px 8px 0}
.adx-cgt tr.adx-tot td small{display:block;font-size:11.5px;font-weight:500;color:var(--muted,#8b95a1)}
.adx-cgt tr.adx-tot:hover td{background:#eef1f5}
.adx-cgt .adx-tsh{font-size:11px;font-weight:500;color:var(--muted,#8b95a1);margin-top:1px;cursor:help}

/* Чат 180 (аудит AUDIT_180, К4): карточка кампании·WB ждёт ответа WB — кнопки и блок кластеров
   не принимают нажатий (второй клик больше не уходит повторной командой) */
#wba_card_view.wbac-busy button{cursor:progress}
#wbac_clusters.wbcl-busy{pointer-events:none;opacity:.6;transition:opacity .15s}

/* ── Чат 181 (AUDIT_180, этап 3 «Экран»; решения Vladi В5/В6/В12): «Реклама»·WB — «🎯 Что сделать сегодня по рекламе»
   наверху (разбор робота — строкой), ОДИН список «Кампании» (строка артикула: окупаемость, расход, ДРР, у кампаний —
   состояние, кто ведёт, живой остаток и «хватит ≈ N дн», ⏸/▶ и 💰 прямо в строке), пояснения «i» по нажатию, телефон ── */
.wba-i{width:15px;height:15px;font-size:9.5px;margin-left:3px;vertical-align:1px;cursor:pointer;display:inline-grid}
.wba-i:hover{border-color:var(--accent,#005bff);color:var(--accent,#005bff)}
.wba-tip{position:absolute;z-index:1000;background:var(--card,#fff);color:var(--ink);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 6px 24px rgba(15,23,42,.16);padding:10px 12px;font-size:12.5px;font-weight:400;line-height:1.45;white-space:pre-line;text-align:left}
.wba-bud{display:inline-flex;flex-direction:column;line-height:1.2;font-variant-numeric:tabular-nums;text-align:left}
.wba-bud small{font-size:11px;color:var(--muted,#8b95a1);white-space:nowrap}
.wba-bud.low b,.wba-bud.low small{color:#d97706}
.wba-cc{flex-wrap:wrap;row-gap:2px;padding:4px 8px;font-size:12px}
.wba-cc .wba-bud{flex-direction:row;align-items:baseline;gap:5px}
.wba-cc .adx-dot{margin-right:0}
.wba-cab{text-decoration:none;font-size:12px;margin-left:2px}
.wba-rb{white-space:nowrap}
.wba-aeco{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;font-size:12.5px;color:var(--muted,#8b95a1);
  padding:9px 2px 4px;border-top:1px dashed var(--line);margin-top:6px}
.wba-aeco b{color:var(--ink)}
.wba-aeco .lb{font-weight:700;color:var(--ink)}
.wba-aeco .adx-go{margin-left:auto}
.wba-idle{display:block;margin:14px 0 4px;border:1px dashed var(--line);background:transparent;border-radius:8px;
  padding:6px 12px;color:var(--muted,#8b95a1);cursor:pointer;font-size:12.5px}
.wba-idle:hover{border-color:var(--accent-line,#c7dcff);color:var(--accent,#005bff)}
#wba_r_cgroups .adx-cgh .acts .adx-sub{font-size:12px}
#wba_r_cgroups .adx-cgh .m > span{white-space:nowrap}
@media (min-width:901px){
  #wba_r_cgroups .adx-cgl .adx-cgh{grid-template-columns:var(--cgcols,minmax(130px,160px) 110px 100px minmax(170px,1fr) minmax(200px,1.3fr) 120px)}
}
#tbl_wba_r_camp td:first-child{min-width:150px;max-width:220px}
#tbl_wba_r_camp .adx-cmp .l1{white-space:normal}
@media (max-width:900px){
  #wba_r_cgroups .adx-cgh .acts{flex-wrap:wrap}
}
/* телефон (В12 — свод и карточка одинаково важны): полоса фильтров одной строкой с прокруткой, пункты «Что сделать»
   с деньгами и кнопками ниже текста, шаги робота карточками, легенда графика с переносом, ничего не шире экрана */
@media (max-width:600px){
  [data-tab="wb_ads"] .ci-bar.ci-strip{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  [data-tab="wb_ads"] .ci-bar.ci-strip::-webkit-scrollbar{display:none}
  [data-tab="wb_ads"] .ci-bar.ci-strip > *{flex:none}
  [data-tab="wb_ads"] .ci-bar.ci-strip .ci-igrp{display:inline-flex;gap:8px}
  /* Чат 191: кнопки «7 / 14 / 30 дн» живут внутри календаря — на телефоне он обязан открываться. Полоса фильтров
     здесь прокручивается вбок (overflow) и обрезала всплывающий календарь целиком, а сам он шире экрана (540 px):
     на телефоне календарь раздела — окно по центру экрана, месяцы друг под другом, лишнее крутится внутри */
  [data-tab="wb_ads"] .ci-period .rnp-cal-pop{position:fixed;left:12px;right:12px;top:50%;transform:translateY(-50%);
    min-width:0;padding:12px 14px;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow-y:auto;z-index:300}
  [data-tab="wb_ads"] .ci-period .rnp-cal-pop .rnp-cal-months{flex-direction:column;align-items:stretch;gap:14px}
  [data-tab="wb_ads"] .oz-head{flex-wrap:wrap}
  [data-tab="wb_ads"] .oz-head-sum{flex-basis:100%;margin-left:0}
  [data-tab="wb_ads"] .adx-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  [data-tab="wb_ads"] .adx-kpi{min-width:0}
  #wba_r_alerts .adx-al{flex-wrap:wrap}
  #wba_r_alerts .adx-al > div{flex:1 1 calc(100% - 34px)}
  #wba_r_alerts .adx-al > .adx-sum{margin-left:26px}
  [data-tab="wb_ads"] .adx-h{flex-wrap:wrap}
  [data-tab="wb_ads"] .adx-camp-at{flex-basis:100%;margin-left:0}
  #wba_r_alerts .adx-gos .adx-go{white-space:normal;text-align:left}
  #wba_reco .rc-head{flex-wrap:wrap}
  #wba_reco .rc-steps,#wba_reco .rc-steps tbody,#wba_reco .rc-steps tr,#wba_reco .rc-steps td{display:block;width:auto}
  #wba_reco .rc-steps tr:first-child{display:none}
  #wba_reco .rc-steps tr{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:8px 0}
  #wba_reco .rc-steps td{border:0;padding:2px 0;white-space:normal}
  #wba_reco .rc-steps td:first-child{display:none}
  #wba_reco .rc-steps .rc-btns{padding-top:6px}
  #wba_r_cgroups .adx-cg-top{flex-wrap:wrap;gap:6px}
  #wba_r_cgroups .adx-cgb{padding:0 6px 6px}
  #wba_r_cgroups .wba-aeco .adx-go{margin-left:0}
  #wba_r_legend{flex-wrap:wrap;height:auto}
  [data-tab="wb_ads"] .adx-ctl{gap:8px}
  #tbl_wba_r_camp td:first-child{min-width:120px;max-width:140px}
}
/* карточка кампании·WB (часть 2 этапа 3): шапка — имя, состояние и «Ведёт: …» первыми; «Настройки» при выключенном
   роботе — одной строкой (В10); жёлтая пульсирующая точка у «Сохранить правила» при несохранённом (как Ozon, Чат 179) */
.wbadc-st{display:inline-flex;align-items:center;gap:2px;font-size:12.5px;color:var(--ink);white-space:nowrap}
.wbadc-st .adx-dot{margin-right:3px}
#wbac_guard_card.wbac-gfold #wbac_g_tgls,#wbac_guard_card.wbac-gfold #wbac_g_tick,#wbac_guard_card.wbac-gfold #wbac_live_btn,
#wbac_guard_card.wbac-gfold #wbac_g_state{display:none}
#wbac_g_head{cursor:pointer;flex-wrap:wrap}
.wbac-goff{font-weight:500;margin:0}
#wbac_g_save.dirty{display:inline-flex;align-items:center;gap:10px}
#wbac_g_save.dirty::before{content:"";width:9px;height:9px;border-radius:50%;background:#ffc53d;flex:none;
  animation:adcDot 1.4s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){#wbac_g_save.dirty::before{animation:none}}
.wbcl-t th a[data-sort]{color:inherit;text-decoration:none}
.wbcl-t th a[data-sort]:hover{color:var(--accent)}
#wbcl_noord.on{background:var(--accent-tint,#f3eefe);border-color:var(--accent);color:var(--accent)}
@media (max-width:600px){
  .wbadc-ph{width:38px;height:48px}
  .wbadc-name{flex-basis:calc(100% - 60px);font-size:15px}
  .wbadc-right{margin-left:0;flex-wrap:wrap;width:100%}
  .wbadc-top{flex-wrap:wrap}
  .wbadc-main{flex-basis:100%}
  .wbadc-ctl{padding-left:0;gap:10px}
  #wbac_g_body .wbst-cols{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none}
  #wbac_g_body .wbst-c{grid-row:auto;grid-template-rows:auto auto auto}
  .wbcl-tgls{flex-wrap:wrap;gap:10px 16px}
  .wbcl-right{margin-left:0;flex-wrap:wrap}
  #wbcl_flt{width:100%!important}
  #wba_card_view .adx-card{padding-left:12px;padding-right:12px}
}
@media (max-width:600px){
  .wbcl-t td.wbcl-stk,.wbcl-t th.wbcl-stk{min-width:140px;max-width:170px;white-space:normal;box-shadow:1px 0 0 var(--line)}
}
/* Чат 181 (AUDIT_180, этап 4; решение Vladi В7): кампания e-Comet — наши правки минус-фраз он может откатить */
.wbac-warn{background:#fdf3e3;color:#92400e;border:1px solid #f5d9a8;border-radius:10px;padding:8px 12px;font-size:12.5px;margin:0 0 10px}

/* Чат 184 (слово Vladi): авто-ставки допущений «Упаковка» / «Страхование» — оформление как у ячейки
   «Чистый выкуп» в таблице (input.u-edit.oz-bo-real + скин кабинета #tbl_ozu .u-edit) */
#ozu_assume .ua-in input.oz-afill{background:var(--accent-tint2,#eef4ff);color:var(--accent-ink,#0047cc);border-color:var(--accent-line,#c7dcff);font-weight:600}
[data-tab="ozon_unit"].skin-cab #ozu_assume .ua-in input.oz-afill{border-color:var(--oz-line,#e3e8ef);color:var(--ink,#0f172a)}
/* Чат 185 (слово Vladi, sql/340): авто-ставки допущений юнитки WB (эквайринг, надбавка комиссии, хранение и
   приёмка на проданную шт) — то же оформление, что у авто-ячеек Unit Ozon */
#uv_assume .ua-in input.oz-afill{background:var(--accent-tint2,#eef4ff);color:var(--accent-ink,#0047cc);border-color:var(--accent-line,#c7dcff);font-weight:600}
[data-tab="unit"].skin-cab #uv_assume .ua-in input.oz-afill{border-color:var(--oz-line,#e3e8ef);color:var(--ink,#0f172a)}

/* ═══ Чат 195 (09.10.2026): карточка кампании «Рекламы»·WB — оформление «спокойное» (выбор Vladi из трёх
   превью: «берём третий вариант, спокойное»). Меняется ТОЛЬКО вид — блоки и кнопки стоят где стояли.
   Правило оформления: цвет — только у действия и состояния. Фиолетовым — то, что нажимается и правится
   (ставки, поля, ссылки показателей, залитые «Пополнить» и «Сохранить правила»), зелёным / оранжевым —
   состояние, остальное — спокойный тёмно-серый. Блоки без рамок с мягкой тенью, экономика — одной лентой
   цифр, таблица кластеров «зеброй». Всё под #wba_card_view (+ окна карточки поверх страницы) — свод раздела
   и карточка Ozon не затронуты. ⚠️ Вид кнопок .adx-go внутри карточки задан здесь правилом с id-областью,
   поэтому включённое состояние (#wbcl_noord.on) и янтарная платная «Позиции» (.wbrv-btn-vit)
   переобъявлены ниже — кнопку с особым видом или состоянием добавлять туда же. ═══ */
#wba_card_view,.wbac-modal,.wbcl-menu,.wbcl-thr{--line:#edf0f5;--muted:#6b7280;--ink:#111827}
#wba_card_view .adx-card{border:0;border-radius:14px;padding:18px 20px;margin-bottom:16px;
  box-shadow:0 1px 2px rgba(16,24,40,.05),0 6px 20px rgba(16,24,40,.05)}
#wba_card_view .adx-h{font-size:16px;font-weight:700;letter-spacing:-.1px}
/* кнопки: главная — залитая, остальные — спокойные серые */
#wba_card_view .adx-go,.wbac-modal .adx-go{border:1px solid #e2e8f0;background:#fff;color:#334155;font-weight:600;
  border-radius:9px;padding:4px 10px}
#wba_card_view .adx-go:hover,.wbac-modal .adx-go:hover{border-color:var(--accent);color:var(--accent);
  background:var(--accent-tint2)}
#wba_card_view .wbadc-acts .adx-go,#wba_card_view #wbac_back{padding:6px 12px}
#wba_card_view #wbac_dep,#wba_card_view #wbac_g_save{background:var(--accent);border:1px solid var(--accent);color:#fff;
  border-radius:9px;padding:6px 14px;font-weight:700}
#wba_card_view #wbac_dep:hover,#wba_card_view #wbac_g_save:hover{filter:brightness(1.08)}
/* особые виды и включённые состояния кнопок — после общего правила */
#wba_card_view #wbcl_noord.on{background:var(--accent-tint,#f3eefe);border-color:var(--accent);color:var(--accent)}
#wba_card_view .adx-go.wbrv-btn-vit{background:#fff7e6;border-color:#f0d59a;color:#92600a}
#wba_card_view .adx-go.wbrv-btn-vit:hover{background:#fdefd2;border-color:#e5c37e;color:#92600a}
.wbac-chips .adx-go.on{border-color:var(--accent)}
/* шапка */
#wba_card_view .wbadc-name{font-size:20px;font-weight:800;letter-spacing:-.2px}
#wba_card_view .wbadc-type,#wba_card_view .wbadc-chip{background:#f1f5f9;color:#475569;border:0;border-radius:999px;
  padding:3px 10px;font-weight:600;font-size:12px}
#wba_card_view .wbadc-chip:hover{background:var(--accent-tint);color:var(--accent-ink)}
#wba_card_view .wbadc-st{background:#e7f6ec;color:#166534;border-radius:999px;padding:3px 10px;font-weight:700;font-size:12px}
#wba_card_view .wbadc-st:has(.adx-dot.off){background:#f1f5f9;color:#475569}
#wba_card_view .wbadc-st:has(.adx-pill){background:none;padding:0}      /* ручная пауза — своя оранжевая метка */
#wba_card_view .adx-pill{padding:3px 10px}
#wba_card_view .wbadc-ctl{border-top-color:#edf0f5}
/* экономика — одна лента цифр; правая и нижняя линии плиток прячутся под край ленты */
#wba_card_view .adx-kpis{gap:0;border:1px solid #edf0f5;border-radius:12px;overflow:hidden;background:#fbfcfe}
#wba_card_view .adx-kpi{border:0;border-right:1px solid #edf0f5;border-bottom:1px solid #edf0f5;margin:0 -1px -1px 0;
  border-radius:0;background:transparent;padding:12px 16px}
#wba_card_view .adx-kl{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;font-weight:600}
#wba_card_view .adx-kv{font-size:22px;letter-spacing:-.3px;margin-top:4px}
/* Чат 195 (слово Vladi: «блок с плитками опусти ниже… а то они слишком слиплись»): воздух между шапкой блока и лентой */
#wba_card_view #wbac_eco{margin-top:16px}
/* настройки */
#wba_card_view .wbst-p{border-color:#edf0f5;border-radius:12px}
#wba_card_view .wbst-pt{background:#f8fafc;font-size:13px;font-weight:700;padding:10px 14px}
#wba_card_view .wbst-pt .zone{background:var(--accent-tint);color:var(--accent-ink);border-radius:999px;padding:1px 9px;font-size:11.5px}
#wba_card_view .wbst-c{border-right-color:#f1f5f9}
#wba_card_view .wbst-c .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;font-weight:600}
#wba_card_view .wbst-c .v{font-size:15px;font-weight:700;color:#111827}
#wba_card_view .wbst-c .v.hint{color:#111827;font-weight:600}
#wba_card_view .wbst-c .v.ok{color:#15803d}
#wba_card_view .wbst-c .v.warn{color:#b45309}
/* «правится» — фиолетовое на подложке: ставки и поля порогов */
#wba_card_view .wbst-c .v.my .adx-go,#wba_card_view .wbst-c .adx-search{background:var(--accent-tint2);
  border:1px solid var(--accent-line);color:var(--accent-ink);border-radius:8px;font-weight:700}
#wba_card_view .wbst-c .v.my .adx-go{font-size:15px;padding:3px 10px}
/* кластеры */
/* таблица: липкие ячейки берут фон из этих правил (wb_ads_clusters.js копирует вычисленный фон в ячейку) */
#wba_card_view .wbcl-t tr.wbcl-h1 th,#wba_card_view .wbcl-t tr.wbcl-h2 th{background:#f8fafc}
#wba_card_view .wbcl-t td{font-weight:500;padding-top:8px;padding-bottom:8px;border-bottom-color:#f1f5f9}
#wba_card_view .wbcl-t tr:nth-child(even):not(.wbcl-kid) td{background:#fbfcfe}
#wba_card_view .wbcl-t tr:hover:not(.wbcl-h1):not(.wbcl-h2) td{background:var(--accent-tint2)}
#wba_card_view .wbcl-mn .adx-go{border-color:transparent;background:transparent;color:#94a3b8}
#wba_card_view .wbcl-edit .dim{color:var(--accent-ink);opacity:.75}
/* журнал, предупреждение, окна «Статистика» и «График бюджета» */
#wba_card_view .adx-jr{font-size:12.5px;padding:7px 0;border-bottom:1px solid #f1f5f9}
#wba_card_view .adx-jr b:first-child{color:#111827;font-variant-numeric:tabular-nums}
#wba_card_view .wbac-warn{border:0;border-left:3px solid #f59e0b;border-radius:8px;background:#fff8eb}
.wbac-modal .box{border-radius:14px}
@media (max-width:600px){
  #wba_card_view .adx-card{padding:14px 12px}
  #wba_card_view .wbadc-name{font-size:16px}
  #wba_card_view .adx-kv{font-size:19px}
}
/* ═══ Чат 196 (09.10.2026): карточка кампании «Рекламы»·WB, блок «Настройки» ═══
   Значок подсказки (слово Vladi: «значок информации некрасивый — сделай как на скриншоте»): тонкий серый кружок
   с «i» из спрайта #wbac-i-info вместо буквы «ⓘ»; под курсором — цвет канала. */
.wbac-inf{width:15px;height:15px;flex:none;vertical-align:-3px;fill:none;stroke:#a3acb9;stroke-width:1.25;
  stroke-linecap:round;transition:stroke .12s}
.ump-hint:hover > .wbac-inf{stroke:var(--accent)}
/* Ставка правится прямо в ячейке (слово Vladi): поле с «−» и «+» на месте кнопки ставки, рядом «✓»; под полем —
   границы ставки (строка .s ячейки на время правки). На узкой панели, где поле с «−» и «+» вытолкнуло бы
   последнюю колонку за край, остаются ввод и «✓» (.tight ставит wb_ads_card.js по замеру). Цвет канала —
   только у рамки поля в работе и у «✓». */
.wbst-bid{position:relative;display:inline-flex;align-items:center;max-width:100%}
.wbst-bid.ed > .adx-go{display:none}
.wbst-bid-ed{display:inline-flex;align-items:center;gap:4px}
.wbst-bid-ed.tight .wbst-bid-b{display:none}
.wbst-bid-f{display:inline-flex;align-items:stretch;height:30px;border:1px solid var(--accent);border-radius:8px;
  background:#fff;overflow:hidden;box-shadow:0 0 0 3px var(--accent-tint,#f3eefe)}
.wbst-bid-i{width:54px;min-width:0;border:0;outline:0;background:none;padding:0 1px;text-align:center;
  font:inherit;font-size:15px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.wbst-bid-b{width:22px;border:0;background:none;padding:0;cursor:pointer;color:#64748b;font:inherit;
  font-size:16px;font-weight:500;line-height:1}
.wbst-bid-b:hover{background:var(--accent-tint2,#f8f5ff);color:var(--accent)}
.wbst-bid-ok{width:26px;height:30px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);
  color:#fff;cursor:pointer;padding:0;font:inherit;font-size:14px;font-weight:700;line-height:1}
.wbst-bid-ok:hover{filter:brightness(1.08)}
/* «Шкала ставок» — панель «Ставка · Поиск» (.wbst-pb; выбор Vladi из трёх превью: «пока слишком пёстро»). Моя ставка —
   главное число слева (правится в ячейке: поле лежит ПОВЕРХ числа, оно невидимо, но держит место — шкала справа не
   прыгает); подсказки WB — точками на линии по возрастанию (wb_ads_card.js bidScale: по порядку, не в масштабе),
   моя ставка — фиолетовая метка на линии, подсказка без значения — пунктиром. Заголовок панели без серой полосы,
   зона — обычным текстом через точку, подписи обычными буквами. Цвет канала — только у метки, тумблера и правки.
   Остальные панели «Настроек» оформлены по-прежнему (идём по блокам). */
#wbac_g_body .wbst-pb .wbst-pt{background:none;border-bottom:0;padding:12px 16px 4px;font-size:13.5px;gap:8px}
#wbac_g_body .wbst-pb .wbst-pt .zone{background:none;color:#111827;padding:0;border-radius:0;font-size:inherit;
  font-weight:700;margin-left:-2px}
#wbac_g_body .wbst-pb .wbst-pt .zone::before{content:"·";color:#94a3b8;font-weight:400;margin-right:6px}
#wbac_g_body .wbst-pb .wbst-pt .ss{font-size:11.5px;color:#94a3b8;margin-left:4px}
#wbac_g_body .wbst-pb .wbst-cols{display:flex;flex-wrap:wrap;align-items:stretch;gap:12px 0;padding:6px 16px 16px}
#wbac_g_body .wbst-pb .wbst-c{display:block;border:0;padding:8px 38px 0 0;min-width:172px;flex:none}
#wbac_g_body .wbst-pb .wbst-c .l{text-transform:none;letter-spacing:0;font-size:12px;font-weight:500;color:#6b7280}
#wbac_g_body .wbst-pb .wbst-c .v.my{margin-top:4px;font-size:24px;font-weight:800;letter-spacing:-.3px;color:#111827}
#wbac_g_body .wbst-pb .wbst-c .v.my .adx-go{background:none;border:0;border-bottom:1px dashed #cbd5e1;border-radius:0;
  padding:0 0 1px;color:#111827;font-size:24px;font-weight:800;letter-spacing:-.3px}
#wbac_g_body .wbst-pb .wbst-c .v.my .adx-go:hover{color:var(--accent);border-bottom-color:var(--accent);background:none}
#wbac_g_body .wbst-pb .wbst-c .s{font-size:11px;color:#9ca3af;margin-top:5px}
#wbac_g_body .wbst-pb .wbst-bid-pen{font-size:15px;font-weight:400;color:#94a3b8;margin-left:3px;vertical-align:3px;
  letter-spacing:0}
#wbac_g_body .wbst-pb .adx-go:hover .wbst-bid-pen{color:inherit}
#wbac_g_body .wbst-pb .wbst-bid.ed > .adx-go{display:inline-block;visibility:hidden}
#wbac_g_body .wbst-pb .wbst-bid-ed{position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:3}
#wbac_g_body .wbst-pb .wbst-bid-f,#wbac_g_body .wbst-pb .wbst-bid-ok{height:32px}
#wbac_g_body .wbst-pb .wbst-bid-i{font-size:17px;font-weight:800;letter-spacing:0}
.wbst-scale{flex:1;min-width:min(340px,100%);padding-top:2px}
.wbst-sc-cap{font-size:11.5px;color:#94a3b8;text-align:right}
.wbst-sc-cap span{display:inline-block}
.wbst-sc-cap span::first-letter{text-transform:uppercase}
.wbst-sc-in{position:relative;padding-top:24px}
.wbst-sc-line,.wbst-sc-na,.wbst-sc-fill{position:absolute;top:30px;height:2px;border-radius:2px}
.wbst-sc-line{background:#e2e8f0}
.wbst-sc-fill{background:var(--accent-line,#d6c8fb)}
.wbst-sc-na{height:0;border-top:2px dashed #e2e8f0;border-radius:0}
.wbst-sc-me{position:absolute;top:31px;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 0 3px #fff;z-index:2}
.wbst-sc-me::after{content:"моя";position:absolute;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);
  font-size:11px;font-weight:700;color:var(--accent-ink);white-space:nowrap}
.wbst-sc-pts{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr))}
.wbst-sc-pt{position:relative;text-align:center;padding:20px 4px 0}
.wbst-sc-pt i{position:absolute;top:3px;left:50%;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:#fff;
  border:2px solid #cbd5e1;z-index:1;box-sizing:border-box}
.wbst-sc-pt .v{font-size:14.5px;font-weight:600;color:#374151;white-space:nowrap}
.wbst-sc-pt .l{font-size:11px;font-weight:400;color:#6b7280;line-height:1.25;margin-top:1px}
.wbst-sc-pt.na i{border-style:dashed}
.wbst-sc-pt.na .v{color:#9ca3af}
@media (max-width:600px){
  .wbst-sc-pt{padding-left:1px;padding-right:1px}
  .wbst-sc-pt .l{font-size:10px;letter-spacing:-.1px}
  .wbst-sc-pt .v{font-size:13.5px}
}
/* Значки заголовков блоков карточки — наш набор вместо смайликов (слово Vladi: «да, значки выкладывай»); «кабинет»
   в строках списка «Кампании» — те же ползунки, что у ссылки на кабинет в шапке карточки */
#wba_card_view .adx-h > .wbcm-ic{width:18px;height:18px;margin-right:-1px}
#wba_card_view .wbst-pt .nm .wbcm-ic{width:16px;height:16px;margin-right:5px}
.wba-cab .wbcm-ic{width:15px;height:15px;vertical-align:-3px}
/* Значки на кнопках блоков — наш набор вместо смайликов (слово Vladi: «эти тоже смайлики замени»): «Сохранить правила»
   (белый на залитой кнопке), в «Кластерах» — «расход без заказов», «Артикул», «Органика» / «Остановить», «Позиции»
   (янтарный — цвет платной кнопки), шестерёнка таблицы. Значок и подпись — в одну линию. */
#wbac_g_save,#wbac_clusters .adx-go:has(> .wbcm-ic){display:inline-flex;align-items:center;gap:6px}
#wbac_g_save .wbcm-ic{--wbi:#fff;--wbi-t:rgba(255,255,255,.28)}
#wbac_clusters .adx-go > .wbcm-ic{width:15px;height:15px;vertical-align:0}
#wbac_clusters #wbcl_gear > .wbcm-ic{width:16px;height:16px}
/* «Ставка · Полки» — та же панель .wbst-pb, без шкалы: рядом с моей ставкой — «Мин. ставка WB» спокойным шрифтом */
#wbac_g_body .wbst-pb .wbst-c + .wbst-c{min-width:0;padding-right:0}
#wbac_g_body .wbst-pb .wbst-c .v.hint{font-size:15px;font-weight:600;color:#374151;margin-top:4px;line-height:35px}
/* «Триггеры паузы» — три правила с линией (.wbst-pr; выбор Vladi из превью, вариант А). Три колонки-правила: остаток,
   расход за день, ДРР от заказов; в каждой сверху порог (поле), снизу факт, между ними линия (wb_ads_card.js ruleLine):
   серый штрих «порог» и точка «сейчас» — зелёная, пока правило не сработало, оранжевая — сработало. Ячейки идут по
   колонкам (порог, линия, факт), строки общие — линии стоят на одном уровне. Оформление — как у панелей «Ставка»:
   заголовок без серой полосы, подписи обычными буквами, без вертикальных линий; поля порогов белые с серой рамкой,
   цвет канала — только у поля в работе. На телефоне правила стоят друг под другом. */
#wbac_g_body .wbst-p.wbst-pr .wbst-pt{background:none;border-bottom:0;padding:12px 16px 4px;font-size:13.5px;gap:8px}
#wbac_g_body .wbst-p.wbst-pr .wbst-cols{display:grid;grid-auto-flow:column;grid-template-columns:repeat(3,minmax(0,1fr));
  grid-template-rows:auto auto auto;grid-auto-columns:auto;gap:0 26px;padding:8px 16px 16px}
#wbac_g_body .wbst-p.wbst-pr .wbst-c{display:block;grid-row:auto;border:0;padding:0;min-width:0}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .l{text-transform:none;letter-spacing:0;font-size:12px;font-weight:500;color:#6b7280;
  white-space:normal}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .v{font-size:15px;font-weight:600;color:#374151;margin-top:4px}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .v.ok{color:#15803d}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .v.warn{color:#b45309}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .v:has(input){color:#6b7280;font-weight:500;font-size:13px}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .s{font-size:11px;color:#9ca3af;margin-top:4px;line-height:1.3;white-space:normal}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .adx-search{background:#fff;border:1px solid #d7dde6;color:#111827;border-radius:8px;
  font-weight:700;font-size:14px;padding:4px 6px;margin-left:0}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .adx-search:hover{border-color:#b8c0cc}
#wbac_g_body .wbst-p.wbst-pr .wbst-c .adx-search:focus{outline:0;border-color:var(--accent);
  box-shadow:0 0 0 3px var(--accent-tint,#f3eefe)}
.wbst-ml{position:relative;height:34px;margin:6px 0 2px}
.wbst-ml-line,.wbst-ml-fill{position:absolute;left:0;top:9px;height:2px;border-radius:2px}
.wbst-ml-line{right:0;background:#e2e8f0}
.wbst-ml-fill{background:#cbd5e1}
.wbst-ml-tick{position:absolute;top:3px;width:2px;height:14px;margin-left:-1px;border-radius:1px;background:#64748b;
  font-style:normal}
.wbst-ml-tick::after{content:"порог";position:absolute;top:calc(100% + 2px);left:50%;transform:translateX(-50%);
  font-size:10.5px;font-weight:400;color:#94a3b8;white-space:nowrap}
.wbst-ml-tick.l::after{left:0;transform:none}
.wbst-ml-tick.r::after{left:auto;right:0;transform:none}
.wbst-ml-dot{position:absolute;top:10px;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:#94a3b8;
  box-shadow:0 0 0 3px #fff;z-index:2}
.wbst-ml.ok .wbst-ml-dot{background:#16a34a}
.wbst-ml.warn .wbst-ml-dot{background:#d97706}
.wbst-ml.warn .wbst-ml-fill{background:#f4c98b}
.wbst-ml.none .wbst-ml-line{background:none;border-top:2px dashed #e2e8f0;height:0}
.wbst-ml-arrow{position:absolute;left:0;top:2px;font-size:13px;font-weight:400;color:#94a3b8}
/* «Биддер» (.wbst-pr.wbst-pd, выбор Vladi из превью — вариант А): зона «Поиск» — обычным текстом через точку, как у
   панелей «Ставка»; штрих на линии под текущей ставкой подписан «потолок» */
#wbac_g_body .wbst-p.wbst-pr .wbst-pt .zone{background:none;color:#111827;padding:0;border-radius:0;font-size:inherit;
  font-weight:700;margin-left:-2px}
#wbac_g_body .wbst-p.wbst-pr .wbst-pt .zone::before{content:"·";color:#94a3b8;font-weight:400;margin-right:6px}
#wbac_g_body .wbst-p.wbst-pr .wbst-pt .ss{font-size:11.5px;color:#94a3b8;margin-left:4px}
.wbst-ml.cap .wbst-ml-tick::after{content:"потолок"}
/* Чат 196 (слово Vladi): «Биддер» — первой панелью «Настроек» и на всю ширину блока; линия «потолок — сейчас» на
   широкой панели не растягивается дальше 420 px */
.wbst-grid.wbst-grid-1{grid-template-columns:minmax(0,1fr)}
.wbst-grid-1 .wbst-ml{max-width:420px}
/* Чат 196 (слово Vladi): «Триггеры паузы» и под ними «Автопополнение» — тоже на всю ширину блока. На широком экране
   пять блоков «Автопополнения» встают в один ряд в его порядке (время и сумма → мин. бюджет → текущий бюджет с
   порогом → счёт пополнения → последнее обновление); уже — три в ряд и два под ними, как было */
/* Чат 196 (выбор Vladi из превью — вариант 1; его слова: «минимальный бюджет чуть влево, чтобы отступ слева и справа
   был одинаковый; текущий бюджет с правой стороны поуже»). В один ряд пять равных колонок; первые три блока — группой
   .wbst-dl на месте трёх колонок: «Время и сумма» слева, «Тек. бюджет» (230 px) справа с отступом, «Мин. бюджет» ровно
   посередине между ними. На экране у́же 1500 px группа прозрачна для сетки — раскладка «три и два» и телефон прежние */
.wbst-dl{display:contents}
/* Чат 198: «пять в ряд» — только пока панель стоит на всю ширину (экран 1500–1799 px); от 1800 px «Автопополнение»
   стоит в половине ширины рядом с «Триггерами» — там три блока в ряд и два под ними */
@media (min-width:1500px) and (max-width:1799.98px){
  #wbac_g_body .wbst-grid-1 .wbst-p.wbst-pr.wbst-pd:has(#wbac_g_adep) .wbst-cols{grid-template-columns:repeat(5,minmax(0,1fr))}
  #wbac_g_body .wbst-grid-1 .wbst-p.wbst-pr.wbst-pd .wbst-dl{grid-column:1 / span 3;display:flex;justify-content:space-between;
    align-items:flex-start;gap:26px;min-width:0;padding-right:44px}
  #wbac_g_body .wbst-grid-1 .wbst-p.wbst-pr.wbst-pd .wbst-dl > .wbst-c{flex:none}
  #wbac_g_body .wbst-grid-1 .wbst-p.wbst-pr.wbst-pd .wbst-dl > .wbst-c:last-child{width:230px}
}
/* Чат 196 (слово Vladi): правило ДРР «Триггеров паузы» — в одну линию: «Макс. ДРР от заказов» → «Срез ставки» */
/* своя сетка 3 × 3: подписи, поля и пояснения двух ячеек стоят на общих строках — поля всегда на одной линии, даже
   если подпись на узкой панели перенеслась; стрелка — в строке полей */
#wbac_g_body .wbst-p.wbst-pr .wbst-rh{grid-row:span 3;display:grid;grid-template-columns:max-content max-content minmax(0,1fr);
  grid-template-rows:auto auto auto;column-gap:14px;align-content:start;min-width:0}
#wbac_g_body .wbst-p.wbst-pr .wbst-rh > .wbst-c{display:contents}
.wbst-rh > .wbst-c > .l{grid-row:1;align-self:end}
.wbst-rh > .wbst-c > .v{grid-row:2}
.wbst-rh > .wbst-c > .s{grid-row:3}
.wbst-rh > .wbst-c:first-child > *{grid-column:1}
.wbst-rh > .wbst-c:last-child > *{grid-column:3}
.wbst-rh-arrow{grid-column:2;grid-row:2;align-self:center;margin-top:4px;font-size:15px;line-height:1;font-weight:400;
  color:#94a3b8;cursor:help}
@media (max-width:600px){
  #wbac_g_body .wbst-p.wbst-pr .wbst-rh{grid-row:auto;margin-top:16px;padding-top:14px;border-top:1px solid #f1f5f9}
}
/* «Расписание показов» (.wbst-pr.wbst-ps, выбор Vladi из превью — вариант А). Под строкой «всегда (24/7) / задано»
   — лента недели .wbsg-map: семь тонких строк по 24 часа, закрашены часы показа («всегда» — светлая, заданное
   расписание — яркая); нажатие на ленту или «изменить» раскрывает сетку, при раскрытой сетке лента скрыта. Сетка
   .wbsg-t — скруглённые ячейки без рамок, тянется на ширину панели (на телефоне не уже 400 px, прокрутка внутри). */
#wbac_g_body .wbst-p.wbst-ps .wbst-sched{padding:6px 16px 12px;font-size:15px;font-weight:600;color:#374151;gap:10px}
#wbac_g_body .wbst-p.wbst-ps .wbst-sched .adx-go{font-size:12.5px;padding:3px 10px}
.wbsg-map{padding:0 16px 14px;cursor:pointer}
.wbsg-map[hidden]{display:none}
.wbsg-r{display:flex;align-items:center;gap:8px}
.wbsg-r + .wbsg-r{margin-top:2px}
.wbsg-r .d{width:16px;flex:none;font-size:9.5px;line-height:1;color:#94a3b8}
.wbsg-cells{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:1px;flex:1;min-width:0}
.wbsg-cells i{height:5px;border-radius:1.5px;background:#eef1f5}
.wbsg-cells i.on{background:var(--accent)}
.wbsg-map.all .wbsg-cells i.on{background:var(--accent-line,#d6c8fb)}
.wbsg-map:hover .wbsg-cells i.on{filter:brightness(1.08)}
.wbsg-ax{display:flex;justify-content:space-between;margin:4px 0 0 24px;font-size:9.5px;line-height:1;color:#94a3b8}
.wbsg-box{padding:0 16px 14px}
.wbsg-hint{margin:0 0 8px;font-size:11.5px;color:#94a3b8;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#wba_card_view .wbsg-hint .adx-go{font-size:12px;padding:2px 9px}
.wbsg-t{width:100%;min-width:400px;table-layout:fixed;border-collapse:separate;border-spacing:2px;font-size:10px;line-height:1}
.wbsg-t th{font-weight:500;color:#94a3b8;padding:1px 0;text-align:center;cursor:pointer}
.wbsg-t th:first-child{width:22px;text-align:left}
.wbsg-t th:hover{color:var(--accent)}
.wbsg-t td{height:17px;border-radius:4px;background:#f1f5f9;cursor:pointer}
.wbsg-t td:hover{box-shadow:inset 0 0 0 1.5px var(--accent-line,#d6c8fb)}
.wbsg-t td.on{background:var(--accent)}
@media (max-width:600px){
  #wbac_g_body .wbst-p.wbst-pr .wbst-cols{grid-auto-flow:row;grid-template-columns:minmax(0,1fr);grid-template-rows:none;gap:0}
  #wbac_g_body .wbst-p.wbst-pr .wbst-c:nth-child(3n+1):not(:first-child){margin-top:16px;padding-top:14px;
    border-top:1px solid #f1f5f9}
}
/* «Автопополнение» — время и сумма, счёт пополнения (.wbst-pr.wbst-pd; слова Vladi по скриншотам e-Comet, вариант
   «у каждого времени своя сумма», его порядок блоков: время и сумма → мин. бюджет → текущий бюджет с порогом → счёт
   пополнения → последнее обновление). Оформление — как у «Триггеров паузы», но блоки идут по строкам, три в ряд;
   линия «порог — сейчас» стоит внутри блока текущего бюджета. «Пополнений: N» — значение-ссылка, как моя ставка
   (тёмное, пунктир, карандаш) — открывает окно со строками «время → сумма»; «Счёт пополнения» — белое поле со
   стрелкой, окошко выбора лежит поверх страницы и не выходит за край экрана. */
#wbac_g_body .wbst-p.wbst-pr.wbst-pd .wbst-cols{grid-auto-flow:row;grid-template-rows:none;gap:18px 26px}
#wbac_g_body .wbst-p.wbst-pr.wbst-pd .wbst-ml{margin:8px 0 0}
.wbdp-link{border:0;background:none;padding:0 0 1px;border-bottom:1px dashed #cbd5e1;font:inherit;font-weight:700;
  color:#111827;cursor:pointer;text-align:left}
.wbdp-link:hover,.wbdp-link:focus-visible{color:var(--accent);border-bottom-color:var(--accent)}
.wbdp-link:focus{outline:0}
.wbdp-link .wbst-bid-pen{font-size:12px;font-weight:400;color:#94a3b8;margin-left:3px}
.wbdp-link:hover .wbst-bid-pen{color:inherit}
.wbdp-sel{display:inline-flex;align-items:center;gap:8px;border:1px solid #d7dde6;border-radius:8px;background:#fff;
  padding:4px 10px;font:inherit;font-size:14px;font-weight:700;color:#111827;cursor:pointer;max-width:100%}
.wbdp-sel:hover{border-color:#b8c0cc}
.wbdp-sel.open,.wbdp-sel:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint,#f3eefe)}
.wbdp-sel i{font-style:normal;font-size:11px;font-weight:400;color:#94a3b8}
.wbdp-pop{position:fixed;z-index:95;background:#fff;border-radius:12px;padding:8px;min-width:260px;
  max-width:calc(100vw - 16px);box-shadow:0 12px 34px rgba(15,23,42,.18),0 0 0 1px #edf0f5;
  font-size:13.5px;line-height:1.35;font-weight:500;color:#111827}
.wbdp-opt{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer}
.wbdp-opt:hover{background:#f8fafc}
.wbdp-opt input[type=radio]{accent-color:var(--accent);width:16px;height:16px;margin:0;flex:none}
.wbdp-opt b{font-weight:600}
.wbdp-opt small{display:block;font-size:11.5px;font-weight:400;color:#94a3b8}
.wbdp-opt .r{margin-left:auto;font-weight:600;color:#374151;white-space:nowrap;font-variant-numeric:tabular-nums}
.wbdp-pop hr{border:0;border-top:1px solid #f1f5f9;margin:6px 0}
.wbdp-modal .box{max-width:min(470px,94vw);padding:18px 20px}
.wbdp-modal .adx-h{display:flex;align-items:center;gap:8px;margin:0 0 6px}
.wbdp-note{font-size:12.5px;color:#6b7280;line-height:1.4;margin-bottom:12px}
.wbdp-rows{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow:auto;padding:3px 3px 3px 0}
.wbdp-row{display:flex;align-items:center;gap:10px}
.wbdp-row select,.wbdp-row input{border:1px solid #d7dde6;border-radius:8px;background:#fff;padding:6px 8px;font:inherit;
  font-size:14px;font-weight:700;color:#111827}
.wbdp-row select:focus,.wbdp-row input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint,#f3eefe)}
.wbdp-row input{width:92px;min-width:0;text-align:right}
.wbdp-row .u{color:#6b7280;font-size:13px}
.wbdp-row .sep{color:#94a3b8;font-weight:700;margin:0 -6px}
.wbdp-row .arrow{color:#94a3b8;margin:0 2px}
.wbdp-row .del{margin-left:auto;border:0;background:none;cursor:pointer;padding:5px;border-radius:8px;display:inline-flex}
.wbdp-row .del:hover{background:#fef2f2}
.wbdp-none{font-size:13px;color:#94a3b8;padding:6px 0}
.wbdp-add{margin-top:10px}
.wbdp-foot{display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid #f1f5f9}
.wbdp-total{margin-right:auto;font-size:13px;color:#374151}
.wbdp-total b{font-weight:700}
.wbdp-ok{background:var(--accent);border:1px solid var(--accent);color:#fff;border-radius:9px;padding:6px 16px;
  font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.wbdp-ok:hover{filter:brightness(1.08)}
@media (max-width:600px){
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd .wbst-cols{gap:16px}
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd .wbst-c:nth-child(3n+1):not(:first-child){margin-top:0;padding-top:0;border-top:0}
}
/* ═══ Чат 197 (10.10.2026): карточка кампании «Рекламы»·WB, блок «Поиск: Кластеры» — вариант А из превью (выбор Vladi) ═══
   Состав блока прежний (те же тумблеры, плитки, кнопки, столбцы) — меняется оформление, в стилистике панелей «Настроек».
   Панель правил: тумблеры и плитки в одной тонкой рамке; подписи обычными буквами, без серой полосы и вертикальных
   линий; то, что нажимается, — тёмное число с пунктиром (.wbcl-num), у фильтров рядом карандаш; фильтр с нулевыми
   порогами подписан «выключен». Под «Минус-кластеров» подпись появляется только у самого лимита WB (от 90 %):
   линию «занято — лимит» и «свободно N» Vladi убрал («нам это не нужно»). Плитки стоят ниже тумблеров с заметным
   отступом (слово Vladi). На экране у́же 1500 px плитки стоят «четыре и три». */
#wbac_clusters .wbcl-tgls{border:1px solid #edf0f5;border-bottom:0;border-radius:12px 12px 0 0;padding:13px 16px 2px;
  gap:10px 28px;margin-top:10px;flex-wrap:wrap}
#wbac_clusters .wbcl-tgl b{font-size:13.5px;font-weight:700;color:#111827}
#wbac_clusters .wbcl-kpis{display:grid;grid-template-columns:minmax(0,1.2fr) repeat(3,minmax(0,.9fr)) repeat(3,minmax(0,1.2fr));
  gap:16px 26px;border:1px solid #edf0f5;border-top:0;border-radius:0 0 12px 12px;background:none;margin:0 0 14px;
  padding:26px 16px 16px}
#wbac_clusters .wbcl-k{border:0;padding:0;min-width:0;flex:none}
#wbac_clusters .wbcl-k .l{text-transform:none;letter-spacing:0;font-size:12px;font-weight:500;color:#6b7280;white-space:normal}
#wbac_clusters .wbcl-k .l .wbac-inf{width:14px;height:14px}
#wbac_clusters .wbcl-k .v{font-size:15px;font-weight:600;color:#374151;margin-top:5px;white-space:normal}
#wbac_clusters .wbcl-k .v.clk{color:#111827;text-decoration:none}
.wbcl-num{border-bottom:1px dashed #cbd5e1;padding-bottom:1px}
.wbcl-num.off{color:#9ca3af;font-weight:500}
.wbcl-k .v:not(.clk) .wbcl-num{border-bottom:0}
.wbcl-pen{font-size:13px;font-weight:400;color:#94a3b8;margin-left:5px}
#wbac_clusters .wbcl-k .v.clk:hover .wbcl-num{color:var(--accent);border-bottom-color:var(--accent)}
#wbac_clusters .wbcl-k .v.clk:hover .wbcl-pen{color:var(--accent)}
#wbac_clusters .wbcl-k .s{font-size:11px;color:#b45309;margin-top:3px}
@media (max-width:1499px){
  #wbac_clusters .wbcl-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:600px){
  #wbac_clusters .wbcl-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;padding-top:18px}
}
/* строка управления — всё одной высоты и на одной линии (период — календарём, тем же, что у «Экономики за окно»);
   таблица плотнее и спокойнее: тумблер строки меньше, строки ниже,
   заголовок отсортированного столбца — цветом канала, значки подсказок в шапке таблицы появляются при наведении на
   столбец (на экране без мыши видны всегда). Заголовки столбцов и значения под ними — по центру (слово Vladi),
   название кластера — по левому краю; название группы метрик — по центру, пока её дни свёрнуты. */
#wbac_clusters .wbcl-ctl{gap:8px 10px;margin:0 0 10px}
#wbac_clusters .wbcl-ctl .adx-go,#wbac_clusters .wbcl-ctl select.adx-search,#wbac_clusters .wbcl-ctl input.adx-search{
  height:30px;box-sizing:border-box}
#wbac_clusters .wbcl-ctl .wbcl-pop input.adx-search{height:26px}
/* поле «Фильтр» стояло на 4 px выше кнопок: у общего .adx-search нижний отступ 8 px (слово Vladi — выровнять) */
#wbac_clusters .wbcl-ctl input.adx-search{margin:0}
#wbac_clusters .wbcl-ctl .rnp-period-btn{height:30px;box-sizing:border-box}
#wbac_clusters .wbcl-t tr.wbcl-h2 th,#wbac_clusters .wbcl-t td{text-align:center}
#wbac_clusters .wbcl-t td.wbcl-name{text-align:left}
/* название столбца «Кластер» — по центру столбца и на уровне ВЕРХНЕЙ строки двухстрочных названий («Целевая», «Плюс»,
   «Частотность»; слова Vladi); кнопки «Развернуть все» в шапке больше нет */
#wbac_clusters .wbcl-t tr.wbcl-h2 th.tl{text-align:center;vertical-align:top}
/* Чат 198 (слово Vladi): «№» и «Комментарий» — на той же верхней строке, что «Кластер» */
#wbac_clusters .wbcl-t tr.wbcl-h2 th.wbcl-vt{vertical-align:top}
/* «Тек. позиция», «Тек. ставка», «Макс. ставка» — жирными, и название столбца, и значения (слово Vladi) */
#wbac_clusters .wbcl-t tr.wbcl-h2 th.wbcl-b{font-weight:800;color:#111827}
/* длинные названия групп метрик — в две строки («Конверсия / в корзину, %»; слово Vladi): первая строка шапки выше,
   названия прижаты к низу, вторая строка шапки липнет под ней */
#wbac_clusters .wbcl-t tr.wbcl-h1 th{height:38px;vertical-align:bottom;line-height:1.25}
#wbac_clusters .wbcl-t tr.wbcl-h2 th{top:38px}
/* названия групп метрик («Показы, шт», «Клики, шт», «CTR, %», «Позиции»…) — почти чёрные (слово Vladi: «сделай цвет
   текста более чёрный»; были серо-синие #475569) */
#wbac_clusters .wbcl-t th.mgrp a{color:#111827}
/* состав кластера: под раскрытым кластером — его запросы с частотой за 30 дней (строки .wbcl-ph, серым); стрелка и
   пустое место под неё — одной ширины, названия стоят на одной линии */
.wbcl-exp{display:inline-block;width:17px;text-align:center}
#wbac_clusters .wbcl-t tr.wbcl-ph td{color:#6b7280;font-weight:400}
#wbac_clusters .wbcl-t th.mgrp[colspan="1"]{text-align:center}
#wbac_clusters .wbcl-st .wbadc-tgl{width:28px;height:16px}
#wbac_clusters .wbcl-st .wbadc-tgl::after{width:12px;height:12px;top:2px;left:2px}
#wbac_clusters .wbcl-st .wbadc-tgl.on::after{left:14px}
#wbac_clusters .wbcl-t td{padding-top:5px;padding-bottom:5px}
#wbac_clusters .wbcl-mn .adx-go{padding:0 6px;line-height:20px}
#wbac_clusters .wbcl-t th a[data-sort].on{color:var(--accent-ink,#6d28d9)}
/* Чат 198 (слово Vladi: «значок информации — чтобы он всегда был виден… если нужно, расширь столбцы»): значок
   подсказки в шапке таблицы виден всегда (с Чата 197 появлялся при наведении). Он стоит в строке сразу за названием
   столбца, а в начало той же строки модуль ставит пустой отступ той же ширины (.wbcl-hsp = значок 13 + зазор 3) —
   название остаётся ровно по центру столбца (⚔️ без отступа вторая строка «Целевая / фраза» уезжала влево), столбец
   расширяется только там, где значку не хватало места. Значок и отступ на 7 px заходят в поля ячейки (у ячейки шапки
   поле 8 px) — столбец шире не на 32, а самое большее на 18 px */
#wbac_clusters .wbcl-t th .ump-hint{margin-left:3px;margin-right:-7px}
#wbac_clusters .wbcl-t th .ump-hint .wbac-inf{width:13px;height:13px;vertical-align:-2px}
.wbcl-hsp{display:inline-block;width:16px;margin-left:-7px}
/* Значки внутри таблицы, меню «⋯», окон и расписания кластера — наш набор вместо смайликов (wb_ads_clusters.js RIC,
   символы #wbac-i-crown / plus / ban / lock / play / pause в спрайте карточки). Цвет — только у состояния: корона и
   плюс включены — цвет канала (корона залита), выключены — серый контур (под курсором — цвет канала); замок — серый,
   оранжевый при паузе по контролю органики; часы — цвет канала, серые вне расписания; запрет после названия — серый;
   тележка у позиции и в меню — янтарная (платный замер витрины); на кнопках окон — цветом текста кнопки. */
.wbcl-ic{width:17px;height:17px;vertical-align:-4px}
.wbcl-ico .off .wbcl-ic{--wbi:#cbd5e1;--wbi-t:none;stroke-width:1.8}
.wbcl-ico:hover .off .wbcl-ic{--wbi:var(--accent)}
.wbcl-ico .on .wbcl-ic-crown{--wbi-t:var(--accent)}
.wbcl-clock.off .wbcl-ic{--wbi:#94a3b8;--wbi-t:rgba(148,163,184,.2)}
.wbcl-lock .wbcl-ic{--wbi:#64748b;--wbi-t:rgba(100,116,139,.16)}
.wbcl-lock.org .wbcl-ic{--wbi:#d97706;--wbi-t:rgba(245,158,11,.22)}
.wbcl-ic.mut{--wbi:#94a3b8;--wbi-t:none;width:14px;height:14px;vertical-align:-2px}
.wbcl-vit .wbcl-ic,.wbcl-vitd .wbcl-ic{--wbi:#c77700;--wbi-t:rgba(245,158,11,.22);width:14px;height:14px;vertical-align:-2px;
  margin-right:2px}
.wbcl-vitd .wbcl-ic{--wbi:#94a3b8;--wbi-t:none}
.wbcl-menu a{display:flex;align-items:center;gap:9px}
.wbcl-menu a .wbcl-ic{width:16px;height:16px;vertical-align:0}
.wbcl-menu a .wbcl-ic-coin{--wbi:#c77700;--wbi-t:rgba(245,158,11,.22)}
.wbcl-pt{display:inline-flex;align-items:center;gap:7px}
.wbcl-pt .wbcl-ic{width:18px;height:18px;vertical-align:0}
.wbcl-phr button.adx-btn,#wbcl_sc_save{display:inline-flex;align-items:center;gap:6px}
.wbcl-phr button.adx-btn .wbcl-ic,#wbcl_sc_save .wbcl-ic{--wbi:currentColor;--wbi-t:none;width:15px;height:15px;vertical-align:0}
.wbadc-tgl.ring-red{border-radius:999px;outline-offset:2px}
/* «Тек. позиция», бесплатный замер витрины (кнопка «Органика»): зелёное число — товар стоит сам; тёмное с серой
   пометкой «рк» — место занято нашей рекламной вставкой */
.wbcl-org.rk{color:#111827}
.wbcl-org.rk i{font-style:normal;font-size:9.5px;font-weight:600;color:#94a3b8;margin-left:2px;vertical-align:1px}
/* «Комментарий» и «Макс. ставка» правятся прямо в ячейке (слово Vladi; wb_ads_clusters.js cellEdit): поле — то же,
   что у ставки в «Настройках» (.wbst-bid-*), лежит ПОВЕРХ ячейки по её центру — соседние столбцы не сдвигаются */
#wbac_clusters .wbcl-t td.ed{position:relative;overflow:visible}
.wbcl-ed{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:4px;
  white-space:nowrap;cursor:default}
.wbcl-ed .wbst-bid-f,.wbcl-ed .wbst-bid-ok{height:28px}
.wbcl-ed .wbst-bid-i{font-size:13.5px}
.wbcl-ed.txt .wbst-bid-i{width:220px;text-align:left;padding:0 9px;font-weight:500}
/* «Время показа» кластера — та же спокойная сетка .wbsg-t, что у «Расписания показов» в «Настройках» */
.wbcl-schedp{padding:14px 16px}
.wbcl-schedp .wbsg-hint{margin:6px 0 8px}
.wbcl-schedp .wbsg-t{max-width:760px}
/* ═══ Чат 198 (10.10.2026): «Поиск: Кластеры» — стрелки и цифры таблицы (выбор Vladi из превью: стрелки — вариант 3,
   цифры — вариант 3) ═══
   Стрелка раскрытия — закрашенный треугольник (.wbcl-tri, рисуется маской — цвет берёт у текста): серый, под курсором
   и у раскрытого — цветом канала; у кластера и группы раскрытый смотрит вниз, у группы метрик в шапке — влево.
   Раньше это были значки шрифтом «›», «⌄», «‹» 11–13 px («маленькие, невыразительные»). */
.wbcl-tri{display:inline-block;width:13px;height:13px;vertical-align:middle;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5.4 3.5c0-.7.8-1.1 1.4-.7l5.6 4.5c.5.4.5 1 0 1.4l-5.6 4.5c-.6.4-1.4 0-1.4-.7z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5.4 3.5c0-.7.8-1.1 1.4-.7l5.6 4.5c.5.4.5 1 0 1.4l-5.6 4.5c-.6.4-1.4 0-1.4-.7z'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .15s ease}
#wbac_clusters a.wbcl-exp{color:#64748b}
#wbac_clusters a.wbcl-exp:hover,#wbac_clusters a.wbcl-exp.open{color:var(--accent)}
#wbac_clusters a.wbcl-exp.open .wbcl-tri{transform:rotate(90deg)}
#wbac_clusters .wbcl-t th.mgrp a .wbcl-tri{width:12px;height:12px;margin-left:5px;position:relative;top:-1px;color:#64748b}
#wbac_clusters .wbcl-t th.mgrp a:hover .wbcl-tri,#wbac_clusters .wbcl-t th.mgrp a.open .wbcl-tri{color:var(--accent)}
#wbac_clusters .wbcl-t th.mgrp a.open .wbcl-tri{transform:rotate(180deg)}
/* Цифры таблицы — «наш шрифт, легче» (слова Vladi: «тяжеловато цифры воспринимаются»): обычная толщина 400 (была 500),
   тёмно-серые, и цифры обычной ширины — у общей таблицы .adx-t стоит tabular-nums (все цифры одной ширины), в Onest
   такие цифры широкие, число выглядело разреженным. «Тек. позиция», «Тек. ставка», «Макс. ставка» по-прежнему жирнее
   остальных (слово Vladi, Чат 197) — 600 (было 700); целевая позиция — 500. Строки состава кластера (.wbcl-ph)
   остаются серыми. Правило значений — с tr:not(.wbcl-ph): иначе общее правило цифр перебивает выделенные столбцы. */
#wbac_clusters .wbcl-t td{font-variant-numeric:normal}
#wbac_clusters .wbcl-t tr:not(.wbcl-ph) td.num{font-weight:400;color:#1f2937}
#wbac_clusters .wbcl-t tr:not(.wbcl-ph) td.wbcl-b,#wbac_clusters .wbcl-t tr:not(.wbcl-ph) td.wbcl-b .dim,
#wbac_clusters .wbcl-t tr:not(.wbcl-ph) td.wbcl-b b,#wbac_clusters .wbcl-t tr:not(.wbcl-ph) td.wbcl-b .wbcl-org{font-weight:600}
#wbac_clusters .wbcl-t td.wbcl-edit b{font-weight:500}
/* Строка под курсором выделяется ЦЕЛИКОМ (слово Vladi: «влево почему-то не выделяется… так удобнее работать»): фон
   закреплённых ячеек строки (⋯, №, тумблер, роли, «Кластер») записан в саму ячейку — без него под ними просвечивали
   бы уезжающие столбцы, — поэтому общее правило подсветки их не красило. Метку .wbcl-lead ставит stickLead. */
#wba_card_view .wbcl-t tr:hover:not(.wbcl-h1):not(.wbcl-h2) td.wbcl-lead{background:var(--accent-tint2)!important}
/* Окно ⚙ таблицы кластеров: скрепка «закрепить слева» у левых столбцов (слово Vladi: «значок скрепки, чтобы я сам
   выбирал столбцы, которые прилипают к левой части»). Скрепка цветом канала — столбец закреплён; серая — нет. Список
   стоит тремя частями: закреплённые → остальные левые столбцы → группы метрик, между частями тонкая черта (.sep). */
.wbcl-gl{display:flex;flex-direction:column;gap:5px}
.wbcl-pop label.sep{border-top:1px solid var(--line);padding-top:6px;margin-top:1px}
.wbcl-pinb{margin-left:auto;border:0;background:none;padding:0 0 0 14px;cursor:pointer;line-height:0}
.wbcl-pinb .wbcm-ic{width:15px;height:15px;vertical-align:0;stroke-width:2;--wbi:#cbd5e1}
.wbcl-pinb:hover .wbcm-ic,.wbcl-pinb.on .wbcm-ic{--wbi:var(--accent)}
.wbcl-pop .adx-sub .wbcm-ic{width:13px;height:13px;vertical-align:-2px;stroke-width:2}
/* Чат 198, этап 2 (план Vladi; образец — e-Comet): в столбце «Позиции» чёрным — рекламная позиция (статистика WB),
   под ней мелко зелёным — органическая (место карточки без нашей рекламы, утренний замер робота); «>300» — серым.
   Зелёный темнее, чем у «Тек. позиции»: число стоит и в цветных ячейках светофора раскрытых дней. */
.wbcl-pa,.wbcl-po{display:block;line-height:14px}
.wbcl-pa:empty{display:none}
#wbac_clusters .wbcl-t td .wbcl-po{font-size:10.5px;line-height:12px;font-weight:600;color:#15803d;cursor:help}
#wbac_clusters .wbcl-t td .wbcl-po.out{color:#9ca3af;font-weight:500}
/* ═══ Чат 198 (10.10.2026): значки свода «Рекламы»·WB — набор карточки кампании вместо смайликов (слово Vladi: «в разделе
   „Реклама“ все иконки у всех разделов приведи к такому же виду, как внутри кампании») ═══
   Шапки блоков — двухтонные значки цветом канала; «Пауза» и «Запуск» — цветом своей кнопки (красный / зелёный),
   «Пополнить» — цветом канала; предупреждения — янтарный треугольник; важность пунктов «Что сделать сегодня» и
   вердикты разбора робота — цветные точки (.wba-sev). Всё под #wba_main_view: у Ozon те же классы кнопок. */
#wba_main_view .adx-h > .wbcm-ic{width:18px;height:18px;vertical-align:-4px;margin-right:3px}
#wba_main_view .wba-ic-s{width:14px;height:14px;vertical-align:-2px;margin-right:4px}
#wba_main_view .wba-ic-ok{--wbi:#16a34a;--wbi-t:rgba(22,163,74,.16);width:16px;height:16px;vertical-align:-3px;margin:0 5px}
#wba_main_view .wba-okline .wba-ic-ok{margin-left:0}
.wba-sev{display:inline-block;width:11px;height:11px;border-radius:50%;flex:none;background:#2563eb}
.wba-sev.bad{background:#dc2626}
.wba-sev.warn{background:#f59e0b}
.wba-sev.ok{background:#16a34a}
.wba-sev.off{background:#cbd5e1}
#wba_r_alerts .adx-al > span:first-child{display:inline-flex;padding-top:4px}
#wba_reco .rc-gh .wba-sev{margin-right:5px;vertical-align:-1px}
#wba_reco .rc-head .wbcm-ic{width:17px;height:17px;vertical-align:-4px}
#wba_reco .rc-gh .wbcm-ic,#wba_reco .rc-meta .wbcm-ic,#wba_reco .rc-warn .wbcm-ic{width:15px;height:15px;vertical-align:-3px}
#wba_main_view .adx-abtn .wbcm-ic,#wba_main_view .adx-rbtn .wbcm-ic{--wbi:currentColor;--wbi-t:none;width:15px;height:15px;vertical-align:-3px}
#wba_main_view .adx-abtn .wbcm-ic{margin-right:5px}
#wba_main_view .adx-abtn:not(.stop):not(.go) .wbcm-ic,#wba_main_view .adx-rbtn:not(.stop):not(.go) .wbcm-ic{--wbi:var(--accent);
  --wbi-t:rgba(124,58,237,.17)}
#wba_main_view .adx-apanel .ap-h .wbcm-ic{width:16px;height:16px;vertical-align:-3px;margin-right:6px}
/* ═══ Чат 198 (10.10.2026): «Настройки» карточки кампании — панели в ТРИ строки (слова Vladi: «на первой строке в три
   ячейки уместить биддер, ставку поиска и ставку полок; на второй — триггеры паузы и автопополнение; расписание
   оставить на третьей… только расположение»; из трёх превью выбран вариант «В · Биддер и поиск») ═══
   Четыре прежних ряда .wbst-grid становятся прозрачными, панели встают в одну сетку блока из 60 долей:
   «Биддер» 23 · «Ставка · Поиск» 23 · «Ставка · Полки» 14 / «Триггеры паузы» 33 · «Автопополнение» 27 / расписания
   30 · 30. Только на экране от 1800 px: у́же панели не помещаются (на 1500 px третье правило «Триггеров» обрезается,
   на 1700 px у него пропадает «%») — там расстановка прежняя. Содержимое, цвета и оформление панелей не менялись. */
@media (min-width:1800px){
  #wbac_g_body:not([hidden]){display:grid;grid-template-columns:repeat(60,minmax(0,1fr));gap:12px}
  #wbac_g_body > .wbst-grid{display:contents}
  #wbac_g_body .wbst-p{grid-column:span 30;min-width:0}
  #wbac_g_body .wbst-p.wbst-k-bid,#wbac_g_body .wbst-p.wbst-k-s{grid-column:span 23}
  #wbac_g_body .wbst-p.wbst-k-r{grid-column:span 14}
  #wbac_g_body .wbst-p.wbst-k-prot{grid-column:span 33}
  #wbac_g_body .wbst-p.wbst-k-dep{grid-column:span 27}
  /* правило ДРР «Триггеров» — друг под другом (слово Vladi: «как до этого было»): «Макс. ДРР от заказов» на строке
     порогов, стрелка вниз на строке линий, «Срез ставки» на строке фактов — строки общие с двумя соседними правилами */
  #wbac_g_body .wbst-p.wbst-pr .wbst-rh{grid-template-columns:minmax(0,1fr);grid-template-rows:subgrid;column-gap:0;
    /* слово Vladi: «чтобы отступ слева от них и справа был одинаковый — чуть правее двинуть»: столбик правила ДРР стоит
       посередине между концом линии соседнего правила и правым краем панели (зазор сетки слева 26 px, поле панели
       справа 16 px — разницу съедает правый отступ 10 px) */
    justify-self:center;width:max-content;max-width:calc(100% - 10px);margin-right:10px}
  #wbac_g_body .wbst-p.wbst-pr .wbst-rh > .wbst-c{display:block;grid-column:1}
  #wbac_g_body .wbst-p.wbst-pr .wbst-rh > .wbst-c:first-child{grid-row:1}
  #wbac_g_body .wbst-p.wbst-pr .wbst-rh > .wbst-c:last-child{grid-row:3}
  #wbac_g_body .wbst-p.wbst-pr .wbst-rh-arrow{grid-column:1;grid-row:2;justify-self:start;align-self:center;margin:0 0 0 16px;
    display:inline-block;transform:rotate(90deg)}
}
/* Чат 198: «Автопополнение» в половине ширины — «как у триггеров» (выбор Vladi из трёх превью, вариант 1). Три колонки:
   слева «Время и сумма» и под ней «Счёт пополнения»; посередине порог «Мин. бюджет», под ним линия «порог — сейчас»
   и факт «Тек. бюджет» — тот же ритм, что у соседних «Триггеров»; справа «Последнее обновление». Блок «Тек. бюджет»
   прозрачен для сетки (display:contents) — его линия, подпись, значение и пояснение стоят на своих строках. Блоки
   узнаются по местам в разметке renderGuard: «Время и сумма» — #wbac_dp_times, «Мин. бюджет» и «Тек. бюджет» — второй
   и третий в группе .wbst-dl, «Счёт пополнения» — #wbac_dp_acc, «Последнее обновление» — последний блок панели.
   Только от 1800 px; у́же панель стоит на всю ширину — там «пять в ряд» (1500–1799 px) или «три и два». */
@media (min-width:1800px){
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd.wbst-k-dep .wbst-cols{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(5,auto);gap:0 26px}
  #wbac_g_body #wbac_dp_times{grid-column:1;grid-row:1}
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd.wbst-k-dep .wbst-dl > .wbst-c:nth-child(2){grid-column:2;grid-row:1}
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd.wbst-k-dep .wbst-cols > .wbst-c:last-child{grid-column:3;grid-row:1}
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd.wbst-k-dep .wbst-dl > .wbst-c:nth-child(3){display:contents}
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd.wbst-k-dep .wbst-dl > .wbst-c:nth-child(3) > .wbst-ml{grid-column:2;grid-row:2;margin:6px 0 2px;max-width:none}
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd.wbst-k-dep .wbst-dl > .wbst-c:nth-child(3) > .l{grid-column:2;grid-row:3}
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd.wbst-k-dep .wbst-dl > .wbst-c:nth-child(3) > .v{grid-column:2;grid-row:4}
  #wbac_g_body .wbst-p.wbst-pr.wbst-pd.wbst-k-dep .wbst-dl > .wbst-c:nth-child(3) > .s{grid-column:2;grid-row:5}
  #wbac_g_body #wbac_dp_acc{grid-column:1;grid-row:3 / span 3}
}
/* Чат 198 (слова Vladi: «размер шрифта сделай как у ставки… также можно его подчеркнуть, оформление прямо такое же» →
   «текущий бюджет нужно сделать крупным» → «и в „Триггерах паузы“ тоже крупно — значение „Расход сегодня“»): числа
   «Тек. бюджет» («Автопополнение») и «Расход сегодня» («Триггеры паузы») — как «Моя ставка»: 24 px, толщина 800,
   пунктир снизу. Цвет остаётся по состоянию (зелёный — в пределах порога, оранжевый — за порогом): это факты, а не
   поля, поэтому без карандаша. Действует на любом экране. */
#wbac_g_body .wbst-bigv{display:inline-block;font-size:24px;font-weight:800;letter-spacing:-.3px;line-height:1.2;
  border-bottom:1px dashed #cbd5e1;padding-bottom:1px}

/* ===== телефон: меню разделов (Чат 201) =====
   На экране уже 820 px боковое меню раньше просто прятали (.sidebar{display:none} выше) и ничем не заменяли:
   перейти в другой раздел было нечем, и на телефоне сайт открывали «версией для ПК». Теперь меню выезжает поверх
   страницы по кнопке «☰». Кнопку, затемнение и полоску .mob-top создаёт static/mob_nav.js: кнопка живёт в шапке
   открытого раздела (.oz-head), а где такой шапки нет — в полоске над разделом. На большом экране ничего из этого
   не видно и в шапки разделов не вставляется. */
.mob-burger,.mob-back,.mob-top{display:none}
@media (max-width:820px){
  .sidebar{display:flex;position:fixed;top:0;left:0;bottom:0;height:auto;width:min(300px,86vw);z-index:950;
    transform:translateX(-105%);transition:transform .2s;overflow:auto}
  html.mob-nav .sidebar{transform:none;box-shadow:0 0 40px rgba(16,24,40,.25)}      /* тень только у открытого меню — у спрятанного она светилась у края */
  html.mob-nav .mob-back{display:block;position:fixed;inset:0;z-index:940;background:rgba(15,23,32,.35)}
  .mob-burger{display:inline-flex;align-items:center;justify-content:center;align-self:center;width:36px;height:36px;
    border-radius:10px;border:1px solid var(--line,#e7ebef);background:var(--card,#fff);font:inherit;font-size:18px;
    line-height:1;color:var(--ink,#001a34);cursor:pointer;flex:none;padding:0}
  .mob-top{display:flex;align-items:center;gap:10px;padding:10px 22px 0}
  .mob-top:empty{display:none}
}

/* ---------- Чат 203 (sql/372): «Уведомлялки» → «Телефон» — уведомления на телефон по событиям разделов (static/notify_phone.js) ---------- */
/* вертикальная черта в переключателе: слева рассылки по каналам, справа — уведомления на телефон */
.ntf-seg-div{width:1px;align-self:stretch;background:#cfd8e3;margin:4px 5px}
/* кто включил уведомления у себя */
.ntf-ph-top{background:var(--card,#fff);border:1px solid #e6ebf0;border-radius:12px;padding:12px 16px;margin-top:14px}
.ntf-ph-h{font-weight:650;font-size:14px;display:flex;gap:8px;align-items:baseline}
.ntf-ph-h span{font-size:12px;color:#8a97a5;font-weight:400}
.ntf-ph-people{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 8px}
.ntf-ph-man{display:inline-flex;flex-direction:column;gap:1px;border:1px dashed #cfd8e3;border-radius:10px;padding:6px 10px;font-size:11.5px;color:#8a97a5;min-width:0}
.ntf-ph-man b{font-size:12.5px;color:var(--ink);font-weight:600}
.ntf-ph-man.on{border-style:solid;border-color:#b7e3c9;background:#f0fbf4;color:#12805c}
.ntf-ph-hint{font-size:12px;line-height:1.5}
/* этапы раздела внутри блока */
.ntf-ph-zone{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#5b6b7c;margin:14px 0 8px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.ntf-ph-zone span{font-size:11.5px;font-weight:400;text-transform:none;letter-spacing:0;color:#8a97a5}
/* как уведомление выглядит на телефоне */
.ntf-ph-ex{display:flex;gap:10px;align-items:flex-start;background:#f7f9fb;border:1px solid #e6ebf0;border-radius:12px;padding:9px 11px;margin:0 0 10px;font-size:12.5px;line-height:1.4;color:#5b6b7c}
.ntf-ph-ex b{display:block;color:var(--ink);font-weight:650;margin-bottom:1px}
.ntf-ph-ico{flex:none;width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#7b2cbf 0 50%,#005bff 50% 100%);color:#fff;font-size:8.5px;font-weight:800;display:flex;align-items:center;justify-content:center;letter-spacing:.2px}
/* кому приходит */
.ntf-ph-whom{grid-column:1 / -1}
.ntf-ph-whom b{font-size:12.5px;font-weight:600}
.ntf-ph-rule{font-style:normal;font-size:11.5px;color:#8a97a5;display:block;margin-top:1px}
.ntf-ph-who{display:flex;gap:6px;flex-wrap:wrap}
.ntf-ph-chip{border:1px solid #d8e0e9;border-radius:999px;padding:3px 10px;font:inherit;font-size:12px;color:#5b6b7c;background:#fff;cursor:pointer}
.ntf-ph-chip.on{background:var(--ntf-soft,#e8f1ff);border-color:var(--ntf-bd,#9dbcf5);color:var(--ntf-ai,#0047cc);font-weight:600}
.ntf-ph-chip.nodev{border-style:dashed}
.ntf-ph-more{margin:16px 0 4px;font-size:12.5px}
