/* АЭМЗ · операционный контур · дизайн v3, сдержанный (см. DESIGN.md) */
:root{
  --bg:oklch(97.5% .004 80);--surface:oklch(100% 0 0);--surface2:oklch(98.4% .003 80);--sidebar:oklch(96% .004 80);
  --ink:oklch(20% .01 60);--ink2:oklch(38% .01 60);--muted:oklch(52% .01 60);--faint:oklch(68% .008 60);
  --hair:oklch(20% .01 60 / .09);--hair2:oklch(20% .01 60 / .16);
  --accent:oklch(52% .2 25);--accent-h:oklch(46% .2 25);--accent-soft:oklch(96% .03 25);--accent-ring:oklch(52% .2 25 / .25);
  --ok:oklch(48% .14 150);--ok-soft:oklch(95.5% .04 150);--warn:oklch(52% .13 75);--warn-soft:oklch(96% .05 80);--info:oklch(48% .12 245);--info-soft:oklch(96% .03 245);--viol:oklch(46% .14 290);--viol-soft:oklch(96% .04 290);
  --shadow:0 8px 24px oklch(20% .02 60 / .12);--r:8px;--rp:10px;--t:160ms;
  --nav-w:232px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,sans-serif;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
a{color:var(--accent);text-decoration:none}
h2{font-size:24px;font-weight:600;letter-spacing:-.01em;line-height:1.2;margin:0}
h3{font-size:17px;font-weight:600;margin:0 0 10px;display:flex;align-items:center;gap:10px}
.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:13px}
.mono{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:13px;color:var(--muted)}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* controls */
button,a.btn,.actions input,.actions select{font:inherit;font-size:15px;font-weight:500;height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;border-radius:var(--r);border:1px solid var(--hair2);background:var(--surface);color:var(--ink);cursor:pointer;white-space:nowrap;line-height:1;transition:background var(--t),border-color var(--t),color var(--t)}
button:hover,a.btn:hover{background:var(--surface2)}
button:active:not(:disabled){background:var(--bg)}
button.primary,a.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button.primary:hover,a.btn.primary:hover{background:var(--accent-h);border-color:var(--accent-h)}
button.ghost{border-color:transparent;background:transparent;color:var(--ink2)}
button.ghost:hover{background:var(--surface2);color:var(--ink)}
button:disabled{opacity:.45;cursor:not-allowed}
button.sm{height:34px;padding:0 11px;font-size:14px}
button:focus-visible,a.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.nav button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ico{flex:none}
.cnt{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:6px;background:oklch(20% .01 60 / .08);font-size:12px;font-weight:600}
button.primary .cnt{background:oklch(100% 0 0 / .22)}
input,select,textarea{font:inherit;font-size:15px;height:42px;padding:0 12px;border:1px solid var(--hair2);border-radius:var(--r);background:var(--surface);color:var(--ink);transition:border-color var(--t),box-shadow var(--t)}
select{appearance:none;-webkit-appearance:none;padding-right:38px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236f6e6a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 12px center;cursor:pointer}
select:hover{border-color:oklch(20% .01 60 / .28)}
.actions select{height:40px;background-color:var(--surface);max-width:100%;min-width:0;text-overflow:ellipsis}
.field{margin-top:14px}.field label{display:block;font-size:13px;color:var(--muted);font-weight:500;margin-bottom:6px}.field .hint{font-size:12.5px;color:var(--faint);margin-top:5px}
.fs{margin-top:20px;padding-top:14px;border-top:1px solid var(--hair)}.fs:first-child{margin-top:0;padding-top:0;border:0}
.fs>h4{margin:0 0 2px;font-size:13px;font-weight:600;color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}
.danger{color:var(--accent);border-color:transparent;background:transparent}.danger:hover{background:var(--accent-soft)}
.suggest{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;align-items:center}
.suggest .chip{height:32px;padding:0 10px;font-size:13.5px;border-radius:6px;border:1px solid var(--hair2);background:var(--surface)}
.suggest .chip.top{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.jev{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}
textarea{height:auto;padding:9px 12px;width:100%;resize:vertical;line-height:1.45}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}
label.f{display:block;font-size:13px;color:var(--muted);font-weight:500;margin:14px 0 6px}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.g2>*{min-width:0}.field select{width:100%;max-width:100%;min-width:0;text-overflow:ellipsis}
.g3{display:grid;grid-template-columns:1fr 2fr 2fr;gap:12px}.g3 select,.g3 input{width:100%;min-width:0}
.kv2{display:grid;grid-template-columns:180px 1fr;gap:8px 12px;align-items:center;font-size:14px}.kv2 label{color:var(--muted)}
.modal select,.modal input{width:100%}

