:root{--ink:#e9eef2;--dim:#8d99a3;--panel:#080b0ec7;--line:#e9eef224;--accent:#7dfcff;--warn:#ffb000;--danger:#ff4040;--captain:#ffc46b;--controller:#7dfcff;--crew:#ff9ec7;--npc:#e9eef2;--player:#8dffa0;--gpws:#ff6b6b;--mono:"Share Tech Mono", ui-monospace, Menlo, Consolas, monospace;--display:"Barlow Condensed", "Arial Narrow", sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--mono);background:#000;margin:0;overflow:hidden}#app,#app canvas{width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui .screen,#ui button,#ui input,#ui select,#ui label{pointer-events:auto}.hidden{display:none!important}.crosshair{background:#ffffffbf;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;transition:all .12s;position:absolute;top:50%;left:50%;box-shadow:0 0 4px #000}.crosshair.hot{border:2px solid var(--accent);background:0 0;width:22px;height:22px;margin:-11px 0 0 -11px}.crosshair.wipe{border-color:var(--warn)}.tooltip{letter-spacing:.08em;background:var(--panel);border:1px solid var(--line);white-space:nowrap;padding:3px 8px;font-size:13px;position:absolute;top:calc(50% + 22px);left:50%;transform:translate(-50%)}.tooltip small{color:var(--dim);margin-left:8px}.wipe-ring{width:46px;height:46px;margin:-23px 0 0 -23px;position:absolute;top:50%;left:50%}.subtitles{flex-direction:column;align-items:center;gap:6px;width:min(880px,92vw);display:flex;position:absolute;bottom:calc(7vh + 30px);left:50%;transform:translate(-50%)}.sub{text-shadow:0 1px 2px #000;background:#0000009e;border-left:3px solid;max-width:100%;padding:6px 12px;font-size:clamp(15px,1.6vw,20px);line-height:1.3;animation:.16s ease-out subIn}.sub .who{font-family:var(--display);letter-spacing:.06em;text-transform:uppercase;margin-right:10px;font-size:.9em;font-weight:700}.sub .txt{color:var(--ink)}.sub.ducked{opacity:.55;font-size:clamp(13px,1.2vw,16px)}.sub.garbled .txt{filter:blur(.6px);letter-spacing:.04em}@keyframes subIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.objective{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);width:min(380px,40vw);padding:10px 14px;font-size:14px;line-height:1.4;position:absolute;top:18px;left:18px}.objective .phase{font-family:var(--display);letter-spacing:.18em;color:var(--dim);text-transform:uppercase;margin-bottom:4px;font-size:13px;font-weight:700}.objective .task{color:#fff;font-size:16px;font-weight:600}.objective .heard{color:var(--dim);margin-top:6px;font-size:13px;font-style:italic}.objective .hint{color:var(--warn);margin-top:6px;font-size:13px}.toasts{flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;bottom:90px;right:18px}.toast{color:#b9ffcf;letter-spacing:.05em;background:#0a2814d9;border:1px solid #3cff6e;padding:6px 12px;font-size:14px;animation:.16s ease-out subIn}.toast.warn{border-color:var(--warn);color:#ffd98a;background:#321e00e0}.offscreen{text-align:center;width:56px;color:var(--accent);letter-spacing:.15em;filter:drop-shadow(0 0 4px #000);margin:-28px 0 0 -28px;font-size:11px;animation:1s infinite blink;position:absolute}.offscreen svg{width:40px;height:40px;margin:0 auto;display:block}.fight{text-align:center;border:1px solid var(--danger);background:#280000bf;width:min(420px,80vw);padding:8px 12px;position:absolute;top:calc(7vh + 104px);left:50%;transform:translate(-50%)}.fight .lbl{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:#ffb3b3;font-size:15px;font-weight:700}.fight .tug{background:#222;height:10px;margin:6px 0 4px;display:flex}.fight .tug i{height:100%;transition:width .12s;display:block}.fight .tug .you{background:var(--accent)}.fight .tug .him{background:var(--danger)}.fight .sub2{color:#d99;font-size:12px}.strip{border:1px solid var(--line);white-space:nowrap;background:#0009;gap:14px;padding:5px 12px;font-size:13px;display:flex;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.strip b{color:var(--dim);margin-right:4px;font-weight:400}.strip .bad{color:var(--danger)}.strip .on{color:#3cff6e}.captain-status{background:var(--panel);border:1px solid var(--line);align-items:center;gap:10px;padding:8px 12px;font-size:13px;display:flex;position:absolute;bottom:18px;left:18px}.captain-status .drop{width:18px;height:24px}.captain-status .bar{background:#ffffff1f;width:90px;height:6px;position:relative}.captain-status .bar i{background:#b3141c;position:absolute;top:0;bottom:0;left:0}.captain-status.critical{border-color:var(--danger);animation:.9s infinite blink}@keyframes blink{50%{border-color:#0000}}.banner{text-align:center;font-family:var(--display);text-transform:uppercase;opacity:0;text-shadow:0 2px 12px #000;transition:opacity .6s;position:absolute;top:24vh;left:50%;transform:translate(-50%)}.banner.show{opacity:1}.banner .n{letter-spacing:.4em;color:var(--accent);font-size:15px}.banner .t{letter-spacing:.08em;font-size:clamp(34px,5vw,64px);font-weight:800}.debug{white-space:pre;border:1px solid var(--line);color:#b9ffcf;background:#000000b3;padding:8px 10px;font-size:12px;line-height:1.35;position:absolute;top:12px;right:12px}.prompt{letter-spacing:.1em;color:var(--warn);text-shadow:0 1px 3px #000;font-size:14px;position:absolute;bottom:26vh;left:50%;transform:translate(-50%)}.spatter{width:100%;height:100%;position:absolute;inset:0}.keycap{border:1px solid var(--line);text-align:center;background:#ffffff0d;border-bottom-width:2px;border-radius:3px;min-width:1.6em;padding:0 5px;font-size:.9em;display:inline-block}.radial{width:520px;height:520px;margin:-260px 0 0 -260px;position:absolute;top:50%;left:50%}.radial svg{width:100%;height:100%;overflow:visible}.radial .wedge{fill:#080b0ed1;stroke:#e9eef22e;stroke-width:1px}.radial .wedge.sel{fill:#7dfcff38;stroke:var(--accent)}.radial .wedge.off{fill:#080b0e8c}.radial .lbl{font-family:var(--display);letter-spacing:.05em;text-transform:uppercase;fill:var(--ink);text-anchor:middle;dominant-baseline:middle;font-size:17px;font-weight:700}.radial .lbl.off{fill:#59636b}.radial .centre{text-align:center;width:190px;font-size:13px;line-height:1.35;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.radial .centre b{font-family:var(--display);letter-spacing:.05em;text-transform:uppercase;margin-bottom:4px;font-size:20px;display:block}.radial .centre .cost{color:var(--warn);margin-top:4px}.radial .centre .why{color:var(--danger);margin-top:4px}.screen{background:radial-gradient(#0000008c,#000000eb);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.card{border:1px solid var(--line);background:#080b0ee6;width:min(760px,94vw);max-height:92vh;padding:28px 32px;overflow:auto}.title-wordmark{font-family:var(--display);letter-spacing:.04em;margin:0;font-size:clamp(56px,10vw,120px);font-weight:800;line-height:.9}.title-wordmark span{color:var(--danger)}.tagline{color:var(--dim);max-width:58ch;margin:14px 0 18px;font-size:15px;line-height:1.5}.rating{border:1px solid var(--line);color:var(--dim);align-items:center;gap:10px;margin-bottom:18px;padding:6px 10px;font-size:12px;display:inline-flex}.rating b{color:var(--ink);font-family:var(--display);background:#b3141c;padding:2px 6px;font-size:15px}.row{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}button.btn{font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#ffffff0a;padding:10px 20px;font-size:18px;font-weight:700}button.btn.primary{background:var(--ink);color:#05080a;border-color:var(--ink)}button.btn:hover{border-color:var(--accent)}button.btn:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.section{border-top:1px solid var(--line);margin-top:22px;padding-top:14px}.section h2{font-family:var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin:0 0 10px;font-size:15px}.grid2{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px 18px;font-size:14px;display:grid}.grid2 label{align-items:center;gap:8px;display:flex}.controls-list{color:var(--dim);grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px;display:grid}.controls-list dt{color:var(--ink)}.controls-list dd{margin:0}.locked{color:var(--dim);font-size:13px}.credit{color:var(--accent);border-bottom:1px solid;text-decoration:none}.credit:hover{color:#fff}.fail-text{font-family:var(--display);color:#fff;text-align:center;text-shadow:0 2px 16px #000;max-width:24ch;font-size:clamp(26px,4vw,48px);font-weight:800}.fail-sub{color:#ddd;text-align:center;letter-spacing:.15em;text-transform:uppercase;margin-top:10px;font-size:14px}.grade{font-family:var(--display);font-size:140px;font-weight:800;line-height:.85}.score-table{border-collapse:collapse;width:100%;margin-top:10px;font-size:14px}.score-table td{border-bottom:1px solid var(--line);padding:6px 4px}.score-table td.n{text-align:right;color:var(--dim)}.ending-text{color:var(--dim);font-size:15px;line-height:1.5}.replay-hud{background:var(--panel);border:1px solid var(--line);align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.replay-hud button{font-family:var(--mono);color:var(--ink);border:1px solid var(--line);cursor:pointer;background:0 0;padding:4px 10px;font-size:13px}.replay-hud button.on{border-color:var(--accent);color:var(--accent)}.click-to-fly{background:var(--panel);border:1px solid var(--accent);font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;pointer-events:auto;cursor:pointer;padding:14px 22px;font-size:22px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@media (max-width:640px){.objective{width:calc(100vw - 32px);top:16px;left:16px}.radial{transform:scale(.7)}}@media (prefers-reduced-motion:reduce){.sub,.banner{transition:none;animation:none}}.coach{border:1px solid var(--accent);letter-spacing:.03em;white-space:nowrap;background:#051418d9;padding:10px 18px;font-size:clamp(16px,1.7vw,21px);position:absolute;top:7vh;left:50%;transform:translate(-50%);box-shadow:0 0 18px #7dfcff40}.coach .keycap,.coach2 .keycap{border-color:var(--accent);color:#fff;background:#7dfcff26;margin:0 2px;padding:1px 7px;font-size:.85em}.coach2{border:1px solid var(--warn);color:#ffd98a;white-space:nowrap;background:#281800d9;padding:6px 14px;font-size:15px;position:absolute;top:calc(7vh + 58px);left:50%;transform:translate(-50%)}.coach2.warn{border-color:var(--danger);color:#ffc4c4;background:#3c0000d9;animation:.8s infinite blink}.yoke-widget{text-align:center;width:74px;position:absolute;bottom:18px;right:18px}.yoke-widget .box{border:1px solid var(--line);background:#0000008c;background-image:linear-gradient(var(--line), var(--line)), linear-gradient(90deg, var(--line), var(--line));background-position:50%;background-repeat:no-repeat;background-size:1px 100%,100% 1px;width:74px;height:74px;position:relative}.yoke-widget i{border-radius:50%;width:12px;height:12px;margin:-6px 0 0 -6px;position:absolute}.yoke-widget .raw{background:var(--accent)}.yoke-widget .eff{border:2px solid #fff;width:16px;height:16px;margin:-8px 0 0 -8px}.yoke-widget .cap{color:var(--dim);letter-spacing:.15em;margin-top:3px;font-size:11px}.legend{text-align:right;max-width:360px;color:var(--dim);background:#00000080;padding:4px 8px;font-size:12px;line-height:1.9;position:absolute;bottom:50px;right:104px}.legend .keycap{color:var(--ink)}.toasts{bottom:130px!important}.objective .goal{font-family:var(--display);letter-spacing:.04em;text-transform:uppercase;color:#fff;margin-bottom:4px;font-size:22px;font-weight:800}.objective ul.check{margin:0 0 8px;padding:0;font-size:13px;line-height:1.55;list-style:none}.objective ul.check li.done{color:#3cff6e}.objective ul.check li.now{color:var(--accent);font-weight:700}.objective ul.check li.todo{color:var(--dim)}.objective .task{border-top:1px solid var(--line);padding-top:6px}.fight.you{background:#002814bf;border-color:#3cff6e}.fight.you .lbl{color:#b9ffcf}.fight.ap{border-color:var(--accent);background:#001e28bf}.fight.ap .lbl{color:#c9feff}.fight.reach{border-color:var(--warn);background:#281c00cc}.fight.reach .lbl{color:#ffd98a}.fight .sub2 .keycap{color:#fff}.screen.intro{background:radial-gradient(#000000b3,#000000f2)}.intro-card{width:min(640px,92vw);color:var(--ink);font-size:clamp(16px,1.6vw,20px);line-height:1.6}.intro-card p{margin:0 0 16px;animation:.7s ease-out both subIn}.intro-card p:nth-of-type(2){animation-delay:1.2s}.intro-card p:nth-of-type(3){animation-delay:2.6s}.intro-card .btn{margin-top:8px;animation:.6s ease-out 3.4s both subIn}.intro-kicker{font-family:var(--display);letter-spacing:.3em;text-transform:uppercase;color:var(--dim);margin-bottom:18px;font-size:14px;font-weight:700}.intro-punch{font-family:var(--display);color:#fff;font-size:clamp(28px,3.4vw,42px);font-weight:800}.intro-card.still p,.intro-card.still .btn{animation:none}
