:root{--bg: #0f1419;--panel: #1a2332;--border: #2d3a4f;--text: #e8edf4;--muted: #8b9cb3;--accent: #3b82f6;--accent-hover: #2563eb;--danger: #ef4444;--ok: #22c55e}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text)}#root{min-height:100%}#root:has(.layout){height:100%;overflow:hidden}a{color:var(--accent);text-decoration:none}.layout{display:flex;height:100%;min-height:100vh;overflow:hidden}.sidebar{width:220px;flex-shrink:0;display:flex;flex-direction:column;height:100%;background:var(--panel);border-right:1px solid var(--border);padding:1rem;overflow:hidden}.sidebar nav{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;margin-right:-.35rem;padding-right:.35rem}.sidebar h1{font-size:1.1rem;margin:0 0 1rem;color:var(--accent)}.sidebar nav a{display:block;border-radius:6px;color:var(--muted);margin-bottom:.15rem;text-decoration:none}.sidebar nav a.active,.sidebar nav a:hover{background:#243044;color:var(--text)}.nav-group{margin-bottom:1rem}.nav-group+.nav-group{padding-top:.15rem;border-top:1px solid var(--border)}.nav-group:first-of-type{border-top:none;padding-top:0}.nav-parent{font-size:.9rem;font-weight:600;color:var(--text);padding:.45rem .75rem .2rem;margin-bottom:.1rem}.sidebar nav a.nav-top{font-size:.9rem;font-weight:500;padding:.45rem .75rem;color:var(--text)}.sidebar nav a.nav-child{font-size:.78rem;font-weight:400;padding:.32rem .75rem .32rem 1.6rem;color:var(--muted)}.sidebar nav a.nav-child.active{color:var(--text)}.btn-logout{flex-shrink:0;margin-top:auto;width:100%;background:transparent;border:1px solid var(--border);color:var(--muted);padding:.5rem;border-radius:6px;cursor:pointer}.main{flex:1;min-width:0;min-height:0;padding:1.5rem;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem;margin-bottom:1rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}.stat strong{display:block;font-size:1.5rem;margin-top:.25rem}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.5rem;border-bottom:1px solid var(--border)}td.num,th.num{text-align:right}td.center,th.center{text-align:center}.stock-tabs{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:.75rem}.stock-tab{padding:.45rem .9rem;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--text);cursor:pointer;font-size:.9rem}.stock-tab.active{border-color:var(--accent);background:#1a2a3d}.order-line-block{margin-bottom:.65rem}.line-stock-hint{margin:.2rem 0 .5rem;font-size:.85rem}.warn-text{color:#f59e0b}tr.row-muted td{opacity:.55}th{color:var(--muted);font-weight:500}input,select,button{font:inherit;padding:.5rem .75rem;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text)}input.date-picker-input,input[type=date],input[type=month],input[type=datetime-local]{cursor:pointer;color-scheme:dark;min-height:2.25rem}input.date-picker-input::-webkit-calendar-picker-indicator,input[type=date]::-webkit-calendar-picker-indicator,input[type=month]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator{cursor:pointer;filter:invert(.85);opacity:.95}button{background:var(--accent);border:none;cursor:pointer;color:#fff}button:hover{background:var(--accent-hover)}.login-box{max-width:360px;margin:15vh auto}.login-box label{display:block;margin:.75rem 0 .25rem;color:var(--muted)}.login-box input{width:100%}.login-box button{width:100%;margin-top:1rem}.error{color:var(--danger);font-size:.85rem}.hint{color:var(--muted);font-size:.85rem;margin:0 0 1rem}.muted{color:var(--muted);font-size:.85rem}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.5rem;flex-wrap:wrap}.page-header h2{margin:0}.btn-primary{background:var(--accent);color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border);padding:.5rem .75rem;border-radius:6px;cursor:pointer}.form-card label{display:block;margin-bottom:.75rem;color:var(--muted);font-size:.9rem}.form-card label.inline-field{margin-bottom:0;font-size:.8rem}.form-card label.inline-field input{width:100%;margin-top:.2rem}.form-card select,.form-card input{width:100%;margin-top:.25rem}.form-row{display:grid;grid-template-columns:2fr .7fr .7fr 1fr .7fr auto;gap:.5rem;margin-bottom:.5rem;align-items:center}.form-actions{display:flex;gap:.5rem;margin-top:1rem;flex-wrap:wrap}.badge{font-size:.75rem;padding:.15rem .5rem;border-radius:4px;background:#243044}.badge-confirmed{background:#14532d;color:var(--ok)}.badge-draft{background:#422006;color:#fbbf24}.badge-cancelled{background:#450a0a;color:var(--danger)}.badge-delivered{background:#14532d;color:var(--ok)}.badge-pending{background:#1e3a5f;color:#93c5fd}.badge-move-in{background:#14532d;color:var(--ok)}.badge-move-out{background:#450a0a;color:#fca5a5}.badge-move-transfer{background:#1e3a5f;color:#93c5fd}.history-filters{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end;margin-bottom:.35rem}.history-filters label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--muted)}.history-tabs{margin-bottom:0}.history-product-select{min-width:260px;max-width:100%}.history-summary{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;margin:.5rem 0 .75rem;font-size:.9rem}.ok-text{color:var(--ok)}.stock-actions{display:flex;gap:.4rem;flex-wrap:wrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal-card{max-width:720px;width:100%;margin:0}.confirm-dialog{max-width:420px}tr.row-qc td{background:#1a2438}.tabs{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.tabs button{background:#1a2438;border:1px solid var(--border);color:var(--muted);padding:.4rem .9rem;border-radius:6px;cursor:pointer}.tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;align-items:end}.form-grid label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--muted)}.inline-form{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.75rem}.inline-form select,.inline-form input{min-width:160px}.btn-danger{background:#7f1d1d;color:#fecaca;border:none;padding:.5rem .75rem;border-radius:6px;cursor:pointer}.badge-pass{background:#14532d;color:var(--ok)}.badge-fail{background:#450a0a;color:var(--danger)}.badge-hold{background:#422006;color:#fbbf24}.move-block{margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.move-block:last-child{border-bottom:none}.checkbox-label{display:flex;align-items:center;gap:.35rem;margin-bottom:.35rem;font-size:.85rem}.sidebar-user{font-size:.8rem;margin:0 0 1rem;line-height:1.4;padding:0 .25rem}@media(max-width:900px){.form-row{grid-template-columns:1fr}}.bom-list{margin:.5rem 0 0;padding-left:1.25rem;color:var(--muted);font-size:.9rem}.card.nested{margin-top:.75rem;background:#121a24}.ok-box{border-color:var(--ok)!important}.warn-box{border-color:#f59e0b!important}.btn-link{background:none;border:none;color:var(--accent);cursor:pointer;padding:0;font:inherit}.detail-row td{background:#121a24;padding:1rem!important}.actions-cell{display:flex;flex-direction:column;gap:.35rem;align-items:flex-start}.complete-form{margin-top:.5rem}.form-row.mo-meta{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}table.compact{font-size:.85rem;margin-top:.5rem}table.compact th,table.compact td{padding:.35rem .5rem}.bom-block{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.bom-block:last-child{border-bottom:none;margin-bottom:0}.bom-block h4{margin:0 0 .5rem;font-size:1rem}.form-row.bom-line-row{grid-template-columns:2fr .7fr .7fr .6fr .6fr auto}table.bom-edit-table{margin:.75rem 0}table.bom-edit-table th{text-align:center;white-space:nowrap}table.bom-edit-table td{vertical-align:middle}table.bom-edit-table select,table.bom-edit-table input{width:100%;min-width:0}table.bom-edit-table tr.bom-total-row td{background:#121a24;border-top:2px solid var(--border)}table.bom-edit-table.ok-box{border:1px solid var(--ok);border-radius:8px}table.bom-edit-table.warn-box{border:1px solid #f59e0b;border-radius:8px}tr.bom-stage-note-row td{background:#121a24;color:var(--muted);font-style:italic;padding-top:.65rem;padding-bottom:.65rem}tr.bom-stage-note-row em{color:#93c5fd;font-style:normal}li.bom-stage-note-item{color:#93c5fd;list-style:none;margin-left:-1.25rem}.tab-bar{display:flex;flex-wrap:wrap;gap:.35rem}.tab-bar button{padding:.45rem .85rem;border-radius:6px;border:1px solid var(--border);background:var(--panel);color:var(--muted);cursor:pointer}.tab-bar button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.inline-input{width:100%;min-width:70px;padding:.25rem .4rem;font-size:.9rem}table.pack-lines-table input,table.pack-lines-table select{width:100%;min-width:0}table.pack-lines-table td{vertical-align:middle}.kpi-row{display:flex;flex-wrap:wrap;gap:1rem}.kpi{padding:1rem 1.25rem;min-width:160px}.kpi-label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.25rem}.batch-scan-page{max-width:480px;margin:0 auto;padding:1rem}.scan-form{display:flex;flex-direction:column;gap:.75rem}.scan-input{font-size:1.25rem;padding:1rem;width:100%;border-radius:8px;border:2px solid var(--accent)}.scan-btn{font-size:1.1rem;padding:.85rem}.scan-result{margin-top:1rem;font-size:1.05rem}.scan-result h3{font-size:1.5rem}input.att-input{width:4rem;padding:.25rem .35rem;text-align:right;font-size:.9rem}input.att-input-wide{width:4.5rem}tr.hr-row-focus td{background:#38bdf814}button.btn-link{background:none;border:none;color:var(--accent);cursor:pointer;padding:0;font:inherit;text-align:left}button.btn-link:hover{text-decoration:underline}.warn-text{color:#f59e0b!important}@media(max-width:768px){.sidebar{display:none}.main{padding:.75rem;width:100%}.layout{flex-direction:column;height:100%}}
