<!-- SAGA-SOLID · part 50 -->
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 existingBox = new THREE.Box3().setFromObject(placedBlocks[i]);
      if(newBox.intersectsBox(existingBox)) return true;
    }
    return false;
  }
  function makeBlock(type){
    var g = new THREE.Group();
    if(type === 'cube'){
      g.add(new THREE.Mesh(new THREE.BoxGeometry(4,4,4), goldMat.clone()));
    } else if(type === 'hourglass'){
      var t = new THREE.Mesh(new THREE.ConeGeometry(2,3,4), goldMat.clone()); t.rotation.x = Math.PI; t.position.y = 1.5; g.add(t);
      var b = new THREE.Mesh(new THREE.ConeGeometry(2,3,4), goldMat.clone()); b.position.y = -1.5; g.add(b);
    } else if(type === 'pylon'){
      