:root{
  /* ── Light theme (default) — «Терминал»: прохладный слейт-корпус + белые экраны, моно-данные, оранжевый-индикатор ── */
  --bg:#EEF0F2;--surface:#FFFFFF;--surface2:#F7F8FA;--surface3:#FBFBFC;--border:#E4E7EA;--border2:#D3D8DD;
  /* бренд-акцент LESS (#FF3F00) — палитра «Общего», точка входа (не мелькает WB на старте; setWorkspace ставит цвет источника) */
  --wb:#FF3F00;--wb2:#E03700;--wb-dim:rgba(255,63,0,.12);  /* «Терминал»: единый бренд-акцент (был слейт; воркспейс-цвета сведены к бренду) */
  /* дубовый вторичный акцент (кожа/дерево) — бенто-карточки, мини-бары, нейтральные выделения */
  --oak:#B7895A;--oak2:#9c7045;--oak-soft:#F0E6D8;
  /* бренд-акцент «Терминал» — оранжевый #FF3F00 как индикатор прибора (дозированно) */
  --accent:#FF3F00;--accent-ink:#D63500;--accent-soft:#FFEDE7;--label:#727983;
  --text:#14171A;--text2:#4C525A;--text3:#9298A0;   /* cool ink / body / muted (Терминал) */
  --row-line:rgba(76,82,90,.14);   /* тусклая линия строк (прохладная) */
  --green:#1C7C49;--green-dim:rgba(28,124,73,.12);--amber:#C2840E;--red:#C5372C;
  --sa2-over:#7C4DD6;   /* перевоз (сверх плана) в анализе поставок — фиолетовый, резко контрастен зелёному, отличается от amber/red/slate */
  --amber-dim:rgba(194,132,14,.10);   /* фон-подсветка (sup-hi/imp-top/баннеры) — раньше не был определён (аудит №22) */
  --muted:var(--text3);               /* приглушённый текст fm-модалок (алиас) */
  --radius:6px;--r-sm:5px;--r-md:6px;--r-lg:8px;--r-card:8px;--font:'Montserrat',sans-serif;--mono:'Spline Sans Mono','JetBrains Mono',monospace;--mono2:'IBM Plex Mono',monospace;
  /* easing (Emil Kowalski / taste): ease-out для входящих/UI, drawer для модалей. Никогда ease-in для UI. */
  --ease-out:cubic-bezier(.23,1,.32,1);--ease-drawer:cubic-bezier(.32,.72,0,1);
  /* премиум-слоистые тени (мягкий ambient + контактная) */
  --shadow-sm:0 1px 2px rgba(35,31,32,.05);
  --shadow:0 2px 8px rgba(35,31,32,.05),0 1px 2px rgba(35,31,32,.04);
  --shadow-lg:0 14px 34px -10px rgba(35,31,32,.16),0 4px 10px -4px rgba(35,31,32,.07);
  --shadow-xl:0 28px 64px -16px rgba(35,31,32,.22),0 8px 18px -8px rgba(35,31,32,.10);
  /* стекло для липких поверхностей (шапка/сайдбар) + кольцо фокуса + фоновая подсветка приложения */
  --glass:#FBFBFC;--glass-brd:var(--border2);
  --ring:0 0 0 3px var(--wb-dim);
  --grad-app:none;
  --bgvid-op:0;--bgvid-blur:48px;--bgvid-sat:.75;   /* фоновое видео-амбиент в light ВЫКЛЮЧЕН (решение юзера 10.07; гейт в bgVideoApply, op:0 — страховка) */
}
[data-theme="dark"]{
  /* ── Dark theme «Терминал» — прохладный графит near-black, единый оранжевый акцент ── */
  --bg:#0F0F11;--surface:#17171A;--surface2:#1E1E22;--surface3:#141416;--border:#26262B;--border2:#33333A;
  /* бренд-акцент LESS (см. light); на тёмном чуть осветлён для контраста */
  --wb:#FF5A2B;--wb2:#FF7A52;--wb-dim:rgba(255,90,43,.18);  /* «Терминал»: единый бренд-акцент (dark, чуть осветлён) */
  --accent:#FF5A2B;--accent-ink:#FF7A52;--accent-soft:rgba(255,90,43,.16);--label:#8A8A84;
  --oak:#C99A66;--oak2:#d8af7e;--oak-soft:rgba(201,154,102,.18);
  --text:#ECECEA;--text2:#9C9C96;--text3:#6E6E69;   /* cool near-white / body / muted (Терминал dark) */
  --row-line:rgba(255,255,255,.06);   /* тусклая линия строк (тёмная прохладная) */
  --green:#46C07B;--green-dim:rgba(70,192,123,.14);--amber:#E0A53A;--red:#F0625A;
  --sa2-over:#A98BF0;   /* перевоз (dark) — фиолетовый */
  --amber-dim:rgba(224,165,58,.14);
  --muted:var(--text3);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow:0 2px 10px rgba(0,0,0,.36),0 1px 2px rgba(0,0,0,.3);
  --shadow-lg:0 16px 38px -12px rgba(0,0,0,.6),0 5px 12px -6px rgba(0,0,0,.45);
  --shadow-xl:0 30px 70px -18px rgba(0,0,0,.7),0 10px 22px -10px rgba(0,0,0,.5);
  --glass:#121214;--glass-brd:#26262B;
  --grad-app:none;
  --bgvid-op:.45;--bgvid-blur:18px;--bgvid-sat:1.05;   /* фоновое видео-амбиент (dark) */
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.1px}
/* фоновая подсветка приложения — мягкая глубина за контентом (премиум, не плоско) */
body::before{content:"";position:fixed;inset:0;background:var(--grad-app);pointer-events:none;z-index:0}
.app{position:relative;z-index:1}
/* фоновое видео-амбиент (Higgsfield, static/video/bg-{light|dark}.mp4) — едва заметное, за всем интерфейсом.
   src ставит bgVideoApply() из applyTheme(); blur глушит полосы градиента и апскейл 720p; scale прячет края blur */
