<!-- SOLID CITY · part 3266 -->
="off" autocapitalize="characters" spellcheck="false"></label>
  <button type="button" id="jump" class="big" disabled>JUMP IN</button>
  <div class="keys" id="keys"></div>
  <a class="back" id="load-back" href="/city/?auto&amp;at=hangar">← back to Solid City</a>
</div>

<div id="hud" hidden>
  <div class="ovl" id="h-cloud"></div><div class="ovl" id="h-heat"></div><div class="ovl" id="h-hurt"></div>
  <div id="h-markers"></div>
  <div id="h-reticle" hidden></div><div id="h-lock" hidden></div>
  <div class="top">
    <div class="row">
      <a class="ib" id="h-exit" href="/city/?auto&amp;at=hangar" aria-label="Back to Solid City">✕</a>
      <div class="pill obj"><b id="h-obj">READY</b><span>SPACE MISSION</span></div>
      <div class="pill"><b id="h-time">0:00.0</b><span>TIME</span></div>
      <button type="button" class="ib" id="h-mute" aria-label="Sound on">🔊</button>
    </div>
    <div class="row">
      <div class="pill meter" id="m-sh"><span>SHIELDS</span><div class="mb"><i id="h-shield"></i></div></div>
      <div class="pill meter" id="m-bo"><span>BOOST</span><div class="mb"><i id="h-boost"></i></div></div>
      <div class="pill kills"><b id="h-kills">0/17</b><span>ALIENS DOWN</span></div>
    </div>
  </div>
  <div id="h-mother" hidden>MOTHERSHIP<div class="mb"><i id="h-mbar"></i></div></div>
  <div id="h-banner" hidden><b id="h-bt"></b><span id="h-bs"></span></div>
  <div id="h-speedo">
    <svg viewBox="0 0 132 70" aria-hidden="true"><path d="M10 66 A56 56 0 0 1 122 66" fill="none" stroke="rgba(255,255,255,.14)" stroke-width="8" stroke-linecap="round"/><path id="h-arc" d="M10 66 A56 56 0 0 1 122 66" fill="none" stroke="url(#sg)" stroke-width="8" stroke-linecap="round" pathLength="100" stroke-dasharray="100" stroke-dashoffset="100"/><defs><linearGradient id="sg"><stop offset="0" stop-color="#e8c36a"/><stop offset=".5" stop-color="#ff7a1a"/><stop offset="1" stop-color="#ff3048"/></linearGradient></defs></svg>
    <div class="num" id="h-spd">0</div><div class="u">KM/H</div><div id="h-alt">ALT 22 m</div>
  </div>
  <div id="h-count" hidden></div>
  <div id="stick" hidden><i></i></div>
  <button type="button" class="btn" id="b-boost" hidden><span>BOOST</span></button>
  <button type="button" class="btn" id="b-fire" hidden>FIRE</button>
  <button type="button" class="btn" id="b-launch" hidden>LAUNCH</button>
  <div id="h-perf" hidden></div>
</div>

<div id="result" hidden>
  <div class="card scroll">
    <div class="k">MISSION COMPLETE</div>
    <h2>PARKED AT THE HANGAR</h2>
    <div id="r-title"></div>
    <div class="stats">
      <div><b id="r-time">0:00.0</b><span>TIME</span></div>
      <div><b id="r-kills">0</b><span>ALIENS DOWN</span></div>
      <div><b id="r-top">0</b><span>TOP SPEED</span></div>
      <div><b id="r-hits">0</b><span>HITS TAKEN</span></div>
    </div>
    <div id="r-save"></div>
    <ol class="lb" id="r-board"></ol>
    <div class="acts"><a id="r-city" href="/city/?auto&amp;at=hangar">BACK TO THE CITY</a><button type="button" id="r-again">FLY AGAIN</button></div>
  </div>
</div>

<script>
/* loader: fetch the game bundle with a real progress bar, then run it (same URL, cached). No inline game code. */
(function () {
  var V = 'ba68f06755', SIZE = 657899, SRC = '/city/space/space.min.js?v=' + V;
  var bar = document.getElementById('load-bar'), msg = document.getElementById('load-msg'), jump = document.getElementById('jump');
  var touch = ('ontouchstart' in window) || navigator.maxTouchPoints > 0;
  var from = new URLSearchParams(location.search).get('from'), at = from === 'wormhole' ? 'wormhole' : 'hangar';
  ['load-back', 'h-exit', 'r-city'].forEach(function (id) { document.getElementById(id).href = '/city/?auto&at=' + at; });
  document.getElementById('keys').textContent = touch ? 'Stick steers · hold FIRE · BOOST for 760 km/h' : 'WASD / arrows or mouse aim · Space or click = fire · Shift = boost · M = mouse aim on/off';
  var cs = document.getElementById('callsign'); try { cs.value = localStorage.getItem('space-callsign') || ''; } catch (e) {}
  window.__spaceLoad = function (p, label) { bar.style.width = Math.round(p * 100) + '%'; if (label) msg.textContent = label; if (p >= 1 && !/^Error/.test(label || '')) { msg.textContent = 'Ready for launch'; jump.disabled = false; } };
  jump.addEventListener('click', function () {
    var v = (cs.value || '').toUpperCase().replace(/[^A-Z0-9 ._-]/g, '').trim().slice(0, 16); try { localStorage.setItem('space-callsign', v); } catch (e) {}
    document.getElementById('load').hidden = true; if (window.__spaceStart) window.__spaceStart();
  });
  function run() { var s = document.createElement('script'); s.type = 'module'; s.src = SRC; s.crossOrigin = 'anonymous'; s.onerror = function () { msg.textContent = 'Could not load the game. Check your connection and reload.'; }; document.body.appendChild(s); }
  try {
    fetch(SRC, { credentials: 'same-origin' }).then(function (r) {
      if (!r.body || !r.body.