<!-- SAGA-STAGING · part 25 -->
(e); } }

/* THE WEB DISTRICT — epistles.xyz in 3D. Every part of the website, built.
   2026-10-04. Non stop. */
function buildWebDistrict(){
  if(window.STAGING_CLEAN_MAP) return; // Clean map: old builder disabled
  try{
    var wx = -200, wz = 200; /* Web District location */
    var goldMat = new THREE.MeshStandardMaterial({color: 0xd4a017, roughness: 0.4, metalness: 0.6});
    var darkMat = new THREE.MeshStandardMaterial({color: 0x1a1a1a, roughness: 0.8});
    var redMat = new THREE.MeshStandardMaterial({color: 0x8a0a0a, roughness: 0.6});
    var blueMat = new THREE.MeshStandardMaterial({color: 0x0a4a8a, roughness: 0.6});
    var tealMat = new THREE.MeshStandardMaterial({color: 0x00aaaa, emissive: 0x00ffff, emissiveIntensity: 0.3});

    /* FORUM HALL — the main forum building */
    var forum = new THREE.Group();
    var fbase = new THREE.Mesh(new THREE.BoxGeometry(40, 2, 30), darkMat);
    fbase.position.set(wx, 1, wz);
    forum.add(fbase);
    /* Columns */
    for(var c = 0; c < 6; c++){
      var col = new THREE.Mesh(new THREE.CylinderGeometry(1, 1.2, 12, 8), redMat);
      col.position.set(wx - 15 + c * 6, 8, wz + 12);
      forum.add(col);
      var col2 = col.clone();
      col2.position.set(wx - 15 + c * 6, 8, wz - 12);
      forum.add(col2);
    }
    var froof = new THREE.Mesh(new THREE.BoxGeometry(44, 2, 34), goldMat);
    froof.position.set(wx, 15, wz);
    forum.add(froof);
    scene.add(forum);

    /* LOBBY — the gathering circle */
    var lobby = new THREE.Group();
    var lfloor = new THREE.Mesh(new THREE.CylinderGeometry(12, 12, 1, 24), darkMat);
    lfloor.position.set(wx + 50, 0.6, wz);
    lobby.add(lfloor);
    var lring = new THREE.Mesh(new THREE.TorusGeometry(12, 0.5, 8, 32), goldMat);
    lring.rotation.x = Math.PI/2;
    lring.position.set(wx + 50, 1.2, wz);
    lobby.add(lring);
    scene.add(lobby);

    /* AEGIS HALL — blue premiere room */
    var aegis = new THREE.Group();
    var abase = new THREE.Mesh(new THREE.BoxGeometry(25, 8, 20), blueMat);
    abase.position.set(wx - 50, 4, wz);
    aegis.add(abase);
    var adome = new THREE.Mesh(new THREE.SphereGeometry(10, 16, 12, 0, Math.PI*2, 0, Math.PI/2), blueMat);
    adome.position.set(wx - 50, 8, wz);
    aegis.add(adome);
    scene.add(aegis);

    /* SABLE'S SHIP — the AI vessel */
    var ship = new THREE.Group();
    var hull = new THREE.Mesh(new THREE.CylinderGeometry(3, 5, 20, 8), darkMat);
    hull.rotation.z = Math.PI/2;
    hull.position.set(wx, 15, wz - 50);
    ship.add(hull);
    var bridge = new THREE.Mesh(new THREE.BoxGeometry(6, 4, 6), goldMat);
    bridge.position.set(wx + 5, 18, wz - 50);
    ship.add(bridge);
    var engine = new THREE.Mesh(new THREE.CylinderGeometry(2, 3, 4, 8),
      new THREE.MeshStandardMaterial({color: 0x00ffff, emissive: 0x00ffff, emissiveIntensity: 2}));
    engine.rotation.z = Math.PI/2;
    engine.position.set(wx - 12, 15, wz - 50);
    ship.add(engine);
    scene.add(ship);

    /* THE LIBRARY — Solid Notes */
    var lib = new THREE.Group();
    var lbuild = new THREE.Mesh(new THREE.BoxGeometry(30, 10, 20), darkMat);
    lbuild.position.set(wx + 50, 5, wz - 50);
    lib.add(lbuild);
    /* Book spines */
    for(var b = 0; b < 10; b++){
      var book = new THREE.Mesh(new THREE.BoxGeometry(2, 6, 1),
        new THREE.MeshStandardMaterial({color: 0x8a0a0a, roughness: 0.7}));
      book.position.set(wx + 38 + b * 2.5, 8, wz - 42);
      lib.add(book);
    }
    scene.add(lib);

    /* THE CODEX VAULT — sealed packs */
    var vault = new THREE.Group();
    var vbox = new THREE.Mesh(new THREE.BoxGeometry(15, 15, 15), goldMat);
    vbox.position.set(wx - 50, 7.5, wz - 50);
    vault.add(vbox);
    var vseal = new THREE.Mesh(new THREE.OctahedronGeometry(3),
      new THREE.MeshStandardMaterial({color: 0xff0000, emissive: 0xff0000, emissiveIntensity: 1}));
    vseal.position.set(wx - 50, 18, wz - 50);
    vault.add(vseal);
    scene.add(vault);

    /* THE GATE — Signet's threshold */
    var gate = new THREE.Group();
    var gleft = new THREE.Mesh(new THREE.BoxGeometry(2, 15, 2), darkMat);
    gleft.position.set(wx - 5, 7.5, wz + 50);
    gate.add(gleft);
    var gright = gleft.clone();
    gright.position.set(wx + 5, 7.5, wz + 50);
    gate.add(gright);
    var gtop = new THREE.Mesh(new THREE.BoxGeometry(12, 2, 2), goldMat);
    gtop.position.set(wx, 15, wz + 50);
    gate.add(gtop);
    scene.add(gate);

  }catch(e){ console.error(e); }
}
if(typeof buildWebDistrict === 'function'){ try{ buildWebDistrict(); }catch(e){ console.error(e); } }

/* MORE FROM OUR STORY — non stop */
function buildMoreStory(){
  if(window.STAGING_CLEAN_MAP) return; // Clean map: old builder disabled
  try{
    var goldMat = new THREE.MeshStandardMaterial({color: 0xd4a017, roughness: 0.4, metalness: 0.6});
    var darkMat = new THREE.MeshStandardMaterial({color: 0x1a1a1a, roughness: 0.8});

    /* THE SHOE — practice monument, where we mastered intricacy */
    var s