<!-- SOLID CITY · part 3128 -->
  var wood = M(0x4c3a26), iron = M(0x23242a), goldM = M(C.gold), breadM = M(0xc79a5e), stewM = M(0x7a4a26);
    var ceramic = new T.MeshLambertMaterial({ color: 0x191922, side: T.DoubleSide });
    function add(geo, material, x, y, z, sx, sy, sz) { var m = new T.Mesh(geo, material); m.position.set(x, y, z); if (sx) m.scale.set(sx, sy, sz); g.add(m); return m; }
    add(new T.BoxGeometry(1.3, 0.07, 4.6), new T.MeshLambertMaterial({ map: marbleTex(true) }), CX, TOP - 0.035, CZ);
    [[-0.55, -2.15], [0.55, -2.15], [-0.55, 2.15], [0.55, 2.15]].forEach(function (o) { add(new T.BoxGeometry(0.09, 0.74, 0.09), wood, CX + o[0], F + 0.37, CZ + o[1]); });
    add(new T.BoxGeometry(1.1, 0.05, 4.2), wood, CX, F + 0.06, CZ);
    function lathe(pts, seg) { return new T.LatheGeometry(pts.map(function (p) { return new T.Vector2(p[0], p[1]); }), seg || 26); }
    var plateGeo = lathe([[0.001, 0], [0.07, 0.002], [0.10, 0.010], [0.135, 0.028], [0.150, 0.042]]);
    var bowlGeo = lathe([[0.001, 0], [0.05, 0.002], [0.085, 0.018], [0.105, 0.045], [0.11, 0.062]]);
    var gobletGeo = lathe([[0.001, 0], [0.045, 0.003], [0.013, 0.02], [0.015, 0.07], [0.048, 0.10], [0.056, 0.15]]);
    var rimGeo = new T.TorusGeometry(0.148, 0.004, 6, 26); rimGeo.rotateX(Math.PI / 2);
    var stewGeo = new T.CircleGeometry(0.082, 18); stewGeo.rotateX(-Math.PI / 2);
    var settings = 0;
    [-0.42, 0.42].forEach(function (ox) {
      [-1.6, 0, 1.6].forEach(function (oz) {
        var px = CX + ox, pz = CZ + oz;
        add(plateGeo, ceramic, px, TOP, pz);
        add(rimGeo, goldM, px, TOP + 0.042, pz);
        add(bowlGeo, ceramic, px, TOP + 0.004, pz);
        add(stewGeo, stewM, px, TOP + 0.052, pz);
        add(gobletGeo, iron, px + (ox < 0 ? -0.24 : 0.24), TOP, pz - 0.14);
        settings++;
      });
    });
    var serveGeo = lathe([[0.001, 0], [0.09, 0.004], [0.16, 0.03], [0.21, 0.085], [0.23, 0.13]], 36);
    if (HEIGHT) displace(serveGeo, 2, 1, 0.014);
    var serve = new T.Mesh(serveGeo, lavaTex ? lavaMat(2, 1, T.DoubleSide, !!HEIGHT) : ceramic);
    serve.position.set(CX, TOP, CZ - 0.95); serve.name = 'fold-bowl'; g.add(serve);
    [[0xd9822b, -0.08, 0.02], [0xa02c22, 0.07, -0.05], [0x7a9a3d, 0.0, 0.09], [0xd9822b, 0.09, 0.07], [0xa02c22, -0.06, -0.08]].forEach(function (f) {
      add(new T.SphereGeometry(0.052, 12, 10), M(f[0]), CX + f[1], TOP + 0.115, CZ - 0.95 + f[2]);
    });
    add(new T.BoxGeometry(0.5, 0.025, 0.8), wood, CX, TOP + 0.012, CZ + 0.95);
    [[-0.1, 0.8], [0.08, 1.05], [0.02, 1.22]].forEach(function (o) {
      add(new T.SphereGeometry(0.085, 12, 9), breadM, CX + o[0], TOP + 0.055, CZ + o[1], 1.5, 0.72, 1);
    });
    [[-0.14, 1.18], [0.15, 0.88]].forEach(function (o) { add(new T.SphereGeometry(0.05, 10, 8), breadM, CX + o[0], TOP + 0.035, CZ + o[1], 1, 0.7, 1); });
    add(new T.CylinderGeometry(0.24, 0.20, 0.2, 18), iron, CX, TOP + 0.10, CZ);
    var potTop = new T.CircleGeometry(0.21, 18); potTop.rotateX(-Math.PI / 2);
    add(potTop, stewM, CX, TOP + 0.201, CZ);
    var potRim = new T.TorusGeometry(0.24, 0.012, 6, 22); potRim.rotateX(Math.PI / 2);
    add(potRim, goldM, CX, TOP + 0.2, CZ);
    add(plateGeo, ceramic, CX - 0.3, TOP, CZ + 0.35);
    add(new T.CylinderGeometry(0.13, 0.13, 0.07, 12, 1, false, 0, 0.95), M(0xe3cf8e), CX - 0.3, TOP + 0.045, CZ + 0.35);
    [-0.95, 1.55].forEach(function (oz) {
      add(new T.BoxGeometry(0.09, 0.02, 0.09), iron, CX, TOP + 0.01, CZ + oz);
      add(new T.SphereGeometry(0.032, 10, 8), new T.MeshBasicMaterial({ color: 0xffc06a }), CX, TOP + 0.075, CZ + oz);
      add(new T.ConeGeometry(0.055, 0.05, 4), iron, CX, TOP + 0.135, CZ + oz);
    });
    [-1.05, 1.05].forEach(function (ox) {
      add(new T.BoxGeometry(0.34, 0.05, 4.2), wood, CX + ox, F + 0.45, CZ);
      add(new T.BoxGeometry(0.26, 0.42, 3.9), wood, CX + ox, F + 0.21, CZ);
      footprints.push({ x: CX + ox, z: CZ, w: 0.4, d: 4.2, a: 0, y0: F, y1: F + 0.5 });
    });
    footprints.push({ x: CX, z: CZ, w: 1.3, d: 4.6, a: 0, y0: F, y1: F + 0.85 });
    practiceInfo = { settings: settings, at: 'the-midway' };
  })();

  /* ================= THE ENTREE =================
   * The gate in the First Hollow's south-western face: two
   * towers, a lintel, and the name of the place lettered
   * PROUD over the way in — with a lamp-lit shelf running
   * out to the brow of the mountain. */
  (function buildGate() {
    var u = { x: -0.7071, z: 0.7071 }, perp = { x: 0.7071, z: 0.7071 };
    var G = { x: A_C.x + u.x * 150, z: A_C.z + u.z * 150 }, F = A_C.f;
    var ry = Math.atan2(u.x, u.z);
    [-9.5, 9.5].forEach(function (off) {
      var tx = G.x + perp.x * off, tz = G.z + perp.z * off;
      box(solid, 3.4, 17, 3.4, mat4(tx, F + 8.5, tz, 0, ry, 0), C.stone);
      box(solid, 4.4, 1, 4.4, mat4(tx, F + 17.4, tz, 0, ry, 0), C.stoneDark);
      sph(glow, 0.55, mat4(tx, F + 18.3, tz, 0, 0, 0), C.lamp);
      footprints.push({ x: tx, z: tz, w: 4, d: 4, a: ry, y0: F, y1: F + 17.9 });
    });
