:root{color-scheme:dark;--ink:#e8f3f4;--muted:#a4bbc4;--aqua:#83f2df;--glass:rgba(5,22,31,.58);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-synthesis:none}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#07141e}body{overscroll-behavior:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0}button:focus-visible,a:focus-visible{outline:2px solid var(--aqua);outline-offset:5px}button:disabled{opacity:.55;cursor:wait}.hidden{display:none!important}#game{position:relative;width:100%;height:100%;min-height:320px;overflow:hidden;touch-action:none;color:var(--ink)}#viewport{position:absolute;inset:0}#viewport>canvas{display:block;width:100%;height:100%}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(2,14,23,.4),transparent 23%,transparent 74%,rgba(2,13,20,.5)),radial-gradient(ellipse at 65% 45%,transparent 35%,rgba(1,10,17,.28));z-index:1}#damage-flash{position:absolute;inset:0;box-shadow:inset 0 0 110px 35px rgba(238,71,43,.7);opacity:0;pointer-events:none;z-index:12;transition:opacity .1s}.topbar{position:absolute;z-index:20;left:max(32px,env(safe-area-inset-left));right:max(32px,env(safe-area-inset-right));top:max(25px,env(safe-area-inset-top));display:flex;justify-content:space-between;align-items:center;gap:16px}.brand{color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:12px;font-size:19px;font-weight:600;letter-spacing:3px;text-shadow:0 2px 16px #03121f}.brand-mark{border:1px solid rgba(157,219,219,.5);width:35px;height:35px;display:grid;place-items:center;color:var(--aqua);font-size:27px;transform:rotate(45deg)}.brand-mark:first-letter{transform:rotate(-45deg)}.brand small{display:block;font-size:9px;letter-spacing:2.2px;margin-top:5px;color:#bdced4}.top-actions{display:flex;gap:8px}.icon-button{height:39px;min-width:39px;padding:0 11px;border:1px solid rgba(201,225,231,.2);background:rgba(8,25,33,.35);border-radius:5px;backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px}.icon-button:hover{background:rgba(62,99,110,.5);border-color:rgba(154,234,222,.5)}.icon-button svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.quality span{color:var(--aqua)}#sound-on{display:none}.screen{position:absolute;inset:0;z-index:4;pointer-events:none}.screen button{pointer-events:auto}.briefing{position:absolute;left:6.5%;top:50%;transform:translateY(-43%);width:380px}.eyebrow{font-size:12px;font-weight:500;letter-spacing:2.3px;color:var(--aqua);display:flex;align-items:center;gap:14px}.eyebrow span{border:1px solid #84adac55;padding:2px 7px;color:#cbdedc;letter-spacing:1px}h1{font-size:clamp(48px,5.3vw,78px);line-height:1.12;letter-spacing:3px;margin:22px 0;font-weight:550;text-shadow:0 3px 40px #0006}.intro{font-size:16px;line-height:1.8;color:#d1e1e5;margin:0 0 29px;text-shadow:0 2px 12px #001c}.mobile-br{display:none}.plane-tag{display:flex;gap:15px;align-items:center;margin:0 0 23px;border-top:1px solid #d8eeee30;padding-top:21px}.plane-tag>span:first-child{font-size:29px;font-weight:500;letter-spacing:-1px}.plane-tag>div{font-size:13px;color:#d7e1e5;line-height:1.65}.plane-tag small{display:block;font-size:11px;color:#9ab3be;letter-spacing:.7px}.ready-tag{font-size:10px!important;color:var(--aqua)!important;padding:5px 8px;border:1px solid #80d3c43a;margin-left:auto;white-space:nowrap;background:#0a272830}.primary-button{min-height:57px;border-radius:4px;padding:0 21px;width:100%;color:#052f30;background:var(--aqua);display:flex;align-items:center;justify-content:center;gap:13px;font-weight:600;font-size:16px;box-shadow:0 8px 35px #04181835;transition:background .15s,transform .15s}.primary-button:hover{background:#b3fff0;transform:translateY(-1px)}.primary-button:active{transform:translateY(1px)}.button-icon{font-size:25px;font-weight:400}.button-key{margin-left:auto;font-size:9px;border:1px solid #28524a66;padding:3px 6px;font-weight:500}.start-hint{font-size:11px;line-height:1.6;color:#a5bcc6;margin-top:15px;letter-spacing:.1px;white-space:nowrap}.touch-hint{display:none}.mission-caption{position:absolute;top:110px;right:5%;color:#cfdee3;font-size:12px;line-height:1.9;letter-spacing:1px;text-align:right;text-shadow:0 2px 9px #0005}.mission-caption small{display:block;font-size:10px;color:#b8c7d0;letter-spacing:1.2px}.line{display:inline-block;width:20px;height:1px;background:#90cdc5;vertical-align:middle;margin-right:10px}.scene-label{position:absolute;right:19%;bottom:28%;display:flex;align-items:center;gap:12px;color:#cfdee3;text-shadow:0 2px 12px #000;font-size:12px}.scene-label small{font-size:9px;letter-spacing:1px;display:block;margin-top:6px;color:#a9c1cb}.small-cross{color:var(--aqua);font-size:30px;font-weight:200}.start-bottom{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:6.5%;right:5%;display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.5px;color:#9fbbc7}.hud{position:absolute;inset:0;pointer-events:none;z-index:3}.hud-left{position:absolute;top:108px;left:33px;width:205px;text-shadow:0 2px 8px #0007}.mission-status{display:flex;flex-direction:column;gap:8px;border-left:2px solid var(--aqua);padding-left:13px;margin-bottom:23px}.mission-status .eyebrow{font-size:10px;letter-spacing:1.5px}.mission-status strong{font-size:17px;font-weight:500}.mission-status>span:last-child{font-size:12px;color:#b6cbd4}.health-row{display:flex;gap:6px;align-items:baseline;font-size:12px}.health-row>strong{margin-left:auto;font-size:19px;font-weight:500;font-variant-numeric:tabular-nums}.unit{font-size:10px;color:#a7c3cc}.health-track{height:3px;background:#aec0cc30;margin-top:8px;width:100%}.health-track i{display:block;background:var(--aqua);height:100%;transition:width .3s,background .3s}.score-row{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.4px;color:#b9cbd4;margin-top:14px}.score-row strong{font-size:13px;font-variant-numeric:tabular-nums;color:#fff;margin-left:5px;font-weight:500}.hud-right{position:absolute;right:30px;top:104px;width:146px;background:radial-gradient(circle at center,#05192344,transparent 70%)}#radar{width:146px;height:146px;display:block}.radar-label{font-size:8px;color:#b3cece;display:flex;justify-content:space-between;letter-spacing:1px}.radar-label span{color:var(--aqua)}.aim{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:54px;height:54px;opacity:.7;color:#a9f2df}.aim-ring{position:absolute;inset:8px;border:1px solid currentColor;border-radius:50%;border-left-color:transparent;border-right-color:transparent}.aim-cross:before,.aim-cross:after{content:"";position:absolute;background:currentColor;left:50%;top:50%;transform:translate(-50%,-50%)}.aim-cross:before{width:15px;height:1px}.aim-cross:after{width:1px;height:15px}.aim span{position:absolute;left:50%;bottom:-12px;transform:translateX(-50%);font-size:7px;letter-spacing:1px;white-space:nowrap}.target-marker{position:absolute;width:38px;height:38px;border:1px solid #fcad7888;transform:translate(-50%,-50%);transition:width .15s,height .15s;color:#f8bb98;font-size:9px;will-change:left,top;box-shadow:0 0 12px #fa8e3311}.target-marker.locked{border-color:#8affd5;width:47px;height:47px;color:#a8ffe7;box-shadow:0 0 20px #9fffe620}.target-marker span{position:absolute;top:calc(100% + 5px);left:50%;transform:translateX(-50%);white-space:nowrap;text-shadow:0 1px 5px #000}.flight-readout{position:absolute;bottom:200px;left:34px;display:flex;gap:24px;text-shadow:0 2px 10px #0008}.flight-readout>div{display:grid;grid-template-columns:auto auto;column-gap:7px;row-gap:3px;align-items:baseline}.flight-readout span{font-size:10px;grid-column:span 2;color:#b4cad3}.flight-readout strong{font-size:26px;font-weight:400;letter-spacing:-1px;font-variant-numeric:tabular-nums}.flight-readout small{font-size:10px;color:#afc7d0}.bottom-center{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);text-align:center;font-size:10px;color:#b6d1d7;white-space:nowrap;text-shadow:0 2px 8px #000}.heading-scale{display:flex;align-items:center;gap:25px;margin-top:17px;font-size:9px;border-top:1px solid #a7c6cf33;padding-top:8px;letter-spacing:1px}.heading-scale strong{color:var(--aqua);position:relative;font-weight:500}.heading-scale strong:before{content:"";position:absolute;top:-13px;left:50%;border-left:3px solid transparent;border-right:3px solid transparent;border-top:5px solid var(--aqua);transform:translateX(-50%)}.controls{position:absolute;inset:0;z-index:9;pointer-events:none}.joystick{pointer-events:auto;touch-action:none;position:absolute;bottom:max(43px,env(safe-area-inset-bottom));left:48px;width:133px;height:133px;border:1px solid #bce6e43b;border-radius:50%;background:radial-gradient(circle,#153a4840,#0b253130);box-shadow:inset 0 0 25px #92dace06;backdrop-filter:blur(3px)}.joystick:before{content:"";position:absolute;inset:14px;border:1px solid #bce6e41a;border-radius:50%}.joystick>span{position:absolute;bottom:-23px;left:0;right:0;text-align:center;font-size:10px;letter-spacing:3px;color:#b7d0d7}.joy-stick{width:49px;height:49px;position:absolute;left:calc(50% - 24.5px);top:calc(50% - 24.5px);border:1px solid #aee8e577;border-radius:50%;background:radial-gradient(circle at 35% 30%,#9bdfd144,#3767714a);box-shadow:0 3px 15px #001a2f40;will-change:transform}.joy-cross:before,.joy-cross:after{content:"";position:absolute;background:#b6e2dc15;left:50%;top:50%;transform:translate(-50%,-50%)}.joy-cross:before{height:1px;width:90px}.joy-cross:after{width:1px;height:90px}.weapons{position:absolute;bottom:max(40px,env(safe-area-inset-bottom));right:37px;display:flex;align-items:flex-end;gap:17px;pointer-events:auto}.weapon{display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;touch-action:none;border-radius:50%;background:rgba(10,39,49,.38);backdrop-filter:blur(5px);border:1px solid #bfe8e45a;width:108px;height:108px;transition:background .12s,transform .12s}.weapon:active{background:#60bba966;transform:scale(.95)}.weapon svg{width:30px;height:30px;fill:none;stroke:#d0fff3;stroke-width:1.35;stroke-linejoin:round;stroke-linecap:round;margin-bottom:3px}.weapon>span{font-size:12px;letter-spacing:2px}.weapon small{font-size:10px;color:var(--aqua);margin-top:4px}.secondary-weapon{width:76px;height:76px;margin-bottom:6px;border-color:#cde6e337}.secondary-weapon svg{width:23px;height:23px}.secondary-weapon>span{font-size:10px;letter-spacing:1px}.secondary-weapon small{font-size:9px;margin-top:1px}.weapon.cooling{opacity:.5}.weapon.cooling:after{content:"";position:absolute;inset:4px;border-radius:50%;border:2px solid #89ebd98a;border-bottom-color:transparent;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:absolute;z-index:23;top:90px;left:50%;transform:translate(-50%,-10px);background:rgba(5,25,33,.82);border:1px solid #a5e8d839;backdrop-filter:blur(15px);padding:12px 22px;border-radius:4px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;white-space:nowrap}.toast.visible{opacity:1;transform:translate(-50%,0)}.wave-banner{position:absolute;z-index:5;top:29%;left:50%;transform:translate(-50%,-15px);text-align:center;pointer-events:none;opacity:0;transition:opacity .5s,transform .5s;text-shadow:0 2px 20px #001923}.wave-banner.visible{opacity:1;transform:translate(-50%,0)}.wave-banner small{display:block;font-size:10px;letter-spacing:3px;color:var(--aqua);margin-bottom:12px}.wave-banner strong{display:block;font-size:31px;letter-spacing:5px;font-weight:400;white-space:nowrap}.wave-banner span{display:block;font-size:12px;color:#c4d7df;margin-top:14px}.modal-screen{position:absolute;inset:0;z-index:30;display:flex;justify-content:center;align-items:center;background:rgba(2,13,23,.52);backdrop-filter:blur(14px);padding:20px}.modal-card{width:min(430px,100%);padding:38px;background:linear-gradient(135deg,#102d39ed,#0b1c28ed);border:1px solid #bce5e32d;box-shadow:0 20px 100px #0005;border-radius:9px}.modal-card h2{font-size:32px;font-weight:500;letter-spacing:2px;margin:21px 0 15px}.modal-card p{font-size:14px;line-height:1.9;color:#a9c3ce;margin:0 0 27px}.modal-card .primary-button{margin-top:10px}.text-button{display:block;background:none;width:100%;padding:18px 8px 0;font-size:13px;color:#acccd5}.text-button:hover{color:#fff}.keyboard-guide{font-size:10px!important;margin:25px 0 0!important;text-align:center;line-height:1.7!important}.result-stats{display:flex;justify-content:space-between;border-top:1px solid #c8eeee20;border-bottom:1px solid #c8eeee20;padding:20px 0;margin-bottom:26px;gap:12px}.result-stats span{display:block;font-size:10px;color:#a3bdc7;margin-bottom:8px}.result-stats strong{font-size:25px;font-weight:400;font-variant-numeric:tabular-nums}.boss-hud{position:absolute;top:93px;left:50%;transform:translateX(-50%);width:min(300px,34vw);text-align:center}.boss-hud span{font-size:11px;color:#ffd5b9;letter-spacing:3px}.boss-hud>div{height:4px;background:#f6cfaa22;margin-top:10px}.boss-hud i{display:block;background:#eea37d;height:100%;width:100%;transition:width .15s}
@media(pointer:coarse){.desktop-hint{display:none}.touch-hint{display:block}.button-key{display:none}.keyboard-guide{display:none}}
@media(min-width:900px){.briefing:before{content:"";position:absolute;inset:-120px -100px -100px -180px;z-index:-1;background:radial-gradient(ellipse,rgba(0,16,26,.72),transparent 68%);pointer-events:none}}
@media(max-width:750px){.topbar{left:max(19px,env(safe-area-inset-left));right:max(19px,env(safe-area-inset-right));top:max(20px,env(safe-area-inset-top))}.brand{font-size:16px;letter-spacing:2px;gap:10px}.brand-mark{width:28px;height:28px;font-size:23px}.brand small{font-size:7px;letter-spacing:1.8px}.top-actions{gap:6px}.icon-button{height:34px;min-width:34px;padding:0 8px}.quality{font-size:10px;gap:4px}.icon-button svg{width:16px;height:16px}#fullscreen{display:none}.briefing{top:auto;left:25px;right:25px;bottom:max(46px,calc(env(safe-area-inset-bottom) + 30px));width:auto;transform:none}.briefing:before{content:"";position:absolute;inset:-80px -40px -65px;z-index:-1;background:linear-gradient(transparent,#021421cc 30%,#021421ef);pointer-events:none}.eyebrow{font-size:10px;letter-spacing:1.8px}h1{font-size:48px;line-height:1.15;margin:14px 0}.intro{font-size:14px;margin-bottom:15px;line-height:1.7}.plane-tag{margin-bottom:17px;padding-top:14px;gap:13px}.plane-tag>span:first-child{font-size:25px}.plane-tag>div{font-size:11px}.plane-tag small{font-size:9px}.ready-tag{font-size:9px!important}.primary-button{min-height:54px;font-size:15px}.start-hint{font-size:10px;margin-top:10px;text-align:center}.mission-caption{right:24px;top:85px;font-size:10px}.mission-caption small{font-size:8px}.scene-label{right:27px;bottom:53%;font-size:10px;opacity:.7}.scene-label small{font-size:7px}.small-cross{font-size:24px}.start-bottom{left:25px;right:25px;bottom:max(16px,env(safe-area-inset-bottom));font-size:8px;letter-spacing:1px}.hud-left{left:20px;top:91px;width:142px}.mission-status{gap:6px;padding-left:10px;margin-bottom:18px}.mission-status .eyebrow{font-size:8px}.mission-status strong{font-size:14px}.mission-status>span:last-child{font-size:10px}.health-row{font-size:10px}.health-row>strong{font-size:16px}.score-row{font-size:8px;margin-top:10px}.score-row strong{font-size:11px;margin-left:3px}.hud-right{width:102px;right:18px;top:86px}#radar{width:102px;height:102px}.radar-label{font-size:6px;letter-spacing:.5px}.flight-readout{left:24px;bottom:193px;gap:20px}.flight-readout strong{font-size:22px}.flight-readout span{font-size:8px}.flight-readout small{font-size:8px}.joystick{left:24px;bottom:max(45px,calc(env(safe-area-inset-bottom) + 22px));width:121px;height:121px}.joystick>span{font-size:9px;bottom:-20px}.weapons{right:20px;bottom:max(43px,calc(env(safe-area-inset-bottom) + 21px));gap:13px}.weapon{width:91px;height:91px}.weapon svg{width:27px;height:27px}.weapon>span{font-size:11px}.secondary-weapon{width:65px;height:65px;margin-bottom:5px}.secondary-weapon svg{width:20px;height:20px}.secondary-weapon>span{font-size:9px}.bottom-center{bottom:max(12px,env(safe-area-inset-bottom));font-size:8px}.heading-scale{display:none}.wave-banner{top:31%}.wave-banner strong{font-size:24px;letter-spacing:3px}.wave-banner small{font-size:8px}.wave-banner span{font-size:11px}.toast{top:73px;font-size:11px;padding:10px 15px;max-width:90%;white-space:normal;text-align:center}.boss-hud{top:255px;width:50vw}.boss-hud span{font-size:9px}.modal-card{padding:29px}.modal-card h2{font-size:29px}.modal-card p{font-size:13px}.result-stats strong{font-size:23px}}
@media(max-width:750px) and (max-height:730px) and (orientation:portrait){.briefing{bottom:36px}h1{font-size:40px;margin:12px 0}.intro{font-size:12px;margin-bottom:12px}.plane-tag{padding-top:10px;margin-bottom:12px}.primary-button{min-height:49px}.start-hint{font-size:9px}.scene-label{display:none}}
@media(orientation:landscape) and (max-height:600px){.topbar{top:max(13px,env(safe-area-inset-top));left:max(22px,env(safe-area-inset-left));right:max(22px,env(safe-area-inset-right))}.brand small{display:none}.briefing{top:49%;bottom:auto;left:max(35px,env(safe-area-inset-left));right:auto;width:300px;transform:translateY(-38%)}.briefing:before{inset:-40px -45px -40px -65px;background:radial-gradient(ellipse,#051b23d9,transparent 75%)}h1{font-size:37px;line-height:1.1;margin:10px 0}.intro{font-size:12px;margin-bottom:12px}.plane-tag{padding-top:10px;margin-bottom:12px}.plane-tag small{display:none}.plane-tag>span:first-child{font-size:23px}.primary-button{min-height:45px}.start-hint{font-size:9px;margin-top:8px}.start-bottom{bottom:13px;font-size:8px}.mission-caption{top:73px;font-size:9px}.scene-label{right:18%;bottom:20%}.hud-left{top:72px;width:137px}.mission-status{margin-bottom:11px;gap:4px}.hud-right{top:66px;width:92px}#radar{width:92px;height:92px}.joystick{width:105px;height:105px;left:33px;bottom:31px}.joystick>span{bottom:-16px;font-size:8px}.joy-stick{width:43px;height:43px;left:calc(50% - 21.5px);top:calc(50% - 21.5px)}.weapons{bottom:26px;right:28px}.weapon{width:80px;height:80px}.secondary-weapon{width:59px;height:59px}.flight-readout{bottom:146px;left:31px;gap:19px}.flight-readout strong{font-size:18px}.bottom-center{bottom:15px}.heading-scale{display:none}.wave-banner{top:25%}.boss-hud{top:70px;width:29vw}.modal-card{padding:25px;width:390px}.modal-card h2{font-size:25px;margin:14px 0 10px}.modal-card p{font-size:12px;margin-bottom:16px}.result-stats{padding:13px 0;margin-bottom:16px}}
@media(prefers-reduced-motion:reduce){button,.toast,.wave-banner{transition:none}}
/* Legible flight labels at phone size. */
.start-hint{font-size:12px;white-space:normal}.brand small{font-size:10px}.mission-status>span:last-child,.health-row,.score-row,.flight-readout span,.flight-readout small,.bottom-center,.radar-label,.target-marker,.mission-caption small,.plane-tag small,.start-bottom,.scene-label small,.aim span{font-size:12px}.score-row strong{font-size:14px}.hud-left{width:216px}.weapon>span{font-size:14px}.secondary-weapon>span{font-size:12px}.weapon small,.secondary-weapon small,.joystick>span{font-size:12px}.radar-label{letter-spacing:0}.bottom-center{white-space:normal;width:min(370px,46vw)}.target-marker{border-width:1.5px}.result-stats span{font-size:12px}.modal-card .eyebrow,.mission-status .eyebrow{font-size:12px}
@media(max-width:750px){.hud-left{width:164px}.brand small{display:none}.score-row{font-size:12px}.score-row strong{font-size:14px}.mission-status>span:last-child{font-size:12px}.intro{font-size:16px}.plane-tag>div{font-size:12px}.ready-tag{font-size:12px!important}.start-bottom{font-size:10px}.start-hint{font-size:12px}.mission-caption{font-size:12px}.mission-caption small{font-size:10px}.bottom-center{width:72vw;font-size:10px}.radar-label{font-size:10px}.wave-banner small{font-size:12px}.wave-banner span{font-size:14px}.flight-readout span,.flight-readout small{font-size:12px}.joystick>span{font-size:12px}.weapon>span{font-size:14px}.secondary-weapon>span{font-size:12px}}
@media(orientation:landscape) and (max-height:600px){.hud-left{width:165px}.intro{font-size:14px}.start-hint{font-size:11px}.plane-tag>div{font-size:12px}.plane-tag small{display:none}.flight-readout{bottom:152px}.flight-readout span,.flight-readout small{font-size:12px}.bottom-center{width:45vw;font-size:11px}}
