:root{--c-primary: #1e2a3b;--c-primary-hover: #2c3d56;--c-primary-soft: #eaeef4;--c-accent: #2563eb;--c-accent-soft: #e6efff;--c-success: #16a34a;--c-success-soft: #e8f7ee;--c-warning: #f59e0b;--c-warning-soft: #fef4e2;--c-danger: #dc2626;--c-danger-soft: #fdeaea;--c-info: #0891b2;--c-info-soft: #e3f6fb;--c-bg: #f4f6f9;--c-surface: #ffffff;--c-surface-2: #f9fafb;--c-border: #e4e8ef;--c-border-strong: #d0d7e2;--c-text: #1a2233;--c-text-secondary: #5b6474;--c-text-muted: #8a93a5;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-full: 999px;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 15px;--fs-md: 16px;--fs-lg: 18px;--fs-xl: 22px;--fs-2xl: 28px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow-md: 0 4px 14px rgba(16, 24, 40, .08);--shadow-lg: 0 12px 30px rgba(16, 24, 40, .14);--sidebar-w: 240px;--bottomnav-h: 64px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;--mono: "SFMono-Regular", ui-monospace, "Cascadia Mono", "Roboto Mono", monospace}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:var(--fs-base);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}ul{margin:0;padding:0;list-style:none}table{border-collapse:collapse;width:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--c-border-strong);border-radius:var(--r-full)}::-webkit-scrollbar-track{background:transparent}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:10px 16px;border:1px solid transparent;border-radius:var(--r-md);background:var(--c-surface);color:var(--c-text);font-weight:600;font-size:var(--fs-sm);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--c-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--c-primary-hover)}.btn-accent{background:var(--c-accent);color:#fff}.btn-accent:hover:not(:disabled){filter:brightness(1.07)}.btn-outline{background:var(--c-surface);border-color:var(--c-border-strong)}.btn-outline:hover:not(:disabled){background:var(--c-surface-2)}.btn-success{background:var(--c-success);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.07)}.btn-danger{background:var(--c-danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.07)}.btn-warning{background:var(--c-warning);color:#3b2300}.btn-warning:hover:not(:disabled){filter:brightness(1.07)}.btn-info{background:var(--c-info);color:#fff}.btn-info:hover:not(:disabled){filter:brightness(1.07)}.btn-ghost{background:transparent;color:var(--c-text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--c-primary-soft);color:var(--c-text)}.btn-lg{padding:14px 22px;font-size:var(--fs-md)}.btn-block{width:100%}.btn-sm{padding:6px 12px;font-size:var(--fs-xs)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:var(--fs-xs);font-weight:600;color:var(--c-text-secondary);text-transform:uppercase;letter-spacing:.03em}.input,.select,.textarea{padding:11px 14px;background:var(--c-surface);border:1px solid var(--c-border-strong);border-radius:var(--r-md);font-size:var(--fs-base);transition:border-color .15s,box-shadow .15s;width:100%}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-soft)}.input::placeholder{color:var(--c-text-muted)}.input-error{border-color:var(--c-danger)}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:var(--sp-5)}.card-title{font-size:var(--fs-lg);font-weight:700;margin-bottom:var(--sp-4)}.stat-grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.stat{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--shadow-sm)}.stat-label{font-size:var(--fs-xs);color:var(--c-text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.stat-value{font-size:var(--fs-2xl);font-weight:800;margin-top:6px;line-height:1.1}.stat-hint{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:6px}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:700;line-height:1.4;white-space:nowrap}.badge-success{background:var(--c-success-soft);color:var(--c-success)}.badge-warning{background:var(--c-warning-soft);color:#b45309}.badge-danger{background:var(--c-danger-soft);color:var(--c-danger)}.badge-info{background:var(--c-info-soft);color:var(--c-info)}.badge-neutral{background:var(--c-primary-soft);color:var(--c-text-secondary)}.badge-accent{background:var(--c-accent-soft);color:var(--c-accent)}.table-wrap{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);overflow-x:auto;box-shadow:var(--shadow-sm)}.table th{text-align:left;padding:12px 16px;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-secondary);background:var(--c-surface-2);border-bottom:1px solid var(--c-border);font-weight:700;white-space:nowrap}.table td{padding:12px 16px;border-bottom:1px solid var(--c-border);font-size:var(--fs-sm)}.table tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--c-surface-2)}.num{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.th-num{text-align:right}.row{display:flex;align-items:center}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.gap-5{gap:var(--sp-5)}.gap-6{gap:var(--sp-6)}.muted{color:var(--c-text-muted)}.secondary{color:var(--c-text-secondary)}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}.mt-6{margin-top:var(--sp-6)}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.text-right{text-align:right}.text-center{text-align:center}.bold{font-weight:700}.semi{font-weight:600}.sm{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.full{width:100%}.hidden{display:none!important}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.empty{text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--c-text-muted)}.empty-icon{font-size:40px;margin-bottom:var(--sp-3)}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--c-border-strong);border-top-color:var(--c-accent);animation:spin .7s linear infinite}.spinner-lg{width:38px;height:38px;border-width:4px}@keyframes spin{to{transform:rotate(360deg)}}.center{display:flex;align-items:center;justify-content:center}.toasts{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:8px;width:min(440px,calc(100vw - 32px))}.toast{padding:12px 16px;border-radius:var(--r-md);color:#fff;font-size:var(--fs-sm);font-weight:600;box-shadow:var(--shadow-lg);display:flex;gap:10px;align-items:center;animation:toastIn .18s ease-out}.toast-success{background:var(--c-success)}.toast-error{background:var(--c-danger)}.toast-warning{background:var(--c-warning);color:#3b2300}.toast-info{background:var(--c-primary)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1018288c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--sp-4);animation:fade .15s ease-out}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{background:var(--c-surface);border-radius:var(--r-lg);width:min(520px,100%);max-height:92vh;overflow-y:auto;box-shadow:var(--shadow-lg);padding:var(--sp-6);animation:modalIn .16s ease-out}.modal-title{font-size:var(--fs-lg);font-weight:800;margin-bottom:var(--sp-2)}.modal-actions{display:flex;gap:var(--sp-3);justify-content:flex-end;margin-top:var(--sp-5)}@keyframes modalIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}.progress{height:10px;background:var(--c-primary-soft);border-radius:var(--r-full);overflow:hidden}.progress-bar{height:100%;background:var(--c-success);border-radius:var(--r-full);transition:width .3s}.progress-bar.warning{background:var(--c-warning)}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{padding:7px 14px;border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:600;background:var(--c-surface);border:1px solid var(--c-border-strong);cursor:pointer;transition:all .15s;white-space:nowrap;color:var(--c-text-secondary)}.chip:hover{background:var(--c-surface-2);color:var(--c-text)}.chip.active{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}.search-wrap{position:relative;flex:1;min-width:180px}.search-wrap .input{padding-left:40px}.search-icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--c-text-muted);font-size:17px}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100dvh}@media (max-width: 860px){.app{grid-template-columns:1fr;padding-bottom:var(--bottomnav-h)}}.sidebar{position:sticky;top:0;height:100dvh;background:var(--c-primary);color:#fff;display:flex;flex-direction:column;padding:var(--sp-5) var(--sp-4);overflow-y:auto}@media (max-width: 860px){.sidebar{display:none}}.logo{display:flex;align-items:center;gap:10px;padding:0 8px 20px}.logo-mark{width:36px;height:36px;border-radius:var(--r-md);background:#fff;color:var(--c-primary);display:grid;place-items:center;font-weight:900;font-size:15px}.logo-name{font-weight:800;font-size:17px;letter-spacing:.01em}.nav{display:flex;flex-direction:column;gap:2px;flex:1}.nav-item{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:var(--r-md);color:#ffffffc7;font-weight:600;font-size:var(--fs-sm);cursor:pointer;transition:background .15s,color .15s;width:100%;border:none;background:transparent;text-align:left}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:#ffffff24;color:#fff}.nav-ico{font-size:17px;width:22px;text-align:center}.nav-sep{height:1px;background:#ffffff1f;margin:10px 6px}.nav-caption{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#ffffff73;padding:6px 12px 4px;font-weight:700}.sidebar-foot{border-top:1px solid rgba(255,255,255,.12);padding-top:var(--sp-4);margin-top:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.side-user{display:flex;align-items:center;gap:10px;padding:0 6px}.side-avatar{width:34px;height:34px;border-radius:var(--r-full);background:#ffffff2e;display:grid;place-items:center;font-weight:800;font-size:var(--fs-sm)}.side-user-name{font-weight:700;font-size:var(--fs-sm);line-height:1.2}.side-user-role{font-size:var(--fs-xs);color:#ffffff8c}.main{padding:var(--sp-6);overflow-x:hidden}.header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap}.header h1{font-size:var(--fs-xl);font-weight:800}.header-sub{font-size:var(--fs-sm);color:var(--c-text-secondary);margin-top:2px}@media (max-width: 860px){.main{padding:var(--sp-4) var(--sp-3)}.header h1{font-size:var(--fs-lg)}}.mobile-topbar{display:none;position:sticky;top:0;z-index:100;background:var(--c-primary);color:#fff;align-items:center;justify-content:space-between;padding:12px 16px}.mobile-topbar .mt-title{font-weight:800;font-size:var(--fs-md)}.mobile-topbar .mt-user{font-size:var(--fs-xs);color:#ffffffb3}@media (max-width: 860px){.mobile-topbar{display:flex}}.bottomnav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:150;height:var(--bottomnav-h);background:var(--c-surface);border-top:1px solid var(--c-border);box-shadow:0 -2px 10px #1018280d;padding-bottom:env(safe-area-inset-bottom)}@media (max-width: 860px){.bottomnav{display:grid;grid-template-columns:repeat(4,1fr)}}.bn-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10px;font-weight:700;color:var(--c-text-muted);cursor:pointer;border:none;background:none;padding:6px 0}.bn-item.active{color:var(--c-accent)}.bn-ico{font-size:21px;line-height:1}.avatar{width:30px;height:30px;border-radius:var(--r-full);background:var(--c-primary-soft);color:var(--c-primary);display:inline-grid;place-items:center;font-weight:800;font-size:var(--fs-xs)}.inv-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap}.inv-title{font-size:var(--fs-xl);font-weight:800}.inv-meta{display:flex;gap:var(--sp-3);flex-wrap:wrap;color:var(--c-text-secondary);font-size:var(--fs-sm);margin-top:4px}.inv-meta b{color:var(--c-text)}.item-row{display:flex;align-items:center;gap:var(--sp-3);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);box-shadow:var(--shadow-sm)}.item-row.done{border-color:var(--c-success-soft);background:#fcfffd}.item-info{flex:1;min-width:0}.item-name{font-weight:700;font-size:var(--fs-base);display:flex;align-items:center;gap:8px}.item-unit{font-size:var(--fs-xs);color:var(--c-text-muted);font-weight:600}.item-cat{font-size:var(--fs-xs);color:var(--c-text-muted);margin-top:2px}.stepper{display:flex;align-items:center;gap:6px}.stepper-btn{width:38px;height:38px;border-radius:var(--r-md);border:1px solid var(--c-border-strong);background:var(--c-surface-2);font-size:20px;font-weight:700;color:var(--c-text);cursor:pointer;display:grid;place-items:center;transition:all .12s}.stepper-btn:hover{background:var(--c-primary-soft)}.stepper-btn:active{transform:scale(.94)}.stepper-input{width:88px;height:38px;text-align:center;border:1px solid var(--c-border-strong);border-radius:var(--r-md);font-weight:700;font-size:var(--fs-md);font-variant-numeric:tabular-nums;background:var(--c-surface);padding:0 6px}.stepper-input:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-soft)}.stepper-input.pending{background:var(--c-warning-soft);border-color:transparent;color:var(--c-text-muted)}.item-saved{font-size:var(--fs-xs);font-weight:700;color:var(--c-success);white-space:nowrap}.item-offline{font-size:var(--fs-xs);font-weight:700;color:var(--c-warning);white-space:nowrap}.item-conflict{font-size:var(--fs-xs);font-weight:700;color:var(--c-danger);white-space:nowrap}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.dot-pending{background:var(--c-warning)}.dot-entered{background:var(--c-success)}.dot-checked{background:var(--c-info)}.dot-corrected{background:var(--c-accent)}.dot-queued{background:var(--c-warning);animation:blink 1s infinite}@keyframes blink{50%{opacity:.35}}.inv-progress{display:flex;align-items:center;gap:var(--sp-4);background:var(--c-primary);color:#fff;border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5)}.inv-progress .pct{font-size:30px;font-weight:900;line-height:1}.inv-progress .lbl{font-size:var(--fs-xs);opacity:.8;font-weight:600}.inv-progress .bar-wrap{flex:1}.inv-progress .progress{background:#fff3;height:12px}.inv-progress .progress-bar{background:var(--c-success)}.inv-progress .count{font-size:var(--fs-sm);font-weight:700;white-space:nowrap}.quick{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;background:var(--c-bg);display:flex;flex-direction:column}.quick-top{background:var(--c-primary);color:#fff;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px}.quick-top .q-name{font-weight:800;font-size:var(--fs-md)}.quick-top .q-sub{font-size:var(--fs-xs);opacity:.75}.quick-close{background:#ffffff26;border:none;color:#fff;width:36px;height:36px;border-radius:var(--r-md);cursor:pointer;font-size:18px}.quick-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4);padding:var(--sp-4);overflow-y:auto}.quick-product{text-align:center}.quick-product-name{font-size:var(--fs-xl);font-weight:800}.quick-product-cat{font-size:var(--fs-sm);color:var(--c-text-muted);margin-top:4px}.quick-value{font-size:56px;font-weight:900;font-variant-numeric:tabular-nums;color:var(--c-primary);line-height:1;min-height:64px}.quick-value.placeholder{color:var(--c-text-muted)}.quick-unit{font-size:var(--fs-lg);font-weight:700;color:var(--c-text-secondary);margin-top:6px}.quick-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--c-text-muted);font-weight:700}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:min(340px,100%)}.key{height:60px;border-radius:var(--r-md);border:1px solid var(--c-border-strong);background:var(--c-surface);font-size:26px;font-weight:800;color:var(--c-text);cursor:pointer;box-shadow:var(--shadow-sm);transition:all .1s}.key:active{background:var(--c-primary-soft);transform:scale(.97)}.key-ops{background:var(--c-surface-2)}.quick-actions{display:flex;gap:10px;width:min(340px,100%)}.quick-save{flex:1;height:56px;border-radius:var(--r-md);border:none;background:var(--c-success);color:#fff;font-size:var(--fs-md);font-weight:800;cursor:pointer;box-shadow:var(--shadow-md)}.quick-save:active{filter:brightness(.95)}.quick-next{height:56px;width:56px;border-radius:var(--r-md);background:var(--c-primary);color:#fff;border:none;font-size:22px;cursor:pointer;box-shadow:var(--shadow-md)}.quick-hint{font-size:var(--fs-xs);color:var(--c-text-muted);text-align:center}@media (min-width: 861px){.quick{position:relative;inset:auto;min-height:70vh;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-lg)}}.conn-status{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:700}.conn-on{background:var(--c-success-soft);color:var(--c-success)}.conn-off{background:var(--c-warning-soft);color:#b45309}.summary-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--c-border);font-size:var(--fs-sm)}.summary-row:last-child{border-bottom:none}.summary-row .v{font-weight:800}