.bgvid{position:fixed;inset:0;width:100vw;height:100vh;object-fit:cover;z-index:0;pointer-events:none;opacity:0;filter:blur(var(--bgvid-blur,18px)) saturate(var(--bgvid-sat,1));transform:scale(1.1);transition:opacity 1.6s var(--ease-out,ease)}
.bgvid.on{opacity:var(--bgvid-op,.5)}
@media (prefers-reduced-motion:reduce){.bgvid{display:none}}
/* выделение текста — тёплое, под акцент воркспейса */
::selection{background:color-mix(in srgb,var(--wb) 22%,transparent);color:var(--text)}
/* видимый фокус по клавиатуре (a11y, не мешает мыши) */
:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-sm)}
/* тонкие премиум-скроллбары */
*{scrollbar-width:thin;scrollbar-color:var(--border2) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--border2);border:3px solid transparent;background-clip:content-box;border-radius:20px}
::-webkit-scrollbar-thumb:hover{background:var(--text3);background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}
.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.sidebar{background:var(--surface3);border-right:1px solid var(--border2);padding:22px 0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}
.main{display:flex;flex-direction:column;min-width:0}
.logo{padding:0 18px 20px;border-bottom:1px solid var(--border);margin-bottom:14px}
.logo-mark{display:flex;align-items:center;gap:11px;cursor:pointer;user-select:none;transition:transform .16s var(--ease-out)}
.logo-mark:active{transform:scale(.97)}
/* знак: кожаная плашка с брендовым градиентом + срез дуба (годичные кольца — ДНК бренда) */
.logo-icon{position:relative;width:36px;height:36px;background:linear-gradient(140deg,#FF7A45 0%,#FF3F00 56%,#E32E00 100%);border-radius:11px;flex-shrink:0;box-shadow:0 6px 14px -4px rgba(255,63,0,.5),0 2px 4px -1px rgba(230,46,0,.25),inset 0 1px 0 rgba(255,255,255,.32),inset 0 -1px 0 rgba(0,0,0,.14);overflow:hidden}
.logo-icon svg{position:absolute;inset:0;width:100%;height:100%;display:block}
/* блик — проезжает по знаку при наведении; вне hover мгновенно возвращается в исходную */
.logo-icon::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.38) 47%,rgba(255,255,255,.1) 53%,transparent 66%);transform:translateX(-120%)}
@media(hover:hover) and (pointer:fine){.logo-mark:hover .logo-icon::after{transform:translateX(120%);transition:transform .55s var(--ease-out)}}
.logo-text{font-size:16px;font-weight:800;letter-spacing:-.2px;color:var(--text);display:flex;align-items:baseline;line-height:1.1}
.logo-dot{width:5px;height:5px;border-radius:1.2px;background:var(--accent);margin:0 6px 0 3px;box-shadow:0 2px 6px -1px rgba(255,63,0,.55)}
.logo-corp{font-size:9.5px;font-weight:700;letter-spacing:.2em;color:var(--text3)}
.logo-sub{font-size:9.5px;color:var(--text3);font-family:var(--mono);letter-spacing:.7px;margin-top:2.5px;text-transform:uppercase}
@media(prefers-reduced-motion:reduce){.logo-mark{transition:none}.logo-mark:active{transform:none}.logo-icon::after{display:none}}
.nav-section{padding:0 12px;margin-bottom:4px}
.nav-label{font-size:9.5px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:1.4px;padding:14px 8px 5px}
.nav-item{position:relative;display:flex;align-items:center;gap:11px;padding:8.5px 11px;border-radius:10px;cursor:pointer;color:var(--text2);transition:background .16s var(--ease-out),color .16s var(--ease-out),transform .16s var(--ease-out);font-size:13px;font-weight:500;border:none;background:none;width:100%;text-align:left}
@media (hover:hover) and (pointer:fine){.nav-item:hover{background:var(--surface2);color:var(--text)}}
.nav-item:active{transform:scale(.985)}
/* активный пункт «Терминал» (S3): тёмная заливка = «выбранный канал» */
.nav-item.active{background:var(--text);color:var(--bg);font-weight:600}
.nav-item.active::before{display:none}
.nav-item svg{width:16px;height:16px;opacity:.62;flex-shrink:0;transition:opacity .16s var(--ease-out)}
.nav-item:hover svg,.nav-item.active svg{opacity:1}
.nav-badge{margin-left:auto;background:var(--wb);color:#fff;font-size:10px;font-family:var(--mono);padding:1px 6px;border-radius:20px}
.ov-staff-repl{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.02em;background:var(--wb-dim);color:var(--wb2);padding:2px 8px;border-radius:20px;cursor:help;vertical-align:middle}
.ov-staff-stores{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-sm);padding:6px}
.ov-staff-store{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text);padding:5px 7px;border-radius:var(--r-sm);cursor:pointer;transition:background .12s}
.ov-staff-store:hover{background:var(--surface2)}
.ov-staff-store input{cursor:pointer;flex-shrink:0}
/* иерархия сотрудников «Общий»: аккордеон город→подразделение */
.ov-staff-acc{margin:8px 0;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);overflow:hidden}
.ov-staff-acc .ov-staff-acc{margin:8px 10px;background:var(--surface2)}
.ov-staff-acc-hd{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;user-select:none;transition:background .12s}
.ov-staff-acc-hd:hover{background:var(--surface2)}
.ov-staff-caret{color:var(--text3);font-size:11px;width:12px;flex-shrink:0}
.ov-staff-acc-title{font-weight:600;font-size:14px;color:var(--text)}
.ov-staff-acc .ov-staff-acc .ov-staff-acc-title{font-size:13px;font-weight:600}
.ov-staff-acc-n{margin-left:auto;font-size:12px;color:var(--text3);font-family:var(--mono)}
.ov-staff-acc-body{padding:4px 12px 12px}
.ov-staff-acc .ov-staff-acc .ov-staff-acc-body{padding:4px 10px 8px}
/* гибкая оргструктура: drag-and-drop + действия над разделом */
.ov-staff-acc-hd.ov-drop-hot{background:var(--wb-dim,rgba(203,17,171,.12));box-shadow:inset 0 0 0 2px var(--wb,#cb11ab)}
.ov-unit-city{font-size:11px;font-weight:500;color:var(--text3);background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:1px 6px;margin-left:6px}
.ov-unit-acts{display:inline-flex;gap:2px;margin-left:8px;opacity:0;transition:opacity .12s}
.ov-staff-acc-hd:hover .ov-unit-acts{opacity:1}
.ov-unit-btn{border:none;background:transparent;cursor:pointer;font-size:13px;line-height:1;padding:3px 5px;border-radius:6px;color:var(--text2)}
.ov-unit-btn:hover{background:var(--surface);color:var(--text)}
.ov-evt-row{transition:background .12s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.ov-evt-row:hover{background:var(--surface2)}}
/* Креатив: анализ заглавного фото */
.cr-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.cr-fchip{border:1px solid var(--border);background:var(--surface);color:var(--text2);font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:20px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:border-color .14s var(--ease-out),background .14s,color .14s,transform .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.cr-fchip:hover{border-color:var(--wb)}}
.cr-fchip:active{transform:scale(.96)}
.cr-fchip.on{background:var(--wb);color:#fff;border-color:var(--wb)}
.cr-fcount{font-family:var(--mono);font-size:11px;background:var(--surface2);color:var(--text2);padding:0 6px;border-radius:10px;min-width:18px;text-align:center}
.cr-fchip.on .cr-fcount{background:rgba(255,255,255,.25);color:#fff}
.cr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(184px,1fr));gap:12px}
.cr-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r,12px);overflow:hidden;transition:transform .15s var(--ease-out),box-shadow .15s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.cr-card:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(0,0,0,.12)}}
.cr-photo{position:relative;aspect-ratio:4/5;background:var(--surface2);overflow:hidden}
.cr-photo img{width:100%;height:100%;object-fit:cover;display:block}
.cr-photo.cr-noimg{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#efe7db,#d8c3a6)}
.cr-photo.cr-noimg::before{content:"нет фото";color:var(--text3);font-size:12px}
.cr-badge{position:absolute;left:7px;top:7px;font-size:9.5px;font-weight:700;padding:3px 7px;border-radius:20px;backdrop-filter:blur(6px);background:rgba(255,255,255,.82);color:var(--ink,#231F20)}
.cr-badge.bad{background:color-mix(in srgb,var(--red) 92%,transparent);color:#fff}
.cr-badge.weak{background:color-mix(in srgb,var(--amber) 92%,transparent);color:#231F20}
.cr-body{padding:9px 10px 10px}
.cr-title{font-family:var(--mono,monospace);font-weight:700;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cr-name{font-size:10.5px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:1px 0 7px}
.cr-metrics{display:grid;grid-template-columns:1fr 1fr;gap:5px 8px}
.cr-m{display:flex;flex-direction:column}
.cr-m-v{font-weight:700;font-size:13px;font-family:var(--mono,monospace)}
.cr-m-l{font-size:9.5px;color:var(--text3);line-height:1.25}
.cr-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}
.cr-badge.neu{background:rgba(90,86,80,.92);color:#fff}
.cr-badge.warn{background:color-mix(in srgb,var(--amber) 94%,transparent);color:#231F20}
.cr-badge.oak{background:color-mix(in srgb,var(--oak) 94%,transparent);color:#fff}
.cr-badge.mut{background:rgba(154,147,139,.92);color:#fff}
.cr-sub{font-size:11px;color:var(--red,#e5484d);font-weight:600;margin:0 0 8px}
.cr-conf{font-size:9px;color:var(--text3)}
.cr-trendrow{margin:9px 0 0}
.cr-trend{font-size:11px;font-weight:700;font-family:var(--mono,monospace);padding:2px 7px;border-radius:6px;background:var(--surface2)}
.cr-trend.dn{color:var(--red,#e5484d)} .cr-trend.up{color:var(--green,#2e9e5b)}
.cr-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.cr-chip{font-size:10px;line-height:1.3;padding:3px 7px;border-radius:6px;background:var(--surface2);color:var(--text2);border:1px solid var(--border)}
.cr-chip.k-fbs{border-color:rgba(90,86,80,.4)} .cr-chip.k-keywords{border-color:rgba(255,179,0,.5)}
.cr-chip.k-season{border-color:rgba(183,137,90,.5)} .cr-chip.k-stock{border-color:rgba(229,72,77,.4)}
.cr-ab{font-size:11px;color:var(--text2);margin-top:9px;padding:7px 9px;background:var(--surface2);border-radius:7px}
.cr-ab a{color:var(--accent,#FF3F00);font-weight:600}
.ov-staff-sub{display:flex;align-items:baseline;gap:8px;margin:10px 0 4px}
.ov-staff-sub-title{font-weight:600;font-size:13px;color:var(--oak,var(--text2))}
.ov-staff-sub-n{font-size:11px;color:var(--text3);font-family:var(--mono)}
.conn-status{margin:0 12px 0;padding:12px;border-radius:var(--radius);border:1px solid var(--border)}
.status-dot{width:7px;height:7px;border-radius:50%;background:var(--text3);display:inline-block;margin-right:6px}
.status-dot.ok{background:var(--green);box-shadow:0 0 6px var(--green)}
.status-dot.err{background:var(--red)}
.status-text{font-size:12px;color:var(--text2)}
.topbar{padding:13px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;background:var(--glass);flex-wrap:wrap;position:sticky;top:51px;z-index:35}
.topbar-title{font-size:15px;font-weight:700;letter-spacing:-.3px}
/* Глобальная навигация по разделам — в шапке (сверху над контентом), стекло */
.topnav{display:flex;align-items:center;gap:3px;padding:9px 18px;background:var(--glass);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap;position:sticky;top:0;z-index:40}
.topnav-tab{position:relative;border:none;background:transparent;color:var(--text2);font-size:13px;font-weight:600;padding:7px 15px;border-radius:9px;cursor:pointer;font-family:var(--font);transition:background .16s var(--ease-out),color .16s var(--ease-out),transform .16s var(--ease-out);letter-spacing:-.1px}
@media (hover:hover) and (pointer:fine){.topnav-tab:hover{background:var(--surface2);color:var(--text)}}
.topnav-tab:active{transform:scale(.97)}
/* активный канал «Терминал»: ink-текст + оранжевый индикатор у нижней кромки шапки */
.topnav-tab.active{background:transparent;color:var(--text);font-weight:700}
.topnav-tab.active::after{content:"";position:absolute;left:13px;right:13px;bottom:-9px;height:2px;background:var(--accent)}
/* ── Статус-строка-пульт «Терминал» (тёмная полоса под каналами): путь + валюта + обновление ── */
.statusbar{display:flex;align-items:center;gap:16px;background:#15181C;color:#C9CDD2;font-family:var(--mono);font-size:11px;letter-spacing:.3px;padding:7px 18px;flex-wrap:wrap}
.statusbar .sb-path b{color:#fff;font-weight:600}
.statusbar .sb-path .sb-sep{color:#6f7680;margin:0 6px}
.statusbar .sb-path em{color:#FF7A52;font-style:normal}
.statusbar .sb-sp{flex:1}
.statusbar .sb-ctl{color:#9aa0a8;display:inline-flex;align-items:center;gap:7px}
.statusbar .sb-tg{display:inline-flex;border:1px solid rgba(255,255,255,.16);border-radius:5px;overflow:hidden}
.statusbar .sb-tg b{padding:2px 9px;color:#9aa0a8;font-weight:600;cursor:pointer;transition:background .14s var(--ease-out),color .14s}
.statusbar .sb-tg b.on{background:var(--accent);color:#fff}
.statusbar .sb-upd{color:#9aa0a8;display:inline-flex;align-items:center;gap:6px}
.statusbar .sb-upd i{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 2px rgba(28,124,73,.3)}
.statusbar .sb-rfr{color:#fff;cursor:pointer;transition:color .14s}
@media (hover:hover) and (pointer:fine){.statusbar .sb-rfr:hover{color:#FF9B7A}.statusbar .sb-tg b:not(.on):hover{color:#fff}}
/* Настройки — глобальная кнопка снизу сайдбара */
.sb-settings{margin:0 12px 14px}
/* Права доступа (в Настройках) */
.acc-tbl{width:100%;border-collapse:collapse;font-size:12px;margin-top:10px}
.acc-tbl th,.acc-tbl td{padding:7px 8px;border-bottom:1px solid var(--border);text-align:left}
.acc-tbl th{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--text3);font-weight:600}
.acc-tbl td.c,.acc-tbl th.c{text-align:center}

/* пасхалка: выглядывает снизу-справа на странице Настроек */
.settings-peek{position:fixed;right:30px;bottom:0;width:150px;height:auto;z-index:5;pointer-events:none;transform:translateY(32%);filter:drop-shadow(0 3px 12px rgba(0,0,0,.35));animation:peekUp .5s ease-out}
@keyframes peekUp{from{transform:translateY(100%)}to{transform:translateY(32%)}}
/* ── Настройки (редизайн 2026-07-08): вкладки сверху + карточки подключений ── */
.settings-shell{width:100%;max-width:1360px;margin:0 auto;padding:20px 28px 48px}
.set-tabsrow{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.set-tabsrow .subtabs{margin-bottom:0}
.rate-mini{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:5px 7px 5px 11px;box-shadow:var(--shadow-sm)}
.rate-mini-l{font-size:11.5px;font-weight:600;color:var(--text3)}
.rate-mini-in{width:64px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:5px 8px;font-size:12.5px;font-family:var(--mono);color:var(--text);text-align:right;outline:none;transition:border-color .15s var(--ease-out),box-shadow .15s}
.rate-mini-in:focus{border-color:var(--wb);box-shadow:0 0 0 3px var(--wb-dim)}
.rate-mini-icon{width:28px;height:28px;border-radius:7px;border:1px solid var(--border);background:var(--surface2);color:var(--text2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:15px;line-height:1;transition:background .15s,color .15s,border-color .15s,transform .16s var(--ease-out)}
.rate-mini-icon:hover{background:var(--surface);color:var(--wb2);border-color:var(--border2)}
.rate-mini-icon:active{transform:scale(.94)}
.set-pane{animation:setFade .28s var(--ease-out)}
@keyframes setFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.set-pane{animation:none}}
.set-mcol{column-width:400px;column-gap:16px}
.set-mcol>.set-card{break-inside:avoid;margin:0 0 16px}
.set-mcol>.set-grouphd{column-span:all;margin:2px 2px 10px}
.set-mcol>.set-grouphd:first-child{margin-top:0}
@media(max-width:860px){.set-mcol{column-count:1}}
#set-pane-profile{max-width:640px}
#set-pane-update{max-width:900px}
.set-grouphd{font-size:10.5px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:1.1px}
.set-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow);transition:border-color .16s}
.set-card:hover{border-color:var(--border2)}
.set-chd{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.set-mark{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;color:#fff;flex-shrink:0;font-family:var(--mono)}
.set-ct{font-size:14px;font-weight:700;letter-spacing:-.2px}
.set-cdesc{font-size:11.5px;color:var(--text3);margin-top:1px}
.set-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:4px 11px;border-radius:20px;white-space:nowrap}
.set-pill .dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.set-pill.ok{background:var(--green-dim);color:var(--green)}
.set-pill.ok .dot{background:var(--green);box-shadow:0 0 6px var(--green)}
.set-pill.off{background:var(--surface2);color:var(--text3);border:1px solid var(--border)}
.set-pill.off .dot{background:var(--text3)}
.set-pill.warn{background:var(--amber-dim);color:var(--amber)}
.set-pill.warn .dot{background:var(--amber)}
.set-tag{font-size:11px;font-weight:700;padding:1px 8px;border-radius:5px}
.set-tag.g{background:var(--green-dim);color:var(--green)}
.set-tag.a{background:var(--amber-dim);color:var(--amber)}
.set-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:520px){.set-two{grid-template-columns:1fr}}
.set-stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.set-statc{background:var(--surface2);border-radius:10px;padding:13px 15px}
.set-statc .l{font-size:11.5px;color:var(--text3)}
.set-statc .v{font-size:17px;font-weight:700;margin-top:3px;letter-spacing:-.3px}
.topbar-count{font-size:12px;color:var(--text2);background:var(--surface2);padding:2px 8px;border-radius:20px;font-family:var(--mono)}
.spacer{flex:1}
.btn{display:inline-flex;align-items:center;gap:6px;padding:6.5px 13px;border-radius:var(--r-sm);font-size:12px;font-family:var(--font);font-weight:600;cursor:pointer;transition:background .16s var(--ease-out),border-color .16s,box-shadow .16s,transform .16s var(--ease-out);border:none;letter-spacing:-.1px}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--wb);color:#fff}
.btn-primary:hover{filter:brightness(1.06)}
.btn-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none;filter:none}
.btn-ghost{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-ghost:hover{background:var(--surface);border-color:var(--border2);box-shadow:var(--shadow-sm)}
.btn svg{width:13px;height:13px}
.toolbar{padding:10px 24px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.search-wrap{position:relative;flex:1;max-width:320px}
.search-wrap svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:var(--text3);pointer-events:none}
.search-input{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:6px 10px 6px 30px;font-size:13px;font-family:var(--font);color:var(--text);outline:none}
.search-input:focus{border-color:var(--wb)}
.search-input::placeholder{color:var(--text3)}
select.fs{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:12px;font-family:var(--font);color:var(--text);outline:none;cursor:pointer}
input[type=date].fs{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:12px;font-family:var(--mono);color:var(--text);outline:none}
/* единый стиль для всех .fs-инпутов (текст/число и пр.) — чтобы поля ввода были одинаковыми */
input.fs{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:12px;font-family:var(--font);color:var(--text);outline:none;box-sizing:border-box}
input.fs::placeholder{color:var(--text3)}
input.fs:focus,input[type=date].fs:focus,select.fs:focus,.search-input:focus,.form-input:focus{border-color:var(--wb);box-shadow:0 0 0 3px var(--wb-dim)}
input.fs:hover,select.fs:hover,.search-input:hover,.form-input:hover{border-color:var(--border2)}
/* универсальная сортировка простых таблиц */
.sortable-table th{cursor:pointer;user-select:none;white-space:nowrap}
.sortable-table th[data-sdir=asc]::after{content:' ▲';font-size:9px;opacity:.65}
.sortable-table th[data-sdir=desc]::after{content:' ▼';font-size:9px;opacity:.65}
.content{flex:1;padding:18px 24px;overflow-y:auto}
.products-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.product-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;cursor:pointer;transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.product-card:hover{border-color:var(--border2);transform:translateY(-2px);box-shadow:var(--shadow-lg)}}
.card-img{width:100%;aspect-ratio:1;background:var(--surface2);display:flex;align-items:center;justify-content:center;overflow:hidden}
.card-img img{width:100%;height:100%;object-fit:cover}
.card-body{padding:10px}
.card-nm{font-family:var(--mono);font-size:10px;color:var(--wb2);margin-bottom:3px}
.card-title{font-size:12px;font-weight:500;line-height:1.3;margin-bottom:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-meta{display:flex;flex-wrap:wrap;gap:3px}
.tag{font-size:10px;padding:1px 6px;border-radius:20px;font-family:var(--mono)}
.tag-brand{background:var(--wb-dim);color:var(--wb2)}
.tag-cat{background:var(--surface2);color:var(--text2);border:1px solid var(--border)}
.tag-price{background:var(--green-dim);color:var(--green)}
.products-table{width:100%;border-collapse:collapse}
.products-table th{font-size:10px;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;padding:7px 10px;border-bottom:1px solid var(--border);border-right:1px solid var(--row-line);text-align:left;white-space:nowrap}
.products-table td{padding:9px 10px;border-bottom:1px solid var(--row-line);border-right:1px solid var(--row-line);font-size:12px;vertical-align:middle}
.products-table th:last-child,.products-table td:last-child{border-right:none}
.products-table tr{cursor:pointer}.products-table tr:hover td{background:var(--surface2)}
.nm-id{font-family:var(--mono);font-size:10px;color:var(--wb2)}
.photo-thumb{width:32px;height:32px;border-radius:6px;object-fit:cover}
.photo-ph{width:32px;height:32px;border-radius:6px;background:var(--surface2);display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:13px}
.pagination{display:flex;align-items:center;gap:8px;padding:14px 0 0}
.page-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:4px 10px;font-size:12px;cursor:pointer;font-family:var(--font);transition:border-color .15s,color .15s,transform .16s var(--ease-out)}
.page-btn:hover:not(:disabled){border-color:var(--wb);color:var(--wb2)}
.page-btn:active:not(:disabled){transform:scale(.95)}
.page-btn:disabled{opacity:.4;cursor:not-allowed}
.page-info{font-size:11px;color:var(--text2);font-family:var(--mono)}
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s}
.modal-overlay.open{opacity:1;pointer-events:all}
.modal{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-lg);width:92%;max-width:780px;max-height:88vh;overflow-y:auto;padding:24px;animation:slideUp .2s ease;box-shadow:var(--shadow-lg)}
@keyframes slideUp{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
.modal-header{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px}
.modal-img{width:72px;height:72px;border-radius:var(--r-sm);object-fit:cover;background:var(--surface2);flex-shrink:0}
.modal-title{font-size:16px;font-weight:600;line-height:1.3;margin-bottom:3px}
.modal-close{margin-left:auto;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-sm);padding:5px 9px;color:var(--text2);cursor:pointer;font-size:12px;flex-shrink:0;transition:background .12s,color .12s,border-color .12s}
.modal-close:hover{background:var(--surface);border-color:var(--border2);color:var(--text)}
.modal-section{margin-bottom:16px}
.modal-section-title{font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.8px;color:var(--text3);margin-bottom:8px}
.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.kv-item{background:var(--surface2);border-radius:8px;padding:9px 11px}
.kv-key{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px;font-family:var(--mono)}
.kv-val{font-size:12px;font-weight:500;color:var(--text)}
.chars-list{display:flex;flex-wrap:wrap;gap:5px}
.char-tag{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:11px}
.char-name{color:var(--text3);margin-right:3px}
.settings-panel{padding:24px}
.form-group{margin-bottom:14px}
.form-label{display:block;font-size:12px;font-weight:500;color:var(--text2);margin-bottom:5px}
.form-input{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;font-size:13px;font-family:var(--mono);color:var(--text);outline:none}
.form-input:focus{border-color:var(--wb)}
.form-hint{font-size:11px;color:var(--text3);margin-top:4px;line-height:1.5}
.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:56px 20px;color:var(--text2)}
.empty-icon{font-size:30px;width:72px;height:72px;border-radius:50%;background:var(--surface2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;margin-bottom:14px;box-shadow:var(--shadow)}
.empty-title{font-size:15px;font-weight:600;letter-spacing:-.2px;color:var(--text);margin-bottom:5px}
.loading-spinner{display:flex;align-items:center;justify-content:center;padding:50px}
.spinner{width:26px;height:26px;border:2px solid var(--border2);border-top-color:var(--wb);border-radius:50%;animation:spin .6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.error-banner{background:color-mix(in srgb,var(--red) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--red) 32%,var(--border));border-radius:var(--r-sm);padding:10px 14px;color:var(--red);font-size:12px;margin-bottom:12px}
.info-banner{background:color-mix(in srgb,var(--amber) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--amber) 32%,var(--border));border-radius:var(--r-sm);padding:10px 14px;color:var(--amber);font-size:12px;margin-bottom:12px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
/* группа сортировки товаров: иконка + select + кнопка направления в одной обводке */
.sort-group{display:inline-flex;align-items:center;background:var(--surface2);border:1px solid var(--border);border-radius:8px;height:32px;overflow:hidden;transition:border-color .15s,box-shadow .15s}
.sort-group:hover{border-color:var(--border2)}
.sort-group:focus-within{border-color:var(--wb);box-shadow:0 0 0 3px var(--wb-dim)}
.sort-group .sort-ico{width:14px;height:14px;color:var(--text3);margin-left:9px;flex-shrink:0}
.sort-group select{appearance:none;-webkit-appearance:none;background:transparent;border:none;outline:none;cursor:pointer;color:var(--text);font-family:var(--font);font-size:12px;padding:0 8px 0 7px;height:100%}
.sort-group .sort-dir{display:flex;align-items:center;justify-content:center;height:100%;width:30px;background:transparent;border:none;border-left:1px solid var(--border);cursor:pointer;color:var(--text2);transition:background .12s,color .12s}
.sort-group .sort-dir:hover{background:var(--surface);color:var(--wb2)}
.sort-group .sort-dir svg{width:13px;height:13px;transition:transform .18s ease}
.sort-group .sort-dir.asc svg{transform:rotate(180deg)}
.view-toggle{display:flex;gap:2px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:2px}
.view-btn{background:none;border:none;border-radius:6px;padding:4px 8px;cursor:pointer;color:var(--text2);transition:background .12s,color .12s,box-shadow .12s}
.view-btn:hover{color:var(--text)}
.view-btn:active{transform:scale(.94)}
.view-btn.active{background:var(--surface);color:var(--wb2);box-shadow:var(--shadow-sm);font-weight:600}
.view-btn svg{width:14px;height:14px;display:block}
/* Dashboard */

.dash-shortcuts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}

/* ADS */
.ads-page{display:flex;flex-direction:column;height:100%;overflow:hidden}
.ads-controls{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}
.ads-view-bar{display:flex;align-items:center;gap:8px;padding:10px 24px;flex-wrap:wrap}
.ads-period-label{font-size:11px;color:var(--text2);font-family:var(--mono);background:var(--surface2);padding:3px 8px;border-radius:6px;border:1px solid var(--border)}
.sync-collapse{border-top:1px solid var(--border)}
.sync-collapse-header{display:flex;align-items:center;gap:8px;padding:8px 24px;cursor:pointer;font-size:12px;color:var(--text2);user-select:none}
.sync-collapse-header:hover{background:var(--surface2)}
.sync-arrow{margin-left:auto;transition:transform .2s}
.sync-arrow.open{transform:rotate(180deg)}
.sync-collapse-body{max-height:0;overflow:hidden;transition:max-height .2s ease}
.sync-collapse-body.open{max-height:100px}
.sync-inner{padding:8px 24px 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ads-data{flex:1;overflow-y:auto;padding:16px 24px}
.ads-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin-bottom:14px}
.ads-table-wrap{overflow:auto;max-height:calc(100vh - 380px);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow);background:var(--surface)}
/* строка фильтров — ВСЕГДА первая в thead, прилипает к верху (и в ads-table-wrap, и в kw-table-wrap) */
.ads-table-wrap tr.kw-filter-row td,.kw-table-wrap tr.kw-filter-row td{position:sticky;top:0;background:var(--surface);z-index:4;height:40px;box-sizing:border-box;box-shadow:0 -12px 0 var(--surface),0 4px 0 var(--surface)}
/* по умолчанию шапка прилипает к самому верху; смещение 46px — ТОЛЬКО если есть строка фильтров */
.ads-table-wrap thead tr:not(.kw-filter-row) th{position:sticky;top:0;background:var(--surface);z-index:3}
.ads-table-wrap:has(tr.kw-filter-row) thead tr:not(.kw-filter-row) th,.kw-table-wrap:has(tr.kw-filter-row) thead tr:not(.kw-filter-row) th{top:40px;box-shadow:0 -40px 0 var(--surface)}
.ads-table-wrap tfoot td{position:sticky;bottom:0;background:var(--surface2);z-index:4;border-top:2px solid var(--border2);font-weight:600;box-shadow:0 12px 0 var(--surface2)}
/* убрать зазор в скруглённых углах: corner-fix над шапкой только когда она первая строка (нет фильтров) */
.ads-table-wrap .fnl-table thead tr:first-child:not(.kw-filter-row) th{box-shadow:0 -12px 0 var(--surface)}
.ads-table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:12px}
.ads-table th{font-size:10px;color:var(--label);font-family:var(--mono);font-weight:600;text-transform:uppercase;letter-spacing:.5px;padding:8px 10px;border-bottom:1px solid var(--border);text-align:right;white-space:normal;vertical-align:middle;line-height:1.25}
.ads-table th:first-child{text-align:left}
.ads-table th:last-child,.ads-table td:last-child{border-right:none}
.ads-table td{padding:7px 10px;border-bottom:1px solid var(--row-line);text-align:right;font-family:var(--mono);font-size:11px}
.ads-table td:first-child{text-align:left;font-family:var(--font);font-size:12px}
.ads-table .ads-row:hover td{background:var(--surface2);cursor:pointer}
/* Сводные блоки НАД своими столбцами (первая строка шапки Рекламы): прозрачные ячейки, внутри — те же карточки .kv-item, что были */
.ads-table .ads-blocks-row td{border:none;background:transparent;padding:3px 5px 10px;vertical-align:bottom;text-align:left;font-family:var(--font)}
.ads-table .ads-blocks-row .kv-item{white-space:nowrap}
.ads-blk-title{font-size:11px;color:var(--text3);font-weight:600;padding-top:16px;white-space:nowrap}
.ads-table .ads-total td{font-weight:600;border-top:2px solid var(--border2)}
/* Полоса здоровья кампаний (Пульт) — кликабельный фильтр таблицы по вердикту */
.ads-hstrip{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 12px}
.ads-hseg{flex:1 1 150px;display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:11px 13px;cursor:pointer;box-shadow:var(--shadow);transition:border-color .16s var(--ease-out),transform .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.ads-hseg:hover{border-color:var(--border2);transform:translateY(-1px)}}
.ads-hseg.on{border-color:var(--wb);box-shadow:inset 0 0 0 1px var(--wb),var(--shadow)}
.ads-hseg .ads-hdot{width:10px;height:10px;border-radius:50%;flex:none}
.ads-hseg .ads-hn{font-size:21px;font-weight:700;font-family:var(--mono);line-height:1;color:var(--text)}
.ads-hseg .ads-ht{font-size:11px;color:var(--text2);font-weight:600;line-height:1.25}
.ads-hseg .ads-hs{font-size:10px;color:var(--text3)}
/* карточный вид Рекламы убран 10.07 — осталась только таблица */
/* Центр автоматизации: карточки-правила */
.adsa-rules{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
@media (max-width:760px){.adsa-rules{grid-template-columns:1fr}}
.adsa-rule{display:flex;align-items:flex-start;gap:13px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:14px 15px;box-shadow:var(--shadow)}
.adsa-rule .ric{width:36px;height:36px;border-radius:10px;background:var(--surface2);display:flex;align-items:center;justify-content:center;font-size:17px;flex:none}
.adsa-rule .rule-b{flex:1;min-width:0}
.adsa-rule .rule-t{font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.adsa-rule .rule-d{font-size:11.5px;color:var(--text2);margin-top:4px;line-height:1.5}
.adsa-rule .rule-s{font-size:10.5px;color:var(--text3);margin-top:6px;font-family:var(--mono)}
.adsa-badge{font-size:9px;font-weight:700;padding:1px 6px;border-radius:5px;text-transform:uppercase;letter-spacing:.5px}
.adsa-badge.beta{background:var(--oak-soft);color:var(--oak2)}
.adsa-badge.live{background:var(--green-dim);color:var(--green)}
/* Тулбар Рекламы: выпадающие меню «Вид» / «Ставки» */
.tb-dd{position:relative;display:inline-block}
.tb-dd-pop{position:absolute;top:calc(100% + 5px);right:0;background:var(--surface);border:1px solid var(--border2);border-radius:8px;box-shadow:var(--shadow-lg);padding:5px;min-width:190px;z-index:60;display:none;flex-direction:column;gap:2px}
.tb-dd-pop.open{display:flex}
.tb-dd-pop button{text-align:left;border:none;background:transparent;color:var(--text);font-size:12.5px;font-weight:500;padding:8px 11px;border-radius:6px;cursor:pointer;font-family:var(--font);white-space:nowrap}
.tb-dd-pop button:hover{background:var(--surface2)}
.fnl-quick{display:flex;gap:4px;margin-right:6px}
.fnl-qbtn{padding:5px 12px;font-size:12px}
.fnl-qbtn.active{background:var(--wb-dim);color:var(--wb2);border-color:var(--wb2)}
.fnl-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text2);cursor:pointer;margin-left:8px;user-select:none}
.fnl-toggle input{cursor:pointer}
.cl-flab{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text2);white-space:nowrap}
/* Кластеры: сворачиваемые секции + компактная шапка */
.cl-top{font-size:12px;color:var(--text2);margin:4px 0 14px;line-height:1.6}
/* .cl-legend-btn / #cl-legend удалены: легенда «как считается» переехала в справочную секцию clHelpSec */
/* Зоны Кластеров: крупный разделитель с подписью «что тут и что делать» — против стены секций */
.cl-zone{margin:22px 0 10px;padding-top:16px;border-top:1px solid var(--border2)}
.cl-zone.first{margin-top:14px;padding-top:0;border-top:none}
.cl-zone-t{font-size:14px;font-weight:700;letter-spacing:-.2px;color:var(--text)}
.cl-zone-s{font-size:11.5px;color:var(--text3);margin-top:3px;max-width:720px;line-height:1.5}
.cl-sec-h{display:flex;align-items:center;gap:8px;margin:8px 0 0;padding:9px 12px;font-size:13px;font-weight:600;cursor:pointer;user-select:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);transition:background .12s,border-color .12s}
.cl-sec-h:hover{border-color:var(--border2);background:var(--surface2)}
.cl-sec-h.open{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}
.cl-sec-h .cl-arr{margin-left:auto;color:var(--text3);font-size:11px}
.cl-sec-b{border:1px solid var(--border);border-top:none;border-radius:0 0 var(--r-md) var(--r-md);padding:8px 10px 10px;margin-bottom:4px}
.cl-note{font-size:10px;color:var(--text3);margin:5px 2px 0}
.fnl-table th{cursor:pointer;user-select:none}
.fnl-table th.sorted::after{content:' ▾';color:var(--wb2)}
.fnl-table th.sorted.asc::after{content:' ▴'}
.fnl-bar{display:inline-block;height:4px;border-radius:2px;background:var(--wb2);vertical-align:middle;margin-left:6px;opacity:.55}
.fnl-share{display:flex;align-items:center;gap:8px}
.fnl-share-v{min-width:42px;font-family:var(--mono)}
.fnl-track{flex:1;max-width:90px;min-width:40px;height:7px;border-radius:4px;background:var(--surface2);overflow:hidden}
.fnl-fill{display:block;height:100%;border-radius:4px;background:var(--wb2)}
.sup-sync{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.sup-params{display:flex;flex-direction:column;gap:0;padding:12px;background:var(--surface2);border:1px solid var(--border);border-radius:8px}
.sup-fields{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.sup-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.sup-spacer{flex:1 1 20px}
.sup-it-box{display:flex;align-items:center;gap:6px;padding:5px 9px;border:1px dashed var(--border);border-radius:8px;background:var(--surface)}
.sup-f{display:flex;flex-direction:column;gap:3px;font-size:10px;color:var(--text2)}
.sup-f input{width:120px}
.sup-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text2);cursor:pointer;user-select:none;margin-bottom:4px}
.fnl-table .sup-hi td{background:var(--amber-dim)}
.sup-it-ctl{display:flex;gap:4px;align-items:center}
.sup-it-ctl .btn{font-size:10px;padding:4px 8px}
.sup-it-status{font-size:9px;color:var(--text3);max-width:220px;line-height:1.3}
.sup-it-status.has{color:var(--green);font-weight:600}
td.imp-top{background:var(--amber-dim);box-shadow:inset 3px 0 0 var(--amber,#f5a623)}
td.imp-mid{background:color-mix(in srgb,var(--amber) 9%,var(--surface))}
.imp-q{margin-left:6px;min-width:16px;height:16px;line-height:13px;padding:0 4px;border-radius:50%;border:1px solid var(--amber,#f5a623);background:var(--surface);color:var(--amber,#f5a623);font-size:10px;font-weight:700;cursor:pointer;vertical-align:middle}
.imp-q:hover{background:var(--amber,#f5a623);color:#fff}
.imp-pop{position:fixed;z-index:9999;max-width:340px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.25);padding:10px 12px;font-size:12px}
.imp-pop-h{font-weight:700;margin-bottom:6px;font-size:12px}
.imp-pop-l{margin:0;padding-left:16px;color:var(--text2);line-height:1.5}
.sup-intransit{color:var(--green);font-weight:600}
.sup-final{font-weight:700;color:var(--wb2)}
.sup-trend-up{color:var(--green)}
.sup-trend-down{color:var(--red,#e5484d)}
.card-price{font-size:11px;margin-top:4px;color:var(--text2)}
.card-share{font-size:12px;margin-top:4px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.card-metrics{display:flex;gap:10px;margin-top:6px;font-size:11px;color:var(--text2);font-family:var(--mono)}
.adv-badge{font-size:10px;padding:1px 7px;border-radius:10px;font-weight:600;white-space:nowrap}
.adv-on{background:var(--green-dim);color:var(--green)}
.adv-off{background:var(--surface2);color:var(--text3)}
.tr-up{color:var(--green)}
.tr-down{color:var(--red,#e5484d)}
.products-table td .tr-up,.products-table td .tr-down{font-family:var(--mono)}
.stk-body{display:none}
.stk-body.open{display:block}
/* бейдж даты синхронизации в шапке карточки + сворачиваемые заголовки секций */
.sync-chip{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--text3);background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:2px 8px;font-family:var(--mono);margin-top:8px}
.sec-h{cursor:pointer;user-select:none;display:flex;align-items:center;gap:6px}
.sec-h:hover{color:var(--wb2)}
.sec-caret{font-size:9px;color:var(--text3);transition:transform .15s}
.sec-open .sec-caret{transform:rotate(180deg)}
/* мини-графики SVG (карточка товара, История остатков, Цены, дашборд) */
.chx{overflow:hidden}
.chx-lbl{font-size:8.5px;fill:var(--text3);font-family:var(--mono)}
.chx-last{font-size:11px;font-weight:700;font-family:var(--mono)}
.chx .pt-col{fill:transparent;transition:fill .12s ease}
.chx .pt circle{opacity:0;transition:opacity .12s ease,transform .12s ease;transform-box:fill-box;transform-origin:center}
.chx .pt:hover circle{opacity:1;transform:scale(1.5)}
.chx .pt:hover .pt-col{fill:rgba(127,127,127,.09)}
/* плавная прорисовка линий и заливки при каждом рендере */
@keyframes chx-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes chx-fade{from{opacity:0}to{opacity:1}}
.chx-line{filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.16));stroke-dasharray:1;stroke-dashoffset:1;animation:chx-draw .7s cubic-bezier(.45,0,.2,1) forwards}
.chx-area{opacity:0;animation:chx-fade .55s ease .28s forwards}
@media(prefers-reduced-motion:reduce){.chx-line{animation:none;stroke-dashoffset:0;stroke-dasharray:none}.chx-area{animation:none;opacity:1}}
/* зебра строк (Unit-экономика и др. длинные таблицы) */
table.zebra tbody tr:nth-child(even) td{background:rgba(127,127,127,.06)}
table.zebra tbody tr:hover td{background:var(--wb-dim)}
.dash-blocks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
@media(max-width:1100px){.dash-blocks{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.dash-blocks{grid-template-columns:1fr}}
.dash-block{min-height:60px;min-width:0}
.dash-block.dash-full{grid-column:1/-1}
.dm-chip{display:flex;flex-direction:column;gap:2px;padding:7px 10px;border-radius:8px;border:1px solid var(--border);background:var(--surface2);cursor:pointer;user-select:none;transition:all .12s;min-width:0}
.dm-chip.off{opacity:.45}
.dm-chip .dm-v{font-size:15px;font-weight:700;font-family:var(--mono)}
.dm-chip .dm-k{font-size:10px;color:var(--text3);display:flex;align-items:center;gap:5px}
.dm-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dash-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:16px 18px;box-shadow:var(--shadow)}
.dash-panel:hover{border-color:var(--border2)}
/* содержимое блока (кроме графиков-full) — фикс. высота + внутренний скролл, чтобы блоки не растягивались */
.dash-block:not(.dash-full) .dash-pscroll{max-height:240px;overflow-y:auto;overflow-x:hidden}
.dash-pscroll{scrollbar-width:thin;scrollbar-color:var(--border2) transparent}
.dash-pscroll::-webkit-scrollbar{width:7px}
.dash-pscroll::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}
.dash-pscroll::-webkit-scrollbar-track{background:transparent}
/* Аналитика по дням — интерактивный мультиграфик с тултипом */
.dm-chip:hover{border-color:var(--border2);transform:translateY(-1px)}
.dm-svg{width:100%;height:auto;display:block;overflow:visible;cursor:crosshair}
.dm-cross{opacity:0;transition:opacity .1s}
.dm-cross.on{opacity:1}
.dm-elabel{font-size:9.5px;font-weight:700;font-family:var(--mono)}
.dm-tip{position:absolute;z-index:30;pointer-events:none;min-width:158px;max-width:250px;
  background:var(--surface);border:1px solid var(--border2);border-radius:10px;box-shadow:var(--shadow);
  padding:9px 11px;opacity:0;transform:translateY(4px);transition:opacity .1s,transform .1s}
.dm-tip.on{opacity:1;transform:translateY(0)}
.dm-tip-d{font-size:11px;font-weight:700;color:var(--text2);font-family:var(--mono);
  margin-bottom:6px;padding-bottom:5px;border-bottom:1px solid var(--border)}
.dm-tip-row{display:flex;align-items:center;gap:7px;padding:2.5px 0;font-size:11px;line-height:1.2}
.dm-tip-row .l{color:var(--text3);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dm-tip-row .v{font-family:var(--mono);font-weight:700;white-space:nowrap}
.dm-tip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
/* Сводка WB — витрина дашборда (выручка/прибыль/штуки) */

/* Обзор LESS corp — глобальный хаб с переключателем источников */
.ov-entry{display:flex;align-items:center;gap:8px;width:100%;margin:0 0 10px;padding:9px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface2);color:var(--text);font-size:13px;font-weight:700;cursor:pointer;font-family:var(--font);transition:all .12s}
.ov-entry:hover{border-color:var(--wb);color:var(--wb)}
.ov-entry.active{background:var(--wb);color:#fff;border-color:var(--wb)}

.ov-head-t{font-size:18px;font-weight:800}
.ov-head-s{font-size:11px;color:var(--text3);margin-top:4px}
.ov-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0 16px}
@media(max-width:720px){.ov-cards{grid-template-columns:1fr}}
.ov-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:18px 20px;box-shadow:var(--shadow);overflow:hidden;transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out)}
.ov-card::after{display:none}
@media (hover:hover) and (pointer:fine){.ov-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--border2)}}
.ov-card-k{font-size:11px;color:var(--text3);font-weight:600;letter-spacing:1px;text-transform:uppercase}
.ov-card-v{font-size:28px;font-weight:700;font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.5px;line-height:1;margin:11px 0 7px}
.ov-card-d{font-size:12px;font-weight:600}
.ov-spark{margin:6px 0 16px}
.ov-sub-h{font-size:12px;font-weight:700;color:var(--text2);margin:16px 0 8px}
.ov-legend{display:flex;gap:14px;flex-wrap:wrap;margin:0 0 4px}
.ov-leg{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text2)}
.ov-leg i{width:12px;height:3px;border-radius:2px;display:inline-block}
.ov-sources{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.ov-drill{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
@media(max-width:720px){.ov-sources{grid-template-columns:1fr}}

.ov-tile{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 10px;text-align:center;cursor:pointer;font-size:12px;font-weight:600;transition:all .12s}
.ov-tile:hover{border-color:var(--wb);color:var(--wb);transform:translateY(-1px)}
.ov-tile-i{font-size:22px;margin-bottom:6px}

.ov-note{font-size:11px;color:var(--text3);margin-top:16px;padding:10px 12px;background:var(--surface2);border-radius:8px}

/* фильтр источников в шапке обзора + бары вклада */
.ov-filter{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:18px}
.ov-flt-lbl{font-size:11px;color:var(--text3);margin-right:2px}
.ov-chip{border:1px solid var(--border);background:var(--surface);color:var(--text2);font-size:12px;font-weight:600;padding:5px 13px;border-radius:20px;cursor:pointer;font-family:var(--font);transition:border-color .14s var(--ease-out),background .14s,color .14s,transform .16s var(--ease-out)}
.ov-chip:hover{border-color:var(--wb);color:var(--text)}
.ov-chip:active{transform:scale(.96)}
.ov-chip.on{background:var(--wb);color:#fff;border-color:var(--wb)}
.ov-chip.empty{opacity:.5}
.ov-chip.empty.on{background:var(--wb-dim);color:var(--text2);border-color:var(--border)}
/* Анализ рекламы: компактные периоды + интерпретация */
.an-win{border:1px solid var(--border);border-radius:12px;margin-bottom:14px;overflow:hidden;background:var(--surface)}
.an-win-h{display:flex;align-items:center;gap:10px;padding:12px 16px;cursor:pointer;user-select:none}
.an-win-h:hover{background:var(--surface2)}
.an-win-arrow{color:var(--text3);font-size:11px;transition:transform .2s}
.an-win-t{font-size:15px;font-weight:700;color:var(--text)}
.an-win-p{font-size:11px;color:var(--text3);font-family:var(--mono)}
.an-win-cnt{font-size:11px;font-weight:600;color:var(--text2);background:var(--surface2);border-radius:20px;padding:3px 10px}
.an-verdict{margin:0 16px 12px;padding:9px 13px;border-radius:8px;font-size:13px;font-weight:500}
.an-win-b{padding:0 16px 16px}
.an-interp{margin-top:5px;font-size:12px;line-height:1.45;font-weight:500}
.an-ok{padding:14px;background:var(--green-dim);border:1px solid var(--green);border-radius:10px;color:var(--green);font-size:13px}
.an-rest{margin-top:10px;border:1px dashed var(--border);border-radius:8px}
.an-rest-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;cursor:pointer;user-select:none;font-size:12px;color:var(--text3)}
.an-rest-h:hover{color:var(--text2)}
.an-rest-arrow{transition:transform .2s}
.an-rest-b{padding:6px 10px 10px}
.ov-bars{display:flex;flex-direction:column;gap:8px;max-width:640px}
.ov-bar-row{display:flex;align-items:center;gap:12px;font-size:12px}
.ov-bar-row.off{opacity:.45}
.ov-bar-l{width:90px;font-weight:600;flex-shrink:0}
.ov-bar-track{flex:1;height:10px;background:var(--surface2);border-radius:6px;overflow:hidden}
.ov-bar-fill{height:100%;background:var(--wb);border-radius:6px;transition:width .3s var(--ease-out)}
.ov-bar-v{width:160px;text-align:right;font-family:var(--mono);font-size:11px;color:var(--text2);flex-shrink:0}
/* заголовок панели = голос бенто-шапки (.kpanel-hd): 13/700/ink/-.2px — WB-дашборд читается как Ozon */
.dash-panel-title{font-size:13px;font-weight:700;color:var(--text);letter-spacing:-.2px;margin-bottom:12px}
.dash-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:10px}
.dash-kpi{text-align:left}
.dash-kpi-v{font-size:19px;font-weight:700;font-family:var(--mono);font-variant-numeric:tabular-nums}
.dash-kpi-k{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.4px;margin-top:2px}
.dash-sub{font-size:10px;color:var(--text3);font-family:var(--mono);margin-top:10px}
.dash-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--border)}
.dash-row:first-child{border-top:none}
.dash-row:hover{background:var(--surface2)}
.dash-row-t{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-row-s{font-size:10px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-row-v{font-size:11px;font-family:var(--mono);white-space:nowrap;text-align:right}
.col-picker-btn{display:inline-flex;align-items:center;gap:5px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:5px 10px;font-size:11px;color:var(--text2);cursor:pointer;font-family:var(--font)}
.col-picker-btn:hover{border-color:var(--border2);color:var(--text)}
/* Campaigns */
.upload-zone{border:2px dashed var(--border2);border-radius:10px;padding:32px;text-align:center;cursor:pointer;transition:all .2s;background:var(--surface2)}
.upload-zone:hover,.upload-zone.drag{border-color:var(--wb);background:var(--wb-dim)}
.upload-zone input{display:none}
.campaign-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;background:var(--surface2);border:1px solid var(--border);margin-bottom:4px;font-size:12px}
.campaign-row .cid{font-family:var(--mono);color:var(--wb2);width:90px;flex-shrink:0}
.campaign-row .cname{flex:1;color:var(--text2)}
.campaign-row .del{background:none;border:none;color:var(--text3);cursor:pointer;font-size:16px;padding:0 4px}
.campaign-row .del:hover{color:var(--red)}
/* Col picker */
.col-picker-modal{background:var(--surface);border:1px solid var(--border2);border-radius:12px;padding:18px;width:320px;max-height:80vh;overflow-y:auto}
.col-item{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:7px;margin-bottom:3px;background:var(--surface2);border:1px solid var(--border);font-size:12px}
.col-item.dragging{opacity:.4;border-style:dashed}
.col-item input[type=checkbox]{accent-color:var(--wb);width:14px;height:14px;cursor:pointer;flex-shrink:0}
.col-item .dh{color:var(--text3);font-size:14px;cursor:grab;flex-shrink:0}
.col-item label{cursor:pointer;flex:1}
.kw-table-wrap{overflow:auto;max-height:calc(100vh - 420px);border:1px solid var(--border);border-radius:8px}
.kw-table-wrap table{min-width:100%}
.kw-table-wrap thead th{position:sticky;top:0;background:var(--surface);z-index:2}
.kw-table-wrap tfoot td,.kw-table-wrap tr.ads-total td{position:sticky;bottom:0;background:var(--surface2);z-index:2;border-top:2px solid var(--border2);font-weight:600}
/* Строка фильтров таблиц: «От|До» — ОДНА пилюля с разделителем (не две стопкой), без браузерных спиннеров */
.kw-filter-row td{padding:5px 3px;border-bottom:1px solid var(--border);vertical-align:middle}
.kw-filter-row td .frow{display:flex;align-items:stretch;background:var(--surface2);border:1px solid var(--border);border-radius:6px;overflow:hidden;transition:border-color .14s var(--ease-out)}
.kw-filter-row td .frow:focus-within{border-color:var(--wb)}
.kw-filter-row td input{flex:1 1 0;width:100%;min-width:0;background:transparent;border:none;padding:4px 5px;font-size:10px;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text);outline:none;text-align:center}
.kw-filter-row td input+input{border-left:1px solid var(--border)}
.kw-filter-row td input::placeholder{color:var(--text3);font-size:10px}
.kw-filter-row td input[type=text]{text-align:left;padding-left:8px}
.kw-filter-row td input::-webkit-outer-spin-button,.kw-filter-row td input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.kw-filter-row td input[type=number]{-moz-appearance:textfield;appearance:textfield}
.kw-filter-lbl{font-size:9.5px;color:var(--text3);font-family:var(--mono);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}
th.resizable{position:relative}
th.resizable .col-resizer{position:absolute;right:0;top:0;width:4px;height:100%;cursor:col-resize;background:transparent}
th.resizable .col-resizer:hover{background:var(--wb)}
.modal-fullscreen{position:fixed;inset:0;background:var(--surface);z-index:200;display:flex;flex-direction:column;animation:slideUp .2s ease}
.modal-fs-header{padding:16px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;background:var(--surface);flex-shrink:0}
.modal-fs-body{flex:1;overflow:hidden;display:flex;flex-direction:column}
.tabs{display:flex;gap:2px;padding:0 24px;border-bottom:1px solid var(--border);background:var(--surface)}
.tab{padding:10px 16px;font-size:13px;cursor:pointer;color:var(--text2);border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}
.tab:hover{color:var(--text)}
.tab.active{color:var(--wb2);border-bottom-color:var(--wb2);font-weight:600}
/* ── ЕДИНЫЙ компонент подразделов (segmented pill) — один стиль на всё приложение (taste) ── */
.subtabs{display:inline-flex;gap:3px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:3px;flex-wrap:wrap;vertical-align:middle}
.subtab{border:none;background:transparent;color:var(--text2);font-size:12.5px;font-weight:600;padding:6px 14px;border-radius:7px;cursor:pointer;font-family:var(--font);white-space:nowrap;transition:color .15s,background .18s var(--ease-out),box-shadow .18s var(--ease-out),transform .16s var(--ease-out)}
.subtab:hover{color:var(--text)}
.subtab.active{background:var(--surface);color:var(--wb2);box-shadow:var(--shadow)}
.subtab:active{transform:scale(.97)}
/* единый заголовок секции/блока */
.section-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px}
.section-head .section-title{margin:0}
.section-title{font-size:13px;font-weight:700;letter-spacing:-.2px;color:var(--text)}
.tab-content{display:none;flex:1;overflow-y:auto;padding:16px 24px}
.tab-content.active{display:block}
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.sortable:hover{color:var(--text)}
th.sort-asc::after{content:" ↑";color:var(--wb2)}
th.sort-desc::after{content:" ↓";color:var(--wb2)}

.kw-minus{font-size:10px;background:color-mix(in srgb,var(--red) 12%,var(--surface));color:var(--red);padding:1px 6px;border-radius:10px}
.kw-active{font-size:10px;background:var(--green-dim);color:var(--green);padding:1px 6px;border-radius:10px}

.filter-tabs{display:flex;gap:4px;margin-bottom:12px}
.filter-tab{padding:4px 12px;border-radius:20px;font-size:12px;cursor:pointer;border:1px solid var(--border);background:var(--surface2);color:var(--text2);transition:all .15s}
.filter-tab.active{background:var(--wb-dim);color:var(--wb2);border-color:var(--wb)}
/* Unified form controls */
input.fs,input[type=date].fs,select.fs,.search-input,.form-input{transition:border-color .15s,box-shadow .15s}
input[type=date].fs:focus,select.fs:focus{box-shadow:0 0 0 3px var(--wb-dim)}
.form-input:focus{border-color:var(--wb);box-shadow:0 0 0 3px var(--wb-dim)}
/* Custom scrollbars */
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:var(--surface2);border-radius:8px}
*::-webkit-scrollbar-thumb{background:var(--border2);border-radius:8px;border:2px solid var(--surface2)}
*::-webkit-scrollbar-thumb:hover{background:var(--text3)}
/* Select arrow styling */
select.fs{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237a8899' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px}
/* Cards with subtle shadow */
.product-card{box-shadow:var(--shadow)}
/* Theme toggle button */
.theme-toggle{background:var(--surface2);border:1px solid var(--border);border-radius:10px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text2);transition:border-color .16s var(--ease-out),color .16s var(--ease-out),background .16s,transform .16s var(--ease-out)}
.theme-toggle:hover{border-color:var(--border2);color:var(--text);background:var(--surface)}
.theme-toggle:active{transform:scale(.94)}
.theme-toggle svg{width:16px;height:16px}
.cur-switch{display:flex;gap:2px;margin:0 16px 10px;padding:2px;background:var(--surface2);border:1px solid var(--border);border-radius:8px}
.cur-seg{flex:1;border:none;background:transparent;color:var(--text2);font-family:var(--mono);font-size:11px;padding:5px 0;border-radius:6px;cursor:pointer;transition:all .15s}
.cur-seg:hover{color:var(--text)}
.cur-seg:active{transform:scale(.94)}
.cur-seg.active{background:var(--surface);color:var(--wb2);box-shadow:var(--shadow-sm);font-weight:600}
.cur-switch-label{font-size:10px;color:var(--text3);margin:0 16px 4px;text-transform:uppercase;letter-spacing:.04em}
.ws-switch{display:flex;gap:3px;margin:0 12px 12px;padding:3px;background:var(--surface2);border:1px solid var(--border);border-radius:9px;flex-wrap:wrap}
.ws-seg{flex:1 1 calc(50% - 3px);min-width:0;border:none;background:transparent;color:var(--text2);font-size:11px;font-weight:600;padding:6px 4px;border-radius:6px;cursor:pointer;transition:all .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ws-seg:hover{color:var(--text)}
.ws-seg.active{background:var(--wb);color:#fff}
/* Data period badge */
.data-period{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text2);background:var(--green-dim);border:1px solid var(--green);border-radius:6px;padding:3px 10px;font-family:var(--mono)}
.data-period svg{width:12px;height:12px;color:var(--green)}
.toast{position:fixed;bottom:20px;right:20px;background:var(--green);color:#fff;padding:10px 16px;border-radius:9px;font-size:12px;z-index:999;box-shadow:0 4px 16px rgba(0,0,0,.4);animation:slideUp .22s var(--ease-out)}
/* ── Розница: реестр сотрудников ───────────────────────────────────── */
.emp-table{table-layout:fixed;width:100%}
.emp-table td,.emp-table th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* подписи-подстроки в ведомости ЗП (напр. «из 1200 × 198/176 · переработка», список магазинов зоны) —
   переносятся, а не обрезаются ячейкой; главные суммы (текст-нода) остаются в одну строку */
.emp-table td .pay-hint{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.25;font-size:10px;color:var(--text3);font-weight:400}
.emp-table td{padding:11px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.emp-table tbody tr{transition:background .15s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.emp-table tbody tr:hover{background:var(--surface2)}}
.emp-table th{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text3);font-weight:600;padding:6px 12px}
.emp-th-sort{transition:color .15s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.emp-th-sort:hover{color:var(--text2)}}
.emp-th-sort.is-sort{color:var(--wb)}
.emp-th-arr{font-size:8px;margin-left:3px;vertical-align:middle}
.emp-name{font-weight:600;color:var(--text)}
.emp-dim{color:var(--text2);font-size:12px}
.emp-phone{color:var(--text2);font-size:11px;font-family:var(--mono);text-decoration:none;white-space:nowrap}
.emp-table td.emp-cell-phone{padding-left:8px;padding-right:8px}
.emp-table td.emp-cell-role{text-align:center}
.emp-warn{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;color:var(--red)}
.emp-table tr.emp-row-warn td{background:color-mix(in srgb,var(--red) 9%,var(--surface))}
.emp-alert{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.emp-alert-line{display:flex;gap:8px;align-items:flex-start;padding:10px 13px;border-radius:10px;font-size:12.5px;line-height:1.55;color:var(--text)}
.emp-alert-red{background:color-mix(in srgb,var(--red) 11%,var(--surface));border:1px solid color-mix(in srgb,var(--red) 30%,var(--border))}
.emp-alert-amber{background:color-mix(in srgb,var(--amber) 11%,var(--surface));border:1px solid color-mix(in srgb,var(--amber) 32%,var(--border))}
.emp-alert-ico{font-size:14px;line-height:1.3;flex:none}
.emp-alert-stores{display:inline-flex;flex-wrap:wrap;gap:4px 12px;margin-top:2px}
.emp-alert-store{white-space:nowrap}
.emp-alert-city{color:var(--text3);font-size:11px}
.emp-foot{font-size:11px;color:var(--text3);margin-top:6px}
/* ── ЕДИНЫЙ стиль таблиц раздела «Сотрудники» (Команда/Зарплаты/Анализ) — как в графике ── */
.emp-table td,.emp-table th{border-right:1px solid var(--border)}
.emp-table td:last-child,.emp-table th:last-child{border-right:none}
.ads-table-wrap table.emp-table thead th,table.emp-table thead th{background:var(--surface2)}
.emp-table thead th{border-bottom:1px solid var(--border)}
/* магазины продавцов — карточки: шапка (точка/кол-во/менеджер) + чистая сетка */
.emp-store-card{border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-top:12px;background:var(--surface)}
.emp-store-card.warn{border-color:color-mix(in srgb,var(--amber) 40%,var(--border))}
.emp-store-hd{display:flex;align-items:center;gap:10px;padding:9px 14px;background:var(--surface2);border-bottom:1px solid var(--border)}
.emp-store-hd .nm{font-weight:700;color:var(--text);font-size:13.5px}
.emp-store-card.warn .emp-store-hd .nm{color:var(--amber)}
.emp-store-hd .cnt{font-size:11px;color:var(--text3)}
.emp-store-hd .mgr{font-size:11px;color:var(--text3);margin-left:auto;white-space:nowrap}
.emp-store-tbl{overflow-x:auto}
.emp-store-tbl .emp-table tbody tr:last-child td{border-bottom:none}
/* обёртки emp-таблиц — плоские (как сетка графика/карточки), без тени */
.ads-table-wrap:has(table.emp-table){box-shadow:none}
/* Анализ продавцов: авто-ширина — числовые колонки сжимаются по содержимому, текстовые (продавец/точка) получают место */
.rt-perf-table{table-layout:auto}
.rt-perf-table td,.rt-perf-table th{white-space:nowrap}
.rt-perf-table td.emp-name{white-space:normal;min-width:160px}
.rt-perf-table td.pf-store{white-space:normal;min-width:150px;max-width:260px;overflow:hidden;text-overflow:ellipsis}
/* Тепловая карта розницы — квадраты red→green, только цвет; метрики в тултипе */
.heat-week{display:flex;gap:8px;flex-wrap:wrap}
.heat-week .heat-cell{flex:1 1 92px;min-width:80px;height:86px}
.heat-month{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;max-width:580px}
.heat-month .heat-cell{height:52px}
.heat-cell{position:relative;border-radius:10px;display:flex;align-items:flex-start;justify-content:flex-start;color:#fff;box-shadow:var(--shadow);cursor:default;transition:transform .12s var(--ease-out)}
@media (hover:hover){.heat-cell:hover{transform:scale(1.06)}}
.heat-cell.heat-empty{background:var(--surface2);border:1px dashed var(--border);box-shadow:none;color:var(--text3)}
.heat-lbl{font-size:11px;font-weight:700;padding:5px 7px;opacity:.95;text-shadow:0 1px 2px rgba(0,0,0,.18)}
.heat-cell.heat-empty .heat-lbl{text-shadow:none}
/* недельный разрез по магазинам: колонки-дни, под каждым — мини-блоки точек */
.heat-cols{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px}
.heat-col{flex:1 1 130px;min-width:120px;display:flex;flex-direction:column;gap:4px}
.heat-col>.heat-cell{height:60px;flex:none}
.heat-srow{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text2);line-height:1.3}
.heat-mini{flex:0 0 15px;width:15px;height:15px;border-radius:4px;display:inline-block}
.heat-mini-empty{background:var(--surface2);border:1px dashed var(--border)}
.heat-sname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.heat-tip{position:fixed;z-index:9999;display:none;background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:0 10px 30px rgba(0,0,0,.2);padding:10px 12px;font-size:12px;pointer-events:none;min-width:160px}
.heat-tip-h{font-weight:700;margin-bottom:7px;color:var(--text)}
.heat-tip-r{display:flex;justify-content:space-between;gap:16px;padding:3px 0}
.heat-tip-r span{color:var(--text3)}
.heat-tip-r b{font-variant-numeric:tabular-nums}
/* фильтр магазинов в тепловой карте — выпадающий мультивыбор */
.heat-store-sel{position:relative;display:inline-block}
.heat-dd-panel{position:fixed;z-index:1000;left:0;top:0;width:520px;max-width:94vw;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.22);animation:rtDdIn .14s var(--ease-out)}
.heat-dd-foot{padding:7px 10px;border-top:1px solid var(--border);text-align:right;position:sticky;bottom:0;background:var(--surface)}
.heat-dd-pills{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface)}
.heat-dd-pill{font-size:11px;font-weight:600;padding:4px 11px;border-radius:999px;border:1px solid var(--border);background:var(--surface2);color:var(--text2);cursor:pointer}
.heat-dd-pill.on{background:var(--wb);border-color:var(--wb);color:#fff}
.heat-dd-list{padding:8px 10px 4px;columns:2;column-gap:14px}
.heat-dd-city{padding:0 0 4px;break-inside:avoid}
.heat-dd-cb{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:8px;cursor:pointer;font-size:12.5px;break-inside:avoid}
.heat-dd-cb:hover{background:var(--surface2)}
.heat-dd-cityhd{font-size:12px;color:var(--text2)}
.heat-dd-store{padding-left:22px;font-size:12px;color:var(--text)}
.heat-dd-cb input{accent-color:var(--wb)}
.emp-stores-table{table-layout:auto}
.emp-stores-table td,.emp-stores-table th{white-space:nowrap;overflow:visible;text-overflow:clip}
.emp-total-row td{border-top:2px solid var(--border2,var(--border));background:var(--surface2)}
/* ── Розница: навигатор магазинов по городам (График→Продавцы) ── */

@media (hover:hover) and (pointer:fine){.sch-store:hover{border-color:var(--wb);background:var(--surface2)}}

/* ── График (табель) — редизайн 07.07: строка магазинов по городам + компактная сетка ── */
.sched-bar{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:12px}
.sched-mbtn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;font-size:15px;transition:background .15s var(--ease-out),color .15s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.sched-mbtn:hover{background:var(--surface2);color:var(--text)}}
.sched-mbtn:active{transform:scale(.93)}
.sched-mtitle{font-weight:700;min-width:150px;text-align:center;font-size:14px}
/* магазины — плитки со скруглением, сетка с переносом (без горизонтального скролла) */
.sched-stores{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:6px;margin-bottom:12px}
.sched-tile{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:7px 11px;min-height:42px;border-radius:9px;border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;text-align:left;font-family:var(--font);overflow:hidden;transition:background .15s var(--ease-out),border-color .15s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.sched-tile:hover{background:var(--surface2);border-color:var(--text3)}}
.sched-tile:active{transform:scale(.97)}
.sched-tile .snm{font-size:12px;font-weight:600;color:var(--text);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-tile .sct{font-size:9.5px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sched-tile.on{background:var(--wb);border-color:var(--wb);box-shadow:var(--shadow-sm)}
.sched-tile.on .snm,.sched-tile.on .sct{color:#fff}
.sched-note{font-size:10.5px;color:var(--text3);margin:0 2px 8px;line-height:1.5}
.sched-grid-wrap{overflow:auto;max-height:66vh;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.sched-grid{border-collapse:separate;border-spacing:0;font-size:12px;width:max-content;min-width:100%}
.sched-grid th,.sched-grid td{border-bottom:1px solid var(--border);border-right:1px solid var(--border)}
.sched-grid thead th{position:sticky;top:0;z-index:3;background:var(--surface2);font-weight:600;padding:5px 3px;text-align:center;white-space:nowrap}
.sched-nm{position:sticky;left:0;z-index:2;background:var(--surface);text-align:left;min-width:150px;white-space:nowrap;padding:7px 12px}
.sched-grid thead .sched-nm{z-index:4;background:var(--surface2)}
.sched-dnum{font-weight:700;font-size:12px;line-height:1}
.sched-dow{font-size:9px;color:var(--text3);font-weight:400;margin-top:1px}
.sched-grid th.we,.sched-grid td.we{background:color-mix(in srgb,var(--text3) 6%,transparent)}
.sched-grid th.tdy,.sched-grid td.tdy{background:var(--wb-dim)}
.sched-grid th.tdy .sched-dow{color:var(--wb)}
.sched-shd{display:block;width:5px;height:5px;border-radius:50%;background:var(--amber);margin:2px auto 0}
.sched-cell{padding:1px 2px;text-align:center}
.sched-cell input{width:38px;height:28px;border:1px solid transparent;background:transparent;border-radius:7px;text-align:center;font-size:12px;color:var(--text);font-family:var(--font);transition:background .12s var(--ease-out),border-color .12s var(--ease-out);-moz-appearance:textfield;appearance:textfield}
.sched-cell input::-webkit-outer-spin-button,.sched-cell input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
@media (hover:hover) and (pointer:fine){.sched-cell input:hover{background:var(--surface2)}}
.sched-cell input:focus{outline:none;border-color:var(--wb);background:var(--surface);box-shadow:0 0 0 2px var(--wb-dim)}
.sched-cell input.auto{color:var(--wb);background:color-mix(in srgb,var(--wb) 8%,transparent);font-weight:600}
/* отпуск «О» — приглушённо-индиго, отличимо от рабочих часов */
.sched-cell.vac input{color:var(--indigo,#6366f1);background:color-mix(in srgb,var(--indigo,#6366f1) 12%,transparent);font-weight:700}
.sched-tot{text-align:center;font-weight:700;padding:6px 12px;position:sticky;right:0;background:var(--surface);z-index:1;color:var(--text)}
.sched-grid thead .sched-tot{z-index:4;background:var(--surface2)}
.sched-grid tfoot td{position:sticky;bottom:0;background:var(--surface2);font-weight:700;border-top:2px solid var(--border)}
.sched-badge{display:inline-block;font-size:9px;padding:1px 6px;border-radius:8px;background:var(--surface2);color:var(--text2);margin-left:6px;vertical-align:middle}
.sched-sub{font-size:9px;color:var(--text3);font-weight:400;margin-top:1px}
@media (prefers-reduced-motion: reduce){.sched-mbtn,.sched-pill,.sched-cell input{transition:none}.sched-mbtn:active,.sched-pill:active{transform:none}}
.emp-phone:hover{color:var(--wb2)}
.emp-badge{display:inline-flex;align-items:center;font-size:11px;font-weight:600;line-height:1;padding:4px 9px;border-radius:20px;background:var(--surface2);color:var(--text2);white-space:nowrap}
.emp-badge-mgr{background:var(--wb-dim);color:var(--wb2)}

/* кастомные чекбоксы магазинов */
.store-check-list{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-sm);padding:6px}
.store-check{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--text);padding:6px 8px;border-radius:var(--r-sm);cursor:pointer;transition:background .15s var(--ease-out)}
.store-check input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.store-check-box{flex:0 0 auto;width:17px;height:17px;border-radius:var(--r-sm);border:1.5px solid var(--border2);background:var(--surface);position:relative;transition:background .15s var(--ease-out),border-color .15s var(--ease-out),transform .12s var(--ease-out)}
.store-check-box::after{content:"";position:absolute;left:5px;top:1px;width:4px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) scale(.5);opacity:0;transition:opacity .15s var(--ease-out),transform .15s var(--ease-out)}
.store-check input:checked + .store-check-box{background:var(--wb);border-color:var(--wb)}
.store-check input:checked + .store-check-box::after{opacity:1;transform:rotate(45deg) scale(1)}
.store-check input:focus-visible + .store-check-box{box-shadow:0 0 0 3px var(--wb-dim)}
.store-check-name{flex:1 1 auto}
.store-check-taken{color:var(--text3);font-size:12px;margin-left:5px}
@media (hover:hover) and (pointer:fine){.store-check:not(.is-disabled):hover{background:var(--surface2)}.store-check:not(.is-disabled):hover .store-check-box{border-color:var(--wb)}}
.store-check:not(.is-disabled):active .store-check-box{transform:scale(.92)}
.store-check.is-disabled{opacity:.5;cursor:not-allowed}
.store-check.is-disabled .store-check-box{background:var(--surface2)}

/* Розница: одиночный выбор магазина для продавца (radio-логика, в стиле .store-check) */
.store-pick{display:flex;flex-direction:column;gap:6px}
.store-pick-search{font-size:13px}
.store-pick-list{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-sm);padding:6px}
.store-pick-item{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--text);padding:6px 8px;border-radius:var(--r-sm);cursor:pointer;transition:background .15s var(--ease-out)}
.store-pick-dot{flex:0 0 auto;width:17px;height:17px;border-radius:50%;border:1.5px solid var(--border2);background:var(--surface);position:relative;transition:background .15s var(--ease-out),border-color .15s var(--ease-out),transform .12s var(--ease-out)}
.store-pick-dot::after{content:"";position:absolute;left:50%;top:50%;width:7px;height:7px;border-radius:50%;background:#fff;transform:translate(-50%,-50%) scale(.4);opacity:0;transition:opacity .15s var(--ease-out),transform .15s var(--ease-out)}
.store-pick-item.is-sel{background:var(--wb-dim)}
.store-pick-item.is-sel .store-pick-dot{background:var(--wb);border-color:var(--wb)}
.store-pick-item.is-sel .store-pick-dot::after{opacity:1;transform:translate(-50%,-50%) scale(1)}
.store-pick-text{flex:1 1 auto;display:flex;align-items:baseline;gap:8px;min-width:0}
.store-pick-name{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.store-pick-city{flex:0 0 auto;font-size:11px;color:var(--text3)}
@media (hover:hover) and (pointer:fine){.store-pick-item:not(.is-sel):hover{background:var(--surface2)}.store-pick-item:not(.is-sel):hover .store-pick-dot{border-color:var(--wb)}}
.store-pick-item:active{transform:scale(.99)}
.store-pick-item:active .store-pick-dot{transform:scale(.92)}

/* Розница: кнопка-чип + поповер магазинов менеджера в реестре */
.emp-pop-btn{display:inline-flex;align-items:center;gap:5px;font-family:var(--font);font-size:12px;font-weight:500;color:var(--text);background:var(--surface2);border:1px solid var(--border);border-radius:999px;padding:3px 10px;cursor:pointer;white-space:nowrap;transition:border-color .15s var(--ease-out),color .15s var(--ease-out),background .15s var(--ease-out),transform .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.emp-pop-btn:hover{border-color:var(--wb);color:var(--wb)}}
.emp-pop-btn:active{transform:scale(.97)}
.emp-pop-btn.is-open{border-color:var(--wb);color:var(--wb);background:var(--wb-dim)}
.emp-pop{position:fixed;z-index:1200;min-width:200px;max-width:320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);padding:10px;opacity:0;transform:translateY(-4px);transition:opacity .15s var(--ease-out),transform .15s var(--ease-out);pointer-events:none}
.emp-pop.is-in{opacity:1;transform:translateY(0);pointer-events:auto}
.emp-pop-head{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.03em;margin:0 2px 8px}
.emp-pop-list{display:flex;flex-direction:column;gap:1px;max-height:260px;overflow:auto}
.emp-pop-row{display:flex;align-items:baseline;gap:8px;font-size:13px;color:var(--text);padding:5px 6px;border-radius:var(--r-sm)}
.emp-pop-dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:var(--wb);transform:translateY(-1px)}
.emp-pop-rname{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.emp-pop-rcity{flex:0 0 auto;font-size:11px;color:var(--text3)}

/* ── Доступы / экран входа (ACCESS_PLAN.md) ── */
.auth-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;
  background:var(--bg,#0e0e10);background-image:radial-gradient(1200px 600px at 50% -10%, rgba(255,63,0,.10), transparent 60%);padding:20px}
.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:18px;
  padding:30px 28px;box-shadow:0 24px 70px rgba(0,0,0,.45);animation:authIn .28s var(--ease-out)}
@keyframes authIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
.auth-brand{font-family:var(--font);font-weight:800;font-size:26px;letter-spacing:-.5px;color:var(--text)}
.auth-brand span{color:#FF3F00;margin-left:3px}
.auth-sub{font-size:13px;color:var(--text2);margin:2px 0 18px}
.auth-note{font-size:12px;color:var(--text3);margin-bottom:12px;line-height:1.45}
.auth-err{background:color-mix(in srgb,var(--red) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--red) 32%,var(--border));color:var(--red);font-size:12.5px;padding:8px 12px;border-radius:9px;margin-bottom:14px}
.auth-fld,.auth-fld2{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text2);margin-bottom:13px}
.auth-scope-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:4px 12px;max-height:180px;overflow:auto;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--surface2)}
.auth-scope-cb-lbl{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text2);cursor:pointer}
.auth-inp{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:11px 13px;font-size:14px;color:var(--text);font-family:var(--font);transition:border-color .15s var(--ease-out)}
.auth-inp:focus{outline:none;border-color:#FF3F00}
.auth-trust{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text2);margin:2px 0 18px;cursor:pointer}
.auth-trust input{accent-color:#FF3F00}
.auth-btn{width:100%;background:#FF3F00;color:#fff;border:none;border-radius:10px;padding:12px;font-size:14px;font-weight:600;font-family:var(--font);cursor:pointer;transition:filter .15s var(--ease-out),transform .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.auth-btn:hover{filter:brightness(1.08)}}
.auth-btn:active{transform:scale(.98)}
.auth-btn-ghost{width:100%;background:none;color:var(--text2);border:none;padding:10px;font-size:13px;font-family:var(--font);cursor:pointer;margin-top:8px}
@media (hover:hover) and (pointer:fine){.auth-btn-ghost:hover{color:var(--text)}}
.auth-forgot{text-align:center;margin-top:14px}
.auth-forgot a{font-size:12px;color:var(--text3);text-decoration:none;cursor:pointer;transition:color .15s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.auth-forgot a:hover{color:var(--acc,#FF3F00)}}
.auth-chip{display:inline-flex;align-items:center;gap:8px;margin-left:10px;padding:4px 6px 4px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:999px}
.auth-chip-name{font-size:12px;color:var(--text2);font-weight:500;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.auth-chip-btn{background:none;border:none;color:var(--text3);font-size:14px;cursor:pointer;padding:2px 4px;border-radius:6px;transition:color .15s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.auth-chip-btn:hover{color:var(--red)}}
.auth-imp-banner{position:fixed;bottom:0;left:0;right:0;z-index:9998;background:var(--amber);color:#1a1205;font-size:12.5px;font-weight:500;padding:8px 16px;text-align:center}
.auth-imp-banner button{margin-left:10px;background:rgba(0,0,0,.18);border:none;border-radius:7px;padding:3px 10px;font-size:12px;cursor:pointer;color:#1a1205;font-weight:600}
.auth-scope{border:1px solid var(--border);border-radius:11px;padding:12px 14px;margin-bottom:12px;background:var(--surface2)}
.auth-matrix-h{font-size:12px;font-weight:600;color:var(--text2);margin-bottom:8px}
/* ── Доступы: матрица галочками по воркспейсам ── */
.auth-matrix-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;font-weight:700;color:var(--text);margin:0 0 9px}
.auth-matrix-box{display:flex;flex-direction:column;gap:9px;margin-bottom:14px}
/* Панель «Доступ» → Роли (редактируемые) */
.auth-role-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.auth-role-card{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:13px 15px;cursor:pointer;transition:border-color .15s var(--ease-out),transform .15s var(--ease-out),box-shadow .15s;display:flex;flex-direction:column;gap:7px;min-height:104px}
@media (hover:hover) and (pointer:fine){.auth-role-card:hover{border-color:var(--wb);transform:translateY(-2px)}}
.auth-role-card:active{transform:scale(.99)}
.auth-role-card.sel{border-color:var(--wb);box-shadow:0 0 0 3px var(--wb-dim)}
.auth-role-card.add{border-style:dashed;align-items:center;justify-content:center;color:var(--text3);font-weight:600;font-size:13px;background:var(--surface2);gap:4px}
.auth-role-card.add:hover{color:var(--wb);border-color:var(--wb)}
.auth-role-top{display:flex;align-items:center;gap:8px}
.auth-role-t{font-size:13.5px;font-weight:700;letter-spacing:-.2px}
.auth-role-badge{font-size:10px;font-weight:700;padding:1px 7px;border-radius:5px;text-transform:uppercase;letter-spacing:.4px;margin-left:auto}
.auth-role-badge.sys{background:var(--surface2);color:var(--text3);border:1px solid var(--border)}
.auth-role-badge.own{background:var(--wb-dim);color:var(--wb2)}
.auth-role-meta{font-size:11.5px;color:var(--text3);margin-top:auto}
.auth-role-act{margin-top:2px}
.auth-grp{border:1px solid var(--border);border-radius:11px;overflow:hidden;background:var(--surface)}
.auth-grp-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;background:var(--surface2);border-bottom:1px solid var(--border)}
.auth-grp-t{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--text2)}
.auth-grp-master{display:inline-flex;gap:3px}
.auth-mbtn{font-size:10.5px;padding:2px 9px;border:1px solid var(--border);background:var(--surface);color:var(--text2);border-radius:7px;cursor:pointer;transition:border-color .14s var(--ease-out),color .14s,transform .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.auth-mbtn:hover{border-color:var(--wb);color:var(--wb)}}
.auth-mbtn:active{transform:scale(.95)}
.auth-sec-row{display:flex;align-items:center;gap:12px;padding:6px 12px;border-bottom:1px solid var(--border)}
.auth-sec-row:last-child{border-bottom:none}
.auth-sec-row.chg{background:color-mix(in srgb,var(--wb) 6%,transparent)}
.auth-sec-t{flex:1;font-size:12.5px;color:var(--text)}
.auth-crit{color:var(--amber);cursor:help}
.auth-ovr{color:var(--wb);font-size:10px;vertical-align:middle}
.auth-cb{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text2);cursor:pointer;min-width:84px}
.auth-cb input{accent-color:#FF3F00;cursor:pointer}
.auth-scope-list{display:flex;flex-direction:column;gap:5px;max-height:200px;overflow:auto}
/* Право «Прибыль и маржа» (profit_view): без него .profit-cell исчезает целиком (не пустой плейсхолдер) */
.no-profit .profit-cell{display:none !important}
/* денежный слой разбит на 4 права (себес/маржа/налоги/прибыль) — прячем помеченные поля/колонки */
.no-cost .cost-cell,.no-margin .margin-cell,.no-tax .tax-cell{display:none !important}
.auth-scope-it{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text);cursor:pointer}
.auth-scope-it input{accent-color:#FF3F00}

/* ============================================================================
   ДИЗАЙН-СИСТЕМА «Тёплый бенто» (вариант 5) — переиспользуемые компоненты.
   Применять во всех разделах вместо инлайн-стилей: бенто-сетка KPI, панель-
   карточка с таблицей, segmented-переключатель, pill, спарклайн. Палитра — из
   токенов (--surface/--oak/--wb/--green…), сама подхватывает свет/тьму.
   ============================================================================ */
/* Бенто-сетка KPI: первый ребёнок шире (hero). Кладём 1–3 .kcard внутрь. */
.bento{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:14px}
.bento.b2{grid-template-columns:1.5fr 1fr}
.bento.b4{grid-template-columns:1.5fr 1fr 1fr 1fr}
/* узкое окно: карточки переносятся, а не режут число (аудит №21: «2 374 856» читалось как «2 374 85») */
@media (max-width:1100px){.bento,.bento.b2,.bento.b4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}}
.kcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:18px 20px;box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .22s var(--ease-out),box-shadow .22s var(--ease-out),border-color .22s var(--ease-out)}
.kcard::after{display:none}
@media (hover:hover) and (pointer:fine){.kcard:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--border2)}}
.kcard.hero{background:var(--surface);border-color:var(--border2);box-shadow:inset 3px 0 0 var(--accent),var(--shadow)}
.kcard.hero::before{display:none}
.kcard .klbl{font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--label);margin-bottom:11px;font-family:var(--mono)}
.kcard .kval{font-size:27px;font-weight:700;color:var(--text);letter-spacing:-.8px;line-height:1;font-variant-numeric:tabular-nums;font-family:var(--mono2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.kcard.hero .kval{font-size:31px}
.kcard .kval .kcur{font-size:13px;font-weight:600;color:var(--text3);margin-left:5px}
.kcard .kring{position:absolute;right:18px;top:18px;font-size:13px;font-weight:800;color:var(--green)}
.kspark{display:flex;align-items:flex-end;gap:3px;height:34px;margin-top:13px;border-bottom:1px solid var(--border)}
.kspark i{flex:1;background:var(--border2);border-radius:2px 2px 0 0}
.kspark i.hi{background:var(--accent)}
/* Дельта-бейдж (тренд к пред. периоду) */
.kdelta{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;padding:3px 9px;border-radius:7px;margin-top:11px}
.kdelta.up{color:var(--green);background:var(--green-dim)}
.kdelta.flat{color:var(--text3);background:var(--surface2)}
.kdelta.down{color:var(--red);background:color-mix(in srgb,var(--red) 12%,transparent)}
/* Прогноз кассы на месяц — правый блок hero-карточки «Выручка» (Розница→Аналитика→Магазины) */
.rt-san-hero-row{display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap}
.rt-san-hero-l{flex:1 1 auto;min-width:150px}
.rt-san-fc{flex:0 0 auto;min-width:158px;margin-left:auto;padding-left:18px;border-left:1px solid var(--border);display:flex;flex-direction:column;gap:5px}
@media (max-width:640px){.rt-san-fc{margin-left:0;padding-left:0;border-left:0;border-top:1px solid var(--border);padding-top:11px;flex-basis:100%}}
.rt-san-fc-hd{font-size:10px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;color:var(--label);font-family:var(--mono)}
.rt-san-fc-q{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--surface2);color:var(--text3);font-size:9px;font-weight:700;cursor:pointer;vertical-align:middle;transition:background .15s var(--ease-out),color .15s var(--ease-out)}
.rt-san-fc-q:hover{background:var(--accent);color:#fff}
.rt-info-pop{position:fixed;z-index:200;width:300px;max-width:320px;background:var(--surface);border:1px solid var(--border2);border-radius:10px;box-shadow:var(--shadow-lg);padding:11px 13px;font-size:12px;line-height:1.5;color:var(--text2);white-space:pre-line}
.rt-san-fc-val{font-size:23px;font-weight:700;color:var(--text);letter-spacing:-.5px;line-height:1;font-variant-numeric:tabular-nums;font-family:var(--mono2)}
.rt-san-fc-val .kcur{font-size:12px;font-weight:600;color:var(--text3);margin-left:4px}
.rt-san-fc-sub{font-size:11px;color:var(--text3)}
.rt-san-fc-bar{height:4px;border-radius:3px;background:var(--surface2);overflow:hidden;margin-top:2px}
.rt-san-fc-bar>i{display:block;height:100%;background:var(--accent);border-radius:3px}
.rt-san-fc-note{font-size:10px;color:var(--text3);opacity:.9}
/* ── Аналитика → Менеджеры: карточки-дашборды зон ── */
.rt-mgr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:14px;align-items:start}
.rt-mgr-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:15px 17px;box-shadow:var(--shadow);transition:box-shadow .15s var(--ease-out),border-color .15s}
@media (hover:hover){.rt-mgr-card:hover{border-color:var(--border2)}}
.rt-mgr-hd{display:flex;align-items:baseline;justify-content:space-between;gap:8px;cursor:pointer}
.rt-mgr-nm{font-size:15px;font-weight:700;color:var(--text);letter-spacing:-.2px}
.rt-mgr-sub{font-size:11px;color:var(--text3);font-weight:400;white-space:nowrap}
.rt-mgr-revrow{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:9px 0 13px}
.rt-mgr-rev{font-size:25px;font-weight:800;color:var(--text);line-height:1;letter-spacing:-.5px}
.rt-mgr-rev .kcur{font-size:12px;font-weight:600;color:var(--text3);margin-left:3px}
.rt-mgr-cap{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:3px}
.rt-mgr-sbar{display:flex;align-items:center;gap:8px;font-size:12px;margin:4px 0}
.rt-mgr-sbar .nm{width:98px;flex:0 0 98px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rt-mgr-sbar .tr{flex:1;height:8px;border-radius:4px;background:var(--surface2);overflow:hidden}
.rt-mgr-sbar .tr i{display:block;height:100%;background:var(--wb);border-radius:4px}
.rt-mgr-sbar .vl{width:50px;flex:0 0 50px;text-align:right;color:var(--text2);font-family:var(--mono)}
.rt-mgr-mix{display:flex;height:9px;border-radius:5px;overflow:hidden;margin:13px 0 5px;background:var(--surface2)}
.rt-mgr-mix i.b{background:var(--wb)}
.rt-mgr-mix i.a{background:var(--oak,#B7895A)}
.rt-mgr-foot{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text2);margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
.rt-mgr-foot b{color:var(--text);font-weight:700}
/* Панель-карточка (контейнер для таблицы/контента) */
.kpanel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden;box-shadow:var(--shadow)}
.kpanel-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:700;color:var(--text);padding:15px 20px 13px;letter-spacing:-.3px}
.kpanel table{width:100%;border-collapse:collapse}
.kpanel thead th{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--text3);text-align:right;padding:10px 20px;background:color-mix(in srgb,var(--surface2) 65%,var(--surface));border-bottom:1px solid var(--border)}
.kpanel thead th:first-child{text-align:left}
.kpanel tbody td{padding:12px 20px;border-bottom:1px solid var(--border);text-align:right;font-size:13.5px;color:var(--text);vertical-align:middle}
.kpanel tbody td:first-child{text-align:left;font-weight:600}
.kpanel tbody tr:last-child td{border-bottom:none}
@media (hover:hover) and (pointer:fine){.kpanel tbody tr:hover td{background:var(--surface2)}}
.kpanel tr.ktot td{font-weight:700;color:var(--text);background:var(--surface2);border-bottom:none}
/* ИТОГО (<tfoot>) — те же паддинги/выравнивание, что у tbody (иначе числа ИТОГО прижаты влево, «не под данными») */
.kpanel tfoot td{padding:12px 20px;text-align:right;font-size:13.5px;color:var(--text);vertical-align:middle}
.kpanel tfoot td:first-child{text-align:left}
/* Segmented-переключатель (период/режим) — единый вид, дубовый активный */
.seg{display:inline-flex;background:var(--surface);border:1px solid var(--border2);border-radius:11px;padding:3px}
.seg>button{font-size:12px;font-weight:600;color:var(--text2);background:transparent;border:none;padding:7px 14px;border-radius:8px;cursor:pointer;font-family:var(--font);transition:background .14s var(--ease-out),color .14s,transform .16s var(--ease-out)}
.seg>button.on{background:var(--text);color:var(--bg);box-shadow:none}
.seg>button:active{transform:scale(.97)}
/* Pill (маржа/статус) и мини-бар доли */
.kpill{display:inline-block;font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;font-variant-numeric:tabular-nums}
.kpill.g{background:var(--green-dim);color:var(--green)}
.kpill.r{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red)}
.kpill.n{background:var(--surface2);color:var(--text2)}
.kbar{display:inline-block;height:6px;border-radius:3px;background:var(--accent);vertical-align:middle;margin-right:8px}
/* числовая ячейка — моно, табличные цифры */
.knum{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
/* столбики спарклайна — подсветка наведённого + красивый плавающий тултип (вместо нативного title) */
.kspark i{transition:opacity .12s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.kspark:hover i{opacity:.45}.kspark i:hover{opacity:1}}
#kspark-tip{position:fixed;z-index:9999;pointer-events:none;transform:translate(-50%,-100%);background:#231F20;color:#FBF3EC;font-size:11px;font-family:var(--mono);font-variant-numeric:tabular-nums;padding:4px 9px;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.28);white-space:nowrap;opacity:0;transition:opacity .12s var(--ease-out)}
#kspark-tip.on{opacity:1}

/* Премиум-вход: карточки/панели мягко всплывают при загрузке раздела (редко → delight уместен).
   Лёгкий стаггер по первому ряду KPI. Глушится prefers-reduced-motion ниже. */
@keyframes cardIn{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
.bento>.kcard,.ov-cards>.ov-card,.kpanel,.dash-panel{animation:cardIn .42s var(--ease-out) both}
.bento>.kcard:nth-child(2),.ov-cards>.ov-card:nth-child(2){animation-delay:.06s}
.bento>.kcard:nth-child(3),.ov-cards>.ov-card:nth-child(3){animation-delay:.12s}
.bento>.kcard:nth-child(4),.ov-cards>.ov-card:nth-child(4){animation-delay:.18s}

/* taste: уважение к prefers-reduced-motion — убираем движение/transform, оставляем смысловые opacity */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .product-card:hover,.ov-card:hover{transform:none!important}
}

/* Финотчёт — ЕДИНАЯ таблица «Куда уходят деньги»: строка=статья (Сумма·Доля·Тренд), сверху строка
   «Выручка» + компактный водопад-бар (сегменты затрат + остаток «к перечислению») в одной строке. */

/* Розница: тултип свечки графика — растянутая строка даты под «ДД.ММ ПН» (день недели не клипуется) */
.dm-tip-d.dm-tip-wide{white-space:nowrap;letter-spacing:.3px}
.dm-tip-d.dm-tip-wide span{font-weight:600}

/* Розница/Магазины: выпадающий селектор периода (год→месяц→дни) */

@keyframes rtDdIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}

/* ── Обзор «Общий»: расходы (материалы/ЗП/общие) + детальная разбивка в «Вкладе источников» ── */
.ov-exp-cards{grid-template-columns:1fr;margin-top:-4px}
.ov-exp-card{padding:16px 20px}
.ov-exp-row{display:flex;align-items:baseline;gap:9px;padding:6px 0 2px}
.ov-exp-dot{width:9px;height:9px;border-radius:2px;flex-shrink:0;align-self:center}
.ov-exp-lbl{flex:1;font-size:13px;color:var(--text2);font-weight:600}
.ov-exp-share{font-size:12px;color:var(--text3);font-variant-numeric:tabular-nums;min-width:34px;text-align:right}
.ov-exp-val{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums;min-width:90px;text-align:right}
.ov-exp-d{min-width:64px;text-align:right}
.ov-exp-bar{height:6px;margin:0 0 4px}
.ov-exp-detail{display:flex;flex-direction:column}
/* легенда графика: приглушённая сводная серия «Общий» */
.ov-leg-muted{color:var(--text3)}
.ov-leg-sum{display:inline-block;width:14px;height:0;border-radius:0!important;background:transparent!important;vertical-align:middle;margin-right:6px}
/* свотч «объёма» (заштрихованный серый) в легенде */
.ov-leg-area{display:inline-block;width:13px;height:11px;border-radius:2px;vertical-align:middle;margin-right:6px;
  background:repeating-linear-gradient(45deg,transparent 0 2px,color-mix(in srgb,var(--text3) 22%,transparent) 2px 3px),color-mix(in srgb,var(--text3) 5%,transparent);
  border:1px solid var(--border)}

/* ── ВШИТАЯ разбивка расходов источника (в карточке «Вклад источников») ── */
.ov-xbox{margin-top:10px;padding-top:8px;border-top:1px dashed var(--border)}
.ov-xhd{display:flex;align-items:baseline;gap:8px;font-size:11px;color:var(--text3);font-weight:600;margin-bottom:4px;text-transform:uppercase;letter-spacing:.03em}
.ov-xhd-tot{font-family:var(--mono);color:var(--text2);font-weight:700;text-transform:none;letter-spacing:0}
.ov-xhd-note{margin-left:auto;font-size:10px;font-weight:500;color:var(--text3);text-transform:none;letter-spacing:0;cursor:help}
.ov-xrow{display:flex;align-items:baseline;gap:7px;padding:4px 0;border-top:1px solid var(--border);font-size:12px}
.ov-xrow:first-of-type{border-top:none}
.ov-xrow-lbl{flex:1;min-width:0;overflow-wrap:anywhere;color:var(--text2)}
.ov-xrow-pct{color:var(--text3);font-size:11px;min-width:36px;flex:none;text-align:right;font-variant-numeric:tabular-nums}
.ov-xrow-val{font-family:var(--mono);font-size:12px;min-width:66px;flex:none;text-align:right;font-variant-numeric:tabular-nums}
.ov-xrow-d{min-width:50px;flex:none;text-align:right}
/* подпункты себестоимости (материалы/зарплата/общие) */
.ov-xsub-wrap{margin:1px 0 2px 16px;padding-left:8px;border-left:2px solid var(--border)}
.ov-xsub{display:flex;align-items:baseline;gap:6px;padding:2px 0;font-size:11px;color:var(--text3)}
.ov-xsub-lbl{flex:1}
.ov-xsub-pct{min-width:34px;text-align:right;font-variant-numeric:tabular-nums}
.ov-xsub-val{font-family:var(--mono);min-width:74px;text-align:right;font-variant-numeric:tabular-nums}

/* ── СОВОКУПНЫЙ «Общий расход» предприятия (под KPI) — таблица в .kpanel ── */
.ovte{margin-top:0}
.ovte .kpanel-hd .ovte-hd-r{display:flex;align-items:baseline;gap:10px;font-weight:400}
.ovte-tot{font-size:14px;font-weight:700;color:var(--text)}
.ovte-note{font-size:10.5px;font-weight:500;color:var(--text3);cursor:help}
.ovte table{table-layout:auto}
.ovte thead th:nth-child(2),.ovte thead th:nth-child(4){white-space:nowrap}
.ovte tbody td:first-child{display:flex;align-items:center;gap:8px}
.ovte .ovte-pct{color:var(--text3);font-size:12.5px;white-space:nowrap}
.ovte .ovte-val{white-space:nowrap}
.ovte .ovte-d{min-width:96px;white-space:nowrap}
.ovte tr.ovte-sub td{padding-top:7px;padding-bottom:7px;font-size:12px;color:var(--text3);background:transparent}
.ovte tr.ovte-sub td:first-child{font-weight:500;padding-left:34px}
.ovte tr.ovte-sub .ov-exp-dot{width:7px;height:7px}
/* компактнее (чтобы не перекрывал график) + раскрывающаяся себестоимость по клику */
.ovte .kpanel-hd{padding:8px 14px;font-size:12px}
.ovte table{font-size:12px}
.ovte td,.ovte th{padding:4px 10px}
.ovte tr.ovte-sub td{padding-top:4px;padding-bottom:4px}
.ovte tr.ovte-sub{display:none}
.ovte.sebes-open tr.ovte-sub{display:table-row}
.ovte tr.ovte-clk{cursor:pointer}
.ovte tr.ovte-clk:hover td{background:var(--surface2)}
.ovte-chev{display:inline-block;font-size:9px;color:var(--text3);margin-right:3px;transition:transform .15s var(--ease-out)}
.ovte.sebes-open .ovte-chev{transform:rotate(90deg)}
/* «Общий расход» свёрнут по умолчанию — слим-шапка (сумма+%), разворот по клику → график сразу виден */
.ovte .kpanel-hd.ovte-hd{cursor:default;user-select:none;display:flex;align-items:center}
.ovte .kpanel-hd.ovte-hd .ovte-hd-r{margin-left:auto;display:flex;align-items:baseline;gap:10px}
.ovte-mchev{display:inline-block;font-size:10px;color:var(--text3);margin-right:6px;transition:transform .15s var(--ease-out)}
.ovte.exp-open .ovte-mchev{transform:rotate(90deg)}
.ovte-hd-pct{font-size:11px;color:var(--text3);font-weight:500}
/* статьи расхода — ПЛИТКИ по всей ширине (бенто-строка); свёрнуто по умолчанию */
.ovte-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(146px,1fr));gap:8px;padding:0 12px 12px}
.ovte-tile{background:var(--surface2);border-radius:10px;padding:8px 11px 7px;min-width:0}
.ovte-tile-clk{cursor:pointer}
.ovte-tile-clk:hover{background:var(--surface)}
.ovte-tile-hd{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text2);font-weight:600;margin-bottom:4px}
.ovte-tile-hd .ovte-chev{margin-left:auto;margin-right:0}
.ovte-tile-v{font-size:14.5px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.2px}
.ovte-tile-ft{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:3px;font-size:10.5px}
.ovte-tile-pct{color:var(--text3)}
.ovte-tile-d{white-space:nowrap}
.ovte-subs{display:none;margin-top:9px;padding-top:8px;border-top:1px solid var(--border);flex-direction:column;gap:6px}
.ovte.sebes-open .ovte-subs{display:flex}
.ovte-sub2{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text3)}
.ovte-sub2 .ov-exp-dot{width:7px;height:7px}
.ovte-sub2-l{flex:1}
.ovte-sub2-pct{min-width:34px;text-align:right;font-variant-numeric:tabular-nums}
.ovte-sub2-v{font-variant-numeric:tabular-nums;white-space:nowrap}

/* ── «Вклад источников»: воздушные карточки в сетке (без rib-разделителей) ── */
.ov-contrib-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:16px;margin:8px 0 18px}
@media(max-width:720px){.ov-contrib-grid{grid-template-columns:1fr}}
.ov-contrib-card{padding:18px 20px 16px;min-width:0}
.ov-contrib-hd{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--text);letter-spacing:-.1px}
.ov-contrib-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.ov-contrib-empty{color:var(--text3);font-size:13px;margin-top:14px}
.ov-contrib-share{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:14px 0 8px}
.ov-contrib-share-v{font-size:26px;font-weight:800;letter-spacing:-.5px;line-height:1;font-variant-numeric:tabular-nums}
.ov-contrib-share-l{font-size:10px;color:var(--text3);text-align:right;line-height:1.25}
.ov-contrib-bar{height:8px;margin-bottom:14px}
/* три метрики источника — без верхних линий, разделяет воздух */
.ov-cmrows{display:flex;flex-direction:column;gap:7px}
.ov-cmrow{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:12.5px}
.ov-cmrow-lbl{flex:1;min-width:0;color:var(--text3)}
.ov-cmrow-r{display:flex;align-items:baseline;gap:6px;justify-content:flex-end;flex:none}
.ov-cmrow-pct{color:var(--text3);font-size:11px;min-width:32px;text-align:right;font-variant-numeric:tabular-nums}
.ov-cmrow-val{font-size:12.5px;min-width:66px;text-align:right;white-space:nowrap}
.ov-cmrow-d{font-size:10px;font-weight:700;min-width:46px;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.ov-cmrow-d.up{color:var(--green)}
.ov-cmrow-d.down{color:var(--red)}
.ov-cmrow-d.flat{color:var(--text3)}
/* вшитая разбивка расходов внутри карточки источника — мягкий блок, без жёсткой dashed-линии */
.ov-contrib-card .ov-xbox{margin-top:14px;padding:12px 12px 10px;border-top:none;background:var(--surface2);border-radius:10px}
.ov-contrib-card .ov-xrow{border-top:1px solid var(--border)}
.ov-contrib-card .ov-xrow:first-of-type{border-top:none}

/* ── База цен (Общий): аккордеон по моделям (как «База изделий») ── */
.pb-caret{display:inline-block;font-size:11px;color:var(--text3);transition:transform .15s var(--ease-out);transform:rotate(0deg);flex:none}
.pb-caret.open{transform:rotate(90deg)}
.pb-model-hd{cursor:pointer;display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--surface2);transition:background .15s var(--ease-out)}
.pb-model.open .pb-model-hd{border-bottom:1px solid var(--border)}
@media (hover:hover) and (pointer:fine){.pb-model-hd:hover{background:var(--surface2)}}
.pb-model-name{font-size:14px;letter-spacing:-.2px}
.pb-model-cnt{font-size:11px;color:var(--text2)}
.pb-mhead-seb{font-size:11.5px;color:var(--text2);font-family:var(--mono);margin-left:auto;white-space:nowrap}
.pb-mhead-srcs{display:flex;gap:6px;flex:none}
.pb-mhead-src{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--text2);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:2px 7px}
.pb-mhead-src.off{opacity:.45}
.pb-mhead-src .kpill{font-size:11px;padding:1px 7px}
.pb-model-body{padding:12px 16px;display:flex;flex-direction:column;gap:10px}
/* строка-вариант (модель+материал) */
.pb-variant-block{border:1px solid var(--border);border-radius:var(--r-card,10px);background:var(--surface);overflow:hidden}
.pb-variant-hd{display:flex;align-items:center;gap:8px;padding:9px 13px;background:var(--surface2);border-bottom:1px solid var(--border)}
.pb-variant-name{font-size:12.5px;font-weight:600;color:var(--text)}
.pb-variant-seb{margin-left:auto;font-size:11.5px;color:var(--text2);font-family:var(--mono);white-space:nowrap}
/* 3 карточки источников по варианту */
.pb-src-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border)}
.pb-src{background:var(--surface);padding:11px 14px;display:flex;flex-direction:column;gap:5px}
.pb-src-off{background:var(--surface2)}
.pb-src-hd{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.2px;text-transform:uppercase;color:var(--text3)}
.pb-src-dot{width:7px;height:7px;border-radius:50%;flex:none}
.pb-src-price{font-size:16px;font-weight:700;color:var(--text);letter-spacing:-.4px;font-variant-numeric:tabular-nums}
.pb-src-empty{font-size:12px;color:var(--text3);margin-top:2px}
.pb-src-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pb-src-k{font-size:11.5px;color:var(--text2)}
.pb-src-v{font-size:12.5px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.pb-approx{color:var(--text3);font-weight:400}
@media (max-width:760px){.pb-src-grid{grid-template-columns:1fr}.pb-mhead-srcs{display:none}}
/* ── Розница: разбивка магазина по дням (клик по строке) + структура сотрудников ── */
.rt-pnl-caret{display:inline-block;width:12px;color:var(--text3);font-size:10px;transition:transform .15s var(--ease-out,ease)}
.rt-pnl-store-row:hover{background:var(--surface2)}
.rt-pnl-store-row td{transition:background .12s ease}
/* разбивка магазина по дням = РЕАЛЬНЫЕ строки основной таблицы (колонки 1:1, ничего не плывёт) */
.rt-pnl-slim tbody tr.rt-day-r td{background:var(--surface2);padding:8px 22px;border-bottom:1px solid var(--border);font-size:12px}
.rt-pnl-slim tbody tr.rt-day-r td.rt-day-c1{text-align:left;padding-left:44px;color:var(--text2);white-space:nowrap}
.rt-pnl-slim tbody tr.rt-day-r td.rt-day-exp{color:var(--text2)}
.rt-pnl-slim tbody tr.rt-day-r td.rt-neg{color:var(--red)}
.rt-pnl-slim tbody tr.rt-day-note td{font-size:11px;color:var(--text3);text-align:left;padding:9px 22px 5px 44px}
.rt-pnl-slim tbody tr.rt-day-tot td{font-weight:700;border-top:1px solid var(--border)}
.rt-days-wrap table{border-collapse:collapse}
.rt-days-wrap thead th{font-size:11px;color:var(--text3);font-weight:600;padding:4px 8px;border-bottom:1px solid var(--border)}
.rt-days-wrap tbody td{padding:4px 8px;border-bottom:1px solid var(--border)}
.rt-days-wrap tfoot td{padding:5px 8px;border-top:2px solid var(--border)}
@media (prefers-reduced-motion: reduce){ .rt-pnl-caret{transition:none} }
/* ── База цен — плоская таблица вариантов (без аккордеона): цена + прибыль·маржа по источнику ── */
.pb-flat{width:100%;border-collapse:collapse;font-size:13px}
.pb-flat thead th{font-size:11px;color:var(--text3);font-weight:600;padding:7px 12px;border-bottom:1px solid var(--border);white-space:nowrap}
.pb-flat th.pb-th-l{text-align:left}
.pb-flat th.pb-th-r{text-align:right}
.pb-flat tr.pb-r{border-bottom:1px solid var(--border)}
.pb-flat tbody tr.pb-r:nth-child(even){background:var(--surface2)}     /* зебра — глаз цепляется за строку */
.pb-flat tr.pb-r:hover{background:var(--wb-dim)}
.pb-flat td{padding:12px 14px;vertical-align:middle}                   /* выше строки, не «налеплено» */
.pb-flat td.pb-name{text-align:left}
.pb-flat td.pb-name b{font-size:14px;letter-spacing:-.2px}            /* модель заметнее */
.pb-flat td.pb-name .pb-mat{color:var(--text2);font-weight:400;margin-left:2px}
.pb-flat td.pb-seb{text-align:right;color:var(--text2);white-space:nowrap}
.pb-flat td.pb-c{text-align:right}
.pb-flat td.pb-c-off{color:var(--text3)}
.pb-flat .pb-c-price{font-weight:600;white-space:nowrap}
.pb-flat .pb-c-sub{font-size:10.5px;color:var(--text3);white-space:nowrap;margin-top:2px}
.pb-flat .pb-c-sub .kpill{font-size:10px;padding:1px 5px}
/* ── ИТОГО закреплено внизу (sticky-bottom) — видно без долистывания; не участвует в сортировке (в <tfoot>) ──
   Таблица с классом .sticky-total + строка ИТОГО в <tfoot>. Прилипает к низу СКРОЛЛ-контейнера .sticky-scroll
   (ограниченная высота → прокрутка внутри), фолбэк — низу окна. Универсально для всех таблиц Розницы. */
.sticky-scroll{max-height:calc(100vh - 240px);overflow:auto}
table.sticky-total tfoot td{position:sticky;bottom:0;z-index:2;background:var(--surface2);
  box-shadow:0 -1px 0 var(--border2), 0 -6px 12px -8px rgba(0,0,0,.10)}
table.sticky-total.ads-table tfoot td,table.sticky-total.emp-table tfoot td{background:var(--surface2)}
@media (prefers-reduced-motion: reduce){ table.sticky-total tfoot td{box-shadow:0 -1px 0 var(--border)} }

/* Рентабельность: ИТОГО ПЕРВОЙ строкой thead — над названиями столбцов, липнет к верху скролл-контейнера.
   Строка названий столбцов липнет ниже (top смещён на высоту ИТОГО). */
table.rt-pnl-table thead tr.rt-tot-top td{position:sticky;top:0;z-index:4;background:var(--oak-soft,var(--surface2));
  text-align:right;padding:10px 20px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:500;
  box-shadow:0 1px 0 var(--border), 0 6px 12px -8px rgba(0,0,0,.18)}
table.rt-pnl-table thead tr.rt-tot-top td:first-child{text-align:left;color:var(--text2);font-size:11px;letter-spacing:.04em;font-weight:600;font-family:inherit}
table.rt-pnl-table thead tr.rt-pnl-head th{position:sticky;top:40px;z-index:3;background:var(--surface)}
/* таблицы БЕЗ строки ИТОГО (оборачиваемость) — шапка липнет к самому верху, иначе первая строка лезет в 40px-зазор */
table.rt-pnl-table thead tr.rt-pnl-head.rt-head-top th{top:0}
@media (prefers-reduced-motion: reduce){ table.rt-pnl-table thead tr.rt-tot-top td{box-shadow:0 1px 0 var(--border)} }

/* ── Рентабельность по магазинам: премиум-вид (Магазин·Выручка·Расходы·Чистая·Маржа) ──
   взгляд ведут цифры + цветовой «хребет» по марже слева; детали статей — в водопаде и в развороте по дням. */
.rt-pnl-slim{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.rt-pnl-slim thead tr.rt-pnl-head th{padding:10px 22px;font-size:10px;color:var(--text3);font-weight:700;
  text-transform:uppercase;letter-spacing:.07em;text-align:right;white-space:nowrap}
.rt-pnl-slim thead tr.rt-pnl-head th:first-child{text-align:left;padding-left:25px}
.rt-pnl-slim .rt-h-sub{font-weight:500;color:var(--text3);font-size:9px;text-transform:none;letter-spacing:0}
.rt-pnl-slim tbody td{padding:13px 22px;text-align:right;vertical-align:middle;border-bottom:1px solid var(--border);
  transition:background .14s var(--ease-out,ease)}
.rt-pnl-slim tbody td.rt-c-name{text-align:left;vertical-align:middle;white-space:nowrap}
/* цветовой «хребет» слева по здоровью маржи — мгновенно читаемая иерархия точек */
.rt-pnl-slim tbody tr.rt-pnl-store-row td:first-child{border-left:3px solid transparent;padding-left:22px}
.rt-pnl-slim tbody tr.rt-h-g td:first-child{border-left-color:var(--green)}
.rt-pnl-slim tbody tr.rt-h-n td:first-child{border-left-color:var(--amber)}
.rt-pnl-slim tbody tr.rt-h-r td:first-child{border-left-color:var(--red)}
.rt-pnl-slim tbody tr.rt-alt td{background:color-mix(in srgb, var(--surface2) 45%, transparent)}
.rt-pnl-slim tbody tr.rt-pnl-store-row:hover td{background:var(--wb-dim)}
.rt-pnl-slim .rt-name-row{font-weight:600;letter-spacing:-.1px;font-size:13.5px}
.rt-pnl-slim .rt-sub{font-size:9.5px;color:var(--text3);font-weight:500;margin-top:3px;letter-spacing:.02em;font-variant-numeric:tabular-nums}
.rt-pnl-slim .rt-c-exp{color:var(--text2)}
.rt-pnl-slim .rt-c-net{font-weight:700;color:var(--text);font-size:14px}
.rt-pnl-slim .rt-c-net.rt-neg{color:var(--red)}
.rt-pnl-slim td.rt-c-net{letter-spacing:-.2px}
.rt-pnl-slim .rt-pnl-caret{margin-right:9px}
.rt-pnl-slim .rt-c-partial{margin-left:8px;font-size:9.5px;font-weight:600;color:var(--label);text-transform:uppercase;letter-spacing:.04em;font-family:var(--mono);
  background:var(--surface2);border:1px solid var(--border2);padding:1px 7px;border-radius:4px;vertical-align:middle}
@media (prefers-reduced-motion: reduce){ .rt-pnl-slim .rt-revbar-fill,.rt-pnl-slim tbody td{transition:none} }
/* Полная таблица с расходами по столбцам (10 кол.): уже паддинги, чтобы вместить; rt-day-c1 indent сохраняется (более специфичное правило) */
.rt-pnl-cols.rt-pnl-slim tbody td,
.rt-pnl-cols.rt-pnl-slim thead tr.rt-pnl-head th,
.rt-pnl-cols.rt-pnl-slim thead tr.rt-tot-top td{padding-left:13px;padding-right:13px;font-size:12.5px}
.rt-pnl-cols.rt-pnl-slim thead tr.rt-pnl-head th{font-size:9.5px}
.rt-pnl-cols .rt-c-exp{color:var(--text2);font-variant-numeric:tabular-nums}
/* ── «Терминал»: рентабельность под новую систему (нейтрализуем тёплые cue, моно-шапка, компактнее, акцент открытой строки) ── */
table.rt-pnl-table thead tr.rt-tot-top td{background:var(--surface2);font-weight:700;box-shadow:0 1px 0 var(--border2)}
.rt-pnl-slim thead tr.rt-pnl-head th{font-family:var(--mono);color:var(--label);font-weight:600;letter-spacing:.05em}
.rt-pnl-slim tbody td{padding-top:8px;padding-bottom:8px}
.rt-pnl-slim .knum,.rt-pnl-slim .rt-c-exp,.rt-pnl-slim .rt-c-net{font-family:var(--mono);font-variant-numeric:tabular-nums}
.rt-pnl-slim tbody tr.rt-alt td{background:transparent}
.rt-pnl-slim tbody tr.rt-pnl-store-row:hover td{background:var(--surface2)}
.rt-pnl-slim tbody tr.rt-pnl-store-row.rt-open td{background:var(--accent-soft)}
.rt-pnl-slim tbody tr.rt-pnl-store-row.rt-open td.rt-c-name{border-left-color:var(--accent)}
.rt-pnl-slim tbody tr.rt-pnl-store-row.rt-open .rt-pnl-caret{color:var(--accent-ink)}
.rt-pnl-slim tbody tr.rt-day-r td{background:var(--surface2)}
.rt-pnl-slim tbody tr.rt-day-r td.rt-day-c1{position:relative}
.rt-pnl-slim tbody tr.rt-day-r td.rt-day-c1::before{content:"└";position:absolute;left:30px;color:var(--text3)}
/* ИТОГО-строка облегчённой таблицы наследует общий sticky-вид rt-tot-top (см. выше) */

/* Аналитика → Магазины: дневная разбивка = реальные строки родительской таблицы (колонки выровнены 1:1).
   Приглушённый фон + индентация даты, горизонтальный padding 20px СОВПАДАЕТ с .kpanel tbody td → правый край колонок ровный. */
.kpanel tbody tr.rt-days-sub td{background:var(--surface2);font-size:12px;color:var(--text3);padding:5px 20px;border-bottom:1px solid var(--border)}
.kpanel tbody tr.rt-days-sub td:first-child{padding-left:40px;text-align:left;color:var(--text2);font-weight:400}
.kpanel tbody tr.rt-days-subtot td{font-weight:600;color:var(--text2);border-bottom:2px solid var(--border)}

/* Финотчёт — «Куда уходят деньги»: единая grid-таблица. Колонки: Статья | Водопад | Сумма | Доля | Тренд.
   Водопад = 2-я колонка: каждая статья — одна полоса от ЛЕВОГО края, длина ∝ величине статьи
   (left-anchored бар, БЕЗ накопит. офсета). Числовые колонки (Сумма/Доля/Тренд) — правый край. */
.fin-flow-grid{display:grid;grid-template-columns:minmax(150px,max-content) auto auto auto minmax(180px,1fr);
  align-items:center;column-gap:18px;row-gap:0;font-size:13px}
.fin-flow-hd{font-size:11px;color:var(--text3);font-weight:600;padding:0 0 7px;border-bottom:1px solid var(--border)}
.fin-flow-row{padding:7px 0;min-height:30px;display:flex;align-items:center}
.fin-flow-c-lbl{justify-content:flex-start;flex-direction:column;align-items:flex-start;gap:0}
.fin-flow-c-num{justify-content:flex-end;text-align:right;white-space:nowrap}
.fin-flow-hd.fin-flow-c-num{display:block;text-align:right}
.fin-flow-c-bar{justify-content:stretch}
.fin-flow-hd.fin-flow-c-bar{display:block;text-align:left}
/* строки-разделители: выручка (старт), итог (к перечислению) */
.fin-flow-grid .fin-flow-rev{border-top:1px solid var(--border)}
.fin-flow-grid .fin-flow-net{border-top:1.5px solid var(--border)}
/* Понедельные тренды: чип метрики с цветным маркером (цвет = цвет линии на графике). Активный чип
   красится цветом метрики инлайном (color/border/box-shadow в JS из FIN_WK_METRICS[].color). */
.fin-wk-chip{display:inline-flex;align-items:center;gap:6px}
.fin-wk-chip-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none;transition:opacity .15s var(--ease-out)}

/* трек водопада + сегмент (позиционируется left/width) */
.fin-wf-track{position:relative;width:100%;height:13px;border-radius:4px;background:var(--surface2);overflow:hidden}
.fin-wf-seg{position:absolute;top:0;height:100%;border-radius:3px;transition:width .3s var(--ease-out),left .3s var(--ease-out)}
.fin-wf-dot{width:8px;height:8px;border-radius:2px;display:inline-block;flex:none}
@media (prefers-reduced-motion: reduce){ .fin-wf-seg{transition:none} }

/* ── КАРТА ПРОЕКТА (Общий → Карта проекта) ──────────────────────────────────── */
.pm-wrap{max-width:1280px;margin:0 auto;padding:2px 2px 48px}
.pm-hero{margin:6px 0 20px}
.pm-h1{font-size:26px;font-weight:800;letter-spacing:-.02em;margin:0 0 4px;color:var(--text)}
.pm-sub{color:var(--text3);font-size:13px;max-width:720px}
.pm-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--text2)}
.pm-legend span{display:inline-flex;align-items:center;gap:6px}
.pm-dot{width:8px;height:8px;border-radius:50%;flex:none}
.pm-stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0 8px}
@media(max-width:760px){.pm-stat-row{grid-template-columns:repeat(2,1fr)}}
.pm-sect-h{font-size:17px;font-weight:750;margin:30px 0 2px;color:var(--text)}
.pm-sect-s{font-size:12px;color:var(--text3);margin-bottom:14px;max-width:760px}
.pm-flow{display:flex;align-items:stretch;flex-wrap:wrap;background:var(--surface2);border:1px solid var(--border);border-radius:16px;padding:12px 10px}
.pm-flow-node{flex:1 1 130px;min-width:120px;text-align:center;padding:10px 8px}
.pm-flow-arrow{display:flex;align-items:center;justify-content:center;color:var(--oak);font-size:20px;font-weight:700;padding:0 2px;flex:0 0 22px}
.pm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.pm-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out),border-color .18s var(--ease-out)}
.pm-card:hover{transform:translateY(-3px);box-shadow:0 10px 28px rgba(0,0,0,.10);border-color:var(--pmc)}
.pm-card-hd{padding:14px 16px;cursor:pointer;border-left:4px solid var(--pmc);display:flex;align-items:center;gap:11px;transition:background .15s var(--ease-out)}
.pm-card-hd:hover{background:var(--wb-dim)}
.pm-card-hd:active{transform:scale(.99)}
.pm-ic{font-size:20px;line-height:1}
.pm-nm{font-weight:700;font-size:15px;color:var(--text)}
.pm-role{font-size:11px;color:var(--text3)}
.pm-subs{padding:10px 12px 14px;display:flex;flex-wrap:wrap;gap:7px}
.pm-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;padding:5px 10px;border-radius:10px;background:var(--surface2);border:1px solid var(--border);cursor:pointer;color:var(--text2);transition:background .15s var(--ease-out),transform .12s var(--ease-out)}
.pm-chip:hover{background:var(--wb-dim);color:var(--text)}
.pm-chip:active{transform:scale(.96)}
.pm-chip.no{cursor:default;opacity:.7}
.pm-chip.no:hover{background:var(--surface2);color:var(--text2)}
.pm-plan{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px}
.pm-plan-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--pmp);border-radius:12px;padding:13px 15px;transition:transform .16s var(--ease-out),box-shadow .16s var(--ease-out)}
.pm-plan-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.07)}
.pm-plan-area{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);margin-bottom:6px;font-weight:600}
.pm-plan-t{font-weight:650;font-size:13.5px;margin-bottom:4px;color:var(--text)}
.pm-plan-d{font-size:11.5px;color:var(--text3);line-height:1.5}
@media (prefers-reduced-motion: reduce){ .pm-card,.pm-card-hd,.pm-chip,.pm-plan-card{transition:none} }

