<!-- SOLID CITY · part 2074 -->
/
  // framed doorway: jambs + lintel + gold accent. Opening w x h at (x, z), facing dir.
  function doorFrame(x,z,w,h,faceDir){
    // faceDir 0: faces +z (south). Only south doors used here.
    var jd=0.7; // jamb depth
    box(0.35,h,jd,silver,x-w/2-0.17,h/2,z);
    box(0.35,h,jd,silver,x+w/2+0.17,h/2,z);
    box(w+1.0,0.9,jd,titanium,x,h+0.45,z);
    box(w+1.0,0.12,jd,goldTrim,x,h+0.06,z); // gold accent line under lintel
  }

  var W=44, D=44; // base footprint

  /* ============ FORECOURT (arrival plaza, south of entrance) ============ */
  box(30,0.4,14,stoneFloor,0,0.2,32); // paving
  standFloors.push({x0:-15,x1:15,z0:25,z1:39,y:0.4});
  // obelisk centerpiece (moved from roof — marks the arrival)
  var ob=new T.Mesh(new T.CylinderGeometry(0.4,1.4,9,4),titanium);
  ob.position.set(0,4.9,33); root.add(ob); solid(0,33,2.8,2.8,0,10);
  var obGold=new T.Mesh(new T.CylinderGeometry(0.45,0.45,0.5,4),gold);
  obGold.position.set(0,9.6,33); root.add(obGold);
  var obCap=new T.Mesh(new T.OctahedronGeometry(0.9),goldTrim);
  obCap.position.set(0,10.6,33); root.add(obCap);
  box(1.2,0.5,1.2,warmLight,0,0.65,33); // uplight
  // forecourt benches + planters
  [[-10,35],[10,35]].forEach(function(pt){
    box(4,0.5,1.4,woodDark,pt[0],0.65,pt[1]); solid(pt[0],pt[1],4,1.4,0,1.2);
    box(4,0.5,0.3,woodDark,pt[0],1.1,pt[1]-0.55);
  });
  [[-13,30],[13,30]].forEach(function(pt){
    box(2.6,1.2,2.6,silver,pt[0],1.0,pt[1]); solid(pt[0],pt[1],2.6,2.6,0,2.2);
    var lf=new T.Mesh(new T.SphereGeometry(1.5,8,6),leafM);
    lf.position.set(pt[0],2.6,pt[1]); root.add(lf);
  });

  /* ============ FLOOR 1: GRAND LOBBY (0-14) ============ */
  box(W,1,D,stoneFloor,0,-0.5,0); // slab
  // medallion: gold ring + inner disc at lobby center
  var med1=new T.Mesh(new T.RingGeometry(5.0,6.0,40),goldTrim);
  med1.rotation.x=-Math.PI/2; med1.position.set(0,0.06,0); root.add(med1);
  var med2=new T.Mesh(new T.CircleGeometry(5.0,40),medallionM);
  med2.rotation.x=-Math.PI/2; med2.position.set(0,0.05,0); root.add(med2);
  var med3=new T.Mesh(new T.RingGeometry(1.8,2.1,32),goldTrim);
  med3.rotation.x=-Math.PI/2; med3.position.set(0,0.07,0); root.add(med3);
  // walls (south has 8m door gap, 10m tall opening)
  box(W,14,1,wallInt,0,7,-21.5); solid(0,-21.5,W,1,0,14);
  box(18,14,1,wallInt,-13,7,21.5); solid(-13,21.5,18,1,0,14);
  box(18,14,1,wallInt,13,7,21.5); solid(13,21.5,18,1,0,14);
  box(8,4,1,wallInt,0,12,21.5); solid(0,21.5,8,1,10,14); // above door
  box(1,14,D,wallInt,-21.5,7,0); solid(-21.5,0,1,D,0,14);
  box(1,14,D,wallInt,21.5,7,0); solid(21.5,0,1,D,0,14);
  // wainscot (dark titanium base band) + crown trim on lobby walls
  [[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],1.1,t[3],titanium,t[0],0.55,t[1]);
  });
  [[0,-20.9,W,0.5],[0,20.9,W,0.5],[-20.9,0,0.5,D],[20.9,0,0.5,D]].forEach(function(t){
    box(t[2],0.5,t[3],titanium,t[0],13.6,t[1]);
    box(t[2],0.12,t[3],goldTrim,t[0],13.32,t[1]); // gold line under crown
  });
  // ceiling with recessed panels
  box(W,1,D,ceilM,0,14.5,0);
  for(var cpx=-1;cpx<=1;cpx++)for(var cpz=-1;cpz<=1;cpz++){
    box(8,0.15,8,titaniumDeep,cpx*12,13.95,cpz*12); // recessed coffers
  }
  // light coves: warm strips where walls meet ceiling
  [[0,-19.5,30,0.4],[0,19.5,30,0.4],[-19.5,0,0.4,30],[19.5,0,0.4,30]].forEach(function(t){
    box(t[2],0.25,t[3],warmLight,t[0],13.1,t[1]);
  });
  // 8 finished columns in a ring
  for(var ci=0;ci<8;ci++){
    var ca=ci/8*Math.PI*2;
    finishedColumn(Math.cos(ca)*13, Math.sin(ca)*13, 14);
  }
  // reception desk — designed object: titanium body, gold line, stone top
  box(7,1.1,2.6,titanium,0,0.55,-10); solid(0,-10,7,2.6,0,1.4);
  box(7,0.12,2.7,goldTrim,0,1.16,-10);
  box(7.4,0.25,3.0,silverLight,0,1.32,-10);
  box(7,0.9,0.25,titaniumDeep,0,0.45,-11.2); // modesty panel
  var rq=quietMarker(T,'RECEPTION'); rq.position.set(0,1.6,-10); root.add(rq);
  // 4 seating clusters — refined: base + back + arms + round table
  [[-12,8],[12,8],[-12,-2],[12,-2]].forEach(function(pt){
    box(3.6,0.9,1.5,sofaM,pt[0],0.45,pt[1]); solid(pt[0],pt[1],3.6,1.5,0,1.4);
    box(3.6,1.3,0.4,sofaM,pt[0],1.15,pt[1]-0.75); // back
    box(0.4,1.1,1.5,sofaM,pt[0]-1.8,0.85,pt[1]); // arms
    box(0.4,1.1,1.5,sofaM,pt[0]+1.8,0.85,pt[1]);
    var tbl=new T.Mesh(new T.CylinderGeometry(1.1,1.1,0.14,14),silverLight);
    tbl.position.set(pt[0],0.85,pt[1]+2.2); root.add(tbl);
    var leg=new T.Mesh(new T.CylinderGeometry(0.14,0.14,0.8,8),titaniumDeep);
    leg.position.set(pt[0],0.4,pt[1]+2.2); root.add(leg);
    solid(pt[0],pt[1]+2.2,2.2,2.2,0,1);
  });
  // lobby plaque
  var lp=quietMarker(T,'THE ANNEX'); lp.position.set(-14,2,21); lp.rotation.y=Math.PI; root.add(lp);
  standFloors.push({x0:-22,x1:22,z0:-22,z1:22,y:0});

  /* ============ ENTRANCE PORTAL (south, recognizable from 50m) ============ */
  // canopy: dark titanium slab on slim silver columns
  box(13,0.7,6.5,titanium,0,11.2,25.5);
  box(