<!-- LIVE · part 78 -->
cismOptions();
    } else {
      _solidAvatar.scale.set(scale, scale, scale);
    }
  }, 100);
}
/* The full intro sequence */
function startSolidicismIntro(){
  comicQuestion("You found the old computer. Want to see what it can do?", function(yes){
    if(!yes){
      if(typeof say === "function") say("Maybe next time.");
      return;
    }
    showLoadingScreen();
    setTimeout(function(){ solidPushAway(); }, 1500);
  });
}
/* Hook: when absorbed to /1, start the intro */
(function(){
  var _introStarted = false;
  setInterval(function(){
    if(_introStarted) return;
    if(window.location.pathname.match(/\/saga-solid\/1/)){
      if(typeof scene !== "undefined" && typeof kingPos !== "undefined"){
        _introStarted = true;
        setTimeout(startSolidicismIntro, 2000);
      }
    }
  }, 1000);
})();

/* ===== GAME PROFILE SETUP — v88, simple username + password ===== */
function showProfileSetup(callback){
  /* Check if already logged in */
  fetch("/api/game/register", {method: "POST", headers: {"Content-Type": "application/json"},
    body: JSON.stringify({username: "", password: "", confirm: ""})})
    .then(function(r){ return r.json(); })
    .then(function(d){
      if(d.ok && d.user){ if(callback) callback(d.user); return; }
      /* Not logged in — show simple form */
      var div = document.createElement("div");
      div.id = "profile-setup";
      div.style.cssText = "position:fixed;top:25%;left:10%;right:10%;z-index:310;" +
        "background:rgba(0,0,0,0.95);border:2px solid #d8a920;border-radius:12px;" +
        "padding:24px;color:#ffd700;font-family:sans-serif;text-align:center;";
      div.innerHTML =
        "<h2 style='margin:0 0 16px;'>SET UP YOUR PROFILE</h2>" +
        "<p style='font-size:14px;color:#aaa;'>Same login as epistles.xyz</p>" +
        "<input id='prof-user' type='text' placeholder='username' " +
        "style='display:block;width:80%;margin:10px auto;padding:12px;font-size:18px;" +
        "background:#111;border:1px solid #d8a920;color:#ffd700;border-radius:8px;text-align:center;' />" +
        "<input id='prof-pass' type='password' placeholder='password' " +
        "style='display:block;width:80%;margin:10px auto;padding:12px;font-size:18px;" +
        "background:#111;border:1px solid #d8a920;color:#ffd700;border-radius:8px;text-align:center;' />" +
        "<input id='prof-confirm' type='password' placeholder='confirm password' " +
        "style='display:block;width:80%;margin:10px auto;padding:12px;font-size:18px;" +
        "background:#111;border:1px solid #d8a920;color:#ffd700;border-radius:8px;text-align:center;' />" +
        "<div id='prof-error' style='color:#ff6666;font-size:14px;min-height:20px;'></div>" +
        "<button id='prof-send' style='background:#d8a920;color:#111;border:none;" +
        "padding:14px 40px;font-size:20px;border-radius:8px;cursor:pointer;margin-top:10px;'>SEND</button>";
      document.body.appendChild(div);
      document.getElementById("prof-send").addEventListener("click", function(){
        var u = document.getElementById("prof-user").value.trim();
        var p = document.getElementById("prof-pass").value;
        var c = document.getElementById("prof-confirm").value;
        fetch("/api/game/register", {method: "POST",
          headers: {"Content-Type": "application/json"},
          body: JSON.stringify({username: u, password: p, confirm: c})})
          .then(function(r){ return r.json(); })
          .then(function(d){
            if(d.ok){
              div.remove();
              if(callback) callback(d.user);
            } else {
              document.getElementById("prof-error").textContent = d.error || "Failed";
            }
          });
      });
    })
    .catch(function(){ if(callback) callback(null); });
}

/* ===== TINY WIN GAME — v88, King's order: win big, fast ===== */
function startTinyWinGame(username){
  var taps = 0;
  var div = document.createElement("div");
  div.id = "tiny-win";
  div.style.cssText = "position:fixed;top:0;left:0;right:0;bottom:0;z-index:320;" +
    "background:rgba(0,0,0,0.9);display:flex;flex-direction:column;" +
    "align-items:center;justify-content:center;color:#ffd700;" +
    "font-family:sans-serif;text-align:center;";
  div.innerHTML =
    "<h1 style='margin:0 0 10px;'>WELCOME, " + (username || "PLAYER").toUpperCase() + "</h1>" +
    "<p>Tap the octahedron 3 times — fast!</p>" +
    "<div id='tiny-octa' style='width:100px;height:100px;margin:20px;" +
    "background:radial-gradient(circle,#00ccff,#0088aa);cursor:pointer;" +
    "clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);'></div>" +
    "<div id='tiny-count' style='font-size:24px;'>0 / 3</div>";
  document.body.appendChild(div);
  var octa = document.getElementById("tiny-octa");
  /* Make it bounce */
  var bounce = 0;
  var bounceDir = 1;
  var bounceInt = setInterval(function(){
    bounce += bounceDir * 5;
    if(bounce > 20 || bounce < -20) bounceDir *= -1;
    octa.st