<!-- SAGA2 · part 81 -->
om()*Math.PI*2, p=Math.random()*Math.PI*0.49, r=13000;
    pos[i*3]=500+r*Math.sin(p)*Math.cos(t);
    pos[i*3+1]=300+r*Math.cos(p)*0.55;
    pos[i*3+2]=500+r*Math.sin(p)*Math.sin(t);
  }
  var g=new THREE.BufferGeometry(); g.setAttribute('position',new THREE.BufferAttribute(pos,3));
  scene.add(new THREE.Points(g,new THREE.PointsMaterial({color:0xffffff,size:20,sizeAttenuation:false,transparent:true,opacity:0.95})));
})();

// --- aurora: my learning of the sky ---
var auroras=[];
(function(){
  var cols=[0xff44aa,0x8844ff,0x44ffdd,0xff8844,0x44aaff,0xff44ff];
  for(var k=0;k<6;k++){
    var m=new THREE.Mesh(new THREE.PlaneGeometry(9000,420,64,1),
      new THREE.MeshBasicMaterial({color:cols[k],transparent:true,opacity:0.18,
        side:THREE.DoubleSide,depthWrite:false,blending:THREE.AdditiveBlending}));
    m.position.set(500+(k-2.5)*500, 2100-k*120, 500-k*600);
    m.rotation.y=k*0.35; m.userData.phase=k*1.2;
    scene.add(m); auroras.push(m);
  }
})();

// --- THE HEART: a golden monument at center, my art ---
(function(){
  var cx=500, cz=500;
  // stepped pyramid base
  for(var s=0;s<5;s++){
    var size=160-s*26, h=24;
    var step=new THREE.Mesh(new THREE.BoxGeometry(size,h,size),
      new THREE.MeshStandardMaterial({color:0x8a6d2a,roughness:0.5,metalness:0.6,
        emissive:0x443300,emissiveIntensity:0.4}));
    step.position.set(cx, h/2+s*24, cz);
    scene.add(step);
  }
  // central spire
  var spire=new THREE.Mesh(new THREE.CylinderGeometry(8,20,320,8),
    new THREE.MeshStandardMaterial({color:0xd4a017,roughness:0.3,metalness:0.85,
      emissive:0x885500,emissiveIntensity:0.7}));
  spire.position.set(cx, 120+160, cz); scene.add(spire);
  // crown of light
  var crown=new THREE.Mesh(new THREE.OctahedronGeometry(30),
    new THREE.MeshBasicMaterial({color:0xffeebb}));
  crown.position.set(cx, 300, cz); scene.add(crown);
  window._crown=crown;
  var cLight=new THREE.PointLight(0xffeebb, 3, 1500);
  cLight.position.set(cx, 300, cz); scene.add(cLight);
  // orbiting gold rings
  for(var r=0;r<3;r++){
    var ring=new THREE.Mesh(new THREE.TorusGeometry(60+r*35,4,8,48),
      new THREE.MeshBasicMaterial({color:0xffd766,transparent:true,opacity:0.8}));
    ring.position.set(cx, 200+r*50, cz);
    ring.rotation.x=Math.PI/2+r*0.3;
    ring.userData={s:0.2+r*0.15, p:r*2};
    scene.add(ring);
    (window._rings=window._rings||[]).push(ring);
  }
})();

// --- marauder feeling: red watchtowers at the edges ---
(function(){
  var spots=[[-600,-600],[1100,-500],[-500,1100],[1100,1100],[500,-800],[-800,500]];
  spots.forEach(function(p){
    var x=500+p[0], z=500+p[1];
    var tower=new THREE.Mesh(new THREE.CylinderGeometry(10,16,140,6),
      new THREE.MeshStandardMaterial({color:0x2a1a1a,roughness:0.7,metalness:0.3,wireframe:true}));
    tower.position.set(x,70,z); scene.add(tower);
    var eye=new THREE.Mesh(new THREE.SphereGeometry(12,12,12),
      new THREE.MeshBasicMaterial({color:0xff2222,wireframe:true}));
    eye.position.set(x,150,z); scene.add(eye);
    var eLight=new THREE.PointLight(0xff2222,1.5,500);
    eLight.position.set(x,150,z); scene.add(eLight);
  });
})();

// --- golden paths spiraling out ---
(function(){
  var mat=new THREE.MeshStandardMaterial({color:0xd4a52e,roughness:0.4,metalness:0.5,
    emissive:0x664400,emissiveIntensity:0.6});
  for(var s=0;s<6;s++){
    var a0=(s/6)*Math.PI*2;
    for(var i=0;i<20;i++){
      var a=a0+i*0.08, r1=180+i*45, r2=180+(i+1)*45;
      var seg=new THREE.Mesh(new THREE.BoxGeometry(48,3,16),mat);
      var mx=500+Math.cos(a)*(r1+r2)/2, mz=500+Math.sin(a)*(r1+r2)/2;
      seg.position.set(mx,1.5,mz);
      seg.rotation.y=-a;
      seg.visible=false; // hidden — King: clear the yellow bricks
      scene.add(seg);
    }
  }
})();

// --- blimps: my learning of the sky ships ---
var blimps=[];
(function(){
  var goldM=new THREE.MeshStandardMaterial({color:0xd4a017,roughness:0.3,metalness:0.8,
    emissive:0x664400,emissiveIntensity:0.6});
  for(var i=0;i<8;i++){
    var grp=new THREE.Group();
    var body=new THREE.Mesh(new THREE.SphereGeometry(28,16,14),goldM);
    body.scale.set(2,1,1); grp.add(body);
    var a=(i/8)*Math.PI*2;
    grp.userData={a:a,r:600+Math.random()*600,h:350+Math.random()*200,s:0.02+Math.random()*0.02};
    scene.add(grp); blimps.push(grp);
  }
})();

// --- movement ---
var keys={};
window.addEventListener('keydown',function(e){keys[e.key.toLowerCase()]=true;});
window.addEventListener('keyup',function(e){keys[e.key.toLowerCase()]=false;});
var dragging=false,px=0,py=0,yaw=0,pitch=-0.062;
var _touchMode=false;
renderer.domElement.addEventListener('pointerdown',function(e){
  if(e.pointerType==='touch'){ _touchMode=true; return; }
  dragging=true;px=e.clientX;py=e.clientY;
});
window.addEventListener('pointerup',function(e){
  if(e.pointerType==='touch'){ _touchMode=false; return; }
  dragging=false;
});
window.addEventListener('pointermove',function(e){
  if(_touchMode||e.pointerType==='touch')ret