<!-- SAGA · part 48 -->
(obj){
      if(obj.isMesh && obj.geometry && obj.geometry.type === 'SphereGeometry' && obj.geometry.parameters.radius === 0.5){
        /* This is a flower bloom — add petals */
        var petalMat = obj.material;
        for(var pt = 0; pt < 5; pt++){
          var pa = (pt / 5) * Math.PI * 2;
          var petal = new THREE.Mesh(new THREE.PlaneGeometry(0.4, 0.8), petalMat);
          petal.position.set(Math.cos(pa) * 0.5, 0, Math.sin(pa) * 0.5);
          petal.rotation.y = -pa;
          petal.rotation.x = -0.4;
          obj.add(petal);
        }
      }
    });

    /* DETAILED: Statues get arms and robes */
    scene.traverse(function(obj){
      if(obj.isMesh && obj.geometry && obj.geometry.type === 'CylinderGeometry' && obj.position.y === 8){
        /* Statue body — add arms */
        var armMat = obj.material;
        for(var arm = 0; arm < 2; arm++){
          var armMesh = new THREE.Mesh(new THREE.CylinderGeometry(0.4, 0.5, 6, 6), armMat);
          var side = arm === 0 ? -1 : 1;
          armMesh.position.set(side * 2.5, 2, 0);
          armMesh.rotation.z = side * 0.4;
          obj.add(armMesh);
        }
        /* Robe folds */
        for(var rf = 0; rf < 4; rf++){
          var fold = new THREE.Mesh(new THREE.BoxGeometry(0.3, 8, 0.3), armMat);
          var fa = (rf / 4) * Math.PI * 2;
          fold.position.set(Math.cos(fa) * 1.8, -1, Math.sin(fa) * 1.8);
          obj.add(fold);
        }
      }
    });

    /* DETAILED: Roads get curbs */
    var curbMat = new THREE.MeshStandardMaterial({color: 0x555555, roughness: 0.9});
    scene.traverse(function(obj){
      if(obj.isMesh && obj.geometry && obj.geometry.type === 'BoxGeometry'){
        var rp = obj.geometry.parameters;
        if(rp && rp.height === 0.15 && rp.width === 4 && rp.depth > 20){
          /* Road — add curbs on both sides */
          for(var cs = 0; cs < 2; cs++){
            var side2 = cs === 0 ? -1 : 1;
            var curb = new THREE.Mesh(new THREE.BoxGeometry(0.5, 0.4, rp.depth), curbMat);
            /* Position relative to road rotation */
            var localX = side2 * 2.25;
            curb.position.set(localX, 0.1, 0);
            obj.add(curb);
          }
        }
      }
    });

  }catch(e){}
}
if(typeof detailEverything === 'function'){ window._idleQueue.push(detailEverything); /* v85 — idle streaming */ }

/* 40,000 PASSES — double the intricacy. Atmosphere, particles, life. 2026-10-04. */
function ultraDetail(){
  try{
    window._dynamics = window._dynamics || [];

    /* FALLING LEAVES in the forest */
    var leafGeo = new THREE.BufferGeometry();
    var leafCount = 300;
    var leafPos = new Float32Array(leafCount * 3);
    var leafData = [];
    for(var l = 0; l < leafCount; l++){
      var lx = -250 + Math.random() * 200;
      var lz = 100 + Math.random() * 150;
      leafPos[l*3] = lx; leafPos[l*3+1] = 5 + Math.random() * 10; leafPos[l*3+2] = lz;
      leafData.push({x: lx, z: lz, speed: 0.5 + Math.random(), phase: Math.random() * 10});
    }
    leafGeo.setAttribute('position', new THREE.BufferAttribute(leafPos, 3));
    var leafMat = new THREE.PointsMaterial({color: 0x00aa00, size: 0.8, transparent: true, opacity: 0.8});
    var leaves = new THREE.Points(leafGeo, leafMat);
    scene.add(leaves);
    window._dynamics.push(function(t){
      var p = leafGeo.attributes.position.array;
      for(var i = 0; i < leafCount; i++){
        var d = leafData[i];
        p[i*3+1] -= d.speed * 0.03;
        p[i*3] = d.x + Math.sin(t * 1.5 + d.phase) * 2;
        if(p[i*3+1] < 0.2) p[i*3+1] = 12;
      }
      leafGeo.attributes.position.needsUpdate = true;
    });

    /* DUST MOTES everywhere */
    var dustGeo = new THREE.BufferGeometry();
    var dustCount = 500;
    var dustPos = new Float32Array(dustCount * 3);
    for(var d2 = 0; d2 < dustCount; d2++){
      dustPos[d2*3] = (Math.random() - 0.5) * 500;
      dustPos[d2*3+1] = Math.random() * 30;
      dustPos[d2*3+2] = (Math.random() - 0.5) * 500;
    }
    dustGeo.setAttribute('position', new THREE.BufferAttribute(dustPos, 3));
    var dustMat = new THREE.PointsMaterial({color: 0xffd700, size: 0.4, transparent: true, opacity: 0.4});
    var dust = new THREE.Points(dustGeo, dustMat);
    scene.add(dust);
    window._dynamics.push(function(t){
      dust.rotation.y = t * 0.01;
      dustMat.opacity = 0.3 + Math.sin(t * 0.8) * 0.15;
    });

    /* CHIMNEY SMOKE on village houses */
    scene.traverse(function(obj){
      if(obj.isMesh && obj.geometry && obj.geometry.type === 'ConeGeometry' && obj.position.y === 5.5){
        /* House roof — add chimney and smoke */
        var chimney = new THREE.Mesh(new THREE.CylinderGeometry(0.4, 0.4, 2, 6),
          new THREE.MeshStandardMaterial({color: 0x555555, roughness: 0.9}));
        chimney.position.set(1.5, 2, 0);
        obj.add(chimney);
        /* Smoke particles */
        var smokeGeo = new THREE.BufferGeometry();
        var smokeCount = 10;
        var smokePos 