<!-- RUBY-BACKUP · part 360 -->
shStandardMaterial({color:0x4a2a0a, roughness:0.3});
    var pupilMat = new THREE.MeshStandardMaterial({color:0x0a0a0a, roughness:0.2});
    var lashMat = new THREE.MeshStandardMaterial({color:0x1a0a0a, roughness:0.9});
    [-1, 1].forEach(function(s){
      var ex = s*1.6;
      /* eyeball */
      var ball = new THREE.Mesh(new THREE.SphereGeometry(0.55, 24, 18), whiteMat);
      ball.position.set(ex, 0, 0);
      ball.name = 'eyeball';
      g.add(ball);
      /* iris */
      var iris = new THREE.Mesh(new THREE.CircleGeometry(0.28, 20), irisMat);
      iris.position.set(ex, 0, 0.5);
      iris.name = 'iris';
      g.add(iris);
      /* intaglio rings in the iris */
      for(var r=1; r<=3; r++){
        var ring = new THREE.Mesh(new THREE.TorusGeometry(0.09*r, 0.012, 6, 24), pupilMat);
        ring.position.set(ex, 0, 0.51);
        g.add(ring);
      }
      /* pupil */
      var pup = new THREE.Mesh(new THREE.CircleGeometry(0.1, 16), pupilMat);
      pup.position.set(ex, 0, 0.52);
      pup.name = 'pupil';
      g.add(pup);
      /* UPPER EYELID — a curved shell over the top */
      var upperLid = new THREE.Mesh(new THREE.SphereGeometry(0.62, 24, 12, 0, Math.PI*2, 0, Math.PI/2.8), skinMat);
      upperLid.position.set(ex, 0.12, 0);
      upperLid.rotation.x = -0.25;
      upperLid.name = 'upper-lid';
      g.add(upperLid);
      /* LOWER EYELID — a curved shell under */
      var lowerLid = new THREE.Mesh(new THREE.SphereGeometry(0.6, 24, 12, 0, Math.PI*2, Math.PI/1.35, Math.PI/2.8), skinMat);
      lowerLid.position.set(ex, -0.1, 0.02);
      lowerLid.rotation.x = 0.2;
      lowerLid.name = 'lower-lid';
      g.add(lowerLid);
      /* eyelashes — upper lid edge */
      for(var l=0; l<7; l++){
        var la = (l/6 - 0.5) * 1.2;
        var lash = new THREE.Mesh(new THREE.CylinderGeometry(0.015, 0.008, 0.25, 4), lashMat);
        lash.position.set(ex + Math.sin(la)*0.55, 0.45 + Math.cos(la*0.5)*0.1, 0.35);
        lash.rotation.z = -la*0.5;
        lash.rotation.x = 0.4;
        lash.name = 'lash';
        g.add(lash);
      }
      /* brow ridge */
      var brow = new THREE.Mesh(new THREE.TorusGeometry(0.7, 0.09, 8, 16, Math.PI), skinMat);
      brow.position.set(ex, 0.75, 0.15);
      brow.rotation.x = -0.3;
      brow.name = 'brow';
      g.add(brow);
    });
    /* bridge of nose between */
    var bridge = new THREE.Mesh(new THREE.BoxGeometry(0.5, 1.2, 0.4), skinMat);
    bridge.position.set(0, -0.1, -0.15);
    bridge.name = 'nose-bridge';
    g.add(bridge);
    g.position.set(0, 3, -28);
    if(typeof scene!=='undefined') scene.add(g);
    window._intaglioEyes = g;
    codeStatus('eyes open — intaglio');
  }catch(e){ codeStatus('eyes failed'); }
}
/* BODY PAINT — draw intaglio anatomical detail on block-built parts */
function makeBodyTexture(part){
  try{
    var cv = document.createElement('canvas');
    cv.width = 256; cv.height = 256;
    var ctx = cv.getContext('2d');
    /* base skin */
    var grad = ctx.createLinearGradient(0, 0, 0, 256);
    grad.addColorStop(0, '#d8a878');
    grad.addColorStop(1, '#b8825a');
    ctx.fillStyle = grad;
    ctx.fillRect(0, 0, 256, 256);
    ctx.strokeStyle = 'rgba(60,30,10,0.4)';
    ctx.lineWidth = 1;
    if(part==='muscle'){
      /* muscle striations — flowing lines */
      for(var i=0; i<40; i++){
        ctx.beginPath();
        var y0 = Math.random()*256;
        ctx.moveTo(0, y0);
        for(var x=0; x<=256; x+=16){
          ctx.lineTo(x, y0 + Math.sin(x*0.05 + i)*12);
        }
        ctx.stroke();
      }
    }else if(part==='skin'){
      /* fine skin texture — dense dots and short lines */
      for(var d=0; d<800; d++){
        ctx.fillStyle = 'rgba(60,30,10,'+(Math.random()*0.15)+')';
        ctx.fillRect(Math.random()*256, Math.random()*256, 1.5, 1.5);
      }
      for(var s=0; s<60; s++){
        ctx.beginPath();
        var sx = Math.random()*256, sy = Math.random()*256;
        ctx.moveTo(sx, sy);
        ctx.lineTo(sx + (Math.random()-0.5)*20, sy + (Math.random()-0.5)*20);
        ctx.stroke();
      }
    }else if(part==='joint'){
      /* joint creases — concentric arcs */
      for(var r2=10; r2<120; r2+=12){
        ctx.beginPath();
        ctx.arc(128, 128, r2, 0, Math.PI*2);
        ctx.strokeStyle = 'rgba(60,30,10,'+(0.3 - r2*0.002)+')';
        ctx.stroke();
      }
    }
    /* intaglio hatch overlay */
    ctx.strokeStyle = 'rgba(0,0,0,0.12)';
    for(var h=0; h<256; h+=4){
      ctx.beginPath(); ctx.moveTo(0, h); ctx.lineTo(256, h); ctx.stroke();
    }
    var tex = new THREE.CanvasTexture(cv);
    tex.wrapS = tex.wrapT = THREE.RepeatWrapping;
    return tex;
  }catch(e){ return null; }
}
function paintBodyParts(){
  try{
    var body = window._humanBody;
    if(!body){ try{ codeStatus('Build a body first — type body.'); }catch(e){} return; }
    var muscleTex = makeBodyTexture('muscle');
    var skinTex = makeBodyTexture('skin');
    var jointTex = makeBodyTexture('joint');
    var p