<!-- SOLID CITY · part 2075 -->
13,0.15,6.5,goldTrim,0,10.8,25.5); // gold under-edge
  box(12,0.25,5.5,warmLight,0,10.75,25.5); // under-canopy light
  [[-5.5],[5.5]].forEach(function(px){
    var cc=new T.Mesh(new T.CylinderGeometry(0.35,0.4,11,10),silver);
    cc.position.set(px[0],5.5,27.5); root.add(cc); solid(px[0],27.5,0.9,0.9,0,11);
  });
  // flanking light pylons
  [[-7.5],[7.5]].forEach(function(px){
    box(1.1,12,1.1,titanium,px[0],6,22.5); solid(px[0],22.5,1.1,1.1,0,12);
    box(1.2,0.8,1.2,warmLight,px[0],12.2,22.5);
    box(1.3,0.15,1.3,goldTrim,px[0],11.75,22.5);
  });
  // threshold step
  box(10,0.5,3,stoneFloor,0,0.25,23);
  // frieze with architectural lettering above the door
  box(11,1.4,0.5,titaniumDeep,0,11.9,21.6);
  var frz=new T.Mesh(new T.PlaneGeometry(9.5,1.1),
    new T.MeshBasicMaterial({map:textPlate(T,'THE ANNEX')}));
  frz.position.set(0,11.9,21.9); root.add(frz);
  // framed doorway (replaces plain gold posts)
  doorFrame(0,21.5,8,10,0);
  solid(-4.6,21.5,0.9,1.4,0,10); solid(4.6,21.5,0.9,1.4,0,10);
  // open glass doors (angled, refined with silver frames)
  var dg1=new T.Mesh(new T.BoxGeometry(3.8,9.5,0.15),doorGlassM);
  dg1.position.set(-2.2,4.75,20.2); dg1.rotation.y=0.5; root.add(dg1);
  var dg1f=new T.Mesh(new T.BoxGeometry(4.0,0.25,0.25),silver);
  dg1f.position.set(-2.2,9.4,20.2); dg1f.rotation.y=0.5; root.add(dg1f);
  var dg2=new T.Mesh(new T.BoxGeometry(3.8,9.5,0.15),doorGlassM);
  dg2.position.set(2.2,4.75,20.2); dg2.rotation.y=-0.5; root.add(dg2);
  var dg2f=new T.Mesh(new T.BoxGeometry(4.0,0.25,0.25),silver);
  dg2f.position.set(2.2,9.4,20.2); dg2f.rotation.y=-0.5; root.add(dg2f);

  /* ============ FLOOR 2: OFFICES (16-26) — navigable, finished ============ */
  box(W,1,D,titanium,0,15.5,0); // slab (floor at 16)
  // walls
  box(W,10,1,wallInt,0,21,-21.5); solid(0,-21.5,W,1,16,26);
  box(W,10,1,wallInt,0,21,21.5); solid(0,21.5,W,1,16,26);
  box(1,10,D,wallInt,-21.5,21,0); solid(-21.5,0,1,D,16,26);
  box(1,10,D,wallInt,21.5,21,0); solid(21.5,0,1,D,16,26);
  box(W,1,D,ceilM,0,26.5,0); // ceiling
  // baseboards + crown on floor 2
  [[0,-20.9,W,0.6],[0,20.9,W,0.6],[-20.9,0,0.6,D],[20.9,0,0.6,D]].forEach(function(t){
    box(t[2],0.9,t[3],titanium,t[0],16.45,t[1]);
  });
  // windows: glass strips with mullions + sills
  box(W-4,3,0.3,winGlass,0,22,-21.4);
  box(W-4,3,0.3,winGlass,0,22,21.4);
  box(0.3,3,D-4,winGlass,-21.4,22,0);
  box(0.3,3,D-4,winGlass,21.4,22,0);
  for(var mx=-16;mx<=16;mx+=8){
    box(0.35,3.2,0.5,silver,mx,22,-21.4);
    box(0.35,3.2,0.5,silver,mx,22,21.4);
    box(0.5,3.2,0.35,silver,-21.4,22,mx);
    box(0.5,3.2,0.35,silver,21.4,22,mx);
  }
  box(W-2,0.4,0.8,silverLight,0,20.3,-21.3); // sills
  box(W-2,0.4,0.8,silverLight,0,20.3,21.3);
  // partitions with REAL door gaps (2.4m) — 3 north, 3 south
  var officeX=[-14,0,14];
  officeX.forEach(function(ox){
    [-8,8].forEach(function(pz){
      // two wall segments leaving a 2.4m gap
      box(3.8,8,0.5,wallInt,ox-3.1,20,pz); solid(ox-3.1,pz,3.8,0.5,16,24);
      box(3.8,8,0.5,wallInt,ox+3.1,20,pz); solid(ox+3.1,pz,3.8,0.5,16,24);
      // finished top cap on segments
      box(3.8,0.25,0.7,titanium,ox-3.1,24.1,pz);
      box(3.8,0.25,0.7,titanium,ox+3.1,24.1,pz);
      // door frame in the gap
      box(0.3,8,0.7,silver,ox-1.35,20,pz);
      box(0.3,8,0.7,silver,ox+1.35,20,pz);
      box(3.0,2.6,0.7,wallInt,ox,22.7,pz); // lintel fill above door (21.4-24)
      box(3.0,0.15,0.75,goldTrim,ox,21.35,pz); // gold line over door
    });
  });
  // corridor runner carpet (visual)
  box(36,0.08,5,titaniumDeep,0,16.06,0);
  // office interiors — each with character
  function officeDesk(ox,oz,rot){
    box(3,0.15,1.5,woodDark,ox,17.1,oz); solid(ox,oz,3,1.5,16,17.3);
    box(0.15,1.1,1.5,woodDark,ox-1.4,16.55,oz);
    box(0.15,1.1,1.5,woodDark,ox+1.4,16.55,oz);
    box(1,0.15,1,titaniumDeep,ox,16.8,oz+2.5); solid(ox,oz+2.5,1,1,16,17);
    box(1,1.2,0.15,titaniumDeep,ox,17.4,oz+2.9);
  }
  function bookShelf(ox,oz,w){
    box(w,4,0.8,woodDark,ox,18,oz); solid(ox,oz,w,0.8,16,20);
    for(var s2=0;s2<3;s2++){
      box(w-0.3,0.12,0.7,silverLight,ox,17.2+s2*1.1,oz);
      for(var bi=0;bi<Math.floor((w-0.6)/0.55);bi++){
        var bookC=[0x8a3a3a,0x3a5a8a,0x3a7a4a,0x8a6a2a,0x5a4a7a][(bi+s2)%5];
        box(0.42,0.85,0.55,new T.MeshLambertMaterial({color:bookC}),
          ox-(w-0.6)/2+0.3+bi*0.55,17.75+s2*1.1,oz);
      }
    }
  }
  // N1 (-14,-14): meeting room — round table + chairs
  (function(){
    var tx=new T.Mesh(new T.CylinderGeometry(2.2,2.2,0.16,16),silverLight);
    tx.position.set(-14,17.0,-14); root.add(tx); solid(-14,-14,4.4,4.4,16,17.2);
    var tl=new T.Mesh(new T.CylinderGeometry(0.3,0.4,1,8),titaniumDeep);
    tl.position.set(-14,16.5,-14); root.add(tl);
    for(var a2=0;a2<6;a2++){
      var an=a2/6*Math.PI*2;
      box(0.9,0.5,0.9,titaniumDeep,-14+Math.cos(an)*3.2,16.25,-14+Math.sin(an)*3.2);
    }
  })();
  // N2 (0,-14): executive — large desk + bookshelf wall
  officeDesk(0,