<!-- LIVE · part 106 -->
 3),
          new THREE.MeshBasicMaterial({color: 0xffd700, transparent: true, opacity: 0.7}));
        door.position.set(0, 1.5, 6);
        home.add(door);
        /* Grow light above */
        var growLight = new THREE.Mesh(new THREE.SphereGeometry(1, 8, 8), lightMat);
        growLight.position.y = 8;
        home.add(growLight);
        var gl = new THREE.PointLight(0xfff2cc, 0.8, 25);
        gl.position.y = 8;
        home.add(gl);

        home.position.set(hx, DEPTH + 2, hz);
        home.lookAt(CX, DEPTH + 2, CZ);
        scene.add(home);
      }

      /* CENTRAL GARDEN — green heart in the deep */
      var garden = new THREE.Group();
      var soil = new THREE.Mesh(new THREE.CylinderGeometry(20, 22, 1, 16), gardenMat);
      soil.position.y = 0.5;
      garden.add(soil);
      /* Water pool */
      var pool = new THREE.Mesh(new THREE.CircleGeometry(6, 16), waterMat);
      pool.rotation.x = -Math.PI / 2;
      pool.position.y = 1.1;
      garden.add(pool);
      /* Garden trees */
      for(var gt = 0; gt < 8; gt++){
        var gang = (gt / 8) * Math.PI * 2;
        var gx = Math.cos(gang) * 14, gz = Math.sin(gang) * 14;
        var gtree = new THREE.Mesh(new THREE.ConeGeometry(2, 6, 6), gardenMat);
        gtree.position.set(gx, 4, gz);
        garden.add(gtree);
      }
      /* Sun lamps */
      for(var sl = 0; sl < 4; sl++){
        var sang = (sl / 4) * Math.PI * 2;
        var sunLamp = new THREE.Mesh(new THREE.SphereGeometry(2, 10, 10), lightMat);
        sunLamp.position.set(Math.cos(sang)*18, 12, Math.sin(sang)*18);
        garden.add(sunLamp);
        var slLight = new THREE.PointLight(0xfff2cc, 1.2, 40);
        slLight.position.copy(sunLamp.position);
        garden.add(slLight);
      }
      garden.position.set(CX + 45, DEPTH + 2, CZ + 45);
      scene.add(garden);

      /* GATHERING HALL — where the population meets */
      var hall = new THREE.Group();
      var hallBase = new THREE.Mesh(new THREE.CylinderGeometry(15, 17, 6, 12), warmMat);
      hallBase.position.y = 3;
      hall.add(hallBase);
      var hallDome = new THREE.Mesh(new THREE.SphereGeometry(15, 16, 8, 0, Math.PI*2, 0, Math.PI/2), warmMat);
      hallDome.position.y = 6;
      hall.add(hallDome);
      /* Open entrance */
      var entrance = new THREE.Mesh(new THREE.PlaneGeometry(6, 5),
        new THREE.MeshBasicMaterial({color: 0xffd700, transparent: true, opacity: 0.5, side: THREE.DoubleSide}));
      entrance.position.set(0, 2.5, 16);
      hall.add(entrance);
      hall.position.set(CX - 45, DEPTH + 2, CZ + 45);
      scene.add(hall);

      /* PATHWAYS — connecting homes to garden to hall to forge */
      var pathMat = new THREE.MeshBasicMaterial({color: 0xd4a017, transparent: true, opacity: 0.3});
      var paths = [
        {x1: CX, z1: CZ, x2: CX+45, z2: CZ+45},      /* Center to garden */
        {x1: CX, z1: CZ, x2: CX-45, z2: CZ+45},      /* Center to hall */
        {x1: CX+45, z1: CZ+45, x2: CX-45, z2: CZ+45} /* Garden to hall */
      ];
      for(var p = 0; p < paths.length; p++){
        var P = paths[p];
        var len = Math.sqrt((P.x2-P.x1)*(P.x2-P.x1) + (P.z2-P.z1)*(P.z2-P.z1));
        var path = new THREE.Mesh(new THREE.PlaneGeometry(len, 3), pathMat);
        path.rotation.x = -Math.PI / 2;
        path.rotation.z = Math.atan2(P.x2-P.x1, P.z2-P.z1) + Math.PI/2;
        path.position.set((P.x1+P.x2)/2, DEPTH + 2.6, (P.z1+P.z2)/2);
        scene.add(path);
      }

      /* FOUR DISTRICTS — the forge's lifelines.
       Energy, Materials, Water, Transit. Each connected. Each necessary.
       King's word 2026-10-07. */
    (function buildDistricts(){
      var DEPTH = -80;
      var CX = 0, CZ = 0;
      var forgeX = CX, forgeZ = CZ - 25;

      var steelMat = new THREE.MeshStandardMaterial({color: 0x555555, metalness: 0.8, roughness: 0.4});
      var goldMat = new THREE.MeshStandardMaterial({color: 0xd4a017, metalness: 0.7, roughness: 0.3});

      /* Helper: conduit from district to forge */
      function conduit(x1, z1, x2, z2, color){
        var len = Math.sqrt((x2-x1)*(x2-x1) + (z2-z1)*(z2-z1));
        var mat = new THREE.MeshBasicMaterial({color: color, transparent: true, opacity: 0.4});
        var pipe = new THREE.Mesh(new THREE.CylinderGeometry(1.5, 1.5, len, 8), mat);
        pipe.rotation.z = Math.PI / 2;
        pipe.rotation.y = -Math.atan2(z2-z1, x2-x1);
        pipe.position.set((x1+x2)/2, DEPTH + 4, (z1+z2)/2);
        scene.add(pipe);
        /* Flow animation */
        window._dynamics.push((function(pp){
          var ph = Math.random() * 10;
          return function(t){ pp.material.opacity = 0.3 + Math.sin(t*3+ph)*0.15; };
        })(pipe));
      }

      /* NORTH DISTRICT — ENERGY */
      (function(){
        var ex = CX, ez = CZ - 100;
        var group = new THREE.Group();
        /* Geothermal vents */
        for(var v = 0; v < 5; v++){
          var vent = new THREE.Mesh(new THREE.CylinderGeometry(3, 5, 15, 8),
            n