<!-- SAGA · part 53 -->
tyle.display === 'flex') return;
    var x = (e.clientX / window.innerWidth) * 2 - 1;
    var y = -(e.clientY / window.innerHeight) * 2 + 1;
    mouse.set(x, y);
    raycaster.setFromCamera(mouse, window._sagaCamera);
    var hits = raycaster.intersectObject(utop);
    if(hits.length > 0){
      if(!unfolded) window._unfoldPlaya();
      else window._foldPlaya();
      utop.position.z = cz + 0.5;
      setTimeout(function(){ utop.position.z = cz + 1.5; }, 200);
    }
  });
  if(typeof trackNewThing === 'function') trackNewThing('playa2', 'Playa 2.0 — unfolds with the gold diamond button');
})();


/* IN-WORLD CREATOR v2 — toggle/switch interpretative system, no overlap, auto-align 0-60 */
(function(){
  if(document.getElementById('creator-ui')) return;
  var goldMat = new THREE.MeshStandardMaterial({color:0xd4a017, roughness:0.4, metalness:0.6});
  var marbleMat = new THREE.MeshStandardMaterial({color:0xf5f5f5, roughness:0.3});
  var cyanMat = new THREE.MeshStandardMaterial({color:0x00ccff, roughness:0.3, metalness:0.5});
  // Toggle switch CSS
  var toggleCSS = '<style>' +
    '.ctoggle{position:relative;width:60px;height:32px;background:#1a1a2e;border:2px solid #ffd700;border-radius:16px;cursor:pointer;flex-shrink:0;}' +
    '.ctoggle.on{background:#2a4a1a;}' +
    '.ctoggle::after{content:"";position:absolute;top:2px;left:2px;width:24px;height:24px;background:#ffd700;border-radius:50%;transition:left 0.2s;}' +
    '.ctoggle.on::after{left:30px;}' +
    '.cswitch-row{display:flex;align-items:center;justify-content:space-between;padding:10px;margin:6px 0;background:#1a1a2e;border:1px solid #ffd700;border-radius:8px;min-height:56px;}' +
    '.cswitch-row span{font-size:14px;}' +
    '</style>';
  var panel = document.createElement('div');
  panel.id = 'creator-ui';
  panel.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;z-index:10002;' +
    'background:rgba(5,5,10,0.95);display:none;flex-direction:column;color:#ffd700;font-family:system-ui;';
  panel.innerHTML = toggleCSS +
    '<div style="display:flex;justify-content:space-between;align-items:center;padding:12px;border-bottom:1px solid #ffd700;">' +
    '<h2 style="margin:0;font-size:18px;letter-spacing:2px;">THE CREATOR</h2>' +
    '<button id="creator-close" style="background:#1a1a2e;color:#ffd700;border:1px solid #ffd700;border-radius:8px;padding:8px 16px;min-height:48px;cursor:pointer;">✕</button>' +
    '</div>' +
    '<div style="display:flex;flex:1;overflow:hidden;">' +
    // Blocks (toggles)
    '<div style="width:160px;border-right:1px solid #ffd700;padding:8px;overflow-y:auto;">' +
    '<h3 style="font-size:12px;margin:0 0 8px 0;">BLOCKS</h3>' +
    '<div class="cswitch-row"><span>⬛ Cube</span><div class="ctoggle" data-block="cube"></div></div>' +
    '<div class="cswitch-row"><span>⏳ V-Core</span><div class="ctoggle" data-block="hourglass"></div></div>' +
    '<div class="cswitch-row"><span>🗼 Pylon</span><div class="ctoggle" data-block="pylon"></div></div>' +
    '<div class="cswitch-row"><span>🔺 Tetra</span><div class="ctoggle" data-block="tetra"></div></div>' +
    '<div class="cswitch-row"><span>🔼 Pyramid</span><div class="ctoggle" data-block="pyramid"></div></div>' +
    '</div>' +
    // Tools (toggles)
    '<div style="flex:1;padding:8px;overflow-y:auto;">' +
    '<h3 style="font-size:12px;margin:0 0 8px 0;">TOOLS</h3>' +
    '<div class="cswitch-row"><span>👆 Select</span><div class="ctoggle" data-tool="select"></div></div>' +
    '<div class="cswitch-row"><span>✥ Move</span><div class="ctoggle" data-tool="move"></div></div>' +
    '<div class="cswitch-row"><span>🔄 Rotate</span><div class="ctoggle" data-tool="rotate"></div></div>' +
    '<div class="cswitch-row"><span>⤢ Scale</span><div class="ctoggle" data-tool="scale"></div></div>' +
    '<div class="cswitch-row"><span>📋 Duplicate</span><div class="ctoggle" data-tool="duplicate"></div></div>' +
    '<div class="cswitch-row"><span>🎨 Color</span><div class="ctoggle" data-tool="color"></div></div>' +
    '<div class="cswitch-row"><span>📐 Align 0-60</span><div class="ctoggle" data-tool="align"></div></div>' +
    '<div class="cswitch-row"><span>🗑 Delete</span><div class="ctoggle" data-tool="delete"></div></div>' +
    '<div class="cswitch-row"><span>↩ Undo</span><div class="ctoggle" data-tool="undo"></div></div>' +
    '<div id="creator-status" style="margin-top:12px;padding:12px;border:1px solid #ffd700;border-radius:8px;min-height:40px;font-size:13px;">Flip a block switch to spawn it</div>' +
    '</div></div>';
  document.body.appendChild(panel);
  var undoStack = [];
  var selected = null;
  var activeTool = 'select';
  var placedBlocks = [];
  function status(msg){ var el = document.getElementById('creator-status'); if(el) el.textContent = msg; }
  // NO OVERLAP: check bounding boxes
  function wouldOverlap(newObj){
    var newBox = new THREE.Box3().setFromObject(newObj);
    for(var i=0; i<placedBlocks.length; i++){
      var e