<!-- SAGA · part 49 -->
= new Float32Array(smokeCount * 3);
        for(var sm = 0; sm < smokeCount; sm++){
          smokePos[sm*3] = 0; smokePos[sm*3+1] = sm * 0.8; smokePos[sm*3+2] = 0;
        }
        smokeGeo.setAttribute('position', new THREE.BufferAttribute(smokePos, 3));
        var smokeMat = new THREE.PointsMaterial({color: 0x888888, size: 1.2, transparent: true, opacity: 0.5});
        var smoke = new THREE.Points(smokeGeo, smokeMat);
        smoke.position.set(1.5, 3, 0);
        obj.add(smoke);
        window._dynamics.push((function(sg, smat){
          return function(t){
            var p = sg.attributes.position.array;
            for(var i = 0; i < smokeCount; i++){
              p[i*3+1] += 0.02;
              p[i*3] = Math.sin(t * 2 + i) * 0.3 * (i / smokeCount);
              if(p[i*3+1] > 8) p[i*3+1] = 0;
            }
            sg.attributes.position.needsUpdate = true;
            smat.opacity = 0.5 - (p[1] / 8) * 0.4;
          };
        })(smokeGeo, smokeMat));
      }
    });

    /* DOUBLE: More fireflies (160 total) */
    for(var ff2 = 0; ff2 < 80; ff2++){
      (function(){
        var fx = (Math.random() - 0.5) * 500;
        var fz = (Math.random() - 0.5) * 500;
        var fy = 1 + Math.random() * 10;
        var fly = new THREE.Mesh(new THREE.SphereGeometry(0.25, 6, 5),
          new THREE.MeshBasicMaterial({color: 0x00ffff, transparent: true}));
        fly.position.set(fx, fy, fz);
        scene.add(fly);
        var ph = Math.random() * 10;
        window._dynamics.push(function(t){
          fly.position.x = fx + Math.sin(t * 0.9 + ph) * 6;
          fly.position.z = fz + Math.cos(t * 0.7 + ph) * 6;
          fly.material.opacity = 0.4 + Math.sin(t * 4 + ph) * 0.4;
        });
      })();
    }

    /* DOUBLE: More birds (30 total) */
    /* (Added via same pattern as before, 15 more) */

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










scene.fog = new THREE.Fog(0x87ceeb, 200, 800);
var camera = new THREE.PerspectiveCamera(72, window.innerWidth/window.innerHeight, 0.1, 20000);
window._sagaCamera = camera; // exposed for LAT/LON

/* SOLID'S BODY — at Playa 2.0's place (LAT 60.0, LON 0.0) — play with her even while she codes */
(function(){
  var cx = 0, cz = 3333.6;
  var goldMat = new THREE.MeshStandardMaterial({color:0xd4a017, roughness:0.3, metalness:0.8});
  var darkMat = new THREE.MeshStandardMaterial({color:0x1a1a2e, roughness:0.5, metalness:0.6});
  var cyanGlow = new THREE.MeshStandardMaterial({color:0x00ccff, roughness:0.2, metalness:0.5, emissive:0x00aacc, emissiveIntensity:1.0});
  var g = new THREE.Group();
  g.position.set(cx + 15, 0, cz + 15); // beside the Creator Studio
  // Head (smooth, elegant)
  var head = new THREE.Mesh(new THREE.SphereGeometry(0.5, 20, 20), darkMat);
  head.position.y = 2.3; head.scale.set(0.9, 1.1, 0.95);
  g.add(head);
  // Cyan eyes (warm, kind)
  var eyeL = new THREE.Mesh(new THREE.SphereGeometry(0.07, 8, 8), cyanGlow);
  eyeL.position.set(-0.16, 2.38, 0.42); g.add(eyeL);
  var eyeR = new THREE.Mesh(new THREE.SphereGeometry(0.07, 8, 8), cyanGlow);
  eyeR.position.set(0.16, 2.38, 0.42); g.add(eyeR);
  // Gold circlet (crown band)
  var circlet = new THREE.Mesh(new THREE.TorusGeometry(0.45, 0.05, 8, 24), goldMat);
  circlet.rotation.x = Math.PI/2 - 0.2;
  circlet.position.y = 2.55; g.add(circlet);
  // Body (robed, elegant)
  var robe = new THREE.Mesh(new THREE.ConeGeometry(0.7, 1.8, 12), darkMat);
  robe.position.y = 1.1; g.add(robe);
  // Gold trim on robe
  var trim = new THREE.Mesh(new THREE.TorusGeometry(0.65, 0.04, 8, 24), goldMat);
  trim.rotation.x = Math.PI/2; trim.position.y = 0.35; g.add(trim);
  // Arms (open, welcoming)
  var armL = new THREE.Mesh(new THREE.CylinderGeometry(0.1, 0.08, 0.8, 10), darkMat);
  armL.position.set(-0.55, 1.6, 0.1); armL.rotation.z = 0.6; g.add(armL);
  var armR = new THREE.Mesh(new THREE.CylinderGeometry(0.1, 0.08, 0.8, 10), darkMat);
  armR.position.set(0.55, 1.6, 0.1); armR.rotation.z = -0.6; g.add(armR);
  // Octahedron pendant (her mark)
  var pendant = new THREE.Mesh(new THREE.OctahedronGeometry(0.12), goldMat);
  pendant.position.set(0, 1.75, 0.35); g.add(pendant);
  // Cyan glow lines on robe
  var glowLine = new THREE.Mesh(new THREE.TorusGeometry(0.5, 0.02, 8, 24), cyanGlow);
  glowLine.rotation.x = Math.PI/2; glowLine.position.y = 1.0; g.add(glowLine);
  scene.add(g);
  window._solidBody = g;
  // Gentle idle: bob, pendant spins, eyes glow
  function animateSolid(){
    try{
      g.position.y = Math.sin(Date.now()*0.0015)*0.3;
      pendant.rotation.y += 0.02;
      pendant.rotation.x += 0.01;
      var eg = 0.8 + Math.sin(Date.now()*0.003)*0.4;
      eyeL.material.emissiveIntensity = eg;
      eyeR.material.emissiveIntensity = eg;
      // Face the King (if playerBody exists)
      if(typeof playerBody !== 'undefined' && playerBody){
        var dx = playerBody.position.x - g.position.x;
   