/* ── Доска задач воркспейса «Проект» ─────────────────────────────────────────── */
.pj-add{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:6px 0 18px}
.pj-sel{font-size:12px;padding:5px 8px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}
.pj-board{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:start}
@media(max-width:900px){.pj-board{grid-template-columns:1fr}}
.pj-col{background:var(--surface2);border:1px solid var(--border);border-radius:14px;padding:10px}
.pj-col-hd{font-weight:700;font-size:13px;color:var(--text2);padding:4px 6px 10px;display:flex;align-items:center;gap:8px}
.pj-cnt{font-size:11px;font-weight:600;color:var(--text3);background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:1px 8px}
.pj-col-body{display:flex;flex-direction:column;gap:10px;min-height:30px}
.pj-empty{color:var(--text3);font-size:12px;text-align:center;padding:14px 0;opacity:.6}
.pj-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--pjc);border-radius:12px;padding:11px 12px;transition:box-shadow .16s var(--ease-out),transform .16s var(--ease-out)}
.pj-card:hover{box-shadow:0 6px 18px rgba(0,0,0,.08)}
.pj-card-top{display:flex;align-items:center;gap:6px;margin-bottom:7px}
.pj-area{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--text3);background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:2px 7px;font-weight:600}
.pj-title{font-weight:650;font-size:13.5px;color:var(--text);line-height:1.35;margin-bottom:4px}
.pj-detail{font-size:12px;color:var(--text3);line-height:1.5;margin-bottom:6px}
.pj-note{font-size:11.5px;color:var(--text2);background:var(--wb-dim);border-radius:8px;padding:7px 9px;margin:6px 0;line-height:1.45}
.pj-card-bot{display:flex;justify-content:flex-end;margin-top:6px}
.pj-ic{background:none;border:none;color:var(--text3);cursor:pointer;font-size:13px;padding:3px 5px;border-radius:6px;line-height:1;transition:background .14s,color .14s}
.pj-ic:hover{background:var(--wb-dim);color:var(--text)}
.pj-ic:active{transform:scale(.92)}
@media (prefers-reduced-motion: reduce){ .pj-card,.pj-ic{transition:none} }

