html,body{margin:0;min-width:320px;width:100%;height:100%;min-height:100%;background:#10131a;color:#fff1f8;font-family:Avenir Next,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overscroll-behavior:none;touch-action:none;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}body{overflow:hidden}#game-shell{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;width:100dvw;min-height:100vh;min-height:100svh;height:100vh;height:100dvh;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0);box-sizing:border-box;background:linear-gradient(180deg,#121b2ae6,#0b0d13f5),#10131a;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none}#game-root{position:relative;width:100%;height:100%;overflow:hidden;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none}.boot-loading{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:32px;box-sizing:border-box;background:radial-gradient(circle at 50% 42%,rgba(112,235,255,.18),transparent 32%),linear-gradient(180deg,#121b2ad1,#0b0d13f0);color:#fff1f8;text-align:center;pointer-events:none;transition:opacity .18s ease}.boot-loading.is-hidden{opacity:0}.boot-loading__title{color:#ffd7f4;font:800 32px/1.1 Avenir Next,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;text-shadow:0 2px 18px rgba(112,235,255,.3)}.boot-loading__text{color:#dbe8ff;font:700 15px/1.4 Avenir Next,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}.boot-loading__bar{width:min(300px,72vw);height:8px;overflow:hidden;border:1px solid rgba(112,235,255,.38);border-radius:999px;background:#08111eb8}.boot-loading__bar-fill{width:42%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#70ebff,#ffe66d);animation:boot-loading-pulse 1.18s ease-in-out infinite}canvas{display:block;image-rendering:pixelated;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}@keyframes boot-loading-pulse{0%{transform:translate(-115%)}to{transform:translate(245%)}}.touch-controls{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.touch-controls[hidden]{display:none}.touch-controls:not(.is-visible) .touch-controls__cluster{display:none}.touch-controls__cluster{position:absolute;bottom:calc(8px + env(safe-area-inset-bottom,0));display:flex;gap:14px;pointer-events:none}.touch-controls__cluster--left{left:calc(8px + env(safe-area-inset-left,0))}.touch-controls__cluster--right{right:calc(8px + env(safe-area-inset-right,0));flex-direction:column;align-items:flex-end}.touch-joystick{position:relative;width:132px;height:132px;border:2px solid rgba(243,247,255,.38);border-radius:999px;background:radial-gradient(circle at center,rgba(112,235,255,.12) 0 28%,transparent 29%),radial-gradient(circle at center,#0f1e345c,#0f1e34ad);box-shadow:0 10px 28px #0000004d;pointer-events:auto;touch-action:none;-webkit-touch-callout:none;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.touch-joystick:before,.touch-joystick:after{content:"";position:absolute;left:50%;top:50%;border-radius:999px;background:#f3f7ff2e;transform:translate(-50%,-50%)}.touch-joystick:before{width:72%;height:2px}.touch-joystick:after{width:2px;height:72%}.touch-joystick.is-active{border-color:#d8fff0c7;background:radial-gradient(circle at center,rgba(61,220,151,.18) 0 28%,transparent 29%),radial-gradient(circle at center,#1840527a,#0f1e34b8)}.touch-joystick__knob{position:absolute;left:50%;top:50%;z-index:1;width:54px;height:54px;border:2px solid rgba(255,230,109,.72);border-radius:999px;background:#4373b3d1;box-shadow:0 8px 18px #00000057;transform:translate(-50%,-50%)}.touch-joystick:not(.is-active) .touch-joystick__knob{transition:transform .1s ease-out}.touch-button{min-width:78px;min-height:70px;border:2px solid rgba(243,247,255,.42);border-radius:999px;background:#0f1e349e;color:#fff1f8;font:700 13px/1 Avenir Next,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;letter-spacing:0;box-shadow:0 8px 24px #00000047;pointer-events:auto;touch-action:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-touch-callout:none;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.touch-button:active{background:#3ddc976b;border-color:#d8fff0d1}.touch-button--action{min-width:84px;min-height:78px}.touch-button--primary{background:#4373b3a8}.touch-button--special{min-width:90px;min-height:70px;border-color:#ffe66dc7;background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.42),transparent 25%),linear-gradient(135deg,#ff6096b8,#ffbe508a);color:#fff8d8;box-shadow:0 8px 24px #0000004d,0 0 22px #ffb95c3d}.touch-button--special:active{background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.54),transparent 25%),linear-gradient(135deg,#ff7db2d6,#ffda6ea8)}.touch-button--special.is-disabled{border-color:#cdd7e661;background:#0f1e3475;color:#f3f7ff8f;box-shadow:0 8px 18px #00000038}.touch-button--pause{position:absolute;top:calc(14px + env(safe-area-inset-top,0));right:calc(14px + env(safe-area-inset-right,0));min-width:72px;min-height:44px;border-radius:10px}.orientation-hint{position:absolute;top:calc(18px + env(safe-area-inset-top,0));left:50%;z-index:3;max-width:min(88vw,380px);padding:10px 14px;border:1px solid rgba(255,230,109,.48);border-radius:10px;background:#0d1725c7;color:#ffe66d;font:700 14px/1.3 Avenir Next,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;text-align:center;pointer-events:none;transform:translate(-50%)}.orientation-hint[hidden]{display:none}.orientation-hint--global{position:fixed;z-index:30;display:none;top:calc(10px + env(safe-area-inset-top,0))}.pwa-update{position:fixed;right:calc(16px + env(safe-area-inset-right,0));bottom:calc(16px + env(safe-area-inset-bottom,0));z-index:20;display:flex;align-items:center;gap:12px;max-width:min(420px,calc(100vw - 32px));padding:12px 14px;border:1px solid rgba(112,235,255,.45);border-radius:10px;background:#0d1725eb;color:#fff1f8;font:700 13px/1.35 Avenir Next,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;box-shadow:0 10px 32px #00000059;pointer-events:auto}@media(orientation:portrait){#game-shell{align-items:center;justify-content:center}}@media(orientation:portrait)and (pointer:coarse),(orientation:portrait)and (hover:none),(orientation:portrait)and (max-width:900px){.orientation-hint--global{display:block}}.pwa-update button{min-width:84px;min-height:36px;border:1px solid rgba(255,230,109,.68);border-radius:8px;background:#ffe66d29;color:#ffe66d;font:inherit;letter-spacing:0;touch-action:manipulation}.pwa-update button:disabled{opacity:.58}@media(max-width:720px){.touch-joystick{width:112px;height:112px}.touch-joystick__knob{width:48px;height:48px}.touch-button{min-width:68px;min-height:62px;font-size:12px}.touch-button--action{min-width:72px;min-height:68px}.touch-controls__cluster{bottom:calc(4px + env(safe-area-inset-bottom,0));gap:10px}.touch-controls__cluster--left{left:calc(4px + env(safe-area-inset-left,0))}.touch-controls__cluster--right{right:calc(4px + env(safe-area-inset-right,0))}.pwa-update{right:calc(10px + env(safe-area-inset-right,0));bottom:calc(10px + env(safe-area-inset-bottom,0));left:calc(10px + env(safe-area-inset-left,0));max-width:none;justify-content:space-between}}@media(orientation:landscape)and (pointer:coarse){.touch-controls__cluster{bottom:calc(2px + env(safe-area-inset-bottom,0));gap:8px}.touch-controls__cluster--left{left:calc(2px + env(safe-area-inset-left,0))}.touch-controls__cluster--right{right:calc(2px + env(safe-area-inset-right,0))}.touch-joystick{width:clamp(88px,17vmin,112px);height:clamp(88px,17vmin,112px)}.touch-joystick__knob{width:clamp(36px,7vmin,46px);height:clamp(36px,7vmin,46px)}.touch-button{min-width:clamp(64px,13vmin,78px);min-height:clamp(54px,12vmin,68px);font-size:11px}.touch-button--action{min-width:clamp(72px,14vmin,84px);min-height:clamp(60px,13vmin,72px)}.touch-button--pause{top:calc(8px + env(safe-area-inset-top,0));right:calc(8px + env(safe-area-inset-right,0))}}
