:root{--bg:#f6f8fb;--surface:#fff;--ink:#0f172a;--ink-soft:#64748b;--line:#e2e8f0;--brand:#2563eb;--brand-dark:#1e40af;--brand-light:#eaf1ff;--success:#16a34a;--success-light:#e9f9ef;--danger:#dc2626;--danger-light:#fdecec;--warning:#d97706;--warning-light:#fef3e0;--radius:10px;--shadow:0 1px 2px #0f172a0f, 0 1px 3px #0f172a14}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--brand);text-decoration:none}button{font-family:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex-shrink:0;width:240px;padding:20px 0;display:flex}.sidebar-brand{border-bottom:1px solid var(--line);align-items:center;gap:10px;margin-bottom:12px;padding:0 20px 20px;display:flex}.sidebar-brand img{flex-shrink:0;width:auto;height:32px}.sidebar-brand span{color:var(--brand-dark);font-size:15px;font-weight:800;line-height:1.2}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:0 12px;display:flex;overflow-y:auto}.sidebar-nav a{color:var(--ink-soft);border-radius:8px;padding:10px 12px;font-size:14px;font-weight:500}.sidebar-nav a:hover{background:var(--brand-light);color:var(--brand-dark)}.sidebar-nav a.active{background:var(--brand);color:#fff}.main-area{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;height:60px;padding:0 24px;display:flex}.topbar-title{font-size:16px;font-weight:700}.user-menu{cursor:pointer;padding:10px 4px;position:relative}.user-menu-trigger{color:var(--ink-soft);font-size:14px;font-weight:500}.user-menu-dropdown{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);z-index:50;border-radius:8px;flex-direction:column;min-width:160px;margin-top:4px;padding:6px;display:none;position:absolute;top:100%;right:0}.user-menu:hover .user-menu-dropdown,.user-menu:focus-within .user-menu-dropdown{display:flex}.user-menu-dropdown a,.user-menu-dropdown button{text-align:left;width:100%;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 10px;font-size:14px;font-weight:500;display:block}.user-menu-dropdown a:hover,.user-menu-dropdown button:hover{background:var(--bg)}.user-menu-dropdown a.active{background:var(--brand-light);color:var(--brand-dark)}.content{flex:1;padding:24px;overflow-x:auto}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card+.card{margin-top:16px}.card-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;display:flex}.card-title{margin:0;font-size:16px;font-weight:700}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=900px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.stat-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.stat-tile .label{color:var(--ink-soft);margin-bottom:6px;font-size:13px}.stat-tile .value{font-size:26px;font-weight:800}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:9px 16px;font-size:14px;font-weight:600;transition:all .15s;display:inline-flex}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{background:var(--brand-dark)}.btn-outline{color:var(--brand);border-color:var(--brand);background:0 0}.btn-outline:hover{background:var(--brand-light)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#b91c1c}.btn-ghost{color:var(--ink-soft);background:0 0}.btn-ghost:hover{background:var(--bg)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:5px 10px;font-size:13px}.form-group{margin-bottom:14px}.form-label{color:var(--ink);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-input,.form-select,.form-textarea{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);border-radius:8px;padding:9px 12px;font-family:inherit;font-size:14px}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:2px solid var(--brand-light);border-color:var(--brand)}.form-row{flex-wrap:wrap;gap:12px;display:flex}.form-row>*{flex:1;min-width:180px}.form-check{align-items:center;gap:8px;font-size:14px;display:flex}.table-wrap{overflow-x:auto}table.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);border-bottom:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;padding:10px 12px;font-size:12px}.data-table td{border-bottom:1px solid var(--line);padding:10px 12px}.data-table tbody tr:hover{background:var(--bg)}.badge{border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-pending{background:var(--warning-light);color:var(--warning)}.badge-approved{background:var(--success-light);color:var(--success)}.badge-rejected,.badge-cancelled{background:var(--danger-light);color:var(--danger)}.badge-in_progress,.badge-cancel_requested{background:var(--brand-light);color:var(--brand-dark)}.badge-completed{background:var(--success-light);color:var(--success)}.badge-superadmin{background:var(--ink);color:#fff}.empty-state,.error-state,.loading-state{text-align:center;color:var(--ink-soft);padding:40px 20px}.error-state{color:var(--danger)}.pagination{color:var(--ink-soft);justify-content:flex-end;align-items:center;gap:8px;margin-top:14px;font-size:13px;display:flex}.toast-container{z-index:1000;flex-direction:column;gap:10px;display:flex;position:fixed;top:20px;right:20px}.toast{background:var(--ink);color:#fff;box-shadow:var(--shadow);border-radius:8px;min-width:240px;padding:12px 16px;font-size:14px}.toast-success{background:var(--success)}.toast-error{background:var(--danger)}.toast-warning{background:var(--warning);max-width:380px}.auth-page{background:linear-gradient(160deg, var(--brand-dark), var(--brand));justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-card{background:var(--surface);border-radius:16px;width:100%;max-width:400px;padding:36px;box-shadow:0 20px 60px #00000040}.auth-card .auth-logo{width:auto;height:42px;margin:0 auto 18px;display:block}.auth-card h1{text-align:center;margin:0 0 4px;font-size:20px}.auth-card p.sub{color:var(--ink-soft);text-align:center;margin:0 0 24px;font-size:14px}.filters-bar{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:16px;display:flex}.text-muted{color:var(--ink-soft)}.text-sm{font-size:13px}.mt-0{margin-top:0}.inv-pagehead{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.inv-level{background:var(--brand-light);color:var(--brand-dark);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.inv-level-write{background:var(--success-light);color:var(--success)}.inv-tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;margin-bottom:16px;display:flex}.inv-tabs button{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:9px 14px;font-size:14px;font-weight:600}.inv-tabs button:hover{color:var(--brand-dark)}.inv-tabs button.active{color:var(--brand);border-bottom-color:var(--brand)}.inv-badge{background:var(--brand);color:#fff;text-align:center;border-radius:999px;min-width:18px;margin-left:6px;padding:0 6px;font-size:11px;line-height:18px;display:inline-block}.inv-layout{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:16px;display:grid}@media (width<=1000px){.inv-layout{grid-template-columns:1fr}}.inv-side{flex-direction:column;gap:16px;display:flex}.inv-side .card+.card{margin-top:0}.inv-side-card{padding:14px}.inv-main .card{padding:16px}.inv-mini-input{margin-bottom:6px;padding:6px 9px;font-size:13px}.inv-tree{font-size:13px}.inv-tree-list,.inv-tree-list ul{margin:0;padding:0;list-style:none}.inv-tree-list{max-height:340px;overflow:auto}.inv-tree-row{border-radius:6px;align-items:center;gap:2px;padding-right:6px;display:flex}.inv-tree-row:hover{background:var(--bg)}.inv-tree-row.selected{background:var(--brand-light)}.inv-tree-row.selected .inv-tree-name{color:var(--brand-dark);font-weight:700}.inv-tree-toggle{width:18px;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;flex:none;padding:0;font-size:12px}.inv-tree-name{text-align:left;min-width:0;font:inherit;color:var(--ink);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;flex:1;padding:4px 2px;overflow:hidden}.inv-count{color:var(--ink-soft);flex:none;margin-left:auto;padding-left:8px;font-size:11px}.inv-facet{border-top:1px solid var(--line)}.inv-facet:first-of-type{border-top:none}.inv-facet-head{width:100%;font:inherit;cursor:pointer;color:var(--ink);background:0 0;border:none;justify-content:space-between;padding:9px 0;font-size:13px;font-weight:700;display:flex}.inv-facet-body{padding-bottom:10px}.inv-facet-title{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);border-top:2px solid var(--line);margin-top:6px;padding:10px 0 2px;font-size:11px;font-weight:800}.inv-checklist{margin:0;padding:0;list-style:none}.inv-checklist .form-check{padding:2px 0;font-size:13px}.inv-check-label{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.inv-range{align-items:center;gap:6px;margin-bottom:6px;display:flex}.inv-range .inv-mini-input{margin:0}.inv-searchbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.inv-search{flex:1;min-width:240px;padding:11px 14px;font-size:15px}.inv-export{gap:6px;display:flex}.inv-crumbs{flex-wrap:wrap;align-items:center;gap:2px;margin-bottom:8px;font-size:13px;display:flex}.inv-crumb{color:var(--brand);cursor:pointer;font:inherit;background:0 0;border:none;padding:0 2px}.inv-chips{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.inv-chip{background:var(--brand-light);color:var(--brand-dark);cursor:pointer;border:none;border-radius:999px;padding:3px 10px;font-size:12px}.inv-chip:hover{background:#d6e4ff}.inv-table th{cursor:pointer;white-space:nowrap}.inv-row{cursor:pointer}.inv-sku{color:var(--ink-soft);white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.inv-name{font-weight:600}.inv-loc{max-width:220px;color:var(--ink-soft);font-size:12px}.inv-tag{background:var(--bg);border:1px solid var(--line);color:var(--ink-soft);border-radius:4px;margin-top:3px;padding:1px 7px;font-size:11px;display:inline-block}.inv-tag-warn{background:var(--warning-light);color:var(--warning);border-color:#0000}.inv-low{color:var(--warning)}.inv-zero{color:var(--danger)}.inv-detail-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.inv-detail-qty{font-size:22px}.inv-actions{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.inv-facts{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px 16px;margin-bottom:8px;display:grid}.inv-fact-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin-bottom:2px;font-size:11px}.inv-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin:16px 0 8px;font-size:13px}.inv-param-group{margin-bottom:10px}.inv-param-group-title{margin-bottom:6px;font-size:13px;font-weight:700}.inv-param-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:0 14px;display:grid}.inv-addparam{gap:8px;max-width:420px;margin-bottom:8px;display:flex}.inv-inline-form{flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;display:flex}.inv-inline-form>*{flex:140px;min-width:120px}.inv-inline-form .btn{flex:none}.inv-warn{background:var(--warning-light);color:#92400e;border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;padding:10px 12px;font-size:13px;display:flex}.inv-simple-list{margin:0;padding-left:18px;font-size:14px;line-height:1.8}.inv-table{min-width:980px}.inv-table td{vertical-align:top}.inv-table td:nth-child(2){min-width:260px}.inv-table td:not(:nth-child(2)):not(.inv-loc){white-space:nowrap}.inv-table .inv-loc{min-width:150px}.inv-layout{grid-template-columns:280px minmax(0,1fr)}.inv-tag-bad{background:var(--danger-light);color:var(--danger);border-color:#0000}.inv-tag+.inv-tag{margin-left:4px}.inv-note-warn{background:var(--warning-light);color:var(--warning);border-radius:var(--radius);margin-bottom:12px;padding:10px 14px;font-size:13px}.inv-note-ok{background:var(--success-light);color:var(--success);border-radius:var(--radius);margin:8px 0;padding:10px 14px;font-size:13px}.inv-pill{background:var(--bg);color:var(--ink-soft);border:1px solid var(--line);white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-block}.inv-po-ordered,.inv-po-part_received,.inv-as-in_use{background:var(--brand-light);color:var(--brand-dark);border-color:#0000}.inv-po-received{background:var(--success-light);color:var(--success);border-color:#0000}.inv-po-cancelled,.inv-as-lost,.inv-as-retired{background:var(--danger-light);color:var(--danger);border-color:#0000}.inv-as-under_repair{background:var(--warning-light);color:var(--warning);border-color:#0000}.inv-subtabs{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.inv-subtabs>button:not(.btn){background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600}.inv-subtabs>button.active:not(.btn){background:var(--brand-light);color:var(--brand-dark);border-color:#0000}.inv-suggest{z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);max-height:260px;margin:2px 0 0;padding:4px;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.inv-suggest button{text-align:left;cursor:pointer;width:100%;font:inherit;color:var(--ink);background:0 0;border:none;border-radius:6px;padding:7px 10px;display:block}.inv-suggest button:hover{background:var(--brand-light)}.inv-dropzone{border:2px dashed var(--line);border-radius:var(--radius);text-align:center;cursor:pointer;color:var(--ink-soft);padding:28px 16px;transition:background .15s,border-color .15s}.inv-dropzone:hover,.inv-dropzone.over{background:var(--brand-light);border-color:var(--brand)}.inv-in-needs_review{background:var(--warning-light);color:var(--warning);border-color:#0000}.inv-in-pending_approval{background:var(--brand-light);color:var(--brand-dark);border-color:#0000}.inv-in-approved{background:var(--success-light);color:var(--success);border-color:#0000}.inv-in-rejected,.inv-in-failed{background:var(--danger-light);color:var(--danger);border-color:#0000}.inv-cell-input{width:100%;min-width:64px;padding:4px 6px;font-size:13px}.inv-intake-lines td{vertical-align:top}.inv-intake-split{grid-template-columns:minmax(0,1fr) minmax(300px,42%);align-items:start;gap:16px;display:grid}.inv-intake-src{max-height:calc(100vh - 24px);position:sticky;top:12px;overflow:auto}.inv-rawtext{background:var(--bg);border:1px solid var(--line);white-space:pre-wrap;border-radius:8px;max-height:300px;padding:10px;font-size:12px;overflow:auto}@media (width<=1100px){.inv-intake-split{grid-template-columns:1fr}.inv-intake-src{max-height:none;position:static}}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:12px;display:grid}.exp-overlay{z-index:900;background:#0f172a80;justify-content:center;align-items:flex-start;padding:24px 12px;display:flex;position:fixed;inset:0;overflow-y:auto}.exp-dialog{width:100%;max-width:1040px;margin:0 auto}.exp-overlay .exp-overlay{z-index:950}.exp-status{background:var(--brand-light);color:var(--brand-dark);white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700;display:inline-block}.exp-status-draft{color:var(--ink-soft);background:#eef0f4}.exp-status-submitted,.exp-status-manager_approved{background:var(--warning-light);color:var(--warning)}.exp-status-approved{background:var(--brand-light);color:var(--brand-dark)}.exp-status-paid{background:var(--success-light);color:var(--success)}.exp-status-rejected,.exp-status-cancelled{background:var(--danger-light);color:var(--danger)}.exp-chip{color:var(--ink-soft);vertical-align:middle;background:#eef0f4;border-radius:999px;margin-left:6px;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.exp-row{cursor:pointer}.exp-row:hover{background:var(--brand-light)}.exp-headgrid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px 20px;margin-bottom:12px;display:grid}.exp-lines td{vertical-align:top}.exp-linemeta{grid-template-columns:1fr 1fr;gap:4px;margin-top:4px;display:grid}.exp-linemeta .form-select,.exp-linemeta .form-input{padding:4px 6px;font-size:12px}.exp-suggest{background:var(--success-light);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:4px;padding:6px 8px;display:flex}.exp-actions{flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;display:flex}.exp-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin:12px 0;padding:12px 14px}.exp-timeline{margin:0;padding:0;list-style:none}.exp-timeline li{border-left:2px solid var(--line);padding:6px 0 6px 14px}.exp-company td{background:#faf7ee}.exp-received td{background:var(--success-light)}@media (width<=640px){.exp-linemeta{grid-template-columns:1fr}.exp-overlay{padding:8px 4px}}