/* ── A/B-тест креатива (модалка с версиями фото) ── */
.cr-test-ov{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:none;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto}
.cr-test-box{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:880px;padding:18px 20px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.cr-test-hd{display:flex;align-items:flex-start;gap:10px}
.cr-test-vers{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.cr-test-card{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface2);transition:box-shadow .16s var(--ease-out)}
.cr-test-card.cur{border-color:var(--wb);box-shadow:0 0 0 1px var(--wb)}
.cr-test-card:hover{box-shadow:0 6px 18px rgba(0,0,0,.10)}
.cr-test-img{position:relative;aspect-ratio:3/4;background:var(--surface);display:flex;align-items:center;justify-content:center;overflow:hidden}
.cr-test-img img{width:100%;height:100%;object-fit:cover}
.cr-test-noimg{color:var(--text3);font-size:12px}
.cr-test-vn{position:absolute;left:6px;top:6px;background:rgba(0,0,0,.62);color:#fff;font-size:10px;font-weight:700;padding:2px 7px;border-radius:7px}
.cr-test-up{position:absolute;right:6px;top:6px;width:26px;height:26px;border:none;border-radius:7px;background:rgba(0,0,0,.5);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.85;transition:background .15s var(--ease-out),opacity .15s,transform .16s var(--ease-out)}
.cr-test-up svg{width:14px;height:14px}
@media (hover:hover) and (pointer:fine){.cr-test-up:hover{background:var(--wb);opacity:1}}
.cr-test-up:active{transform:scale(.9)}
/* Розница · Сертификаты — мини-график продано/использовано по месяцам */
.rt-cert-chart{display:flex;align-items:flex-end;gap:6px;padding:14px 20px 12px;overflow-x:auto}
.rt-cert-col{display:flex;flex-direction:column;align-items:center;gap:5px;flex:1;min-width:34px;cursor:default}
.rt-cert-bars{display:flex;align-items:flex-end;justify-content:center;gap:3px}
.rt-cert-bars i{width:9px;border-radius:3px 3px 0 0;transition:opacity .12s var(--ease-out)}
.rt-cb-sold{background:var(--green)}.rt-cb-used{background:var(--amber)}
@media (hover:hover) and (pointer:fine){.rt-cert-col:hover .rt-cert-bars i{opacity:.55}.rt-cert-col:hover .rt-cb-sold,.rt-cert-col:hover .rt-cb-used{opacity:1}}
.rt-cert-mlbl{font-size:10px;color:var(--text3);font-family:var(--mono);white-space:nowrap}
.cr-test-meta{padding:9px 11px}
.cr-test-per{font-size:11px;color:var(--text3)}
.cr-test-note{font-size:11px;color:var(--text2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* статус теста + победитель + мастер запуска + пикер нового теста */
.cr-st-pill{font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;background:color-mix(in srgb,var(--wb) 12%,var(--surface));color:var(--wb);white-space:nowrap}
.cr-st-pill.done{background:color-mix(in srgb,var(--green) 14%,var(--surface));color:var(--green)}
.cr-winline{font-size:12px;color:var(--text2);background:color-mix(in srgb,var(--green) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--green) 30%,var(--border));border-radius:8px;padding:5px 10px}
.cr-test-card.win{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}
.cr-test-winb{position:absolute;left:6px;bottom:6px;background:color-mix(in srgb,var(--green) 90%,#000);color:#fff;font-size:10px;font-weight:800;padding:2px 7px;border-radius:7px}
.cr-wizard{font-size:12px;color:var(--text2);background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin:0 0 12px;line-height:1.55}
.cr-wizard ol{margin:6px 0 6px 18px;padding:0}
.cr-wizard li{margin:2px 0}
.cr-method{margin:0 0 12px;font-size:12px;color:var(--text2)}
.cr-method summary{cursor:pointer;font-weight:600;color:var(--text3);list-style:none;display:inline-flex;align-items:center;gap:5px;user-select:none}
.cr-method summary::-webkit-details-marker{display:none}
.cr-method .arr{display:inline-block;transition:transform .15s var(--ease-out);font-size:10px}
.cr-method[open] .arr{transform:rotate(90deg)}
.cr-method-body{margin-top:8px;line-height:1.55;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px}
.cr-pick-list{max-height:56vh;overflow:auto;display:flex;flex-direction:column;gap:4px}
.cr-pick-row{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid var(--border);border-radius:10px;background:var(--surface);cursor:pointer;transition:border-color .14s var(--ease-out),transform .16s var(--ease-out)}
@media (hover:hover) and (pointer:fine){.cr-pick-row:hover{border-color:var(--wb)}}
.cr-pick-row:active{transform:scale(.985)}
.cr-pick-ph{width:38px;height:50px;border-radius:6px;object-fit:cover;background:var(--surface2);flex:none;display:block}
.cr-pick-vc{font-family:var(--mono);font-weight:700;font-size:12.5px}
.cr-pick-t{font-size:11px;color:var(--text3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cr-pick-tag{margin-left:auto;flex:none;font-size:10px;font-weight:700;padding:2px 7px;border-radius:8px;background:var(--surface2);color:var(--text3)}
.cr-pick-tag.on{background:color-mix(in srgb,var(--wb) 14%,var(--surface));color:var(--wb)}
/* подвкладки раздела Креатив (Кандидаты · Архив) + счётчик в табе */
.cr-subtabs{margin:0 0 14px}
.cr-subn{font-family:var(--mono);font-size:10.5px;font-weight:700;background:var(--surface2);color:var(--text2);padding:0 6px;border-radius:9px;min-width:17px;text-align:center;margin-left:5px}
.subtab.active .cr-subn{background:color-mix(in srgb,var(--wb) 22%,transparent);color:inherit}
.cr-subn.hot{background:color-mix(in srgb,var(--red) 88%,transparent);color:#fff}
/* компактный KPI-бенто ТОЛЬКО в Креативе — ниже по высоте, чем глобальный .kcard */
#page-creative .cr-bento .kcard{padding:11px 13px}
#page-creative .cr-bento .kcard .klbl{margin-bottom:6px;font-size:10px}
#page-creative .cr-bento .kcard .kval{font-size:20px}
#page-creative .cr-bento .kcard .kdelta{margin-top:4px;font-size:10.5px}
@media (prefers-reduced-motion: reduce){ .cr-test-card,.cr-pick-row,.cr-method .arr{transition:none} }

/* ══ Календарь периода «Терминал» (rcal): год+скролл месяцев · период+сравнение залоч. длины · ручной ввод · даты вне данных тусклые ══ */
.rcal-ov{position:fixed;inset:0;z-index:120}
.rcal-pop{position:fixed;display:flex;background:var(--surface);border:1px solid var(--border2);border-radius:8px;box-shadow:var(--shadow-xl);overflow:hidden}
.rcal-cal{padding:12px 14px;width:268px;display:flex;flex-direction:column}
.rcal-yrhd{display:flex;align-items:center;justify-content:center;gap:18px;padding:2px 0 10px;border-bottom:1px solid var(--border);margin-bottom:8px}
.rcal-yr{font-family:var(--mono2);font-size:15px;font-weight:700;color:var(--text);letter-spacing:1px;min-width:52px;text-align:center}
.rcal-nav{width:26px;height:26px;border:1px solid var(--border2);border-radius:5px;background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text2);font-size:13px;user-select:none}
.rcal-nav:hover{background:var(--surface2)}
.rcal-nav.dis{opacity:.3;pointer-events:none}
.rcal-months{flex:1;min-height:0;max-height:360px;overflow-y:auto;scrollbar-width:none;padding-bottom:6px;-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 10px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 10px),transparent)}
.rcal-months::-webkit-scrollbar{width:0;display:none}
.rcal-mon{margin-bottom:14px}
.rcal-mlbl{font-family:var(--mono);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--accent-ink);padding:2px 2px 6px;position:sticky;top:0;background:var(--surface);z-index:1}
.rcal-grid{display:grid;grid-template-columns:repeat(7,32px);gap:2px}
.rcal-wd{font-family:var(--mono);font-size:9.5px;font-weight:600;color:var(--label);text-align:center;padding:1px 0 4px;text-transform:uppercase}
.rcal-wd.we{color:var(--accent-ink)}
.rcal-dc{height:30px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:12px;color:var(--text);border-radius:5px;cursor:pointer;transition:background .12s var(--ease-out)}
.rcal-dc:hover{background:var(--surface2)}
.rcal-dc.dis{color:var(--text3);opacity:.35;cursor:not-allowed;pointer-events:none}
.rcal-dc.inr{background:var(--accent-soft);border-radius:0}
.rcal-dc.ep{background:var(--accent);color:#fff;font-weight:700}
.rcal-dc.ep.s{border-radius:5px 0 0 5px}.rcal-dc.ep.e{border-radius:0 5px 5px 0}.rcal-dc.ep.s.e{border-radius:5px}
.rcal-dc.cinr{background:rgba(100,116,139,.16);border-radius:0}
.rcal-dc.cep{background:#64748b;color:#fff;font-weight:700}
.rcal-dc.cep.s{border-radius:5px 0 0 5px}.rcal-dc.cep.e{border-radius:0 5px 5px 0}.rcal-dc.cep.s.e{border-radius:5px}
.rcal-leg{display:flex;align-items:center;gap:14px;margin-top:8px;padding-top:9px;border-top:1px solid var(--border);font-family:var(--mono);font-size:10.5px;color:var(--text2)}
.rcal-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:middle;margin-right:5px}
.rcal-leg .dim i{background:var(--text3);opacity:.4}
.rcal-side{border-left:1px solid var(--border);padding:13px 14px;width:188px;display:flex;flex-direction:column;gap:7px;background:var(--surface2)}
.rcal-fl{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--label);margin:5px 0 1px}
.rcal-card{position:relative;display:block;text-align:left;background:var(--surface);border:1px solid var(--border2);border-left:3px solid var(--border2);border-radius:var(--r-sm);padding:8px 11px;cursor:pointer;opacity:.62;transition:opacity .12s,box-shadow .12s,background .12s,border-color .12s}
.rcal-card:hover{opacity:.85}
.rcal-card.on{opacity:1}
.rcal-card .rcal-cl{font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--label);font-weight:600}
.rcal-card .rcal-cn{font-family:var(--mono);font-size:10px;color:var(--text3);margin-top:3px}
.rcal-card.per{border-left-color:var(--accent)}
.rcal-card.cmp{border-left-color:#64748b}
.rcal-card.per.on{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 24%,transparent)}
.rcal-card.per.on .rcal-cl{color:var(--accent-ink)}
.rcal-card.cmp.on{background:rgba(100,116,139,.14);border-color:#64748b;box-shadow:0 0 0 2px rgba(100,116,139,.28)}
.rcal-line{display:flex;align-items:center;gap:6px;margin-top:5px}
.rcal-k{font-family:var(--mono);font-size:10px;color:var(--label);width:16px;flex:0 0 auto;text-align:right}
.rcal-in{width:92px;flex:0 0 auto;font-family:var(--mono);font-size:11.5px;font-weight:700;color:var(--text);background:var(--surface);border:1px solid var(--border2);border-radius:4px;padding:4px 6px;text-align:center}
.rcal-in:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.rcal-in.bad{border-color:var(--red);box-shadow:0 0 0 2px color-mix(in srgb,var(--red) 18%,transparent)}
.rcal-psrow{display:flex;flex-direction:column;gap:5px}
.rcal-pset{width:100%;font-family:var(--mono);font-size:11px;font-weight:600;color:var(--text);background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-sm);padding:7px 11px;text-align:center;cursor:pointer;transition:background .12s,border-color .12s}
.rcal-pset:active{transform:scale(.985)}
.rcal-pset:hover{background:var(--surface2);border-color:var(--label)}
.rcal-pset.on{background:var(--text);color:var(--bg);border-color:var(--text)}
.rcal-row2{display:flex;gap:7px;margin-top:auto;padding-top:8px}
.rcal-btn{flex:1;font-family:var(--mono);font-size:12px;font-weight:600;border-radius:var(--r-sm);padding:8px 0;cursor:pointer;border:1px solid var(--border2);background:var(--surface);color:var(--text)}
.rcal-btn:hover{background:var(--surface2)}
.rcal-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.rcal-trg{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-sm);padding:7px 12px;font-family:var(--mono);font-size:12px;font-weight:600;color:var(--text);cursor:pointer}
.rcal-trg .ic{color:var(--accent-ink)}.rcal-trg .cv{color:var(--text3);font-size:10px}
.rcal-trg .vs{color:var(--text3);margin:0 3px}
@media (max-width:640px){.rcal-pop{flex-direction:column}.rcal-side{border-left:none;border-top:1px solid var(--border);width:auto}}

/* ══ Формы-модалки «Терминал» (fm): замена системных prompt()/confirm() ══ */
.fm-ov{position:fixed;inset:0;z-index:130;background:rgba(20,23,26,.34);display:flex;align-items:center;justify-content:center;padding:20px}
.fm{background:var(--surface);border:1px solid var(--border2);border-radius:8px;box-shadow:var(--shadow-xl);width:380px;max-width:100%;overflow:hidden;font-family:var(--font)}
.fm-hd{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--border)}
.fm-title{font-size:14px;font-weight:700;color:var(--text);letter-spacing:-.2px}
.fm-x{width:26px;height:26px;border:1px solid var(--border2);border-radius:5px;background:var(--surface);display:flex;align-items:center;justify-content:center;color:var(--text2);cursor:pointer;font-size:13px}
.fm-x:hover{background:var(--surface2)}
.fm-body{padding:15px 16px}
.fm-row{margin-bottom:12px}.fm-row:last-child{margin-bottom:0}
.fm-lbl{font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--label);margin-bottom:5px;display:block}
.fm-in{width:100%;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--text);background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-sm);padding:8px 10px}
.fm-in:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.fm-in::placeholder{color:var(--muted);font-weight:500}
.fm-in.bad{border-color:var(--red);box-shadow:0 0 0 2px color-mix(in srgb,var(--red) 18%,transparent)}
.fm-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fm-suffix{position:relative}
.fm-suffix .sfx{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:11px;color:var(--muted);pointer-events:none}
.fm-seg{display:inline-flex;border:1px solid var(--border2);border-radius:var(--r-sm);overflow:hidden;width:100%}
.fm-seg button{flex:1;font-family:var(--mono);font-size:12px;font-weight:600;border:none;background:var(--surface);color:var(--text);padding:7px 2px;cursor:pointer;border-right:1px solid var(--border)}
.fm-seg button:last-child{border-right:none}
.fm-seg button.on{background:var(--text);color:var(--bg)}
.fm-seg button.on.in{background:var(--green);color:#fff}.fm-seg button.on.out{background:var(--accent);color:#fff}
.fm-hint{font-family:var(--mono);font-size:10px;color:var(--muted);margin-top:6px;line-height:1.5}
.fm-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border);background:var(--surface2)}
.fm-foot .spread{margin-right:auto;font-family:var(--mono);font-size:11px;color:var(--text)}
.fm-btn{font-family:var(--mono);font-size:12px;font-weight:600;border-radius:var(--r-sm);padding:8px 15px;cursor:pointer;border:1px solid var(--border2);background:var(--surface);color:var(--text)}
.fm-btn:hover{background:var(--surface2)}
.fm-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.fm-btn.danger{background:var(--red);border-color:var(--red);color:#fff}
.fm-btn.amber{background:var(--amber);border-color:var(--amber);color:#fff}
.fm-btn.primary:hover,.fm-btn.danger:hover,.fm-btn.amber:hover{filter:brightness(1.06)}
.fm-confirm{display:flex;gap:12px;align-items:flex-start;padding:16px}
.fm-ic{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.fm-ic.warn{background:color-mix(in srgb,var(--red) 12%,var(--surface));color:var(--red)}
.fm-ic.arch{background:color-mix(in srgb,var(--amber) 14%,var(--surface));color:var(--amber)}
.fm-confirm .t{font-size:14px;font-weight:700;color:var(--text)}
.fm-confirm .s{font-size:12px;color:var(--text2);margin-top:3px;line-height:1.5}

/* ── Автоуправление рекламой по остаткам FBO (adsa) ───────────────────────── */
.adsa-hero{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.adsa-hero-txt{min-width:0;flex:1 1 320px}
.adsa-hero-title{font-size:15px;font-weight:700;letter-spacing:-.2px;color:var(--text);display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.adsa-state{font-size:10px;font-weight:700;font-family:var(--mono);text-transform:uppercase;letter-spacing:.6px;padding:2px 9px;border-radius:20px}
.adsa-state.on{color:var(--green);background:var(--green-dim)}
.adsa-state.off{color:var(--text3);background:var(--surface2)}
.adsa-hero-sub{font-size:12px;color:var(--text2);margin-top:5px;max-width:600px;line-height:1.5}
/* iOS-переключатель (кнопка): рубильник и per-row тумблер */
.adsa-sw{position:relative;width:38px;height:21px;border-radius:20px;border:none;background:var(--border2);cursor:pointer;padding:0;flex:none;vertical-align:middle;transition:background .2s var(--ease-out)}
.adsa-sw .th{position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform .24s var(--ease-drawer),width .16s var(--ease-out)}
.adsa-sw.on{background:var(--wb)}
.adsa-sw.on .th{transform:translateX(17px)}
.adsa-sw:active .th{width:20px}
.adsa-sw.lg{width:52px;height:29px}
.adsa-sw.lg .th{width:25px;height:25px}
.adsa-sw.lg.on .th{transform:translateX(23px)}
.adsa-sw.lg:active .th{width:28px}
.adsa-sw:focus-visible{outline:none;box-shadow:var(--ring)}
@media (hover:hover) and (pointer:fine){.adsa-sw:hover{filter:brightness(.97)}}
@media (prefers-reduced-motion:reduce){.adsa-sw .th{transition:none}}
/* статус-точка кампании */
.adsa-dot{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:var(--text3);font-family:var(--font);white-space:nowrap}
.adsa-dot i{width:8px;height:8px;border-radius:50%;background:var(--border2);flex:none}
.adsa-dot.run{color:var(--green)}
.adsa-dot.run i{background:var(--green);box-shadow:0 0 0 3px var(--green-dim)}
/* FBO */
.adsa-fbo{font-family:var(--mono2);font-variant-numeric:tabular-nums;font-weight:700;font-size:12px;color:var(--text)}
.adsa-fbo.zero{color:var(--red)}
.adsa-fbo.zero::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-right:6px;vertical-align:middle}
/* «должно быть» */
.adsa-tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:7px;font-family:var(--font)}
.adsa-tag.go{color:var(--green);background:var(--green-dim)}
.adsa-tag.stop{color:var(--text2);background:var(--surface2)}
.adsa-tag.na{color:var(--text3)}
/* строка-рассинхрон: тонкая янтарная риска слева, без заливки всей строки */
.adsa-row.mm td:first-child{box-shadow:inset 3px 0 0 var(--amber)}
.adsa-last{font-size:11px;color:var(--text2);font-family:var(--font)}
.adsa-last .adsa-err{color:var(--red)}
.adsa-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.adsa-count{font-size:12px;color:var(--text3);font-family:var(--mono)}

/* Анализ поставок v2 (A+B). Токены Терминала; nomat = text2 (слейт) */
.sa2-band{display:flex;align-items:baseline;gap:11px;margin:26px 0 13px}
.sa2-band .no{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--wb)}
.sa2-band h3{font-size:16px;margin:0;font-weight:650}
.sa2-band .bn{margin-left:auto;font-size:12px;color:var(--text3)}
.sa2-grid{display:grid;gap:13px}
.sa2-c2{grid-template-columns:1fr 1.35fr}
.sa2-c2b{grid-template-columns:.85fr 1.15fr}
.sa2-c2c{grid-template-columns:1fr 1fr}
@media(max-width:820px){.sa2-c2,.sa2-c2b{grid-template-columns:1fr}}
@media(max-width:640px){.sa2-c2c{grid-template-columns:1fr}}
.sa2-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}
.sa2-lbl{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);font-weight:600}
.sa2-hero{padding:18px 20px;display:flex;flex-direction:column;justify-content:space-between;min-height:150px}
.sa2-big{font-family:var(--mono);font-size:48px;font-weight:680;line-height:1;letter-spacing:-.02em;margin:9px 0 2px}
.sa2-big span{font-size:20px;color:var(--text3)}
.sa2-raw{font-size:12px;color:var(--text3)} .sa2-raw s{color:var(--red)} .sa2-raw b{color:var(--text);font-family:var(--mono)}
.sa2-trend{margin-top:12px;font-size:12px;color:var(--text3);display:flex;gap:8px;align-items:center}
.sa2-chip{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:11px;border-radius:20px;padding:2px 8px;font-weight:600}
.sa2-chip.up{background:var(--green-dim);color:var(--green)} .sa2-chip.dn{background:var(--wb-dim);color:var(--red)}
.sa2-bd{padding:16px 20px 18px}
.sa2-bd .cap{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:13px}
.sa2-bd .tot{font-family:var(--mono);font-size:12px;color:var(--text3)} .sa2-bd .tot b{color:var(--text);font-size:14px}
.sa2-bar{display:flex;height:44px;border-radius:7px;overflow:hidden;gap:2px}
.sa2-seg{position:relative;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--mono);font-weight:700;font-size:13px;min-width:2px}
.sa2-seg small{position:absolute;top:calc(100% + 6px);left:0;color:var(--text3);font-size:10.5px;font-weight:600;white-space:nowrap}
.sa2-seg.g{background:var(--green)} .sa2-seg.r{background:var(--red)} .sa2-seg.n{background:var(--text2)} .sa2-seg.o{background:var(--sa2-over)}
.sa2-seg.g .hat{position:absolute;right:0;top:0;bottom:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.55),rgba(255,255,255,.55) 3px,transparent 3px,transparent 7px);border-left:2px dashed rgba(255,255,255,.8)}
.sa2-leg{margin-top:32px;display:flex;gap:14px 16px;flex-wrap:wrap;font-size:12px;color:var(--text3)}
.sa2-leg .l{display:flex;align-items:center;gap:6px} .sa2-leg b{color:var(--text);font-family:var(--mono)}
.sa2-dot{width:10px;height:10px;border-radius:3px;flex:none}
.sa2-dot.hat{background:var(--green);position:relative;overflow:hidden}
.sa2-dot.hat::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.6),rgba(255,255,255,.6) 1.5px,transparent 1.5px,transparent 3.5px)}
.sa2-extra{margin-top:13px;padding-top:12px;border-top:1px dashed var(--border);font-size:12px;color:var(--text3)} .sa2-extra b{color:var(--text);font-family:var(--mono)}
.sa2-min{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:11px;font-weight:700;border-radius:5px;padding:2px 6px;color:var(--text);background:linear-gradient(var(--green-dim),var(--green-dim)),repeating-linear-gradient(-45deg,color-mix(in srgb,var(--text2) 16%,transparent),color-mix(in srgb,var(--text2) 16%,transparent) 4px,transparent 4px,transparent 8px);border:1px solid color-mix(in srgb,var(--text2) 40%,var(--border))}
.sa2-callout{margin-top:13px;display:flex;gap:13px;align-items:center;padding:13px 16px;border-radius:var(--r-lg);background:var(--surface);border:1px solid color-mix(in srgb,var(--text2) 32%,var(--border))}
.sa2-callout .ci{font-size:20px;flex:none}
.sa2-callout .cb{font-family:var(--mono);font-size:24px;font-weight:700;line-height:1;color:var(--text2)}
.sa2-callout .ct{font-size:12.5px;color:var(--text3);flex:1} .sa2-callout .ct b{color:var(--text)}
.sa2-sev{padding:16px 18px}
.sa2-sevrow{display:flex;align-items:center;gap:11px;padding:10px 0;border-top:1px solid var(--border)}
.sa2-sevrow:first-of-type{border-top:none}
.sa2-sevrow .ic{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:14px;flex:none}
.sa2-sevrow .nm{font-size:13px;font-weight:600;flex:1} .sa2-sevrow .nm i{display:block;font-style:normal;font-size:11px;color:var(--text3);font-weight:400}
.sa2-sevrow .v{font-family:var(--mono);font-weight:700;font-size:15px}
.sa2-tl{padding:16px 18px 12px}
.sa2-tl .hint{font-size:11.5px;color:var(--text3);margin:3px 0 14px}
.sa2-tlchart{display:flex;align-items:flex-end;gap:5px;height:136px}
.sa2-tlstack{display:flex;flex-direction:column;align-items:center;width:100%}   /* шапка перевоза + столбик БЕЗ зазора */
.sa2-tlov{width:100%;max-width:24px;background:var(--sa2-over);border-radius:3px 3px 0 0;flex:none}   /* скруглён только верх — низ вплотную к столбику */
.sa2-tlbar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;min-width:0}
.sa2-tlcol{width:100%;max-width:24px;border-radius:4px 4px 0 0;display:flex;flex-direction:column-reverse;overflow:hidden}
.sa2-tlbar.hasov .sa2-tlcol,.sa2-tlbar.hasov .sa2-tlcol .fill{border-radius:0}   /* есть перевоз → верх столбика плоский, скругление ушло на шапку */
.sa2-tlcol .fill{width:100%;background:var(--green);border-radius:4px 4px 0 0}
.sa2-tlcol .fmark{width:100%;background:var(--green);position:relative}
.sa2-tlcol .fmark::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.6),rgba(255,255,255,.6) 2px,transparent 2px,transparent 5px)}
.sa2-tlcol .way{width:100%;background:repeating-linear-gradient(45deg,var(--amber),var(--amber) 4px,transparent 4px,transparent 7px);opacity:.9}
.sa2-tlcol .track{width:100%;background:var(--surface2)}
.sa2-tlbar.prod .sa2-tlcol{background:color-mix(in srgb,var(--text2) 12%,transparent);border:1px dashed var(--text3)}
.sa2-tlbar .pc{font-family:var(--mono);font-size:9.5px;font-weight:700;color:var(--text3)}
.sa2-tlleg{margin-top:12px;display:flex;gap:13px;font-size:11px;color:var(--text3);flex-wrap:wrap}
.sa2-chr{padding:15px 17px}
.sa2-chr h4{font-size:13px;display:flex;align-items:center;gap:7px;margin:0 0 3px;font-weight:650}
.sa2-chr h4 .cnt{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--text3);font-weight:600}
.sa2-chr .hint{font-size:11px;color:var(--text3);margin-bottom:11px}
.sa2-chrrow{display:flex;align-items:center;gap:9px;padding:7px 0;border-top:1px solid var(--border);font-size:12.5px}
.sa2-chrrow:first-of-type{border-top:none}
.sa2-chrrow .art{flex:1;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px;min-width:0}
.sa2-chrrow .art .an{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sa2-chrrow .meta{font-family:var(--mono);font-size:10.5px;color:var(--text3);white-space:nowrap}
.sa2-chrrow .ms{font-family:var(--mono);font-weight:700;font-size:12.5px}
.sa2-chr.mat .ms{color:var(--text2)} .sa2-chr.our .ms{color:var(--red)}
.sa2-chr.clk{cursor:pointer;transition:border-color .15s var(--ease-out,ease),box-shadow .15s var(--ease-out,ease),transform .12s var(--ease-out,ease)}
.sa2-chr.clk:hover{border-color:var(--text3);box-shadow:var(--shadow-sm,0 1px 4px rgba(0,0,0,.06))}
.sa2-chr.clk:active{transform:scale(.995)}
.sa2-chr.clk:focus-visible{outline:2px solid var(--ring,var(--wb));outline-offset:2px}
.sa2-chrmore{margin-top:11px;padding-top:10px;border-top:1px solid var(--border);font-size:11.5px;font-weight:600;color:var(--wb);text-align:right}
.sa2-part{font-family:var(--mono);font-size:9.5px;font-weight:700;color:var(--green);background:var(--green-dim);border-radius:4px;padding:1px 5px;white-space:nowrap}
.sa2-ledger{border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;background:var(--surface)}
.sa2-ltbl{width:100%;border-collapse:collapse;font-size:12.5px}
.sa2-ltbl thead th{font-family:var(--mono);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);font-weight:600;text-align:right;padding:10px 12px;background:var(--surface2);border-bottom:1px solid var(--border);white-space:nowrap}
.sa2-ltbl thead th:first-child,.sa2-ltbl thead th.l{text-align:left}
.sa2-ltbl td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:right;white-space:nowrap}
.sa2-ltbl td:first-child{text-align:left} .sa2-ltbl tr:last-child td{border-bottom:none}
.sa2-ltbl tr.clk{cursor:pointer} .sa2-ltbl tr.clk:hover td{background:var(--surface2)}
.sa2-ff{display:flex;align-items:center;gap:8px;justify-content:flex-start}
.sa2-fft{width:80px;height:8px;border-radius:5px;background:var(--surface2);overflow:hidden;display:flex;flex:none}
.sa2-fft .g{background:var(--green);height:100%}
.sa2-fft .m{background:var(--green);height:100%;position:relative}
.sa2-fft .m::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.55),rgba(255,255,255,.55) 1.5px,transparent 1.5px,transparent 3.5px)}
.sa2-fft .w{background:var(--amber);height:100%;opacity:.85}
.sa2-ffn{font-family:var(--mono);font-weight:700;width:36px;text-align:right}
.sa2-badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:10.5px;font-weight:600;border-radius:20px;padding:2px 8px}
.sa2-badge.done{background:var(--green-dim);color:var(--green)} .sa2-badge.way{background:color-mix(in srgb,var(--amber) 16%,transparent);color:var(--amber)}
.sa2-badge.prod{background:color-mix(in srgb,var(--text2) 14%,transparent);color:var(--text2)} .sa2-badge.fail{background:var(--wb-dim);color:var(--red)}
.sa2-mk{font-size:12px;cursor:default}

