:root{--bg: #0f1419;--panel: #171e26;--panel-2: #1d2630;--border: #2a3744;--text: #e6edf3;--muted: #8b9bab;--accent: #4da3ff;--green: #3fb950;--red: #f85149;--amber: #d29922;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}.app{max-width:1200px;margin:0 auto;padding:0 20px 60px}header.topbar{display:flex;align-items:baseline;gap:16px;padding:18px 0 10px;border-bottom:1px solid var(--border);margin-bottom:18px}.topbar h1{font-size:20px;margin:0}.topbar h1 span{color:var(--accent)}.topbar .tag{font-size:11px;color:var(--amber);border:1px solid var(--amber);border-radius:10px;padding:2px 8px}nav.tabs{display:flex;gap:6px;margin-left:auto}nav.tabs button{background:transparent;color:var(--muted);border:1px solid transparent;border-radius:8px;padding:7px 14px;font-size:14px;cursor:pointer}nav.tabs button:hover{color:var(--text)}nav.tabs button.active{background:var(--panel-2);color:var(--text);border-color:var(--border)}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.card .num{font-size:26px;font-weight:600}.card .label{color:var(--muted);font-size:12px;margin-top:2px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px}.panel h2{margin:0 0 10px;font-size:16px}.panel p.hint{color:var(--muted);font-size:13px;margin:4px 0 12px}input[type=text],input[type=number],select{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 12px;font-size:14px}input[type=text]{width:320px}button.primary{background:var(--accent);color:#04111f;font-weight:600;border:none;border-radius:8px;padding:8px 16px;font-size:14px;cursor:pointer}button.primary:disabled{opacity:.5;cursor:default}button.ghost{background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:8px;padding:6px 12px;cursor:pointer}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:var(--muted);font-weight:500;border-bottom:1px solid var(--border);padding:6px 8px}td{padding:6px 8px;border-bottom:1px solid #20262e}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.badge{display:inline-block;font-size:11px;border-radius:9px;padding:1px 8px}.badge.make{background:#16321d;color:var(--green);border:1px solid #1e4527}.badge.buy{background:#1c2a3a;color:var(--accent);border:1px solid #28405c}.badge.short{background:#3a1518;color:var(--red);border:1px solid #582026}.badge.ok{background:#16321d;color:var(--green);border:1px solid #1e4527}.split{display:grid;grid-template-columns:360px 1fr;gap:16px;align-items:start}.bom-list{max-height:640px;overflow-y:auto}.bom-list .row{padding:8px 10px;border-radius:8px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;font-size:13px}.bom-list .row:hover{background:var(--panel-2)}.bom-list .row.selected{background:var(--panel-2);outline:1px solid var(--accent)}.bom-list .row .meta{color:var(--muted);white-space:nowrap}.tree{font-size:13px}.tree .node{padding:3px 0}.tree .node-row{display:flex;align-items:center;gap:8px;padding:3px 6px;border-radius:6px}.tree .node-row:hover{background:var(--panel-2)}.tree .toggle{width:18px;height:18px;line-height:16px;text-align:center;background:var(--panel-2);border:1px solid var(--border);border-radius:4px;color:var(--accent);cursor:pointer;font-size:11px;flex:none}.tree .toggle.leaf{visibility:hidden}.tree .sku{color:var(--accent);font-weight:600;white-space:nowrap}.tree .name{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree .qty{color:var(--muted);white-space:nowrap;margin-left:auto;font-variant-numeric:tabular-nums}.tree .children{margin-left:22px;border-left:1px dashed var(--border);padding-left:10px}.pager{display:flex;gap:8px;align-items:center;margin-top:10px;color:var(--muted);font-size:13px}.login-wrap{min-height:90vh;display:flex;align-items:center;justify-content:center}.login-card{width:340px;display:flex;flex-direction:column;gap:12px}.login-card h1{margin:0;font-size:26px;text-align:center}.login-card input{width:100%}.userchip{background:var(--panel-2);color:var(--muted);border:1px solid var(--border);border-radius:8px;padding:7px 12px;font-size:13px;cursor:pointer;margin-left:10px}.userchip:hover{color:var(--red);border-color:var(--red)}.error{color:var(--red);font-size:13px}.loading{color:var(--muted);font-size:13px;padding:12px 0}.formrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
