:root{--bg: #f3f5f9;--panel: #ffffff;--panel-2: #eef1f6;--border: #e1e6ee;--text: #1c2b3a;--muted: #64748b;--accent: #1c4d80;--accent-2: #2a63a0;--teal: #0f766e;--green: #16a34a;--yellow: #b45309;--red: #dc2626;--radius: 10px;--shadow: 0 1px 3px rgba(16, 24, 40, .06), 0 1px 2px rgba(16, 24, 40, .04)}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.app{display:flex;min-height:100vh}.sidebar{width:230px;flex-shrink:0;background:#16304e;color:#dfe8f4;border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;position:sticky;top:0;height:100vh}.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 18px}.brand-mark{width:38px;height:38px;border-radius:9px;background:linear-gradient(135deg,#2a63a0,#0f766e);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:#fff;letter-spacing:.02em}.brand-title{font-weight:700;font-size:15px;color:#fff;letter-spacing:.01em}.brand-sub{color:#9db4cc;font-size:12px}nav{display:flex;flex-direction:column;gap:2px;flex:1}.nav-item{display:flex;justify-content:space-between;align-items:center;background:none;border:none;color:#c3d2e4;text-align:left;padding:10px 12px;border-radius:8px;cursor:pointer;font-size:14px}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:#2a63a0;color:#fff;font-weight:600}.badge{background:#ef4444;color:#fff;border-radius:999px;font-size:11px;min-width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}.nav-item.active .badge{background:#fff;color:#2a63a0}.sidebar-footer{padding:10px 12px;color:#9db4cc;font-size:12px;display:flex;align-items:center;gap:8px;border-top:1px solid rgba(255,255,255,.12)}.status-dot{width:8px;height:8px;border-radius:50%;background:#34d399}.content{flex:1;padding:24px 32px;max-width:1200px}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:12px;flex-wrap:wrap}.page-head h1{margin:0;font-size:22px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn{background:var(--panel);color:var(--text);border:1px solid var(--border);padding:8px 14px;border-radius:8px;cursor:pointer;font-size:13px;box-shadow:var(--shadow)}.btn:hover{border-color:var(--accent-2)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{background:var(--accent-2)}.btn-danger{color:var(--red);border-color:#f0c4c0}.btn-danger:hover{border-color:var(--red);background:#fdf3f2}.btn-sm{padding:4px 10px;font-size:12px}.btn:disabled{opacity:.5;cursor:default}.icon-btn{background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer;line-height:1}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-bottom:20px;box-shadow:var(--shadow)}.card h2{margin:0 0 14px;font-size:15px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}.stat-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.stat-value{font-size:28px;font-weight:700}.stat-label{color:var(--muted);font-size:13px;margin-top:2px}.stat-sub{color:var(--muted);font-size:12px;margin-top:4px}.stat-warn .stat-value{color:var(--yellow)}.stat-alert .stat-value{color:var(--red)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}@media (max-width: 900px){.grid-2{grid-template-columns:1fr}}.filterbar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.filterbar .search{flex:1;min-width:220px}.filterbar .input{box-shadow:var(--shadow)}.filterbar .result-count{color:var(--muted);font-size:12px;margin-left:auto}.bars{display:flex;flex-direction:column;gap:14px}.bar-label{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}.bar-label .num{color:var(--text);font-weight:600}.bar-track{height:9px;background:var(--panel-2);border-radius:999px;overflow:hidden}.bar-fill{height:100%;border-radius:999px;transition:width .3s ease}.bar-in_stock{background:#0f766e}.bar-assigned{background:#1c4d80}.bar-maintenance{background:#d97706}.bar-retired{background:#94a3b8}.table{width:100%;border-collapse:collapse}.table th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--border)}.table td{padding:10px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table .grow{width:100%}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table.compact td{padding:7px 10px}.row-low{background:#fffbeb}.dim{opacity:.6}.mono{font-family:Consolas,monospace;font-size:12px;color:var(--muted)}.actions{white-space:nowrap}.actions .btn{margin-right:4px}.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;background:var(--panel-2);border:1px solid var(--border);color:var(--muted);white-space:nowrap}.pill-ok{color:#15803d;border-color:#b9e4c8;background:#f0faf4}.pill-warning{color:#b45309;border-color:#f2d9a8;background:#fffaf0}.pill-danger{color:#dc2626;border-color:#f0c4c0;background:#fef5f4}.pill-in_stock,.pill-assigned{color:#1c4d80;border-color:#b6cbe3;background:#f2f7fc}.pill-maintenance,.pill-retired{color:var(--muted)}.notif-list{list-style:none;margin:0;padding:0}.notif{display:flex;gap:12px;padding:12px;border-bottom:1px solid var(--border);align-items:flex-start}.notif:last-child{border-bottom:none}.notif-body{flex:1}.notif-title{font-weight:600}.notif-msg{color:var(--muted);margin-top:2px}.notif-meta{display:flex;gap:12px;color:var(--muted);font-size:12px;margin-top:6px;flex-wrap:wrap}.notif .btn{margin-left:auto}.dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:5px}.sev-info{background:#94a3b8}.sev-warning{background:#f59e0b}.sev-critical{background:#ef4444}.dot-cell{width:20px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#17253c73;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:680px;max-height:90vh;overflow:auto;box-shadow:0 20px 50px #10182833}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-head h3{margin:0}.modal-body{padding:20px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media (max-width: 700px){.form-grid{grid-template-columns:1fr}}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.field span{font-weight:600}.input{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 12px;font-size:14px;font-family:inherit}.input:focus{outline:none;border-color:var(--accent-2);box-shadow:0 0 0 3px #2a63a026}textarea.input{resize:vertical}.toasts{position:fixed;bottom:20px;right:20px;z-index:200;display:flex;flex-direction:column;gap:8px}.toast{background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--green);padding:12px 16px;border-radius:8px;box-shadow:0 6px 20px #1018281f;max-width:340px}.toast-error{border-left-color:var(--red)}.muted{color:var(--muted)}.small{font-size:12px}.error-text{color:var(--red);font-size:13px;margin:8px 0 0}.banner{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fff7e6;border:1px solid #f2d9a8;color:#7c4a03;border-radius:var(--radius);padding:10px 14px;margin-bottom:18px;font-size:13px}.banner .btn{background:#fff}.banner .btn:hover{border-color:#b45309;color:#b45309}.banner-readonly{justify-content:flex-start;background:#eef2ff;border-color:#c7d2fe;color:#3730a3}.login-screen{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#16304e,#2a63a0)}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:28px;width:100%;max-width:360px;box-shadow:0 20px 50px #10182859}.login-brand{padding:0 0 18px}.login-brand .brand-title{color:var(--text)}.login-brand .brand-sub{color:var(--muted)}.login-form{display:flex;flex-direction:column;gap:14px}.btn-block{width:100%}.sidebar-footer{flex-direction:column;align-items:stretch;gap:10px}.sidebar-user{display:flex;flex-direction:column;gap:8px}.user-line{display:flex;align-items:center;justify-content:space-between;gap:8px}.user-name{color:#fff;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scan-line{display:flex;align-items:center;gap:8px}.btn-logout{background:transparent;color:#c3d2e4;border-color:#ffffff40}.btn-logout:hover{color:#fff;border-color:#ffffff80}.role-pill{display:inline-block;padding:1px 8px;border-radius:999px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.role-pill.role-admin{background:#2a63a0;color:#fff}.role-pill.role-staff{background:#475569;color:#fff}.pill.role-admin{color:#1c4d80;border-color:#b6cbe3;background:#f2f7fc}.pill.role-staff{color:#475569;border-color:#cbd5e1;background:#f8fafc}.report-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px;flex-wrap:wrap}.report-head h2{margin:0}@media print{.sidebar,.filterbar,.toasts,.banner,.no-print .page-head .btn{display:none!important}body{background:#fff}.content{padding:0;max-width:100%}.card{border:none;box-shadow:none;padding:0;margin-bottom:10px}.no-print{padding:0}}@media (max-width: 760px){.app{flex-direction:column}.sidebar{width:100%;height:auto;position:static;flex-direction:column;padding:12px;gap:10px}.brand{padding:0 4px 6px}nav{flex-direction:row;overflow-x:auto;gap:4px}.nav-item{white-space:nowrap}.sidebar-footer{flex-direction:row;align-items:center;justify-content:space-between}.scan-line{display:none}.content{padding:16px;max-width:100%}.stats{grid-template-columns:repeat(2,1fr)}.card{overflow-x:auto}.page-head h1{font-size:19px}}