/* ── Розница · Дашборд (полный раздел: Пульс · Прогноз · Кто приносит деньги · Служебное) ── */
.rtd-sec{margin-top:22px}
.rtd-split{display:grid;grid-template-columns:1.7fr 1fr;gap:14px}
.rtd-split4{display:grid;grid-template-columns:1.25fr 1fr;gap:14px}
@media(max-width:860px){.rtd-split,.rtd-split4{grid-template-columns:1fr}}
.rtd-revbar{display:inline-block;height:6px;border-radius:3px;background:var(--wb);opacity:.85;vertical-align:middle;margin-right:8px}
.rtd-mrev{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:9px;letter-spacing:-.5px}
.rtd-fc-big{font-size:26px;font-weight:800;font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-1px;line-height:1;margin-top:8px}
.rtd-fc-row{display:flex;justify-content:space-between;font-size:12px;color:var(--text2);margin-top:6px}
.rtd-fc-row b{color:var(--text)}
.rtd-prog{height:7px;border-radius:5px;background:var(--surface2);overflow:hidden;margin:10px 0 5px;border:1px solid var(--border)}
.rtd-prog>i{display:block;height:100%;background:linear-gradient(90deg,var(--wb2),var(--wb));border-radius:5px}
.rtd-fc-note{font-size:10.5px;color:var(--text3);line-height:1.5;margin-top:7px}
.rtd-ctip{position:fixed;z-index:60;pointer-events:none;background:var(--surface);border:1px solid var(--border2);border-radius:9px;box-shadow:var(--shadow-lg);padding:8px 11px;opacity:0;transform:translateY(3px);transition:opacity .1s var(--ease-out),transform .1s var(--ease-out)}
.rtd-ctip.on{opacity:1;transform:none}
.rtd-ctip .tl{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--text)}
.rtd-ctip .tv{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:800;font-size:15px;color:var(--wb2);margin-top:3px;letter-spacing:-.5px}
.rtd-hit{cursor:crosshair}
.rtd-owner{border:1px dashed var(--border2);border-radius:var(--r-card);background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--surface2) 70%,var(--surface)),color-mix(in srgb,var(--surface2) 70%,var(--surface)) 12px,var(--surface) 12px,var(--surface) 24px);padding:16px 18px 18px}
.rtd-owner-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--text2);background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:4px 11px;box-shadow:var(--shadow-sm)}
.rtd-alist{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:640px){.rtd-alist{grid-template-columns:1fr}}
.rtd-arow{display:flex;gap:11px;align-items:flex-start;padding:11px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm)}
.rtd-arow:hover{border-color:var(--border2);box-shadow:var(--shadow-sm)}
.rtd-arow .ico{font-size:15px;line-height:1.3;flex-shrink:0}
.rtd-arow .atx{font-size:12.5px;line-height:1.45;color:var(--text2)}
.rtd-arow .go{margin-left:auto;color:var(--text3);font-size:15px;align-self:center}
.rtd-arow.red{box-shadow:inset 3px 0 0 var(--red)}
.rtd-arow.amber{box-shadow:inset 3px 0 0 var(--amber)}
.rtd-arow.blue{box-shadow:inset 3px 0 0 var(--wb)}

