:root{color:#fff;font-synthesis:none;--color-bg-base:#000;--color-surface-glass:#121216c2;--color-surface-elevated:#1c1c20d9;--color-surface-subtle:#ffffff0d;--glass-bg:#16161ab8;--glass-bg-hover:#24242ad9;--glass-border:#ffffff1f;--glass-border-bright:#ffffff47;--glass-specular:inset 0 1px 0 0 #ffffff2e;--glass-shadow:0 24px 64px -12px #000000d9;--glass-blur:blur(40px) saturate(180%);--text-primary:#fff;--text-muted:#ffffffa6;--text-dim:#ffffff6b;--accent-cyan:#fff;--accent-emerald:#fff;--accent-alert:#fff;--radius-card:24px;--radius-control:12px;--radius-pill:9999px;background:#000;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,PingFang SC,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#000;margin:0;overflow:hidden}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default}button:focus-visible{outline-offset:2px;outline:2px solid #fffc}[hidden]{display:none!important}.mono,kbd{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Roboto Mono,Menlo,monospace}kbd{white-space:nowrap;color:#fff;background:#ffffff14;border:1px solid #ffffff29;border-radius:9999px;padding:3px 8px;font-size:11px;line-height:1.4;box-shadow:inset 0 1px #ffffff26}#app,#scene{width:100%;height:100%;position:fixed;inset:0}#scene canvas{touch-action:none;outline:none;width:100%;height:100%;display:block}.hud{pointer-events:none;z-index:2;position:fixed;inset:0}.hud button{pointer-events:auto}.topbar{pointer-events:none;z-index:2;justify-content:space-between;align-items:center;height:auto;padding:16px 24px;display:flex;position:absolute;top:0;left:0;right:0;-webkit-backdrop-filter:none!important;background:0 0!important;border-bottom:none!important}.identity{display:none!important}.timer-block{text-align:center;pointer-events:auto;background:#11141b;border:1px solid #ffffff29;border-radius:8px;min-width:120px;padding:6px 18px;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #000000b3}.timer-block>span{letter-spacing:2px;color:var(--text-muted);text-transform:uppercase;font-size:9px;font-weight:600;display:block}#timer{color:#fff;font-size:28px;font-weight:700;line-height:1.1;display:block}#timer span{color:var(--text-muted);margin-left:2px;font-size:12px;font-weight:400}.toolbar{pointer-events:auto;gap:8px;margin-left:auto;display:flex}.toolbar button{color:var(--text-primary);background:#14171f;border:1px solid #ffffff29;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-size:12px;transition:all .16s;display:inline-flex;box-shadow:0 4px 12px #00000080}.toolbar button:hover{background:#1e222b;border-color:#ffffff59;transform:translateY(-1px)}.toolbar button:disabled{opacity:.4;transform:none}.toolbar kbd{padding:2px 6px;font-size:10px}.debug-panel{display:none!important}.objective{background:#11141b;border:1px solid #ffffff24;border-radius:8px;align-items:flex-start;gap:12px;max-width:360px;padding:10px 16px;display:flex;position:absolute;top:18px;left:24px;box-shadow:0 8px 24px #000000b3}.objective strong{color:var(--text-primary);letter-spacing:.5px;font-size:13px;font-weight:600;display:block}.objective span:not(.status-dot){color:var(--text-muted);margin-top:4px;font-size:11px;line-height:1.5;display:block}.status-dot{background:#fff;border-radius:50%;flex:none;width:8px;height:8px;margin-top:5px;box-shadow:0 0 6px #fff9}.toast{text-align:center;color:#fff;background:#141720;border:1px solid #fff3;border-radius:8px;max-width:520px;padding:10px 24px;font-size:13px;position:absolute;top:96px;left:50%;transform:translate(-50%);box-shadow:0 16px 40px #000c}.toast.alert{color:#fee2e2;background:#2a1114;border-color:#ef4444;box-shadow:0 10px 30px #ef444466}body[data-phase=start] .hud{display:none}.bottom-hud{justify-content:space-between;align-items:flex-end;gap:20px;display:flex;position:absolute;bottom:24px;left:28px;right:28px}.stamina-panel{background:#11141b;border:1px solid #ffffff24;border-radius:8px;flex:none;width:184px;padding:12px 16px;box-shadow:0 8px 24px #000000b3}.stamina-panel>div:first-child{color:var(--text-primary);justify-content:space-between;font-size:11px;font-weight:600;display:flex}.stamina-track{background:#222633;border-radius:3px;height:5px;margin:7px 0;overflow:hidden}#stamina-fill{transform-origin:0;background:#fff;border-radius:3px;width:100%;height:100%;transition:transform 80ms linear;box-shadow:0 0 4px #fff6}.stamina-panel small{color:var(--text-muted);font-size:9px;line-height:1.3;display:block}.commands{gap:12px;margin:0 auto;display:flex}.commands button{text-align:left;background:#11141b;border:1px solid #ffffff24;border-radius:8px;align-items:center;gap:12px;width:216px;padding:10px 16px;transition:all .16s;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 24px #0009}.commands button:hover:not(:disabled){background:#1a1e28;border-color:#ffffff59;transform:translateY(-2px);box-shadow:0 12px 32px #000000bf}.commands button:active:not(:disabled){background:#0d0f15;transform:translateY(1px)}.commands button:disabled{opacity:.45;filter:grayscale()}.commands kbd.key-badge,.commands kbd{color:#fff;background:#1b1f29;border:1px solid #ffffff38;border-bottom:2px solid #090a0d;border-radius:6px;justify-content:center;align-items:center;width:32px;min-width:32px;height:32px;padding:0;font-family:ui-monospace,SFMono-Regular,Roboto Mono,Menlo,monospace;font-size:15px;font-weight:800;display:flex;box-shadow:inset 0 1px #fff3}.commands .cmd-info{flex-direction:column;min-width:0;display:flex}.commands strong{color:#fff;letter-spacing:.5px;font-size:13px;font-weight:600;display:block}.commands small{color:#8c93a4;white-space:nowrap;margin-top:2px;font-size:11px;display:block}.commands .command-status{color:#fff;white-space:nowrap;background:#ffffff14;border:1px solid #ffffff29;border-radius:4px;margin-left:auto;padding:2px 6px;font-size:10px;font-weight:600}.commands button:disabled .command-status{color:var(--text-dim);background:0 0;border-color:#0000}.commands .cooldown-fill{height:3px;width:var(--progress,0%);opacity:.85;background:#fff;position:absolute;bottom:0;left:0}.commands button.denied{animation:.32s denied}@keyframes denied{25%{border-color:#ef4444}60%{transform:translate(3px)}}.effect-panel{min-width:290px;color:var(--text-primary);background:#11141b;border:1px solid #ffffff24;border-radius:8px;align-items:center;gap:12px;padding:8px 18px;font-size:11px;display:flex;position:absolute;bottom:124px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #000000b3}.effect-panel strong{font-weight:600}.effect-panel .mono{color:#fff;margin-left:auto;font-size:10px;font-weight:600}.effect-track{background:#222633;border-radius:2px;width:64px;height:4px;overflow:hidden}#effect-fill{transform-origin:0;background:#fff;border-radius:2px;height:100%}.map-panel{background:#11141b;border:1px solid #ffffff24;border-radius:8px;width:206px;padding:8px 8px 6px;position:absolute;top:92px;right:28px;box-shadow:0 8px 24px #000000b3}.map-panel>div{letter-spacing:.5px;color:var(--text-muted);justify-content:space-between;padding:0 4px 6px;font-size:9px;font-weight:500;display:flex}.map-panel canvas{background:#080c14;border-radius:6px;width:206px;height:148px;display:block}.map-panel small{color:var(--text-dim);margin-top:5px;padding:0 4px;font-size:9px;display:block}.danger{pointer-events:none;opacity:0;transition:opacity .2s;position:fixed;inset:0;box-shadow:inset 0 0 100px 18px #ef444473}.danger[data-on=true]{opacity:1}.threat-pointer{z-index:2;color:#ef4444;pointer-events:none;opacity:.9;filter:drop-shadow(0 2px 8px #ef444480);font-size:22px;line-height:1;position:fixed;top:50%;left:50%}.touch-controls{pointer-events:none;justify-content:space-between;align-items:flex-end;display:flex;position:absolute;bottom:18px;left:20px;right:20px}.touch-stick{border:1px solid var(--glass-border);width:132px;height:132px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);pointer-events:auto;touch-action:none;box-shadow:var(--glass-shadow);background:#0f172aa6;border-radius:50%;position:relative}.touch-thumb{background:#38bdf8d9;border-radius:50%;width:54px;height:54px;margin:-27px 0 0 -27px;position:absolute;top:50%;left:50%;box-shadow:0 2px 12px #38bdf880}.touch-actions{pointer-events:auto;gap:10px;display:flex}.touch-actions button{border:1px solid var(--glass-border);background:var(--glass-bg);min-width:64px;height:64px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:#fff;touch-action:manipulation;box-shadow:var(--glass-specular);border-radius:50%;font-size:15px;font-weight:600;position:relative}.touch-actions button[aria-pressed=true]{background:var(--accent-cyan);color:#0f172a;border-color:var(--accent-cyan)}#touch-sprint:after{content:"";background:conic-gradient(var(--accent-cyan) calc(var(--stamina,1) * 1turn), #33415580 0);border-radius:50%;position:absolute;inset:3px;-webkit-mask:radial-gradient(closest-side,#0000 calc(100% - 3.5px),#000 calc(100% - 2.5px));mask:radial-gradient(closest-side,#0000 calc(100% - 3.5px),#000 calc(100% - 2.5px))}#touch-sprint.exhausted{color:var(--text-dim)}body[data-touch=true] .bottom-hud .stamina-panel,body[data-touch=true] .controls-note,body[data-touch=true] .map-panel{display:none}.controls-note{text-align:right;color:var(--text-muted);background:#11141b;border:1px solid #ffffff24;border-radius:8px;flex-direction:column;gap:4px;min-width:140px;padding:8px 12px;font-size:11px;display:flex;box-shadow:0 4px 16px #0009}.controls-note kbd{color:#fff;background:#1b1e28;border:1px solid #fff3;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:600}.overlay{z-index:3;pointer-events:none;background:#000000a6;align-items:center;padding:60px 8vw;display:flex;position:fixed;inset:0}.briefing{pointer-events:auto;width:480px;max-width:92vw;color:var(--text-primary);border-radius:8px;padding:28px 32px 24px;box-shadow:0 24px 60px #000000f2;-webkit-backdrop-filter:none!important;background:#0d0f14!important;border:1px solid #ffffff2e!important}.briefing-head{border-bottom:1px solid #ffffff1f;justify-content:space-between;align-items:center;padding-bottom:12px;display:flex}.brand-pill{background:#161820;border:1px solid #ffffff29;border-radius:4px;align-items:center;gap:6px;padding:3px 8px;display:inline-flex}.brand-pill .brand-name{letter-spacing:2px;color:#fff;font-size:11px;font-weight:800}.brand-pill .sep{color:var(--text-dim);font-size:10px}.brand-pill .mono{color:#fff;font-size:11px;font-weight:600}.phase-badge{color:var(--text-muted);background:#161820;border:1px solid #ffffff26;border-radius:4px;padding:3px 8px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:11px}.eyebrow{letter-spacing:2.5px;color:var(--text-dim);text-transform:uppercase;margin:16px 0 4px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:11px}.briefing h1{letter-spacing:-.03em;color:#fff;margin:4px 0 10px;font-size:42px;font-weight:900;line-height:1.15}.briefing-copy{color:var(--text-muted);margin:0 0 16px;font-size:14px;line-height:1.6}.briefing-copy .highlight-timer{color:#fff;text-shadow:none;font-size:16px;font-weight:700}.gamepad-guide{background:#11141b;border:1px solid #ffffff24;border-radius:8px;flex-direction:column;gap:10px;margin:0 0 16px;padding:12px 16px;display:flex}.guide-row{align-items:center;display:flex}.guide-row-basic{justify-content:space-between;width:100%}.guide-row-tactical{justify-content:flex-start;gap:12px;width:100%}.guide-divider-v{background:#ffffff1f;width:1px;height:28px}.guide-divider-h{background:#ffffff14;width:100%;height:1px}.key-cluster{align-items:center;gap:8px;display:flex}.wasd-group{align-items:center}.wasd-layout{flex-direction:column;align-items:center;gap:3px;display:flex}.key-row{gap:3px;display:flex}.key-cap.square-key{color:#fff;background:#1c202a;border:1px solid #ffffff38;border-bottom:2px solid #090a0d;border-radius:4px;justify-content:center;align-items:center;width:26px;height:26px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;font-weight:700;display:flex;box-shadow:inset 0 1px #fff3}.pill-key{color:#fff;background:#1c202a;border:1px solid #ffffff38;border-bottom:2px solid #090a0d;border-radius:4px;justify-content:center;align-items:center;height:24px;padding:0 8px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:11px;font-weight:700;display:flex}.mouse-key{color:#fff;white-space:nowrap;background:#1c202a;border:1px solid #ffffff38;border-bottom:2px solid #090a0d;border-radius:4px;align-items:center;gap:5px;height:24px;padding:0 8px;font-size:11px;font-weight:600;display:flex}.mouse-svg{color:#ffffffd9}.key-action-label{color:#8c93a4;letter-spacing:.3px;white-space:nowrap;font-size:11px;font-weight:500}.tactical-lead-tag{color:#fff;background:#1b1f29;border:1px solid #fff3;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:700}.tactical-item{align-items:center;gap:5px;display:flex}.tactical-item .num-key{color:#fff!important;background:#242936!important;border-color:#ffffff4d!important;font-weight:800!important}.tactical-desc{color:#fff;white-space:nowrap;font-size:12px;font-weight:600}.tactical-hint{color:var(--text-dim);white-space:nowrap;margin-left:auto;font-size:10px}.touch-hint-pill{text-align:center;width:100%;color:var(--text-dim);padding:4px 0;font-size:12px}.primary{color:#fff;letter-spacing:2px;cursor:pointer;background:#181b24;border:1px solid #ffffff40;border-left:4px solid #fff;border-radius:4px;justify-content:space-between;align-items:center;width:100%;padding:16px 20px;font-size:16px;font-weight:800;transition:all .18s;display:flex;box-shadow:0 8px 24px #000000b3}.primary:hover{color:#000;background:#fff;border-color:#fff;transform:translate(6px);box-shadow:0 12px 32px #ffffff40}.primary:active{transform:translate(3px)scale(.99)}.primary:hover .arrow-icon{color:#000;transform:translate(4px)}.primary .arrow-icon{color:#fff;font-size:18px;font-weight:700;transition:transform .2s}.briefing-footnote{color:var(--text-dim);margin:14px 0 0;font-size:10px;line-height:1.7}.shift-log{border-top:1px dashed var(--glass-border);color:var(--text-muted);margin-top:14px;padding-top:12px;font-size:10px;line-height:1.8}.shift-log strong{color:#fff;font-weight:600}.shift-log .log-title{letter-spacing:1px;color:#fff}.shift-log ul{margin:4px 0 0;padding:0;list-style:none}.shift-log li{gap:8px;display:flex}.shift-log li .mono{min-width:34px;color:var(--text-dim)}.shift-log li.won .mono{color:#fff;font-weight:600}.shift-log li.lost .mono{color:var(--text-dim)}.difficulty-picker{grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 16px;display:grid}.difficulty-card{text-align:center;cursor:pointer;color:#fff9;background:#14161e;border:1px solid #ffffff1f;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:10px 8px;transition:all .15s;display:flex;position:relative}.difficulty-card:hover{background:#1a1e28;border-color:#ffffff4d}.diff-stars{letter-spacing:2px;color:var(--text-dim);font-size:13px;line-height:1}.diff-level-text{color:#fff;letter-spacing:.5px;font-size:13px;font-weight:700}.diff-card-inner{align-items:center;gap:4px;display:flex}.diff-lock-icon{color:var(--text-dim)}.difficulty-card[data-selected=true]{color:#fff;background:#ffffff1f;border-color:#ffffff61;box-shadow:inset 0 1px #ffffff40,0 6px 16px #0006}.difficulty-card[data-selected=true] .diff-stars{color:#f59e0b;text-shadow:0 0 10px #f59e0bb3}.difficulty-card[data-selected=true] .diff-level-text{color:#fff}.difficulty-card:not([data-locked=true]):hover{background:#ffffff14;border-color:#ffffff40;transform:translateY(-1px)}.difficulty-card[data-locked=true]{opacity:.45;cursor:default}.difficulty-card:not([data-locked=true]):hover{border-color:var(--glass-border-bright);transform:translateY(-1px)}body[data-touch=true] .difficulty-picker{grid-template-columns:repeat(3,1fr);gap:6px}body[data-touch=true] .difficulty-card{padding:9px 6px}.fatal{z-index:5;color:#fff;background:#090d16;padding:15vh 10vw;position:fixed;inset:0}.fatal h1{color:var(--accent-alert);font-size:32px}.fatal p{max-width:700px;color:var(--text-muted);line-height:1.8}body[data-phase=won] .status-dot{background:#fff;box-shadow:0 0 8px #fff}body[data-phase=lost] .status-dot{box-shadow:none;background:#fff6}body[data-phase=lost] .briefing{border-top:1px solid #fff3}body[data-phase=won] .briefing{border-top:1px solid #ffffff59}body[data-phase=won] .briefing,body[data-phase=lost] .briefing{animation:.55s cubic-bezier(.2,.85,.3,1) both result-in}@keyframes result-in{0%{opacity:0;transform:translateY(34px)scale(.97)}to{opacity:1;transform:none}}body[data-phase=won] #overlay-title,body[data-phase=lost] #overlay-title{animation:.5s .18s both result-line}body[data-phase=won] #overlay-copy,body[data-phase=lost] #overlay-copy{animation:.5s .34s both result-line}body[data-phase=won] .primary,body[data-phase=lost] .primary{animation:.55s .55s both result-cta,2.1s ease-in-out .9s infinite cta-pulse}@keyframes result-line{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes result-cta{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes cta-pulse{0%,to{box-shadow:0 4px 20px #fff3}50%{box-shadow:0 4px 28px #fff6}}#result-flash{z-index:4;pointer-events:none;opacity:0;position:fixed;inset:0}body[data-phase=lost] #result-flash{background:radial-gradient(#0000 40%,#000000bf 100%);animation:1.1s ease-out both lost-flash}body[data-phase=won] #result-flash{background:radial-gradient(#ffffff1a 40%,#ffffff4d 100%);animation:2.4s ease-in-out infinite won-glow}@keyframes lost-flash{0%{opacity:0}12%{opacity:1}to{opacity:0}}@keyframes won-glow{0%,to{opacity:.35}50%{opacity:.8}}.escape-flare{z-index:4;pointer-events:none;opacity:0;background:radial-gradient(circle at 75%,#fffdf5f5 0%,#fef3c7cc 45%,#ffffff80 100%);transition:opacity .4s ease-out;position:fixed;inset:0}.result-stats{grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0 14px;display:grid}.stat-pill{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffff0a;border:1px solid #ffffff1a;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:10px 8px;display:flex;box-shadow:inset 0 1px 1px #ffffff26}.stat-pill .stat-label{color:var(--text-dim);letter-spacing:.5px;font-size:11px}.stat-pill .stat-value{color:#fff;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:16px;font-weight:700}.result-evaluation{color:#94a3b8;text-align:center;letter-spacing:.5px;margin:0 0 20px;font-size:13px}body[data-phase=won] .difficulty-picker,body[data-phase=lost] .difficulty-picker,body[data-phase=won] .briefing-actions-secondary,body[data-phase=lost] .briefing-actions-secondary,body[data-phase=won] .shift-log,body[data-phase=lost] .shift-log{display:none!important}body[data-phase=won] .overlay,body[data-phase=lost] .overlay{justify-content:center;align-items:center;padding:40px}body[data-phase=won] .briefing,body[data-phase=lost] .briefing{text-align:center;width:460px;max-width:90vw;padding:0;background:0 0!important}body[data-phase=won] .briefing-head,body[data-phase=lost] .briefing-head{justify-content:center}body[data-phase=won] .primary,body[data-phase=lost] .primary{border-left:1px solid #fff3;justify-content:center;gap:12px}body:not([data-ready=true]) .primary{pointer-events:none;opacity:.5}.boot-note{color:var(--text-dim);text-align:center;margin:9px 0 0;font-size:11px;display:none}body:not([data-ready=true]) .boot-note{display:block}#fatal[data-kind=context] .fatal-hint{display:none}@media (width<=1024px){.map-panel{display:none}}@media (width<=1180px){.identity{gap:9px}.identity>.mono{display:none}.commands button{border-radius:14px;gap:8px;width:176px;padding:10px 14px}.commands kbd{padding:5px 8px;font-size:11px}.commands .command-status{margin-left:auto;display:block}.effect-panel{min-width:250px;bottom:126px}.controls-note{min-width:105px}.overlay{padding-left:6vw}}@media (width<=900px){.commands,.stage-label{display:none}.toolbar{gap:4px}.topbar{padding:12px 16px}.objective{border-radius:14px;max-width:300px;top:90px;left:16px}.bottom-hud{bottom:14px;left:16px;right:16px}.overlay{justify-content:center;padding:92px 20px 115px}.briefing{border-radius:18px;width:100%;max-width:490px}.toast{min-width:240px;top:162px}.debug-panel{top:88px;right:14px}}body[data-touch=true] .commands{gap:6px;display:flex}body[data-touch=true] .commands button{border-radius:12px;flex:1 1 0;gap:6px;width:auto;min-width:0;padding:8px 7px}body[data-touch=true] .commands button small{display:none}body[data-touch=true] .commands button .command-status{font-size:8px}body[data-touch=true] .bottom-hud{justify-content:center;bottom:168px;left:12px;right:12px}body[data-touch=true] .effect-panel{bottom:236px;left:50%}body[data-touch=true] .objective{border-radius:14px;max-width:calc(100% - 24px);padding:9px 12px;top:84px;left:12px}body[data-touch=true] .toast{max-width:calc(100% - 32px);padding:9px 13px;font-size:12px;top:160px}body[data-touch=true] .topbar{padding:10px 14px}body[data-touch=true] .identity strong{letter-spacing:3px;font-size:21px}body[data-touch=true] #timer{font-size:28px}body[data-touch=true] .stage-label{display:none}body[data-touch=true] .briefing{border-radius:18px;padding:22px 22px 20px}body[data-touch=true] .overlay{align-items:flex-start;padding:76px 16px 120px}body[data-touch=true] .briefing h1{margin-bottom:12px;font-size:26px}body[data-touch=true] .briefing-copy{margin-bottom:14px;font-size:14px;line-height:1.75}body[data-touch=true] .gamepad-guide{margin-bottom:16px;padding:10px 14px}body[data-touch=true] .gamepad-guide .wasd-group,body[data-touch=true] .gamepad-guide .actions-group,body[data-touch=true] .gamepad-guide .tactical-group,body[data-touch=true] .gamepad-guide .guide-divider{display:none}body[data-touch=true] #touch-help{display:block}body[data-touch=true] .primary{padding:15px 16px;font-size:15px}body[data-touch=true] .keyboard-only{display:none}@media (height<=640px){body[data-touch=true] .bottom-hud{bottom:150px}body[data-touch=true] .effect-panel{bottom:214px}.touch-stick{width:116px;height:116px}}@media (height<=760px){.topbar{height:70px;padding-top:10px;padding-bottom:10px}.timer-block{top:8px}#timer{font-size:30px}.objective,.debug-panel,.map-panel{top:84px}.effect-panel{bottom:116px}.toast{top:90px}.briefing{padding:24px 30px 20px}.eyebrow{margin-top:18px}.gamepad-guide{margin-bottom:14px;padding:10px 14px}.briefing h1{margin-bottom:10px}.briefing-copy{margin-bottom:14px;font-size:14px}.bottom-hud{bottom:16px}}@media (orientation:landscape) and (height<=520px){body[data-touch=true] .overlay{padding:10px 16px}body[data-touch=true] .briefing{-webkit-overflow-scrolling:touch;border-radius:14px;max-height:calc(100% - 16px);padding:14px 20px 12px;overflow-y:auto}body[data-touch=true] .briefing h1{margin-bottom:8px;font-size:21px}body[data-touch=true] .briefing-copy{margin-bottom:10px;font-size:13px;line-height:1.6}body[data-touch=true] .gamepad-guide{margin-bottom:10px;padding:6px 10px}body[data-touch=true] .primary{padding:12px 14px;font-size:14px}body[data-touch=true] .bottom-hud{bottom:12px}body[data-touch=true] .effect-panel{bottom:72px}}.lock-icon{vertical-align:-2px;stroke:var(--text-dim);margin-left:4px;display:inline-block}.briefing-actions-secondary{color:var(--text-muted);justify-content:center;align-items:center;gap:12px;margin-top:14px;font-size:13px;display:flex}.briefing-actions-secondary .sep{color:var(--text-dim)}.subtle-link{color:#ffffffd9;letter-spacing:.5px;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:9999px;padding:6px 14px;font-size:12px;font-weight:500;text-decoration:none;transition:all .2s}.subtle-link:hover{color:#fff;background:#ffffff24;border-color:#ffffff47;transform:translateY(-1px)}.modal-layer{z-index:1000;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-backdrop{background:#000000d9;position:absolute;inset:0}.modal-card{z-index:2;background:#0e1117;border:1px solid #ffffff29;border-radius:8px;flex-direction:column;animation:.25s cubic-bezier(.16,1,.3,1) modal-pop;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 64px #000000e6}@keyframes modal-pop{0%{opacity:0;transform:scale(.96)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-head{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-head strong{color:var(--text-primary);font-size:16px;font-weight:600}.modal-close{color:var(--text-muted);background:#ffffff14;border:1px solid #ffffff26;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;line-height:1;transition:all .2s;display:flex}.modal-close:hover{color:#fff;background:#fff3}.qr-card{text-align:center;width:100%;max-width:360px;padding-bottom:24px}.qr-preview-box{justify-content:center;padding:24px;display:flex}.qr-preview-box img{background:#fff;border-radius:12px;max-width:100%;height:auto;padding:10px;box-shadow:0 8px 24px #0000004d}.qr-url{color:var(--accent-cyan);letter-spacing:.5px;margin-bottom:8px;font-size:14px}.qr-desc{color:var(--text-muted);margin:0;padding:0 24px;font-size:12px;line-height:1.6}.pitch-card{width:92vw;max-width:1280px;height:86vh}.pitch-title-block{align-items:center;gap:10px;display:flex}.badge-mini{color:#fff;background:#181a22;border:1px solid #ffffff2e;border-radius:4px;padding:2px 8px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:10px;font-weight:600}.modal-actions{align-items:center;gap:12px;display:flex}.btn-subtle{color:var(--text-primary);background:#ffffff14;border:1px solid #ffffff26;border-radius:14px;padding:4px 10px;font-size:12px;text-decoration:none;transition:all .2s}.btn-subtle:hover{color:var(--accent-cyan);background:#ffffff2e}.pitch-frame-wrapper{background:#0b0f19;flex:1;width:100%;height:100%}.pitch-frame-wrapper iframe{border:none;width:100%;height:100%}.shop{margin:0 0 16px}.shop-summary-bar{border:1px solid var(--glass-border);background:#1e293b73;border-radius:14px;justify-content:space-between;align-items:center;padding:8px 14px;transition:all .2s;display:flex;box-shadow:inset 0 1px 1px #ffffff26,0 4px 16px #00000040}.shop-summary-bar:hover{border-color:var(--glass-border-bright);background:#1e293b99}.shop-summary-info{align-items:center;gap:8px;font-size:12px;display:flex}.shop-summary-tag{letter-spacing:1px;color:var(--accent-cyan);text-transform:uppercase;background:#0e749040;border:1px solid #38bdf84d;border-radius:4px;padding:2px 6px;font-size:9px;font-weight:700}.shop-summary-level{color:#fff;font-weight:700}.shop-summary-role{color:var(--text-muted);font-size:11px}.shop-summary-btn{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff2e;border-radius:20px;align-items:center;gap:6px;padding:5px 12px;font-size:11px;font-weight:600;transition:all .15s;display:flex}.shop-summary-btn:hover{background:#ffffff29;border-color:#ffffff59;transform:translateY(-1px);box-shadow:0 0 12px #ffffff26}.shop-summary-btn .gear-icon{font-size:12px}.shop-config-layer{z-index:2000;background:#000000bf;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.shop-config-layer[hidden]{display:none!important}.shop-config-card{z-index:1;background:#0a0a0d;border:1px solid #fff3;border-radius:8px;width:640px;max-width:95vw;animation:.2s ease-out modalEnter;position:relative;overflow:hidden;box-shadow:0 24px 60px #000000f2}.config-title-block{align-items:center;gap:10px;display:flex}.config-title-block strong{color:#fff;letter-spacing:1px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:13px;font-weight:800}.shop-modal-content{gap:14px;max-height:72vh;padding:16px 20px;display:grid;overflow-y:auto}.shop-config-footer{background:#070709;border-top:1px solid #ffffff1a;justify-content:flex-end;padding:12px 20px 16px;display:flex}.config-confirm-btn{color:#000;cursor:pointer;background:#fff;border:none;border-radius:4px;width:auto;min-width:120px;margin:0;padding:9px 20px;font-size:13px;font-weight:800;transition:all .15s}.config-confirm-btn:hover{background:#e2e8f0;transform:translateY(-1px)}.shop-cover{background:#000;border:1px solid #ffffff2e;border-radius:6px;height:165px;max-height:165px;margin:0;position:relative;overflow:hidden;box-shadow:0 8px 24px #000000b3}.shop-cover img{object-fit:cover;object-position:center 50%;filter:brightness(.92)contrast(1.05);width:100%;height:100%;max-height:165px;transition:transform .4s;display:block}.shop-cover:hover img{transform:scale(1.02)}.shop-role-3d-box{pointer-events:none;background:#060608;border:1px solid #fff3;border-radius:6px;justify-content:center;align-items:center;width:124px;height:124px;display:flex;position:absolute;top:8px;right:8px;overflow:hidden;box-shadow:0 4px 16px #000c}.role-3d-canvas{display:block;width:124px!important;height:124px!important}.shop-role-3d-label{color:#fff;letter-spacing:.5px;background:#000000d9;border:1px solid #fff3;border-radius:4px;padding:1px 6px;font-size:9px;font-weight:700;position:absolute;bottom:4px;right:6px}.shop-cover-badge{letter-spacing:.5px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;background:#121216d9;border:1px solid #ffffff29;border-radius:20px;padding:4px 10px;font-size:10px;font-weight:600;position:absolute;top:10px;left:10px;box-shadow:0 4px 12px #0006}.shop-cover-badge.locked{color:#ffffffb3;background:#ffffff14;border-color:#fff3}.shop-cover-badge.free{color:#fff;background:#ffffff1f;border-color:#ffffff4d}.shop-cover-meta{background:linear-gradient(#0000 0%,#0a0a0cd9 50%,#0a0a0cfa 100%);flex-direction:column;gap:2px;padding:14px 16px 10px;display:flex;position:absolute;bottom:0;left:0;right:0}.shop-cover-meta strong{color:#fff;letter-spacing:.5px;font-size:15px;font-weight:800}.shop-cover-meta span{color:var(--text-muted);font-size:10px;font-weight:500}.shop-group{gap:6px;display:grid}.shop-group-head{justify-content:space-between;align-items:center;display:flex}.shop-label{letter-spacing:1.5px;color:var(--text-dim);text-transform:uppercase;font-size:10px;font-weight:700}.shop-nav-arrows{gap:4px;display:flex}.shop-nav-arrows button{color:#fff;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:6px;padding:2px 8px;font-size:11px;font-weight:700;transition:all .15s}.shop-nav-arrows button:hover{background:#ffffff26;border-color:#ffffff4d}.shop-row{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.shop-chip{text-align:left;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1a;border-radius:4px;align-items:center;gap:8px;padding:8px 10px;transition:all .15s;display:flex;position:relative}.shop-chip:hover{background:#ffffff14;border-color:#ffffff4d;transform:translateY(-1px)}.shop-chip.active{background:#ffffff24;border-color:#fff;box-shadow:0 0 12px #ffffff26}.shop-chip.locked{opacity:.45;background:#ffffff05}.shop-chip>span{gap:2px;min-width:0;display:grid}.shop-chip strong{white-space:nowrap;color:#fff;font-size:11px;font-weight:700}.shop-chip small{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:9px;overflow:hidden}.shop-chip.active strong{color:#fff}.shop-thumb{object-fit:cover;border:1px solid #ffffff26;border-radius:4px;flex:none;width:28px!important;max-width:28px!important;height:28px!important;max-height:28px!important}.shop-avatar{object-fit:cover;border:1.5px solid var(--accent-cyan);border-radius:50%;flex:none;width:28px!important;max-width:28px!important;height:28px!important;max-height:28px!important}.shop-swatch{border:1px solid #fff9;border-radius:50%;width:6px;height:6px;position:absolute;top:6px;right:6px}.shop-buy{color:#fff;background:linear-gradient(135deg,#d97706 0%,#b45309 100%);border:1px solid #f59e0b;border-radius:12px;justify-content:space-between;align-items:center;width:100%;margin-bottom:4px;padding:10px 16px;transition:all .15s;display:flex;box-shadow:0 6px 20px #d9770659}.shop-buy:hover:not(:disabled){background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);transform:translateY(-1px);box-shadow:0 8px 24px #f59e0b73}.shop-buy strong{letter-spacing:.5px;font-size:12px;font-weight:800}.shop-buy span{opacity:.95;font-size:10px;font-weight:500}.shop-buy:disabled{opacity:.55}.shop-note{color:var(--text-muted);margin:0;font-size:10px;line-height:1.5}.shop-note.warn{color:#fbbf24}.shop-modal{z-index:100;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.shop-modal-backdrop{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#070b14d9;position:absolute;inset:0}.shop-modal-card{z-index:1;border:1px solid var(--glass-border-bright);background:#0f172af2;border-radius:20px;width:480px;max-width:100%;animation:.2s ease-out modalEnter;position:relative;overflow:hidden;box-shadow:0 24px 60px #0009,0 0 30px #38bdf833}.shop-modal-header{border-bottom:1px solid var(--glass-border);background:#1e293b99;justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.shop-modal-header .mono{letter-spacing:1.5px;color:var(--accent-cyan);font-size:10px;font-weight:700}.shop-modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:20px;line-height:1}.shop-modal-close:hover{color:#fff}.shop-modal-body{gap:14px;padding:18px 20px;display:grid}.shop-modal-preview{border:1px solid var(--glass-border);border-radius:10px;height:120px;max-height:120px;position:relative;overflow:hidden}.shop-modal-preview img{object-fit:cover;width:100%;height:100%}.shop-modal-badge{color:#fff;background:#d97706f2;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:700;position:absolute;bottom:8px;left:10px}.shop-modal-info h3{color:#fff;margin:0 0 4px;font-size:16px;font-weight:800}.shop-modal-desc{color:var(--text-muted);margin:0;font-size:12px;line-height:1.6}.shop-modal-specs{border:1px solid var(--glass-border);background:#1e293b66;border-radius:8px;gap:5px;padding:10px 12px;font-size:10px;display:grid}.shop-modal-specs>div{color:var(--text-muted);justify-content:space-between;display:flex}.shop-modal-specs strong{color:#fff;font-weight:700}.shop-modal-specs strong.warn{color:#fbbf24}.shop-modal-footer{border-top:1px solid var(--glass-border);background:#0f172acc;gap:10px;padding:12px 20px 16px;display:flex}.shop-modal-btn{border-radius:10px;flex:1;padding:9px 12px;font-size:11px;font-weight:700;transition:all .15s}.shop-modal-btn.default-btn{border:1px solid var(--glass-border);color:var(--text-primary);background:#ffffff14}.shop-modal-btn.default-btn:hover{background:#ffffff26}.shop-modal-btn.primary-btn{background:var(--accent-cyan);color:#0b0f19;border:1px solid #0284c7}.shop-modal-btn.primary-btn:hover{background:#38bdf8}
