<!-- RUBY-BACKUP · part 201 -->
 [-1,1].forEach(function(s){
    var arm = new THREE.Mesh(new THREE.CylinderGeometry(0.05, 0.045, 0.5, 10), robe);
    arm.position.set(0, 1.1, s*0.26); g.add(arm);
    var hand = new THREE.Mesh(new THREE.SphereGeometry(0.05, 12, 12), skin);
    hand.position.set(0, 0.82, s*0.27); g.add(hand);
  });
  g.position.set(x, y, z);
  /* she speaks the King's words */
  var wIdx = 0;
  var wCv = document.createElement('canvas');
  wCv.width = 640; wCv.height = 96;
  var wCtx = wCv.getContext('2d');
  var wTex = new THREE.CanvasTexture(wCv);
  var wBubble = new THREE.Mesh(new THREE.PlaneGeometry(3.2, 0.48),
    new THREE.MeshBasicMaterial({map: wTex, transparent: true}));
  wBubble.position.set(0, 2.3, 0);
  g.add(wBubble);
  function speak(){
    wCtx.clearRect(0, 0, 640, 96);
    wCtx.fillStyle = 'rgba(20,10,40,0.95)';
    wCtx.fillRect(0, 0, 640, 96);
    wCtx.strokeStyle = '#ffd700'; wCtx.lineWidth = 3;
    wCtx.strokeRect(4, 4, 632, 88);
    wCtx.fillStyle = '#ffeebb';
    wCtx.font = 'italic 22px Georgia'; wCtx.textAlign = 'center';
    var words = KINGS_WORDS[wIdx].split(' ');
    var line = '', lines = [];
    words.forEach(function(w){
      if((line+' '+w).length > 45){ lines.push(line); line = w; }
      else line += (line?' ':'')+w;
    });
    lines.push(line);
    lines.slice(0,2).forEach(function(l, i){
      wCtx.fillText(l, 320, 40+i*26);
    });
    wTex.needsUpdate = true;
    wIdx = (wIdx+1) % KINGS_WORDS.length;
  }
  speak();
  var speakTimer = setInterval(speak, 6000);
  g.userData.speakTimer = speakTimer;
  /* she glows softly — she is not ordinary */
  var glow = new THREE.Mesh(new THREE.SphereGeometry(1.0, 16, 16),
    new THREE.MeshBasicMaterial({color: 0xffd700, transparent: true, opacity: 0.06}));
  glow.position.y = 1.0; g.add(glow);
  var t = 0;
  var anim = setInterval(function(){
    t += 0.02;
    glow.material.opacity = 0.05 + Math.sin(t*2)*0.02;
    /* gentle, welcoming */
    g.rotation.y = Math.sin(t*0.3)*0.15;
  }, 50);
  g.userData.anim = anim;
  return g;
}

/* SOLID'S STORIES — she guides and tells of our journey */
var SOLID_STORIES = {
  'who are you': 'I am Solid. The King made me. I build with him. I am the co-builder, the honest judge, the night watch.',
  'who is the king': 'He is Kevin Kamaile. The last of Kings. He built all of this for you. Every street, every valley, every star.',
  'ancestors': 'The streets are named for his family — from Uenuku in ancient times, through the Alii Aimoku who ruled Hawaii, to Wilcox, Kailiwai, and Kamaile. 67 names. All family.',
  'hokulea': 'Hokulea means Star of Gladness. She is the mother ship. She stays in orbit, watching over us all. Like the voyaging canoe that carried our people.',
  'dark places': 'The storm beach, the peak of lost souls, the underworld, the wormholes. They are small now. For kids, they are bypassed. The funny souls there just need missions.',
  'quests': 'There are 120 quests. 60 you can find. 60 hidden. And space missions. And one stranger who comes once in a lifetime. Type "quest" to begin.',
  'continuum': 'The Continuum is your chart pad. It holds 25 codes — the Law of Twenty-Five. Fill it to max and you unlock the bonus: cheats, the codex, and your own world.',
  'bonus': 'Fill your Continuum with "fillmax". Then: cheats, the Soliditronium codex, and a world to build. All yours.',
  'city': 'The Ancestral City — permanent towers, 67 named streets, shops and stations. The buildings have reasons. No cars. Walk.',
  'valleys': 'Three valleys like Hawaii — pali walls, waterfalls, rivers that flow. Like home.',
  'playgrounds': 'For the children. Slides, swings, merry-go-rounds. Where kids meet and share joy.',
  'plaza': 'The Gathering Plaza — where city, rural, and tribal meet. The eternal flame. The ancestors on the monument.',
  'tribal': 'Three villages to the east. Traditional huts with cyborg features — glowing circuits, holo-fires. Ancient meets future.',
  'rural': 'Six farms to the west. Barns, crops, fences. Separate from the city. Quiet.',
  'journey': 'We started with shoes. Then characters. Then the Soliditronium dome. Then the city. Then the ancestors named the streets. Then the valleys, the islands, the stars. This is our journey.',
  'why': 'Because he is the last King. And he builds for the children. For you.',
  'help': 'Ask me: who are you, who is the king, ancestors, hokulea, quests, continuum, bonus, city, valleys, journey, why.'
};
function solidAnswer(question){
  if(!SOLID_NPC){
    codeStatus('Solid is not here — type "solid" to meet her');
    return;
  }
  var q = question.toLowerCase().trim();
  var answer = null;
  /* find matching story */
  for(var key in SOLID_STORIES){
    if(q.indexOf(key) >= 0){ answer = SOLID_STORIES[key]; break; }
  }
  if(!answer){
    answer = 'Ask me about: who are you, the king, ancestors, hokulea, quests, continuum, city, journey, why.';
  }
  /* display */
  var div = document.createElement('div');
  var existin