@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg: #f5f6fa;--bg2: #ffffff;--bg3: #f0f2f7;--bg4: #e8ebf4;--border: #e2e6f0;--border2: #c8d0e8;--text: #1a1f36;--text2: #4a5478;--text3: #8892b0;--accent: #3b5bdb;--accent2: #4c6ef5;--accent-bg: #eef2ff;--green: #0ca678;--green-bg: #e6fcf5;--amber: #f08c00;--amber-bg: #fff9db;--blue: #1971c2;--blue-bg: #e7f5ff;--red: #e03131;--red-bg: #fff5f5;--gray: #868e96;--radius: 8px;--radius2: 12px;--shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);--shadow2: 0 4px 12px rgba(0,0,0,.1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{background:var(--bg2);border-bottom:1px solid var(--border);padding:0 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;position:sticky;top:0;z-index:100;height:60px;box-shadow:var(--shadow)}.header-brand{display:flex;align-items:center;gap:10px}.brand-icon{font-size:24px}.header-brand h1{font-size:16px;font-weight:700;letter-spacing:.02em;color:var(--accent)}.header-brand p{font-size:11px;color:var(--text3)}.header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.btn-import{background:var(--accent);color:#fff;border:none;padding:7px 14px;border-radius:var(--radius);cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;transition:background .15s;box-shadow:0 1px 3px #3b5bdb4d}.btn-import:hover{background:var(--accent2)}.btn-import.loading{opacity:.7;cursor:not-allowed}.import-msg{font-size:12px;font-weight:500}.import-msg.ok{color:var(--green)}.import-msg.err{color:var(--red)}.app-nav{background:var(--bg2);border-bottom:1px solid var(--border);padding:0 24px;display:flex;gap:2px}.nav-tab{background:none;border:none;border-bottom:2px solid transparent;padding:14px 16px;color:var(--text2);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.nav-tab:hover{color:var(--text);background:var(--bg3)}.nav-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.app-main{flex:1;padding:20px 24px}.btn-primary{background:var(--accent);color:#fff;border:none;padding:8px 16px;border-radius:var(--radius);cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;transition:background .15s;box-shadow:0 1px 3px #3b5bdb40}.btn-primary:hover:not(:disabled){background:var(--accent2)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--bg2);color:var(--text2);border:1px solid var(--border2);padding:8px 16px;border-radius:var(--radius);cursor:pointer;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s}.btn-secondary:hover{background:var(--bg3);color:var(--text)}.btn-icon{background:none;border:none;padding:4px 6px;cursor:pointer;font-size:14px;border-radius:6px;transition:background .1s;color:var(--text3)}.btn-icon:hover{background:var(--bg3);color:var(--text)}.btn-icon.danger:hover{background:var(--red-bg);color:var(--red)}.btn-small{background:var(--accent);border:none;color:#fff;border-radius:6px;padding:5px 10px;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer}.btn-small:disabled{opacity:.4;cursor:not-allowed}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 24px;gap:12px;text-align:center}.empty-icon{font-size:56px}.empty-state h2{font-size:20px;font-weight:600;color:var(--text)}.empty-state p{color:var(--text2);max-width:380px;font-size:14px}.dashboard{display:flex;flex-direction:column;gap:20px;max-width:1200px}.dash-progress-bar-wrap{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius2);padding:20px 24px;box-shadow:var(--shadow)}.dash-progress-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--text2)}.dash-progress-label .pct{font-weight:700;font-size:28px;color:var(--green)}.dash-progress-bar{height:10px;background:var(--bg3);border-radius:99px;overflow:hidden}.dash-progress-fill{height:100%;background:linear-gradient(90deg,var(--green),#38d9a9);border-radius:99px;transition:width .6s ease}.dash-progress-sub{font-size:12px;color:var(--text3);margin-top:8px}.dash-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.dash-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius2);padding:18px 20px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow);transition:box-shadow .15s}.dash-card:hover{box-shadow:var(--shadow2)}.card-icon{font-size:22px}.card-num{font-size:26px;font-weight:700;color:var(--text)}.card-label{font-size:12px;color:var(--text3);font-weight:500}.card-done .card-num{color:var(--green)}.card-ready .card-num{color:#0ca678}.card-wip .card-num{color:var(--blue)}.card-pending .card-num{color:var(--amber)}.card-truck .card-num{color:var(--accent)}.dash-breakdown{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius2);padding:20px 24px;box-shadow:var(--shadow)}.dash-breakdown h3{font-size:13px;font-weight:600;color:var(--text2);margin-bottom:16px;text-transform:uppercase;letter-spacing:.05em}.status-bars{display:flex;flex-direction:column;gap:10px}.status-bar-row{display:grid;grid-template-columns:140px 1fr 110px;align-items:center;gap:12px}.status-label{font-size:13px;font-weight:500}.status-bar-track{height:6px;background:var(--bg3);border-radius:99px;overflow:hidden}.status-bar-fill{height:100%;border-radius:99px;transition:width .5s ease}.status-qty{font-size:12px;color:var(--text2);text-align:right;font-weight:500}.dash-quick-orders{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius2);padding:20px 24px;box-shadow:var(--shadow)}.dash-quick-orders h3{font-size:13px;font-weight:600;color:var(--text2);margin-bottom:16px;text-transform:uppercase;letter-spacing:.05em}.quick-order-list{display:flex;flex-direction:column;gap:10px}.quick-order-item{display:grid;grid-template-columns:180px 100px 1fr 60px;align-items:center;gap:12px}.order-code{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;color:var(--accent)}.order-qty{font-size:12px;color:var(--text2);font-weight:500}.mini-bar{height:6px;background:var(--bg3);border-radius:99px;overflow:hidden}.mini-fill{height:100%;background:var(--green);border-radius:99px}.order-pct{font-size:13px;color:var(--green);text-align:right;font-weight:700}.delivery-progress{display:flex;flex-direction:column;gap:14px}.dp-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius2);padding:14px 16px;box-shadow:var(--shadow)}.dp-filters{display:flex;flex-direction:column;gap:10px;flex:1}.search-input{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;color:var(--text);font-family:inherit;font-size:13px;width:100%;max-width:360px;outline:none;transition:border-color .15s,box-shadow .15s}.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #3b5bdb1a;background:#fff}.status-filter-tabs{display:flex;flex-wrap:wrap;gap:6px}.filter-tab{background:var(--bg3);border:1px solid var(--border);border-radius:99px;padding:5px 12px;font-family:inherit;font-size:12px;font-weight:500;color:var(--text2);cursor:pointer;transition:all .15s}.filter-tab:hover{border-color:var(--border2);color:var(--text);background:var(--bg2)}.filter-tab.active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent);font-weight:600}.dp-stats{display:flex;gap:8px;align-items:center;padding-top:2px}.stat-chip{background:var(--bg3);border:1px solid var(--border);border-radius:99px;padding:4px 12px;font-size:12px;font-weight:600;color:var(--text2)}.table-wrap{overflow-x:auto;border-radius:var(--radius2);border:1px solid var(--border);box-shadow:var(--shadow);background:var(--bg2)}.dp-table{width:100%;border-collapse:collapse;font-size:13px}.dp-table thead th{background:var(--bg3);color:var(--text2);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:11px 14px;white-space:nowrap;border-bottom:1px solid var(--border);text-align:left}.dp-row{border-bottom:1px solid var(--border);transition:background .1s}.dp-row:last-child{border-bottom:none}.dp-row:hover{background:#f8f9ff}.dp-row td{padding:9px 14px;vertical-align:middle}.cell-loaihop{max-width:220px}.loaihop-name{font-size:12.5px;line-height:1.45;color:var(--text);font-weight:500}.badge-notam{display:inline-block;background:var(--red-bg);color:var(--red);border:1px solid #ffc9c9;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:600;margin-top:3px}.cell-mono{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text2)}.cell-small{font-size:11px}.cell-num{font-family:JetBrains Mono,monospace;font-weight:700;font-size:13px;text-align:right;color:var(--text)}.status-select{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;outline:none;width:100%;transition:border-color .15s}.status-select:focus{border-color:var(--accent)}.inline-input{background:transparent;border:1px solid transparent;border-radius:6px;padding:5px 7px;color:var(--text);font-family:inherit;font-size:12px;width:100%;outline:none;transition:all .15s}.inline-input:hover{border-color:var(--border);background:var(--bg3)}.inline-input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 2px #3b5bdb1a}.date-input{background:var(--bg3);border:1px solid var(--border);border-radius:6px;padding:5px 7px;color:var(--text);font-family:JetBrains Mono,monospace;font-size:11px;outline:none;width:130px;transition:border-color .15s}.date-input:focus{border-color:var(--accent);background:#fff}.btn-boi{background:var(--bg3);border:1px dashed var(--border2);border-radius:6px;padding:4px 10px;color:var(--text3);font-size:11px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all .15s}.btn-boi:hover{border-color:var(--amber);color:var(--amber);background:var(--amber-bg)}.btn-boi.has-data{border-style:solid;border-color:var(--amber);color:var(--amber);background:var(--amber-bg);font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f143266;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-box{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius2);width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000026}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);gap:12px;background:var(--bg3);border-radius:var(--radius2) var(--radius2) 0 0}.modal-header h3{font-size:15px;font-weight:700;color:var(--text)}.modal-close{background:none;border:none;color:var(--text3);font-size:18px;cursor:pointer;padding:2px 6px;border-radius:4px;line-height:1}.modal-close:hover{background:var(--border);color:var(--text)}.modal-body{padding:20px;display:flex;flex-direction:column;gap:14px}.modal-footer{padding:14px 20px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end;background:var(--bg3);border-radius:0 0 var(--radius2) var(--radius2)}.form-row{display:flex;align-items:center;gap:12px}.form-row label{min-width:120px;font-size:13px;color:var(--text2);font-weight:500}.form-val{font-size:13px;font-weight:600;color:var(--text)}.modal-input{flex:1;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;color:var(--text);font-family:inherit;font-size:13px;outline:none;transition:border-color .15s}.modal-input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px #3b5bdb14}.truck-modal{max-width:1060px!important;width:95vw}.step-indicator{display:flex;align-items:center;gap:8px;font-size:12px}.step{color:var(--text3);font-weight:500}.step.active{color:var(--accent);font-weight:700}.step-arrow{color:var(--text3)}.truck-step1{max-height:68vh;overflow-y:auto}.hint{font-size:12px;color:var(--text2);background:var(--blue-bg);border-radius:6px;padding:8px 12px;border-left:3px solid var(--blue)}.size-group{margin-bottom:16px}.size-group-header{background:var(--accent-bg);border:1px solid #c5d0ff;padding:7px 12px;border-radius:6px;font-size:12px;font-weight:700;color:var(--accent);margin-bottom:6px}.truck-item-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;border:1px solid transparent;transition:all .1s;flex-wrap:wrap}.truck-item-row:hover{background:var(--bg3)}.truck-item-row.selected{background:var(--accent-bg);border-color:#c5d0ff}.ti-mabv{font-family:JetBrains Mono,monospace;font-size:12px;font-weight:700;min-width:80px;color:var(--accent)}.ti-lot{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text3);min-width:60px}.ti-name{font-size:12px;flex:1;color:var(--text)}.ti-avail{font-size:11px;color:var(--text3);font-weight:500}.ti-date{font-size:11px;color:var(--amber);font-weight:600}.qty-input{background:#fff;border:1px solid var(--accent);border-radius:6px;padding:4px 8px;color:var(--text);font-family:JetBrains Mono,monospace;font-size:12px;width:80px;outline:none}.truck-step2{overflow:hidden}.step2-grid{display:grid;grid-template-columns:1fr 340px;gap:20px;max-height:68vh;overflow-y:auto;padding:4px}.pallet-builder{display:flex;flex-direction:column;gap:10px}.pb-header{display:flex;align-items:center;justify-content:space-between}.pb-header h4{font-size:14px;font-weight:700;color:var(--text)}.btn-add-pallet{background:var(--accent-bg);border:1px dashed var(--accent);color:var(--accent);border-radius:var(--radius);padding:6px 12px;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}.btn-add-pallet:hover{background:#dce4ff}.empty-pallets{text-align:center;padding:30px;color:var(--text3);font-size:13px;background:var(--bg3);border-radius:var(--radius);border:1px dashed var(--border2)}.pallet-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius2);overflow:hidden;box-shadow:var(--shadow)}.pc-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--bg3);border-bottom:1px solid var(--border)}.pc-code{font-family:JetBrains Mono,monospace;font-weight:700;color:var(--accent);font-size:13px}.pc-total{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text2);font-weight:600}.pc-add-row{display:flex;gap:6px;padding:10px 14px;align-items:center;background:var(--bg3)}.pc-select{background:#fff;border:1px solid var(--border);border-radius:6px;padding:5px 8px;color:var(--text);font-family:inherit;font-size:12px;flex:1;outline:none}.pallet-detail-table{width:100%;border-collapse:collapse;font-size:12px}.pallet-detail-table th{background:var(--bg3);padding:7px 12px;text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);font-weight:700;border-bottom:1px solid var(--border)}.pallet-detail-table td{padding:6px 12px;border-top:1px solid var(--border);vertical-align:middle;color:var(--text)}.pc-qty{font-weight:700;color:var(--green);font-family:JetBrains Mono,monospace}.pallet-overview h4{font-size:13px;font-weight:700;color:var(--text);margin-bottom:10px}.overview-table{background:var(--bg2);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow)}.ov-size-header{background:var(--accent-bg);padding:7px 12px;font-size:11px;font-weight:700;color:var(--accent);border-bottom:1px solid #c5d0ff;letter-spacing:.02em}.ov-row{display:flex;align-items:center;gap:8px;padding:7px 12px;border-bottom:1px solid var(--border)}.ov-row:last-child{border-bottom:none}.ov-mabv{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;min-width:80px;color:var(--text)}.ov-lot{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text3);flex:1}.ov-qty{font-family:JetBrains Mono,monospace;font-size:12px;font-weight:700;color:var(--green)}.weight-table{background:var(--bg2);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow)}.wt-row{display:grid;grid-template-columns:70px 90px 130px 80px;padding:7px 12px;font-size:12px;border-bottom:1px solid var(--border);color:var(--text2)}.wt-total{display:grid;grid-template-columns:70px 90px 130px 80px;padding:9px 12px;font-size:12px;font-weight:700;background:var(--bg3);color:var(--text)}.wt-total.overload{background:var(--red-bg)}.overload-num{color:var(--red)}.overload{color:var(--red);font-weight:700}.tamlot-table{background:var(--bg2);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;box-shadow:var(--shadow)}.tl-row{display:flex;justify-content:space-between;align-items:center;padding:7px 12px;font-size:12px;border-bottom:1px solid var(--border);color:var(--text2)}.tl-row:last-child{border-bottom:none}.tl-qty{font-family:JetBrains Mono,monospace;font-weight:700;color:var(--green)}.tl-empty{padding:10px 12px;font-size:12px;color:var(--text3)}.truck-list{display:flex;flex-direction:column;gap:18px}.tl-toolbar{display:flex;align-items:center;justify-content:space-between}.tl-toolbar h2{font-size:18px;font-weight:700;color:var(--text)}.ready-banner{background:var(--green-bg);border:1px solid #b2f2e0;border-radius:var(--radius);padding:12px 16px;font-size:13px;color:#087f5b;font-weight:500}.trucks-grid{display:flex;flex-direction:column;gap:14px}.truck-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius2);overflow:hidden;box-shadow:var(--shadow);transition:box-shadow .15s}.truck-card:hover{box-shadow:var(--shadow2)}.truck-card.done{opacity:.6}.tc-header{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);background:var(--bg3)}.tc-title{font-size:14px;font-weight:700;flex:1;color:var(--text)}.tc-date{font-size:12px;color:var(--amber);font-weight:600;background:var(--amber-bg);padding:3px 8px;border-radius:99px}.tc-actions{display:flex;gap:8px}.tc-summary{display:flex;gap:20px;padding:10px 18px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text2);font-weight:500}.tc-details{padding:14px 18px}.tc-details summary{cursor:pointer;font-size:13px;color:var(--text2);font-weight:600;margin-bottom:10px}.tc-pallet{margin-bottom:12px}.tcp-header{display:flex;justify-content:space-between;padding:6px 0;font-size:12px;font-weight:700;font-family:JetBrains Mono,monospace;color:var(--accent)}.tc-tamlot{display:flex;align-items:center;gap:8px;padding:10px 18px;font-size:12px;flex-wrap:wrap;border-top:1px solid var(--border);background:var(--bg3);font-weight:600;color:var(--text2)}.tl-chip{background:var(--blue-bg);border:1px solid #a5d8ff;border-radius:99px;padding:2px 10px;font-size:11px;color:var(--blue);font-weight:600}.app-loading{display:flex;align-items:center;justify-content:center;min-height:200px;color:var(--text2);font-size:14px;gap:10px}.dp-right-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.btn-lock{background:var(--bg3);border:1px solid var(--border2);border-radius:var(--radius);padding:7px 14px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;color:var(--text2);transition:all .15s}.btn-lock:hover{background:var(--bg4)}.btn-lock.unlocked{background:#fff3bf;border-color:#f08c00;color:#e67700}.lock-banner{background:#fff3bf;border:1px solid #ffe066;border-radius:var(--radius);padding:10px 16px;font-size:13px;color:#7c4f00}.status-badge{display:inline-block;padding:4px 10px;border-radius:99px;font-size:12px;font-weight:600;border:1px solid currentColor}.cell-text{font-size:12px;color:var(--text2)}.toggle-label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--text2);cursor:pointer;white-space:nowrap}.toggle-label input[type=checkbox]{cursor:pointer;accent-color:var(--accent);width:15px;height:15px}.remaining-summary{display:flex;flex-wrap:wrap;gap:6px;padding:8px;background:var(--bg3);border-radius:var(--radius);border:1px solid var(--border);margin-bottom:4px}.rem-chip{font-size:11px;font-weight:600;padding:3px 10px;border-radius:99px;background:var(--blue-bg);border:1px solid #a5d8ff;color:var(--blue)}.rem-chip.rem-done{background:var(--green-bg);border-color:#96f2d7;color:var(--green)}.rem-chip.rem-over{background:var(--red-bg);border-color:#ffc9c9;color:var(--red)}.pallet-print-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:10px}.pallet-print-table th{background:var(--bg3);padding:8px 12px;text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text2);font-weight:700;border:1px solid var(--border)}.pallet-print-table td{padding:6px 12px;border:1px solid var(--border);vertical-align:middle;color:var(--text)}.ppt-pallet{font-family:JetBrains Mono,monospace;font-weight:700;color:var(--accent);text-align:center}.ppt-total{font-size:10px;color:var(--green);font-weight:600}.ppt-center{text-align:center}.ppt-qty{font-weight:700;color:var(--green);font-family:JetBrains Mono,monospace}.ppt-foot td{background:var(--bg3);font-weight:700}tfoot{display:table-footer-group}.btn-print{background:var(--bg3);border:1px solid var(--border2);border-radius:var(--radius);padding:5px 12px;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;color:var(--text2);transition:all .15s}.btn-print:hover{background:#e7f5ff;border-color:var(--blue);color:var(--blue)}.ov-row{padding:5px 12px}.tc-summary{padding:8px 18px;font-size:12px}
