@font-face{font-family:Fusion Pixel;src:url(/fonts/fusion-pixel-12px.woff)format("woff");font-display:block}:root{--c-metal:#2b3440;--c-metal-dark:#161b22;--c-metal-light:#4f5d6e;--c-rivet:#8796a8;--c-sonar:#5fd38a;--c-sonar-dim:#1d4a2e;--c-amber:#f2b13f;--c-white:#e6f0ff;--c-crt:#04110a;--c-space:#03040a;--c-scanline:#00000059;--s:2;--px:calc(var(--s) * 1px);--g:calc(var(--s) * 4px);--font:"Fusion Pixel", monospace;--fs:calc(var(--s) * 12px);--fs-big:calc(var(--s) * 24px)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--c-space);height:100%;color:var(--c-white);font-family:var(--font);font-size:var(--fs);-webkit-font-smoothing:none;font-smooth:never;image-rendering:pixelated;margin:0;line-height:1;overflow:hidden}button,select,input{font:inherit;color:inherit}#app{position:fixed;inset:0}.globe-canvas{width:var(--globe-w);height:var(--globe-h);image-rendering:pixelated;cursor:grab;touch-action:none;position:absolute;top:0;left:0}.globe-canvas.pointer{cursor:pointer}.world-canvas{width:100%;height:100%;position:absolute;inset:0}.window{background:var(--c-metal);border:var(--px) solid var(--c-metal-dark);box-shadow:inset var(--px) var(--px) 0 var(--c-metal-light), inset calc(var(--px) * -1) calc(var(--px) * -1) 0 var(--c-metal-dark), 0 0 0 var(--px) var(--c-rivet);padding:calc(var(--g) * 2);gap:var(--g);max-height:calc(100% - var(--g) * 8);flex-direction:column;display:flex;position:absolute;overflow:auto}.window h2{font-size:var(--fs);color:var(--c-amber);margin:0;font-weight:400}.window .row{gap:var(--g);justify-content:space-between;align-items:center;display:flex}.window .label{color:var(--c-amber)}.window .value{color:var(--c-white)}.window .note{color:var(--c-sonar)}.window .buttons{gap:var(--g);flex-wrap:wrap;display:flex}.btn{background:var(--c-metal-dark);border:var(--px) solid var(--c-rivet);padding:var(--g) calc(var(--g) * 2);cursor:pointer}.btn:hover,.btn:focus-visible{border-color:var(--c-sonar);color:var(--c-sonar);outline:none}.dialog{width:min(calc(var(--g) * 120), calc(100% - var(--g) * 4));z-index:4;top:50%;left:50%;translate:-50% -50%}.dialog select,.dialog input[type=range]{background:var(--c-metal-dark);border:var(--px) solid var(--c-rivet);accent-color:var(--c-sonar)}.dialog input[type=checkbox]{accent-color:var(--c-sonar);width:var(--fs);height:var(--fs)}.sources .entry{border-top:var(--px) solid var(--c-metal-light);padding-top:var(--g);gap:var(--px);flex-direction:column;line-height:1.2;display:flex}.briefing{left:calc(var(--g) * 4);bottom:calc(var(--g) * 4);width:min(calc(var(--g) * 100), calc(100% - var(--g) * 8))}.briefing .typed{white-space:pre-wrap;color:var(--c-sonar);min-height:calc(var(--fs) * 6);line-height:1.25}.panel{right:calc(var(--g) * 2);top:calc(var(--g) * 2);gap:var(--g);z-index:3;flex-direction:column;display:flex;position:absolute}.panel .row{gap:var(--g);display:flex}.fly-speed{align-items:center;gap:calc(var(--g) * 2);padding:var(--g);background:var(--c-metal);border:var(--px) solid var(--c-metal-dark);box-shadow:inset var(--px) var(--px) 0 var(--c-metal-light), 0 0 0 var(--px) var(--c-rivet);display:flex}.fly-speed .value{color:var(--c-sonar);min-width:calc(var(--fs) * 5);text-align:right}.fly-speed input[type=range]{appearance:none;height:calc(var(--g) * 2);background:var(--c-metal-dark);border:var(--px) solid var(--c-rivet);cursor:pointer;flex:1;margin:0}.fly-speed input[type=range]:focus-visible{outline:var(--px) solid var(--c-sonar)}.fly-speed input[type=range]::-webkit-slider-thumb{appearance:none;width:calc(var(--g) * 2);height:calc(var(--g) * 4);background:var(--c-sonar);border:var(--px) solid var(--c-metal-dark);border-radius:0}.fly-speed input[type=range]::-moz-range-thumb{width:calc(var(--g) * 2);height:calc(var(--g) * 4);background:var(--c-sonar);border:var(--px) solid var(--c-metal-dark);border-radius:0}.toggle{width:calc(var(--g) * 8);height:calc(var(--g) * 8);background:var(--c-metal);border:var(--px) solid var(--c-metal-dark);box-shadow:inset var(--px) var(--px) 0 var(--c-metal-light), 0 0 0 var(--px) var(--c-rivet);cursor:pointer;color:var(--c-white);justify-content:center;align-items:center;padding:0;display:flex;position:relative}.toggle:hover,.toggle:focus-visible{outline:var(--px) solid var(--c-sonar)}.toggle .lamp{top:var(--px);right:var(--px);width:var(--g);height:var(--g);background:var(--c-sonar-dim);border:var(--px) solid var(--c-metal-dark);position:absolute}.toggle[aria-pressed=true] .lamp{background:var(--c-sonar)}.loading{background:var(--c-space);justify-content:center;align-items:center;gap:calc(var(--g) * 4);z-index:2;display:flex;position:absolute;inset:0}.loading .title{color:var(--c-amber)}.loading .gauge{gap:var(--px);padding:var(--px);border:var(--px) solid var(--c-rivet);background:var(--c-metal-dark);flex-direction:column;display:flex}.loading .seg{width:calc(var(--g) * 6);height:var(--g);background:var(--c-sonar-dim)}.loading .seg.lit{background:var(--c-sonar)}.loading .error{color:var(--c-amber)}.hud{align-items:center;gap:calc(var(--g) * 2);padding:calc(var(--g) * 2) calc(var(--g) * 4);background:var(--c-metal);border-top:var(--px) solid var(--c-metal-light);box-shadow:inset 0 var(--px) 0 var(--c-rivet);z-index:1;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid;position:absolute;bottom:0;left:0;right:0}.hud .left,.hud .right{gap:var(--g) calc(var(--g) * 4);flex-wrap:wrap;align-items:flex-end;display:flex}.hud .right{text-align:right;justify-content:flex-end}.hud .cell{gap:var(--px);flex-direction:column;display:flex}.hud .label{color:var(--c-amber)}.hud .value{color:var(--c-white)}.hud .big{font-size:var(--fs-big)}.hud .face{width:calc(var(--g) * 14);height:calc(var(--g) * 16);background:var(--c-metal-dark);border:var(--px) solid var(--c-rivet);justify-content:center;align-items:center;display:flex}.minimap{width:calc(var(--g) * 16);height:calc(var(--g) * 16);background:var(--c-metal-dark);border:var(--px) solid var(--c-rivet)}.minimap canvas{width:100%;height:100%;image-rendering:pixelated;cursor:crosshair;display:block}.minimap canvas.over-spawn{cursor:pointer}.touch{--s:1;--px:1px;--g:clamp(3px, 1.4dvh, 6px);--fs:clamp(10px, 4dvh, 16px);--fs-big:var(--fs);--hud-h:clamp(26px, 11dvh, 44px);--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--touch-btn:max(56px, 18dvh);height:100dvh;font-size:var(--fs)}.touch-controls{inset:var(--safe-t) var(--safe-r) calc(var(--hud-h) + var(--safe-b)) var(--safe-l);z-index:2;pointer-events:none;position:absolute}.touch-controls .look{pointer-events:auto;touch-action:none;position:absolute;inset:0 0 0 40%}.touch-controls .stick{border:2px solid var(--c-rivet);pointer-events:auto;touch-action:none;background:#2b34408c;border-radius:50%;width:38dvh;height:38dvh;position:absolute;bottom:12px;left:16px}.touch-controls .knob{--kx:0px;--ky:0px;width:40%;height:40%;translate:calc(-50% + var(--kx)) calc(-50% + var(--ky));background:var(--c-sonar);border:2px solid var(--c-metal-dark);opacity:.8;position:absolute;top:50%;left:50%}.touch-controls .tbuttons{grid-template-columns:repeat(2, var(--touch-btn));pointer-events:auto;direction:rtl;gap:8px;display:grid;position:absolute;bottom:12px;right:16px}.touch-controls .tbtn{width:var(--touch-btn);height:var(--touch-btn);font:inherit;color:var(--c-white);border:2px solid var(--c-rivet);touch-action:none;direction:ltr;background:#2b3440b3;padding:0;font-size:clamp(9px,3.6dvh,14px)}.touch-controls .tbtn[aria-pressed=true]{border-color:var(--c-sonar);color:var(--c-sonar)}.touch .hud{height:calc(var(--hud-h) + var(--safe-b));padding:0 calc(8px + var(--safe-r)) var(--safe-b) calc(8px + var(--safe-l));border-top-width:1px;gap:8px}.touch .hud .left{flex-flow:row;align-items:center;gap:12px}.touch .hud .cell{white-space:nowrap;flex-direction:row;align-items:baseline;gap:4px}.touch .hud .cell.altitude,.touch .hud .cell.mode,.touch .hud .cell.coords,.touch .hud .cell.nearest,.touch .hud .cell.resolution,.touch .hud .cell.trip{display:none}.touch .hud .face{width:var(--hud-h);height:var(--hud-h);border-width:1px}.touch .hud .face img{zoom:1;width:auto;height:100%}.touch .minimap{top:calc(var(--safe-t) + 8px);left:calc(var(--safe-l) + 8px);width:22dvh;height:22dvh;position:fixed}.panel .menu,.panel .toggle .name,.panel [data-action=fullscreen]{display:none}.touch .panel{top:calc(var(--safe-t) + 8px);right:calc(var(--safe-r) + 8px);align-items:flex-end;gap:8px}.touch .panel .menu,.touch .panel .toggle{width:var(--touch-btn);height:var(--touch-btn)}.touch .panel .menu{font-size:calc(var(--fs) * 2);display:flex}.touch .panel .row{display:none}.touch .panel.open .row{max-height:calc(100dvh - var(--touch-btn) - var(--hud-h) - var(--safe-t) - var(--safe-b) - 24px);grid-template-columns:repeat(2,auto);gap:8px;display:grid;overflow-y:auto}.touch .panel.open .row .toggle{width:auto;min-width:calc(var(--touch-btn) * 2.5);justify-content:flex-start;gap:8px;padding:0 12px}.touch .panel.open .row .toggle .name{display:inline}.touch .panel [data-action=fullscreen]{display:flex}.touch .panel:has([data-action=flight][aria-pressed=false]) .fly-speed{display:none}.touch .fly-speed{width:min(45vw,260px);padding:4px 8px}.touch .fly-speed .value{min-width:0}.touch .window{inset:var(--safe-t) var(--safe-r) var(--safe-b) var(--safe-l);z-index:20;width:auto;max-height:none;position:fixed;overflow-y:auto;translate:none}.touch .briefing .typed{min-height:0}.touch .hint{display:none}.touch .btn{min-width:56px;min-height:56px}.rotate{display:none}@media (orientation:portrait){.touch .rotate{z-index:10;padding:calc(var(--g) * 4);text-align:center;background:var(--c-space);color:var(--c-amber);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}}.hud .face img{zoom:calc(var(--s) * 2);image-rendering:pixelated}.hint{left:50%;bottom:calc(var(--g) * 22);color:var(--c-amber);background:var(--c-metal-dark);padding:var(--g);pointer-events:none;z-index:1;position:absolute;translate:-50%}.tooltip{translate:var(--tip-x) var(--tip-y);max-width:calc(var(--g) * 80);padding:calc(var(--g) * 2);background:repeating-linear-gradient(to bottom, transparent 0, transparent var(--px), var(--c-scanline) var(--px), var(--c-scanline) calc(var(--px) * 2)), var(--c-crt);border:var(--px) solid var(--c-sonar);color:var(--c-sonar);pointer-events:none;z-index:1;gap:var(--px);flex-direction:column;line-height:1.25;display:flex;position:absolute;top:0;left:0}.tooltip .estimate{color:var(--c-amber)}.marker{translate:calc(var(--mx) - var(--g) * 1.5) calc(var(--my) - var(--g) * 1.5);width:calc(var(--g) * 3);height:calc(var(--g) * 3);cursor:pointer;background:0 0;border:0;padding:0;position:absolute;top:0;left:0}.marker:focus-visible{outline:var(--px) solid var(--c-sonar)}.loading .side{gap:calc(var(--g) * 2);flex-direction:column;display:flex}.loading .buttons{gap:var(--g);display:flex}
