<!-- SAGA · part 75 -->
    var ped = new THREE.Mesh(new THREE.CylinderGeometry(3, 3.6, 4, 12), marble);
      ped.position.set(px, 4, pz); scene.add(ped);
      var blk = b.make();
      blk.position.set(px, 9, pz);
      blk.userData.pickBlock = b.n;
      scene.add(reg(blk));
      var lb = label(b.n); lb.position.set(px, 13.5, pz); scene.add(lb);
    });
    /* 13 tool stations — north arc, named */
    var tools = ['Duplicate','Color','Flip','Stretch','Bend','Snap','Calibrate','Layer','Section','Smooth','Sharpen','Hollow','Undo'];
    tools.forEach(function(t, i){
      var a = (i / (tools.length-1)) * Math.PI - Math.PI/2; /* north arc */
      var px = cx + Math.cos(a) * 40, pz = cz - Math.sin(a) * 40 - 18;
      var st = new THREE.Mesh(new THREE.BoxGeometry(3, 7, 3), dark);
      st.position.set(px, 5.5, pz); scene.add(reg(st));
      var tp = new THREE.Mesh(new THREE.OctahedronGeometry(1.2), i%3===0?cyan:gold);
      tp.position.set(px, 10.5, pz); tp.userData.toolName = t; scene.add(reg(tp));
      var lb = label(t); lb.position.set(px, 13, pz); scene.add(lb);
    });
    /* Render gate — the gold export arch at the entrance */
    var gate = new THREE.Group();
    var l1 = new THREE.Mesh(new THREE.BoxGeometry(3, 18, 3), gold); l1.position.set(-8, 9, 0); gate.add(l1);
    var l2 = new THREE.Mesh(new THREE.BoxGeometry(3, 18, 3), gold); l2.position.set(8, 9, 0); gate.add(l2);
    var beam = new THREE.Mesh(new THREE.BoxGeometry(20, 3, 3), gold); beam.position.set(0, 19, 0); gate.add(beam);
    gate.position.set(cx, 2, cz + 58);
    gate.userData.creatorBlock = true;
    scene.add(reg(gate));
    var gl = label('RENDER & EXPORT'); gl.position.set(cx, 26, cz + 58); scene.add(gl);
    if(typeof say === 'function') say('The Creator Studio V-0.13 rises');
  }catch(e){}
}
if(typeof buildCreatorStudioV13 === 'function'){ window._buildQueue.push(buildCreatorStudioV13); }


/* v90 — THE FOUR BRANCH BOXES. One monolith per /playaspace branch, numbered
   and named, in a row east of Playa's monument. Each page links to its box. */
function buildBranchBoxes(){
  try{
    var gold = new THREE.MeshStandardMaterial({color:0xd8a920, roughness:0.3, metalness:0.8});
    var dark = new THREE.MeshStandardMaterial({color:0x1a1a2e, roughness:0.6, metalness:0.4});
    var defs = [
      {n:1, name:'UNFOLD', x:60},
      {n:2, name:'STAND', x:78},
      {n:3, name:'BUILD', x:96},
      {n:4, name:'SIGHT', x:114}
    ];
    defs.forEach(function(d){
      var cv = document.createElement('canvas'); cv.width = 256; cv.height = 256;
      var c = cv.getContext('2d');
      c.fillStyle = '#0a0a12'; c.fillRect(0, 0, 256, 256);
      c.strokeStyle = '#ffd700'; c.lineWidth = 6; c.strokeRect(8, 8, 240, 240);
      c.font = 'bold 120px Georgia'; c.textAlign = 'center';
      c.shadowColor = '#ffd700'; c.shadowBlur = 20;
      c.fillStyle = '#ffe9a8'; c.fillText(d.n, 128, 150);
      c.font = 'bold 34px Georgia'; c.shadowBlur = 8;
      c.fillText(d.name, 128, 210);
      var tex = new THREE.CanvasTexture(cv);
      var face = new THREE.MeshStandardMaterial({map:tex, roughness:0.5, metalness:0.3, emissive:0xffffff, emissiveMap:tex, emissiveIntensity:0.25});
      var g = new THREE.Group();
      var pillar = new THREE.Mesh(new THREE.BoxGeometry(8, 14, 8), [face, face, gold, gold, face, face]);
      pillar.position.y = 7;
      pillar.userData.creatorBlock = true;
      pillar.userData.branchBox = d.n;
      pillar.userData.branchName = d.name;
      g.add(pillar);
      var cap = new THREE.Mesh(new THREE.BoxGeometry(9.5, 1.5, 9.5), gold);
      cap.position.y = 14.75; cap.userData.creatorBlock = true; cap.userData.branchBox = d.n; g.add(cap);
      var base = new THREE.Mesh(new THREE.BoxGeometry(9.5, 1.5, 9.5), gold);
      base.position.y = 0.75; base.userData.creatorBlock = true; base.userData.branchBox = d.n; g.add(base);
      g.position.set(d.x, 0, 3333.6);
      g.userData.creatorBlock = true;
      g.userData.branchBox = d.n;
      scene.add(g);
      if(typeof placedBlocks !== 'undefined') placedBlocks.push(g);
      /* v91 — sky marker: a gold light pillar so the box is findable across the map */
      var beam = new THREE.Mesh(
        new THREE.CylinderGeometry(1.2, 1.2, 400, 8),
        new THREE.MeshBasicMaterial({color:0xffd700, transparent:true, opacity:0.32, blending:THREE.AdditiveBlending, depthWrite:false})
      );
      beam.position.set(d.x, 200, 3333.6);
      scene.add(beam);
    });
    if(typeof say === 'function') say('The four branches stand');
  }catch(e){}
}
if(typeof buildBranchBoxes === 'function'){ window._buildQueue.push(buildBranchBoxes); }

/* v84 — BUILD QUEUE DRAINER. Runs queued builders across frames with a
   startup burst budget (40ms/frame — overlay hides the jank), real progress
   on the overlay. Double-rAF so the overlay paints before heavy work. */
(function(){
  var total = window._buildQueue.length, done = 0;
  var msg = document.getElementById('buildloadmsg');
  var bar = document.get