@font-face{font-family:Orbita;src:url('/fonts/manrope-800.ttf') format('truetype');font-weight:800;font-display:swap}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{font-family:Orbita,'Arial Rounded MT Bold',system-ui,sans-serif;color:white;background:#061b50;overscroll-behavior:none}button,input,select{font:inherit}button,a,select,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:4px solid #ffe646;outline-offset:4px}button:disabled{opacity:.55;cursor:wait}button svg,a svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}.app{height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:linear-gradient(#03113815,#05265433),url('./assets/space.webp') center/cover no-repeat}.topbar{height:64px;flex-shrink:0;display:flex;align-items:center;gap:14px;padding:9px max(16px,env(safe-area-inset-right));z-index:5}.brandline{font-size:12px;letter-spacing:.15em;color:#bddefe;flex:1}.brandline span{font-size:10px;letter-spacing:.08em}.top-actions{display:flex;gap:10px}.icon-button{display:grid;place-items:center;flex-shrink:0;width:46px;height:46px;min-width:44px;border-radius:15px;color:white;border:2px solid #66d7ff;background:linear-gradient(#1ec3ff,#086cec 75%);box-shadow:inset 0 2px 2px #ffffff66,0 4px 0 #032d85,0 0 10px #078cff44;text-decoration:none;font-size:26px;font-weight:900}.icon-button[aria-pressed=false]{filter:saturate(.3)}.icon-button:active,.play-button:active{translate:0 2px}.menu{min-height:0;flex:1;display:grid;grid-template-columns:minmax(140px,1fr) minmax(480px,700px) minmax(20px,.5fr);align-items:center;padding:0 30px 20px;position:relative}.menu-center{text-align:center;min-height:0}.menu h1{margin:0}.game-title{width:min(100%,590px);max-height:28dvh;object-fit:contain;height:auto;filter:drop-shadow(0 6px 2px #00113688)}.tagline{font-size:clamp(14px,2vw,22px);margin:0 0 14px;letter-spacing:.025em;text-shadow:0 2px 3px #002a69}.menu-ship{position:relative;width:min(27vw,300px);justify-self:end;transform:rotate(25deg);animation:float-ship 4s ease-in-out infinite}.menu-ship img{position:relative;width:100%;height:auto;object-fit:contain;filter:drop-shadow(0 0 20px #3cbbff77)}.menu-trail{position:absolute;top:70%;left:29%;width:45%;height:190px;background:linear-gradient(#bffcff,#13baff99,transparent);filter:blur(12px);clip-path:polygon(5% 0,95% 0,70% 100%,30% 100%)}.mode-tabs{display:flex;gap:7px;padding:5px;background:#031c55bb;border:1px solid #538de4;border-radius:18px;margin:10px 0 12px}.mode-tabs button{flex:1;min-height:50px;padding:8px 6px;border:1px solid transparent;border-radius:12px;background:transparent;color:#c9e4ff;font-size:clamp(12px,1.2vw,15px)}.mode-tabs small{display:block;font:800 8px system-ui,sans-serif;letter-spacing:.1em;margin-top:4px;color:#a8cffb}.mode-tabs .selected{background:linear-gradient(#3b97f5,#0765d6);border-color:#7bd9ff;color:white;box-shadow:0 3px 0 #053c94}.mode-tabs .selected small{color:#ffdf67}.subjects{display:flex;gap:16px}.subject{flex:1;min-height:69px;border-radius:18px;border:3px solid #ffd55b;background:linear-gradient(#fff2a2,#ffce41);color:#082354;display:flex;justify-content:center;align-items:center;gap:12px;font-size:clamp(17px,2vw,23px);box-shadow:inset 0 3px 1px #ffffff99,0 5px 0 #b46c08}.subject.language{border-color:#ffa6a5;background:linear-gradient(#ffb4ab,#ff7c82);box-shadow:inset 0 3px 1px #ffffff77,0 5px 0 #b53e68}.subject.selected{outline:3px solid #c4f9ff;outline-offset:3px}.subject-icon{font-size:33px;line-height:1;position:relative;width:45px;text-shadow:0 2px white;color:#007fdf}.subject-icon b{font-size:25px;color:#18ab6d;vertical-align:sub}.subject-icon.letters{color:#d94c7c;font-size:28px}.subject-icon.letters b{color:#1e84e5}.settings{display:flex;justify-content:center;align-items:end;gap:20px;margin:18px 0 14px}.settings fieldset{border:0;margin:0;padding:0}.settings legend,.speed-label{font-size:11px;letter-spacing:.06em;color:#b8d6ff;text-align:left}.grade-options{display:flex;gap:8px;margin-top:6px}.grade-options button{min-width:53px;min-height:44px;border:2px solid #386cb6;border-radius:14px;background:linear-gradient(#226bbf,#12448d);color:white;font-size:22px}.grade-options .selected{background:linear-gradient(#16d5f7,#048eff);border-color:#96f4ff;box-shadow:0 0 12px #17aaff88}.speed-label select{display:block;min-height:44px;max-width:160px;margin-top:6px;padding:8px 30px 8px 12px;background:#123b79;border:2px solid #548ed6;border-radius:12px;color:white;font-size:14px}.play-row{display:flex;justify-content:center;align-items:stretch;gap:14px}.play-button{display:flex;align-items:center;justify-content:center;gap:24px;width:min(350px,70%);min-height:70px;color:#fff;border:3px solid #91f5ff;border-radius:23px;background:linear-gradient(#17d8f7,#0099ff 60%,#0872ed);box-shadow:inset 0 3px 1px #ffffff99,0 6px 0 #05469f,0 0 25px #1baaff55;font-size:clamp(27px,3.3vw,38px);font-weight:900;text-shadow:0 3px 0 #005dbe;letter-spacing:.03em}.play-button svg{width:35px;height:35px;fill:#f9ffff}.ranking-button{width:78px;min-height:70px;background:linear-gradient(#ffe993,#ffbc39);border:2px solid #fff0a8;border-radius:18px;box-shadow:0 5px 0 #aa690c;color:#68420b;font-size:10px}.ranking-button svg{display:block;margin:0 auto 5px;width:28px;height:28px}.menu-description{margin:15px 0 5px;font-size:12px;color:#e0edff}.controls-hint{color:#98bee9;font:600 11px system-ui;margin:6px 0 0}.practice-note{min-height:69px;display:grid;place-items:center;margin:0;background:#0a3776cc;border:2px solid #4e91ce;border-radius:18px;color:#d0eeff;font-size:14px;padding:12px}.error{color:#ffe282;font:700 13px system-ui;margin:8px 0 0}.error:empty{display:none}.play{min-height:0;flex:1;display:flex;flex-direction:column;padding:0 16px}.hud{display:flex;align-items:center;gap:14px;padding:0 0 10px;height:56px;flex-shrink:0}.hud-pill{font-size:12px;letter-spacing:.08em;padding:11px 18px;border:2px solid #345d9d;border-radius:15px;background:#041c4ace}.hud-score{font-size:28px;padding:2px 18px;background:#032659cd;border:2px solid #2c7be0;border-radius:14px;min-width:115px}.hud-score>span:first-child{color:#ffdb45}.shields{display:flex;gap:5px}.shields svg{width:29px;height:32px;fill:#1baded;stroke:#b5f4ff;stroke-width:2}.shields .empty{opacity:.2}.timer{margin-left:auto;font-size:24px;font-variant-numeric:tabular-nums}.timer.urgent{color:#ffb587}.question-panel{width:min(850px,90%);align-self:center;min-height:89px;flex-shrink:0;border:3px solid #91ddff;border-radius:22px;background:linear-gradient(#ffffff,#e5f5ff);color:#081c53;text-align:center;padding:9px 18px;box-shadow:0 5px 0 #1260a777,0 0 20px #42b9ff33;position:relative;z-index:2}.question-panel>span:first-child{font-size:9px;letter-spacing:.13em;color:#3375a9}.question-panel h2{font-size:clamp(21px,2.7vw,34px);margin:3px 0;line-height:1.18}.question-panel #sequence-progress{position:absolute;right:16px;top:12px;font-size:12px;color:#2676b7}.arena{flex:1;min-height:0;position:relative;touch-action:none;isolation:isolate}canvas{position:absolute;width:100%;height:100%;inset:0;touch-action:none}.flight-controls{position:absolute;bottom:8px;left:5px;right:5px;display:flex;align-items:end;justify-content:space-between;pointer-events:none;z-index:4}.flight-controls button{pointer-events:auto}.direction-pad{display:grid;grid-template-columns:repeat(4,48px);gap:8px}.direction-pad button{height:48px;border:2px solid #76ddff;border-radius:50%;background:linear-gradient(#27bfff,#0873f3);color:white;box-shadow:0 4px 0 #064098,inset 0 2px 2px #ffffff88;font-size:22px;touch-action:none}.fire-button{width:100px;height:100px;border:4px solid #88e7ff;border-radius:50%;background:linear-gradient(#15c9ff,#0878fa);box-shadow:0 5px 0 #054a9f,inset 0 3px 2px #ffffff88,0 0 22px #2d9dff55;color:white;display:grid;place-content:center;gap:6px;touch-action:none}.fire-button svg{width:37px;height:37px;margin:auto}.fire-button span{font-size:12px}.accessible-toggle{background:#07285cbb;border:1px solid #427fc0;border-radius:10px;min-height:44px;padding:7px 11px;color:#b9d8ff;font:700 10px system-ui;margin:0 8px}.accessible-toggle[aria-pressed=true]{background:#1365a9;color:white}.accessible-answers{position:absolute;top:5px;left:10%;right:10%;display:flex;justify-content:center;gap:12px;z-index:6}.accessible-answers button{max-width:180px;min-height:44px;padding:8px 16px;border-radius:12px;background:#e9f8ff;border:2px solid #68cbff;color:#103c73;font-size:14px}.feedback{position:absolute;top:7px;left:10%;right:10%;text-align:center;color:#eaffff;font-size:13px;pointer-events:none;text-shadow:0 2px 2px #001d42;z-index:5}.feedback:empty{display:none}.feedback.show{animation:feedback-in .2s ease-out}.countdown{position:absolute;inset:0;display:grid;place-items:center;font-size:110px;color:#fff4b1;text-shadow:0 7px #075bba,0 0 30px #00caff;z-index:10;pointer-events:none}.mission-footer{height:30px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:8px;font:700 10px system-ui;color:#a8d4ff;padding:0 5px}.mission-footer b{margin:0 5px;color:#5f98cb}#reset-notice{color:#ffdb7f}.overlay{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:18px;background:#000b35c9;backdrop-filter:blur(8px)}.dialog{position:relative;width:min(650px,100%);max-height:calc(100dvh - 36px);overflow:auto;border:3px solid #73d7ff;border-radius:28px;background:linear-gradient(#0b3b83,#041d4e);box-shadow:0 18px 70px #0009,inset 0 1px #b8ecff;padding:28px;text-align:center}.close-dialog{position:absolute;top:8px;right:10px;width:44px;height:44px;min-height:44px;border:0;background:none;color:#cceeff;font-size:35px;z-index:1}.dialog h2{font-size:clamp(25px,4vw,36px);margin:3px 0 14px;color:#fff0a7}.dialog p{font:600 15px/1.5 system-ui,sans-serif;color:#cde7ff}.dialog .dialog-sub{font:800 11px system-ui;color:#84b9f6;letter-spacing:.1em;margin:0}.dialog-button{min-height:47px;border:2px solid #78dcff;border-radius:14px;background:linear-gradient(#18c9ff,#0879f3);color:white;padding:10px 22px;font-size:15px;box-shadow:0 4px 0 #064494;margin:6px}.dialog-button.secondary{background:#173b70;border-color:#4b7bb4;box-shadow:none}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.help-grid p{margin:0;padding:15px;background:#0e4a8c88;border:1px solid #377ab6;border-radius:14px;font-size:13px}.help-grid b{color:#ffe06e}.result-score{font-size:clamp(40px,7vw,65px);color:#ffdd58;text-shadow:0 4px #a95c13;line-height:1.1;margin:8px 0}.result-stats{display:flex;justify-content:center;gap:22px;color:#b3dcff;font-size:13px;margin:12px 0}.rank-table{width:100%;border-collapse:collapse;font:700 15px system-ui;text-align:left;margin:18px 0}.rank-table td,.rank-table th{padding:10px 12px;border-bottom:1px solid #3773a5}.rank-table th{color:#86b9ea;font-size:11px;text-transform:uppercase}.rank-table tr:first-child td{color:#ffe06c;background:#1c4c7a}.rank-table td:last-child{text-align:right;color:#ffdf75}.privacy{padding:12px;border:1px solid #7792bc;border-radius:12px;background:#143e70;text-align:left!important;font-size:12px!important}.name-form{display:grid;gap:12px;text-align:left}.name-form label{display:grid;gap:6px;font-size:13px}.name-form input[type=text]{min-height:47px;min-width:0;width:100%;border:2px solid #68bfff;background:#f4fcff;border-radius:12px;color:#09295e;padding:10px 14px}.name-form .privacy-check{display:flex;align-items:flex-start;gap:10px;font:600 12px/1.5 system-ui}.privacy-check input{width:22px;height:22px;flex-shrink:0}.result-actions{display:flex;justify-content:center;flex-wrap:wrap;margin-top:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes float-ship{0%,100%{translate:0 0}50%{translate:0 -14px}}@keyframes feedback-in{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}
@media(max-height:700px) and (min-width:700px){.topbar{height:54px;padding-top:5px;padding-bottom:5px}.menu{padding-bottom:12px;grid-template-columns:minmax(100px,.8fr) minmax(460px,650px) minmax(12px,.4fr)}.game-title{max-height:19dvh}.tagline{margin-bottom:6px;font-size:17px}.mode-tabs{margin:6px 0 9px}.mode-tabs button{min-height:44px;padding:5px}.subject,.practice-note{min-height:57px}.settings{margin:13px 0 10px}.play-button{min-height:58px;font-size:30px}.ranking-button{min-height:58px}.menu-description{margin-top:11px}.hud{height:46px;padding-bottom:5px}.question-panel{min-height:74px;padding:6px 16px}.fire-button{width:80px;height:80px}.fire-button svg{width:29px;height:29px}.fire-button span{font-size:10px}.direction-pad{grid-template-columns:repeat(4,44px);gap:6px}.direction-pad button{height:44px}.mission-footer{height:24px}.menu-ship{width:22vw}}
@media(max-width:760px){.brandline span{display:none}.menu{grid-template-columns:1fr;padding:0 18px 12px}.menu-center{width:min(600px,100%);justify-self:center}.menu-ship{display:none}.game-title{max-height:24dvh;width:85%}.subject{font-size:17px;gap:7px}.subject-icon{font-size:27px;width:34px}.mode-tabs button{font-size:11px}.play{padding:0 9px}.hud{gap:7px}.hud-pill{font-size:9px;padding:10px}.hud-score{font-size:22px;min-width:83px;padding:5px 10px}.shields{gap:1px}.shields svg{width:23px}.timer{font-size:20px}.mission-footer span:first-child{display:none}.direction-pad{grid-template-columns:repeat(2,44px);gap:6px}.direction-pad button{height:44px}.direction-pad button[data-dir=up]{grid-column:2;grid-row:1}.direction-pad button[data-dir=down]{grid-column:2;grid-row:2}.direction-pad button[data-dir=right]{grid-column:3;grid-row:2}.direction-pad button[data-dir=left]{grid-column:1;grid-row:2}.fire-button{width:87px;height:87px}.accessible-toggle{max-width:85px;padding:5px;font-size:9px}.question-panel{width:98%;min-height:85px}.question-panel h2{font-size:24px}.question-panel>span:first-child{font-size:8px}.mission-footer{font-size:8px}.help-grid{gap:8px}.help-grid p{padding:10px}.dialog{padding:26px 18px}.topbar{gap:10px}.top-actions{gap:8px}.settings{gap:16px}.grade-options{gap:6px}.grade-options button{min-width:49px}}
@media(max-width:420px){.topbar{padding-left:10px;padding-right:10px;height:58px}.brandline{font-size:10px}.icon-button{width:44px;height:44px;border-radius:13px}.top-actions{gap:6px}.subject{font-size:15px}.subject-icon{width:25px}.grade-options button{min-width:43px;font-size:19px}.settings{gap:12px}.speed-label select{max-width:120px;font-size:12px;padding-left:7px}.mode-tabs small{font-size:7px}.mode-tabs button{font-size:10px}.play-button{min-height:62px}.tagline{font-size:16px}.hud-pill{max-width:90px}.question-panel h2{font-size:21px}.question-panel>span:first-child{letter-spacing:.04em}.hud-score{font-size:20px;min-width:72px}.shields svg{width:20px}.hud .icon-button{width:44px;height:44px}.timer{font-size:18px}.help-grid{grid-template-columns:1fr}.help-grid p{font-size:12px}.menu-description{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}

/* Analog joystick supports simultaneous steering and firing on tablets. */
.joystick{position:relative;width:116px;height:116px;flex-shrink:0;border-radius:50%;border:3px solid #72dbff;background:radial-gradient(circle at 50% 40%,#164b9bcc,#06295dde 70%);box-shadow:inset 0 3px 10px #001b55,0 4px 0 #052968,0 0 16px #138aff44;touch-action:none;user-select:none;cursor:grab;pointer-events:auto}
.joystick-ring{position:absolute;inset:17px;border:1px solid #4595dd77;border-radius:50%;box-shadow:inset 0 1px 6px #062659}
.joystick-knob{position:absolute;left:50%;top:50%;width:53px;height:53px;transform:translate(-50%,-50%);border:3px solid #b1f5ff;border-radius:50%;background:radial-gradient(circle at 38% 27%,#71e7ff,#10aafc 45%,#066bde 85%);box-shadow:inset 0 3px 2px #e3ffff88,0 5px 9px #001b69aa;pointer-events:none;will-change:transform}
.joystick-knob:after{content:'';position:absolute;inset:16px;border:2px solid #c7f8ffaa;border-radius:50%}.joystick.moving{border-color:#cbfaff;box-shadow:inset 0 3px 10px #001b55,0 0 22px #18bcff99;cursor:grabbing}
@media(max-height:700px) and (min-width:700px){.joystick{width:94px;height:94px}.joystick-knob{width:47px;height:47px}.joystick-knob:after{inset:13px}}
@media(max-width:420px){.joystick{width:108px;height:108px}}

/* Touch controls are reserved for phones and tablets, regardless of viewport width. */
#joystick,#fire{display:none}
@media (pointer:coarse) and (hover:none){#joystick{display:block}#fire{display:grid}}

@media(max-width:600px){.settings{gap:12px;flex-wrap:wrap}.grade-options{gap:5px}.grade-options button{min-width:41px;font-size:19px}.speed-label select{max-width:140px}.question-panel h2{overflow-wrap:anywhere}}

/* In-dialog leaderboard, opened on demand after a mission. */
.rank-view-button{display:flex;align-items:center;justify-content:center;width:min(100%,380px);margin:20px auto 8px;min-height:54px;border-color:#fff0a5;background:linear-gradient(145deg,#ffe898,#ffbe39);color:#553315;box-shadow:0 4px 0 #a66a13,inset 0 2px 0 #fff8;gap:8px;font-weight:900}
.result-ranking-panel{margin-top:20px;padding:18px;border:1px solid #73bdf180;border-radius:22px;background:radial-gradient(ellipse at top,#2267b36b,transparent 70%),#031a43;box-shadow:inset 0 1px 0 #b4e4ff20}
.rank-heading{display:flex;justify-content:center;align-items:center;gap:14px;text-align:left}.rank-trophy{display:grid;place-items:center;width:60px;height:60px;flex-shrink:0;border-radius:20px;background:linear-gradient(135deg,#fff1a32b,#ffb52a10);border:1px solid #ffdb6d66;font-size:36px}.rank-heading p{font-size:9px!important;letter-spacing:.16em;color:#86bff3!important;margin:0 0 3px!important}.rank-heading h3{margin:0;color:#ffe47c;font-size:25px;line-height:1.1;letter-spacing:0}.rank-config{font-size:12px!important;color:#c0dafa!important;margin:14px 0 8px!important}.rank-config span{color:#4b7fac;margin:0 5px}
.rank-table-space{border-collapse:separate;border-spacing:0 7px;margin:4px 0 0;width:100%;table-layout:fixed}.rank-table-space thead th{font-size:9px;letter-spacing:.1em;padding:5px 8px;border:0;color:#78a8d8}.rank-table-space th:first-child{width:64px}.rank-table-space th:last-child{width:110px;text-align:right}.rank-table-space td,.rank-table-space tbody th{border:0;padding:11px 10px;background:#103664;font-size:14px;color:#ebf6ff;text-align:left}.rank-table-space td:first-child{border-radius:13px 0 0 13px}.rank-table-space td:last-child{border-radius:0 13px 13px 0;text-align:right;white-space:nowrap;color:#ffe38b}.rank-table-space td:last-child strong{font-size:18px;font-variant-numeric:tabular-nums}.rank-table-space td:last-child small{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.08em;color:#9fbfdd;margin-top:1px}.rank-position{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:#061f49;color:#92b8e0;font-size:14px;font-variant-numeric:tabular-nums}.rank-medal .rank-position{font-size:27px;background:transparent}.rank-nickname{display:block;overflow-wrap:anywhere;font-weight:800;line-height:1.25}.rank-champion{display:block;font-size:7px;letter-spacing:.12em;color:#ffe07c;margin-top:5px}.rank-table-space .rank-medal-1 td,.rank-table-space .rank-medal-1 th{background:#705328;color:#fff0b4;box-shadow:inset 0 1px #f5ce6c55,inset 0 -1px #f5ce6c44}.rank-table-space .rank-medal-2 td,.rank-table-space .rank-medal-2 th{background:#354e70}.rank-table-space .rank-medal-3 td,.rank-table-space .rank-medal-3 th{background:#5c4050}.rank-empty{padding:18px 8px 8px}.rank-empty>span{display:block;font-size:38px;color:#ffdf6b;margin-bottom:9px}.rank-empty strong{font-size:17px;color:#ffdf83}.rank-empty p,.rank-loading{font-size:13px!important;color:#b8d8f6!important;line-height:1.5}
@media(max-width:480px){.result-ranking-panel{padding:13px 9px}.rank-heading h3{font-size:22px}.rank-trophy{width:48px;height:48px;font-size:29px;border-radius:15px}.rank-table-space th:first-child{width:49px}.rank-table-space th:last-child{width:87px}.rank-table-space td,.rank-table-space tbody th{padding:9px 7px;font-size:12px}.rank-table-space td:last-child strong{font-size:16px}.rank-position{width:29px;height:29px}.rank-medal .rank-position{font-size:24px}}

.subject.english{border-color:#83ecd6;background:linear-gradient(#b8f8e0,#4fdbb9);box-shadow:inset 0 3px 1px #ffffff77,0 5px 0 #1b8872}.subject.english .subject-icon{font-size:24px;font-weight:900;color:#0a6d72}
.subjects{gap:10px}.subjects .subject{font-size:clamp(13px,1.8vw,21px);gap:7px}.subjects .subject-icon{flex-shrink:0}
@media(max-width:600px){.subjects .subject{font-size:14px;min-height:58px;padding:6px 3px;border-radius:14px;flex-direction:column;gap:3px}.subjects .subject-icon{font-size:22px;height:23px;line-height:1;width:auto}.subjects .subject-icon b{font-size:18px}.subjects .subject.english .subject-icon{font-size:19px}.subjects{gap:7px}}
