:root{font-family:Inter,Segoe UI,Microsoft YaHei,sans-serif;color:#f7f4ff;background:#0c0a12;font-synthesis:none;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid #c6ff75;outline-offset:5px}button{color:inherit}#app{max-width:1920px;margin:auto;padding:0}.topbar{height:91px;display:none;align-items:center;justify-content:space-between}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:inherit;font-size:19px;font-weight:800;letter-spacing:3px}.brand-mark{width:36px;height:40px;display:grid;place-items:center;border:1px solid #b4ed58;color:#b4ed58;transform:skew(-10deg);font-size:26px;font-style:italic;letter-spacing:0}.brand-sub{display:block;font-size:9px;font-weight:500;letter-spacing:3.5px;color:#8a859a;margin-top:4px}.edition{font-size:12px;letter-spacing:2px;color:#aaa4b6}.edition span{margin:0 13px;color:#44404f}.utilities{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}#arena{height:100dvh;min-height:0;max-height:1100px;position:relative;overflow:hidden;border:0;background:#050509;isolation:isolate;outline:none}#game-frame{position:absolute;container:flight-frame / inline-size;overflow:hidden}#canvas-host{position:absolute;inset:0}#performance-hud{position:absolute;top:clamp(62px,8cqw,102px);left:12px;z-index:5;margin:0;padding:9px 12px;border:1px solid #ffffff26;border-radius:5px;background:#080d16d9;color:#d9f5c4;font:11px/1.65 Consolas,Microsoft YaHei,monospace;font-variant-numeric:tabular-nums;pointer-events:none;-webkit-user-select:none;user-select:none}canvas{width:100%;height:100%;display:block}.hud,#announcement,#boss-hud{--hud-unit: calc(100cqw / 1280);line-height:1.2}.hud{position:absolute;inset:calc(28 * var(--hud-unit)) calc(32 * var(--hud-unit)) auto;display:flex;justify-content:space-between;pointer-events:none}.eyebrow{display:block;font-size:calc(10 * var(--hud-unit));font-weight:600;letter-spacing:calc(2 * var(--hud-unit));color:#b3a9c8}.score-block strong{font-family:Consolas,monospace;font-weight:400;font-size:calc(31 * var(--hud-unit));letter-spacing:calc(3 * var(--hud-unit));display:block;margin:calc(5 * var(--hud-unit)) 0}.best{font-family:Consolas,monospace;font-size:calc(11 * var(--hud-unit));letter-spacing:var(--hud-unit);color:#aaa0bb}.best b{color:#d9d1e7;font-size:calc(14 * var(--hud-unit));font-weight:400;margin-left:calc(8 * var(--hud-unit))}.stage-block{display:none;text-align:center;padding-top:calc(2 * var(--hud-unit))}.stage-block strong{display:block;font-size:calc(15 * var(--hud-unit));letter-spacing:calc(4 * var(--hud-unit));font-weight:500;margin:calc(9 * var(--hud-unit)) 0 calc(12 * var(--hud-unit))}.progress-track{display:none;width:calc(150 * var(--hud-unit));height:calc(2 * var(--hud-unit));background:#ffffff20}.progress-track i{display:block;height:100%;background:#bded69;width:0}.shield-block{text-align:right;padding-top:calc(36 * var(--hud-unit))}.shield-block .eyebrow,#speed{display:none}#hearts{font-size:calc(26 * var(--hud-unit));letter-spacing:calc(4 * var(--hud-unit));color:#c2f36c;margin:calc(5 * var(--hud-unit)) 0}.overlay{-webkit-user-select:none;user-select:none;position:absolute;inset:0;z-index:10;background:#0000007f;display:flex;align-items:safe center;overflow-y:auto;padding:45px 7%}.intro{margin-top:0;max-width:550px}.intro-kicker{font-family:Consolas,monospace;display:flex;gap:10px;align-items:center;font-size:11px;letter-spacing:3px;color:#d1f5a0}.intro-kicker span{width:22px;height:1px;background:#c3ee88}h1{font-size:clamp(44px,5.4vw,84px);font-weight:800;letter-spacing:5px;line-height:1.13;margin:23px 0 19px;text-shadow:0 5px 35px #100716}h1 span{display:block;font-size:clamp(20px,2.5vw,38px);letter-spacing:clamp(3px,.7vw,10px);font-weight:300;color:#d8cedf;margin-top:8px}.intro p{font-size:14px;line-height:1.9;letter-spacing:2px;color:#b8b0c7;margin:0 0 26px}.aim-test{margin-top:18px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.utilities button,.aim-test button{display:flex;gap:16px;align-items:center;padding:8px 12px;border:1px solid #786047;background:#201b29cc;color:#edcba9;font:inherit;font-size:12px}#sound span,.aim-test button span{min-width:1em;color:#a99fb9}#sound[aria-pressed=true] span,.aim-test button[aria-pressed=true] span{color:#c3ef70}.utilities button:hover,.aim-test button:hover{border-color:#e8bc90}.utilities button:focus-visible,.aim-test button:focus-visible{outline:2px solid #c3ef70;outline-offset:3px}.aim-test small{font-size:11px;color:#9f95b2;line-height:1.6}.stage-select{margin-top:20px;padding:0;border:0;color:#e8bc90;font-size:12px;letter-spacing:1px;min-width:0}.stage-select legend{padding:0;margin-bottom:9px}.stage-select legend span{color:#9f95b2;font-size:10px;margin-left:8px}.stage-options{display:flex;flex-wrap:wrap;gap:8px;max-height:116px;overflow-y:auto;padding:4px;margin:-4px}.stage-options button{padding:9px 12px;border:1px solid #786047;background:#201b29cc;color:#edcba9;font:inherit}.stage-options button span{color:#ad977f;margin-right:5px}.stage-options button:hover{background:#3d302e;border-color:#e8bc90}.stage-options button:focus-visible{outline:2px solid #c3ef70;outline-offset:3px}.primary{display:flex;align-items:center;justify-content:space-between;background:#c3ef70;color:#162009;border:0;padding:17px 23px;width:228px;font-size:15px;font-weight:700;letter-spacing:2px;box-shadow:0 0 34px #b8ec5614;transition:background .2s,transform .2s}.primary:hover{background:#daff95;transform:translateY(-2px)}.primary span{font-size:25px;line-height:16px}.enter-hint{display:block;font-size:10px;letter-spacing:2px;color:#9f95b2;margin-top:12px}.intro-controls{display:flex;gap:20px;margin-top:31px;color:#a99fb9;font-size:11px}.enter-hint,.intro-controls,#aim-assist-hint,.stage-select legend span{display:none}.intro-controls>span{display:flex;align-items:center;gap:4px}kbd{font-family:Consolas,monospace;font-size:10px;border:1px solid #6a5f7b;border-radius:3px;padding:3px 5px;color:#d0c9db;background:#18112066;font-weight:400}.sector-label{display:none;position:absolute;right:32px;bottom:77px;text-align:right}.sector-label span{font-family:Consolas,monospace;letter-spacing:2px;font-size:10px;color:#c8b5d0;display:block}.sector-label b{display:block;margin-top:10px;font-size:13px;font-weight:400;letter-spacing:3px;color:#e7dfef}.flight-status{position:absolute;left:32px;bottom:25px;display:none;align-items:center;gap:9px;font-size:10px;letter-spacing:2px;color:#b9afc8}.status-dot{width:5px;height:5px;border-radius:50%;background:#c4f17a;box-shadow:0 0 9px #c4f17a}.coordinate{display:none;position:absolute;bottom:25px;right:32px;font:10px Consolas,monospace;letter-spacing:2px;color:#aa9cba}.arena-pause{position:absolute;right:max(18px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));display:block;margin:0;min-height:44px;pointer-events:auto;padding:8px 14px;background:#100b20aa;border:1px solid #ffffff20;font-size:12px;color:#d7cddd}footer{height:60px;display:none;align-items:center;justify-content:space-between;font:10px Consolas,monospace;color:#847d91;letter-spacing:1px}footer>span:first-child{display:flex;gap:9px;align-items:center}footer i{width:5px;height:5px;border-radius:50%;background:#c6ed89}footer em{font:10px Microsoft YaHei,sans-serif;color:#5e566b;margin-left:10px}footer b{margin:0 12px;font-weight:400;color:#4d455d}footer small{margin:0 8px;color:#4d455d}footer kbd{border:none;background:none;padding:0;color:#aaa3b7}#announcement{position:absolute;top:25%;left:0;right:0;text-align:center;font-size:calc(23 * var(--hud-unit));letter-spacing:calc(7 * var(--hud-unit));color:#e3fbbd;pointer-events:none;text-shadow:0 calc(2 * var(--hud-unit)) calc(20 * var(--hud-unit)) #070213;opacity:0;transition:opacity .3s}#boss-hud>span{display:none}#boss-hud{position:absolute;top:calc(116 * var(--hud-unit));left:30%;right:30%;text-align:center;font-size:calc(11 * var(--hud-unit));letter-spacing:calc(3 * var(--hud-unit));color:#ffb195}#boss-hud>div{height:calc(4 * var(--hud-unit));background:#fff2;margin-top:calc(9 * var(--hud-unit))}#boss-health{display:block;background:#ff8569;height:100%;width:100%;transition:width .1s}#hit-flash{position:absolute;inset:0;box-shadow:inset 0 0 150px #ff395e;opacity:0;pointer-events:none}#touch-controls{display:none;position:absolute;inset:0;align-items:center;justify-content:space-between;pointer-events:none}#joystick{position:absolute;transform:translate(-50%,-50%);visibility:hidden;height:100px;width:100px;border:1px solid #d2c5e344;border-radius:50%;background:#1d103944;touch-action:none;pointer-events:none;display:grid;place-items:center}#joystick i{height:38px;width:38px;border-radius:50%;border:1px solid #d8fbaa88;background:#d8fbaa33;pointer-events:none}#joystick.active{visibility:visible}body.playing #touch-controls.active{display:flex}body.playing #arena,body.inspecting #arena{touch-action:none;-webkit-user-select:none;user-select:none}body.inspecting #hit-flash,body.inspecting #announcement{visibility:hidden}#free-camera-panel{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:14px;width:max-content;max-width:calc(100% - 32px);padding:10px 14px;border:1px solid #ffffff30;border-radius:8px;background:#100b20dd;color:#d7cddd;font-size:12px;line-height:1.6}#free-camera-exit{white-space:nowrap;padding:8px 12px;margin:0}[hidden]{display:none!important}body.playing .overlay{display:none}#arena:fullscreen{height:100dvh;max-height:none;border:0}@media(max-width:850px){#app{padding:0}.topbar{height:70px}.edition{display:none}#arena{height:100dvh;min-height:0}.overlay{padding:30px 7%}.intro{margin-top:0}.intro-controls{gap:10px}.sector-label{display:none}footer{height:50px}footer>span:nth-child(2){display:none}.brand{font-size:16px}.utilities{gap:14px}.coordinate{right:20px}.flight-status{left:20px}}@media(max-width:550px){#app{padding:0}.brand-sub{font-size:8px}.intro-kicker{font-size:9px;letter-spacing:2px}h1{font-size:48px}.intro p{font-size:13px}.intro-controls{font-size:10px;gap:9px}kbd{padding:2px 3px;font-size:9px}.coordinate{display:none}.intro{margin-top:0}.overlay{padding:30px 25px}.utilities button{font-size:12px}}@media(pointer:coarse){body.playing #touch-controls{display:flex}.intro-controls{display:none}.enter-hint{font-size:0}.enter-hint:after{content:"触屏：左侧拖动飞行 · 右侧按住射击";font-size:11px}}.overlay{--hud-unit: calc(100cqw / 1280);--menu-surface: #1b201d;--menu-button: #252c27;--menu-text: #f2f1e9;--menu-muted: #a5ada5;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(min-content,1fr) auto;align-items:normal;row-gap:24px;justify-content:center;padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left))}.intro{width:100%;max-width:calc(480 * var(--hud-unit));margin:auto;min-width:0}.menu-primary{display:flex;flex-direction:column;align-items:center;gap:calc(24 * var(--hud-unit));min-width:0}.menu-actions{display:grid;gap:calc(14 * var(--hud-unit));width:min(100%,calc(480 * var(--hud-unit)))}.menu-actions>button{--button-cut: calc(8 * var(--hud-unit));position:relative;isolation:isolate;border-radius:0;line-height:1.2;clip-path:polygon(0 0,calc(100% - var(--button-cut)) 0,100% var(--button-cut),100% 100%,var(--button-cut) 100%,0 calc(100% - var(--button-cut)))}.menu-primary h1{margin:0;font-size:clamp(32px,6vw,64px);letter-spacing:3px;font-weight:800;font-style:normal;color:#f2f1e9;text-align:center;text-shadow:none}.menu-primary h1 span{font-size:15px;letter-spacing:6px;margin-top:14px;color:#a5ada5;font-style:normal;font-weight:500;text-shadow:none}.menu-primary p{margin:0;font-size:12px;line-height:1.7;letter-spacing:1px;text-align:center;color:#a5ada5}.menu-primary .primary{width:100%;min-height:calc(76 * var(--hud-unit));padding:calc(20 * var(--hud-unit)) calc(36 * var(--hud-unit));justify-content:center;font-size:calc(30 * var(--hud-unit));letter-spacing:calc(3 * var(--hud-unit));background:#c3ef70;color:#18210f;box-shadow:none;transition:background .16s ease,transform .16s ease,filter .16s ease}.return-home{width:100%;min-height:calc(68 * var(--hud-unit));padding:calc(18 * var(--hud-unit)) calc(30 * var(--hud-unit));border:0;background:transparent;color:#d3d8d0;font-size:calc(25 * var(--hud-unit));text-align:center;transition:background .16s ease,transform .12s ease}.return-home:before,.return-home:after{content:"";position:absolute;pointer-events:none;transition:background .16s ease}.return-home:before{inset:0;z-index:-2;background:#6a7663}.return-home:after{inset:var(--hud-unit);z-index:-1;background:#1b201d;clip-path:polygon(0 0,calc(100% - 7.4 * var(--hud-unit)) 0,100% calc(7.4 * var(--hud-unit)),100% 100%,calc(7.4 * var(--hud-unit)) 100%,0 calc(100% - 7.4 * var(--hud-unit)))}.return-home:hover:before,.return-home:focus-visible:before{background:#b4cd98}.return-home:hover:after{background:#30392f}.return-home:active{transform:scale(.98)}.menu-primary .primary span{font-size:calc(30 * var(--hud-unit))}.menu-primary .primary:hover{background:#d6ff8f;box-shadow:inset 0 0 0 var(--hud-unit) #efffc6;filter:none;transform:none}.menu-primary .primary:active{transform:scale(.98)}.menu-primary .primary:focus-visible{outline:none;background:#c3ef70;box-shadow:inset 0 0 0 calc(2 * var(--hud-unit)) #536f28}.menu-options{margin-top:28px;min-width:0;padding:16px;background:#1b201d;border-radius:4px}.intro{animation:menu-enter .18s ease-out}.menu-options .utilities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;gap:8px}.menu-options .utilities button,.menu-options .aim-test button,.menu-options .stage-options button{min-height:44px;padding:10px 12px;font-size:12px;border:1px solid transparent;background:#252c27;color:#f2f1e9;border-radius:3px;font-weight:500;transition:background .16s ease,border-color .16s ease,transform .12s ease}.menu-options .utilities button{justify-content:space-between;gap:8px}.menu-options button[aria-pressed] span{color:#a5ada5}.menu-options button[aria-pressed=true] span{color:#c3ef70}.menu-options button[aria-pressed]:not(#fullscreen):not(#touch-mode) span{display:inline-block;position:relative;flex:0 0 30px;width:30px;height:16px;min-width:30px;margin:0;font-size:0;border-radius:9px;background:#4b554c;transition:background .16s ease}.menu-options button[aria-pressed]:not(#fullscreen):not(#touch-mode) span:after{content:"";position:absolute;top:3px;left:3px;width:10px;height:10px;border-radius:50%;background:#c3cbc0;transition:transform .16s ease,background .16s ease}.menu-options button[aria-pressed=true]:not(#fullscreen):not(#touch-mode) span{background:#c3ef70}.menu-options button[aria-pressed=true]:not(#fullscreen):not(#touch-mode) span:after{transform:translate(14px);background:#253515}.menu-options #touch-mode{grid-column:1 / -1}.menu-options #touch-mode span{color:#d3d8d0}.menu-options #fullscreen span{color:inherit}.menu-options button:hover{background:#343e35;border-color:#ffffff2e}.menu-options button:active{transform:scale(.98)}.menu-options button:disabled{opacity:.4;cursor:default}.menu-disclosure{margin-top:12px;border-top:1px solid #ffffff1c}.menu-disclosure summary{display:flex;justify-content:space-between;align-items:center;min-height:44px;padding:10px 2px;list-style:none;font-size:12px;color:#a5ada5;cursor:pointer}.menu-disclosure summary::-webkit-details-marker{display:none}.menu-disclosure summary:after{content:"+";color:#a5ada5;font-size:18px}.menu-disclosure summary:hover{color:#f5f0e8}.menu-disclosure[open] summary:after{content:"−"}.menu-disclosure summary:focus-visible{outline:2px solid #c3ef70;outline-offset:3px}.controls-guide{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 28px;margin:0;padding-top:16px;width:100%;border-top:1px solid #ffffff24;font-size:14px;line-height:1.7;color:#a5ada5}.controls-guide .control-item{display:flex;align-items:baseline;gap:10px;max-width:100%}.controls-guide .control-item:has(>dt[hidden]){display:none}.controls-guide dt{color:#d3d8d0}.controls-guide dd{margin:0;overflow-wrap:anywhere}.controls-guide kbd{display:inline-block;font-size:inherit;letter-spacing:0;padding:0 4px;color:#d3d8d0;border-color:#ffffff24;background:#1b201dbf}.controls-guide .controls-touch,#free-camera-panel .controls-touch{display:none}@media(pointer:coarse){.controls-guide .controls-desktop,#free-camera-panel .controls-desktop{display:none}.controls-guide .controls-touch,#free-camera-panel .controls-touch{display:inline}}.menu-options .stage-select{margin:0}.menu-options .stage-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-height:none;gap:8px}.menu-options .stage-options button{text-align:left;letter-spacing:0}.menu-options .stage-options button span{color:#c3ef70;font-family:Consolas,monospace}.menu-options .aim-test{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.menu-options .aim-test button{justify-content:space-between;gap:8px}@keyframes menu-enter{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.intro{animation:none}.menu-primary .primary,.return-home,.return-home:before,.return-home:after,.menu-options button,.menu-options button[aria-pressed]:not(#fullscreen) span,.menu-options button[aria-pressed]:not(#fullscreen) span:after{transition:none}}@media(orientation:landscape){.overlay{row-gap:12px;padding:max(12px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}.menu-options{margin:0}.menu-primary h1{font-size:clamp(28px,4.5vw,64px)}.controls-guide{gap:6px 24px;padding-top:12px;line-height:1.5}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.game-toolbar{--hud-unit: calc(100cqw / 1280);position:absolute;top:calc(4 * var(--hud-unit));right:calc(32 * var(--hud-unit));z-index:30;display:flex;justify-content:flex-end;align-items:center;gap:calc(8 * var(--hud-unit));padding:0;background:none;user-select:none;-webkit-user-select:none}.game-toolbar button{display:inline-flex;align-items:center;justify-content:center;gap:calc(6 * var(--hud-unit));height:calc(52 * var(--hud-unit));padding:0 calc(18 * var(--hud-unit));border:var(--hud-unit) solid #ffffff24;border-radius:calc(26 * var(--hud-unit));background:#111512b3;color:#d3d8d0;font-size:calc(24 * var(--hud-unit));line-height:1;font-weight:600;cursor:pointer;transition:background .16s ease,border-color .16s ease}.game-toolbar button:hover{background:#ffffff0f;border-color:#ffffff40}.game-toolbar button:focus-visible{outline:calc(2 * var(--hud-unit)) solid #c3ef70;outline-offset:calc(2 * var(--hud-unit))}.game-toolbar button:disabled{opacity:.35;cursor:default}.game-toolbar button[aria-pressed=true]{color:#e5f1d8}.game-toolbar .toolbar-icon{width:calc(52 * var(--hud-unit));padding:0;flex:0 0 calc(52 * var(--hud-unit))}.game-toolbar i{display:inline-flex;align-items:center;justify-content:center}.game-toolbar svg{width:calc(32 * var(--hud-unit));height:calc(32 * var(--hud-unit));fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.game-toolbar .sound-muted,.game-toolbar .fullscreen-exit{display:none}.game-toolbar #sound[aria-pressed=false] .sound-muted,.game-toolbar #fullscreen[aria-pressed=true] .fullscreen-exit{display:inline}.game-toolbar #fullscreen[aria-pressed=true] .fullscreen-enter{display:none}.game-toolbar #sound[aria-pressed=false] i{opacity:.45}.test-dialog{width:min(480px,calc(100% - 32px));max-height:calc(100dvh - 32px);padding:12px;border:1px solid #ffffff24;border-radius:12px;background:#1b201d;color:#f2f1e9;overflow-y:auto;user-select:none;-webkit-user-select:none}.test-dialog::backdrop{background:transparent}#arena:has(>#test-dialog[open]) .overlay{background:transparent}.test-dialog-header{position:absolute;top:12px;right:12px}#test-close{display:grid;place-items:center;padding:0;width:40px;height:40px;border:1px solid #ffffff24;border-radius:50%;background:#252c27;color:inherit}#test-close svg{display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.test-dialog .menu-options{padding:0;margin:0;background:transparent}.test-dialog .utilities{padding-right:52px}.test-dialog .debug-controls{margin-top:12px}@container flight-frame (max-width: 550px){.overlay{padding:12px;row-gap:12px}.overlay .controls-guide{gap:6px 16px;padding-top:10px;font-size:12px;line-height:1.5}}@media(max-width:450px){.test-dialog .utilities{grid-template-columns:minmax(0,1fr)}}
