:root{--bg: #f4f5f7;--surface: #ffffff;--text: #16181d;--muted: #5f6673;--border: #d5d9e0;--primary: #1f5eff;--primary-text: #ffffff;--success: #138a43;--danger: #c62828;--ok-bg: #e3f6ea;--bad-bg: #fde7e7;--radius: 12px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:20px;color:var(--text);background:var(--bg)}@media(prefers-color-scheme:dark){:root{--bg: #111318;--surface: #1b1e25;--text: #eceef2;--muted: #9aa1ad;--border: #333845;--primary: #4d7dff;--success: #2ea862;--danger: #e0514f;--ok-bg: #16361f;--bad-bg: #3d1a1a}}.skeleton{display:inline-block;height:1em;border-radius:4px;vertical-align:middle;background:linear-gradient(90deg,var(--border) 25%,var(--bg) 37%,var(--border) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite}.spinner{display:inline-block;flex:none;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}*{box-sizing:border-box}body{margin:0;background:var(--bg);overflow-x:hidden}h1{font-size:2.2rem;margin:0 0 1rem}h2{font-size:1.4rem;margin:.5rem 0 0}label{display:flex;flex-direction:column;gap:.35rem;font-weight:600}.app{min-height:100vh;display:flex;flex-direction:column}.content{padding:1rem;max-width:1100px;width:100%;margin:0 auto}.content.wide{max-width:none}.topbar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.5rem 1rem;background:var(--surface);border-bottom:1px solid var(--border)}.topbar-left,.topbar-right{display:flex;align-items:center;gap:.75rem}.user-name{font-weight:700;font-size:1.1rem}.menu-toggle{display:none;font-size:1.5rem;padding:.3rem .9rem}.topbar-left{min-width:0}.client-chips{position:sticky;top:var(--topbar-h, 3.5rem);z-index:5;background:var(--bg);padding:.4rem 0}.home-logo{flex:none;display:flex;padding:0;border:0;background:none;cursor:pointer;border-radius:8px}.home-logo img{display:block;border-radius:8px}.home-logo:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.client-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:700px){.topbar{flex-wrap:nowrap}.menu-toggle{display:inline-block}.btn.desktop-only{display:none}.topbar-right{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:.25rem;padding:.5rem 1rem 1rem;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:0 8px 16px #00000026}.topbar-right.open{display:flex}.topbar-right .btn{text-align:left}.user-name{overflow:hidden;text-overflow:ellipsis}}.client-name{font-weight:700;font-size:1.1rem;color:var(--primary)}.stack{display:flex;flex-direction:column;gap:1rem}.row{display:flex;gap:.75rem;flex-wrap:wrap}.row-inline{display:inline-flex;align-items:center;gap:.3rem}.grow{flex:1}.center{align-items:center;text-align:center;padding-top:2rem}.muted{color:var(--muted);font-weight:400}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}.big{font-size:1.25rem;font-weight:700}.btn{border:none;border-radius:var(--radius);cursor:pointer;font:inherit;font-weight:700;padding:.7rem 1.2rem;min-height:3rem}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-icon{display:inline-flex;align-items:center;justify-content:center;gap:.4rem}.btn-icon svg{flex-shrink:0}.btn-xl{font-size:1.25rem;min-height:4rem;padding:.8rem 1.6rem}.btn-primary{background:var(--primary);color:var(--primary-text)}.btn-success{background:var(--success);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-secondary{background:var(--surface);color:var(--text);border:2px solid var(--border)}.btn-ghost{background:transparent;color:var(--text)}.btn-ghost:hover{background:var(--border)}.btn-tile{background:var(--surface);color:var(--text);border:2px solid var(--border);font-size:1.5rem;min-height:7rem}.btn-tile:hover{border-color:var(--primary)}.input{font:inherit;font-weight:400;padding:.7rem .9rem;min-height:3.2rem;border:2px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);width:100%}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 30%,transparent)}.input-xl{font-size:1.4rem;min-height:4rem}.input-scan{font-size:1.8rem;min-height:5rem;font-family:ui-monospace,Menlo,monospace;flex:1;min-width:0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}.login{max-width:480px;margin:3rem auto;padding:0 1rem}.account-form{max-width:480px}.tabs{display:flex;gap:.5rem;margin-bottom:1.25rem}.tab{flex:1;font:inherit;font-weight:700;min-height:3.5rem;cursor:pointer;border-radius:var(--radius);border:2px solid var(--border);background:var(--surface);color:var(--text)}.tab.active{background:var(--primary);color:var(--primary-text);border-color:var(--primary)}.tab-sub{display:block;font-size:.75rem;font-weight:400;opacity:.8}.msg{padding:.8rem 1rem;border-radius:var(--radius);font-weight:600}.msg-ok{background:var(--ok-bg);color:var(--success)}.msg-bad{background:var(--bad-bg);color:var(--danger)}.table-wrap{overflow-x:auto;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border)}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:.75rem;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}.table th{font-size:.85rem;text-transform:uppercase;color:var(--muted)}.table td.muted{font-size:.8rem}.table .group-row td{background:var(--bg);padding-top:.5rem;padding-bottom:.5rem}.picker-summary{position:sticky;bottom:0;z-index:1;padding:.6rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.bag-summary{display:flex;flex-wrap:wrap;gap:1.25rem;align-items:center;padding:.8rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.scan-row{display:flex;gap:.75rem}.pending{padding:1rem;background:var(--surface);border:2px solid var(--primary);border-radius:var(--radius)}.scan-list{list-style:none;margin:0;padding:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.scan-list li{display:flex;align-items:center;gap:1rem;padding:.4rem .4rem .4rem 1rem;border-bottom:1px solid var(--border)}.scan-list li:last-child{border-bottom:none}.scan-num{color:var(--muted);min-width:2rem;font-size:.9rem}@media(max-width:600px){:root{font-size:17px}.scan-row{flex-direction:column}}.pill{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.8rem;font-weight:700;white-space:nowrap}.pill-open{background:var(--bad-bg);color:var(--danger)}.pill-closed{background:var(--ok-bg);color:var(--success)}select.input{min-height:3rem}.btn-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem}.tile-code{font-size:2.2rem;font-weight:800;letter-spacing:.02em}.tile-name{font-size:1.05rem;font-weight:600}.tile-route{font-size:.85rem;font-weight:500;color:var(--muted)}.box-code{font-size:2rem;font-weight:800}.pill-upload{background:var(--border);color:var(--text);margin-left:.4rem}:root{--warn: #a15c00;--warn-bg: #fff3dc}@media(prefers-color-scheme:dark){:root{--warn: #f0b04a;--warn-bg: #3a2a10}}.file-pick{display:flex;align-items:center;justify-content:center;text-align:center}.mapping{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.summary{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:center;font-weight:600;padding:.8rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}label.inline{flex-direction:row;align-items:center;gap:.5rem;font-weight:500}label.inline input{width:1.3rem;height:1.3rem}.text-bad{color:var(--danger)}.text-warn{color:var(--warn)}.small{font-size:.75rem}.upload-table td{padding:.35rem}.upload-table .input.cell{min-height:2.4rem;padding:.3rem .5rem;font-size:.9rem;min-width:7rem}.cell-error{border-color:var(--danger);background:var(--bad-bg)}.cell-warn{border-color:var(--warn);background:var(--warn-bg)}.findings{font-size:.8rem;min-width:14rem}.pager{align-items:center;justify-content:center}.msg-warn{background:var(--warn-bg);color:var(--warn)}.pill-warn{background:var(--warn-bg);color:var(--warn);margin-left:.5rem}.chips{align-items:center;gap:.4rem}.chip{min-height:2.4rem;padding:.3rem .7rem;border:1px solid var(--border);font-family:ui-monospace,Menlo,monospace}.camera{position:fixed;inset:0;z-index:50;background:#000;display:flex;flex-direction:column}.camera-video{flex:1;width:100%;min-height:0;object-fit:contain;background:#000}.camera-bar{display:flex;flex-wrap:wrap;gap:.75rem;padding:1rem;background:#111;justify-content:center;align-items:center}.camera-msg{color:#fff;width:100%;text-align:center;font-weight:600;order:-2}.camera-cancel{order:-1}.btn-capture{flex:1;min-height:5rem;font-size:1.5rem}.stack.tight{gap:.3rem}.text-ok{color:var(--success)}.clickable{cursor:pointer}.panel{padding:1rem;border:2px solid var(--primary);border-radius:var(--radius);background:var(--surface)}.card{padding:1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.card h3{margin:0}.stats{display:flex;flex-wrap:wrap;gap:.75rem}.stat{min-width:7rem;padding:.5rem .75rem;border-radius:var(--radius);background:var(--bg)}.stat-label{font-size:.75rem;text-transform:uppercase;color:var(--muted)}.stat-value{font-size:1.25rem;font-weight:800}.download-groups{display:flex;flex-wrap:wrap;gap:.75rem 2rem}.download-groups .row-inline{gap:.5rem;flex-wrap:wrap}.table.manifest-bags td,.table.manifest-bags th{padding:.4rem .6rem}.table.manifest-bags .totals td{font-weight:800;border-top:2px solid var(--border)}.cell-input{min-height:2.2rem;padding:.25rem .5rem;font-size:.95rem;width:7.5rem}.span-all{grid-column:1 / -1}.back-link{align-self:flex-start}.contents-cell{min-width:16rem}h3{margin:.5rem 0 0;font-size:1.1rem}textarea.input{min-height:4rem;resize:vertical}.nowrap{white-space:nowrap}.bag-code-cell .mono{word-break:normal}.scan-panel{gap:.5rem;padding:1rem;border:3px solid var(--primary);border-radius:var(--radius);background:color-mix(in srgb,var(--primary) 6%,var(--surface))}.scan-panel-title{font-weight:800;font-size:1.1rem;color:var(--primary)}.field-label{font-weight:700;font-size:.95rem;margin-top:.25rem}.dims-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}@media(max-width:700px){.bag-table thead{display:none}.bag-table,.bag-table tbody,.bag-table tr,.bag-table td{display:block;width:100%}.bag-table tr{padding:.75rem 1rem;border-bottom:1px solid var(--border)}.bag-table td{border:none;padding:.2rem 0}.bag-table td.bag-code-cell .mono{font-size:1.3rem;font-weight:800}.bag-table td[data-label]:before{content:attr(data-label) ": ";color:var(--muted);font-size:.85rem}.bag-table td .btn{width:100%;margin-top:.5rem;min-height:3.2rem}.table-wrap:has(.bag-table){overflow-x:visible}}.filter-row .btn{min-height:2.6rem;padding:.4rem .9rem}.row-selected td{background:color-mix(in srgb,var(--primary) 10%,var(--surface))}.select-cell input,.bag-table th input[type=checkbox]{width:1.5rem;height:1.5rem}.action-bar{position:sticky;bottom:.75rem;z-index:20;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.75rem;background:var(--surface);border:2px solid var(--primary);border-radius:var(--radius);box-shadow:0 4px 16px #0003}.action-count{font-weight:800;margin-right:auto}@media(max-width:700px){.bag-table.selectable tr{position:relative;padding-left:3rem}.bag-table .select-cell{position:absolute;left:.8rem;top:.9rem;width:auto}}.table.freight td,.table.freight th{padding:.4rem .75rem}.table.freight .totals td{font-weight:800;border-top:2px solid var(--border)}.scan-panel .input-scan{font-size:1.5rem;min-height:4rem}.scan-panel .input-xl{font-size:1.2rem;min-height:3.4rem}.scan-actions{display:flex;gap:.75rem;margin-top:.5rem}.btn-camera{min-width:4.5rem;min-height:3.6rem;display:inline-flex;align-items:center;justify-content:center;padding:.5rem}.btn-add{flex:1;min-height:3.6rem;font-size:1.25rem}.bag-actions{margin-top:1.25rem;padding-top:1.25rem;border-top:2px dashed var(--border);gap:.6rem}.bag-actions-title{font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}tr.clickable-row{cursor:pointer}tr.clickable-row:hover td{background:color-mix(in srgb,var(--primary) 6%,var(--surface))}@media(max-width:600px){:root{font-size:16px}.btn-xl{font-size:1.05rem;min-height:3.3rem;padding:.6rem 1rem}.box-code{font-size:1.5rem}.big{font-size:1.05rem}.scan-panel{padding:.8rem}.scan-panel .input-scan{font-size:1.2rem;min-height:3.3rem}.scan-panel .input-xl{font-size:1.05rem;min-height:3.1rem}.btn-add{font-size:1.1rem;min-height:3.3rem}.btn-camera{min-height:3.3rem}.bag-actions .row{flex-direction:column}.bag-actions .btn{width:100%}}.table.dashboard td,.table.dashboard th{padding:.55rem .7rem}.table.dashboard td:not(:first-child),.table.dashboard th:not(:first-child){text-align:right}.table.dashboard .totals td{font-weight:800;border-top:2px solid var(--border)}@media(max-width:600px){.hide-phone{display:none}.table.dashboard td,.table.dashboard th{padding:.5rem .45rem;font-size:.95rem}.table.dashboard th{font-size:.72rem}.grid.tiles{grid-template-columns:1fr 1fr;gap:.6rem}.btn-tile{min-height:5.5rem;padding:.5rem}.tile-code{font-size:1.7rem}.tile-name{font-size:.85rem}}.table.sheet td,.table.sheet th{padding:.35rem .6rem}.table.sheet td.sheet-cell{padding:0;border-left:1px solid var(--border);min-width:8rem}.sheet-input{width:100%;min-height:2.6rem;padding:.35rem .6rem;border:2px solid transparent;background:transparent;color:var(--text);font:inherit;font-family:ui-monospace,Menlo,monospace}.sheet-input:focus{outline:none;border-color:var(--primary);background:var(--surface)}.cell-changed{background:#fff4bf}.cell-changed .sheet-input{color:#5c4500;font-weight:700}.cell-invalid{background:var(--bad-bg)}.cell-invalid .sheet-input{color:var(--danger)}@media(prefers-color-scheme:dark){.cell-changed{background:#4a3c08}.cell-changed .sheet-input{color:#ffe27a}}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.heading-row h2{margin:0}.table.sheet td.sheet-cell.cell-invalid{background:var(--bad-bg)}.table.sheet td.sheet-cell.cell-invalid .sheet-input{color:var(--danger)}@media(max-width:600px){.table.sheet td.sheet-cell{min-width:6rem}.table.sheet td,.table.sheet th{padding:.3rem .4rem}}
