/* SellerPro — тёмная тема в духе McKinsey: вывод в заголовке, серифные цифры, спокойные линии, цвет — только по смыслу. */
:root{--bg:#060B16;--surface:#0C1528;--surface-2:#122039;--surface-3:#172846;--line:#22324F;--line-soft:#18253E;--text:#F2F5FA;--text-2:#A7B3C8;--muted:#6E7B94;
--accent:#3D8BF0;--accent-2:#7FB2FF;--accent-soft:rgba(61,139,240,.14);--good:#2FB67C;--warn:#E0A33A;--bad:#E66767;--muted-bar:#4A5B7C;
--serif:'Source Serif 4',Georgia,'Times New Roman',serif;--sans:Inter,system-ui,-apple-system,'Segoe UI',Arial,sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
button{font:inherit}a{color:var(--accent-2)}
.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
aside{background:linear-gradient(180deg,#0B1426,#09111F);border-right:1px solid var(--line);padding:22px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow:auto}
.brand{font-family:var(--serif);font-size:21px;font-weight:700;padding:0 10px 2px;letter-spacing:.2px}
.brand-sub{color:var(--muted);font-size:10.5px;letter-spacing:1.6px;text-transform:uppercase;padding:0 10px 18px}
nav button{display:flex;align-items:center;gap:11px;width:100%;background:none;border:0;color:var(--text-2);font-weight:500;padding:9px 12px;border-radius:8px;cursor:pointer;text-align:left}
nav button:hover{background:var(--surface-2);color:var(--text)}
nav button.on{background:var(--accent-soft);color:var(--text);box-shadow:inset 3px 0 0 var(--accent)}
nav .ico{width:18px;height:18px;display:grid;place-items:center;color:var(--muted);flex:none}
nav button:hover .ico,nav button.on .ico{color:var(--accent-2)}
nav .sep{height:1px;background:var(--line-soft);margin:10px 8px}
.side-foot{margin-top:auto;color:var(--muted);font-size:11.5px;padding:12px 10px 0;line-height:1.6;border-top:1px solid var(--line-soft)}
.side-foot button{background:none;border:0;color:var(--text-2);cursor:pointer;padding:0;text-decoration:underline}
main{padding:26px 30px 70px;min-width:0;max-width:1680px}

/* заголовок раздела: рубрика → вывод → пояснение */
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.ttl{max-width:980px}
.kicker{color:var(--accent-2);font-size:11px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase}
h1{font-family:var(--serif);font-size:30px;line-height:1.2;font-weight:700;margin-top:6px;letter-spacing:-.2px}
.lead{color:var(--text-2);margin-top:8px;max-width:900px;font-size:14.5px}
.rule{height:1px;background:linear-gradient(90deg,var(--accent) 0,var(--accent) 120px,var(--line) 120px,transparent 80%);margin:16px 0 18px}
.eyebrow{color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;margin-bottom:8px}
.source{color:var(--muted);font-size:11.5px;font-style:italic;margin-top:20px;padding-top:10px;border-top:1px solid var(--line-soft)}

/* элементы управления */
.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
select,input,textarea,.btn{background:var(--surface);border:1px solid var(--line);color:var(--text);font:500 13px var(--sans);padding:8px 12px;border-radius:8px}
textarea{width:100%;min-height:120px;font-family:ui-monospace,Consolas,monospace;resize:vertical}
input,select,textarea{outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent)}
input[type=date]{color-scheme:dark}
input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;padding:0}
.btn{cursor:pointer;white-space:nowrap;transition:border-color .15s,background .15s}.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#2F7BE0}
.btn.danger{background:rgba(230,103,103,.12);border-color:var(--bad);color:#FFB4B4}
.btn.xl{color:#86D9B0;border-color:#1F4D3A}.btn.xl:hover{border-color:var(--good)}
.btn.sm{padding:5px 10px;font-size:12px}.btn.big{padding:12px 18px;font-size:14px}
.btn:disabled{opacity:.45;cursor:default}
.lnk{background:none;border:0;color:var(--accent-2);cursor:pointer;font-weight:600;font-size:12.5px;white-space:nowrap}
.fld{display:inline-flex;flex-direction:column;gap:3px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.3px}
.fld input,.fld select{width:auto;min-width:90px}.fld input{width:96px}.fld input[type=date]{width:150px}.fld.grow{flex:1}.fld.grow select{width:100%;max-width:640px}
.search{width:240px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}.seg button{background:var(--surface);border:0;color:var(--text-2);padding:8px 14px;cursor:pointer;font-weight:500}
.seg button.on{background:var(--accent-soft);color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;padding:12px 16px}
.dfl{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
input.num{width:90px;text-align:right}

/* карточки и сетки */
.card{background:var(--surface);border:1px solid var(--line-soft);border-radius:12px;padding:18px;margin-bottom:16px;min-width:0}
.card h3{font-family:var(--serif);font-size:17px;font-weight:700}
.card-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.cnt{color:var(--muted);font-family:var(--sans);font-size:13px;font-weight:500}
.sub{color:var(--muted);font-size:12px;margin-top:2px}.sub b{color:var(--text-2)}
.hint{margin:6px 0 10px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid2>.card{margin-bottom:16px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
details.card>summary{cursor:pointer;list-style:none;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}details.card>summary::-webkit-details-marker{display:none}
details.card>summary::before{content:"＋";color:var(--accent-2);font-weight:700;width:14px}details.card[open]>summary::before{content:"－"}
details.card[open]>summary{margin-bottom:10px}
.exec-all .sumhl{font-family:var(--serif);font-size:16px;font-weight:600}.exec-all .grid2{margin-top:12px}.exec-all .card{background:var(--surface-2);margin-bottom:0}
.note{background:var(--accent-soft);border:1px solid #23406B;border-radius:10px;padding:10px 14px;margin-bottom:14px;font-size:13px;color:var(--text-2);display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.note.warn{background:rgba(224,163,58,.09);border-color:#5C4419;color:#F2CF8E}.note.bad{background:rgba(230,103,103,.09);border-color:#5A2A2A;color:#FFC9C9}
.facts{display:flex;gap:18px;flex-wrap:wrap;color:var(--text-2);font-size:12.5px;margin:0 0 12px}.facts b{color:var(--text);font-weight:600}
.mgmt{margin:-2px 0 16px}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--surface);border:1px solid var(--line-soft);border-top:2px solid var(--accent);border-radius:10px;padding:13px 14px 11px;min-width:0}
.kpi.good{border-top-color:var(--good)}.kpi.bad{border-top-color:var(--bad)}.kpi.warn{border-top-color:var(--warn)}
.kpi .l{color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase}
.kpi .v{font-family:var(--serif);font-size:24px;font-weight:700;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi.good .v{color:#9FE3C2}.kpi.bad .v{color:#FFB4B4}.kpi.warn .v{color:#F2CF8E}
.kpi .n{font-size:11.5px;color:var(--text-2);margin-top:2px}

/* выводы и «что делать» */
.exec>.card{background:linear-gradient(180deg,var(--accent-soft),transparent 70%),var(--surface);border-top:1px solid #23406B}
.find{display:flex;gap:14px;padding:11px 0;border-top:1px solid var(--line-soft)}.find:first-of-type{border-top:0}
.find .num{font-family:var(--serif);font-weight:700;color:var(--accent-2);font-size:22px;min-width:20px;line-height:1.1}
.find b{font-weight:600}.find span{color:var(--text-2)}
.todo{list-style:none}.todo li{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-top:1px solid var(--line-soft)}.todo li:first-child{border-top:0}
.todo li span:last-child{color:var(--text-2)}
.steps{margin:6px 0 0 18px;line-height:1.9;color:var(--text-2)}.steps b{color:var(--text)}

/* метки и статусы */
.tag{font-size:10.5px;font-weight:700;border-radius:4px;padding:2px 7px;white-space:nowrap;display:inline-block}
.tag.bad{background:rgba(230,103,103,.15);color:var(--bad)}.tag.warn{background:rgba(224,163,58,.15);color:var(--warn)}
.tag.good{background:rgba(47,182,124,.15);color:var(--good)}.tag.info{background:var(--accent-soft);color:var(--accent-2)}
.st{font-weight:600;white-space:nowrap}
.good{color:var(--good)}.bad{color:var(--bad)}.warn{color:var(--warn)}.muted{color:var(--muted)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:var(--muted)}.dot.good{background:var(--good)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}

/* фишки-фильтры */
.chipbar{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:4px 0 10px}
.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.chips-t{color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase;margin-right:2px}
.chip{background:var(--surface);border:1px solid var(--line);color:var(--text-2);border-radius:16px;padding:5px 11px;font:500 12px var(--sans);cursor:pointer}
.chip i{font-style:normal;color:var(--muted);margin-left:5px;font-variant-numeric:tabular-nums}
.chip:hover{border-color:var(--accent)}
.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.chip.on i{color:var(--accent-2)}
.chip.bad.on{background:rgba(230,103,103,.14);border-color:var(--bad)}.chip.warn.on{background:rgba(224,163,58,.14);border-color:var(--warn)}.chip.good.on{background:rgba(47,182,124,.14);border-color:var(--good)}
.chip.clear{border-style:dashed}
.selbar{margin:0 0 8px}

/* таблицы */
.tbar{position:relative;display:flex;justify-content:flex-end;gap:6px;margin:-2px 0 6px}
.colpop{display:none;position:absolute;right:0;top:32px;z-index:25;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;max-height:60vh;overflow:auto;min-width:230px;box-shadow:0 12px 30px rgba(0,0,0,.5)}
.colpop.on{display:block}.colpop label{display:flex;gap:8px;align-items:center;padding:4px 0;font-size:13px;color:var(--text-2);cursor:pointer}
.tw{overflow:auto;max-height:72vh;border-radius:8px;border:1px solid var(--line-soft)}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
th{background:var(--surface-2);color:var(--muted);font-weight:700;font-size:10.5px;letter-spacing:.5px;text-transform:uppercase;text-align:right;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;z-index:3;cursor:pointer;user-select:none}
th:hover{color:var(--text)}th.sorted{color:var(--accent-2)}th[data-dir]:not([data-dir=""])::after{content:" " attr(data-dir);font-size:9px}
th.l,td.l{text-align:left}
td{padding:8px 10px;border-bottom:1px solid var(--line-soft);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;background:var(--surface)}
td.wrap{white-space:normal;min-width:240px}
th.stk,td.stk{position:sticky;left:0;z-index:2;box-shadow:inset -1px 0 0 var(--line)}th.stk{z-index:4}
td.ck,th.ck{width:34px;text-align:center;padding:4px;position:sticky;left:0;z-index:2}th.ck{z-index:4}
td.ck+td.stk,th.ck+th.stk{left:34px}
tr:hover td{background:var(--surface-2)}
tr.cand td{background:#1A1420}tr.cand:hover td{background:#22182A}tr.pin td{background:#0F1E1C}tr.minus td{color:var(--muted)}tr.cur td{background:#11203A}
td.ro{color:var(--text-2)}
table.mini{font-size:12.5px}table.mini td{padding:6px 4px;background:none}table.mini tr:hover td{background:none}
table.jobs td{background:none;padding:12px 8px;vertical-align:top}
/* юнитка: поля ввода, умолчания, цвета объёма */
.uw{max-height:76vh}
#ut td input,#ut td select{padding:5px 7px;font-size:12.5px;text-align:right}#ut td select{text-align:left;max-width:150px}
#ut td.stk{min-width:170px;max-width:240px;white-space:normal}
td.dflt{box-shadow:inset 0 0 0 1px rgba(224,163,58,.6)}td.dflt input,td.dflt select{background:rgba(224,163,58,.08)}
td.v1{background:rgba(47,182,124,.18)!important}td.v2{background:rgba(47,182,124,.08)!important}td.v3{background:rgba(224,163,58,.12)!important}
td.v4{background:rgba(224,163,58,.22)!important}td.v5{background:rgba(230,103,103,.15)!important}td.v6{background:rgba(230,103,103,.28)!important}
td.sthigh{background:rgba(230,103,103,.2)!important}

/* графики */
.chart{width:100%;min-height:60px;display:block;margin-top:8px;overflow:hidden}
.chart svg{display:block}
.chart text{fill:var(--muted);font:11px var(--sans)}.chart text.lbl{fill:var(--text-2)}.chart text.val{fill:var(--text);font-weight:600}.chart text.tgt{fill:var(--warn);font-size:10.5px}
.chart line.grid{stroke:var(--line-soft)}.chart line.ax0{stroke:var(--line)}.chart line.target{stroke:var(--warn);stroke-dasharray:4 4;opacity:.8}
.chart path.dline{fill:none;stroke:var(--warn);stroke-width:1.5;opacity:.55}
.chart rect.hit{fill:transparent}.chart rect.hit:hover{fill:rgba(255,255,255,.035)}
.nodata{color:var(--muted);padding:40px;text-align:center}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-2);margin-top:6px}.legend i{display:inline-block;width:12px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}.legend i.dot{width:9px;height:9px;border-radius:50%}
.tip{position:fixed;pointer-events:none;background:#08101F;border:1px solid var(--line);border-radius:8px;padding:8px 11px;font-size:12px;opacity:0;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.5);transition:opacity .1s;max-width:260px}
.tip b{display:block;margin-bottom:2px}.tip i{display:block;color:var(--accent-2);font-style:normal;margin-top:4px;font-size:11px}

/* остатки: где лежит товар */
.locs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.loc{background:var(--surface-2);border-radius:10px;padding:12px 13px;border-top:2px solid var(--accent)}
.loc.fbs{border-top-color:#8E7CF0}.loc.sup{border-top-color:var(--warn)}.loc.to{border-top-color:var(--good)}.loc.from{border-top-color:var(--bad)}.loc.total{border-top-color:var(--text);background:var(--surface-3)}
.loc .l{color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:.8px;text-transform:uppercase}
.loc .v{font-family:var(--serif);font-size:21px;font-weight:700;margin-top:4px}.loc .n{font-size:11.5px;color:var(--text-2)}
.whs{display:flex;flex-direction:column;gap:1px;margin-top:6px;font-size:11.5px;color:var(--text-2)}.whs b{color:var(--text)}

/* строка «актуальность + ход обновления» */
.sstat{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--text-2);background:var(--surface);border:1px solid var(--line-soft);border-radius:9px;padding:8px 12px;margin:-6px 0 18px;min-height:38px}
.sstat .fr b{color:var(--text);font-weight:600}.sstat .sp{flex:1}
.sstat.run{border-color:var(--accent)}.sstat.err{border-color:var(--bad)}
.bar{height:6px;background:var(--line-soft);border-radius:3px;overflow:hidden;width:180px}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .6s}
table.jobs .bar{width:100%;margin-bottom:4px}

/* служебное */
.form{display:grid;grid-template-columns:180px 1fr;gap:10px 14px;align-items:center;max-width:620px}
.form label{color:var(--text-2);font-size:13px}
.thr{display:grid;grid-template-columns:minmax(260px,1fr) 120px;gap:8px 14px;align-items:center;max-width:860px}.thr label{color:var(--text-2);font-size:13px}.thr input{text-align:right}
.state{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 14px;border-radius:10px;border:1px solid var(--line);margin-bottom:12px}
.state.off{background:rgba(61,139,240,.07)}.state.on{background:rgba(47,182,124,.07);border-color:#1F4D3A}.state.stop{background:rgba(230,103,103,.08);border-color:#5A2A2A}
.pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:20px;padding:4px 10px;font-size:12px;color:var(--text-2);background:var(--surface)}
.pill.stop{border-color:var(--bad);color:#FFB4B4}.pill.on{border-color:#1F4D3A;color:#9FE3C2}
.empty{color:var(--text-2);padding:30px;text-align:center;border:1px dashed var(--line);border-radius:12px;margin-bottom:16px}
.soon li{list-style:none;padding:8px 0;border-top:1px solid var(--line-soft);color:var(--text-2)}.soon li:first-child{border-top:0}.soon b{color:var(--text);font-weight:600}
.loading{color:var(--muted);padding:40px;text-align:center}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:s 1s linear infinite;vertical-align:-2px;margin-right:8px}
@keyframes s{to{transform:rotate(360deg)}}
.toast{position:fixed;right:20px;bottom:20px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:12px 16px 12px 36px;max-width:400px;z-index:70;opacity:0;visibility:hidden;pointer-events:none}
.toast::before{content:"";position:absolute;left:15px;top:19px;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.toast.err{border-color:#5A2A2A}.toast.err::before{background:var(--bad)}
.modal{position:fixed;inset:0;background:rgba(3,6,12,.72);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal[hidden]{display:none}
.dlg{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px;width:min(760px,100%);max-height:90vh;overflow:auto}
.dlg:has(.wide){width:min(1120px,100%)}
.dlg h2{font-family:var(--serif);font-size:21px;margin-bottom:8px}
.dlg .acts{display:flex;gap:8px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}
.check{display:flex;gap:8px;align-items:flex-start;margin-top:14px;color:var(--text-2)}
.diff{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;margin:14px 0}
.diff div{background:var(--surface-2);border-radius:10px;padding:12px;text-align:center}
.diff .v{font-family:var(--serif);font-size:24px;font-weight:700}.diff .v.sm{font-size:17px}
.problems{background:rgba(230,103,103,.08);border:1px solid #5A2A2A;border-radius:10px;padding:12px 14px;margin-top:12px;color:#FFC9C9;font-size:13px}
.problems li{margin-left:16px}
.demo{background:rgba(224,163,58,.12);border:1px solid #5C4419;color:#F2CF8E;border-radius:8px;padding:8px 12px;font-size:12.5px;margin-bottom:14px}
.err{color:#FFB4B4;font-size:13px;margin-top:10px;min-height:18px}
/* вход */
.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.auth .card{width:min(420px,100%);padding:28px}.auth h1{font-size:26px}.auth input{width:100%;margin-top:6px}.auth .row{margin-top:14px}
.auth .switch{margin-top:16px;color:var(--text-2);font-size:13px}.auth .switch button{background:none;border:0;color:var(--accent-2);cursor:pointer;text-decoration:underline}
.menu-btn{display:none;margin-right:8px;padding:4px 10px}

@media (max-width:1280px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.locs{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:980px){.grid2,.grid3{grid-template-columns:1fr}}
@media (max-width:860px){
  .app{grid-template-columns:1fr}
  aside{position:fixed;inset:0 30% 0 0;z-index:40;transform:translateX(-105%);height:100vh}
  aside.open{transform:none;box-shadow:0 0 0 100vmax rgba(0,0,0,.5)}
  .menu-btn{display:inline-block}
  main{padding:16px 14px 60px}
  .kpis{grid-template-columns:1fr 1fr}.locs{grid-template-columns:1fr 1fr}
  .form{grid-template-columns:1fr}.thr{grid-template-columns:1fr 100px}
  h1{font-size:22px}.search{width:100%}.controls>*{flex:1 1 auto}
}
.ok{color:var(--good);font-size:13px;margin-top:10px}
.auth .switch{margin-top:10px}
.ok{color:var(--good);font-size:13px;margin-top:10px}
.auth .switch{margin-top:10px}

/* ---- Налоги */
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;align-items:end;margin-top:6px}
.fgrid.add{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.fgrid label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.fgrid label.chk{flex-direction:row;align-items:center;gap:8px;font-size:14px;color:inherit}
.fgrid input[type=checkbox]{width:auto}
.tlw{display:flex;flex-direction:column;gap:2px;max-height:560px;overflow:auto}
.tli{display:grid;grid-template-columns:104px 1fr auto;gap:12px;padding:10px 6px;border-bottom:1px solid var(--line);align-items:start}
.tli .d{display:flex;flex-direction:column;font-size:13px}.tli .d span{color:var(--muted);font-size:12px}
.tli.overdue .d b{color:var(--bad)}.tli.paid{opacity:.62}.tli.ev{opacity:.85}
.pbar{height:5px;border-radius:3px;background:var(--line);margin-top:6px;overflow:hidden}.pbar i{display:block;height:100%;background:var(--good)}
@media(max-width:560px){.tli{grid-template-columns:1fr}}


/* ================= Движение и детали (Emil: быстро, ease-out, только transform/opacity) ================= */
:root{--ease-out:cubic-bezier(.23,1,.32,1);--ease-io:cubic-bezier(.77,0,.175,1);--ease-drawer:cubic-bezier(.32,.72,0,1);
--shadow-pop:0 1px 0 rgba(255,255,255,.03) inset,0 12px 32px -8px rgba(0,0,0,.6),0 2px 6px rgba(0,0,0,.35);color-scheme:dark}
html{scrollbar-color:var(--line) transparent;scrollbar-width:thin}
::selection{background:rgba(61,139,240,.38);color:#fff}
input,textarea{caret-color:var(--accent-2)}
::placeholder{color:var(--muted);opacity:1}
.kpi .v,.diff .v,.loc .v,td,.cnt,.chip i{font-variant-numeric:tabular-nums}
h1,.dlg h2{text-wrap:balance}.lead{text-wrap:pretty}
*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:var(--muted-bar);background-clip:content-box;border:2px solid transparent}*::-webkit-scrollbar-track{background:transparent}

/* фокус с клавиатуры */
:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px;border-radius:6px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

/* элементы управления: явные свойства вместо all, нажатие даёт отклик */
.btn,.chip,.lnk,nav button,.seg button,.pill{transition:transform 140ms var(--ease-out),background-color 160ms ease,border-color 160ms ease,color 160ms ease,box-shadow 160ms ease}
select,input,textarea{transition:border-color 160ms ease,box-shadow 160ms ease,background-color 160ms ease}
.btn:active:not(:disabled),.chip:active,.seg button:active,nav button:active{transform:scale(.97)}
.btn.primary{box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 4px 14px -6px rgba(61,139,240,.7)}
.btn.primary:active:not(:disabled){box-shadow:0 1px 0 rgba(0,0,0,.2) inset}
.btn:disabled{pointer-events:none}
nav button{position:relative}
nav button.on{box-shadow:none}
nav button::before{content:"";position:absolute;left:0;top:50%;width:3px;height:18px;border-radius:0 3px 3px 0;background:var(--accent);transform:translateY(-50%) scaleY(0);transition:transform 220ms var(--ease-out)}
nav button.on::before{transform:translateY(-50%) scaleY(1)}
nav .ico{transition:transform 200ms var(--ease-out)}
.seg button.on{box-shadow:inset 0 -2px 0 var(--accent)}
.chip.on{box-shadow:0 0 0 1px var(--accent) inset}
tr td{transition:background-color 120ms ease}
.kpi,.card,.loc{transition:border-color 180ms ease,background-color 180ms ease}
.bar i,.pbar i{transition:width 600ms var(--ease-out)}

@media (hover:hover) and (pointer:fine){
  nav button:hover .ico{transform:scale(1.08)}
  .kpi:hover,.card:hover{border-color:var(--line)}
  .lnk:hover{color:var(--text)}
}
@media (hover:none){.btn:hover{border-color:var(--line)}.btn.primary:hover{border-color:var(--accent)}}

/* смена раздела: один короткий въезд, контент виден по умолчанию */
@keyframes spIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes spFade{from{opacity:0}to{opacity:1}}
main.enter>*{animation:spIn 240ms var(--ease-out) both}
main.enter>*:nth-child(2){animation-delay:30ms}main.enter>*:nth-child(3){animation-delay:60ms}
main.enter>*:nth-child(n+4){animation-delay:90ms}
.kpis>.kpi{animation:spIn 260ms var(--ease-out) both}
.kpis>.kpi:nth-child(2){animation-delay:30ms}.kpis>.kpi:nth-child(3){animation-delay:60ms}.kpis>.kpi:nth-child(4){animation-delay:90ms}
.kpis>.kpi:nth-child(5){animation-delay:120ms}.kpis>.kpi:nth-child(n+6){animation-delay:150ms}
.rule{transform-origin:left;animation:spRule 520ms var(--ease-out) both}
@keyframes spRule{from{transform:scaleX(.15);opacity:0}to{transform:none;opacity:1}}
.card>.chart svg{animation:spFade 400ms ease both}

/* раскрывающиеся блоки */
details.card>summary{transition:color 160ms ease}details.card>summary::before{transition:transform 200ms var(--ease-out);display:inline-block}
details.card[open]>.chart,details.card[open]>div{animation:spFade 220ms ease both}

/* модальное окно: из центра, закрытие быстрее открытия */
.modal{animation:spFade 160ms ease both;backdrop-filter:blur(3px)}
.modal .dlg{animation:dlgIn 220ms var(--ease-out) both;box-shadow:var(--shadow-pop)}
@keyframes dlgIn{from{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:none}}
.modal.out{animation:none;opacity:0;transition:opacity 140ms ease-out}
.modal.out .dlg{animation:none;opacity:0;transform:scale(.98);transition:opacity 140ms ease-out,transform 140ms ease-out}

/* уведомление: приходит и уходит с одной стороны */
.toast{transform:translateY(12px) scale(.98);transition:opacity 200ms ease-out,transform 240ms var(--ease-out),visibility 0s linear 200ms;box-shadow:var(--shadow-pop)}
.toast.show{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition-delay:0s}
.tip{transition:opacity 100ms ease-out}
.colpop{transform-origin:top right;animation:popIn 160ms var(--ease-out) both}
@keyframes popIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}

/* боковое меню на телефоне */
@media (max-width:860px){aside{transition:transform 260ms var(--ease-drawer)}}

/* состояние строки «идёт обновление» */
.sstat.run{animation:runGlow 1.8s ease-in-out infinite}
@keyframes runGlow{50%{box-shadow:0 0 0 3px var(--accent-soft)}}
.spin{animation-duration:.7s}

/* вход */
.auth .card{animation:dlgIn 320ms var(--ease-out) both;box-shadow:var(--shadow-pop)}

/* уважение к настройке «уменьшить движение»: остаются только прозрачность и цвет */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:1ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;transition-delay:0ms!important}
  main.enter>*,.kpis>.kpi,.rule{animation-name:spFade}
  .modal .dlg,.auth .card{animation-name:spFade}
  .toast{transform:none}
  .btn:active:not(:disabled),.chip:active,nav button:active{transform:none}
}


/* ================= v18: ещё живее, блоки РК, фото и «не продаём» ================= */
/* карточка кампании: плитки вместо строки */
.rk{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 14px}
.rkt{background:var(--surface);border:1px solid var(--line-soft);border-top:2px solid var(--line);border-radius:10px;padding:10px 13px 11px;min-width:0;display:flex;flex-direction:column;gap:5px;animation:spIn 260ms var(--ease-out) both}
.rkt:nth-child(2){animation-delay:30ms}.rkt:nth-child(3){animation-delay:60ms}.rkt:nth-child(4){animation-delay:90ms}.rkt:nth-child(5){animation-delay:120ms}.rkt:nth-child(n+6){animation-delay:150ms}
.rkt .l{color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:.9px;text-transform:uppercase}
.rkt .v{font-size:17px;font-weight:700;line-height:1.25;overflow-wrap:anywhere;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.rkt .v small{flex-basis:100%;font-size:11.5px;font-weight:500;color:var(--text-2)}
.rkt.wide{grid-column:span 2}.rkt.info{border-top-color:var(--accent)}
.rkt.good{border-top-color:var(--good)}.rkt.good .v{color:#9FE3C2}
.rkt.warn{border-top-color:var(--warn)}.rkt.warn .v{color:#F2CF8E}
.rkt.bad{border-top-color:var(--bad)}.rkt.bad .v{color:#FFB4B4}
.sdot{width:9px;height:9px;border-radius:50%;background:var(--muted);flex:none}
.sdot.good{background:var(--good);animation:livePulse 2s ease-out infinite}.sdot.warn{background:var(--warn)}
@keyframes livePulse{0%{box-shadow:0 0 0 0 rgba(47,182,124,.55)}70%,100%{box-shadow:0 0 0 7px rgba(47,182,124,0)}}
@media(max-width:560px){.rkt.wide{grid-column:auto}}

/* юнитка: фото, «не продаём» */
.art{display:flex;gap:10px;align-items:flex-start}
.art .ph{width:42px;height:56px;border-radius:6px;background:var(--surface-3);flex:none;overflow:hidden;border:1px solid var(--line-soft)}
.art .ph img{width:100%;height:100%;object-fit:cover;display:block;animation:spFade 300ms ease both}
.art .at{min-width:0}
.noSell{display:inline-flex;align-items:center;gap:6px;margin-top:4px;color:var(--muted);font-size:11.5px;cursor:pointer;user-select:none}
.noSell input{width:14px;height:14px}.noSell:hover{color:var(--text-2)}
tr.off td{opacity:.5}tr.off .noSell{color:var(--warn)}
tr.leaving td{opacity:0;transition:opacity 200ms ease-out}
.offtog{display:inline-flex;align-items:center;gap:8px;color:var(--text-2);font-size:12.5px;margin:0 0 10px;cursor:pointer}
.offtog b{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:0 7px;font-size:11.5px;color:var(--text)}
#ut td.stk{min-width:230px}

/* ещё анимации */
tbody.tin tr{animation:spIn 260ms var(--ease-out) both}
tbody.tin tr:nth-child(2){animation-delay:20ms}tbody.tin tr:nth-child(3){animation-delay:40ms}tbody.tin tr:nth-child(4){animation-delay:60ms}tbody.tin tr:nth-child(5){animation-delay:80ms}
tbody.tin tr:nth-child(6){animation-delay:100ms}tbody.tin tr:nth-child(7){animation-delay:120ms}tbody.tin tr:nth-child(8){animation-delay:140ms}tbody.tin tr:nth-child(n+9){animation-delay:160ms}
.chart svg{animation:wipe 700ms var(--ease-out) both}
@keyframes wipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.chip.on{animation:chipPop 220ms var(--ease-out)}
@keyframes chipPop{40%{transform:scale(1.06)}}
nav button{animation:navIn 320ms var(--ease-out) both}
nav button:nth-child(2){animation-delay:25ms}nav button:nth-child(3){animation-delay:50ms}nav button:nth-child(4){animation-delay:75ms}nav button:nth-child(5){animation-delay:100ms}nav button:nth-child(6){animation-delay:125ms}
nav button:nth-child(7){animation-delay:150ms}nav button:nth-child(8){animation-delay:175ms}nav button:nth-child(n+9){animation-delay:200ms}
@keyframes navIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
.brand{animation:spIn 400ms var(--ease-out) both}
.bar i,.pbar i{animation:grow 800ms var(--ease-out) both;transform-origin:left}
@keyframes grow{from{transform:scaleX(0)}to{transform:none}}
.tag,.pill{animation:spFade 300ms ease both}
.find,.todo li{animation:spIn 300ms var(--ease-out) both}
.find:nth-of-type(2),.todo li:nth-child(2){animation-delay:60ms}.find:nth-of-type(3),.todo li:nth-child(3){animation-delay:120ms}.todo li:nth-child(n+4){animation-delay:180ms}
@media (hover:hover) and (pointer:fine){
  .kpi,.rkt,.loc{transition:transform 200ms var(--ease-out),border-color 180ms ease,box-shadow 200ms ease}
  .kpi:hover,.rkt:hover,.loc:hover{transform:translateY(-2px);box-shadow:0 10px 22px -12px rgba(0,0,0,.7)}
  tr:hover .ph{transform:scale(1.04)}
  .art .ph{transition:transform 200ms var(--ease-out)}
}
@media (prefers-reduced-motion:reduce){.rkt,tbody.tin tr,.chart svg,nav button,.brand,.find,.todo li{animation-name:spFade}.sdot.good{animation:none}.kpi:hover,.rkt:hover,.loc:hover{transform:none}}


/* ================= v19: таблица юнитки — «тихие» поля вместо рамок в каждой ячейке ================= */
#ut{font-size:13px}
#ut th{padding:11px 10px;background:var(--surface-2);border-bottom:1px solid var(--line)}
#ut td{padding:7px 8px;border-bottom:1px solid var(--line-soft);vertical-align:middle;transition:background-color 140ms ease}
#ut tbody tr:hover td{background:#0F1A31}
#ut td.stk{background:var(--surface)}#ut tbody tr:hover td.stk{background:#0F1A31}
/* поля: без рамок и фона, рамка появляется при наведении и вводе */
#ut td input,#ut td select{background:transparent;border:1px solid transparent;border-radius:7px;padding:6px 8px;font:500 13px var(--sans);font-variant-numeric:tabular-nums;color:var(--text);text-align:right;box-shadow:none;transition:border-color 160ms ease,background-color 160ms ease,box-shadow 160ms ease}
#ut td select{text-align:left;max-width:158px;appearance:none;-webkit-appearance:none;padding-right:24px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none' stroke='%236E7B94' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 1l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}
#ut td input:hover,#ut td select:hover{border-color:var(--line);background-color:var(--surface-2)}
#ut td input:focus,#ut td select:focus{border-color:var(--accent);background-color:var(--surface-2);box-shadow:0 0 0 3px var(--accent-soft);outline:0}
/* значение «по умолчанию»: приглушённый текст и маленькая точка, а не оранжевая рамка вокруг ячейки */
#ut td.dflt{box-shadow:none}
#ut td.dflt input,#ut td.dflt select{background:transparent;color:var(--text-2);font-style:italic}
#ut td:not(.stk):not(.ck){position:relative}
#ut td.dflt::after{content:"";position:absolute;top:9px;right:6px;width:5px;height:5px;border-radius:50%;background:var(--warn);opacity:.85;pointer-events:none}
#ut td.ro.dflt::after{right:4px}
/* «жара» объёма и дорогого хранения — тонкая линия под значением вместо заливки всей ячейки */
#ut td.v1,#ut td.v2,#ut td.v3,#ut td.v4,#ut td.v5,#ut td.v6,#ut td.sthigh{background:transparent!important}
#ut td.v1 input{box-shadow:inset 0 -2px 0 rgba(47,182,124,.9)}#ut td.v2 input{box-shadow:inset 0 -2px 0 rgba(47,182,124,.5)}
#ut td.v3 input{box-shadow:inset 0 -2px 0 rgba(224,163,58,.5)}#ut td.v4 input{box-shadow:inset 0 -2px 0 rgba(224,163,58,.9)}
#ut td.v5 input{box-shadow:inset 0 -2px 0 rgba(230,103,103,.6)}#ut td.v6 input{box-shadow:inset 0 -2px 0 rgba(230,103,103,1)}
#ut td.sthigh input{color:#FFB4B4;box-shadow:inset 0 -2px 0 var(--bad)}
#ut td.v1 input:focus,#ut td.v2 input:focus,#ut td.v3 input:focus,#ut td.v4 input:focus,#ut td.v5 input:focus,#ut td.v6 input:focus,#ut td.sthigh input:focus{box-shadow:0 0 0 3px var(--accent-soft)}
/* итоговые числа читаются легче, чем поля ввода */
#ut td.ro{color:var(--text-2)}
#ut td b{font-weight:600}
.uw{border-radius:12px;border:1px solid var(--line-soft)}
.uw::-webkit-scrollbar-corner{background:transparent}
.dflt-key{display:inline-flex;align-items:center;gap:6px}.dflt-key i{width:6px;height:6px;border-radius:50%;background:var(--warn);display:inline-block}

.noanim *,.noanim *::before,.noanim *::after{animation:none!important}

/* v21 */
.search.wide{min-width:min(340px,100%);width:340px;padding:10px 12px;font-size:14px}
.catsel{padding:9px 10px;font-size:13px;max-width:220px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--fg)}
.whpick{margin-top:12px}
.whlist{display:flex;flex-wrap:wrap;gap:6px;max-height:260px;min-height:120px;overflow:auto;padding:8px 2px;margin-top:8px}
.whlist .chip{padding:6px 11px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-size:12.5px;cursor:pointer;transition:transform .18s var(--ease-out),background .18s var(--ease-out)}
.whlist .on{background:var(--accent);color:#fff;border-color:var(--accent)}
.whlist button:active{transform:scale(.96)}
tr.more td{text-align:center;padding:14px}
.dif.diff{color:var(--bad);font-weight:600}
.dif.ok{color:var(--good)}
.srow{margin-bottom:10px}
.bt{display:flex;flex-direction:column;gap:8px}
.btr{position:relative;display:flex;justify-content:space-between;gap:12px;padding:7px 10px;font-size:13px;border-radius:8px;overflow:hidden}
.btr i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);opacity:.12;z-index:0;transition:width .5s var(--ease-out)}
.btr span,.btr b{position:relative;z-index:1}

.alertpop{position:fixed;right:20px;bottom:20px;max-width:420px;background:var(--surface-2);border:1px solid var(--bad);border-radius:12px;padding:14px 16px;z-index:80;box-shadow:var(--shadow-pop);opacity:0;transform:translateY(14px);transition:opacity .25s,transform .25s}
.alertpop.show{opacity:1;transform:none}.alertpop b{display:block;margin-bottom:4px}.alertpop ul{margin:8px 0 10px 18px;padding:0;font-size:13px}.alertpop .acts{display:flex;gap:8px}
@media(max-width:520px){.alertpop{left:12px;right:12px;bottom:12px;max-width:none}}

.offwarn{font-size:12px;color:var(--bad);font-weight:600;margin-top:2px}
tr.offstock td{background:color-mix(in srgb,var(--bad) 9%,transparent)}
.offbanner button{margin-left:8px}

/* выпадающие списки: тёмный фон и читаемый текст в открытом списке */
select{color-scheme:dark}select option,select optgroup{background:#0C1528;color:#F2F5FA}
.catsel{background:var(--surface);color:var(--text)}
.todolink{background:none;border:0;color:var(--accent-2);cursor:pointer;font:600 12.5px var(--sans);padding:0 0 0 6px;white-space:nowrap}.todolink:hover{text-decoration:underline}