/* shell */
.shell{display:grid;grid-template-columns:var(--nav-w) 1fr;min-height:100dvh}
.side-nav{position:sticky;top:0;height:100dvh;background:var(--sidebar);border-right:1px solid var(--hair);display:flex;flex-direction:column;padding:18px 12px 14px}
.brand{display:flex;align-items:center;gap:10px;padding:2px 8px 18px}
.brand img{height:22px;filter:invert(1) brightness(.2)}
.brand-name{font-weight:600;font-size:14px;line-height:1.2}.brand-sub{font-size:12px;color:var(--muted)}
.nav{display:flex;flex-direction:column;gap:2px}
.nav button,.nav-foot button{height:38px;justify-content:flex-start;border:0;background:transparent;color:var(--ink2);font-weight:500;padding:0 10px;border-radius:var(--r);width:100%}
.nav button:hover,.nav-foot button:hover{background:oklch(20% .01 60 / .06);color:var(--ink)}
.nav button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px oklch(20% .02 60 / .08);font-weight:600}
.nav button .badge{margin-left:auto;background:var(--accent);color:#fff;font-size:11.5px;font-weight:600;min-width:20px;height:20px;padding:0 6px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center}
.nav-foot{margin-top:auto;display:flex;flex-direction:column;gap:2px;padding-top:12px;border-top:1px solid var(--hair)}
.nav-foot .me{padding:8px 10px 10px;line-height:1.25}.nav-foot .me b{display:block;font-weight:600;font-size:14px}.nav-foot .me span{font-size:12.5px;color:var(--muted)}
.content{min-width:0}
.mobile-bar{display:none}
.bottom-nav{display:none}
.wrap{max-width:1240px;margin:0 auto;padding:28px 32px 80px}
.login-mode .side-nav,.login-mode .bottom-nav{display:none}
.login-mode .shell{grid-template-columns:1fr}
.banner{display:none!important}

/* page */
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.lead{color:var(--muted);margin:6px 0 0;max-width:72ch}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.panel{background:var(--surface);border:1px solid var(--hair);border-radius:var(--rp);overflow:hidden}
.side{padding:18px 20px}
.strip{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 16px}
.stat{height:36px;padding:0 12px;border-radius:var(--r);border:1px solid var(--hair);background:var(--surface);font-size:14px;color:var(--muted);display:inline-flex;gap:8px;align-items:center;transition:background var(--t),border-color var(--t)}
.stat b{color:var(--ink);font-weight:600}
.stat[data-act]{cursor:pointer}.stat[data-act]:hover{border-color:var(--hair2)}
.stat.on{background:var(--ink);color:oklch(85% 0 0);border-color:var(--ink)}.stat.on b{color:#fff}
.stat.bad b{color:var(--accent)}.stat.warn b{color:var(--warn)}.stat.good b{color:var(--ok)}
.tag{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:600;background:oklch(20% .01 60 / .07);color:var(--ink2);white-space:nowrap}
.tag.red{background:var(--accent-soft);color:var(--accent)}.tag.green{background:var(--ok-soft);color:var(--ok)}.tag.amber{background:var(--warn-soft);color:var(--warn)}.tag.blue{background:var(--info-soft);color:var(--info)}.tag.ink{background:var(--ink);color:#fff}
.progress{height:4px;background:oklch(20% .01 60 / .08);border-radius:2px;overflow:hidden;margin:8px 0 16px}
.progress i{display:block;height:100%;background:var(--accent);transition:width .3s}
.empty-state{display:flex;flex-direction:column;align-items:center;gap:6px;padding:44px 16px;color:var(--muted);text-align:center}
.empty-state .ico{color:var(--faint);margin-bottom:6px}.empty-state b{color:var(--ink);font-size:15px;font-weight:600}
.empty{padding:32px;text-align:center;color:var(--muted)}
button.back{padding:0 8px 0 4px;margin:0 0 6px -8px}

/* home inbox */
.inbox{background:var(--surface);border:1px solid var(--hair);border-radius:var(--rp);overflow:hidden}
.inbox .row{display:grid;grid-template-columns:40px 1fr auto;gap:14px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--hair);cursor:pointer;transition:background var(--t)}
.inbox .row:last-child{border-bottom:0}
.inbox .row:hover{background:var(--surface2)}
.inbox .row .ic{width:40px;height:40px;border-radius:var(--r);display:grid;place-items:center;background:var(--surface2);color:var(--ink2)}
.inbox .row.urgent .ic{background:var(--accent-soft);color:var(--accent)}
.inbox .row b{font-weight:600;display:block}
.inbox .row .sub{color:var(--muted);font-size:14px;margin-top:1px}
.inbox .row .go{color:var(--faint)}
.inbox .sect{padding:10px 18px;font-size:13px;font-weight:500;color:var(--muted);background:var(--surface2);border-bottom:1px solid var(--hair)}
.quiet{display:flex;gap:18px;flex-wrap:wrap;margin-top:22px;color:var(--muted);font-size:14px}
.quiet a{color:var(--ink2);font-weight:500}

/* tables */
table{width:100%;border-collapse:separate;border-spacing:0;font-size:14.5px}
th{text-align:left;font-size:13px;color:var(--muted);font-weight:500;padding:11px 14px;border-bottom:1px solid var(--hair);background:var(--surface);position:sticky;top:0;z-index:2}
td{padding:11px 14px;border-bottom:1px solid var(--hair);vertical-align:middle}
tbody tr:last-child td{border-bottom:0}
tr.click{cursor:pointer}tr.click:hover td{background:var(--surface2)}
td.num,th.num{text-align:right}
table.compact td,table.compact th{padding:7px 10px;font-size:13.5px}
.side table.compact td,.side table.compact th{padding:6px 6px;font-size:13px}
.side table.compact .tag{height:20px;padding:0 6px;font-size:11.5px}

/* orders */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;align-content:start}
.card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--rp);padding:14px 16px;cursor:pointer;display:flex;flex-direction:column;gap:6px;transition:border-color var(--t),background var(--t)}
.card:hover{border-color:var(--hair2)}
.card.sel{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}
.card .id{display:flex;justify-content:space-between;align-items:center;gap:8px}
.card .ttl{font-weight:600;line-height:1.35}
.card .meta{display:flex;gap:12px;font-size:13.5px;color:var(--muted);flex-wrap:wrap}.card .meta b{color:var(--ink);font-weight:600}
.grid2{display:grid;grid-template-columns:1fr 372px;gap:16px;align-items:start}
.pipe{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0 14px}
.pipe span{font-size:12px;font-weight:500;padding:3px 9px;border-radius:6px;background:oklch(20% .01 60 / .06);color:var(--muted)}
.pipe span.on{background:var(--ink);color:#fff}.pipe span.done{background:var(--ok-soft);color:var(--ok)}
.kv{display:grid;grid-template-columns:130px 1fr;gap:7px 12px;font-size:14.5px;margin-bottom:14px}
.kv span:nth-child(odd){color:var(--muted)}

/* warehouse */
.line.ok td{background:oklch(98% .02 150)}.line.qty td,.line.name td{background:oklch(98% .015 25)}
.chk{display:flex;gap:6px;flex-wrap:wrap}
.chk button{height:36px;padding:0 12px;font-size:14px}
.chk button.on-ok{background:var(--ok);border-color:var(--ok);color:#fff}
.chk button.on-qty,.chk button.on-name{background:var(--accent);border-color:var(--accent);color:#fff}
.fix{font-size:13.5px;color:var(--accent);font-weight:500;margin-top:2px}
.inl{display:inline-flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.inl input{height:36px;padding:0 10px;width:100px}.inl input.wide{width:280px}
.seg{display:inline-flex;border:1px solid var(--hair2);border-radius:var(--r);overflow:hidden;height:40px}
.seg button{border:0;border-radius:0;height:100%;padding:0 13px;color:var(--muted);border-right:1px solid var(--hair)}
.seg button:last-child{border-right:0}
.seg button.on{background:var(--ink);color:#fff}
.doc{padding:26px 30px;font-size:14px}
.doc h3{font-size:18px}
.doc .hdr{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.doc table td,.doc table th{padding:7px 9px}
.doc .sig{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px;margin-top:26px;font-size:13px}
.doc .sig div{border-top:1px solid var(--ink);padding-top:8px}
.scanbox{position:relative;background:#000;border-radius:var(--rp);overflow:hidden;aspect-ratio:4/3;margin-top:12px}
.scanbox video{width:100%;height:100%;object-fit:cover}
.scanline{position:absolute;left:8%;right:8%;top:50%;height:2px;background:var(--accent)}
.scanout{margin-top:10px;padding:12px 14px;border-radius:var(--r);background:var(--surface2);border:1px solid var(--hair);min-height:46px}

/* timesheet */
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px;padding:10px 12px;background:var(--surface);border:1px solid var(--hair);border-radius:var(--rp)}
.steps{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.steps span{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--faint);padding:5px 12px 5px 6px;border-radius:var(--r)}
.steps span i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:600;background:oklch(20% .01 60 / .08);color:var(--muted)}
.steps span.on{color:var(--ink);background:var(--surface2)}.steps span.on i{background:var(--accent);color:#fff}
.steps span.done{color:var(--ok)}.steps span.done i{background:var(--ok);color:#fff}
.ts{overflow:auto}
.ts table.grid{font-size:14px}
.ts table.grid th{padding:8px 4px;font-size:13px;font-weight:600;color:var(--ink2);text-align:center}
.ts table.grid th .small{font-size:11.5px;color:var(--faint);font-weight:500;margin-top:1px}
.ts table.grid th.nm,.ts table.grid td.nm{position:sticky;left:0;z-index:3;background:var(--surface);text-align:left;min-width:230px;max-width:250px;padding:8px 14px;border-right:1px solid var(--hair)}
.ts table.grid th.nm{z-index:4}
.ts table.grid td.nm b{font-size:14px;font-weight:600}
.ts table.grid td.nm .small{font-size:12px;line-height:1.25;color:var(--muted)}
.ts table.grid td.day{text-align:center;padding:5px 3px;min-width:46px;height:54px;cursor:pointer;border-right:1px solid oklch(20% .01 60 / .04)}
.ts table.grid td.day b{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:28px;padding:0 6px;border-radius:6px;font-size:14px;font-weight:600;background:var(--surface2);color:var(--ink);transition:box-shadow var(--t)}
.ts table.grid td.day:hover b{box-shadow:0 0 0 2px var(--accent-ring)}
.ts table.grid td.day .t{display:block;font-size:10.5px;color:var(--faint);white-space:nowrap;margin-top:2px}
.ts table.grid td.day.late .t{color:var(--accent);font-weight:600}
.ts table.grid td.num{text-align:center;min-width:48px;font-weight:600}
.ts table.grid th.num{text-align:center;min-width:48px}
.ts th.c-off{background:var(--surface2)!important;color:var(--muted)}
td.c-off{background:var(--surface2)}td.c-off b{background:transparent!important;color:var(--faint)!important;font-weight:500!important}
td.c-empty{background:oklch(98.5% .012 25)}td.c-empty b{background:transparent!important;color:oklch(75% .06 25)!important}td.c-empty b::after{content:'–';font-weight:400}
td.c-vac b{background:var(--info-soft)!important;color:var(--info)!important}
td.c-sick b{background:var(--warn-soft)!important;color:var(--warn)!important}
td.c-trip b{background:var(--viol-soft)!important;color:var(--viol)!important}
td.c-bad b{background:var(--accent-soft)!important;color:var(--accent)!important}
td.c-or b,td.c-code b{background:oklch(20% .01 60 / .08)!important;color:var(--ink2)!important}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:12px 0 0}
.legend span{display:inline-flex;align-items:center}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px}
.legend i.c-off{background:oklch(92% .004 80)}.legend i.c-empty{background:oklch(90% .05 25)}.legend i.c-vac{background:oklch(88% .06 245)}.legend i.c-sick{background:oklch(90% .09 80)}.legend i.c-trip{background:oklch(88% .07 290)}.legend i.c-bad{background:oklch(88% .08 25)}
.codes{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:12px}
.codes button{justify-content:flex-start}
.codes button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.passes{font-size:13px;display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.passes span{background:var(--surface2);border-radius:6px;padding:3px 8px;border:1px solid var(--hair)}
.passes span.in{color:var(--ok)}.passes span.out{color:var(--accent)}
.sugg:not(:empty){border:1px solid var(--hair2);border-top:0;border-radius:0 0 var(--r) var(--r);margin-top:-4px;box-shadow:var(--shadow);overflow:hidden;background:var(--surface)}
.sugg .sg{padding:10px 12px;cursor:pointer;display:flex;flex-direction:column;gap:2px;border-bottom:1px solid var(--hair)}
.sugg .sg:last-child{border-bottom:0}.sugg .sg span{font-size:13px;color:var(--muted)}.sugg .sg:hover{background:var(--surface2)}

/* modal, toasts, misc */
.ov{position:fixed;inset:0;background:oklch(20% .01 60 / .4);display:none;place-items:center;padding:18px;z-index:40;overflow:auto}
.ov.open{display:grid}
.modal{background:var(--surface);border-radius:12px;padding:24px;width:100%;max-width:540px;box-shadow:var(--shadow);max-height:calc(100dvh - 36px);overflow:auto}
.modal h3{font-size:19px;margin-bottom:4px}
.modal .btns{display:flex;gap:8px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}
#toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:50;pointer-events:none;width:min(520px,calc(100% - 32px))}
.toast{background:var(--ink);color:#fff;padding:12px 16px;border-radius:var(--r);font-size:14.5px;font-weight:500;box-shadow:var(--shadow);opacity:0;transform:translateY(8px);transition:opacity var(--t),transform var(--t);text-align:center}
.toast.show{opacity:1;transform:none}
.toast.ok{background:var(--ok)}.toast.err{background:var(--accent)}
details{border:1px solid var(--hair);border-radius:var(--r);padding:10px 14px;margin-top:8px}
summary{cursor:pointer;font-weight:600;padding:4px 0}
.steps-l{margin:6px 0 4px;padding-left:20px;font-size:14px}.steps-l li{margin:6px 0}
.audit ul{list-style:none;margin:0;padding:6px 18px}
.audit li{padding:9px 0;border-bottom:1px solid var(--hair);font-size:14px;display:grid;grid-template-columns:150px 190px 1fr;gap:12px}
.audit li:last-child{border:0}
.login{max-width:400px;margin:10vh auto 40px;padding:30px 30px 26px;background:var(--surface);border:1px solid var(--hair);border-radius:12px}
.login h2{margin-bottom:6px}
.login select,.login input{width:100%;height:46px;font-size:16px}
.login .btns{margin-top:18px}.login .btns button{width:100%;height:46px;font-size:16px}
@media print{.side-nav,.bottom-nav,.mobile-bar,.head .actions,.strip,.toolbar,#toasts,.legend{display:none!important}.shell{display:block}.wrap{padding:0}.panel{border:0}}

/* tablet & phone */
@media (max-width:1023px){
  .shell{grid-template-columns:1fr}
  .side-nav{display:none}
  .mobile-bar{display:flex;align-items:center;gap:10px;height:52px;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--hair);position:sticky;top:0;z-index:20}
  .mobile-bar img{height:20px;filter:invert(1) brightness(.2)}.mobile-bar #mbar-title{font-weight:600;font-size:15px}.mobile-bar .spacer{flex:1}.mobile-bar #mbar-user{font-size:13px;color:var(--muted)}
  .bottom-nav{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:fixed;left:0;right:0;bottom:0;height:calc(58px + env(safe-area-inset-bottom));padding:0 4px env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--hair);z-index:20}
  .bottom-nav button{height:58px;border:0;background:transparent;border-radius:0;flex-direction:column;gap:3px;font-size:11px;font-weight:500;color:var(--muted);padding:0}
  .bottom-nav button.on{color:var(--accent)}
  .bottom-nav button .badge{position:absolute;margin:-30px 0 0 24px;background:var(--accent);color:#fff;font-size:10px;min-width:16px;height:16px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}
  .wrap{padding:18px 16px calc(80px + env(safe-area-inset-bottom))}
  .grid2{grid-template-columns:1fr}
  .login-mode .mobile-bar{display:flex}
}
@media (max-width:760px){
  .ov{place-items:end center;padding:0}
  .modal{max-width:none;border-radius:14px 14px 0 0;max-height:92dvh;padding:18px 18px calc(18px + env(safe-area-inset-bottom))}
  .modal::before{content:"";display:block;width:36px;height:4px;border-radius:2px;background:var(--hair2);margin:0 auto 12px}
  .modal .btns{position:sticky;bottom:0;background:var(--surface);padding-top:10px;margin-top:14px}
  .modal .btns button,.modal .btns a.btn{flex:1 1 40%;height:46px}
  h2{font-size:21px}
  .head{flex-direction:column;align-items:stretch;gap:12px}
  .head .actions{width:100%}.head .actions>*{flex:1 1 46%}
  .strip .stat{flex:1 1 44%;height:40px}
  .toolbar{padding:10px}
  .g2,.kv2{grid-template-columns:1fr}
  .ts table.grid th.nm,.ts table.grid td.nm{min-width:150px;max-width:170px;padding:6px 10px}
  .ts table.grid td.day{min-width:42px}
  .codes{grid-template-columns:1fr}
  .login{margin:16px 0 0;padding:24px 18px 20px;border:0;background:transparent}
  .audit li{grid-template-columns:1fr;gap:2px}
  .side{padding:16px}
  .inl input.wide{width:100%}
  th{position:static}
  .inbox .row{padding:12px 14px;grid-template-columns:36px 1fr auto}
  table.depts thead{display:none}
  table.depts,table.depts tbody{display:block}
  table.depts tr{display:block;padding:12px 14px;border-bottom:1px solid var(--hair)}
  table.depts td{display:block;border:0;padding:0 0 8px}
  table.depts td::before{content:attr(data-l);display:block;font-size:12.5px;color:var(--muted);margin-bottom:4px}
  table.depts td.num{text-align:left;font-size:13px;color:var(--muted)}table.depts td.num::before{content:'Сотрудников: ';display:inline}
  table.lines thead{display:none}
  table.lines,table.lines tbody{display:block}
  table.lines tr{display:grid;grid-template-columns:30px 1fr 1fr;gap:4px 8px;padding:12px;border-bottom:1px solid var(--hair)}
  table.lines tr:last-child{border-bottom:0}
  table.lines td{display:block;border:0;padding:0;background:transparent!important}
  table.lines td:nth-child(1){grid-column:1;grid-row:1}table.lines td:nth-child(2){grid-column:2/4;grid-row:1}
  table.lines td:nth-child(3){grid-column:2;grid-row:2}table.lines td:nth-child(4){grid-column:3;grid-row:2}
  table.lines td:nth-child(5){grid-column:2/4;grid-row:3;margin-top:6px}table.lines td:nth-child(6){grid-column:2/4;grid-row:4;margin-top:6px}
  table.lines td.num{text-align:left}table.lines td.num::before{content:attr(data-l) ": ";color:var(--muted);font-size:13px}
  table.lines tr.ok{background:oklch(98% .02 150)}table.lines tr.qty,table.lines tr.name{background:oklch(98% .015 25)}
  .chk button{flex:1 1 30%;padding:0 8px;font-size:13.5px;height:42px}
}

/* v4: подразделы, проверки, документы */
.subnav{display:flex;gap:2px;margin:-6px 0 20px;border-bottom:1px solid var(--hair);overflow-x:auto;scrollbar-width:none}
.subnav button{height:40px;border:0;border-radius:0;background:transparent;color:var(--muted);padding:0 14px;border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500}
.subnav button:hover{background:transparent;color:var(--ink)}
.subnav button.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.checks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.checks li{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border-radius:var(--r);font-size:14px;line-height:1.35}
.checks li .ico{margin-top:2px}
.checks li.err{background:var(--accent-soft);color:var(--accent)}
.checks li.warn{background:var(--warn-soft);color:var(--warn)}
.checks li.info{background:var(--surface2);color:var(--ink2);padding:6px 8px;font-size:13px}
.checks-ok{display:flex;gap:8px;align-items:center;padding:8px 10px;border-radius:var(--r);background:var(--ok-soft);color:var(--ok);font-size:14px}
.docs{list-style:none;margin:0;padding:0}
.docs li{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--hair)}
.docs li:last-child{border:0}
.actions input[type=date]{height:40px}

.grid-detail{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}
.grid-detail .cards{grid-template-columns:1fr}
.grid-detail .card .meta span:nth-child(n+3){display:none}
@media (max-width:1023px){.grid-detail{grid-template-columns:1fr}.grid-detail .cards{display:none}}
#onec-res.loading{opacity:.55;transition:opacity .15s}
@media (max-width: 640px) {
  #onec-res thead { display: none; }
  #onec-res tr { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; padding: 10px 12px; border-bottom: 1px solid var(--hair); }
  #onec-res td { border: 0; padding: 0; }
  #onec-res td:nth-child(3) { grid-column: 1 / -1; }
}
/* 1С: заказы покупателей, сверка сотрудников */
#onec-ord.loading{opacity:.55;transition:opacity .15s}
table.oord tr.sel td{background:var(--accent-soft)}
.oord-wrap table.oord th:nth-child(n+3),.oord-wrap table.oord td:nth-child(n+3){display:none}
.onec-link{margin-top:6px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
@media (max-width:1023px){.oord-wrap>#onec-ord{display:none}}
@media (max-width:640px){
  .hide-sm{display:none}
  table.oord thead{display:none}
  table.oord tr{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:10px 12px;border-bottom:1px solid var(--hair)}
  table.oord td{border:0;padding:0}
  table.oord td:nth-child(2){grid-column:1/-1;grid-row:2}
  table.oord td:nth-child(3){grid-column:2;grid-row:1}
  table.oord td:nth-child(4),table.oord td:nth-child(5){display:none}
  table.oord td:nth-child(6){grid-column:1/-1;grid-row:3}
  #staff table td .small{overflow-wrap:anywhere}
}
.stat.on.warn b,.stat.on.bad b,.stat.on.good b{color:#fff}

/* документы 1С: тело OData и список недостающих */
pre.json{margin:0 0 12px;padding:12px 14px;background:var(--surface2);border:1px solid var(--hair);border-radius:var(--r);font:12.5px/1.55 ui-monospace,"SF Mono",Menlo,Consolas,monospace;color:var(--ink2);max-height:380px;overflow:auto;white-space:pre;max-width:100%}
.miss{padding:12px 16px;margin-bottom:12px;border:1px solid var(--hair);border-left:3px solid var(--warn);border-radius:var(--r);background:var(--warn-soft);font-size:14px}.miss.bad{border-left-color:var(--accent);background:var(--accent-soft)}
.miss ul{margin:6px 0 0;padding-left:20px}.miss li{margin:2px 0}
#out-box,#docs-cfg{min-width:0}#out-box .panel table td,#out-box .panel table th{vertical-align:top}
@media (max-width:640px){#docs-cfg .g2,.g3{grid-template-columns:1fr}#out-box .head .actions{width:100%}}

/* кадровые перемещения: назначения в карточке сотрудника, ячейки вне отдела */
.mv-btns{display:flex;gap:8px;margin:8px 0 0;flex-wrap:wrap}
.mv-form{margin-top:12px;padding-top:12px;border-top:1px solid var(--hair)}
.mv-form h5{margin:0;font-size:15px;font-weight:600}
.mv-act{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.hist{margin-top:10px}
.hist .hrow{display:grid;grid-template-columns:92px 1fr;gap:10px;padding:9px 0;border-top:1px solid var(--hair);font-size:14px;line-height:1.35}
.hist .hrow:first-child{border-top:0}
td.c-na{background:var(--surface2)}td.c-na b{background:transparent!important}
.ts table.grid td.day.c-lock{cursor:default}.ts table.grid td.day.c-lock:hover b{box-shadow:none}
@media (max-width:640px){.hist .hrow{grid-template-columns:84px 1fr}.mv-act button{flex:1}}
.grid2>*{min-width:0}
/* уведомления: окно профиля и статус канала для директора */
.nt-ch{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;padding:12px 14px;border:1px solid var(--hair);border-radius:var(--rp);background:var(--surface2)}
.nt-ch .tag{margin-bottom:6px}.nt-ch .small{max-width:56ch}
.nt-act{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.nt-h{margin:18px 0 2px;font-size:13px;font-weight:500;color:var(--muted)}
.nt-row{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--hair);cursor:pointer}
.nt-row:first-child{border-top:0}
.nt-row>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.modal .nt-row input{width:20px;height:20px;flex:none;margin:2px 0 0;padding:0;accent-color:var(--accent)}
.nt-head{padding:16px;margin-bottom:16px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}.nt-head>div{flex:1 1 260px;min-width:0}
@media (max-width:640px){.nt-ch{flex-direction:column}.nt-act{justify-content:stretch;width:100%}.nt-act>*{flex:1 1 auto}}
