<!-- SAGA2 · part 53 -->
.sin(nbn)*nr*0.6, 5.6]);
      }
      L(nrp, iC);
    }
    // CHEEKS — diagonal hatching (24 lines each side)
    for(var ch=0;ch<24;ch++){ var ct=ch/24;
      L([[-1.5-ct*2.5, 1.5-ct*2.0, 4.8-ct*0.8],[-1.2-ct*2.5, 1.0-ct*2.0, 4.7-ct*0.8]], ch%3==0?iG:iD);
      L([[1.5+ct*2.5, 1.5-ct*2.0, 4.8-ct*0.8],[1.2+ct*2.5, 1.0-ct*2.0, 4.7-ct*0.8]], ch%3==0?iG:iD);
    }
    // MOUTH — 12 lip lines
    for(var mp=0;mp<12;mp++){ var my=-2.4-mp*0.12, mw=1.6-mp*0.06;
      var mlp=[];
      for(var mx=-mw;mx<=mw;mx+=0.2){
        var mz=5.1+Math.abs(mx)*0.1+(mp*0.03);
        mlp.push([mx, my+Math.sin((mx/mw)*Math.PI)*0.15, mz]);
      }
      L(mlp, mp%3==0?iG:(mp%2?iC:iD));
    }
    // JAW — 18 contour lines
    for(var jw2=0;jw2<18;jw2++){ var jt=jw2/18;
      var jx1=-4.5+jt*1.0, jy1=1.0-jt*5.5, jz1=3.5+jt*1.5;
      var jx2=-jx1;
      L([[jx1,jy1,jz1],[jx1*0.7,jy1-0.5,jz1+0.2],[0,jy1-0.8,jz1+0.3]], jw2%3==0?iG:iD);
      L([[0,jy1-0.8,jz1+0.3],[jx2*0.7,jy1-0.5,jz1+0.2],[jx2,jy1,jz1]], jw2%3==0?iG:iD);
    }
    // NECK — 12 rings
    for(var nk2=0;nk2<12;nk2++){ var ny=-5-nk2*0.8, nr2=2.2-nk2*0.05, npp=[];
      for(var na2=0;na2<=24;na2++){ var nan2=(na2/24)*Math.PI*2;
        npp.push([Math.cos(nan2)*nr2, ny, Math.sin(nan2)*nr2*0.9]);
      }
      L(npp, nk2%3==0?iG:(nk2%2?iC:iD));
    }

    // HUMAN MARKERS — 35-year-old (King: make it human)
    // Forehead lines (subtle, 4)
    for(var fl=0;fl<4;fl++){ var fly=5.5-fl*0.5, flp=[];
      for(var fx2=-3;fx2<=3;fx2+=0.3){
        flp.push([fx2, fly+Math.sin(fx2*1.5)*0.08, 4.9-fl*0.05]);
      }
      L(flp, iD);
    }
    // Nasolabial folds (nose to mouth corners)
    L([[-1.2,-0.8,5.8],[-1.5,-1.8,5.5],[-1.7,-2.6,5.2]], iD); // left
    L([[1.3,-0.8,5.8],[1.6,-1.8,5.5],[1.8,-2.6,5.2]], iD); // right (asymmetric)
    // Mouth — asymmetric (left corner higher)
    // (mouth already built, add asymmetry overlay)
    L([[-1.6,-2.35,5.15],[-0.8,-2.45,5.2],[0,-2.4,5.22]], iG); // left higher
    L([[0,-2.4,5.22],[0.8,-2.55,5.2],[1.6,-2.5,5.15]], iG); // right lower
    // Crow's feet (tiny, at eye outer corners)
    L([[-3.2,2.1,4.5],[-3.5,2.0,4.4],[-3.7,1.9,4.3]], iD);
    L([[3.3,2.05,4.5],[3.6,1.95,4.4],[3.8,1.85,4.3]], iD);
    // Chin crease
    L([[-0.8,-4.2,5.2],[0,-4.35,5.25],[0.8,-4.2,5.2]], iD);


    // CENTRAL PROFILE — nose line (King: bring side lines to center on nose)
    L([[0,7,4.2],[0,5,5.0],[0,3.5,5.8]], iG); // forehead to brow
    L([[0,3.5,5.8],[0,2,6.3],[0,0.5,6.9]], iG); // nose bridge
    L([[0,0.5,6.9],[0,-0.8,7.2],[0,-1.5,6.8]], iG); // nose tip (sharp point)
    L([[0,-1.5,6.8],[0,-2.2,6.7],[0,-2.8,6.8]], iC); // to upper lip (protruding)
    L([[0,-2.8,6.5],[0,-3.5,6.2],[0,-4.2,6.3]], iC); // lower lip to chin (sharp)


    // 3D HUMAN — ear, dense profile, wrapped cheeks, protruding lips
    // EAR (intaglio, both sides) — 5 concentric C-curves at temple
    for(var er2=0;er2<5;er2++){ var erd2=0.8-er2*0.14, eep=[];
      for(var ean2=-1.2;ean2<=1.2;ean2+=0.15){
        eep.push([5.2+Math.cos(ean2)*erd2*0.4, 0.5+Math.sin(ean2)*erd2, 1.5+erd2*0.3]);
      }
      L(eep, er2%2?iG:iD);
      var eep2=[];
      for(var ean3=-1.2;ean3<=1.2;ean3+=0.15){
        eep2.push([-5.2-Math.cos(ean3)*erd2*0.4, 0.5+Math.sin(ean3)*erd2, 1.5+erd2*0.3]);
      }
      L(eep2, er2%2?iG:iD);
    }
    // PROFILE DENSITY — cheek (3), temple (2), jaw (3), both sides
    for(var pd=0;pd<3;pd++){ var pdy=-1-pd*0.8;
      L([[4.8,pdy,4.5],[5.1,pdy-0.3,3.5],[5.2,pdy-0.5,2.5]], iC); // right cheek
      L([[-4.8,pdy,4.5],[-5.1,pdy-0.3,3.5],[-5.2,pdy-0.5,2.5]], iC); // left cheek
    }
    for(var pt=0;pt<2;pt++){ var pty=3+pt*1.2;
      L([[4.9,pty,3.8],[5.2,pty,2.8],[5.3,pty,1.8]], iD); // right temple
      L([[-4.9,pty,3.8],[-5.2,pty,2.8],[-5.3,pty,1.8]], iD); // left temple
    }
    for(var pj=0;pj<3;pj++){ var pjy=-3.5-pj*0.5;
      L([[4.7,pjy,5.0],[5.0,pjy-0.2,4.0],[5.1,pjy-0.4,3.0],[5.2,pjy-0.8,1.0],[5.1,pjy-1.2,-1.0],[4.0,pjy-1.5,0.5]], iG); // right folds back then INWARD
      L([[-4.7,pjy,5.0],[-5.0,pjy-0.2,4.0],[-5.1,pjy-0.4,3.0],[-5.2,pjy-0.8,1.0],[-5.1,pjy-1.2,-1.0],[-4.0,pjy-1.5,0.5]], iG); // left folds back then INWARD
    }
    // LIPS PROTRUSION — push forward in central profile (z+0.3)


    // PRACTICE HEADS — removed (ball heads, rebuilding)
    // PRACTICE HEADS — proper human form (not balls), 10 numbered
    var practiceHeads = new THREE.Group();
    function makeNumber2(n, x, y, z){
      var cv = document.createElement('canvas'); cv.width=128; cv.height=128;
      var c2 = cv.getContext('2d');
      c2.fillStyle='#000'; c2.fillRect(0,0,128,128);
      c2.fillStyle='#0ff'; c2.font='bold 80px Arial';
      c2.textAlign='center'; c2.textBaseline='middle';
      c2.fillText(n.toString(), 64, 64);
      var tex = new THREE.CanvasTexture(cv);
      var spm = new THREE.SpriteMaterial({map:tex, transparent:true});
      var spo = new THREE.Sprite(spm); spo.position.set(x,y,z); spo.scale.set(4,4,1);
      return 