*{box-sizing:border-box;margin:0;padding:0}html,body,#root{overscroll-behavior:none;height:100%;overflow:hidden}body{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#1a2233;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{position:fixed;inset:0}.app canvas{display:block}.hud{pointer-events:none;position:absolute;inset:0}.hud button{pointer-events:auto}.topbar{top:calc(8px + env(safe-area-inset-top));justify-content:space-between;align-items:flex-start;display:flex;position:absolute;left:12px;right:12px}.title-chip{color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#141a28bf;border-radius:14px;flex-direction:column;padding:8px 14px;line-height:1.25;display:flex}.title-chip strong{font-size:14px}.title-chip span{color:#9db2d6;font-size:11px}.icon-btn{color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#141a28bf;border:none;border-radius:50%;place-items:center;width:42px;height:42px;font-size:19px;display:grid}.minimap{top:calc(64px + env(safe-area-inset-top));opacity:.92;border-radius:10px;width:148px;position:absolute;left:12px;box-shadow:0 2px 10px #00000059}.prompt{left:50%;bottom:calc(118px + env(safe-area-inset-bottom));color:#fff;white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#141a28d9;border-radius:999px;align-items:center;gap:8px;padding:10px 18px;font-size:15px;font-weight:600;display:flex;position:absolute;transform:translate(-50%)}.prompt-icon{font-size:18px}.prompt kbd{color:#1a2233;background:#ffb020;border-radius:6px;padding:2px 8px;font-family:inherit;font-weight:700}.joystick-zone{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:45%;height:55%;position:absolute;bottom:0;left:0}.joystick-base{background:#ffffff1f;border:2px solid #ffffff59;border-radius:50%;place-items:center;width:112px;height:112px;margin:-56px 0 0 -56px;display:grid;position:absolute}.joystick-knob{background:#ffffffd9;border-radius:50%;width:52px;height:52px;box-shadow:0 2px 8px #0000004d}.action-btn{right:calc(22px + env(safe-area-inset-right));bottom:calc(30px + env(safe-area-inset-bottom));opacity:.55;background:#141a2899;border:3px solid #fff6;border-radius:50%;place-items:center;width:76px;height:76px;font-size:30px;transition:opacity .15s,transform .15s;display:grid;position:absolute}.action-btn.armed{opacity:1;background:#ffb020;border-color:#fff;transform:scale(1.08)}.toast{top:calc(70px + env(safe-area-inset-top));color:#fff;white-space:nowrap;background:#141a28e6;border-radius:999px;padding:9px 18px;font-size:14px;font-weight:600;position:absolute;left:50%;transform:translate(-50%)}.sheet-backdrop{pointer-events:auto;background:#0a0e1873;justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.sheet{color:#1f2430;width:min(480px,100%);padding:22px 22px calc(22px + env(safe-area-inset-bottom));text-align:center;background:#fff;border-radius:22px 22px 0 0;animation:.22s ease-out sheet-up}@keyframes sheet-up{0%{opacity:0;transform:translateY(40px)}}.sheet-icon{margin-bottom:6px;font-size:40px}.sheet h2{margin-bottom:8px;font-size:19px}.sheet p{color:#4a5468;margin-bottom:18px;font-size:15px;line-height:1.5}.btn-primary{color:#fff;background:#2c62c9;border:none;border-radius:14px;width:100%;padding:14px;font-size:16px;font-weight:700}.settings-row{justify-content:space-between;align-items:center;margin-bottom:18px;font-size:15px;font-weight:600;display:flex}.segmented{background:#eef1f6;border-radius:12px;gap:3px;padding:3px;display:flex}.segmented button{color:#4a5468;background:0 0;border:none;border-radius:10px;padding:8px 16px;font-size:14px;font-weight:600}.segmented .seg-active{color:#fff;background:#2c62c9}.touch-only{display:none}@media (pointer:coarse){.touch-only{display:grid}.desktop-only{display:none}}.is-touch .touch-only{display:grid}.is-touch .desktop-only{display:none}.screen{pointer-events:auto;color:#fff;padding:calc(18px + env(safe-area-inset-top)) 18px calc(24px + env(safe-area-inset-bottom));background:linear-gradient(160deg,#1a2233 0%,#253049 100%);position:absolute;inset:0;overflow-y:auto}.menu-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.menu-header h1{margin-bottom:6px;font-size:22px}.role-chip{background:#ffffff1a;border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:14px;font-weight:600;display:inline-flex}.cert-badge{color:#7de08a;font-size:13px}.menu-subtitle{color:#9db2d6;margin-bottom:10px;font-size:15px}.mission-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:16px;display:grid}.mission-card{text-align:left;color:#fff;background:#ffffff12;border:1px solid #ffffff1f;border-radius:18px;padding:14px 16px;transition:transform .12s,background .12s}.mission-card:active{transform:scale(.98)}.mission-card.locked{opacity:.45}.mission-card-top{align-items:center;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.mission-level{background:#2c62c9;border-radius:8px;padding:3px 9px;font-weight:700}.mission-mode{color:#9db2d6}.mission-medal,.mission-lock{margin-left:auto;font-size:17px}.mission-card h3{margin-bottom:5px;font-size:16px}.mission-card p{color:#b8c6e0;font-size:13px;line-height:1.45}.mission-best{color:#ffb020;margin-top:8px;font-size:13px}.freeroam-btn{color:#b8c6e0;background:#ffffff12;border:1px dashed #ffffff4d;border-radius:14px;width:100%;padding:13px;font-size:15px;font-weight:600}.topbar-left,.topbar-right{align-items:center;gap:8px;display:flex}.timer-pill{color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#141a28bf;border-radius:999px;padding:9px 14px;font-size:14px;font-weight:700}.timer-pill.over{background:#c94032}.briefing-meta{color:#4a5468;flex-wrap:wrap;justify-content:center;gap:10px 16px;margin-bottom:12px;font-size:13px;display:flex}.briefing-lines{text-align:left;background:#f2f4f8;border-radius:14px;max-height:30vh;margin-bottom:16px;padding:8px 12px;overflow-y:auto}.briefing-line{border-bottom:1px solid #e3e7ee;align-items:center;gap:8px;padding:6px 0;font-size:13.5px;display:flex}.briefing-line:last-child{border-bottom:none}.line-loc{font-family:ui-monospace,monospace;font-weight:800}.line-qty{font-weight:700}.line-lane{color:#2c62c9;white-space:nowrap;margin-left:auto;font-weight:700}.btn-ghost{color:#4a5468;background:0 0;border:none;width:100%;margin-top:6px;padding:12px;font-size:15px;font-weight:600}.btn-warn{color:#c94032;background:#fdeeee;border:none;border-radius:14px;width:100%;margin-top:8px;padding:13px;font-size:15px;font-weight:700}.device-chip{top:calc(60px + env(safe-area-inset-top));color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;background:#141a28d9;border:none;border-radius:999px;align-items:center;gap:8px;padding:9px 14px;font-size:14px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.device-chip.paper{background:#5e4a28e6}.device-chip-line strong{font-family:ui-monospace,monospace}.device-chip-progress{background:#ffffff2e;border-radius:8px;padding:2px 8px;font-size:12.5px;font-weight:700}.device-ppe{filter:grayscale();opacity:.45}.device-ppe.on{filter:none;opacity:1}.device-sheet{text-align:left}.device-sheet h2{text-align:center}.device-sheet.paper{background:#f7f0dd}.device-order-note{text-align:center;color:#4a5468;margin-bottom:10px;font-size:13px}.device-lines{max-height:42vh;margin-bottom:14px;overflow-y:auto}.device-line{border-bottom:1px solid #00000014;flex-wrap:wrap;align-items:center;gap:7px;padding:8px 6px;font-size:13px;display:flex}.device-line.current{background:#eaf1ff;border-radius:10px}.device-line.done,.device-line.flagged{opacity:.55}.line-batch{color:#4a5468;width:100%;padding-left:25px;font-family:ui-monospace,monospace;font-size:12px}.pick-sheet{text-align:left}.pick-loc{text-align:center;margin-bottom:8px;font-family:ui-monospace,monospace;font-size:20px;font-weight:800}.pick-need{background:#eaf1ff;border-radius:12px;margin-bottom:10px;padding:10px 12px;font-size:14px}.pick-notask{color:#8a6d1a;background:#fdf4e3;border-radius:12px;margin-bottom:10px;padding:10px 12px;font-size:13.5px}.pick-warn{color:#c94032;margin-top:6px;font-size:13px;font-weight:700}.pick-hint{text-align:center;color:#4a5468;margin:14px 0;font-size:14px}.scan-btn{color:#fff;touch-action:none;-webkit-touch-callout:none;background:#20242c;border:none;border-radius:14px;width:100%;height:58px;font-size:16px;font-weight:800;position:relative;overflow:hidden}.scan-fill{background:#3f9e4d;transition:width 50ms linear;position:absolute;inset:0 auto 0 0}.scan-label{position:relative}.pick-stock-title{color:#4a5468;margin:10px 0 6px;font-size:13px;font-weight:700}.pick-batches{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}.batch-row{text-align:left;background:#fff;border:2px solid #e3e7ee;border-radius:12px;align-items:center;gap:8px;padding:10px;font-size:13.5px;display:flex}.batch-row.selected{background:#eaf1ff;border-color:#2c62c9}.batch-row.match{border-left:6px solid #3f9e4d}.batch-row.nomatch{border-left:6px solid #e8a219}.batch-code{font-family:ui-monospace,monospace;font-weight:700}.batch-exp{color:#4a5468;font-size:12.5px}.batch-qty{margin-left:auto;font-weight:800}.qty-row{justify-content:space-between;align-items:center;margin:8px 0 12px;font-size:15px;font-weight:600;display:flex}.stepper{align-items:center;gap:14px;display:flex}.stepper button{color:#1f2430;background:#eef1f6;border:none;border-radius:50%;width:44px;height:44px;font-size:22px;font-weight:700}.stepper strong{text-align:center;min-width:30px;font-size:20px}.reason-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.reason-grid .btn-warn{margin-top:0}.safety-banner{top:calc(110px + env(safe-area-inset-top));color:#fff;text-align:center;background:#c94032;border-radius:14px;flex-direction:column;align-items:center;gap:2px;max-width:90%;padding:10px 20px;font-size:14px;animation:.4s safety-shake;display:flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 4px 18px #c9403280}@keyframes safety-shake{0%,to{transform:translate(-50%)}25%{transform:translate(calc(-50% - 6px))}75%{transform:translate(calc(6px - 50%))}}.tutorial-bar{bottom:calc(170px + env(safe-area-inset-bottom));color:#fff;text-align:center;background:#2c62c9f2;border-radius:14px;max-width:min(480px,92%);padding:11px 18px;font-size:14.5px;font-weight:600;line-height:1.4;position:absolute;left:50%;transform:translate(-50%)}.results-screen{justify-content:center;align-items:flex-start;display:flex}.results-card{color:#1f2430;text-align:center;background:#fff;border-radius:22px;width:min(520px,100%);padding:24px 22px}.results-medal{font-size:54px;line-height:1}.results-total{font-size:44px;font-weight:800}.results-total span{color:#4a5468;font-size:18px;font-weight:600}.results-medal-name{color:#8a6d1a;margin-bottom:12px;font-weight:700}.results-bars{flex-direction:column;gap:9px;margin:14px 0;display:flex}.result-bar{align-items:center;gap:10px;font-size:13.5px;font-weight:700;display:flex}.result-bar-label{text-align:right;width:72px}.result-bar-track{background:#eef1f6;border-radius:999px;flex:1;height:12px;overflow:hidden}.result-bar-fill{background:linear-gradient(90deg,#2c62c9,#4a8cf0);border-radius:999px;height:100%}.result-bar-value{text-align:left;width:32px}.results-time{color:#4a5468;margin-bottom:14px;font-size:13.5px}.results-safety{color:#c94032;margin-top:4px;font-weight:700}.results-mistakes{text-align:left;background:#f7f8fb;border-radius:14px;max-height:32vh;margin-bottom:16px;padding:12px 14px;overflow-y:auto}.results-mistakes h3{margin-bottom:8px;font-size:14px}.mistake-none{color:#3f9e4d;font-size:14px;font-weight:700}.mistake-row{border-bottom:1px solid #e9ecf2;gap:9px;padding:7px 0;display:flex}.mistake-row:last-child{border-bottom:none}.mistake-icon{font-size:17px}.mistake-what{font-size:13.5px;font-weight:700}.mistake-fix{color:#4a5468;font-size:12.5px;line-height:1.45}.results-actions{gap:10px;display:flex}.results-actions .btn-ghost{background:#eef1f6;border-radius:14px;margin-top:0}.minimap-target{animation:1.2s infinite target-pulse}@keyframes target-pulse{0%,to{opacity:1}50%{opacity:.3}}
