@font-face{font-family:Pallet Noto Sans TC;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/noto-sans-tc-pallet.woff2)format("woff2")}:root{--ink:#15191c;--ink-soft:#515a61;--muted:#727c84;--line:#dce2e3;--surface:#fff;--surface-soft:#f3f6f5;--canvas:#eef2f1;--accent:#df6f22;--accent-dark:#b85016;--accent-soft:#fff2e8;--success:#177052;--success-soft:#eaf7f1;--warning:#925117;--warning-soft:#fff2e7;color:var(--ink);background:var(--canvas);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Inter,Noto Sans TC,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:var(--canvas);min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;border:0}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible,[role=button]:focus-visible{outline-offset:2px;outline:3px solid #df6f2261}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-shell{color:#111315;min-height:100vh;transition:background .16s}.app-shell.has-manifest{padding-bottom:calc(122px + env(safe-area-inset-bottom))}.app-shell.shipping-upload-mode.has-manifest{padding-bottom:0}.app-shell.scanner-live{padding-bottom:calc(68vh + 106px + env(safe-area-inset-bottom))}.app-shell.notice-success{background:#f1f8f5}.app-shell.notice-error{background:#fff4ee}.topbar{border-bottom:1px solid var(--line);background:var(--surface);color:var(--ink);justify-content:space-between;align-items:center;gap:16px;padding:18px clamp(16px,4vw,44px);display:flex}.eyebrow{color:#6b7280;letter-spacing:0;text-transform:uppercase;margin:0 0 4px;font-size:.78rem;font-weight:800}.topbar .eyebrow{color:#6b7280}.upload-only-shell{background:#edf2f1;grid-template-rows:auto 1fr;align-content:start;min-height:100vh;display:grid}.upload-only-shell .topbar{text-align:center;background:0 0;border-bottom:0;justify-content:center;padding:clamp(34px,6vh,58px) clamp(18px,5vw,64px) clamp(20px,3vh,30px);display:grid}.upload-only-shell .brand-logo{width:clamp(180px,18vw,240px);margin-bottom:12px;margin-left:auto;margin-right:auto}.upload-only-shell h1{font-size:clamp(1.6rem,3vw,2.35rem);font-weight:900}.brand-logo{filter:invert()brightness(.34)saturate(.7);width:clamp(96px,18vw,150px);height:auto;margin-bottom:8px;display:block}h1,h2,p{margin-top:0}h1{letter-spacing:0;margin-bottom:0;font-size:clamp(1.45rem,4vw,2.2rem)}h2{letter-spacing:0;margin-bottom:0;font-size:clamp(1.6rem,7vw,3rem)}.ghost-button,.primary-button,.secondary-button,.danger-button{border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:0 16px;font-weight:800;display:inline-flex}.ghost-button{color:var(--ink);background:#edf0f1}.menu-button{border:2px solid var(--accent);color:#fff;background:var(--accent);border-radius:8px;justify-content:center;align-items:center;gap:7px;min-height:52px;padding:0 18px;font-weight:900;display:inline-flex;box-shadow:0 8px 22px #d96f2838}.primary-button{color:#fff;background:var(--accent)}.secondary-button{width:100%;color:var(--ink);background:#e8ebed}.danger-button{color:#fff;background:#1f2328}.compact-button{width:auto}.back-button{white-space:nowrap;flex:none}.portal-shell{background:#f4f6f5;min-height:100svh}.portal-topbar{min-height:104px}.portal-brand,.portal-today{align-items:center;display:flex}.portal-brand{gap:18px;min-width:0}.portal-brand .brand-logo{width:128px;margin:0}.portal-brand h1{font-size:clamp(1.45rem,3.2vw,2rem)}.portal-today{color:var(--ink-soft);gap:8px;font-weight:850}.portal-today>span{white-space:nowrap}.portal-refresh{border:1px solid var(--line);width:44px;height:44px;color:var(--ink);background:var(--surface-soft);border-radius:8px;place-items:center;display:inline-grid}.portal-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;width:min(980px,100%);margin:0 auto;padding:24px clamp(16px,4vw,44px) 14px;display:grid}.portal-button{text-align:left;border-radius:8px;grid-template-rows:auto auto;grid-template-columns:38px minmax(0,1fr);align-content:center;gap:6px 12px;min-height:138px;padding:20px;transition:transform .12s,filter .12s,box-shadow .12s;display:grid}.portal-button:active{transform:scale(.99)}.portal-button span{min-width:0;font-size:clamp(1.25rem,3vw,1.75rem);font-weight:950;line-height:1.1}.portal-button strong{grid-column:2;min-width:0;font-size:1rem;line-height:1.25}.portal-button-icon{grid-row:1/span 2;align-self:center}.portal-button.dhl{color:#fff;background:#1f2328;box-shadow:0 10px 26px #14191c29}.portal-button.shipping.ready{color:#fff;background:var(--accent);box-shadow:0 10px 26px #df6f222e}.portal-button.shipping.muted{color:#697178;filter:saturate(.45);background:#e5e8ea}.portal-utilities{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.portal-utility{border:1px solid var(--line);min-height:66px;color:var(--ink);background:var(--surface);text-align:left;border-radius:8px;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px 14px;display:grid}.portal-utility.map svg{color:#8a6700}.portal-utility.restore svg{color:var(--success)}.portal-utility span{font-size:1.02rem;font-weight:900}.portal-utility strong{color:var(--muted);font-size:.82rem}.portal-status{border:1px solid var(--line);background:var(--surface);color:#303438;border-radius:8px;align-items:center;gap:10px;width:min(980px,100% - 32px);min-height:54px;margin:0 auto 24px;padding:10px 12px;display:flex}.portal-status>div{gap:2px;min-width:0;display:grid}.portal-status.error{color:#8c3517;background:#fff6f0;border-color:#edcbb6}.portal-status span{color:#6b7280;font-size:.92rem;font-weight:800}@media (width<=680px){.portal-topbar{min-height:90px;padding:14px 16px}.portal-brand{gap:11px}.portal-brand .brand-logo{width:96px}.portal-brand .eyebrow{display:none}.portal-brand h1{font-size:1.28rem}.portal-today{gap:5px;font-size:.82rem}.portal-refresh{width:38px;height:38px}.portal-actions{grid-template-columns:1fr;gap:10px;padding-top:14px}.portal-button{grid-template-columns:34px minmax(0,1fr);gap:5px 10px;min-height:106px;padding:16px}.portal-button span{font-size:clamp(1.28rem,6vw,1.65rem)}.portal-button strong{font-size:.9rem}.portal-utility{grid-template-columns:24px minmax(0,1fr);min-height:60px}.portal-utility strong{grid-column:2}}@media (width<=360px){.portal-today>span{display:none}.portal-utilities{grid-template-columns:1fr}}.map-toolbar{flex-wrap:wrap;align-items:center;gap:12px;padding:12px clamp(16px,4vw,44px) 8px;display:flex}.map-toolbar .primary-button,.map-toolbar .secondary-button{flex:none;justify-content:center;align-items:center;gap:6px;width:auto;display:inline-flex}.map-toolbar .primary-button{min-width:136px}.map-toolbar .compact-button{min-width:94px}.map-toolbar .icon-button{width:50px;min-width:50px;padding:0;font-weight:950}.map-clear-button{color:#813716;background:#fff0e7}.pallet-map-canvas{cursor:grab;touch-action:none;background-color:#f5f8f8;background-image:linear-gradient(90deg,#1f23280d 1px,#0000 1px),linear-gradient(#1f23280d 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:28px 28px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:1px solid #d6dde1;border-radius:8px;height:min(45vh,520px);margin:0 clamp(12px,3vw,32px) 10px;overflow:hidden}.pallet-map-canvas.dragging{cursor:grabbing}.pallet-map-stage{transform-origin:0 0;will-change:transform;width:max-content;padding:20px}.pallet-map-sheet{background:#fff;border:2px solid #25282b;border-radius:8px;gap:10px;width:1120px;min-width:1120px;margin:0;padding:14px;display:grid;box-shadow:0 12px 30px #11131514}.pallet-map-shell{min-height:100vh;padding-bottom:320px;font-family:Pallet Noto Sans TC,-apple-system,BlinkMacSystemFont,PingFang TC,Heiti TC,Noto Sans TC,Segoe UI,system-ui,sans-serif;overflow:hidden}.pallet-map-shell button,.pallet-map-shell textarea,.pallet-map-shell strong,.pallet-map-shell h1,.pallet-map-shell p,.pallet-map-shell span,.pallet-map-shell div{font-family:inherit}.map-title{color:#111315;text-align:center;border:1px solid #25282b;padding:8px;font-size:clamp(1.2rem,3vw,1.7rem);font-weight:800}.front-map-grid{border-top:1px solid #25282b;border-left:1px solid #25282b;grid-template-columns:120px repeat(5,minmax(110px,1fr));grid-auto-rows:72px;display:grid}.front-label{color:#111315;background:#f3f5f6;border-bottom:1px solid #25282b;border-right:1px solid #25282b;grid-row:1/span 5;place-items:center;font-size:1.18rem;font-weight:800;display:grid}.office-map-grid{border-top:1px solid #25282b;border-left:1px solid #25282b;grid-template-columns:1fr 3fr;min-height:72px;display:grid}.warehouse-map-grid{border-top:1px solid #25282b;border-left:1px solid #25282b;grid-template-columns:1fr 1fr;grid-auto-rows:minmax(88px,auto);display:grid}.bottom-map-grid{border-top:1px solid #25282b;border-left:1px solid #25282b;grid-template-columns:1fr 1fr;min-height:86px;display:grid}.map-cell{cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:#fff;border-bottom:1px solid #25282b;border-right:1px solid #25282b;grid-template-columns:96px 1fr;min-height:72px;display:grid}.map-cell.active{z-index:1;position:relative;box-shadow:inset 0 0 0 4px #d96f28e0,0 0 0 3px #d96f2829}.map-cell.active span{color:#fff;background:#d96f28}.front-row{grid-column:2/-1;grid-template-columns:64px 1fr}.map-cell span{color:#111315;text-align:center;background:#f6f7f8;border-right:1px solid #25282b;place-items:center;min-width:0;padding:6px;font-size:1.05rem;font-weight:800;display:grid}.map-cell-values{color:#111315;background:#fff;flex-wrap:wrap;align-content:flex-start;gap:8px;width:100%;height:100%;min-height:70px;padding:8px 10px;font-size:1.08rem;font-weight:700;line-height:1.3;display:flex}.map-cell-values b,.map-cell-values em{background:#eef2f3;border-radius:6px;place-items:center;min-height:28px;padding:2px 8px;font-style:normal;font-weight:800;display:inline-grid}.map-cell-values b.draft,.keypad-current-values span.draft{color:#8a4b18;background:#fff2e6;outline:2px solid #d96f2859}.map-cell-values em{color:#8a949b;background:0 0}.map-cell:focus-visible{outline-offset:-4px;outline:4px solid #d96f2859}.pallet-keypad{z-index:30;padding:12px clamp(12px, 3vw, 28px) calc(12px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff5;border-top:1px solid #d8dde0;gap:10px;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 34px #11131524}.keypad-head,.keypad-actions{justify-content:space-between;align-items:center;gap:8px;display:flex}.keypad-head strong{color:#111315;min-width:0;font-size:clamp(1.1rem,4.8vw,1.55rem);font-weight:800}.keypad-current{flex:auto;gap:6px;min-width:0;display:grid}.keypad-current-values{background:#f6f7f8;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px;min-height:38px;padding:6px;display:flex}.keypad-current-values span,.keypad-current-values em{color:#111315;background:#fff;border-radius:6px;place-items:center;min-height:28px;padding:2px 8px;font-style:normal;font-weight:800;display:inline-grid}.keypad-current-values em{color:#8a949b;background:0 0}.keypad-head>div:last-child,.keypad-actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.keypad-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.keypad-actions{grid-template-columns:repeat(4,minmax(0,1fr))}.pallet-keypad button{color:#111315;background:#f1f3f4;border:1px solid #dce1e4;border-radius:8px;justify-content:center;align-items:center;gap:5px;min-height:54px;padding:0 8px;font-size:clamp(1rem,4.8vw,1.45rem);font-weight:800;display:inline-flex}.keypad-grid button:nth-child(4n),.keypad-actions button:last-child{color:#fff;background:#d96f28;border-color:#d96f28}.keypad-grid button:nth-child(15){grid-column:auto}.keypad-grid button:nth-child(13){grid-column:1/4}.keypad-grid .keypad-enter{color:#fff;background:#d96f28;border-color:#d96f28;grid-column:4;font-size:clamp(.86rem,3.8vw,1.1rem)}.keypad-grid .keypad-enter:disabled{color:#8a949b;background:#eef1f3;border-color:#dce1e4}.keypad-actions button{font-size:clamp(.9rem,3.8vw,1.15rem)}.pallet-keypad button:active{transform:scale(.98)}.show-pallet-keypad{right:14px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:31;color:#fff;background:#d96f28;border-radius:999px;align-items:center;gap:7px;min-height:54px;padding:0 18px;font-size:1rem;font-weight:800;display:inline-flex;position:fixed;box-shadow:0 10px 30px #11131533}@media (width<=640px){.pallet-map-shell{padding-bottom:calc(380px + env(safe-area-inset-bottom))}.pallet-map-shell.keyboard-hidden{padding-bottom:calc(78px + env(safe-area-inset-bottom))}.pallet-map-shell .topbar{flex-direction:row;align-items:center;gap:10px;padding:6px 10px}.pallet-map-shell .brand-logo{width:78px;margin-bottom:0}.pallet-map-shell .eyebrow{display:none}.pallet-map-shell .topbar h1{font-size:1rem;line-height:1.18}.pallet-map-shell .topbar .ghost-button{width:auto;min-width:88px;min-height:36px;padding:8px 10px;font-size:.86rem}.pallet-map-shell .map-toolbar{background:#f5f8f8;flex-wrap:nowrap;gap:6px;padding:6px 8px}.pallet-map-shell .map-toolbar .compact-button{flex:auto;min-width:0;min-height:38px;padding:0 6px;font-size:.86rem}.pallet-map-shell .map-toolbar .icon-button{flex:0 0 38px;width:38px;min-width:38px;min-height:38px;font-size:1.12rem}.pallet-map-shell .portal-status{display:none}.pallet-map-canvas{height:calc(100svh - 88px - 380px - env(safe-area-inset-bottom));min-height:330px;margin:6px 8px}.pallet-map-shell.keyboard-hidden .pallet-map-canvas{height:calc(100svh - 88px - 78px - env(safe-area-inset-bottom));min-height:420px}.pallet-map-stage{padding:8px}.pallet-keypad{padding:8px 8px calc(8px + env(safe-area-inset-bottom));gap:6px}.keypad-head{align-items:stretch;gap:8px}.keypad-head strong{font-size:1.05rem}.keypad-head>div:last-child{flex:0 0 132px;width:132px}.keypad-grid,.keypad-actions{gap:6px}.pallet-keypad button{min-height:42px;padding:0 6px;font-size:1.02rem;line-height:1.08}.keypad-grid button:nth-child(4n){font-size:1.02rem}.keypad-actions button{font-size:.86rem}.keypad-current-values{min-height:34px;max-height:72px;overflow:auto}.keypad-current-values span,.keypad-current-values em{min-height:26px;padding:1px 7px}}.pallet-location{color:#0f513a;background:#dff5ea;border-radius:8px;margin-top:8px;padding:7px 10px;font-size:clamp(1rem,4vw,1.3rem);line-height:1.2;display:inline-block}.version-modal-backdrop{z-index:50;background:#11131557;align-items:end;padding:18px;display:grid;position:fixed;inset:0}.version-sheet{background:#fff;border:1px solid #e3e6e8;border-radius:8px;width:min(560px,100%);margin:0 auto;box-shadow:0 18px 44px #1113152e}.version-sheet-head{border-bottom:1px solid #e3e6e8;justify-content:space-between;align-items:center;gap:12px;padding:16px;display:flex}.version-sheet-head h2{font-size:1.2rem}.version-list{gap:8px;padding:12px;display:grid}.version-option{color:#111315;text-align:left;background:#f8f9fa;border:1px solid #e3e6e8;border-radius:8px;justify-content:space-between;align-items:center;gap:14px;min-height:68px;padding:12px;display:flex}.version-option span{font-size:1.2rem;font-weight:950}.version-option strong{color:#6b7280;font-size:.95rem}.single-upload{text-align:center;background:#fff;border:2px solid #d7dfdf;border-radius:8px;align-self:start;justify-items:center;gap:18px;width:min(620px,100% - 32px);margin:clamp(28px,6vh,58px) auto 0;padding:clamp(34px,5vw,48px);transition:border-color .14s,box-shadow .14s,transform .14s;display:grid;box-shadow:0 18px 44px #2a373c14}.single-upload.drag-active{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 20px 46px #df6f2226}.single-upload .primary-button{justify-content:center;align-items:center;gap:10px;min-width:min(360px,100%);min-height:76px;font-size:1.18rem;display:inline-flex}.upload-result{background:#f2f3f4;border-radius:8px;align-items:center;gap:8px;min-height:44px;padding:0 12px;display:inline-flex}.upload-result.success{color:#16613f;background:#eef8f3}.upload-result.error{color:#8c3517;background:#fff0e7}.upload-complete{flex-wrap:wrap;gap:10px;display:flex}.upload-complete span{background:#f7f8f9;border:1px solid #e3e6e8;border-radius:8px;align-items:center;min-height:34px;padding:0 10px;font-weight:800;display:inline-flex}.upload-band{background:#fff;border-bottom:1px solid #e3e6e8;justify-content:space-between;align-items:center;gap:16px;padding:14px clamp(16px,4vw,44px);display:flex}.app-shell:not(.has-manifest) .upload-band{padding-top:30px;padding-bottom:20px}.app-shell:not(.has-manifest) .upload-controls .primary-button{min-width:min(260px,100%);min-height:58px}.upload-controls,.manifest-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.shipping-upload{align-items:center}.mode-tabs{background:#f0f2f3;border:1px solid #e3e6e8;border-radius:8px;grid-template-columns:repeat(3,minmax(58px,1fr));gap:4px;min-height:48px;padding:4px;display:inline-grid}.mode-tab{color:#303438;background:0 0;border-radius:6px;min-width:0;padding:0 12px;font-weight:900}.mode-tab.active{color:#fff;background:#1f2328}.upload-status{color:#d96f28;white-space:nowrap}.manifest-meta span{color:#303438;background:#f7f8f9;border:1px solid #e3e6e8;border-radius:8px;align-items:center;min-height:34px;padding:0 10px;font-weight:700;display:inline-flex}.validation-band{color:#16613f;background:#eef8f3;border-bottom:1px solid #d6e9df;justify-content:space-between;align-items:center;gap:12px;padding:10px clamp(16px,4vw,44px);font-weight:850;display:flex}.validation-band.failed{color:#8c3517;background:#fff0e7}.validation-band.needs-totals{color:#87560f;background:#fff6dc;border-bottom-color:#ead49a}.validation-band span{color:inherit;font-size:.9rem}.session-panel{background:#fff;border-bottom:1px solid #e3e6e8;gap:14px;padding:18px clamp(16px,4vw,44px);display:grid}.session-panel h2{font-size:clamp(1.45rem,4vw,2.2rem)}.session-url{color:#303438;overflow-wrap:anywhere;background:#f7f8f9;border:1px solid #e3e6e8;border-radius:8px;align-items:center;min-height:48px;padding:12px;font-weight:800;display:flex}.session-actions{flex-wrap:wrap;gap:10px;display:flex}.session-actions .primary-button,.session-actions .secondary-button{width:auto}.pallet-strip{background:#f0f2f3;gap:10px;padding:14px clamp(16px,4vw,44px);display:flex;overflow-x:auto}.pallet-button{color:#111315;text-align:left;background:#fff;border:2px solid #0000;border-radius:8px;gap:3px;min-width:112px;padding:12px;display:grid}.pallet-button strong{font-size:1.45rem}.pallet-button span{color:#6b7280;font-weight:800}.pallet-button.active{background:#fff4ee;border-color:#d96f28}.status-band{background:#fff;border-bottom:1px solid #e3e6e8;justify-content:space-between;align-items:stretch;gap:18px;padding:18px clamp(16px,4vw,44px);display:flex}.sync-indicator{width:fit-content;min-height:28px;color:var(--success);background:var(--success-soft);border-radius:999px;align-items:center;gap:6px;margin-top:8px;padding:4px 9px;font-size:.78rem;font-weight:850;display:inline-flex}.sync-indicator.loading,.sync-indicator.saving{color:#6b5614;background:#fff7d8}.sync-indicator.offline{color:#8b3d1b;background:var(--warning-soft)}.manifest-meta .sync-indicator{margin-top:0}.export-packed-panel{background:linear-gradient(#f1fbf5 0%,#fff 100%);border-bottom:1px solid #dce8e3;gap:16px;padding:22px clamp(16px,4vw,44px) 32px;display:grid}.export-packed-panel h2{color:#137044;margin:0;font-size:clamp(1.7rem,5vw,2.5rem);line-height:1.15}.export-packed-location,.export-packed-map{background:#fff;border:1px solid #d9dde1;border-radius:8px;gap:6px;padding:16px;display:grid}.export-packed-location span,.export-packed-map span{color:#6d7680;font-weight:850}.export-packed-location strong,.export-packed-map strong{color:#111315;font-size:clamp(1.8rem,7vw,3rem);line-height:1.05}.export-packed-map.found{background:#ecf9f2;border-color:#b8dfca}.scanner-band{background:#f4f5f6;border-bottom:1px solid #e3e6e8;gap:16px;padding:16px clamp(16px,4vw,44px);display:block}.scanner-input{opacity:.01;pointer-events:none;border:0;width:1px;height:1px;padding:0;position:fixed;top:0;left:0}.scanner-controls-panel{align-content:start;gap:14px;min-width:0;display:grid}.scanner-controls-panel h2{overflow-wrap:anywhere;font-size:clamp(1.6rem,4vw,2.4rem)}.scanner-actions{right:max(14px, env(safe-area-inset-right));bottom:max(12px, env(safe-area-inset-bottom));left:max(14px, env(safe-area-inset-left));z-index:30;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff7;border:1px solid #e3e6e8f0;border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:820px;margin:0 auto;padding:10px;display:grid;position:fixed;box-shadow:0 14px 40px #11131521}.scanner-actions.camera-actions{grid-template-columns:repeat(5,minmax(0,1fr))}.scanner-actions.shipping-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.shipping-confirm-shell .scanner-actions.shipping-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.scanner-live .scanner-actions{border-top-left-radius:0;border-top-right-radius:0}.scanner-actions button{text-align:center;border-radius:8px;align-content:center;place-items:center;gap:4px;width:100%;min-width:0;min-height:72px;display:grid}.scan-alert-backdrop{z-index:90;padding:max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));background:#11131594;place-items:center;display:grid;position:fixed;inset:0}.scan-alert-card{color:#111315;background:#fff8f2;border:3px solid #d96f28;border-radius:8px;gap:14px;width:min(100%,430px);padding:22px;display:grid;box-shadow:0 22px 60px #11131559}.scan-alert-kicker{color:#b64f17;align-items:center;gap:7px;font-size:.9rem;font-weight:950;display:inline-flex}.scan-alert-card h2{font-size:clamp(1.8rem,8vw,2.6rem)}.scan-alert-card p{color:#3f464c;margin:0;font-size:1.05rem;font-weight:850;line-height:1.45}.scan-alert-value{overflow-wrap:anywhere;color:#8c3517;background:#fff;border:1px solid #f0c7a8;border-radius:8px;padding:12px;font-size:1.25rem;line-height:1.2}.pallet-action-button{color:#111315;background:#f0f2f3;align-content:center;gap:1px;display:grid}.shutter-button{font-size:.95rem;font-weight:950}.torch-button{color:#111315;background:#f0f2f3;font-weight:850}.torch-button.active{color:#fff;background:#1f2328}.pallet-action-button span{font-size:.78rem;font-weight:900;line-height:1}.pallet-action-button strong{text-overflow:ellipsis;white-space:nowrap;font-size:clamp(1.1rem,4vw,1.5rem);line-height:1.08;overflow:hidden}.pallet-switcher{background:#fffffffa;border:1px solid #e3e6e8fa;border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;max-height:min(44vh,320px);padding:10px;display:grid;position:absolute;bottom:calc(100% + 10px);left:10px;right:10px;overflow:auto;box-shadow:0 12px 36px #1113151f}.pallet-switch-option{color:#111315;text-align:left;background:#f2f3f4;border:2px solid #0000;border-radius:8px;gap:2px;min-height:58px;padding:8px 10px;display:grid}.pallet-switch-option strong{text-overflow:ellipsis;white-space:nowrap;font-size:1.25rem;line-height:1.1;overflow:hidden}.pallet-switch-option span{color:#6b7280;font-weight:900;line-height:1}.pallet-switch-option.active{background:#fff4ee;border-color:#d96f28}.pallet-reset-button{color:#8c3517;text-align:left;background:#fff4ee;border:2px solid #e5a06c;border-radius:8px;align-content:center;gap:2px;min-height:58px;padding:8px 10px;display:grid}.pallet-reset-button span{font-size:.95rem;font-weight:900;line-height:1}.pallet-reset-button strong{text-overflow:ellipsis;white-space:nowrap;font-size:1.25rem;line-height:1.1;overflow:hidden}.pallet-reset-button:disabled{color:#7a8086;background:#f2f3f4;border-color:#e3e6e8}.scanner-state{color:#1f2328;background:#fff8f2;border:1px solid #e7d6c8;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;min-height:54px;padding:10px 12px;font-weight:900;display:flex}.scanner-state strong{overflow-wrap:anywhere}.scanner-state span{color:#8c5a35;flex:none}.scanner-hints{color:#5f686f;flex-wrap:wrap;gap:8px;font-size:.9rem;font-weight:850;display:flex}.scanner-hints span{background:#fff;border:1px solid #e3e6e8;border-radius:8px;padding:7px 9px}.barcode-log{grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:8px;display:grid}.barcode-log-row{color:#111315;background:#fff;border:1px solid #e3e6e8;border-left:4px solid #a7adb3;border-radius:8px;gap:2px;min-width:0;padding:9px 10px;display:grid}.barcode-log-row.hit{border-left-color:#2fd27a}.barcode-log-row.miss{border-left-color:#d96f28}.barcode-log-row span{color:#687178;font-size:.76rem;font-weight:900}.barcode-log-row strong{text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;line-height:1.15;overflow:hidden}.camera-error{color:#8c3517;background:#fff0e7;border-radius:8px;padding:10px 12px;font-weight:850}.camera-panel{gap:10px;min-width:0;display:grid}.scanner-live .camera-panel{left:50%;bottom:calc(max(12px, env(safe-area-inset-bottom)) + 92px);z-index:29;gap:0;width:min(820px,100vw - 28px);position:fixed;transform:translate(-50%)}.camera-view{aspect-ratio:16/9;background:#0f1215;border:1px solid #2d3339;border-radius:8px;min-height:230px;position:relative;overflow:hidden}.scanner-live .camera-view{aspect-ratio:auto;border-bottom-right-radius:0;border-bottom-left-radius:0;height:min(62vh,620px);min-height:min(62vh,620px)}.camera-view video,.camera-placeholder,.camera-overlay{position:absolute;inset:0}.camera-view video{object-fit:cover;width:100%;height:100%}.camera-placeholder{color:#f4f7f6;background:radial-gradient(circle at 50% 45%,#262b30,#0f1215 72%);place-items:center;font-size:clamp(1.1rem,4vw,1.7rem);font-weight:900;display:grid}.camera-panel.ready .camera-placeholder{display:none}.camera-overlay{pointer-events:none}.camera-guide{border:3px solid #2fd27a;border-radius:8px;width:94%;height:88%;transition:border-color .14s,box-shadow .14s;position:absolute;top:6%;left:3%;box-shadow:0 0 0 999px #0f12156b,inset 0 0 18px #2fd27a29}.camera-guide.hit{border-color:#2fd27a;box-shadow:0 0 0 999px #0f12155c,0 0 24px #2fd27ac2}.ocr-box{color:#0f1215;background:#2fd27ac7;border:2px solid #2fd27a;border-radius:5px;place-items:start center;min-width:32px;min-height:20px;padding:1px 4px;font-size:.78rem;font-weight:950;line-height:1;display:grid;position:absolute}.capture-canvas{display:none}.total-grid{grid-template-columns:repeat(3,minmax(84px,1fr));gap:10px;min-width:min(520px,100%);display:grid}.metric{background:#fff;border-left:4px solid #d96f28;align-content:center;gap:4px;min-height:82px;padding:10px;display:grid}.metric span{color:#6b7280;font-size:.85rem;font-weight:800}.metric strong{font-size:clamp(1.6rem,6vw,2.8rem);line-height:1}.work-area{padding:16px clamp(16px,4vw,44px) 28px;display:block}.do-list{background:#fff;border:1px solid #e3e6e8;border-radius:8px;overflow:hidden}.shipping-list{max-width:860px}.list-head,.do-row{border-bottom:1px solid #e6e8ea;grid-template-columns:minmax(0,1fr) minmax(58px,auto);align-items:center;gap:8px;min-height:44px;padding:0 12px;display:grid}.list-head{color:#6b7280;background:#f5f6f7;min-height:40px;font-size:.86rem;font-weight:900}.do-row{min-width:0;font-size:clamp(1rem,3vw,1.18rem);font-weight:750}.do-row:last-child{border-bottom:0}.do-row span:first-child{overflow-wrap:anywhere}.do-row strong{font-size:1.2em}.do-row.done{color:#7a8086;background:#f2f3f4;text-decoration:line-through}.empty-state{background:#fff;align-content:center;justify-items:start;gap:12px;min-height:320px;padding:clamp(46px,10vw,86px) clamp(16px,4vw,44px);display:grid}.empty-state h2{margin-bottom:0;font-size:clamp(1.8rem,8vw,4rem)}.empty-state>svg{color:var(--accent)}.empty-state>p{color:var(--ink-soft);margin:0;font-size:1.05rem;font-weight:700}.quick-guide{gap:12px;max-width:760px;margin:0;padding:0;list-style:none;display:grid}.quick-guide li{color:#4b5560;background:#f7f8f9;border:1px solid #e3e6e8;border-radius:8px;min-height:44px;padding:11px 14px 11px 42px;font-size:1.1rem;line-height:1.45;position:relative}.quick-guide li:before{content:"";background:#d96f28;border-radius:50%;width:8px;height:8px;position:absolute;top:18px;left:18px}@media (width<=860px){.upload-band,.status-band{flex-direction:column;align-items:stretch}.scanner-band{grid-template-columns:1fr}.upload-controls>*{flex:140px}.validation-band{flex-direction:column;align-items:flex-start}.upload-controls .compact-button{flex-basis:96px}.work-area{padding-bottom:18px}}@media (width<=520px){.topbar{flex-direction:row;align-items:center;min-height:92px;padding:12px 14px}.topbar>div{min-width:0}.brand-logo{width:96px;margin-bottom:5px}.topbar .eyebrow{display:none}.topbar h1{text-overflow:ellipsis;white-space:nowrap;font-size:1.28rem;line-height:1.15;overflow:hidden}.topbar .ghost-button,.topbar .menu-button{width:auto;min-height:42px;padding:0 12px;font-size:.9rem}.total-grid{grid-template-columns:repeat(3,1fr);min-width:0}.metric{min-height:72px;padding:8px}.status-band{gap:14px;padding:14px}.status-band h2{font-size:2rem}.upload-band{padding:10px 14px}.upload-controls .primary-button{min-height:48px}.scanner-actions.camera-actions{gap:6px}.scanner-actions.camera-actions button{min-height:62px;padding-left:4px;padding-right:4px;font-size:.84rem}.scanner-band{padding-bottom:116px;padding-left:10px;padding-right:10px}.shipping-confirm-shell .scanner-band,.scanner-live .scanner-band{padding-bottom:16px}.scanner-state{flex-direction:column;align-items:flex-start}.camera-view{aspect-ratio:4/3;min-height:210px}.scanner-live .camera-view{aspect-ratio:auto;height:min(62vh,620px);min-height:min(62vh,620px)}.metric span{font-size:.74rem}.list-head,.do-row{grid-template-columns:minmax(0,1fr) minmax(62px,auto);min-height:50px;padding:0 9px}.scanner-actions button{font-size:.86rem}.empty-state{min-height:calc(100svh - 160px);padding-top:34px;padding-bottom:34px}.empty-state h2{font-size:2rem}}
