<!-- RUBY-BACKUP · part 241 -->
 THREE.Mesh(new THREE.CylinderGeometry(0.19, 0.19, 0.08, 16), gold);
  band.position.y = 1.58;
  group.add(band);
  for(var i=0; i<5; i++){
    var spike = new THREE.Mesh(new THREE.ConeGeometry(0.04, 0.1, 8), gold);
    var ang = (i/5)*Math.PI*2;
    spike.position.set(Math.cos(ang)*0.16, 1.66, Math.sin(ang)*0.16);
    group.add(spike);
  }
  /* eyes — bright, curious (childlike) */
  var eyeMat = new THREE.MeshStandardMaterial({color: 0x000000, roughness: 0.2});
  [-1,1].forEach(function(s){
    var eye = new THREE.Mesh(new THREE.SphereGeometry(0.03, 10, 10), eyeMat);
    eye.position.set(s*0.07, 1.48, 0.15);
    group.add(eye);
  });
  /* smile — gentle, childlike */
  var smile = new THREE.Mesh(new THREE.TorusGeometry(0.06, 0.015, 8, 16, Math.PI), eyeMat);
  smile.position.set(0, 1.4, 0.15);
  smile.rotation.z = Math.PI;
  group.add(smile);
  /* arms — at sides, regal */
  [-1,1].forEach(function(s){
    var arm = new THREE.Mesh(new THREE.CylinderGeometry(0.06, 0.06, 0.5, 10), royal);
    arm.position.set(s*0.32, 0.9, 0);
    group.add(arm);
  });
  return group;
}

/* UNIMPRESSED — the persona of "I am not impressed" */
var UI_MESH = null, UI_ANIM = null;
function buildUnimpressed(){
  if(typeof THREE==='undefined') return null;
  var group = new THREE.Group();
  var gray = new THREE.MeshStandardMaterial({color: 0x888888, roughness: 0.8});
  var dark = new THREE.MeshStandardMaterial({color: 0x333333, roughness: 0.9});
  /* body — slouched */
  var body = new THREE.Mesh(new THREE.CylinderGeometry(0.25, 0.3, 0.9, 12), gray);
  body.position.y = 0.65;
  body.rotation.x = 0.1; /* slight slouch */
  group.add(body);
  /* head — tilted, bored */
  var head = new THREE.Mesh(new THREE.SphereGeometry(0.2, 18, 18), gray);
  head.position.set(0.05, 1.3, 0);
  head.rotation.z = 0.15; /* head tilt of disdain */
  group.add(head);
  /* half-lidded eyes — the look of "really?" */
  [-1,1].forEach(function(s){
    var eye = new THREE.Mesh(new THREE.SphereGeometry(0.035, 10, 10), dark);
    eye.position.set(s*0.07+0.05, 1.32, 0.16);
    eye.scale.y = 0.5; /* half-closed */
    group.add(eye);
    /* heavy lid */
    var lid = new THREE.Mesh(new THREE.BoxGeometry(0.08, 0.03, 0.02), gray);
    lid.position.set(s*0.07+0.05, 1.36, 0.17);
    group.add(lid);
  });
  /* flat mouth — unimpressed line */
  var mouth = new THREE.Mesh(new THREE.BoxGeometry(0.12, 0.015, 0.01), dark);
  mouth.position.set(0.05, 1.22, 0.18);
  group.add(mouth);
  /* arms crossed */
  var armMat = gray;
  var armL = new THREE.Mesh(new THREE.CylinderGeometry(0.06, 0.06, 0.45, 8), armMat);
  armL.position.set(-0.05, 0.85, 0.2);
  armL.rotation.z = 1.2; armL.rotation.x = 0.3;
  group.add(armL);
  var armR = new THREE.Mesh(new THREE.CylinderGeometry(0.06, 0.06, 0.45, 8), armMat);
  armR.position.set(0.15, 0.85, 0.2);
  armR.rotation.z = -1.2; armR.rotation.x = 0.3;
  group.add(armR);
  return group;
}

/* SMUGBUG — smug funny look, fearful when confronted */
var SB_MESH = null, SB_ANIM = null, SB_SCARED = false;
function buildSmugbug(){
  if(typeof THREE==='undefined') return null;
  var group = new THREE.Group();
  var skin = new THREE.MeshStandardMaterial({color: 0xffccaa, roughness: 0.5});
  var dark = new THREE.MeshStandardMaterial({color: 0x222222, roughness: 0.8});
  /* body */
  var body = new THREE.Mesh(new THREE.CylinderGeometry(0.28, 0.32, 0.9, 12), skin);
  body.position.y = 0.65;
  group.add(body);
  /* head */
  var head = new THREE.Mesh(new THREE.SphereGeometry(0.22, 18, 18), skin);
  head.position.y = 1.35;
  group.add(head);
  /* SMUG: smirk + raised eyebrow */
  var smirk = new THREE.Mesh(new THREE.TorusGeometry(0.07, 0.015, 8, 16, Math.PI*0.7), dark);
  smirk.position.set(0.03, 1.28, 0.18);
  smirk.rotation.z = Math.PI*1.1;
  smirk.name = 'smugmouth';
  group.add(smirk);
  var browL = new THREE.Mesh(new THREE.BoxGeometry(0.08, 0.02, 0.01), dark);
  browL.position.set(-0.08, 1.45, 0.19);
  browL.rotation.z = 0.3; /* raised */
  group.add(browL);
  var browR = new THREE.Mesh(new THREE.BoxGeometry(0.08, 0.02, 0.01), dark);
  browR.position.set(0.08, 1.43, 0.19);
  group.add(browR);
  /* eyes — confident, sideways glance */
  [-1,1].forEach(function(s){
    var eye = new THREE.Mesh(new THREE.SphereGeometry(0.035, 10, 10), dark);
    eye.position.set(s*0.08, 1.38, 0.18);
    eye.name = 'eye'+s;
    group.add(eye);
  });
  /* FEARFUL parts (hidden by default, shown when scared) */
  var fearEyes = new THREE.Group();
  [-1,1].forEach(function(s){
    var weye = new THREE.Mesh(new THREE.SphereGeometry(0.06, 10, 10),
      new THREE.MeshStandardMaterial({color: 0xffffff}));
    weye.position.set(s*0.08, 1.38, 0.18);
    var pupil = new THREE.Mesh(new THREE.SphereGeometry(0.02, 8, 8), dark);
    pupil.position.set(s*0.08, 1.38, 0.23);
    fearEyes.add(weye); fearEyes.add(pupil);
  });
  var oMouth = new THREE.Mesh(new THREE.TorusGeometry(0.05, 0.02, 8, 16), dark);
  oMouth.position.set(0, 1.26, 0.18);
  fearEyes.