/* Дополнения к стилям макета */
/* Поле даты: календарик слева от даты (белый на тёмном), всё поле открывает выбор даты; родной значок справа скрыт */
.date input{background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e7edf4' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E") no-repeat 0 50%/15px 15px;border:0;color:var(--text);font-weight:600;width:108px;padding:0 0 0 22px;color-scheme:dark;position:relative;cursor:pointer;-webkit-appearance:none;appearance:none;min-height:24px;font-family:inherit;font-size:inherit}
.date input::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:auto;height:auto;margin:0;padding:0;opacity:0;cursor:pointer;background:none}
.date input::-webkit-date-and-time-value{text-align:left;margin:0}
.date input::-webkit-datetime-edit{padding:0}
.date{gap:10px}   /* 20.10: поле дат симметрично — ширина по тексту, тире по центру */
.t td .edit.dis{cursor:default;opacity:.6}
.t td .edit.dis svg{display:none}
.lowb{color:var(--amber)!important}
.mini{font-size:11px;color:var(--muted)}
.view{display:none}.view.on{display:block}
.bar-lim{height:4px;border-radius:3px;background:var(--panel3);margin-top:4px;overflow:hidden;width:96px;margin-left:auto}
.bar-lim i{display:block;height:100%;background:var(--acc)}
.bar-lim.over i{background:var(--red)}
.list-box{display:flex;flex-wrap:wrap;gap:6px;min-height:34px}
textarea.inp{width:100%;min-height:80px;resize:vertical;font-family:inherit}
.ph-act{display:flex;gap:4px;justify-content:flex-end}
.ph-act button{padding:3px 7px;font-size:11px}
.warn{background:var(--amber-bg);color:var(--amber);border:1px solid rgba(251,191,36,.35);border-radius:10px;padding:10px 14px;margin-bottom:14px}
.empty{padding:28px;text-align:center;color:var(--muted)}
.log-row td{font-size:12px}
.nmsel{margin-left:8px}
.t .stk2{left:0}
#head{gap:14px!important}
#head .rk-stat{padding:0 12px}
.card-h h3{display:flex;align-items:center;gap:8px}
/* настройки: кабинеты */
.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px}
.btn.danger{background:var(--red);border-color:var(--red);color:#2a0606}
.btn.danger:hover{background:#fca5a5}
.btn.sm.ghost.red{color:var(--red)}
.btn.sm.ghost.red:hover{background:var(--red-bg)}
.tok{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;font-weight:600;background:var(--bg2);border:1px solid var(--line2);border-radius:6px;padding:3px 8px;color:var(--text);letter-spacing:.02em}
.cabs td{vertical-align:top;padding-top:13px;padding-bottom:13px}
.cabs td.msg{white-space:normal;min-width:260px;max-width:380px}
.cabs .msg-l{font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.4}
.cabs .msg-l.warning{color:var(--amber)}.cabs .msg-l.error{color:var(--red)}
.cabs .acts{display:flex;gap:4px;justify-content:flex-end;flex-wrap:nowrap}
.cab-name{font-weight:800;font-size:13.5px;color:var(--text)}
.cab-meta{font-size:11.5px;color:var(--muted);margin-top:3px}
.ttype{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:6px;font-size:11.5px;color:var(--muted);font-weight:600}
textarea.tokin{min-height:74px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;padding:8px 10px;line-height:1.45;word-break:break-all}
.form-err{margin-top:10px;background:var(--red-bg);color:var(--red);border:1px solid rgba(248,113,113,.35);border-radius:9px;padding:9px 12px;font-weight:600;font-size:12px}
.steps{margin:0;padding:0;list-style:none;counter-reset:st;display:flex;flex-direction:column;gap:9px}
.steps li{counter-increment:st;display:flex;gap:10px;color:var(--text2);line-height:1.45}
.steps li::before{content:counter(st);flex-shrink:0;width:20px;height:20px;border-radius:6px;background:var(--acc-bg);color:var(--acc);font-weight:800;font-size:11px;display:grid;place-items:center;margin-top:1px}
.steps b{color:var(--text)}
.links{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:12px;font-weight:600}
.links a{color:var(--acc);display:inline-flex;align-items:center;gap:5px}
.links a:hover{text-decoration:underline}
.set-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;margin-top:16px}
.fc b{color:var(--text)}
.modal textarea.inp{min-height:84px}

/* фразы: выбор строк и «защищена» */
.bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 16px;border-bottom:1px solid var(--line2)}
.bulk-bar .hint{margin-left:auto}
table.clu th.cb,table.clu td.cb{width:34px;text-align:center;padding-left:12px;padding-right:4px}
table.clu input[type=checkbox]{appearance:auto;-webkit-appearance:checkbox;width:15px;height:15px;min-height:0;margin:0;padding:0;border:0;background:none;box-shadow:none;vertical-align:middle;accent-color:var(--acc);cursor:pointer}
table.clu tr.row-sel td{background:#172233}
.st-cell{display:inline-flex;flex-direction:column;gap:4px;align-items:flex-start}
.pill.prot{gap:4px}
textarea.lst-in{min-height:56px}

/* таблица фраз: закреплены чекбокс, фраза, статус и ставка; шапка тоже закреплена (своя прокрутка у таблицы) */
.clu-wrap{max-height:calc(100vh - 110px);min-height:320px;overscroll-behavior-x:contain}
table.clu .fz{position:sticky;z-index:1;background:#121a24}
table.clu .fz1{left:var(--fz1,0)}
table.clu .fz2{left:var(--fz2,34px)}
table.clu .fz3{left:var(--fz3,0)}
table.clu .fz4{left:var(--fz4,0)}
table.clu .fz5{left:var(--fz5,0);box-shadow:inset -1px 0 0 var(--line2)}
.clu-wrap.scrolled table.clu .fz5{box-shadow:inset -1px 0 0 var(--line2),8px 0 10px -6px rgba(0,0,0,.55)}
table.clu th.frq .mini{display:block;font-weight:600;text-transform:none;letter-spacing:0}
table.clu th.fz{z-index:4;background:var(--panel2)}
table.clu tbody tr:hover td.fz{background:#131c26}
table.clu tr.row-sel td.fz{background:#172233}
table.clu th.fz4,table.clu td.fz4{width:1%}
table.clu th.cb,table.clu td.cb{display:table-cell;height:auto;border:0;border-bottom:1px solid var(--line);border-radius:0;cursor:default}
.cp{white-space:nowrap}

/* итоговая строка таблицы «По дням» */
.t tfoot td{padding:10px;text-align:right;white-space:nowrap;font-weight:800;color:var(--text);background:var(--panel2);border-top:1px solid var(--line2)}
.t tfoot td.l{text-align:left}

/* нижняя панель массовых действий */
.bbar{position:fixed;left:232px;right:0;bottom:18px;z-index:60;display:flex;justify-content:center;pointer-events:none;transform:translateY(calc(100% + 30px));opacity:0;visibility:hidden;transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .18s,visibility .22s}
.bbar.show{transform:none;opacity:1;visibility:visible}
.bbar-in{pointer-events:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px 8px 16px;background:#101924;border:1px solid var(--acc-line);border-radius:12px;box-shadow:0 18px 50px rgba(0,0,0,.6),0 0 0 1px rgba(0,0,0,.4)}
.bbar-n{font-weight:700;color:var(--text2);margin-right:2px}.bbar-n b{color:var(--acc);font-size:14px}
.bbar-sep{width:1px;height:22px;background:var(--line2);margin:0 4px}
.bbar-c{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--acc-bg);color:var(--acc);font-size:11px;font-weight:800;margin-left:2px}
.bbar.busy .bbar-in{opacity:.75}
.bbar .btn:disabled{opacity:.55;cursor:wait}
.bbar .btn.red{color:var(--red);border-color:rgba(248,113,113,.35)}
.bbar .btn.red:hover{background:var(--red-bg)}
body.has-bbar .main{padding-bottom:84px}
@media (max-width:900px){.bbar{left:0}}
.toast{pointer-events:none}.toast.show{pointer-events:auto}
body.has-bbar .toast{bottom:86px}

/* «Обновить данные с WB» под логотипом */
.side-sync{margin:2px 0 8px}
.side-sync .btn{width:100%;justify-content:center;height:30px;font-size:12px;color:var(--text2)}
.side-sync .btn:hover{color:var(--acc);border-color:var(--acc-line)}
.side-sync .btn.busy svg{animation:spin 1s linear infinite}
.side-sync .btn:disabled{cursor:wait;opacity:.8}
.side-sync-t{font-size:11px;color:var(--muted);text-align:center;margin-top:4px;min-height:14px}
@keyframes spin{to{transform:rotate(360deg)}}
.load-err .empty{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;color:var(--text2)}
.load-err .empty svg{color:var(--amber,#fbbf24);flex:none}

/* фразы: сортировка и фильтры по метрикам */
.clu thead .srt{cursor:pointer;user-select:none;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
.clu thead .srt:hover{color:var(--text)}
.clu thead .srt.on{color:var(--acc)}
.clu thead .srt .sa{font-style:normal;font-size:9px;opacity:.45}
.clu thead .srt.on .sa{opacity:1}
.btn.sm.on{border-color:var(--acc-line);color:var(--acc);background:var(--acc-bg)}
.mf{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:12px 16px;border-bottom:1px solid var(--line);background:rgba(45,212,191,.03)}
.mf-i{display:flex;align-items:center;gap:6px}
.mf-l{font-size:12px;color:var(--muted);font-weight:600;min-width:0;white-space:nowrap}
.mf-i .inp{width:78px;height:30px;padding:0 8px;font-size:12.5px}
.mf-n{font-size:12px}.mf-n b{color:var(--text)}
.bbar-hid{font-size:11.5px;color:var(--amber);font-weight:600;margin-left:4px}
.card-h.clu-h{flex-wrap:wrap;row-gap:8px}
.card-h.clu-h h3{white-space:nowrap}

/* фраза → поиск WB в новой вкладке */
a.cname.wbq{color:inherit;text-decoration:none}
a.cname.wbq:hover{color:var(--acc);text-decoration:underline;text-underline-offset:2px}
a.cname.wbq .ext{display:inline-flex;margin-left:4px;opacity:0;vertical-align:-1px;transition:opacity .12s}
a.cname.wbq:hover .ext,a.cname.wbq:focus-visible .ext{opacity:.8}
/* режим белого списка */
.wm-tg{gap:8px;font-size:12.5px;color:var(--muted);cursor:pointer;white-space:nowrap}
.wm-pill{white-space:nowrap}

/* строка фильтров «от / до» под заголовками таблицы фраз */
table.clu thead tr.flt th{top:var(--hr1,44px);padding:6px 8px;text-transform:none;letter-spacing:0;font-weight:500;vertical-align:top;z-index:2}
table.clu thead tr.flt th.fz{z-index:4}
.clu .fr{display:flex;gap:4px;justify-content:flex-end}
.clu .fr .inp{width:54px;height:26px;padding:0 6px;font-size:11.5px;text-align:right}
.clu .fr .inp::placeholder{text-align:right}
.clu .fr-sub{margin-top:4px}
.clu .fr-reset{height:26px;font-size:11.5px;padding:0 8px}
/* сортировка таблицы РК, фильтр CPO */
#tbl thead .srt{cursor:pointer;user-select:none;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
#tbl thead .srt:hover{color:var(--text)}
#tbl thead .srt.on{color:var(--acc)}
#tbl thead .srt .sa{font-style:normal;font-size:9px;opacity:.45}
#tbl thead .srt.on .sa{opacity:1}
.cpo-f .inp{width:64px;height:30px;padding:0 8px;font-size:12.5px}
.t thead .qh{margin-left:3px;width:14px;height:14px;font-size:9.5px}

/* сохранённые фильтры: чип с крестиком в правом верхнем углу */
.chip.sf{position:relative;margin-right:4px}
.chip.sf .sf-x{position:absolute;top:-7px;right:-7px;width:17px;height:17px;padding:0;border-radius:50%;border:1px solid var(--line2);background:var(--panel2);color:var(--muted);font-size:12px;line-height:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center}
.chip.sf .sf-x:hover{color:#fff;background:#e5484d;border-color:#e5484d}
/* магазин в боковой панели: стрелка свернуть/развернуть */
.cab-grp + .cab-grp{margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}
.cab-tog{display:flex;align-items:center;gap:8px;min-width:0;width:100%;padding:4px 0;margin:-4px 0;background:none;border:0;color:var(--text);font:inherit;font-size:12px;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cab-tog b{flex:1;min-width:0}
.cab-chev{display:inline-grid;place-items:center;flex:none;width:22px;height:22px;border-radius:6px;color:var(--text2);transition:transform .15s}
@media (hover:hover){.cab-tog:hover .cab-chev{color:var(--acc);background:var(--acc-bg)}}
.cab-tog:focus-visible .cab-chev{color:var(--acc);background:var(--acc-bg)}
.cab-tog:focus-visible{outline:none}
.cab-grp.shut .cab-chev{transform:rotate(-90deg)}
.cab-grp.shut .cab-body{display:none}
.cab-bal b .qh{margin-left:4px}
/* фильтры списка РК: компактные выпадающие списки вместо кнопок */
.fsel{height:32px;font-size:12.5px;padding:0 24px 0 9px;gap:5px;max-width:260px}
.fsel::after{right:10px}
.fsel .sv{overflow:hidden;text-overflow:ellipsis;min-width:0}
.fsel.act{border-color:var(--acc-line);background:var(--acc-bg)}
.fsel.act .sv{color:var(--acc)}
.fsel select{font-size:16px}
.dd{position:relative}
button.dd-btn{color:var(--text);font-family:inherit}
.dd-menu{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:60;min-width:170px;padding:6px;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);box-shadow:0 12px 30px rgba(0,0,0,.45)}
.dd.open .dd-menu{display:block;max-height:min(60vh,420px);overflow-y:auto;overscroll-behavior:contain}
.dd-menu label{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.dd-menu label:hover{background:var(--panel3)}
.dd-menu input{width:16px;height:16px;accent-color:var(--acc);margin:0}
.filters{gap:8px}
.filters .search{min-width:140px;flex:1 1 140px;margin-left:0} /* 13.10: поиск первым в строке (п.20) — без auto-отступа, иначе уезжал вправо */
.filters .cpo-f .inp{width:58px}
.filters .cpo-f{margin-left:4px}
#cabSel .sv,#fCab .sv{max-width:160px}
/* KPI: если плитка узкая, плашка (CTR, ср. чек…) переносится на новую строку, а не обрезается */
.kpi-s{flex-wrap:wrap;row-gap:4px}

/* ===== 08.10: скрываемое боковое меню ===== */
.side-fab{display:none}
.side-hide{margin-left:auto;display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;border:1px solid transparent;background:none;color:var(--muted);cursor:pointer;flex:none}
.side-hide:hover,.side-hide:focus-visible{color:var(--acc);border-color:var(--acc-line);background:var(--acc-bg);outline:none}
html.side-off .app{grid-template-columns:0 1fr;background:var(--bg)}
html.side-off .side{position:fixed;left:0;top:0;z-index:90;width:232px;height:100vh;transform:translateX(-100%);transition:transform .18s ease;box-shadow:none}
html.side-off .side-fab:hover + .side,html.side-off .side:hover,html.side-off .side:focus-within{transform:none;box-shadow:12px 0 40px rgba(0,0,0,.55)}
html.side-off .side-fab{display:inline-grid;place-items:center;position:fixed;left:10px;top:12px;z-index:85;width:36px;height:36px;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);color:var(--text2);cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.4)}
html.side-off .side-fab:hover{color:var(--acc);border-color:var(--acc-line)}
html.side-off .main{padding-left:58px}
html.side-off .bbar{left:0}

/* ===== 08.10: режим фраз ===== */
.mode-card .card-b{align-items:center}
.mode-card .pill.off{color:var(--muted)}

/* ===== сохранённые фильтры: карандаш ===== */
.chip.sf .sf-e{display:inline-grid;place-items:center;width:18px;height:18px;margin:0 -4px 0 2px;padding:0;border:0;border-radius:5px;background:none;color:var(--muted);cursor:pointer}
.chip.sf .sf-e:hover{color:var(--acc);background:var(--acc-bg)}
.sfe-grid{display:grid;grid-template-columns:minmax(0,1fr) 92px 92px;gap:6px 8px;align-items:center;font-size:13px}
.sfe-grid .inp{height:30px;padding:0 8px}

/* ===== рекомендованные ставки WB — кликабельные ===== */
.reco-b{padding:1px 4px;margin:0 -1px;border:0;border-radius:5px;background:none;color:var(--text);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;text-decoration:underline dotted rgba(148,163,184,.55);text-underline-offset:3px}
.reco-b:hover,.reco-b:focus-visible{color:var(--acc);background:var(--acc-bg);text-decoration-color:var(--acc);outline:none}

/* ===== таблица кластеров во весь экран ===== */
body.clu-full-on{overflow:hidden}
.clu-card.clu-full{position:fixed;inset:8px;z-index:70;margin:0;display:flex;flex-direction:column;box-shadow:0 20px 70px rgba(0,0,0,.7)}
.clu-card.clu-full .clu-wrap{flex:1;max-height:none;min-height:0}

/* ===== группы РК ===== */
.grp-chip{display:inline-flex;align-items:center;gap:4px;height:19px;margin-left:6px;padding:0 7px;border-radius:10px;border:1px solid var(--acc-line);background:var(--acc-bg);color:var(--acc);font:inherit;font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer;max-width:160px;overflow:hidden;text-overflow:ellipsis}
.grp-chip:hover{background:var(--acc);color:#04211d}
.rk-cb,.rk-cb-h input{width:15px;height:15px;margin:0 8px 0 0;accent-color:var(--acc);cursor:pointer;flex:none}
.rk-cb-h{display:inline-flex;align-items:center;cursor:pointer}
.prod .rk-cb{align-self:center}
#tbl tr.row-sel td{background:rgba(45,212,191,.06)}
#grpSel .sv{max-width:140px}
.btn.icon.red{color:var(--red)}

/* ===== «⋯» меню РК ===== */
.rk-more{width:28px;padding:0}
.rk-menu{position:fixed;z-index:120;min-width:190px;max-width:300px;padding:6px;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);box-shadow:0 14px 40px rgba(0,0,0,.6);display:none}
.rk-menu.show{display:block}
.rk-menu button{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:0;border-radius:7px;background:none;color:var(--text);font:inherit;font-size:13px;font-weight:600;text-align:left;cursor:pointer}
.rk-menu button:hover:not(:disabled){background:var(--panel3)}
.rk-menu button.red{color:var(--red)}
.rk-menu button.red:hover:not(:disabled){background:var(--red-bg)}
.rk-menu button:disabled{opacity:.45;cursor:not-allowed}
.rk-menu-n{display:flex;gap:6px;padding:6px 8px 8px;font-size:12px;color:var(--amber);line-height:1.4}

/* ===== добавление магазина: поля в одну строку, кнопка снизу ===== */
.cab-add .card-h{gap:8px}
.cab-add-row{display:grid;grid-template-columns:minmax(180px,1fr) 96px 96px minmax(0,2.4fr);gap:12px}
.cab-add-row .field label{display:flex;align-items:center;gap:6px}
input.tokin1{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}
.qh-pop.wide{max-width:480px}
@media (max-width:760px){.cab-add-row{grid-template-columns:1fr}}
html.side-off.side-nohover .side{transform:translateX(-100%)!important;box-shadow:none!important}

/* ===== 09.10: компактные элементы этапа 2 ===== */
.tg:disabled{opacity:.4;cursor:not-allowed}
.tg.sm{width:28px;height:16px}
.tg.sm::after{width:12px;height:12px;top:2px;left:2px}
.tg.sm.on::after{left:14px}
.card-h .tg{margin-left:4px}
.s2-chk{gap:7px;font-size:12.5px;font-weight:600;color:var(--text2);cursor:pointer;white-space:nowrap}
.s2-chk input[type=checkbox]{width:15px;height:15px;accent-color:var(--acc);margin:0}
.s2-off{padding-top:4px;padding-bottom:12px}
.seg.sm{padding:2px}
.seg.sm button{height:22px;padding:0 8px;font-size:11.5px}
.inp.sm{height:30px;font-size:13px;padding:0 8px;border-radius:7px}
.rk-stat .v.sm{font-size:14px}
table.t.compact td,table.t.compact th{padding-top:5px;padding-bottom:5px}
/* сетка расписания с галочками у дня и у часа */
.sched.sched-x{grid-template-columns:46px repeat(24,1fr)}
.sched-x .hh{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer}
.sched-x .dd{gap:5px;cursor:pointer}
.sched-x input[type=checkbox]{width:13px;height:13px;margin:0;accent-color:var(--acc);cursor:pointer}
.sched-x .s2-corner{justify-content:flex-end;padding-bottom:4px}
/* тепловая карта поверх расписания: цвет = интенсивность, штриховка = час паузы */
.sched.heat .cell.hv{background:var(--h)}
.sched.heat .cell{background:rgba(45,212,191,.08)}
.sched.heat .cell.off{background:repeating-linear-gradient(135deg,rgba(8,12,18,.8) 0 3px,rgba(8,12,18,.25) 3px 7px)!important}
.sched.heat .cell.off.hv{background:repeating-linear-gradient(135deg,rgba(8,12,18,.8) 0 3px,rgba(8,12,18,.25) 3px 7px),var(--h)!important}
.sched.heat .cell .v{font-size:9px}
.sched.heat .cell.hv .v{color:#0b1220;font-weight:700}
.sched.heat .cell.off.hv .v{color:#0b1220}
/* свои выпадающие списки вместо системных (компактные, в стиле панели) */
select.cs-native{pointer-events:none}
.cs-hide{display:none!important}
.cs-btn{position:relative;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 26px 0 9px;border-radius:7px;border:1px solid var(--line2);background:var(--bg2);font-size:13px;font-weight:600;color:var(--text);cursor:pointer;white-space:nowrap;max-width:100%;text-align:left}
.cs-btn::after{content:"";position:absolute;right:10px;top:50%;width:5px;height:5px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-70%) rotate(45deg)}
.cs-btn:hover{border-color:#36475a}
.cs-btn span{overflow:hidden;text-overflow:ellipsis}
.cs-pop{position:fixed;z-index:1000;min-width:140px;max-width:360px;max-height:300px;overflow:auto;overscroll-behavior:contain;padding:4px;border-radius:9px;border:1px solid var(--line2);background:var(--panel2);box-shadow:0 12px 30px rgba(0,0,0,.45)}
.cs-opt{display:block;width:100%;text-align:left;border:0;background:none;color:var(--text2);font:inherit;font-size:12.5px;font-weight:600;padding:6px 9px;border-radius:6px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cs-opt:hover,.cs-opt.kb{background:var(--panel3);color:var(--text)}
.cs-opt.on{color:var(--acc)}
.cs-opt.dis{opacity:.45;cursor:default}
/* компактнее: фильтры списка РК и плитки KPI */
.fsel{height:30px;font-size:12px;padding:0 22px 0 8px}
.fsel::after{right:9px;width:5px;height:5px}
.kpi{padding:11px 13px}
.kpi-v{font-size:19px;margin-top:4px}
.kpi-t{font-size:11.5px}
@media (max-width:760px){
  .fsel{height:28px;font-size:11.5px}
  .kpi-v{font-size:16px}
  .kpis{gap:8px}
}
.pos-d{white-space:nowrap;font-size:11px}
.sched.ro .cell{cursor:default}
.sched.ro input{display:none}
.sched.ro.heat .cell.off{background:rgba(45,212,191,.08)!important}
.sched.ro.heat .cell.off.hv{background:var(--h)!important}

/* галочки: свой вид — хорошо видны на тёмном фоне и при наведении (белая рамка и подсветка) */
table.clu input[type=checkbox],.rk-cb,.rk-cb-h input,.s2-chk input[type=checkbox],.sched-x input[type=checkbox],.bbar input[type=checkbox]{
  -webkit-appearance:none;appearance:none;display:inline-block;flex:none;box-sizing:border-box;border:1.5px solid #6b7c90;border-radius:4px;
  background:rgba(255,255,255,.03) center/80% no-repeat;transition:border-color .12s,background-color .12s,box-shadow .12s;cursor:pointer}
table.clu input[type=checkbox]:hover,.rk-cb:hover,.rk-cb-h:hover input,.s2-chk input[type=checkbox]:hover,.sched-x input[type=checkbox]:hover,
table.clu tr:hover td.cb input[type=checkbox]{border-color:#fff;background-color:rgba(255,255,255,.18);box-shadow:0 0 0 3px rgba(255,255,255,.12)}
table.clu input[type=checkbox]:checked,.rk-cb:checked,.rk-cb-h input:checked,.s2-chk input[type=checkbox]:checked,.sched-x input[type=checkbox]:checked{
  border-color:var(--acc);background-color:var(--acc);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%230b1220' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
table.clu input[type=checkbox]:checked:hover,.rk-cb:checked:hover,.sched-x input[type=checkbox]:checked:hover{border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.15)}
table.clu input[type=checkbox]:indeterminate{border-color:var(--acc);background-image:linear-gradient(var(--acc),var(--acc));background-size:60% 2px}
input[type=checkbox]:focus-visible{outline:2px solid #fff;outline-offset:1px}
td.pos-c{line-height:1.15}
.pos-b{font-size:10px;color:var(--mut,#8a99ab);font-weight:400;margin-top:2px;white-space:nowrap}

.kpi-x{margin-top:7px;padding-top:6px;border-top:1px dashed rgba(255,255,255,.09);font-size:12px;color:var(--mut,#9aa8b8)}
.kpi-x b{color:#e6edf5;font-weight:600}
.kpi-x .kpi-p{margin-top:2px}
/* правила: ставки и автоминусация */
.rl-blk{padding:4px 0}
.rl-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0}
.rl-row .inp.sm,.rl-blk .inp.sm{height:30px;padding:0 8px;font-size:13px}
.rl-row select.inp.sm{width:auto}
.rl-prev{max-height:220px;overflow:auto;margin-top:6px;padding:6px 8px;border-radius:8px;background:rgba(255,255,255,.03)}
.hr{height:1px;background:var(--line,#233041);margin:12px 0}

/* feedback 14: компактная таблица по дням в режиме «Позиции» */
.t.ds th,.t.ds td{padding:3px 8px;height:auto;line-height:1.25;font-size:12px;white-space:nowrap}
.t.ds .dim{font-size:11px}
.t.ds tr.ds-tot td{font-weight:700;border-top:1px solid var(--line,#2a2f3a)}
.mode-card .rl-blk{flex:1 1 100%;margin-top:4px;padding-top:10px;border-top:1px dashed var(--line,#2a2f3a)}

/* ⋮ своя настройка фразы */
.pc-dots{border:0;background:transparent;color:var(--muted,#8a8f98);cursor:pointer;font-size:15px;line-height:1;padding:0 4px;margin-left:4px;border-radius:4px;vertical-align:middle}
.pc-dots:hover,.pc-dots.on{color:var(--acc,#6c5ce7);background:rgba(108,92,231,.1)}
.pc-ind{font-size:10px;padding:1px 6px;margin-left:4px}
.pc-pop{position:absolute;z-index:1000;width:330px;background:var(--panel2,#1d2129);color:var(--text,#e8eaee);border:1px solid var(--line2,#3a3f4a);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.16);padding:10px 12px;font-size:13px}
.pc-pop .pc-h{font-weight:700;color:var(--text,#fff);margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-pop .pc-r{display:flex;align-items:center;gap:6px;margin:6px 0;color:var(--text2,#c9ccd3)}
.pc-pop .pc-r span{width:62px;color:var(--text,#fff)}
.pc-pop input{width:70px;padding:4px 6px;border:1px solid var(--line2,#3a3f4a);border-radius:6px;background:var(--bg2,#11141a);color:var(--text,#fff)}
.pc-pop .pc-prev{margin:8px 0;min-height:16px}
.pc-pop .pc-b{display:flex;justify-content:flex-end;gap:6px;margin:6px 0}
/* обратная связь 17: управление фразой в строке и ставкой РК */
th.pm-th{min-width:150px}
td.pm-td{padding-top:4px;padding-bottom:4px}
.pm{display:flex;flex-direction:column;gap:2px;align-items:flex-start;font-size:11.5px;opacity:.8}
.pm.on{opacity:1}
.pm-tg{display:flex;align-items:center;gap:6px;cursor:pointer}
.pm-tg .tg{width:28px;height:16px}.pm-tg .tg::after{width:10px;height:10px}.pm-tg .tg.on::after{left:15px}
.pm-on{height:16px;font-size:10.5px;padding:0 6px}
.pm-r{display:flex;align-items:center;gap:3px;white-space:nowrap}
.pm-l{width:44px;color:var(--text2,#9aa4b2);font-size:10.5px}
.pm-i{width:50px;height:20px;padding:0 4px;font-size:11.5px;border:1px solid var(--line2,#3a3f4a);border-radius:5px;background:var(--bg2,#11141a);color:var(--text,#fff);text-align:right}
.pm-i::-webkit-inner-spin-button{display:none}
table.plc .pm-i{width:64px;height:26px;font-size:13px}
.pm-st{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--acc,#2dd4bf)}
tr.plc-st td{border-top:0;padding-top:0;color:var(--text2)}

.t.dsT th,.t.dsT td{text-align:right;overflow:hidden;text-overflow:ellipsis;padding:2px 6px}
.t.dsT .ds-lbl{text-align:left;position:sticky;left:0;background:var(--card,#151922);z-index:1}
.t.dsT td .dim{font-size:10.5px;line-height:1.1}
.t.dsT td{white-space:normal;text-overflow:clip}
.t.dsT td .dim{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* обратная связь 25: статистика РК по дням и раскрытая фраза — строки той же таблицы кластеров */
.t.clu tr.ds-in td{padding-top:2px;padding-bottom:2px;height:auto;font-size:12px;line-height:1.2;white-space:nowrap;background:rgba(255,255,255,.02)}
.t.clu tr.ds-in td .dim{display:block;font-size:10.5px;color:var(--mut,#8a99ab)}
.t.clu tr.ds-in td.ds-lbl{font-weight:600;color:var(--text2,#c9ccd3)}
.t.clu tr.ds-last td{border-bottom:2px solid var(--line2,#3a3f4a)}
.t.clu .ds-cap{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--acc,#2dd4bf);margin-bottom:1px}
.t.clu td.ds-tot-c{font-weight:700}
.t.clu tr.ph-x{cursor:pointer}
.ph-car{border:0;background:transparent;color:var(--mut,#8a99ab);cursor:pointer;font-size:12px;padding:0 4px;margin-left:4px}
.ph-car:hover{color:var(--acc,#2dd4bf)}
.t.clu tr.ph-open td{border-bottom:0}
.t.clu tr.ph-sub td{padding-top:1px;padding-bottom:1px;height:auto;font-size:11.5px;line-height:1.15;white-space:nowrap;background:rgba(45,212,191,.04)}
.t.clu tr.ph-sub td .dim{font-size:10.5px}
.t.clu tr.ph-sub td.ph-sl{padding-left:28px;color:var(--text2,#9aa4b2)}
.t.clu tr.ph-sub-last td{border-bottom:1px solid var(--line2,#3a3f4a)}
/* обратная связь 31: закреплённые ячейки в строках статистики — непрозрачный фон, чтобы при прокрутке значения не накладывались */
.t.clu tr.ds-in td.fz{background:#141c26;z-index:2}
.t.clu tr.ph-sub td.fz{background:#122026;z-index:2}

/* ===== этап 2, правки 13.10 ===== */
/* п.14: строка под курсором слегка зелёная (непрозрачно — для закреплённых ячеек) */
.t tbody tr:hover td,.t tbody tr:hover .stk,.t tbody tr:hover .stk2,table.clu tbody tr:hover td.fz{background:#122a28}
/* п.7: отмеченная галочка остаётся видна при наведении (не перекрашивается в общий фон) */
table.clu tr:hover td.cb input[type=checkbox]:checked,table.clu input[type=checkbox]:checked:hover,.rk-cb:checked:hover,.rk-cb-h:hover input:checked{
  background-color:var(--acc)!important;border-color:#fff}
table.clu tr:hover td.cb input[type=checkbox]:not(:checked),.rk-cb:not(:checked):hover{background-color:rgba(255,255,255,.08)}
/* п.15: крестик быстрого сброса в полях поиска */
input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;width:14px;height:14px;cursor:pointer;opacity:.75;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 4l8 8M12 4l-8 8' stroke='%23cbd5e1' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}
input[type=search]::-webkit-search-cancel-button:hover{opacity:1}
/* п.16: стрелка «открыть товар на WB» у названия РК */
.wb-go{display:inline-flex;align-items:center;margin-left:6px;color:var(--acc);opacity:.8;vertical-align:middle}.wb-go:hover{opacity:1}
/* п.21: «Группа:» — нажатие снимает выбранную группу */
#grpSel.act select{left:62px}#grpSel.act .lbl{cursor:pointer;text-decoration:underline dotted}
/* п.23: рекомендованная ставка рядом с текущей */
.reco-hi{background:rgba(45,212,191,.16);border-radius:4px;padding:0 3px;font-weight:700}
/* 13.10 п.14: зелёная подсветка всей строки при наведении, поверх цветных ячеек (позиции/тепловая карта/ставки) */
/* 13.10 (2): подсветка слоем background-image, а не box-shadow — тени закреплённых колонок (ставка CPM) не трогаем, серых «следов» нет */
.t tbody tr:hover>td{background-image:linear-gradient(rgba(45,212,191,.13),rgba(45,212,191,.13))!important}
.t tbody tr:hover>td.cell,.t tbody tr:hover>td[style*="background"]{background-image:linear-gradient(rgba(45,212,191,.22),rgba(45,212,191,.22))!important}
.clu-h .ds-tg{display:inline-flex;align-items:center;gap:6px;margin-left:8px;cursor:pointer;font-size:12.5px;white-space:nowrap}
.grp-menu .grp-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:8px 10px;border:0;border-radius:7px;background:none;color:var(--text);font:600 13px inherit;font-family:inherit;cursor:pointer;white-space:nowrap}.grp-menu .grp-opt:hover{background:var(--panel3)}.grp-menu .grp-opt.on{color:var(--acc)}.grp-x{margin-left:auto;opacity:.6;font-size:11px}
.filters .fx{margin-left:-4px;width:22px;height:22px;border:0;border-radius:6px;background:none;color:var(--muted,#888);font-size:11px;line-height:22px;cursor:pointer;padding:0}.filters .fx:hover{background:var(--panel3);color:var(--text)}.filters .fx[hidden]{display:none}

/* 15.10: ошибки полей; панель действий поверх таблицы на весь экран */
.inp.inp-err{border-color:var(--red)!important;box-shadow:0 0 0 2px rgba(248,113,113,.25)}
body.clu-full-on .bbar{z-index:80;left:0;bottom:22px}
.lists-fold{margin-bottom:14px}.lists-fold>summary{cursor:pointer;color:var(--text2);font-weight:600;padding:6px 2px}.lists-fold[open]>summary{margin-bottom:8px}
.ptag.g{border-style:dashed;font-style:italic}
.ptag.g::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.55;margin-right:-1px}
.ptag .ptx{user-select:text;cursor:copy}
.list-box.lst-scroll{max-height:180px;overflow-y:auto;align-content:flex-start;padding-right:4px}
.tok2{margin-top:6px;font-size:11.5px;line-height:1.6}.tok2 .ttype{display:inline-flex;margin:0 6px}
/* 19.10: история ставок РК — свёрнута по умолчанию, при раскрытии прокрутка внутри блока */
.bh{border-top:1px solid var(--line);padding:6px 14px 10px}
.bh-h{background:none;border:0;color:var(--text);font:inherit;font-weight:700;cursor:pointer;padding:6px 0;display:flex;gap:6px;align-items:center}
.bh-ar{display:inline-block;width:12px;color:var(--muted)}
.bh-list{max-height:240px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;overscroll-behavior:contain}
.bh-t td{padding:5px 8px;font-size:12px;vertical-align:top;white-space:normal}
.bh-ts{white-space:nowrap !important;color:var(--muted)}.bh-who{white-space:nowrap !important}
.bh-err td{color:var(--red)}
/* 19.10: меню продуктов — сворачиваемые блоки с подпунктами (состояние запоминается) */
.side{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.nav-grp{margin-top:2px}
.nav-head{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px 7px;border:0;border-radius:8px;background:none;color:var(--dim);font:inherit;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-align:left;cursor:pointer;transition:.15s}
.nav-head svg{flex:none;opacity:.8}
.nav-head:hover,.nav-head:focus-visible{color:var(--text);background:var(--panel);outline:none}
.nav-chev{margin-left:auto;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;transition:transform .16s ease}
.nav-grp.shut .nav-chev{transform:rotate(-90deg)}
.nav-grp.shut .nav-sub{display:none}
.nav-grp.shut.has-on .nav-head{color:var(--acc)}
.nav-sub{margin:0 0 4px 12px;padding-left:8px;border-left:1px solid var(--line)}
.nav-sub a{padding:7px 10px;font-size:13px}
@media (max-width:760px){.nav-head{padding:11px 10px 9px}.nav-sub a{padding:9px 10px}}
/* 19.10: телефон — меню выдвигается поверх страницы (☰), страница на всю ширину */
@media (max-width:760px){
  .app{grid-template-columns:0 1fr;background:var(--bg)}
  .side{position:fixed;left:0;top:0;z-index:90;width:264px;max-width:86vw;height:100vh;height:100dvh;transform:translateX(-100%);transition:transform .18s ease;box-shadow:none}
  html.side-open .side{transform:none;box-shadow:12px 0 40px rgba(0,0,0,.6)}
  .side-fab{display:inline-grid;place-items:center;position:fixed;left:10px;top:12px;z-index:85;width:36px;height:36px;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);color:var(--text2);cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.4)}
  .main{padding-left:58px}
  .bbar{left:0}
}

/* 18.10: статус РК в выпадающем списке — отдельная плашка, как «РК активна» */
.cs-pill{flex:none;font-style:normal;font-size:11px;font-weight:700;border-radius:999px;padding:1px 8px;line-height:16px}
.cs-pill-on{background:rgba(34,197,94,.16);color:#16a34a;border:1px solid rgba(34,197,94,.45)}
.cs-pill-pause{background:rgba(245,158,11,.16);color:#d97706;border:1px solid rgba(245,158,11,.5)}
.cs-pill-off{background:rgba(148,163,184,.16);color:var(--muted);border:1px solid var(--line)}
.cs-opt.has-pill{display:flex;align-items:center;gap:8px}
.cs-opt.has-pill span{overflow:hidden;text-overflow:ellipsis}
/* 18.10: блоки меню — тонкая скруглённая рамка, как у «Обновить данные с WB», цвет — зелёный акцент панели */
.nav-head{border:1px solid var(--acc-line);margin-top:6px;padding:8px 10px}
.nav-head:hover,.nav-head:focus-visible{border-color:var(--acc)}

/* 20.10: поиск лучшей ставки */
.bs-set{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:2px 0 6px}
.bs-f{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:var(--text2);white-space:nowrap}
.bs-st{margin:4px 0 6px;white-space:normal;max-width:980px}
tr.bs-row td{white-space:normal}
table.bs-t{width:auto;font-size:12px}
table.bs-t td,table.bs-t th{padding:3px 10px;text-align:right}
tr.bs-best td{background:rgba(34,197,94,.10);font-weight:600}
/* 19.10 бесплатно: «Управление ставками» — выбор цели/стратегии не наезжает на соседние колонки и не выталкивает «Ставка сейчас» за край на 1024–1280 */
table.plc th{white-space:normal;line-height:1.25}
table.plc td .cs-btn,table.plc select.inp{max-width:210px;min-width:0}
table.plc td .cs-btn span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bs-set .cs-btn{max-width:220px}
@media (max-width:1280px){table.plc td .cs-btn,table.plc select.inp{max-width:170px}table.plc .pm-i{width:56px}}
/* 19.10 бесплатно: форма «Добавить кабинет» — 1-я строка название/НДС/УСН, 2-я строка основной и второй («Базовый») ключ; окно «Изменить магазин» */
.cab-add-row{grid-template-columns:minmax(180px,1fr) 110px 110px}
.cab-add-row.mt8{grid-template-columns:1fr 1fr}
.req{color:var(--red,#f87171);font-weight:700}
.cab-edit .tokin{min-height:54px}
@media (max-width:760px){.cab-add-row,.cab-add-row.mt8{grid-template-columns:1fr}}

/* 20.10 п.9: цель и способ — два селекта в одной ячейке */
table.plc td.plc-goal select.inp{display:block;width:100%;margin:0 auto}
table.plc td.plc-goal .plc-meth{margin-top:4px}
/* 20.10 п.8: история пополнений — свёрнута, раскрытая — 3 строки с прокруткой */
.tp-hist>summary{cursor:pointer;font-size:12.5px;color:var(--muted,#9aa)}
.tp-scroll{max-height:118px;overflow-y:auto}
.tp-scroll thead th{position:sticky;top:0;z-index:1;background:var(--card,#141a1f)}
/* 20.10: органика рядом с рекламной позицией в «Позициях» */
.pos-pair{white-space:nowrap}
.pos-oi{display:inline;font-size:11.5px;margin-left:2px}

/* 20.10: строка «Итого по отмеченным» в юнитке */
.u-t tr.u-sum td{background:rgba(124,92,255,.10);border-bottom:1px solid var(--acc)}

/* этап 4 */
td.neg,td.neg b,.neg{color:var(--red)}
.dsh-v.neg{color:var(--red)}
.u-sz{cursor:help;border-bottom:1px dotted var(--line2)}
.u-sztip{position:absolute;z-index:90;display:none;padding:8px 10px;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);box-shadow:0 12px 30px rgba(0,0,0,.45);font-size:12px;min-width:160px}
.u-sztip table{border-collapse:collapse;margin-bottom:4px}.f-part2 .u-sztip tr:not(:first-child):hover td{background:rgba(45,212,191,.22)}.u-sz{cursor:pointer;text-decoration:underline dotted}.u-sztip th,.u-sztip td{padding:2px 8px;text-align:right}.u-sztip th:first-child,.u-sztip td:first-child{text-align:left}
.ucat-l[hidden]{display:none!important}

.r-dd-i{display:block;padding:8px 10px;border-radius:7px;font-size:13px;font-weight:600;white-space:nowrap;color:var(--text);text-decoration:none}.r-dd-i:hover{background:var(--panel3)}

/* 24.10 (Виктор): шапка таблиц A/B-тестов закреплена при прокрутке — таблица прокручивается в своём окне */
.ab-wrap{max-height:calc(100vh - 150px)}
.ab-wrap thead th{position:sticky;top:0;z-index:2;background:var(--panel2)}

/* этап 5.1 п.1: объединённая карточка Реализация / Заказы / Выкупы */
.dsh-m{display:flex;flex-direction:column;gap:8px}.dsh-mr{position:relative}.dsh-mr+.dsh-mr{border-top:1px solid var(--line2);padding-top:8px}
/* r6 25.10: общий тумблер «Авто» над «Управление фразой» */
.pm-auto{display:flex;align-items:center;gap:5px;margin-bottom:3px;font-weight:500}
.pm-auto .tg{width:28px;height:16px}.pm-auto .tg::after{width:10px;height:10px}.pm-auto .tg.on::after{left:15px}
.pm-auto-pill{height:16px;font-size:10.5px;padding:0 6px}
/* r6 25.10: «Контроль бюджета» слева рядом с «Лимит расхода в день», без пустой правой половины */
.bud-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}
.bud-row>*{margin:0!important;min-width:0}
@media (max-width:900px){.bud-row{grid-template-columns:1fr}}
.bud-row:has(>#limSum[style*="none"]){grid-template-columns:1fr}
.hz-min{margin-left:4px;font-size:11px;white-space:nowrap}
/* r7 25.10: плитки лимита вплотную к «Тип лимита»/«Сохранить», без широкого зазора; «равномерно» ниже */
.bud-row{grid-template-columns:max-content minmax(0,1fr);gap:20px}
.bud-row>#bctlBox{max-width:340px}
.bc-even{margin-top:14px}
@media (max-width:900px){.bud-row{grid-template-columns:1fr}.bud-row>#bctlBox{max-width:none}}
/* r7 25.10: подпись метрики над парой «от / до» */
.clu .fr{flex-wrap:wrap;align-items:center}
.clu .fr .fr-l{flex-basis:100%;text-align:right;font-size:10.5px;line-height:1.2;color:var(--mut,#8a93a6);white-space:nowrap}
/* r8 25.10: мин. ставка зоны — под ставкой; «Контроль бюджета» без зазора, «равномерно» строкой ниже; источники автопополнения столбиком */
.hz-bm{display:inline-flex;flex-direction:column;align-items:flex-start;line-height:1.15}
.hz-bm .hz-min{margin-left:0;margin-top:2px}
.bud-row>#bctlBox{max-width:none}
.bud-row>#bctlBox .bctl{padding-right:0}
.bc-even-box{padding:0 18px 16px}.bc-even-box .bc-even{margin:0}
.bc-even-box:empty{display:none}
.tp-col{display:flex;flex-direction:column;gap:4px}

/* этап 5.2: «Создать РК» — видно только при FEAT_PART2 */
.p2only{display:none}.f-part2 .p2only{display:inline-flex}
.crk-kinds{display:flex;gap:6px;flex-wrap:wrap}.crk-kinds label{display:flex;gap:6px;align-items:center;padding:6px 10px;border:1px solid var(--line,#2a3340);border-radius:8px;cursor:pointer}
.crk-kinds label:has(input:checked){border-color:var(--acc,#2dd4bf)}
.crk-row{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.crk-row textarea{min-height:64px;resize:vertical}
.crk-req{font-family:monospace;font-size:12px;white-space:pre-wrap;background:rgba(127,127,127,.1);padding:8px;border-radius:8px;margin-top:6px}
.crk-sku{max-height:220px;overflow:auto;border:1px solid var(--line,#ddd);border-radius:8px;padding:4px}.crk-sk{display:flex;gap:6px;align-items:center;padding:3px 4px;font-size:13px;cursor:pointer}.crk-sk:hover{background:rgba(0,0,0,.04)}

/* 27.10 Виктор: «Создать РК» — артикулы с фото, РК-источник своим списком */
.crk-sk{gap:10px;padding:5px 6px;border-radius:6px}.crk-sk:hover{background:var(--panel3,rgba(255,255,255,.04))}.crk-sk .thumb,.crk-dd .thumb{flex:none;width:36px;height:46px;border-radius:6px;overflow:hidden;position:relative}.crk-sk .thumb img,.crk-dd .thumb img{width:100%;height:100%;object-fit:cover}.crk-sk .ph-dl,.crk-dd .ph-dl{display:none}
.crk-sk-t{flex:1;min-width:0;font-size:13px;line-height:1.35}.crk-sk-t .crk-ell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crk-dd{position:relative}.crk-dd-btn{position:relative;display:flex;align-items:center;width:100%;min-height:42px;padding:6px 34px 6px 10px;border-radius:8px;border:1px solid var(--line2);background:var(--bg2);color:var(--text);font:inherit;font-size:13px;text-align:left;cursor:pointer}
.crk-dd-btn::after{content:"";position:absolute;right:14px;top:50%;width:6px;height:6px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-70%) rotate(45deg)}.crk-dd.open .crk-dd-btn{border-color:var(--acc)}
.crk-dd-v{display:flex;gap:10px;align-items:center;min-width:0;flex:1}
.crk-dd-pop{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:50;padding:6px;border-radius:9px;border:1px solid var(--line2);background:var(--panel2);box-shadow:0 12px 30px rgba(0,0,0,.45)}
.crk-dd-list{max-height:300px;overflow:auto;overscroll-behavior:contain;margin-top:6px}
.crk-dd-it{display:flex;gap:10px;align-items:center;padding:6px 8px;border-radius:6px;cursor:pointer;color:var(--text2)}.crk-dd-it:hover{background:var(--panel3);color:var(--text)}.crk-dd-it.on{box-shadow:inset 2px 0 0 var(--acc)}
.crk-cfg{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.crk-cfg span{font-size:11px;padding:1px 7px;border-radius:999px;border:1px solid var(--line2);color:var(--muted)}
/* 27.10 Виктор (1): шапка РК — длинное название переносится, период/даты уходят на следующую строку, ничего не наезжает */
.top{flex-wrap:wrap;row-gap:10px}
.top>.hdr{flex:1 1 380px;min-width:0}
.top h1,.top h1 .cp{white-space:normal;overflow-wrap:anywhere;min-width:0}
.top .seg{flex-wrap:wrap;max-width:100%}
#head{row-gap:14px}
#head .rk-stat{min-width:0}
#head .hz-box .v{flex-wrap:wrap;row-gap:8px;column-gap:22px!important}
#head .hz{flex-wrap:nowrap;white-space:nowrap;gap:8px}
#head .hz-bm{min-width:64px}
/* 27.10 Виктор (2): одна «Сохранить» на весь «Контроль бюджета» */
.bud-row>.bc-save-row{grid-column:1/-1}
/* 27.10 Виктор (3): интервал удержания — в шапке колонки «Реком. WB» */
.hiv-th .hiv-col{display:flex;flex-direction:column;align-items:center;gap:3px;margin-top:6px;font-weight:400;text-transform:none;letter-spacing:0}
.hiv-th select.inp.sm{height:24px;font-size:11.5px;max-width:150px;padding:0 6px}
/* 27.10 Виктор (4): «Управление ставками» — «Цель» слева, цель и способ друг под другом, строка в одну линию */
table.plc th.plc-goal-h,table.plc td.plc-goal{text-align:left}
table.plc td.plc-goal .plc-goal-st{display:flex;flex-direction:column;gap:4px;align-items:stretch;min-width:180px}
table.plc td.plc-goal .plc-goal-st select.inp{display:block;width:100%;max-width:230px;margin:0}
table.plc td.plc-goal .plc-meth{margin-top:0}
.hiv-pl{flex-wrap:nowrap;white-space:nowrap}
.bc-save-row{padding:0 18px 16px}

/* 27.10 (Виктор 11:37): строка «Управления ставками» — все ячейки по одной линии (верх + высота 30px),
   столбцы ровно под заголовками; «мин. ставка WB» — отдельной строкой чуть ниже полей «от – до» */
table.plc tr.plc-main>td{vertical-align:top;padding-top:10px;padding-bottom:10px}
table.plc tr.plc-main>td>label.row,table.plc tr.plc-main>td>.plc-c,table.plc tr.plc-main>td>span.mini,
table.plc tr.plc-main>td>span.dim,table.plc tr.plc-main>td>span.edit{min-height:30px;display:inline-flex;align-items:center;justify-content:center;gap:6px}
table.plc tr.plc-main>td.l:first-child{line-height:30px}
table.plc tr.plc-main>td>.plc-c{display:flex}
table.plc tr.plc-main .plc-c .pm-i{height:30px}
table.plc tr.plc-main .wbmin{margin-top:8px;text-align:center}
table.plc tr.plc-main td.plc-goal .plc-goal-st select.inp{height:30px}
/* 27.10 пагинация списков */
.pg-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 12px;font-size:12px}
.pg-bar .pg-b{min-width:30px;justify-content:center}.pg-bar .pg-sz{margin-left:auto;display:flex;align-items:center;gap:6px}
.pg-bar .pg-gap{padding:0 2px;opacity:.6}
/* 27.10 13:40 Виктор: «Время обновления ставки» — столбец в строке «Управления ставками»; мин. ставка WB — под «Ставка сейчас» */
table.plc td.hiv-td .hiv-pl{display:flex;justify-content:center;min-height:30px;align-items:center}
table.plc td.hiv-td select.inp.sm{height:30px;font-size:12px;max-width:170px}
table.plc tr.plc-main td .wbmin{margin-top:8px;text-align:center;font-size:12px;font-weight:600;white-space:nowrap}
table.plc tr.plc-main td .wbmin .pill{padding:1px 6px}
/* столбец добавился — таблица по-прежнему влезает в 1280 без прокрутки */
table.plc th,table.plc td{padding-left:6px;padding-right:6px}
table.plc th{white-space:normal}
table.plc td.hiv-td select.inp.sm{max-width:120px;padding:0 4px}
table.plc td.plc-goal .plc-goal-st{min-width:150px}
table.plc .pm-i{width:58px}
table.plc tr.plc-main>td.l:first-child{line-height:1.25;padding-top:16px}
table.plc tr>td.l:first-child,table.plc tr>th.l:first-child{max-width:125px;white-space:normal}
table.plc td.hiv-td select.inp.sm{width:104px;text-overflow:ellipsis}
table.plc .pm-i{width:52px}
table.plc th.hiv-th-pl{white-space:normal!important;max-width:112px;width:112px}
table.plc th.plc-goal-h{width:150px}
table.plc td.hiv-td .cs-btn{max-width:112px;font-size:12px}
@media (max-width:1280px){table.plc td.plc-goal .plc-goal-st{min-width:130px}table.plc td.plc-goal .cs-btn{max-width:135px}table.plc th.plc-goal-h{width:130px}}
@media (max-width:1280px){table.plc .pm-i{width:48px}table.plc tr>td.l:first-child,table.plc tr>th.l:first-child{max-width:110px}}

/* 27.10 конкурентные ставки в единой РК */
.cmp-th{white-space:nowrap}.cmp-td{white-space:nowrap}.cmp-v.cmp-ok{color:var(--ok,#1a7f37);font-weight:600}.cmp-v.cmp-lo{color:var(--bad,#cf222e);font-weight:600}
/* 28.10: ставки конкурентов под «мин WB» в «Управление ставками РК»; последнее действие под фразой */
table.plc tr.plc-main td .plc-comp{margin-top:4px;text-align:center;white-space:nowrap;font-size:12px}
.pm .pm-last{margin-top:4px;color:var(--muted,#57606a);white-space:nowrap}
/* 28.10 (Виктор): под «Ставка сейчас» — мин WB / конкур. / лидеров / топ-2 одним бейджем, столбиком, по левому краю ставки */
table.plc tr.plc-main td .bid-stack{display:inline-flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;vertical-align:top}
table.plc tr.plc-main td .bid-stack>span.edit{min-height:30px;display:inline-flex;align-items:center;gap:6px}
table.plc tr.plc-main td .bid-stack .wbmin{margin-top:0;text-align:left}
table.plc tr.plc-main td .bid-stack>.wbmin:first-of-type{margin-top:4px}
table.plc tr.plc-main td .bid-stack .cmp-at{white-space:nowrap;font-size:11px}

/* 28.10 Виктор: подтверждение в стиле панели (askConfirm) поверх других окон */
.ov-ask{z-index:95;align-items:center}.modal-ask{max-width:440px;width:100%}.modal-ask .ask-t{line-height:1.5;color:var(--text,inherit)}

/* 29.10 (Виктор 14:38): строки ДРР «Контроля бюджета» — внизу под блоком, столбец лимита не уезжает при «по сумме» */
.bc-stat-box{padding:0 18px 12px}.bc-stat-box:empty{display:none}.bc-stat-box .bc-pause{margin-top:8px}
/* 29.10 (Виктор 15:36): «Перенести настройки панели из РК» — пояснение под «?» в правом верхнем углу блока */
.crk-lbl{display:flex;align-items:center;justify-content:space-between;gap:8px}.crk-lbl .qh{margin-left:auto}
.qh-pop.wide{max-width:420px}

/* 30.10 «Магазин Озон» (часть 6, блок 1) */
.oz-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(0,2fr);gap:12px}
.oz-row.oz-name{grid-template-columns:minmax(220px,420px)}
.oz-pair{margin-top:12px;padding:10px 12px;border:1px solid var(--line2);border-radius:10px}
.oz-pair-h{display:flex;align-items:center;gap:6px;font-weight:600;font-size:12.5px;margin-bottom:8px}
.t.oz td{vertical-align:top}.t.oz td .tok{font-size:11.5px}
.oz-pid{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cabs.oz td.msg{min-width:220px;max-width:320px}
.cabs.oz .acts{flex-direction:column;align-items:stretch;gap:4px}.cabs.oz .acts .btn{justify-content:flex-start}
.cabs.oz .acts .btn.red{justify-content:center}
.oz-edit .oz-row{grid-template-columns:1fr}
@media (max-width:760px){.oz-row,.oz-row.oz-name{grid-template-columns:1fr}}
/* 31.10: ставки конкурентов WB в шапке РК — столбиком под «мин» */
.hd-comp{display:inline-flex;flex-direction:column;align-items:flex-start}
#hdComp .hz-min{margin-left:0;margin-top:1px}
#hdComp.v{display:flex;flex-direction:column;align-items:flex-start;font-size:inherit}

/* 31.10g: фильтры с галочками (mDD) — юнит-экономика и «Справочник» */
.mdd-l[hidden]{display:none!important}.u-tf.mdd{display:inline-flex;align-items:center;gap:6px}.u-tf.mdd.on .dd-btn{border-color:var(--acc);color:var(--acc)}.u-tf.mdd.on .u-tfl{color:var(--acc);cursor:pointer;text-decoration:underline dotted}
/* 01.11: «Ответственный» в строке «Справочника» — тот же выпадающий список с галочками, что и фильтры */
.mdd.r-own{gap:4px;max-width:220px}.mdd.r-own .dd-btn{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.mdd.r-own:not(.on) .dd-btn{color:var(--muted)}.mdd.r-own .u-tfl{font-size:12px}
.mdd-add{display:flex;gap:6px;margin:6px 0 0;padding:6px 0 0;border-top:1px solid var(--line2)}.mdd-add .inp{flex:1;min-width:0;height:32px}
.dd-menu .mdd-add input.inp{width:auto;height:32px}

/* блок 2 (01.11, FEAT_BLOCK2) */
/* п.3–4: карандаш «Переименовать РК» рядом с названием */
.rk-ren{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-left:4px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;vertical-align:middle;padding:0;flex:none}
.rk-ren:hover{color:var(--acc);border-color:var(--acc-line);background:var(--acc-bg)}
.rn-cnt{font-size:11px;color:var(--muted);text-align:right;margin-top:4px}.rn-cnt.over{color:var(--red)}
.rn-dry{margin-top:10px;padding:8px 10px;border-radius:8px;background:var(--panel3);font-size:12px;color:var(--text2)}
/* п.1: 20 одинаковых блоков, рост — светло-зелёный, снижение — светло-красный */
/* блок 2 v2 (01.11, образец Виктора IMG_3087): 20 блоков 5 × 4, внутри — колонки WB / OZON */
.dsh.dsh20{grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:1fr}
/* 01.11h (Виктор 19:52): 22 блока в 5 рядах по смыслу — ряд = своя сетка, между рядами отступ больше, чем между блоками */
.d20-rows{display:flex;flex-direction:column;gap:18px;margin-bottom:14px}.d20-rows>.dsh.dsh20{margin-bottom:0}
.dsh20 .d20-nd{color:var(--text2);font-weight:600;font-size:.8em}
/* аудит 01.11: размеры от ширины блока (container query) — 5 колонок и на 1280 px без переносов чисел, как в образце */
.dsh20 .d20{container-type:inline-size}
.dsh20 .dsh-v{font-size:clamp(13px,8.4cqi,21px);white-space:nowrap}.dsh20 .dsh-v .dsh-v2{font-size:inherit;font-weight:800;color:inherit}
.dsh20 .dsh-t{color:#fff;font-size:clamp(11.5px,5.6cqi,13.5px);font-weight:500;min-height:0}
.dsh20 .d20{display:flex;flex-direction:column;min-height:132px;transition:background .15s}
.dsh20 .d20.tone-pos{background:linear-gradient(160deg,rgba(34,197,94,.44) 0%,rgba(34,197,94,.20) 45%,rgba(16,40,28,.55) 100%);border:1.5px solid #22c55e;box-shadow:0 0 0 1px rgba(34,197,94,.25),0 0 14px rgba(34,197,94,.28)}
.dsh20 .d20.tone-neg{background:linear-gradient(160deg,rgba(239,68,68,.46) 0%,rgba(239,68,68,.21) 45%,rgba(44,16,18,.55) 100%);border:1.5px solid #ef4444;box-shadow:0 0 0 1px rgba(239,68,68,.25),0 0 14px rgba(239,68,68,.28)}
.dsh20 .d20.tone-nd{border:1.5px solid var(--line)}
.dsh20 .d20-d.nd,.d20m-d.nd{color:var(--text2)}
.dsh20 .d20.tone-pos .d20m,.dsh20 .d20.tone-neg .d20m{background:rgba(0,0,0,.38);border-color:rgba(255,255,255,.12)}
.dsh20 .d20-d.pos,.d20m-d.pos{color:#4ade80}.dsh20 .d20-d.neg,.d20m-d.neg{color:#f87171}
.dsh20 .d20-d{color:var(--text2)}.dsh20 .d20-d.pos,.d20m-d.pos{color:var(--green)}.dsh20 .d20-d.neg,.d20m-d.neg{color:var(--red)}
.dsh20 .d20-s{font-size:clamp(10px,5cqi,12px)}.dsh20 .d20-d{font-size:clamp(10px,5cqi,12px)}.dsh20 .d20-s .d20-tx{font-size:clamp(8.5px,4.2cqi,10.5px);white-space:nowrap;margin-right:6px}
.dsh20 .d20-fin{color:var(--amber)}
.dsh20 .d20-lagv{color:var(--amber)} .dsh20 .d20-lagt{color:var(--amber);font-weight:600;white-space:normal;line-height:1.3} /* 01.11i: нет отчёта WB */
.d20-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.d20m{display:grid;grid-template-columns:1fr 1fr;margin-top:auto;padding-top:8px;border:1px solid var(--line2);border-radius:9px;background:rgba(0,0,0,.18)}
.dsh20 .d20 .d20m{margin-top:8px}
.d20m-c{padding:6px 8px;font-size:12px;line-height:1.35;min-width:0}.d20m-c+.d20m-c{border-left:1px solid var(--line2)}
.d20m-v{font-weight:700;white-space:nowrap}.d20m-s{color:var(--text2);font-size:11px}.d20m-d{font-size:11.5px;white-space:nowrap}
.dsh20 .d20m-c{font-size:clamp(9.5px,5.3cqi,12.5px);padding:5px 6px}.dsh20 .d20m-s{font-size:.92em;white-space:nowrap}.dsh20 .d20m-d{font-size:.95em}.d20m-d.dim{color:var(--text2)}
.mpb{display:inline-block;padding:0 6px;border-radius:5px;font-size:10.5px;font-weight:800;letter-spacing:.3px;color:#fff;margin-bottom:2px}
.mpb-wb{background:#8b3dff}.mpb-ozon{background:#1e6bff}
@media (max-width:1100px){.dsh.dsh20{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:920px){.dsh.dsh20{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.dsh.dsh20{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.dsh.dsh20{grid-template-columns:1fr}}
/* п.2: шестерёнка столбцов юнитки */
.u-bar{position:relative}
#uCols.on{color:var(--acc);border-color:var(--acc-line)}
.u-cm{position:absolute;z-index:80;right:10px;top:calc(100% + 4px);width:360px;max-width:92vw;background:var(--panel2);border:1px solid var(--line2);border-radius:12px;box-shadow:0 16px 50px rgba(0,0,0,.55);padding:10px}
.u-cm-h{display:flex;flex-direction:column;gap:2px;margin:2px 2px 6px}
.u-cm-l{max-height:46vh;overflow:auto;display:flex;flex-direction:column;gap:1px;margin-bottom:8px}.u-cm-l2{max-height:none}
.u-cm-i{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:7px;font-size:12.5px;cursor:pointer}.u-cm-i:hover{background:var(--panel3)}
.u-cm-i input{accent-color:var(--acc)}.u-cm-i span:first-of-type{flex:1}.u-cm-d{color:var(--muted);font-size:12px}
/* 01.11g (Виктор 19:04): тумблеры вместо галочек и перетаскивание столбцов за «≡» */
.u-cm-lb{display:flex;align-items:center;gap:10px;flex:1;min-width:0;cursor:pointer}.u-cm-t{flex:1;min-width:0}
.u-tg{appearance:none;-webkit-appearance:none;position:relative;flex:none;width:34px;height:20px;margin:0;border-radius:999px;background:var(--line2);border:1px solid var(--line2);cursor:pointer;transition:background .15s,border-color .15s}
.u-tg::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--muted);transition:transform .15s,background .15s}
.u-tg:checked{background:var(--acc2);border-color:var(--acc)}.u-tg:checked::after{transform:translateX(14px);background:#fff}
.u-tg:focus-visible{outline:2px solid var(--acc-line);outline-offset:2px}
.u-cm .u-cm-i span.u-cm-hd{flex:0 0 auto}
.u-cm-hd{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:24px;margin:-2px 0;border-radius:6px;color:var(--muted);font-size:16px;line-height:1;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.u-cm-hd:hover,.u-cm-hd:focus-visible{color:var(--acc);background:var(--panel3);outline:0}
.u-cm.dragging,.u-cm.dragging *{cursor:grabbing!important;user-select:none;-webkit-user-select:none}
.u-cm-dr.drag{background:var(--panel3);box-shadow:0 0 0 1px var(--acc-line) inset,0 6px 18px rgba(0,0,0,.45);position:relative;z-index:1}
@media (pointer:coarse){.u-cm-hd{width:30px;height:30px;font-size:18px}.u-cm-i{padding:6px 6px}}
@media (max-width:520px){.u-cm{position:fixed;left:8px;right:8px;top:auto;bottom:8px;width:auto;max-width:none;max-height:calc(100vh - 16px);overflow:auto}.u-cm-l{max-height:52vh}}
.u-cm-f{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:8px}
.ab-ren-i{width:min(100%,260px);height:30px;font-weight:700} h1 .ab-ren-i{font-size:16px;width:min(100%,420px)} /* 01.11i: правка названия A/B-теста */
.ab-ren[hidden],[data-abname][hidden]{display:none!important}
/* 01.11i: пометка «нет отчёта WB» в ячейках юнитки и Excel-подобная подсказка */
.u-lag{color:var(--amber);font-weight:700;white-space:nowrap;cursor:help}
.u-lagt{color:var(--amber);white-space:normal;cursor:help;max-width:180px}
.u-lagm{color:var(--amber);cursor:help;font-weight:700}
@media (max-width:600px){.u-lag{white-space:normal;display:inline-block;max-width:84px;line-height:1.25}}
/* 01.11i: плашка «автоминусация выключена (включается в «Режиме»)» на 390 вылезала за карточку — переносим текст */
.am-st{max-width:100%}
.am-st .pill{white-space:normal;height:auto;min-height:22px;padding:3px 9px;line-height:1.35;max-width:100%;box-sizing:border-box;overflow-wrap:anywhere}
/* 02.11 (FEAT_WB_ESTIMATE): расходы WB за дни без финотчёта — оценка «≈» */
.dsh20 .d20-est{color:var(--amber);cursor:help} .dsh20 .d-d.d20-est,.dsh20 .dsh-d.d20-est{display:block;font-weight:600;white-space:normal;line-height:1.3;margin-top:2px}
.u-wbest{color:var(--amber);cursor:help;font-weight:700} div.u-wbest{font-weight:400;white-space:normal;max-width:180px}
/* 02.11b (Виктор 10:18 п.3): блок «ROI» после «Себестоимости продаж» — в первой строке 6 блоков */
@media (min-width:1101px){.dsh.dsh20.n6{grid-template-columns:repeat(6,minmax(0,1fr))}}
/* 02.11d п3.3 (Виктор 15:01): скрыт хоть один блок — одна сетка подряд, без пустых клеток (dense — дыр не остаётся).
   Без скрытых — ряды по смыслу, но на узком экране (4 колонки и меньше) ряды тоже сливаются в одну сетку: иначе ряд из 5–6
   блоков переносит 1–2 блока и оставляет пустые клетки */
.dsh.dsh20.d20-fl{grid-auto-flow:row dense}
@media (max-width:1100px){.d20-rows:not(.d20-flow){display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:1fr;grid-auto-flow:row dense;gap:10px}.d20-rows:not(.d20-flow)>.dsh.dsh20{display:contents}}
@media (max-width:920px){.d20-rows:not(.d20-flow){grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){.d20-rows:not(.d20-flow){grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.d20-rows:not(.d20-flow){grid-template-columns:1fr}}
/* 02.11b (Виктор 10:18 п.1): список найденного под поиском — фото, название, артикулы; отметка → только отмеченные */
.u-qs{position:relative}
.uqd{position:absolute;left:0;top:calc(100% + 4px);z-index:60;width:min(560px,92vw);background:var(--panel,#151922);border:1px solid var(--line2,var(--line));border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.45);color:var(--text);padding:6px}
.uqd-h{padding:4px 6px 6px}
.uqd-l{max-height:min(52vh,420px);overflow:auto;display:flex;flex-direction:column;gap:1px}
.uqd-i{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:8px;cursor:pointer}
.uqd-i:hover{background:rgba(255,255,255,.05)}.uqd-i.on{background:rgba(45,212,191,.10)}
.uqd-i input{flex:0 0 auto;width:16px;height:16px}
.uqd-t{display:flex;flex-direction:column;min-width:0}.uqd-n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.uqd-f{display:flex;align-items:center;gap:6px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:6px;padding:6px 4px 2px}
/* 02.11b п.2: сменили период — строки прежнего периода приглушены, пока не пришли новые */
.u-stale .tbl-wrap{opacity:.45;transition:opacity .2s}
/* 02.11b п.9: под полем чека план — «введено» (акцент) или «расчёт: … · СПП %» (серым) */
.u-plsrc{margin-top:3px;white-space:nowrap;font-size:11px}
.u-plsrc:not(.dim){color:var(--acc,#2dd4bf)}
/* 02.11d (Виктор 11:53): на главной закреплены «Кампания» и «Статус · биддер», граница — после статуса */
#tbl .stk3{position:sticky;left:var(--stk3,0);z-index:1;background:var(--panel);box-shadow:inset -1px 0 0 var(--line2)}
#tbl th.stk3{z-index:3;background:var(--panel2)}
#tbl .stk2{box-shadow:none}
.tbl-wrap.scrolled #tbl .stk3{box-shadow:inset -1px 0 0 var(--line2),8px 0 10px -6px rgba(0,0,0,.55)}
#tbl tr.row-sel td.stk2,#tbl tr.row-sel td.stk3{background:#13232b}
#tbl tbody tr:hover td.stk2,#tbl tbody tr:hover td.stk3{background:#122a28}
/* 02.11d: «Кампания» узкая, чтобы два закреплённых столбца не занимали экран: название до 2 строк, мета переносится */
#tbl th.stk2,#tbl td.stk2{width:380px;min-width:380px;max-width:380px;white-space:normal}
#tbl td.stk2 .prod{min-width:0}
#tbl td.stk2 .prod>div{min-width:0;flex:1 1 auto}
#tbl td.stk2 .pname-row{display:flex;flex-wrap:wrap;align-items:center;gap:2px 4px}
#tbl td.stk2 .pname{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;overflow-wrap:anywhere;line-height:1.3}
#tbl td.stk2 .pmeta{flex-wrap:wrap;gap:0 6px;white-space:normal;line-height:1.35}
#tbl th.stk3,#tbl td.stk3{width:184px;min-width:184px}
/* 02.11h QA: на 1024 два закреплённых столбца (380 + 184) занимали 77 % ширины таблицы, на 768 — больше ширины
   (цифры не прокрутить к виду): до 1100 — «Кампания» 260 и статус 156, до 900 (планшет, телефон) — компактно */
@media (max-width:1100px) and (min-width:901px){
  #tbl th.stk2,#tbl td.stk2{width:260px;min-width:260px;max-width:260px}
  #tbl th.stk3,#tbl td.stk3{width:156px;min-width:156px;max-width:156px;white-space:normal}
  #tbl td.stk3 *{white-space:normal;max-width:100%}
}
@media (max-width:900px){
  #tbl th.stk2,#tbl td.stk2{width:124px;min-width:124px;max-width:124px}
  #tbl td.stk2 .thumb{display:none}
  #tbl td.stk2 .pmeta{display:none}
  #tbl th.stk3,#tbl td.stk3{width:104px;min-width:104px;max-width:104px;font-size:11.5px;white-space:normal}
  #tbl td.stk3 *{white-space:normal;max-width:100%}
}