/* ── Запуск в производство: степпер стадий, канбан цеха, полосы выработки ── */
.pl-steps{display:flex;gap:0;flex-wrap:wrap}
.pl-step{flex:1;min-width:98px;position:relative;padding:8px 6px;text-align:center}
.pl-step-dot{width:12px;height:12px;border-radius:50%;background:var(--border2);margin:0 auto 6px;position:relative;z-index:1;border:2px solid var(--surface2)}
.pl-step::before{content:"";position:absolute;top:16px;left:-50%;width:100%;height:2px;background:var(--border2);z-index:0}
.pl-step:first-child::before{display:none}
.pl-step.done .pl-step-dot{background:var(--green)}
.pl-step.done::before{background:var(--green)}
.pl-step.cur .pl-step-dot{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.pl-step-name{font-size:11px;font-weight:600;color:var(--text)}
.pl-step.todo .pl-step-name{color:var(--text3)}
.pl-step-meta{font-size:10px;color:var(--text2);font-family:var(--mono)}
.pl-step-cmt{font-size:10px;color:var(--red);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-card);padding:10px 12px}
.pl-card-hd{font-size:12px;margin-bottom:12px;color:var(--text)}
.pl-kan{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px}
.pl-kan-col{flex:0 0 192px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-card);display:flex;flex-direction:column;max-height:70vh}
.pl-kan-hd{padding:8px 10px;font-size:12px;font-weight:600;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
.pl-kan-n{font-family:var(--mono);background:var(--surface3);border-radius:20px;padding:1px 8px;font-size:11px;color:var(--text2)}
.pl-kan-body{padding:6px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.pl-kan-card{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-sm);padding:6px 8px;cursor:pointer;transition:border-color .15s var(--ease-out)}
.pl-kan-card:hover{border-color:var(--accent)}
.pl-kan-ml{font-family:var(--mono);font-size:11px;color:var(--text2)}
.pl-kan-art{font-size:12px;color:var(--text);font-weight:500;line-height:1.25}
.pl-kan-q{font-family:var(--mono);font-size:11px;color:var(--text3)}
.pl-row{display:flex;align-items:center;gap:10px;margin:5px 0}
.pl-row-lbl{flex:0 0 116px;font-size:12px;color:var(--text)}
.pl-row-bar{flex:1;height:14px;background:var(--surface3);border-radius:7px;overflow:hidden}
.pl-row-fill{height:100%;background:var(--accent);border-radius:7px}
.pl-row-fill.r{background:var(--red)}
.pl-row-val{flex:0 0 132px;text-align:right;font-family:var(--mono);font-size:11px;color:var(--text2)}
/* ── Запуск v2: компактный вид ── */
.pl-stats{display:flex;gap:22px;flex-wrap:wrap;padding:9px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-card);margin-bottom:10px}
.pl-stat{display:flex;flex-direction:column;line-height:1.15}
.pl-stat b{font-family:var(--mono);font-size:19px;color:var(--text);font-weight:600}
.pl-stat span{font-size:10px;color:var(--text2);text-transform:uppercase;letter-spacing:.03em;margin-top:1px}
.pl-stat.hi b{color:var(--accent)}
.pl-seg{margin:2px 0 8px}
.pl-dense td,.pl-dense th{padding:3px 9px!important;font-size:11.5px}
.pl-dense thead th{position:sticky;top:0;background:var(--surface);z-index:1}
.pl-note{padding:6px 10px;font-size:11px;color:var(--text3);line-height:1.4}
.pl-chk{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text2);cursor:pointer;white-space:nowrap}
.pl-chk input{accent-color:var(--accent)}
/* конвейер-переключатель участков */
.pl-pipe{display:flex;align-items:stretch;overflow-x:auto;margin-bottom:12px;padding-bottom:4px}
.pl-stn{background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-card);padding:7px 12px;min-width:106px;cursor:pointer;text-align:left;transition:border-color .12s var(--ease-out),background .12s var(--ease-out)}
.pl-stn:hover{border-color:var(--border2)}
.pl-stn.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface2))}
.pl-stn-nm{font-size:12px;font-weight:600;color:var(--text);margin-bottom:4px;white-space:nowrap}
.pl-stn-row{display:flex;gap:10px;font-family:var(--mono);font-size:11px}
.pl-stn-row .i{color:var(--amber)}
.pl-stn-row .w{color:var(--accent)}
.pl-stn-row .d{color:var(--text3)}
.pl-stn-arr{align-self:center;color:var(--text3);padding:0 3px;flex-shrink:0;font-size:13px}
.pl-sthd{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--text2);margin-bottom:10px}
.pl-sthd b{color:var(--text);font-size:14px}
.pl-scanwrap{display:flex;align-items:center;gap:6px}
.pl-scan{font-family:var(--mono);font-size:13px;padding:6px 10px;border:1px solid var(--border2);border-radius:var(--r-md);background:var(--surface);color:var(--text);width:270px;max-width:52vw;outline:none}
.pl-scan:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.pl-scan-ic{font-size:15px;color:var(--text3)}
.pl-qi-main{min-width:0}
.pl-qi-side{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0}
.pl-act{font-family:var(--font);font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:5px;border:1px solid var(--border2);background:var(--surface);color:var(--text2);cursor:pointer;white-space:nowrap;transition:border-color .12s var(--ease-out),background .12s var(--ease-out),transform .08s}
.pl-act:hover{border-color:var(--accent);color:var(--text)}
.pl-act:active{transform:scale(.96)}
.pl-act.ok{border-color:color-mix(in srgb,var(--green) 45%,var(--border2));color:var(--green)}
.pl-act.ok:hover{background:color-mix(in srgb,var(--green) 12%,var(--surface))}
.pl-act.go{border-color:color-mix(in srgb,var(--accent) 45%,var(--border2));color:var(--accent)}
.pl-act.go:hover{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}
.pl-stcols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.pl-stcol{background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-card);display:flex;flex-direction:column;max-height:64vh}
.pl-stcol-hd{padding:8px 11px;font-size:12px;font-weight:600;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:8px}
.pl-stcol-hd .c{font-family:var(--mono);color:var(--text2);font-size:10.5px;font-weight:500;white-space:nowrap}
.pl-stcol-body{padding:6px;overflow-y:auto;display:flex;flex-direction:column;gap:5px}
.pl-empty{padding:10px;font-size:11px;text-align:center}
.pl-qi{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-sm);padding:5px 8px;display:flex;justify-content:space-between;gap:8px;align-items:center;cursor:pointer;transition:border-color .12s var(--ease-out)}
.pl-qi:hover{border-color:var(--accent)}
.pl-qi.old{border-left:2px solid var(--amber)}
.pl-qi .a{font-size:11.5px;color:var(--text);line-height:1.2;font-weight:500}
.pl-qi .m{font-family:var(--mono);font-size:10px;color:var(--text3);margin-top:1px}
.pl-qi .q{font-family:var(--mono);font-size:13px;color:var(--text);flex-shrink:0}
@media(max-width:900px){.pl-stcols{grid-template-columns:1fr}}

