:root{color-scheme:dark;--bg:#151625;--surface:#202231;--surface2:#292b3b;--line:#37394d;--text:#f4f3fa;--muted:#9699ac;--accent:#9c88ff;--critical:#ef7b76;--soon:#d9a94d;--ok:#75d1ae;--nav:76px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}html[data-theme=light]{color-scheme:light;--bg:#eef0fa;--surface:#fafbff;--surface2:#eef0f8;--line:#d8d9e4;--text:#282936;--muted:#777b91;--accent:#725fc9}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);min-height:100vh;transition:background .25s,color .25s}button,input,select,textarea{font:inherit}.icon{display:block;flex:none}.shell{max-width:520px;margin:auto;min-height:100vh;padding:calc(22px + env(safe-area-inset-top)) 18px calc(var(--nav) + 24px)}header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:22px}h1{font-size:28px;line-height:1.14;margin:4px 0 0;letter-spacing:-.03em}h2{font-size:21px;margin:0}h3{font-size:16px;margin:0}.eyebrow,.section-label{color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.14em}.actions{display:flex;gap:8px}.icon-btn,.avatar{position:relative;width:42px;height:42px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);display:grid;place-items:center;transition:.2s}.icon-btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.bell i{position:absolute;right:-4px;top:-5px;background:var(--critical);color:white;font-size:9px;font-style:normal;min-width:17px;height:17px;padding:2px;border-radius:9px}.avatar{border-radius:50%;background:#353050;color:#c7baff}.avatar.small{width:32px;height:32px;font-size:11px}.sync{font-size:12px;color:var(--muted);border:1px solid var(--line);display:inline-flex;padding:7px 11px;border-radius:999px;margin:10px 0 18px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px}.stat{background:var(--surface);padding:16px;border-radius:14px;transition:transform .2s,border-color .2s;border:1px solid transparent}.stat:hover{transform:translateY(-2px);border-color:var(--line)}.stat strong{display:block;font-size:24px;font-weight:500;margin-bottom:5px}.stat span{font-size:12px;color:var(--muted)}.stat.critical strong{color:var(--critical)}.list{display:grid;gap:10px}.card{background:var(--surface);border:1px solid transparent;border-radius:14px;padding:15px;text-align:left;color:inherit;width:100%;transition:transform .18s,border-color .18s,opacity .18s}.card:is(button):hover{transform:translateY(-2px);border-color:var(--line)}.card:active{transform:scale(.99)}.card-head,.row{display:flex;justify-content:space-between;align-items:center;gap:10px}.card small,.muted{color:var(--muted)}.badge{font-size:10px;padding:5px 8px;border-radius:7px;border:1px solid currentColor;white-space:nowrap}.badge.critical{color:var(--critical)}.badge.soon{color:var(--soon)}.badge.ok{color:var(--ok)}.bar{height:4px;border-radius:5px;background:var(--line);margin:14px 0 8px;overflow:hidden}.bar i{display:block;height:100%;background:var(--accent);animation:grow .55s ease both;transform-origin:left}.critical .bar i,.bar i.critical{background:var(--critical)}.soon .bar i,.bar i.soon{background:var(--soon)}.ok .bar i,.bar i.ok{background:var(--ok)}nav{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);width:min(520px,100%);height:calc(var(--nav) + env(safe-area-inset-bottom));padding:10px 14px env(safe-area-inset-bottom);display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(16px);border-top:1px solid var(--line)}nav button{background:none;border:0;color:var(--muted);font-size:11px;display:grid;gap:5px;place-items:center;transition:.2s}nav button b{font-size:20px;font-weight:400}nav button.active{color:var(--accent)}nav button.active .icon{animation:nav-pop .25s ease}.back{border:0;background:none;color:var(--accent);padding:0;margin-bottom:16px}.machine-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.machine-metrics .stat{padding:13px}.machine-metrics .stat strong{font-size:19px}.product{margin-top:10px}.product .row{font-size:14px}.product .row strong,.accent{color:var(--accent)}.footer-actions{position:sticky;bottom:calc(var(--nav) + 6px);background:linear-gradient(transparent,var(--bg) 26%);padding-top:26px;display:grid;grid-template-columns:1fr 1.3fr;gap:9px}.btn{min-height:48px;border-radius:11px;border:1px solid var(--line);background:transparent;color:var(--text);padding:10px 14px;transition:.18s;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.primary{border-color:var(--accent);color:#c3b8ff;background:#9c88ff0a}.btn.compact{min-height:36px;padding:7px 11px;font-size:12px}.btn:disabled{opacity:.38}.search,input,select,textarea{background:var(--surface);border:1px solid var(--line);color:var(--text);padding:13px 14px;border-radius:11px}.search{width:100%;margin:0 0 14px}.filters{display:flex;gap:8px;margin-bottom:14px}.filters button{padding:8px 13px;border:1px solid var(--line);border-radius:9px;background:none;color:var(--muted)}.filters button.active{border-color:var(--accent);color:var(--accent);background:#9c88ff12}.qty{display:flex;align-items:center;gap:4px}.qty button{width:36px;height:36px;border:1px solid var(--line);color:var(--text);background:var(--surface2);border-radius:9px}.qty output{min-width:34px;text-align:center}.notice{border-left:3px solid var(--accent)}.notice.critical{border-color:var(--critical)}.notice.soon{border-color:var(--soon)}.notice.read{opacity:.58}.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 45% 25%,#282847 0,transparent 38%)}.login-box{width:min(390px,100%)}.logo{width:52px;height:52px;margin-bottom:30px}.login input{width:100%;margin:7px 0 12px}.login .btn{width:100%;margin-top:8px}.field-label{font-size:12px;color:var(--muted)}.check{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px}.check input{width:auto;margin:0}.pin-dots{display:flex;gap:17px;justify-content:center;margin:32px}.pin-dots i{width:10px;height:10px;border:1px solid var(--line);border-radius:50%}.pin-dots i.filled{background:var(--accent);border-color:var(--accent);animation:nav-pop .2s}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.pin-pad button{height:56px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:12px;font-size:18px}.pin-box .back{width:100%;margin-top:24px}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:3px;margin-top:12px}.segmented button{border:0;background:none;color:var(--muted);padding:9px;border-radius:7px}.segmented button.active{background:#393652;color:#c2b6ff}.role-segmented{grid-auto-flow:row!important;grid-template-columns:repeat(2,1fr)!important;gap:6px}.menu-row{display:grid;grid-template-columns:24px 1fr auto 18px;align-items:center;gap:10px}.menu-row small{text-align:right}.toggle{width:40px;height:23px;border-radius:14px;background:var(--line);display:inline-block;position:relative;flex:none}.toggle:after{content:"";position:absolute;width:17px;height:17px;left:3px;top:3px;border-radius:50%;background:#a6a9b7;transition:.2s}.toggle.on{background:#6358a5}.toggle.on:after{left:20px;background:#bcaeff}#toast{position:fixed;z-index:30;left:50%;bottom:96px;transform:translate(-50%,20px);background:#333648;padding:11px 16px;border-radius:9px;opacity:0;transition:.2s;pointer-events:none;white-space:nowrap;box-shadow:0 8px 30px #0005}#toast.show{opacity:1;transform:translate(-50%,0)}.empty{text-align:center;color:var(--muted);padding:50px 20px}.loader{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;margin:20px auto;animation:spin .8s linear infinite}.scanner{border:1px solid var(--accent);border-radius:14px;min-height:210px;display:grid;place-items:center;color:var(--muted);text-align:center;padding:24px;background:#090a12;margin:18px 0}.admin{display:none}.page-enter{animation:page-in .28s ease both}@keyframes page-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes grow{from{transform:scaleX(0)}}@keyframes nav-pop{50%{transform:scale(1.2)}}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:900px){.mobile-only{display:none!important}.admin{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{padding:28px 18px;background:color-mix(in srgb,var(--surface) 82%,var(--bg));border-right:1px solid var(--line);display:flex;flex-direction:column}.sidebar .brand{font-size:17px;margin:0 8px 34px;display:flex;gap:10px;align-items:center}.sidebar .brand span{display:grid}.sidebar .brand small{color:var(--muted);font-size:9px;font-weight:400;margin-top:2px}.sidebar>button{border:0;background:none;color:var(--muted);padding:11px 12px;text-align:left;border-radius:8px;margin-bottom:4px;display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:6px;transition:.18s}.sidebar>button:hover{color:var(--text);background:#ffffff06}.sidebar>button.active{background:#35334e;color:#c4b9ff}.sidebar>button b{font-size:10px;background:var(--accent);color:white;padding:2px 5px;border-radius:8px}.admin-main{padding:28px 34px;width:100%;max-width:1500px}.admin-main>header{align-items:center}.admin-main>header h1{font-size:24px}.admin .stats{grid-template-columns:repeat(4,1fr)}.admin-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:14px}.admin-grid.warehouse-grid{grid-template-columns:minmax(600px,2fr) minmax(260px,.65fr)}.panel{background:var(--surface);border-radius:14px;padding:18px}.panel-title,.toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px}.panel-title>button:not(.btn){border:0;background:none;color:var(--accent)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:13px;border-bottom:1px solid var(--line);font-size:13px}.table th{color:var(--muted);font-weight:500;text-transform:uppercase;font-size:10px;letter-spacing:.08em}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:.15s}.table tbody tr:hover{background:#ffffff04}.table code{color:var(--muted)}.sidebar footer{margin-top:auto;color:var(--muted);font-size:12px;line-height:1.6}.mini-progress{display:inline-block;width:100px;height:4px;background:var(--line);border-radius:4px;vertical-align:middle;margin-right:8px;overflow:hidden}.mini-progress i{display:block;height:100%;background:var(--accent);animation:grow .5s}.mini-progress i.critical{background:var(--critical)}.mini-progress i.soon{background:var(--soon)}.mini-progress i.ok{background:var(--ok)}.admin-search{max-width:280px;margin-left:auto}.toolbar .filters{margin:0}.form-card{display:grid;gap:15px;align-content:start}.form-card label{font-size:12px;color:var(--muted);display:grid;gap:7px}.form-card input,.form-card select{width:100%}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.employee-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.employee-card .divider{height:1px;background:var(--line);margin:16px 0}.role-info{max-width:700px;margin-top:14px}.role-info p{color:var(--muted);font-size:13px}.notices-wide{display:grid;gap:10px;max-width:850px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:1000px}.status-line{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:12px}.status-line i{width:8px;height:8px;background:var(--soon);border-radius:50%;box-shadow:0 0 0 4px #d9a94d16}.status-line i.ok{background:var(--ok);box-shadow:0 0 0 4px #75d1ae16}.status-line i.critical{background:var(--critical);box-shadow:0 0 0 4px #ef7b7616}.roles-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.permission-grid{display:grid;gap:6px;max-height:280px;overflow-y:auto;padding-right:4px;margin-top:4px}.permission-grid .row{font-size:13px}.week-chart{display:flex;align-items:flex-end;gap:10px;height:120px;padding-top:10px}.week-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;height:100%}.week-bar{width:100%;max-width:28px;border-radius:6px 6px 0 0;background:var(--accent);min-height:2px;transition:height .3s ease}.week-col small{color:var(--muted);font-size:10px}}
@media(min-width:900px){body.force-mobile .mobile-only{display:block!important}body.force-mobile nav.mobile-only{display:grid!important}body.force-mobile .admin{display:none}body.force-mobile .shell{max-width:430px;box-shadow:0 0 0 1px var(--line)}}
.warning{border:1px solid var(--soon);color:var(--soon);background:#d9a94d0c;border-radius:11px;padding:12px;margin:16px 0;font-size:13px}.checklist{display:grid;grid-template-columns:34px 1fr auto;align-items:center}.checklist.checked{border-color:var(--accent);background:#9c88ff0d}.checkmark{width:28px;height:28px;border:1px solid var(--line);border-radius:8px;display:grid;place-items:center;color:var(--accent)}.checklist.checked .checkmark{border-color:var(--accent);background:#9c88ff17}.footer-actions.one{grid-template-columns:1fr}.summary-total{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 2px;margin:20px 0}.tiny{font-size:11px}.success-icon{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;color:var(--ok);border:1px solid var(--ok);margin:42px 0 18px;animation:success-pop .45s cubic-bezier(.2,1.8,.5,1)}.summary-card{display:grid;gap:14px;margin:25px 0}.success-actions{position:sticky;bottom:calc(var(--nav) + 14px);display:grid;gap:9px;margin-top:130px;background:linear-gradient(transparent,var(--bg) 18%);padding-top:24px}@keyframes success-pop{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}
.pre{margin:6px 0 0;padding:10px;border:1px solid var(--line);border-radius:8px;overflow:auto;max-height:260px;font:11px/1.45 ui-monospace,Consolas,monospace;white-space:pre-wrap;word-break:break-word}
.picker{display:grid;gap:8px}.picker input,.picker select{width:100%}
.spin-action{display:flex;gap:8px;align-items:center}
tr.dbg-error td{color:var(--critical,#e5484d)}tr.dbg-warn td:nth-child(2){color:var(--soon,#e0a800)}
details summary{cursor:pointer;color:var(--muted,#8a8f98);font-size:12px}
.table{width:100%}.panel .actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.admin-grid.warehouse-grid{grid-template-columns:minmax(0,2fr) minmax(320px,1fr)}.warehouse-grid>*{min-width:0}
.warehouse-grid .segmented,.warehouse-grid [data-wh-op]{flex-wrap:wrap}
@media(max-width:1250px){.admin-grid.warehouse-grid{grid-template-columns:minmax(0,1fr)}.settings-grid{grid-template-columns:minmax(0,1fr)}}
.picker input,.form-card .picker input{min-width:0}

/* Общие состояния загрузки и камера штрихкода. Камера открывается поверх текущего
   экрана, поэтому сотрудник всегда видит, что именно он сканирует. */
.btn.is-loading{color:transparent!important;position:relative;pointer-events:none}.btn.is-loading:after{content:"";position:absolute;width:17px;height:17px;left:calc(50% - 8.5px);top:calc(50% - 8.5px);border:2px solid currentColor;border-color:var(--accent) var(--accent) transparent transparent;border-radius:50%;animation:spin .7s linear infinite}
.login-status{display:flex;align-items:center;gap:8px;margin:12px 0;color:var(--accent);font-size:13px}.login-status:before{content:"";width:13px;height:13px;border:2px solid color-mix(in srgb,var(--accent) 35%,transparent);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;flex:none}
.boot{min-height:100vh;display:grid;place-items:center;padding:24px;text-align:center}.boot-card{width:min(420px,100%);padding:30px 22px;border:1px solid var(--line);border-radius:20px;background:color-mix(in srgb,var(--surface) 88%,transparent);box-shadow:0 20px 60px #0003}.boot-card h1{font-size:23px}.boot-card p{max-width:34ch;margin:10px auto;color:var(--muted);line-height:1.45}.boot-card small{display:block;color:var(--muted);font-size:12px;line-height:1.45}.boot-card .btn{margin-top:12px;width:100%}
body.scanner-open{overflow:hidden}.scanner-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:env(safe-area-inset-top) 14px env(safe-area-inset-bottom);background:rgba(5,8,12,.78);backdrop-filter:blur(10px);animation:scannerFade .18s ease both}.scanner-card{width:min(520px,100%);max-height:calc(100vh - 28px);overflow:auto;padding:16px;border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:0 24px 80px #0008}.scanner-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.scanner-head h2{font-size:20px;line-height:1.2;margin-top:4px}.scanner-stage{position:relative;overflow:hidden;min-height:250px;border-radius:16px;background:#080b10;border:1px solid var(--line);display:grid;place-items:center}.scanner-video{display:block;width:100%;height:min(58vh,360px);min-height:250px;object-fit:cover;background:#080b10}.scanner-frame{position:absolute;width:min(72vw,300px);height:min(31vw,118px);min-height:92px;border:2px solid var(--accent);border-radius:12px;box-shadow:0 0 0 999px #0003,0 0 24px color-mix(in srgb,var(--accent) 45%,transparent);pointer-events:none}.scanner-frame:before,.scanner-frame:after,.scanner-frame i:before,.scanner-frame i:after{content:"";position:absolute;width:22px;height:22px;border-color:#fff;border-style:solid}.scanner-frame:before{left:-3px;top:-3px;border-width:4px 0 0 4px;border-radius:10px 0 0}.scanner-frame:after{right:-3px;top:-3px;border-width:4px 4px 0 0;border-radius:0 10px 0 0}.scanner-frame i:before{left:-3px;bottom:-3px;border-width:0 0 4px 4px;border-radius:0 0 0 10px}.scanner-frame i:after{right:-3px;bottom:-3px;border-width:0 4px 4px 0;border-radius:0 0 10px 0}.scanner-state{position:absolute;bottom:12px;left:12px;right:12px;padding:8px 10px;border-radius:9px;background:#07090dcc;color:#fff;text-align:center;font-size:12px}.scanner-hint{margin:12px 2px;color:var(--muted);font-size:13px;line-height:1.4;text-align:center}.scanner-manual{margin:14px 0 10px;border-top:1px solid var(--line);padding-top:12px;color:var(--muted);font-size:13px}.scanner-manual summary{cursor:pointer}.scanner-manual form{display:flex;gap:8px;margin-top:10px}.scanner-manual input{min-width:0;flex:1;width:100%}.scanner-cancel{width:100%;margin-top:4px}.scanner-fallback .scanner-video{display:none}.scanner-fallback .scanner-stage{min-height:120px}.scanner-fallback .scanner-state{position:static;margin:18px;line-height:1.45}.scanner-modal .icon-btn{cursor:pointer;font-size:24px;line-height:1}.scanner-modal .btn{min-height:44px}@keyframes scannerFade{from{opacity:0}to{opacity:1}}
@media(max-width:520px){.scanner-modal{padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}.scanner-card{max-height:100vh;border-radius:20px 20px 0 0;padding:15px 14px}.scanner-video{height:52vh;min-height:230px}.scanner-stage{min-height:230px}.scanner-head h2{font-size:18px}}
@media(prefers-reduced-motion:reduce){.btn.is-loading:after,.login-status:before{animation:none}.scanner-modal{animation:none}}

#oqbar{position:fixed;left:0;right:0;bottom:0;z-index:60;background:#b45309;color:#fff;padding:8px 14px;font-size:13px;text-align:center}
.batches summary{cursor:pointer;list-style:none}.batches .mini td{padding:3px 8px;font-size:12px}
[hidden]{display:none!important}
.onboarding{overflow:hidden}.onboarding-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,320px);align-items:center;gap:24px}.onboarding-head h2{margin-bottom:5px}.onboarding-progress{height:8px;border-radius:99px;background:var(--line);overflow:hidden}.onboarding-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#b9aaff);transition:width .35s ease}.onboarding-note{margin:14px 0 16px}.onboarding-steps{display:grid;gap:6px}.onboarding-step{display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:48px;padding:7px 0;border-top:1px solid color-mix(in srgb,var(--line) 65%,transparent);font-size:14px}.onboarding-step:first-child{border-top:0}.step-mark{width:24px;height:24px;border:1px solid var(--soon);border-radius:50%;display:grid;place-items:center;color:var(--soon);font-size:13px}.onboarding-step.is-done .step-mark{border-color:var(--ok);color:var(--ok)}.onboarding-step.is-done{color:var(--muted)}.onboarding-step small{color:var(--ok);font-size:12px}.onboarding-step .btn{white-space:nowrap}
*:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 70%,white);outline-offset:2px}.panel:has(.table){overflow-x:auto}.table{min-width:620px}.table td,.table th{vertical-align:middle}.admin-main{min-width:0}.admin-grid,.settings-grid,.employee-grid,.roles-grid{min-width:0}.admin-grid>*{min-width:0}
@media(max-width:1250px) and (min-width:900px){.admin{grid-template-columns:188px 1fr}.sidebar{padding:22px 12px}.admin-main{padding:24px 22px}.sidebar>button{padding:10px 9px;font-size:13px}.admin-grid{grid-template-columns:minmax(0,1fr)}.admin .stats{gap:8px}.admin .stat{padding:13px}}
@media(max-width:899px){.shell{width:100%;max-width:680px;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));padding-top:calc(18px + env(safe-area-inset-top))}.admin{display:none!important}.mobile-only{display:grid}.onboarding-head{grid-template-columns:1fr;gap:12px}.onboarding-progress{max-width:none}.onboarding-step{grid-template-columns:26px minmax(0,1fr);padding:9px 0}.onboarding-step .btn,.onboarding-step small{grid-column:2;justify-self:start}.stats{gap:8px}.stat{padding:13px}.stat strong{font-size:21px}.machine-metrics{gap:6px}.panel{padding:15px}.toolbar{align-items:flex-start;flex-wrap:wrap}.toolbar>*{max-width:100%}.form-row{grid-template-columns:1fr}.filters{overflow-x:auto;padding-bottom:2px}.filters button{white-space:nowrap}.footer-actions,.success-actions{bottom:calc(var(--nav) + env(safe-area-inset-bottom) + 4px)} }
@media(max-width:520px){h1{font-size:25px}h2{font-size:19px}.shell{padding-left:14px;padding-right:14px}.stats{grid-template-columns:1fr 1fr}.stat span{font-size:11px}.card,.panel{border-radius:12px}.row{align-items:flex-start}.row>.badge{margin-left:auto}.onboarding-step{font-size:13px}.plan-grid{gap:7px}.plan-slot{padding:9px}.plan-slot strong{font-size:11px}.plan-slot-actions .btn{min-width:28px;padding:3px 6px}.admin-search{width:100%;max-width:none;margin-left:0}.table{font-size:12px}.table td,.table th{padding:10px 9px}}
@media(min-width:1500px){.admin-main{max-width:none;padding:32px 48px 56px}.admin-main>header{max-width:none}.admin .stats{gap:14px}.admin .stat{padding:20px}.admin .stat strong{font-size:28px}.admin-grid{grid-template-columns:minmax(0,1.15fr) minmax(480px,.85fr);gap:18px}.admin-grid.warehouse-grid{grid-template-columns:minmax(0,2.2fr) minmax(360px,.8fr)}.panel{padding:22px}.panel-title,.toolbar{margin-bottom:18px}.table th,.table td{padding:15px 14px;font-size:14px}.table th{font-size:11px}.onboarding{padding:26px}.onboarding-step{min-height:54px;font-size:15px}}
.machine-stage{display:grid;grid-template-columns:minmax(360px,1.1fr) minmax(180px,.45fr);gap:18px;align-items:center;margin:20px 0}.machine-cabinet{max-width:680px;margin:auto;width:100%;padding:14px;border:2px solid #4a4d66;border-radius:22px 22px 12px 12px;background:linear-gradient(145deg,#303346,#181a29);box-shadow:0 18px 36px #0004, inset 0 1px #ffffff18}.machine-header{display:grid;grid-template-columns:12px auto 1fr;align-items:center;gap:9px;padding:4px 8px 13px;color:#f7f5ff}.machine-header small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.machine-led{width:9px;height:9px;border-radius:50%;background:var(--ok);box-shadow:0 0 12px var(--ok)}.machine-window{display:grid;grid-template-columns:repeat(var(--plan-cols),minmax(58px,1fr));gap:8px;padding:12px;border:1px solid #111321;border-radius:12px;background:#10121d;min-height:170px}.machine-cell{min-height:76px;border:1px solid #45485e;border-radius:9px;background:linear-gradient(145deg,#282b3d,#1c1e2c);color:var(--text);display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;align-items:center;padding:8px;text-align:left;cursor:pointer;transition:.18s;box-shadow:inset 0 1px #ffffff0c}.machine-cell:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 16px #0004}.machine-cell span{font-size:11px;color:var(--accent);font-weight:700}.machine-cell b{grid-row:2;font-size:22px;font-weight:600}.machine-cell small{grid-row:2;align-self:end;color:var(--muted);font-size:11px}.machine-cell.is-empty{border-color:#6a4b46;background:linear-gradient(145deg,#39282b,#221d27)}.machine-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 5px 0;color:var(--muted);font-size:12px}.machine-empty{grid-column:1/-1;display:grid;place-items:center;color:var(--muted);min-height:120px}.machine-legend{display:grid;gap:12px;color:var(--muted);font-size:13px}.machine-legend>div{display:flex;align-items:center;gap:9px}.legend-dot{width:11px;height:11px;border-radius:50%;display:inline-block}.legend-dot.full{background:var(--ok)}.legend-dot.empty{background:var(--critical)}.legend-dot.uncounted{background:var(--soon)}
@media(max-width:899px){.machine-stage{grid-template-columns:1fr;gap:12px}.machine-legend{grid-template-columns:repeat(3,1fr);font-size:11px;gap:6px}.machine-window{gap:6px;padding:8px}.machine-cell{min-height:68px;padding:6px}.machine-cell b{font-size:18px}.machine-footer{font-size:11px}}
@media(min-width:1500px){body{font-size:15px}.sidebar{width:240px}.admin{grid-template-columns:240px 1fr}.machine-stage{grid-template-columns:minmax(520px,1.15fr) minmax(240px,.45fr)}.machine-cell{min-height:92px}.machine-cell b{font-size:25px}}
.planogram{margin-bottom:14px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--surface)),var(--surface))}.planogram .toolbar{align-items:flex-start}.plan-cols{display:flex!important;align-items:center;gap:6px;white-space:nowrap}.plan-cols select{width:auto!important}.plan-grid{display:grid;grid-template-columns:repeat(var(--plan-cols),minmax(110px,1fr));gap:10px;padding:14px;border:1px dashed var(--line);border-radius:12px;background:color-mix(in srgb,var(--bg) 55%,transparent);min-height:120px}.plan-slot{display:grid;gap:6px;min-height:128px;padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--surface);box-shadow:0 6px 16px #0002;cursor:grab;transition:.15s;overflow:hidden}.plan-slot:active{cursor:grabbing}.plan-slot.dragging{opacity:.35;transform:scale(.98)}.plan-slot.drop-target{border-color:var(--accent);box-shadow:0 0 0 3px #9c88ff33}.plan-slot strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-slot small{color:var(--muted);font-size:11px}.plan-slot-top{display:flex;justify-content:space-between;align-items:center}.plan-slot-top .badge{font-size:10px;padding:2px 5px}.plan-slot-actions{display:flex;gap:5px;margin-top:auto}.plan-slot-actions .btn{padding:3px 8px;min-width:30px}.planogram button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:700px){.planogram .toolbar{display:grid}.plan-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:8px}.plan-slot{min-height:112px}.plan-cols{justify-content:space-between}}
.machine-body{display:grid;grid-template-columns:minmax(0,1fr) 106px;gap:12px;padding:10px;border-radius:10px;background:#0b0d16;box-shadow:inset 0 0 0 1px #ffffff12}.machine-showcase{min-width:0}.machine-glass{padding:10px 9px 13px;border:5px solid #596071;border-bottom-width:8px;border-radius:8px 8px 4px 4px;background:linear-gradient(110deg,#e9f6ff10,#ffffff03 42%,#111827aa),#141928;box-shadow:inset 0 0 24px #82a9cb16,0 0 0 2px #10131e}.machine-rows{display:grid;gap:10px}.machine-row{display:grid;grid-template-columns:repeat(var(--plan-cols),minmax(34px,1fr));gap:6px;padding:6px 5px 9px;border-bottom:5px solid #c3cad0;background:linear-gradient(#202533,#0e111c);box-shadow:0 4px 0 #090b12}.machine-row:last-child{border-bottom-width:4px}.machine-cell{position:relative;min-width:0;min-height:86px;padding:7px 6px 6px;border:1px solid #4c5563;border-radius:3px;background:linear-gradient(160deg,#f5f5f312,#11151f 55%);overflow:hidden}.machine-cell:before{content:"";position:absolute;inset:0 0 auto;height:25%;background:#ffffff0a}.machine-cell span{position:relative;z-index:1;font-size:10px;color:#d4d9e2}.machine-cell .spiral{position:absolute;left:14%;right:14%;top:42%;height:2px;background:repeating-linear-gradient(90deg,#8994a3 0 4px,transparent 4px 8px);opacity:.8}.machine-cell b{position:absolute;bottom:7px;left:7px;font-size:16px;color:#f6f7fb}.machine-cell small{position:absolute;right:6px;bottom:9px;font-size:10px}.machine-cell:hover{z-index:2;border-color:var(--accent);transform:translateY(-3px) scale(1.03)}.machine-pickup{height:54px;margin:12px 10% 0;border:4px solid #9aa1ad;border-radius:8px;background:#171a25;display:flex;align-items:center;justify-content:space-between;padding:0 18px;color:#dce0e8;font-size:10px;letter-spacing:.12em}.machine-pickup b{font-size:22px;color:#727b8c}.machine-control{padding:12px 8px;border-radius:6px;background:linear-gradient(150deg,#242a36,#080a11);border:1px solid #5b6270;display:flex;flex-direction:column;align-items:center;gap:11px}.control-screen{width:68px;height:42px;border:2px solid #697286;background:linear-gradient(160deg,#8ea2c2,#39455e);box-shadow:0 0 14px #73a0ff33}.control-keypad{display:grid;grid-template-columns:repeat(3,16px);gap:5px}.control-keypad i{width:16px;height:12px;border:1px solid #8e97a5;border-radius:2px;color:#bbc2cd;font:8px/12px sans-serif;text-align:center;font-style:normal}.control-slot{width:65px;height:24px;border:2px solid #808998;background:#090b10}.control-label{text-align:center;color:#9da5b4;font-size:9px;line-height:1.4}.machine-side{display:grid;align-content:start;gap:14px}.machine-add-slot{padding:18px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:14px;background:linear-gradient(160deg,#28233e,var(--surface));display:grid;gap:11px}.machine-add-slot h3{margin:0}.machine-add-slot label{display:grid;gap:5px}.machine-add-slot .form-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.machine-add-slot .btn{width:100%;min-height:44px}.machine-editor-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:4px 0 20px}.machine-editor-head h2{margin:4px 0}.machine-advanced{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.machine-advanced summary{cursor:pointer;color:var(--accent);font-weight:600}.workflow-hero{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:28px 32px;margin-bottom:18px;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));border-radius:18px;background:radial-gradient(circle at 80% 20%,#8d70ff22,transparent 35%),linear-gradient(135deg,#25243c,var(--surface))}.workflow-hero h2{font-size:28px;margin:5px 0 8px}.workflow-hero p{max-width:720px;margin:0;color:var(--muted)}.restock-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px}.restock-card{padding:22px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:0 12px 30px #0002;transition:transform .2s,box-shadow .2s}.restock-card:hover{transform:translateY(-3px);box-shadow:0 18px 38px #0004}.restock-card-head,.restock-card-foot{display:flex;justify-content:space-between;align-items:center;gap:12px}.restock-card h3{margin:4px 0;font-size:19px}.restock-card-head small{color:var(--muted)}.restock-meter{display:grid;grid-template-columns:1fr auto;gap:8px;margin:24px 0 18px;color:var(--muted)}.restock-meter b{color:var(--text)}.restock-meter i{grid-column:1/-1;height:8px;border-radius:8px;background:#343749;overflow:hidden}.restock-meter em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--critical),var(--soon),var(--ok))}.restock-card-foot strong{font-size:15px}.workflow-help{margin-top:18px}.workflow-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.workflow-steps>div{display:grid;grid-template-columns:32px 1fr;column-gap:10px;align-items:center}.workflow-steps b{grid-row:span 2;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff}.workflow-steps small{color:var(--muted);grid-column:2}.table-scroll{overflow:auto}
@media(max-width:899px){.machine-body{grid-template-columns:1fr}.machine-control{display:none}.machine-side{grid-template-columns:1fr}.workflow-hero{display:grid;padding:22px}.workflow-hero h2{font-size:23px}.workflow-steps{grid-template-columns:1fr}.machine-editor-head{align-items:flex-start;flex-direction:column}.machine-row{grid-template-columns:repeat(var(--plan-cols),minmax(28px,1fr));gap:4px}.machine-cell{min-height:72px;padding:5px}.machine-cell b{font-size:13px}.machine-cell small{font-size:9px}.machine-glass{padding:6px}}
@media(min-width:1500px){.machine-cabinet{max-width:980px}.machine-stage{grid-template-columns:minmax(700px,1fr) minmax(300px,.38fr)}.machine-cell{min-height:108px}.machine-cell b{font-size:20px}.machine-add-slot{padding:24px}.workflow-hero{padding:34px 40px}.restock-card{padding:26px}}
.machine-row{grid-template-columns:repeat(auto-fit,minmax(42px,1fr))}.legend-dot.empty{padding:0;text-align:initial;min-height:0}
.machine-legend .legend-dot.empty{width:11px!important;height:11px!important;min-height:11px!important;padding:0!important;margin:0!important;display:inline-block!important;text-align:initial!important}.focus-row{animation:row-focus 1.1s ease both}@keyframes row-focus{50%{background:#9c88ff20;box-shadow:inset 3px 0 var(--accent)}}
.machine-cell .cell-product{position:absolute;left:7px;right:7px;top:29px;z-index:2;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#f1f2f7;font-size:11px;line-height:1.2;font-weight:650;text-align:left;background:linear-gradient(90deg,#121722f2,#121722c7 75%,transparent)}.machine-cell .spiral{z-index:1}.machine-cell.is-placeholder{border-style:dashed;border-color:#68718b;background:linear-gradient(160deg,#283047,#171b27)}.machine-cell.is-placeholder .cell-product{color:var(--accent);font-size:11px}.machine-cell.is-placeholder small{color:var(--muted)}
.machine-plan-actions{display:flex;justify-content:center;gap:10px;padding:10px 4px 2px}.machine-plan-actions .btn{min-height:34px;font-size:11px;border-style:dashed;color:var(--accent)}
@media(min-width:900px){.machine-stage{grid-template-columns:minmax(760px,1.45fr) minmax(270px,.35fr);gap:24px}.machine-cabinet{max-width:none}.machine-row{gap:5px;padding:5px 4px 7px}.machine-cell{min-height:72px}.machine-cell .cell-product{font-size:12px}.machine-cell span{font-size:11px}.machine-glass{padding:8px 7px 10px}.machine-rows{gap:7px}}@media(min-width:1500px){.machine-stage{grid-template-columns:minmax(900px,1.6fr) minmax(280px,.35fr);gap:28px}.machine-cell{min-height:92px}.machine-cabinet{max-width:none}}
.machine-stage,.machine-cabinet,.machine-side,.planogram{min-width:0;max-width:100%}
@media(min-width:900px) and (max-width:1499px){.machine-stage{grid-template-columns:minmax(0,1fr) minmax(230px,.38fr);gap:16px}.machine-cell .cell-product{font-size:11px}.machine-control{width:96px}.machine-body{grid-template-columns:minmax(0,1fr) 96px}}
 .wh-mobile-form{animation:panel-in .3s ease both}.wh-mobile-form summary{display:grid;gap:3px;cursor:pointer}.wh-mobile-form summary small{color:var(--muted);font-weight:400}.wh-mobile-auto{display:grid;gap:8px;margin:12px 0;padding:12px;background:color-mix(in srgb,var(--accent) 7%,var(--surface));border:1px solid color-mix(in srgb,var(--accent) 25%,var(--line))}.wh-mobile-auto small{display:block}.wh-mobile-auto label{display:flex;align-items:center;gap:7px;font-size:14px}.wh-mobile-line{display:grid;grid-template-columns:minmax(0,1fr) 78px;gap:7px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.wh-mobile-line>div:first-child{display:grid;gap:3px;min-width:0}.wh-mobile-line small{color:var(--muted)}.wh-mobile-line input[type=number]{width:78px;text-align:right}.wh-mobile-line>div[data-wb-extra]{grid-column:1/-1;display:flex;gap:7px}.wh-mobile-line>div[data-wb-extra][hidden]{display:none}.wh-mobile-line>div[data-wb-extra] input{min-width:0;flex:1}.pp-search-status{display:block;margin:-2px 0 8px;color:var(--muted);font-size:13px}@keyframes panel-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
