:root{--red: #E1232D;--red-dark: #B81B24;--red-soft: #fdeaeb;--green: #3EB54F;--ink: #16181d;--ink-2: #3a3f4a;--ink-soft: #6c7480;--bg: #f4f5f7;--surface: #ffffff;--line: #e4e7ec;--line-2: #eef0f3;--side-bg: #0e0f12;--side-line: #23262d;--side-ink: #c9cdd6;--side-ink-soft: #7e8593;--radius: 10px;--shadow: 0 1px 2px rgba(16,18,22,.05), 0 6px 20px rgba(16,18,22,.06);--shadow-lg: 0 12px 40px rgba(16,18,22,.14);--sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--serif: "Georgia", "Times New Roman", serif;font-family:var(--sans)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit}.app{display:flex;min-height:100vh}.side{width:236px;background:var(--side-bg);color:var(--side-ink);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;border-right:1px solid var(--side-line)}.side-brand{padding:22px 18px 16px;border-bottom:1px solid var(--side-line)}.side-brand img{width:100%;display:block}.tricolor{height:3px;display:flex}.tricolor i{flex:1}.tricolor .g{background:var(--green)}.tricolor .w{background:#f1f1f1}.tricolor .r{background:var(--red)}.nav{padding:16px 12px;flex:1;overflow-y:auto}.nav-group{font-size:10.5px;text-transform:uppercase;letter-spacing:1.2px;color:var(--side-ink-soft);margin:18px 10px 8px;font-weight:700}.nav-group:first-child{margin-top:4px}.nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--side-ink);text-decoration:none;font-weight:500;margin-bottom:2px;font-size:13.5px;transition:background .12s,color .12s}.nav a:hover{background:#ffffff0f;color:#fff}.nav a.active{background:var(--red);color:#fff;box-shadow:0 2px 10px #e1232d59}.nav a .dot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.5}.nav a.active .dot{opacity:1}.side-foot{padding:14px 16px;border-top:1px solid var(--side-line);display:flex;align-items:center;justify-content:space-between;gap:10px}.who{display:flex;flex-direction:column;line-height:1.35;min-width:0}.who strong{font-size:13px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.who span{font-size:10px;color:var(--side-ink-soft);text-transform:uppercase;letter-spacing:.8px;font-weight:700}.main{flex:1;padding:28px 34px;max-width:1160px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--line)}.page-head h1{font-family:var(--serif);font-size:25px;margin:0;letter-spacing:.3px;font-weight:600}.page-head p{margin:6px 0 0;color:var(--ink-soft);font-size:13.5px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:1.4px;color:var(--red);font-weight:700;margin-bottom:6px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:20px}.card h2{font-size:12px;margin:0 0 18px;text-transform:uppercase;letter-spacing:1px;color:var(--ink-soft);font-weight:700;display:flex;align-items:center;gap:10px}.card h2:before{content:"";width:3px;height:13px;background:var(--red);border-radius:2px}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.grid.three{grid-template-columns:repeat(3,1fr)}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1 / -1}label{font-size:12px;font-weight:600;color:var(--ink-2)}input,select,textarea{border:1px solid var(--line);border-radius:8px;padding:10px 12px;font:inherit;background:#fff;color:var(--ink);width:100%;transition:border-color .12s,box-shadow .12s}input::placeholder,textarea::placeholder{color:#aab1bc}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px var(--red-soft)}textarea{resize:vertical;min-height:64px}.btn{border:0;border-radius:8px;padding:10px 18px;font-weight:600;font-size:13.5px;cursor:pointer;background:var(--red);color:#fff;transition:filter .12s,transform .04s}.btn:hover{filter:brightness(1.06)}.btn:active{transform:translateY(1px)}.btn.ghost{background:#fff;border:1px solid var(--line);color:var(--ink-2)}.btn.ghost:hover{background:var(--line-2);filter:none}.btn.dark{background:var(--ink)}.btn.sm{padding:6px 12px;font-size:12px}.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}.row-actions{display:flex;gap:10px;margin-top:18px}table{width:100%;border-collapse:collapse;font-size:13.5px}th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}th{font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:var(--ink-soft);font-weight:700;background:#fafbfc;white-space:nowrap}tbody tr{transition:background .1s}tbody tr:hover{background:#fcfcfd}td.mono{font-family:SF Mono,Consolas,monospace;font-size:12.5px}th:last-child,td:last-child{width:1%;white-space:nowrap}table.compact{width:auto;min-width:60%}table.compact th,table.compact td{white-space:nowrap;padding-right:28px}.tag{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.3px}.tag.fg{background:#e7f6eb;color:#1f8a45}.tag.rm{background:var(--red-soft);color:var(--red-dark)}.tag.role-admin{background:#1c1f26;color:#fff}.tag.role-op{background:#eef0f3;color:var(--ink-2)}.msg{padding:11px 14px;border-radius:8px;font-size:13px;margin-bottom:16px;font-weight:500}.msg.err{background:var(--red-soft);color:var(--red-dark);border:1px solid #f5cfd1}.msg.ok{background:#e7f6eb;color:#1f8a45;border:1px solid #c5e9cf}.empty{color:var(--ink-soft);padding:32px;text-align:center}.login-screen{min-height:100vh;display:grid;place-items:center;background:radial-gradient(1200px 600px at 70% -10%,#1b1d22,#0e0f12 55%);padding:20px}.login-card{background:var(--surface);border-radius:16px;box-shadow:var(--shadow-lg);width:380px;overflow:hidden}.login-top{background:#fff;padding:30px 34px 22px;border-bottom:1px solid var(--line);text-align:center}.login-top img{width:190px;display:inline-block}.login-tricolor{height:4px;display:flex}.login-tricolor i{flex:1}.login-body{padding:28px 34px 32px}.login-body h2{font-family:var(--serif);font-size:19px;margin:0 0 4px;font-weight:600}.login-body .sub{color:var(--ink-soft);font-size:13px;margin:0 0 22px}.login-foot{text-align:center;font-size:11.5px;color:var(--ink-soft);margin-top:18px;letter-spacing:.3px}.preview-wrap{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-start}.label-preview-frame{display:inline-block;padding:6px}.label-preview{width:50mm;height:38mm;border:1px solid var(--line);border-radius:6px;background:#fff;padding:2mm;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center;box-shadow:var(--shadow);transform:scale(1.9);transform-origin:top left}.label-preview-frame{width:95mm;height:72.2mm}.label-preview .lp-logo{width:26mm;margin-bottom:1mm}.label-preview .lp-name{font-weight:700;font-size:8pt;line-height:1.15;color:var(--ink)}.label-preview .lp-sage{font-weight:700;font-size:7.5pt;color:var(--ink)}.label-preview .lp-focus{font-weight:600;font-size:7pt;color:var(--ink-2)}.label-preview .lp-brand{font-size:7pt;color:var(--ink-soft)}.label-preview .lp-meta{font-size:6.5pt;color:var(--ink-2)}.label-preview svg{max-width:100%;height:auto}.chk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;border:1px solid var(--line);border-radius:8px;padding:14px;background:#fcfcfd}.chk{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:500;color:var(--ink-2);cursor:pointer}.chk input{width:auto;accent-color:var(--red)}.link{color:var(--red);cursor:pointer;text-decoration:none;font-weight:600}.link:hover{text-decoration:underline}.card-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:10px;flex-wrap:wrap}.card-head h2{margin:0}.search{flex:0 1 340px;min-width:200px;border:1px solid var(--line);border-radius:8px;padding:9px 12px;font:inherit}.search:focus{outline:none;border-color:var(--red)}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line-2);flex-wrap:wrap}.pager-info{color:var(--ink-soft);font-size:12.5px}.pager-btns{display:flex;gap:6px}.picker{position:relative}.picker>input{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font:inherit}.picker>input:focus{outline:none;border-color:var(--red)}.picker-pop{position:absolute;z-index:30;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px #0000001f;max-height:320px;overflow:auto}.picker-item{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line-2);padding:9px 12px;cursor:pointer}.picker-item:hover{background:var(--line-2)}.pi-name{font-weight:600;font-size:13.5px;color:var(--ink-2, #1a1d23)}.pi-meta{font-size:11.5px;color:var(--ink-soft)}.picker-empty{padding:16px;text-align:center;color:var(--ink-soft);font-size:13px}.picker-pager{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:11.5px;color:var(--ink-soft);position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line-2)}mark.hl{background:#ffe08a;color:inherit;padding:0 1px;border-radius:2px;font-weight:700}td.key-col{font-weight:600;color:var(--ink-2, #1a1d23)}td.key-col.desc-col{font-weight:500;color:var(--ink-soft);max-width:280px;white-space:normal;line-height:1.35}.pi-codes{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.pi-code{font-size:11.5px;font-weight:700;color:var(--red);background:#e1232d14;border-radius:4px;padding:1px 6px}.pi-desc{font-size:11.5px;color:var(--ink-2, #1a1d23);margin-top:2px;line-height:1.3}.muted{color:var(--ink-soft);opacity:.6}.pack-top{display:grid;grid-template-columns:1fr 320px;gap:20px;margin-bottom:20px;align-items:stretch}@media (max-width: 900px){.pack-top{grid-template-columns:1fr}}.scan-card{margin-bottom:0;display:flex;flex-direction:column;justify-content:center}.scan-label{font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:var(--ink-soft);font-weight:700;margin-bottom:10px;display:block}.scan-row{display:flex;align-items:center;gap:12px;border:2px solid var(--line);border-radius:12px;padding:4px 6px 4px 14px;transition:border-color .15s,box-shadow .15s}.scan-row:focus-within{border-color:var(--red);box-shadow:0 0 0 4px var(--red-soft)}.scan-ico{font-size:22px;color:var(--red);line-height:1}.scan-input{flex:1;border:0!important;outline:none;font-size:20px;font-weight:600;padding:12px 8px;letter-spacing:.5px;background:transparent}.scan-input::placeholder{font-weight:400;color:#b6bcc6;font-size:16px}.scan-hint{display:flex;align-items:center;gap:18px;margin-top:12px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-soft)}.scan-hint kbd{background:var(--ink);color:#fff;border-radius:5px;padding:2px 7px;font-size:11px;font-family:var(--sans);font-weight:600}.scan-date{margin-left:auto;display:inline-flex;align-items:center;gap:8px}.scan-date input{padding:7px 10px;border:1px solid var(--line);border-radius:8px;font:inherit}.stat-tiles{display:grid;grid-template-columns:1fr 1fr;gap:14px}.pack-top .stat-tiles{grid-template-columns:1fr}.stat-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;display:flex;flex-direction:column;justify-content:center;gap:4px}.stat-tile .stat-num{font-size:38px;font-weight:800;line-height:1;color:var(--ink);font-family:var(--serif)}.stat-tile .stat-lbl{font-size:11.5px;text-transform:uppercase;letter-spacing:1.2px;color:var(--ink-soft);font-weight:700}.stat-tile.accent{background:linear-gradient(135deg,var(--red),var(--red-dark));border-color:transparent;box-shadow:0 8px 24px #e1232d47}.stat-tile.accent .stat-num,.stat-tile.accent .stat-lbl{color:#fff}.stat-tile.accent .stat-lbl{opacity:.85}.stepper{display:inline-flex;align-items:center;gap:0}.stepper .stepper-n{min-width:28px;text-align:center;font-size:15px}.qty-pill{display:inline-block;background:var(--line-2);color:var(--ink-2);border-radius:20px;padding:2px 10px;font-size:12px;font-weight:700}.qty-pill.zero{background:var(--red-soft);color:var(--red-dark)}.row-flash{animation:rowflash .6s ease}@keyframes rowflash{0%{background:var(--red-soft)}to{background:transparent}}.box-done-head{display:flex;align-items:center;gap:16px;margin-bottom:18px;flex-wrap:wrap}.box-check{width:44px;height:44px;border-radius:50%;background:var(--green);color:#fff;font-size:24px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;box-shadow:0 6px 18px #3eb54f59}.box-barcode-chip{margin-left:auto;font-family:monospace;font-size:18px;font-weight:700;background:var(--ink);color:#fff;padding:8px 16px;border-radius:10px;letter-spacing:1px}.stat-strip{display:flex;gap:14px;margin-bottom:20px}.stat-strip .stat-tile{min-width:200px;padding:16px 22px}.stat-strip .stat-tile .stat-num{font-size:32px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1012168c;display:flex;align-items:flex-start;justify-content:center;padding:6vh 20px;z-index:100;animation:fadein .12s ease}@keyframes fadein{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:86vh;display:flex;flex-direction:column;overflow:hidden;animation:pop .14s ease}.modal-wide{max-width:820px}@keyframes pop{0%{transform:translateY(8px) scale(.99);opacity:.6}to{transform:none;opacity:1}}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid var(--line)}.modal-title{margin:0;font-family:var(--serif);font-size:20px;color:var(--ink)}.modal-sub{margin:6px 0 0;color:var(--ink-soft);font-size:13px}.modal-x{border:0;background:var(--line-2);color:var(--ink-2);width:32px;height:32px;border-radius:8px;font-size:20px;line-height:1;cursor:pointer;flex:0 0 auto;transition:background .12s}.modal-x:hover{background:var(--line)}.modal-body{padding:4px 0;overflow:auto}.modal-body table th{position:sticky;top:0;z-index:1}.modal-body table th,.modal-body table td{padding-left:22px;padding-right:22px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px;border-top:1px solid var(--line);background:#fafbfc}