/* ── Пульт авто-обновления (Настройки → Обновление) ── */
.upd-cycles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:14px}
.upd-cyc{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:11px 13px}
.upd-cyc .l{font-size:10.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:6px}
.upd-cyc .v{font-size:13.5px;margin-top:5px;font-weight:600}
.upd-cyc .hint{font-size:11px;color:var(--text3);margin-top:5px;line-height:1.45}
.upd-time{width:78px;background:var(--surface);border:1px solid var(--border2);border-radius:7px;color:var(--text);font:inherit;font-size:12.5px;padding:2px 6px;vertical-align:middle}
.upd-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:8px}
.upd-table th{font-size:10.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:6px 8px;border-bottom:1px solid var(--border)}
.upd-table td{padding:5px 8px;border-bottom:1px solid var(--border);vertical-align:middle}
.upd-table tr.grp td{background:var(--surface2);font-weight:600;font-size:10.5px;color:var(--text2);text-transform:uppercase;letter-spacing:.06em;padding:5px 8px}
.upd-table tr.dim td{opacity:.45}
.upd-days{width:58px;background:var(--surface);border:1px solid var(--border2);border-radius:7px;color:var(--text);font:inherit;font-size:12.5px;padding:3px 6px;text-align:center}
.upd-st{white-space:nowrap}
.upd-run{padding:2px 9px;font-size:11px;line-height:1.5}

