<!-- RUBY-BACKUP · part 49 -->
room" autocomplete="off" readonly>
    <button id="chatsend" aria-label="Send">&#9650;</button>
  </div>
  <div id="kb"></div>
</div>

<!-- PANELS -->
<div id="shapepanel" class="optpanel" aria-label="Choose shape"></div>
<div id="renderpanel" class="optpanel" aria-label="Render options"></div>
<div id="gorow" class="optpanel" aria-label="Go to"></div>

<!-- BANNER -->
<div id="solidbanner"></div>
<div id="rubicount"></div>
<div id="boot">WAKING THE RUBY</div>

<script src="/ruby2/three.min.js?v=1"></script>
<script src="/ruby2/GLTFLoader.js?v=1"></script>
<script src="/ruby2/master-mechanics.js"></script>
<script src="/ruby2/ruby.js?v=976"></script>
<script src="/ruby2/rope-deform.js?v=1"></script>
<script src="/ruby2/pulley-lab.js?v=1"></script>
<script src="/ruby2/rigging.js?v=7"></script>
<script src="/ruby2/grand-rigging.js?v=2"></script>
<script src="/ruby2/touch-nodes.js?v=1"></script>
<script src="/ruby2/solidify-nodes.js?v=1"></script>
<script src="/ruby2/autoload.js?v=1"></script>
<script src="/ruby2/snapshots.js?v=3"></script>
<script src="/ruby2/phoenix.js?v=3"></script>
<script src="/ruby2/code-pyramid.js?v=3"></script>
<script src="/ruby2/spider.js?v=1"></script>
<script src="/ruby2/machine-seed.js?v=3"></script>
<script src="/ruby2/salvage-block.js?v=3"></script>
<script src="/ruby2/code-builder.js?v=1"></script>
<script src="/ruby2/provolta-chamber.js?v=1"></script>
<script src=/ruby2/hook-manager.js?v=2></script>
<script src=/ruby2/ruby-buttons.js?v=102></script>
<style>
/* KING ORDER 2026-10-03: hide the messy old buttons — CORE panel rules */
/* Old buttons removed from code — nothing to hide */
</style>
<script>
/* Remove any messy buttons that slipped through */
setTimeout(function(){
  ['duckbtn','speedshiftbtn','blockpicker','blockpicker-x'].forEach(function(id){
    var el=document.getElementById(id); if(el) el.style.display='none';
  });
},1000);
</script>
</body>
</html>


===== FILE: public/ruby-backup/index.html.backup-v810 =====
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Ruby</title>
<style>
  html,body{margin:0;padding:0;height:100%;overflow:hidden;background:#0b0906;}
  #view{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;}
  #vign{position:fixed;inset:0;pointer-events:none;
    background:radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,0.55) 100%);}
  #boot{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
    background:#0b0906;color:#ffd700;font:15px/1.6 Georgia,serif;letter-spacing:3px;z-index:10;
    padding:0 24px;text-align:center;}
  /* the one button */
  #refresh{position:fixed;right:14px;bottom:14px;width:46px;height:46px;border-radius:50%;
    background:rgba(20,14,6,0.72);border:1px solid #d8a920;color:#ffd700;font-size:22px;line-height:1;
    z-index:5;cursor:pointer;-webkit-tap-highlight-color:transparent;padding:0;}
  #refresh:active{background:#d8a920;color:#111;}
  #refresh{transition:bottom .25s;}
  /* the two mode buttons: create and delete */
  .modebtn{position:fixed;right:14px;width:46px;height:46px;border-radius:50%;
    background:rgba(20,14,6,0.55);border:1px solid #8a6a1c;color:#8a6a1c;font-size:24px;line-height:1;
    z-index:5;cursor:pointer;-webkit-tap-highlight-color:transparent;padding:0;}
  .modebtn.on{background:#d8a920;border-color:#d8a920;color:#111;}
  #mode-create{bottom:72px;}
  #mode-delete{bottom:130px;}
  /* the shape button + its icon panel */
  #shape-btn{bottom:188px;}
  /* the render button + its options panel */
  #render-btn{bottom:246px;}
  /* walk: a body, not a camera */
  #walk-btn{bottom:304px;}
  #walk-btn svg{width:24px;height:24px;display:block;}
  #joy{position:fixed;left:18px;bottom:86px;width:80px;height:80px;border-radius:50%;
    border:1px solid #8a6a1c;background:rgba(20,14,6,0.4);z-index:5;display:none;touch-action:none;}
  #joyknob{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;
    border-radius:50%;background:rgba(216,169,32,0.75);}
  #jumpbtn{position:fixed;left:145px;bottom:115px;width:56px;height:56px;border-radius:50%;
    background:rgba(20,14,6,0.55);border:1px solid #8a6a1c;color:#ffd700;font-size:20px;line-height:1;
    z-index:5;display:none;cursor:pointer;-webkit-tap-highlight-color:transparent;padding:0;}
  #flybtn{position:fixed;left:60px;bottom:215px;min-width:56px;height:40px;border-radius:20px;
    background:rgba(20,14,6,0.55);border:1px solid #8a6a1c;color:#8a6a1c;
    font:600 13px/40px Georgia,serif;letter-spacing:2px;z-index:5;display:none;cursor:pointer;
    -webkit-tap-highlight-color:transparent;padding:0 14px;}
  #flybtn.on{background:#d8a920;border-color:#d8a920;color:#111;}
  /* room chat */
  #chatbtn{position:fixed;right:14px;top:14px;width:36px;height:36px;border-radius:50%;
    background:rgba(20,14,6,0.72);b