<!-- SOLID CITY · part 2422 -->
      var bootEl = document.getElementById('sc-boot');
      if (!bot || !bubble || !fill || !loadEl) return;
      var quotes = [
        'Pedaling as fast as I can back here!',
        'One tower at a time… one tower at a time…',
        'Polishing the gold trim. The King likes it shiny.',
        'Waking the dodo. He does NOT hurry for anyone.',
        'Counting the rides in the South Lot. Still fourteen. Good.',
        'Rolling out the Long Road. It is… long.',
        'Feeding the koi so they supervise politely.',
        'Herding the clouds into place. They never listen.',
        'Warming up the hyper train…',
        'Sweeping the sand off the First City.',
        'Charging the Octahedron. It hums when it is ready.',
        'Come on, island. UP. UP!',
        'I am pushing the progress bar with BOTH hands!',
        'Teaching the mountains to sit still.',
        'Almost there. Probably. Keep smiling.'
      ];
      var slow = [
        'Okay. This is personal now.',
        'I tried turning the island off and on again.',
        'If anyone asks, YOU held the ladder.',
        'Requesting a bigger engine. Denied. Pedaling harder.'
      ];
      var qi = 0, pct = 4, target = 4, done = false, born = Date.now();
      function say(t) { bubble.textContent = t; }
      function setPct(p) { target = Math.max(target, Math.min(100, p)); }
      var quoteTimer = setInterval(function () {
        if (done) return;
        var pool = (Date.now() - born > 14000) ? slow : quotes;
        say(pool[qi % pool.length]); qi++;
      }, 1700);
      say(quotes[0]); qi = 1;
      var tick = setInterval(function () {
        if (bootEl && bootEl.hidden) { clearInterval(tick); clearInterval(quoteTimer); return; }
        var stage = loadEl.textContent || '';
        if (stage.indexOf('Raising') >= 0) setPct(34);
        else if (stage.indexOf('Generating') >= 0) setPct(72);
        else if (stage.indexOf('Ready') >= 0) setPct(100);
        else if (target < 22) target += 0.35;   // scripts still arriving: honest creep, capped until the first real stage
        if (pct < target) { pct = Math.min(target, pct + Math.max(0.4, (target - pct) * 0.16)); }
        fill.style.width = pct.toFixed(0) + '%';
        pctEl.textContent = pct.toFixed(0) + '%';
        if (target >= 100 && pct > 99 && !done) {
          done = true;
          clearInterval(quoteTimer);
          bot.classList.add('done');
          say('DONE! The city is yours — hit ENTER 👇');
          setTimeout(function () { bot.classList.remove('done'); bot.classList.add('resting'); }, 1700);
        }
      }, 120);
    })();
    </script>
    <a class="sc-back" href="/">← back to epistles</a>
  </div>

  <div id="sc-hud" hidden>
    <div class="sc-top">
      <div class="sc-stat"><b id="h-mode">ON FOOT</b><span id="h-where">FORUM PLAZA</span></div>
      <div class="sc-stat"><b id="h-spd">0</b><span>KM/H</span></div>
      <div class="sc-stat"><b id="h-alt">0</b><span>ALT M</span></div>
      <div class="sc-stat"><b id="h-dist">0.0</b><span>KM TO CITY</span></div>
      <a class="sc-exit" href="/" title="Leave Solid City">✕</a>
    </div>
    <canvas id="sc-radar" width="240" height="240"></canvas>
    <div class="sc-warn" id="h-warn" hidden></div>
    <div class="sc-thr" id="sc-thr" hidden><div class="sc-thr-fill" id="sc-thr-fill"></div><span>THR</span></div>
    <div class="sc-btns" id="sc-fbtns" hidden>
      <button type="button" class="sc-b" id="b-boost">BOOST</button>
      <button type="button" class="sc-b is-on" id="b-level">AUTO-LEVEL</button>
      <button type="button" class="sc-b" id="b-rtc">RETURN TO CITY</button>
      <button type="button" class="sc-b sc-gold" id="b-land" hidden>LAND</button>
    </div>
    <button type="button" id="sc-act" class="sc-act" hidden></button>
    <button type="button" id="sc-launch" class="sc-launch" hidden>LAUNCH</button>
    <div id="sc-count" class="sc-count" hidden></div>
    <div id="sc-stick" class="sc-stick"><i></i></div>
    <div id="sc-help" class="sc-help"></div>
    <div id="sc-perf" class="sc-perf" hidden></div>
  </div>

  <div id="sc-talk" class="sc-talk" hidden>
    <div class="sc-talk-h"><b>SABLE</b><span>Forum Plaza · AI guide</span><button type="button" id="t-close" aria-label="Close">✕</button></div>
    <div id="t-settings" hidden>
    <div class="sc-voice-speed"><span>VOICE</span><button type="button" id="vs-fast" aria-pressed="true">FAST</button><button type="button" id="vs-slow" aria-pressed="false">SLOW</button></div>
    <div class="sc-receive"><span>RECEIVE</span><button type="button" id="rc-text" aria-pressed="false">TEXT</button><button type="button" id="rc-audio" aria-pressed="false">AUDIO</button><button type="button" id="rc-both" aria-pressed="true">BOTH</button></div></div>
    <div class="sc-talk-log" id="t-log"></div>
    <div class="sc-talk-login" id="t-login" hidden>Talking to SABLE needs an epistles account. <a href="/login">Log in</a> or <a hr