<!-- SAGA · part 28 -->
e streaming */ }

/* 1000 PASSES — the world, overwhelming. 2026-10-04. */
function buildThousandPasses(){
  try{
    var goldMat = new THREE.MeshStandardMaterial({color: 0xd4a017, roughness: 0.4, metalness: 0.6});
    var darkMat = new THREE.MeshStandardMaterial({color: 0x1a1a1a, roughness: 0.8});
    window._dynamics = window._dynamics || [];

    /* AURORA — ribbons in the sky (from our story) */
    var auroraColors = [0x00ffaa, 0xaa00ff, 0x00aaff];
    for(var a = 0; a < 3; a++){
      (function(){
        var geo = new THREE.PlaneGeometry(400, 20, 40, 1);
        var pos = geo.attributes.position;
        for(var i = 0; i < pos.count; i++){
          pos.setZ(i, Math.sin(pos.getX(i) * 0.05) * 10);
        }
        geo.computeVertexNormals();
        var mat = new THREE.MeshBasicMaterial({color: auroraColors[a], transparent: true, opacity: 0.25, side: THREE.DoubleSide});
        var aurora = new THREE.Mesh(geo, mat);
        aurora.position.set((Math.random()-0.5)*300, 150 + a * 20, -200);
        aurora.rotation.x = -0.3;
        scene.add(aurora);
        var ph = Math.random() * 10;
        window._dynamics.push(function(t){
          aurora.material.opacity = 0.2 + Math.sin(t * 0.8 + ph) * 0.1;
          aurora.position.x += Math.sin(t * 0.2 + ph) * 0.3;
        });
      })();
    }

    /* SECOND CITY — east */
    var cx2 = 250, cz2 = 50;
    for(var b2 = 0; b2 < 20; b2++){
      var bx2 = cx2 + (Math.random() - 0.5) * 100;
      var bz2 = cz2 + (Math.random() - 0.5) * 100;
      var h2 = 8 + Math.random() * 20;
      var bld = new THREE.Mesh(new THREE.BoxGeometry(6 + Math.random()*4, h2, 6 + Math.random()*4), darkMat);
      bld.position.set(bx2, h2/2 + 0.13, bz2);
      scene.add(bld);
      var roof2 = new THREE.Mesh(new THREE.BoxGeometry(7 + Math.random()*4, 1, 7 + Math.random()*4), goldMat);
      roof2.position.set(bx2, h2 + 0.6, bz2);
      scene.add(roof2);
    }

    /* VILLAGE — small houses */
    var houseMat = new THREE.MeshStandardMaterial({color: 0x6a4a2a, roughness: 0.9});
    for(var v = 0; v < 25; v++){
      var vx = -80 + (Math.random() - 0.5) * 60;
      var vz = 180 + (Math.random() - 0.5) * 60;
      var house = new THREE.Group();
      var walls = new THREE.Mesh(new THREE.BoxGeometry(6, 4, 5), houseMat);
      walls.position.y = 2;
      house.add(walls);
      var roof = new THREE.Mesh(new THREE.ConeGeometry(5, 3, 4), darkMat);
      roof.position.y = 5.5;
      roof.rotation.y = Math.PI/4;
      house.add(roof);
      house.position.set(vx, 0.13, vz);
      scene.add(house);
    }

    /* BRIDGES over harbor */
    for(var br = 0; br < 2; br++){
      var bridge = new THREE.Mesh(new THREE.BoxGeometry(60, 1, 6), goldMat);
      bridge.position.set(-100 + br * 30, 2, -100);
      scene.add(bridge);
      for(var bp = 0; bp < 5; bp++){
        var pillar = new THREE.Mesh(new THREE.CylinderGeometry(1, 1, 4, 6), darkMat);
        pillar.position.set(-125 + br * 30 + bp * 12, 0, -100);
        scene.add(pillar);
      }
    }

    /* FLOWERS — gardens */
    var flowerColors = [0xff0000, 0xffff00, 0xff00ff, 0xffffff];
    for(var f = 0; f < 100; f++){
      var fx = (Math.random() - 0.5) * 300;
      var fz = (Math.random() - 0.5) * 300;
      if(Math.abs(fx) < 30 && Math.abs(fz) < 30) continue;
      var stem = new THREE.Mesh(new THREE.CylinderGeometry(0.1, 0.1, 2, 4),
        new THREE.MeshStandardMaterial({color: 0x00aa00}));
      stem.position.set(fx, 1, fz);
      scene.add(stem);
      var bloom = new THREE.Mesh(new THREE.SphereGeometry(0.5, 6, 5),
        new THREE.MeshStandardMaterial({color: flowerColors[f % 4], emissive: flowerColors[f % 4], emissiveIntensity: 0.3}));
      bloom.position.set(fx, 2.2, fz);
      scene.add(bloom);
    }

    /* FIREFLIES */
    for(var ff = 0; ff < 80; ff++){
      (function(){
        var fx = (Math.random() - 0.5) * 400;
        var fz = (Math.random() - 0.5) * 400;
        var fy = 2 + Math.random() * 8;
        var fly = new THREE.Mesh(new THREE.SphereGeometry(0.3, 6, 5),
          new THREE.MeshBasicMaterial({color: 0xffff00}));
        fly.position.set(fx, fy, fz);
        scene.add(fly);
        var ph3 = Math.random() * 10;
        window._dynamics.push(function(t){
          fly.position.x = fx + Math.sin(t * 0.7 + ph3) * 5;
          fly.position.z = fz + Math.cos(t * 0.6 + ph3) * 5;
          fly.position.y = fy + Math.sin(t * 1.2 + ph3) * 2;
          fly.material.opacity = 0.5 + Math.sin(t * 3 + ph3) * 0.5;
        });
      })();
    }

    /* STATUES — the Royal Family, monumental */
    var statueMat = new THREE.MeshStandardMaterial({color: 0x888888, roughness: 0.7, metalness: 0.3});
    var statuePos = [[50, 50], [-50, 50], [50, -50], [-50, -50]];
    for(var st = 0; st < 4; st++){
      var sx = statuePos[st][0], sz = statuePos[st][1];
      var ped = new THREE.Mesh(new THREE.BoxGeometry(6, 3, 6), darkMat);
      ped.position.set(sx, 1.5, sz);
      scene.add(ped);
      var fig = new TH