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(2px + env(safe-area-inset-bottom,0));display:flex;gap:8px;pointer-events:none}.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));flex-direction:column;align-items:flex-end}.touch-joystick{position:relative;width:150px;height:150px;border:2px solid rgba(243,247,255,.58);border-radius:999px;background:radial-gradient(circle at center,rgba(112,235,255,.22) 0 30%,transparent 31%),radial-gradient(circle at center,#0f1e34b8,#0f1e34e6);box-shadow:0 0 0 4px #70ebff1f,0 12px 34px #00000073;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:#f3f7ff4d;transform:translate(-50%,-50%)}.touch-joystick:before{width:72%;height:2px}.touch-joystick:after{width:2px;height:72%}.touch-joystick.is-active{border-color:#d8fff0e0;background:radial-gradient(circle at center,rgba(61,220,151,.3) 0 30%,transparent 31%),radial-gradient(circle at center,#184052c7,#0f1e34eb)}.touch-joystick__knob{position:absolute;left:50%;top:50%;z-index:1;width:66px;height:66px;border:2px solid rgba(255,230,109,.88);border-radius:999px;background:#4373b3f0;box-shadow:0 0 16px #70ebff3d,0 10px 24px #00000073;transform:translate(-50%,-50%)}.touch-joystick:not(.is-active) .touch-joystick__knob{transition:transform .1s ease-out}.touch-button{position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:78px;height:70px;min-width:78px;min-height:70px;padding:0;border:2px solid rgba(243,247,255,.64);border-radius:999px;background:#0f1e34c7;color:#fff1f8;font:800 14px/1 Avenir Next,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;letter-spacing:0;text-align:center;text-shadow:0 2px 4px rgba(0,0,0,.46);box-shadow:inset 0 2px #ffffff38,inset 0 -9px 14px #0208147a,0 10px #02081485,0 0 0 3px #f3f7ff14,0 16px 30px #0000006b;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;overflow:hidden;transform:translateY(0);transition:transform 80ms ease-out,box-shadow 80ms ease-out,filter 80ms ease-out}.touch-button:before{position:absolute;inset:8px 12px auto 12px;height:32%;border-radius:999px;background:linear-gradient(180deg,#ffffff75,#ffffff0d);content:"";pointer-events:none}.touch-button:after{position:absolute;inset:auto 14px 7px 14px;height:5px;border-radius:999px;background:#ffffff2e;content:"";pointer-events:none}.touch-button:active{background:#3ddc97ad;border-color:#d8fff0e6;box-shadow:inset 0 1px #ffffff2e,inset 0 -4px 8px #02081466,0 4px #02081461,0 8px 18px #00000047;filter:brightness(1.08);transform:translateY(4px)}.touch-button--action{width:84px;height:78px;min-width:84px;min-height:78px}.touch-button--primary{border-color:#95dcffc7;background:radial-gradient(circle at 30% 24%,rgba(255,255,255,.38),transparent 24%),linear-gradient(145deg,#5baaeef5,#2c59a6e6 54%,#182e60f0);box-shadow:inset 0 2px #ffffff47,inset 0 -9px 14px #08174280,0 9px #0e1f48ad,0 0 20px #70ebff2e,0 14px 26px #00000052}.touch-button--primary:active{background:radial-gradient(circle at 30% 24%,rgba(255,255,255,.48),transparent 24%),linear-gradient(145deg,#70cafff0,#3973c2d6 54%,#1c366ce6);box-shadow:inset 0 1px #ffffff38,inset 0 -5px 10px #0817428a,0 4px #0e1f48ad,0 0 24px #70ebff40,0 8px 18px #00000047}.touch-button--jump{width:84px;height:78px;min-width:84px;min-height:78px;border-color:#c3ffdfd1;background:radial-gradient(circle at 30% 24%,rgba(255,255,255,.42),transparent 24%),linear-gradient(145deg,#56e6b2f5,#2b999be6 56%,#174874f0);color:#f3fff8;box-shadow:inset 0 2px #ffffff47,inset 0 -9px 14px #08384a7a,0 9px #0c384cad,0 0 22px #72ffd138,0 14px 26px #00000052}.touch-button--jump:active{background:radial-gradient(circle at 30% 24%,rgba(255,255,255,.5),transparent 24%),linear-gradient(145deg,#70f5c6f5,#35aeaedb 56%,#1b5380eb);box-shadow:inset 0 1px #ffffff38,inset 0 -5px 10px #08384a85,0 4px #0c384cad,0 0 26px #72ffd147,0 8px 18px #00000047}.touch-button--special{width:90px;height:70px;min-width:90px;min-height:70px;border-color:#ffe66ddb;background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.48),transparent 25%),linear-gradient(145deg,#ff69a6f2,#ffbd48d6 58%,#a14397e0);color:#fff8d8;box-shadow:inset 0 2px #ffffff4d,inset 0 -9px 14px #56164e7a,0 9px #5e2559ad,0 0 26px #ffb95c47,0 14px 26px #00000052}.touch-button--special:active{background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.54),transparent 25%),linear-gradient(145deg,#ff7db2fa,#ffda6ee6 58%,#b84ea5eb);box-shadow:inset 0 1px #ffffff38,inset 0 -5px 10px #56164e8a,0 4px #5e2559ad,0 0 30px #ffb95c57,0 8px 18px #00000047}.touch-button--special.is-disabled{border-color:#cdd7e661;background:radial-gradient(circle at 30% 24%,rgba(255,255,255,.18),transparent 25%),linear-gradient(145deg,#2b384ea3,#0f1e3480);color:#f3f7ff8f;box-shadow:inset 0 1px #ffffff1f,inset 0 -7px 12px #02081447,0 7px #02081442,0 10px 18px #00000038}.touch-button--pause{position:absolute;top:calc(8px + env(safe-area-inset-top,0));right:calc(2px + env(safe-area-inset-right,0));width:72px;height:44px;min-width:72px;min-height:44px;padding:0 10px;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!important}.orientation-hint--global{position:fixed;z-index:30;display:none;top:calc(10px + env(safe-area-inset-top,0));align-items:center;gap:10px}.orientation-hint__device{display:none}.orientation-hint__copy{display:grid;gap:3px}.orientation-hint__copy strong{font:inherit}.orientation-hint__copy small{display:none;color:#a9dbef;font-size:13px}body[data-startup-screen=landing][data-orientation-blocked=true] .orientation-hint--global{right:0;bottom:0;top:0;left:0;z-index:100;display:grid;grid-template-columns:auto auto;max-width:none;padding:max(28px,env(safe-area-inset-top,0)) max(28px,env(safe-area-inset-right,0)) max(28px,env(safe-area-inset-bottom,0)) max(28px,env(safe-area-inset-left,0));border:0;border-radius:0;background:radial-gradient(circle at center,#254c68c7,#050811fa 64%),#050811;box-shadow:none;pointer-events:auto;transform:none;place-content:center;place-items:center;gap:28px;text-align:left;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}body[data-startup-screen=landing][data-orientation-blocked=true] .orientation-hint__device{position:relative;display:block;width:44px;height:72px;flex:0 0 auto;border:3px solid #ffe66d;border-radius:10px;box-shadow:0 0 24px #70ebff57;animation:orientation-device-rotate 1.8s ease-in-out infinite}body[data-startup-screen=landing][data-orientation-blocked=true] .orientation-hint__device:before{position:absolute;top:5px;left:50%;width:14px;height:3px;border-radius:999px;background:#ffe66d;content:"";transform:translate(-50%)}body[data-startup-screen=landing][data-orientation-blocked=true] .orientation-hint__copy strong{color:#fff1f8;font-size:clamp(24px,7vw,40px);font-weight:900;letter-spacing:.08em}body[data-startup-screen=landing][data-orientation-blocked=true] .orientation-hint__copy small{display:block;font-size:clamp(13px,3.4vw,17px);font-weight:700;letter-spacing:.06em}.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}}@keyframes orientation-device-rotate{0%,20%{transform:rotate(0)}55%,85%{transform:rotate(90deg)}to{transform:rotate(0)}}.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:132px;height:132px}.touch-joystick__knob{width:54px;height:54px}.touch-button{width:78px;height:70px;min-width:78px;min-height:70px;font-size:13px}.touch-button--action,.touch-button--jump{width:84px;height:78px;min-width:84px;min-height:78px}.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))}.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(124px,24vmin,148px);height:clamp(124px,24vmin,148px)}.touch-joystick__knob{width:clamp(50px,10vmin,62px);height:clamp(50px,10vmin,62px)}.touch-button{width:clamp(64px,13vmin,78px);height:clamp(54px,12vmin,68px);min-width:clamp(64px,13vmin,78px);min-height:clamp(54px,12vmin,68px);font-size:11px}.touch-button--action,.touch-button--jump{width:clamp(72px,14vmin,84px);height:clamp(60px,13vmin,72px);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(2px + env(safe-area-inset-right,0))}}