/* ── Инструменты (workspace tools) ── */
.tl-hub-lead{color:var(--text2);font-size:13px;line-height:1.55;margin-bottom:16px}
.tl-hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.tl-card{position:relative;text-align:left;display:flex;flex-direction:column;gap:9px;padding:18px 18px 15px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);cursor:pointer;font:inherit;color:var(--text);transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out),border-color .18s var(--ease-out)}
.tl-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--wb) 45%,var(--border));box-shadow:var(--shadow-lg,0 8px 24px rgba(35,31,32,.1))}
.tl-card:active{transform:translateY(0) scale(.99)}
.tl-card-ic{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--wb-dim);color:var(--wb)}
.tl-card-ic svg{width:22px;height:22px}
.tl-card-badge{position:absolute;top:14px;right:14px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--wb);background:var(--wb-dim);padding:2px 8px;border-radius:20px}
.tl-card-t{font-size:14.5px;font-weight:700;line-height:1.25}
.tl-card-d{font-size:12px;color:var(--text2);line-height:1.5;flex:1}
.tl-card-go{font-size:12px;font-weight:600;color:var(--wb);margin-top:2px}
.tl-card-soon{cursor:default;opacity:.6;box-shadow:none;border-style:dashed}
.tl-card-soon:hover{transform:none;border-color:var(--border);box-shadow:none}
.tl-card-soon .tl-card-ic{background:var(--surface2);color:var(--text3)}
@media (prefers-reduced-motion:reduce){.tl-card,.tl-card:hover,.tl-card:active{transform:none;transition:none}}
.tl-intro{color:var(--text2);font-size:12.5px;line-height:1.55;max-width:900px;margin-bottom:14px}
.tl-uploader{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.tl-filebtn{cursor:pointer}
.tl-muted{color:var(--text3);font-size:12px}
.tl-bar{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:12px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:12px}
.tl-bar-sp{flex:1}
.tl-stat{font-size:12px;color:var(--text2)}
.tl-stat-n{font-size:17px;font-weight:700;color:var(--text);font-family:var(--mono);margin-right:4px}
.tl-stat-warn .tl-stat-n{color:var(--amber)}
.tl-table{width:100%}
.tl-table td{vertical-align:top}
.tl-num{color:var(--text3);font-family:var(--mono);text-align:right;width:34px}
.tl-name>div:first-child{font-weight:600;font-size:12.5px}
.tl-name .tl-muted{margin-top:2px}
.tl-qty{width:66px;background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-sm);color:var(--text);font:inherit;font-size:12.5px;padding:4px 6px;text-align:center}
.tl-oidcell{min-width:260px}
.tl-oid{width:100%;max-width:290px;background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-sm);color:var(--text);font:inherit;font-family:var(--mono);font-size:12px;padding:4px 7px}
.tl-cand{margin-top:5px;max-width:290px;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text2);font:inherit;font-size:11px;padding:3px 5px}
.tl-badges{margin-top:4px;display:flex;gap:5px;flex-wrap:wrap}
.tl-tag{display:inline-block;padding:1px 6px;border-radius:20px;font-size:10px;font-weight:600;background:var(--surface3);border:1px solid var(--border);color:var(--text2)}
.tl-tag-g{background:color-mix(in srgb,var(--green) 14%,var(--surface));border-color:color-mix(in srgb,var(--green) 34%,var(--border));color:var(--green)}
.tl-tag-r{background:color-mix(in srgb,var(--red) 12%,var(--surface));border-color:color-mix(in srgb,var(--red) 32%,var(--border));color:var(--red)}
.tl-tag-a{background:color-mix(in srgb,var(--amber) 14%,var(--surface));border-color:color-mix(in srgb,var(--amber) 34%,var(--border));color:var(--amber)}
.tl-conf{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap}
.tl-conf-g{background:color-mix(in srgb,var(--green) 14%,var(--surface));color:var(--green)}
.tl-conf-n{background:color-mix(in srgb,var(--amber) 14%,var(--surface));color:var(--amber)}
.tl-conf-r{background:color-mix(in srgb,var(--red) 12%,var(--surface));color:var(--red)}
