:root{--bg-primary: #030712;--bg-panel: rgba(6, 11, 25, .92);--bg-panel-strong: rgba(9, 15, 33, .96);--border-color: rgba(148, 163, 184, .25);--text-primary: #f8fafc;--text-secondary: #94a3b8;--accent: #38bdf8;--accent-strong: #0ea5e9}*{box-sizing:border-box}body{margin:0;font-family:Montserrat,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;background:radial-gradient(circle at 20% 30%,#e2e8f0,#cbd5f5 55%,#94a3ff);color:var(--text-primary);overflow:hidden;min-height:100vh}button{font:inherit;border:none;cursor:pointer}.shell{position:relative;width:100vw;height:100vh;background:linear-gradient(135deg,#f8fafcf2,#e2e8f0eb)}.shell__viewport{width:100%;height:100%;transition:opacity .3s ease;background:#f8fafca6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.shell__viewport--active{opacity:1}.shell__hud{position:absolute;top:0;right:0;bottom:0;left:0;padding:32px;display:flex;align-items:flex-end;justify-content:space-between;pointer-events:none;gap:24px}.shell__hud>*{pointer-events:auto}.hud-panel{pointer-events:auto;max-width:360px;border-radius:24px;padding:24px;background:var(--bg-panel-strong);border:1px solid var(--border-color);box-shadow:0 20px 80px #0f172a59}.hud-panel__eyebrow{margin:0 0 6px;font-size:11px;letter-spacing:.35em;text-transform:uppercase;color:var(--text-secondary)}.hud-panel__title{margin:0 0 12px;font-size:22px;letter-spacing:.1em}.hud-panel__body{margin:0;color:var(--text-secondary);line-height:1.5}.hud-panel__actions{margin-top:20px}.joystick{pointer-events:auto;position:relative;width:220px;height:220px;border-radius:50%;border:1px solid var(--border-color);background:#0f172a8c;box-shadow:inset 0 0 30px #082f4966,0 10px 30px #02061799;touch-action:none}.joystick__ring{position:absolute;top:26px;right:26px;bottom:26px;left:26px;border:1px dashed rgba(148,163,184,.4);border-radius:50%}.joystick__knob{position:absolute;left:50%;top:50%;width:84px;height:84px;border-radius:50%;background:linear-gradient(145deg,var(--accent),var(--accent-strong));border:2px solid rgba(255,255,255,.4);box-shadow:0 12px 30px #0ea5e959;transform:translate(-50%,-50%);transition:transform .05s linear}@media (max-width: 768px){.shell__hud{flex-direction:column;justify-content:end;align-items:stretch;padding:16px}.hud-panel{width:100%}.joystick{align-self:center;width:180px;height:180px}.joystick__ring{top:22px;right:22px;bottom:22px;left:22px}.joystick__knob{width:72px;height:72px}}.button--fire{min-width:auto;padding:16px 24px;border-radius:16px;font-weight:700;letter-spacing:.08em;background:linear-gradient(135deg,#f59e0b,#f97316);color:#0f172a;box-shadow:0 10px 30px #f9731659}.overlay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid var(--border-color);border-radius:24px;background:var(--bg-panel);padding:32px;width:min(420px,calc(100vw - 32px));box-shadow:0 20px 80px #0f172a80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:2}.overlay--panel{max-width:460px}.overlay--hud{top:auto;transform:translate(-50%);bottom:32px;width:min(520px,calc(100vw - 32px));display:flex;align-items:flex-start;gap:16px;background:var(--bg-panel-strong)}.overlay--center{text-align:center}.overlay__eyebrow{font-size:12px;letter-spacing:.35em;text-transform:uppercase;color:var(--text-secondary);margin:0 0 8px}.overlay__title{margin:0 0 16px;font-size:28px;letter-spacing:.05em}.overlay__body{margin:0;color:var(--text-secondary);line-height:1.5}.overlay__label{margin:0 0 16px;text-transform:uppercase;letter-spacing:.4em;color:var(--text-secondary)}.overlay__value{margin:0;font-size:40px;font-weight:600;letter-spacing:.15em}.overlay__actions{display:flex;gap:12px;margin-top:24px}.button{padding:12px 16px;border-radius:12px;background:linear-gradient(120deg,var(--accent),var(--accent-strong));color:#0f172a;font-weight:600;letter-spacing:.05em;min-width:160px}.button--ghost{background:transparent;color:var(--text-primary);border:1px solid var(--border-color)}@media (max-width: 640px){.overlay--hud{flex-direction:column}.overlay__actions{flex-direction:column;width:100%}.button,.button--ghost{width:100%}}
