<!-- SOLID CITY · part 2076 -->
-14); bookShelf(0,-19.5,8);
  box(4,0.15,2,woodDark,0,17.1,-11); // credenza
  // N3 (14,-14): studio — drafting table + plan chest
  (function(){
    var dt=box(3.4,0.15,2,woodDark,14,17.6,-14); dt.rotation.z=0.18; solid(14,-14,3.4,2,16,17.8);
    box(0.15,1.6,2,woodDark,12.8,16.8,-14); box(0.15,1.1,2,woodDark,15.2,16.55,-14);
    box(2.6,1.4,1.6,titanium,16.5,16.7,-17); solid(16.5,-17,2.6,1.6,16,17.6); // plan chest
    for(var d2=0;d2<4;d2++) box(2.4,0.08,1.4,silverLight,16.5,17.15+d2*0.3,-17);
  })();
  // S1 (-14,14): lounge — sofas + coffee table
  (function(){
    [[-16,14],[-12,14]].forEach(function(sp){
      box(3.2,0.9,1.3,sofaM,sp[0],16.45,sp[1]); solid(sp[0],sp[1],3.2,1.3,16,17.4);
      box(3.2,1.2,0.35,sofaM,sp[0],17.1,sp[1]+0.65);
    });
    box(2.4,0.5,1.2,woodDark,-14,16.25,14); solid(-14,14,2.4,1.2,16,16.6);
  })();
  // S2 (0,14): workstations — 3 desks in a row
  [-3.5,0,3.5].forEach(function(dx){ officeDesk(dx,14); });
  // S3 (14,14): library — shelves on two walls + reading table
  bookShelf(11,19.5,6); bookShelf(18.5,14,0.8+5);
  (function(){
    box(3,0.15,1.8,woodDark,14,17.1,14); solid(14,14,3,1.8,16,17.3);
    box(0.15,1.1,1.8,woodDark,12.6,16.55,14); box(0.15,1.1,1.8,woodDark,15.4,16.55,14);
    box(0.9,0.5,0.9,titaniumDeep,12.5,16.25,15.8); box(0.9,0.5,0.9,titaniumDeep,15.5,16.25,15.8);
  })();
  // ceiling light panels per office zone
  officeX.forEach(function(ox){
    [-14,14].forEach(function(oz){
      box(3,0.18,2,warmLight,ox,26.35,oz);
      box(3.4,0.1,2.4,titaniumDeep,ox,26.45,oz);
    });
  });
  var f2p=quietMarker(T,'FLOOR 2'); f2p.position.set(-18,18,0); f2p.rotation.y=Math.PI/2; root.add(f2p);
  standFloors.push({x0:-22,x1:22,z0:-22,z1:22,y:16});

  /* ============ ROOF: SKY TERRACE (28) — a destination ============ */
  var RW=52; // enlarged deck: proper 6m terrace ring around the shaft
  box(RW,1,RW,titanium,0,27.5,0); // slab (deck at 28)
  // railing: posts + top rail + gold cap + light strip
  var HR=25.5;
  [[0,-HR,RW,1],[0,HR,RW,1],[-HR,0,1,RW],[HR,0,1,RW]].forEach(function(r){
    for(var rp=-24;rp<=24;rp+=6){
      var px=r[2]===1?r[0]:rp, pz=r[2]===1?rp:r[1];
      box(0.25,1.3,0.25,silver,px,28.65,pz);
    }
    box(r[2],0.18,r[3],titanium,r[0],29.35,r[1]); // top rail
    box(r[2],0.1,r[3],goldTrim,r[0],29.48,r[1]);  // gold cap
    box(r[2],0.12,r[3],warmLight,r[0],28.75,r[1]); // light strip
    solid(r[0],r[1],r[2],r[3],28,29.6);
  });
  // pavilion: 4 slim columns + floating roof + under-light (NE corner)
  [[13.5,13.5],[20.5,13.5],[13.5,20.5],[20.5,20.5]].forEach(function(pt){
    var pc=new T.Mesh(new T.CylinderGeometry(0.3,0.35,4.2,10),silver);
    pc.position.set(pt[0],30.1,pt[1]); root.add(pc); solid(pt[0],pt[1],0.8,0.8,28,32.5);
  });
  box(9.5,0.5,9.5,titanium,17,32.4,17);
  box(9.5,0.12,9.5,goldTrim,17,32.1,17);
  box(8,0.15,8,warmLight,17,32.1,17);
  box(3,0.9,1.2,sofaM,17,28.45,17); solid(17,17,3,1.2,28,29.4); // pavilion bench
  // benches along south edge, facing the view
  [-12,-4,4,12].forEach(function(bx){
    box(3.4,0.5,1.2,woodDark,bx,28.25,22.5); solid(bx,22.5,3.4,1.2,28,28.8);
    box(3.4,0.9,0.25,woodDark,bx,28.9,23.0);
  });
  // corner planters with silver rims
  [[-22,-22],[22,-22],[-22,22]].forEach(function(pt){
    box(2.8,1.3,2.8,silver,pt[0],28.65,pt[1]); solid(pt[0],pt[1],2.8,2.8,28,29.9);
    box(2.4,0.3,2.4,leafM,pt[0],29.4,pt[1]);
    var lf=new T.Mesh(new T.SphereGeometry(1.4,8,6),leafM);
    lf.position.set(pt[0],30.6,pt[1]); root.add(lf);
  });
  standFloors.push({x0:-26,x1:26,z0:-26,z1:26,y:28});

  /* ============ TOWER SHAFT (28-95): one sculpted form ============ */
  // lower: 40 (28-55), mid: 32 (55-78), upper: 26 (78-95)
  box(40,27,40,glass,0,41.5,0); solid(0,0,40,40,28,55);
  box(41,1.2,41,titaniumDeep,0,55.2,0);      // coping above gold
  box(44,1.5,44,goldTrim,0,54.2,0);          // setback fascia
  box(32,23,32,glass,0,66.5,0); solid(0,0,32,32,55,78);
  box(33,1.2,33,titaniumDeep,0,78.2,0);
  box(36,1.5,36,goldTrim,0,77.2,0);
  box(26,17,26,glass,0,86.5,0); solid(0,0,26,26,78,95);
  // corner pilasters: brushed-silver fins unifying the shaft
  [[20,20],[-20,20],[20,-20],[-20,-20]].forEach(function(c){
    box(1.6,27,1.6,silver,c[0]*0.98,41.5,c[1]*0.98);
  });
  [[16,16],[-16,16],[16,-16],[-16,-16]].forEach(function(c){
    box(1.4,23,1.4,silver,c[0]*0.98,66.5,c[1]*0.98);
  });
  [[13,13],[-13,13],[13,-13],[-13,-13]].forEach(function(c){
    box(1.2,17,1.2,silver,c[0]*0.98,86.5,c[1]*0.98);
  });
  // portholes on the shaft (the King's portal vision) — unchanged positions
  var pTex=portholeTex(T);
  var pLevels=[40,62,86];
  pLevels.forEach(function(py,idx){
    var r=[20.2,16.2,13.2][idx];
    [[0,-r,0],[0,r,Math.PI],[r,0,Math.PI/2],[-r,0,-Math.PI/2]].forEach(function(f){
      var pMat=new T.MeshBasicMaterial({map:pTex,transparent:true,side:T.DoubleSide});
      var pm=new T.Mesh(new T.CircleGeometry(3.2,24),pMat);
      pm.position.set(f[0],py,f[1]); pm.rotation.