:root{--space: #0d1033;--space-2: #1b1f5c;--hull: #e9edff;--hull-2: #d5dbf7;--ink: #23264f;--muted: #6a6f9c;--line: #2b2f6b;--accent: #ffb703;--ok: #2ec27e;--glow: #ffd23f;--red: #ff4d5e;--blue: #3a86ff;--yellow: #ffd23f;--green: #2ec27e;--purple: #9b5de5;--radius: 22px;font-family:Fredoka,system-ui,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--space)}body{background:radial-gradient(1px 1px at 12% 18%,#fff8 50%,transparent 51%),radial-gradient(1.5px 1.5px at 72% 12%,#fff9 50%,transparent 51%),radial-gradient(1px 1px at 40% 80%,#fff7 50%,transparent 51%),radial-gradient(1.5px 1.5px at 88% 64%,#fff8 50%,transparent 51%),radial-gradient(1px 1px at 22% 58%,#fff6 50%,transparent 51%),radial-gradient(1px 1px at 60% 40%,#fff6 50%,transparent 51%),radial-gradient(ellipse at 50% 0%,var(--space-2),var(--space) 70%);background-attachment:fixed;min-height:100vh}button{font:inherit;cursor:pointer}a{color:inherit}.app{max-width:1180px;margin:0 auto;padding:12px 16px 32px}.loading{min-height:100vh}.muted{color:var(--muted)}.small{font-size:.9rem}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.top{display:flex;align-items:center;gap:16px;color:#fff;padding:4px 4px 12px;flex-wrap:wrap}.title{display:flex;align-items:center;gap:8px;margin:0;font-size:1.6rem;font-weight:700;letter-spacing:.01em}.title .rocket{width:34px;height:34px}.top-mid{flex:1;display:flex;justify-content:center}.top-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.top .row button,.tutor-pages a,.skip{background:#ffffff1a;color:#fff;border:1px solid #ffffff33;border-radius:999px;padding:6px 14px;text-decoration:none;font-size:.95rem}.tutor-pages{display:flex;gap:6px}.tutor-pages a.is-now{background:#fff;color:var(--ink)}.skip{background:var(--accent);color:var(--ink);border:0;font-weight:600}.rocket{width:40px;height:40px;flex:none}.rocket-big{width:110px;height:110px;animation:hover 2.4s ease-in-out infinite}.rocket-big .rocket-flame{animation:flame .35s ease-in-out infinite alternate;transform-origin:32px 49px}@keyframes hover{50%{transform:translateY(-8px)}}@keyframes flame{to{transform:scaleY(1.35)}}.pips{display:flex;gap:14px}.pip-group{display:flex;gap:5px}.pip{width:16px;height:16px;border-radius:50%;border:2px solid #ffffff66;background:transparent;padding:0}.pip.is-done{background:var(--accent);border-color:var(--accent)}.pip.is-now{border-color:#fff;box-shadow:0 0 0 3px #fff5}.ship{display:flex;flex-direction:column}.tabs{display:flex;gap:4px;padding:0 12px;overflow-x:auto}.tab{display:flex;align-items:center;gap:8px;border:0;border-radius:16px 16px 0 0;padding:12px 22px 12px 18px;background:#c4cbef;color:var(--ink);font-size:1.2rem;font-weight:600;white-space:nowrap;position:relative;transition:background .15s}.tab:hover{background:#dfe4ff}.tab.is-now{background:var(--hull);font-weight:700}.tab.is-glow{animation:tabglow 1s ease-in-out infinite;background:var(--glow)}@keyframes tabglow{50%{box-shadow:0 0 0 6px #ffd23f88,0 0 26px #ffd23f}}.screen{position:relative;background:var(--hull);border-radius:var(--radius);min-height:560px;padding:22px 26px 30px;box-shadow:0 20px 60px #0007,inset 0 0 0 4px #fff9}.screen-main{background:radial-gradient(2px 2px at 20% 30%,#fff 50%,transparent 51%),radial-gradient(1.5px 1.5px at 70% 20%,#fff 50%,transparent 51%),radial-gradient(2px 2px at 85% 75%,#fff 50%,transparent 51%),radial-gradient(1.5px 1.5px at 35% 85%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 55% 55%,#fff 50%,transparent 51%),linear-gradient(160deg,#26307a,#141845);color:#fff;display:flex;align-items:center;justify-content:center}.room-name{margin:4px 0 18px;font-size:2.2rem;text-align:center;letter-spacing:.02em}.room{display:flex;flex-wrap:wrap;gap:22px;justify-content:center;align-items:stretch}.mission{text-align:center;max-width:760px}.mission-head{display:inline-flex;align-items:center;gap:10px;font-size:1.3rem;background:#ffffff1f;padding:6px 18px 6px 10px;border-radius:999px;margin-bottom:18px}.mission-head small{opacity:.7}.words p{margin:.2em 0}.words b{color:var(--accent);font-weight:700}.words-big{font-size:2.3rem;line-height:1.3}.words-mid{font-size:1.3rem}.screen:not(.screen-main) .words b,.ctl-card .words b,.t-row .words b{color:#c2410c}.mission-tip{margin-top:26px;font-size:1.2rem;opacity:.85}.mission-tip.is-done{font-size:1.8rem;opacity:1}.done-cover{position:absolute;inset:0;background:#e9edffcc;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;animation:fade .25s ease-out}.done-card{text-align:center;background:#fff;border-radius:28px;padding:26px 46px;box-shadow:0 12px 40px #23264f33;animation:pop .35s cubic-bezier(.3,1.6,.6,1)}.done-card p{margin:4px 0;font-size:2.4rem;font-weight:700}.done-card .done-back{font-size:1.3rem;font-weight:600;color:var(--muted)}.done-star{font-size:3.4rem}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:scale(.6);opacity:0}}.cheer,.listen{text-align:center}.cheer-line,.listen-line{font-size:2.6rem;font-weight:700;margin:14px 0 4px}.cheer-sub,.listen-sub{font-size:1.3rem;opacity:.85;margin:0 0 18px}.go{background:var(--accent);color:var(--ink);border:0;border-radius:999px;padding:12px 30px;font-size:1.3rem;font-weight:700;box-shadow:0 4px #c98a00}.go:active{transform:translateY(2px);box-shadow:0 2px #c98a00}.go:disabled{opacity:.5;cursor:default}.go.small{font-size:1rem;padding:6px 16px}.bay{background:#fff;border-radius:20px;padding:18px 20px 12px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:10px;min-width:150px;box-shadow:0 3px 0 var(--hull-2);position:relative}.bay-label{font-size:1.25rem;font-weight:600}.bay.is-hint{animation:hintglow 1s ease-in-out infinite;box-shadow:0 0 0 5px var(--glow),0 0 30px #ffd23faa}@keyframes hintglow{50%{box-shadow:0 0 0 10px #ffd23f88,0 0 40px #ffd23f}}.big-btn{width:110px;height:110px;border-radius:50%;border:6px solid #fff;box-shadow:0 0 0 4px var(--line),0 8px 0 4px var(--line);transition:transform .08s,box-shadow .08s;margin:6px 0 14px}.big-btn:active:not(:disabled),.big-btn.is-flash{transform:translateY(6px);box-shadow:0 0 0 4px var(--line),0 2px 0 4px var(--line);filter:brightness(1.25)}.big-btn:disabled{cursor:default}.c-red{background:var(--red)}.c-blue{background:var(--blue)}.c-yellow{background:var(--yellow)}.c-green{background:var(--green)}.c-purple{background:var(--purple)}.lever-track{position:relative;width:70px;height:210px}.lever-slot{position:absolute;left:50%;top:10px;bottom:10px;width:18px;transform:translate(-50%);border-radius:9px;background:#2b2f6b;box-shadow:inset 0 3px 6px #0008}.lever-knob{position:absolute;left:0;top:0;width:70px;height:56px;border-radius:18px;background:linear-gradient(#ff7a7a,var(--red));border:4px solid var(--line);cursor:grab;touch-action:none;transition:top .3s cubic-bezier(.3,1.5,.6,1)}.lever-knob.is-held{cursor:grabbing}.lever-knob:after{content:"";position:absolute;left:14px;right:14px;top:50%;height:5px;margin-top:-2px;border-radius:3px;background:#fff8}.dial{position:relative;width:170px;height:170px;border-radius:50%;background:radial-gradient(circle,#f6f7ff 55%,#dfe4ff 56%);border:4px solid var(--line);cursor:grab;touch-action:none;user-select:none}.dial.is-held{cursor:grabbing}.dial-num{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700;color:var(--muted);pointer-events:none}.dial-num.is-on{color:#fff;background:var(--blue);border-radius:50%}.dial-knob{position:absolute;left:50%;top:50%;width:76px;height:76px;margin:-38px 0 0 -38px;border-radius:50%;background:linear-gradient(145deg,#6c76d6,#3a3f8f);border:4px solid var(--line);transition:transform .25s cubic-bezier(.3,1.4,.6,1);pointer-events:none}.dial-pointer{position:absolute;left:50%;top:4px;width:10px;height:28px;margin-left:-5px;border-radius:5px;background:var(--accent)}.slider{display:flex;gap:10px;height:210px;margin:8px 0 14px}.slider-nums{display:flex;flex-direction:column;justify-content:space-between;font-weight:700;font-size:1.15rem;color:var(--muted);padding:0;margin:-11px 0}.slider-nums span.is-on{color:var(--blue);font-size:1.4rem}.slider-track{position:relative;width:60px;height:100%;border-radius:14px;background:#2b2f6b;box-shadow:inset 0 3px 6px #0008;cursor:grab;touch-action:none}.slider-fill{position:absolute;left:8px;right:8px;bottom:0;border-radius:10px;background:linear-gradient(0deg,#4cc9f0,#a0e7ff);transition:height .2s}.slider-knob{position:absolute;left:-10px;right:-10px;height:34px;margin-bottom:-17px;border-radius:12px;background:#fff;border:4px solid var(--line);transition:bottom .2s;cursor:grab;touch-action:none}.slider-knob.is-held{cursor:grabbing}.slider-knob.is-held,.slider-track:active .slider-fill{transition:none}.code-wrap{position:relative;display:block;cursor:text;margin-top:40px}.code-input{position:absolute;inset:0;opacity:0;font-size:16px;cursor:text}.code-slots{display:flex;gap:10px}.code-slot{width:64px;height:80px;border-radius:14px;border:4px solid var(--line);background:#1f2457;color:#7dffb2;font-size:2.8rem;font-weight:700;display:flex;align-items:center;justify-content:center;font-family:ui-monospace,Menlo,monospace}.code-input:focus+.code-slots .code-slot{border-color:var(--blue);box-shadow:0 0 0 4px #3a86ff55}.code-input:focus+.code-slots .code-slot:not(.is-full){animation:caret 1s steps(1) infinite}.code-input:focus+.code-slots .code-slot.is-full+.code-slot:not(.is-full),.code-input:focus+.code-slots .code-slot:first-child:not(.is-full){background:#2b3170}@keyframes caret{50%{border-color:var(--line)}}.panel{position:relative;width:260px;height:170px;border-radius:16px;background:#2b2f6b;overflow:hidden}.panel-inside{position:absolute;inset:0;display:flex;gap:10px;justify-content:center;align-items:center}.panel-inside .bay{background:transparent;box-shadow:none;padding:0;min-width:0;gap:0}.panel-inside .bay-label{color:#fff;font-size:1rem}.panel-inside .big-btn{width:84px;height:84px;margin:0 0 10px}.panel-cover{position:absolute;inset:0;border:0;border-radius:16px;background:repeating-linear-gradient(135deg,#b8c0e8 0 14px,#aab3e0 14px 28px);box-shadow:inset 0 0 0 4px var(--line);transition:transform .45s cubic-bezier(.5,-.3,.7,1),opacity .45s}.panel-cover:hover:not(:disabled){filter:brightness(1.06)}.bay-panel.is-open .panel-cover{transform:translate(120%,-30%) rotate(25deg);opacity:0;pointer-events:none}.panel-letter{font-size:4.4rem;font-weight:700;color:var(--line)}.panel-screw{position:absolute;width:14px;height:14px;border-radius:50%;background:#6b72a8;border:2px solid var(--line)}.s1{left:12px;top:12px}.s2{right:12px;top:12px}.s3{left:12px;bottom:12px}.s4{right:12px;bottom:12px}.wires{width:320px;height:220px;touch-action:none;user-select:none}.wire-cord{fill:none;stroke-width:12;stroke-linecap:round}.wire.c-red .wire-cord,.wire.c-red .wire-plug{stroke:var(--red)}.wire.c-blue .wire-cord,.wire.c-blue .wire-plug{stroke:var(--blue)}.wire.c-yellow .wire-cord,.wire.c-yellow .wire-plug{stroke:#e0b000}.wire-plug{fill:#fff;stroke-width:6;cursor:grab}.wire.is-plugged .wire-plug{cursor:default}.wire.c-red .wire-plug{fill:#ffd5da}.wire.c-blue .wire-plug{fill:#d6e6ff}.wire.c-yellow .wire-plug{fill:#fff3c4}.wire.is-miss{animation:miss .4s}.wire.is-hint .wire-plug{animation:plughint .9s ease-in-out infinite}@keyframes plughint{50%{stroke-width:10}}@keyframes miss{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.socket-ring{stroke:var(--line);stroke-width:5}.socket.c-red .socket-ring{fill:var(--red)}.socket.c-blue .socket-ring{fill:var(--blue)}.socket.c-yellow .socket-ring{fill:var(--yellow)}.socket-hole{fill:#23264f}.bay-computer{padding:14px}.desktop{width:640px;max-width:100%;border-radius:16px;border:6px solid var(--line);overflow:hidden;background:#23264f}.desktop-screen{height:330px;background:radial-gradient(circle at 30% 20%,#4f5bd5,#2b2f6b 70%);display:flex;align-items:center;justify-content:center;padding:18px}.desktop-empty{color:#ffffffb3;font-size:1.3rem}.window{background:#fff;border-radius:12px;box-shadow:0 12px 30px #0006;min-width:300px;overflow:hidden;animation:pop .25s cubic-bezier(.3,1.5,.6,1)}.window-bar{display:flex;align-items:center;gap:8px;background:var(--hull-2);padding:6px 14px;font-weight:700;font-size:1.15rem}.window-bar .app-pic{width:26px;height:26px}.window-body{display:flex;justify-content:center;padding:10px 20px}.window-body .bay{box-shadow:none;padding:6px 10px}.window-body .code-wrap{margin-top:10px}.taskbar{display:flex;justify-content:center;gap:10px;background:#e9edff;padding:8px}.app-icon{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:92px;border:0;border-radius:12px;background:transparent;padding:6px 10px 4px;font-weight:600;font-size:1.05rem;color:var(--ink);position:relative}.app-icon:hover:not(:disabled){background:#fff}.app-icon .app-pic{width:46px;height:46px}.app-icon.is-open:after{content:"";position:absolute;bottom:0;left:50%;width:8px;height:4px;margin-left:-4px;border-radius:2px;background:var(--muted)}.app-icon.is-front{background:#fff;box-shadow:0 2px 0 var(--hull-2)}.app-icon.is-front:after{width:22px;margin-left:-11px;background:var(--blue)}.app-icon.is-hint{animation:hintglow 1s ease-in-out infinite;box-shadow:0 0 0 4px var(--glow),0 0 24px #ffd23faa}.app-icon:disabled{cursor:default}.star{display:inline-block;vertical-align:-.12em}.crew-score{display:inline-flex;align-items:center;white-space:nowrap;gap:8px;background:#ffffff1f;border-radius:999px;padding:6px 22px;font-size:1.4rem}.crew-score-n{font-size:2rem;font-weight:700}.crew-score.big{font-size:1.6rem;background:#fff3c4}.crew-score.big .crew-score-n{font-size:3rem}.clock{display:flex;align-items:center;gap:10px;font-size:1.8rem;font-weight:700}.clock svg{width:42px;height:42px;transform:rotate(-90deg)}.clock-back{fill:none;stroke:#fff3;stroke-width:6}.clock-run{fill:none;stroke:var(--accent);stroke-width:6;stroke-dasharray:100;transition:stroke-dashoffset .25s linear}.clock.is-low .clock-run{stroke:var(--red)}.pilot-card{background:linear-gradient(160deg,#26307a,#141845);color:#fff;border-radius:var(--radius);min-height:560px;padding:40px 30px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.pilot-badge{display:inline-flex;align-items:center;gap:10px;font-size:2rem;font-weight:700;margin:0;color:var(--accent)}.pilot-say{font-size:1.4rem;opacity:.85}.note-card{background:var(--hull);border-radius:var(--radius);padding:40px;text-align:center;font-size:1.4rem}.conn{font-size:.95rem;padding:4px 12px;border-radius:999px;background:#ff4d5e33}.conn.is-on{background:#2ec27e44}.control{display:grid;grid-template-columns:280px 1fr;gap:18px;align-items:start}@media(max-width:800px){.control{grid-template-columns:1fr}}.ctl-card{background:var(--hull);border-radius:var(--radius);padding:20px 24px}.ctl-card h2{margin:14px 0 8px;font-size:1.2rem}.ctl-card h2:first-child{margin-top:0}.ctl-score{text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}.ctl-live{text-align:center}.ctl-live .clock{justify-content:center;font-size:3rem}.ctl-live .clock svg{width:64px;height:64px}.ctl-live .clock-back{stroke:#23264f22}.ctl-pilot{font-size:1.3rem;font-weight:600}.ctl-count{font-size:1.5rem}.ctl-last{font-size:1.3rem;font-weight:700;background:#fff3c4;border-radius:12px;padding:8px 14px;margin:0 0 6px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:2px solid var(--hull-2);background:#fff;border-radius:999px;padding:8px 18px;font-size:1.1rem}.chip.is-next{border-style:dashed;border-color:var(--muted)}.chip.is-on{background:var(--ink);border-color:var(--ink);color:#fff}.chip-tutor{font-style:italic}.mission-pick{display:flex;align-items:center;gap:10px;background:#fff;border-radius:16px;padding:10px}.mission-pick-text{flex:1;text-align:center}.arrow{border:0;background:var(--hull-2);border-radius:12px;width:44px;height:44px;font-size:1.2rem}.go-big{margin-top:20px;display:inline-flex;align-items:center;gap:10px;font-size:1.6rem;padding:12px 34px}.go-big .rocket{width:34px;height:34px}.quiet,.ctl-card .row button{background:transparent;border:1px solid var(--hull-2);border-radius:999px;padding:6px 14px}.ctl-card .row .danger{background:var(--red);color:#fff;border:0}.t-page{display:grid;gap:18px}.t-page>section{background:var(--hull);border-radius:var(--radius);padding:20px 24px}.t-page h2{margin:0 0 4px}.t-page h3{margin:16px 0 6px;color:var(--muted)}.t-list{list-style:none;padding:0;margin:0;display:grid;gap:6px}.t-row{display:grid;grid-template-columns:34px 1fr 190px auto;gap:12px;align-items:center;background:#fff;border-radius:12px;padding:8px 12px}.t-n{font-weight:700;color:var(--muted)}.t-words{display:flex;flex-wrap:wrap;gap:0 .35em;font-size:1.05rem}.t-where{color:var(--muted);font-size:.9rem}@media(max-width:700px){.t-row{grid-template-columns:28px 1fr}.t-where{grid-column:2}}.t-test ul{display:flex;gap:10px;flex-wrap:wrap;list-style:none;padding:0}.t-test li a{display:inline-block;background:#fff;border-radius:999px;padding:6px 16px;text-decoration:none;font-weight:600}.gate{min-height:100vh;display:flex;align-items:center;justify-content:center}.gate form{background:var(--hull);border-radius:var(--radius);padding:28px;display:grid;gap:12px;min-width:300px}.gate label{display:grid;gap:6px;font-weight:600}.gate input{font:inherit;padding:8px 12px;border-radius:10px;border:2px solid var(--hull-2)}.gate-bad{color:var(--red);margin:0}.gate-row{display:flex;justify-content:flex-end;gap:8px}.gate-row button:not(.go){background:transparent;border:1px solid var(--hull-2);border-radius:999px;padding:8px 16px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
