<!-- SOLID CITY · part 2846 -->
along the east edge
  var colPrints = [];
  for (var ci = 0; ci < 5; ci++) {
    var cz2 = -16 + ci * 8;
    mesh(CYL, MAT.stone, group, 25.5, 2.3, cz2, 0.72, 4.6, 0.72);
    mesh(BOX, MAT.coping, group, 25.5, 0.18, cz2, 1.15, 0.36, 1.15);
    mesh(BOX, MAT.coping, group, 25.5, 4.72, cz2, 1.15, 0.3, 1.15);
    colPrints.push([25.5, cz2, 0.8, 0.8, 0, 4.9, 0]);
    if (ci < 4) {
      var arc = new THREE.Mesh(new THREE.TorusGeometry(4, 0.22, 8, 22, Math.PI), MAT.stone);
      arc.position.set(25.5, 4.85, cz2 + 4); arc.rotation.y = Math.PI / 2; group.add(arc);
    }
  }
  mesh(BOX, MAT.stone, group, 25.5, 5.05, 0, 0.8, 0.35, 34.5);
  // lanterns at the terrace corners
  [[-26.5, -20.5], [26.5, -20.5], [-26.5, 20.5], [26.5, 20.5]].forEach(function (p) {
    mesh(CYL, MAT.dark, group, p[0], 0.8, p[1], 0.14, 1.6, 0.14);
    mesh(BOX, lam(0xffd9a0, { emissive: 0xcc8844 }), group, p[0], 1.75, p[1], 0.36, 0.36, 0.36);
  });
  // two benches on the west apron — sit, watch the water, watch the sea
  [-6, 6].forEach(function (bz) {
    mesh(BOX, MAT.woodDark, group, -23.5, 0.5, bz, 0.5, 0.09, 2.2);
    mesh(BOX, MAT.woodDark, group, -23.5, 0.25, bz - 0.9, 0.45, 0.5, 0.12);
    mesh(BOX, MAT.woodDark, group, -23.5, 0.25, bz + 0.9, 0.45, 0.5, 0.12);
    mesh(BOX, MAT.woodDark, group, -23.75, 0.85, bz, 0.09, 0.5, 2.2);
  });
  // the plate — the King's words, verbatim, by the steps
  function plateTexture() {
    var c = document.createElement('canvas'); c.width = 1024; c.height = 340;
    var g = c.getContext('2d');
    g.fillStyle = '#221d16'; g.fillRect(0, 0, 1024, 340);
    g.strokeStyle = '#d8a833'; g.lineWidth = 8; g.strokeRect(16, 16, 992, 308);
    g.textAlign = 'center';
    g.fillStyle = '#e8c36a'; g.font = 'bold 78px Georgia, serif';
    g.fillText('THE OCTAHEDRON POOL', 512, 104);
    g.fillStyle = '#e9e2cf'; g.font = '52px Georgia, serif';
    g.fillText('YOU DO NOT DROWN', 512, 188);
    g.fillStyle = '#9fe8f2'; g.font = '40px Georgia, serif';
    g.fillText("YOU LIVE IN THE DEEPEST PARTS", 512, 252);
    g.fillText("OF EVERYONE'S IMAGINATION", 512, 300);
    return new THREE.CanvasTexture(c);
  }
  var plate = new THREE.Group(); plate.position.set(4.8, 0, 15.9); plate.rotation.y = -0.32;
  mesh(BOX, MAT.woodDark, plate, -1.7, 1.0, 0, 0.16, 2.0, 0.16);
  mesh(BOX, MAT.woodDark, plate, 1.7, 1.0, 0, 0.16, 2.0, 0.16);
  var pboard = new THREE.Mesh(new THREE.BoxGeometry(4.4, 1.45, 0.08),
    [MAT.woodDark, MAT.woodDark, MAT.woodDark, MAT.woodDark,
     new THREE.MeshLambertMaterial({ map: plateTexture() }), MAT.woodDark]);
  pboard.position.y = 1.62; plate.add(pboard);
  group.add(plate);

  /* ================= SECTION 5 — the Attendants & the lilies ============
     Three small octahedra keep slow court around the great one, sharing
     its gold and its breathing light. Eight lily pads drift on the water,
     each carrying a single flower. (Open Construction — Piece 5.) */
  var attendants = [];
  for (var ai = 0; ai < 3; ai++) {
    var am = new THREE.Mesh(new THREE.OctahedronGeometry(0.85), octaMat);
    am.userData.ph = ai * (Math.PI * 2 / 3);
    group.add(am); attendants.push(am);
  }
  var lilies = [];
  var lilyMat = new THREE.MeshPhongMaterial({ color: 0x2e7d46, shininess: 12 });
  var petalMats = [0xf7c8d8, 0xffffff, 0xf6e27a].map(function (pc) { return new THREE.MeshPhongMaterial({ color: pc, emissive: pc, emissiveIntensity: 0.12, shininess: 24 }); });
  for (var li = 0; li < 8; li++) {
    var lg = new THREE.Group();
    var pad = new THREE.Mesh(new THREE.CircleGeometry(0.55 + (li % 3) * 0.14, 14), lilyMat);
    pad.rotation.x = -Math.PI / 2; lg.add(pad);
    var fl = new THREE.Mesh(new THREE.ConeGeometry(0.16, 0.22, 6), petalMats[li % 3]);
    fl.position.y = 0.1; lg.add(fl);
    lg.userData = { ph: li * 1.93, r: 6.5 + (li % 4) * 2.2, sp: 0.014 + (li % 3) * 0.006 };
    group.add(lg); lilies.push(lg);
  }

  /* ================= SECTION 6 — the Floating Isle =====================
     Solid's own wish (the King asked, and granted it): a disc of green
     earth hanging perfectly still over the west water — one tree, one
     cyan lantern — while everything below it drifts. High enough that
     the King, flying, can land on it and stand under the tree. */
  var isle = new THREE.Group(); isle.position.set(-8, 0, 0); group.add(isle);
  var earthMat = new THREE.MeshPhongMaterial({ color: 0x5a4632, shininess: 6 });
  var rockMat = new THREE.MeshPhongMaterial({ color: 0x6b6f75, shininess: 8, flatShading: true });
  var grassMat = new THREE.MeshPhongMaterial({ color: 0x3f9e4d, shininess: 10 });
  var soil = new THREE.Mesh(new THREE.CylinderGeometry(3.2, 2.5, 0.6, 18), earthMat); soil.position.y = 8.7; isle.add(soil);
  var grass = new THREE.Mesh(new THREE.CircleGeometry(3.18, 18), grassMat); grass.rotation.x = -Math.PI / 2; grass.position.y = 9.01; isle.add(grass);
  var under = new THREE.Mesh(new THREE.ConeGeometry(2.5, 2.9, 9), rockMat); under.rotation.x = Math.PI; u