<!-- SOLID CITY · part 2865 -->
dexed() : geo.clone(); geo.dispose(); g.applyMatrix4(new T.Matrix4().compose(new T.Vector3(x, y, z), new T.Quaternion().setFromEuler(new T.Euler(rx || 0, ry || 0, rz || 0)), new T.Vector3(1, 1, 1))); this.g.push(g); };
Merge.prototype.mesh = function (mat) {
  var n = 0; this.g.forEach(function (p) { n += p.attributes.position.count; }); var P = new Float32Array(n * 3), N = new Float32Array(n * 3), o = 0;
  this.g.forEach(function (p) { var c = p.attributes.position.count; P.set(p.attributes.position.array, o * 3); N.set(p.attributes.normal.array, o * 3); o += c; p.dispose(); });
  var g = new T.BufferGeometry(); g.setAttribute('position', new T.BufferAttribute(P, 3)); g.setAttribute('normal', new T.BufferAttribute(N, 3)); g.computeBoundingSphere(); return new T.Mesh(g, mat);
};
function plaqueTex() {   // gold intaglio plaque: hatched ground, double rule, engraved title
  var W = 1024, H = 384, c = document.createElement('canvas'); c.width = W; c.height = H; var g = c.getContext('2d');
  g.fillStyle = '#070506'; g.fillRect(0, 0, W, H);
  g.strokeStyle = 'rgba(217,171,70,0.16)'; g.lineWidth = 1; for (var i = -H; i < W; i += 5) { g.beginPath(); g.moveTo(i, H); g.lineTo(i + H, 0); g.stroke(); }
  g.strokeStyle = '#d9ab46'; g.lineWidth = 6; g.strokeRect(12, 12, W - 24, H - 24); g.lineWidth = 2; g.strokeRect(28, 28, W - 56, H - 56);
  for (var k = 0; k < 4; k++) { var cx = k % 2 ? W - 52 : 52, cy = k > 1 ? H - 52 : 52; g.beginPath(); g.arc(cx, cy, 10, 0, Math.PI * 2); g.stroke(); }
  g.textAlign = 'center'; g.textBaseline = 'middle'; g.font = '700 96px Georgia, serif';
  var grd = g.createLinearGradient(0, 120, 0, 220); grd.addColorStop(0, '#fff0b8'); grd.addColorStop(0.5, '#e8c36a'); grd.addColorStop(1, '#a87b26');
  g.fillStyle = '#3a2608'; g.fillText('ALL THAT WE', W / 2 + 3, 138); g.fillText('CAN DO!', W / 2 + 3, 248);   // engraved shadow
  g.fillStyle = grd; g.fillText('ALL THAT WE', W / 2, 135); g.fillText('CAN DO!', W / 2, 245);
  g.font = '600 26px Georgia, serif'; g.fillStyle = '#c9a24c'; g.fillText('\u2756  SOLID CITY \u00b7 WALK UP AND READ  \u2756', W / 2, 320);
  var t = new T.CanvasTexture(c); t.encoding = T.sRGBEncoding; t.anisotropy = 4; return t;
}
function build() {
  var stone = curve(new T.MeshLambertMaterial({ color: 0x0c090b })), gold = curve(new T.MeshLambertMaterial({ color: 0xd9ab46, emissive: 0x4a3208 })), red = curve(new T.MeshLambertMaterial({ color: 0x8a0c1c, emissive: 0x2a0306 }));
  var st = new Merge(), gd = new Merge(), rd = new Merge();
  st.add(new T.CylinderGeometry(2.5, 2.7, 0.18, 40), 0, 0.09, 0);                      // dais
  rd.add(new T.CylinderGeometry(2.2, 2.2, 0.04, 40), 0, 0.2, 0);                        // red carpet disc
  gd.add(new T.TorusGeometry(2.55, 0.05, 4, 56), 0, 0.19, 0, Math.PI / 2);
  st.add(new T.BoxGeometry(1.5, 0.22, 1.1), 0, 0.33, -0.15);                            // step
  st.add(new T.BoxGeometry(1.25, 1.25, 0.8), 0, 1.06, -0.25);                           // lectern body
  gd.add(new T.BoxGeometry(1.33, 0.06, 0.88), 0, 0.46, -0.25); gd.add(new T.BoxGeometry(1.33, 0.06, 0.88), 0, 1.66, -0.25);
  [-0.64, 0.64].forEach(function (x) { gd.add(new T.BoxGeometry(0.05, 1.2, 0.05), x, 1.06, 0.16); });
  st.add(new T.BoxGeometry(1.45, 0.08, 0.95), 0, 1.75, -0.2, -0.28);                    // slanted reading top
  gd.add(new T.BoxGeometry(1.5, 0.03, 1.0), 0, 1.71, -0.2, -0.28);
  st.add(new T.CylinderGeometry(0.02, 0.02, 0.55, 6), 0.42, 1.98, -0.48, 0.5);          // gooseneck microphone
  gd.add(new T.SphereGeometry(0.06, 10, 8), 0.42, 2.24, -0.34);
  var grp = new T.Group(); grp.name = 'podium-all-we-can-do'; grp.position.set(POS.x, Y, POS.z); grp.rotation.y = FACE;
  grp.add(st.mesh(stone)); grp.add(gd.mesh(gold)); grp.add(rd.mesh(red));
  var pl = new T.Mesh(new T.PlaneGeometry(1.16, 0.435), curve(new T.MeshBasicMaterial({ map: plaqueTex() }))); pl.position.set(0, 1.06, 0.17); grp.add(pl);   // THE BATTENING (2026-10-14): was z 0.152 against the lectern's 0.15 face — 2 mm of pride, a z-fight waiting for a glancing angle. Now 0.17: 20 mm proud.
  // a small gold-lit banner pole behind the lectern (reads from the arrival point)
  var bp = new Merge(); bp.add(new T.CylinderGeometry(0.05, 0.06, 4.2, 8), -1.2, 2.1, -1.0); bp.add(new T.SphereGeometry(0.11, 10, 8), -1.2, 4.25, -1.0); grp.add(bp.mesh(gold));
  var ban = new T.Mesh(new T.PlaneGeometry(0.9, 1.6), curve(new T.MeshBasicMaterial({ map: plaqueTexVertical(), side: T.DoubleSide }))); ban.position.set(-0.72, 3.25, -1.0); grp.add(ban);
  A.world.add(grp); D.group = grp;
}
function plaqueTexVertical() {
  var c = document.createElement('canvas'); c.width = 256; c.height = 448; var g = c.getContext('2d');
  g.fillStyle = '#8a0c1c'; g.fillRect(0, 0, 256, 448); g.strokeStyle = '#e8c36a'; g.lineWidth = 6; g.strokeRect(10, 10, 236, 428);
  g.fillStyle = '#ffd27a'; g.textAlign = 'center'; g.font = '700 46px Georgia, serif'; ['ALL', 'THAT', 'WE', 'CAN', 'DO!'].forEach(function