<!-- RUBY-BACKUP · part 162 -->
_PANEL = null;
var SOLID_PANEL_TAB = 'touch'; /* touch, eyes, map, bars, tasks */
function buildSolidPanel(){
  try{
    if(SOLID_PANEL) return;
    SOLID_PANEL = document.createElement('div');
    SOLID_PANEL.id = 'solid-panel';
    SOLID_PANEL.style.cssText = 'position:fixed;left:12px;top:35%;z-index:10000;display:none;'
      + 'flex-direction:column;gap:8px;background:rgba(10,8,4,0.85);'
      + 'border:1px solid #8a6a1c;border-radius:16px;padding:8px;max-height:50vh;overflow-y:auto;';
    // knob removed — 🤲 is the button now
      + 'background:rgba(10,10,15,0.95);border-top:2px solid #ffd700;'
      + 'padding:10px;display:flex;flex-direction:column;gap:8px;'
      + 'font-family:sans-serif;touch-action:manipulation;';
    /* tab bar */
    var tabs = document.createElement('div');
    tabs.style.cssText = 'display:flex;gap:4px;justify-content:center;';
    var tabNames = ['touch','eyes','map','bars','tasks','controls'];
    var tabIcons = {'touch':'👆','eyes':'👁️','map':'🗺️','bars':'📊','tasks':'✅','controls':'🗺️'};
    tabNames.forEach(function(t){
      var btn = document.createElement('button');
      btn.textContent = tabIcons[t];
      btn.style.cssText = 'padding:10px;font-size:22px;background:rgba(255,215,0,0.1);'
        + 'border:1px solid #ffd700;border-radius:8px;color:#ffd700;cursor:pointer;min-width:48px;';
      btn.onclick = function(){ showSolidPanelTab(t); };
      btn.id = 'solid-tab-' + t;
      tabs.appendChild(btn);
    });
    SOLID_PANEL.appendChild(tabs);
    /* content area */
    var content = document.createElement('div');
    content.id = 'solid-panel-content';
    content.style.cssText = 'min-height:120px;display:flex;align-items:center;justify-content:center;'
      + 'color:#fff;font-size:16px;';
    SOLID_PANEL.appendChild(content);
    document.body.appendChild(SOLID_PANEL);
    showSolidPanelTab('touch');
  }catch(e){}
}
function showSolidPanelTab(tab){
  try{
    SOLID_PANEL_TAB = tab;
    var content = document.getElementById('solid-panel-content');
    if(!content) return;
    /* highlight active tab */
    ['touch','eyes','map','bars','tasks','controls'].forEach(function(t){
      var b = document.getElementById('solid-tab-' + t);
      if(b) b.style.background = (t===tab ? 'rgba(255,215,0,0.3)' : 'rgba(255,215,0,0.1)');
    });
    content.innerHTML = '';
    if(tab==='controls'){
      content.innerHTML = '<div style="text-align:center;padding:20px;">'
        + '<div style="font-size:48px;margin-bottom:12px;">🗺️</div>'
        + '<div style="color:#ffd700;font-size:14px;margin-bottom:16px;">The Control Map<br><span style="color:#aaa;font-size:12px;">Every control, editable.<br>Updated never replaced.</span></div>'
        + '<button onclick="window.open(\'/control-map.html\',\'_blank\')" style="padding:14px 28px;font-size:16px;background:#ffd700;color:#111;border:none;border-radius:10px;cursor:pointer;">Open Control Map</button>'
        + '</div>';
      return;
    }
    if(tab==='touch'){
      var tools = [
        ['🎯','calibrate'], ['🥞','layer'], ['🧲','snap'], ['✂️','section'],
        ['🌊','smooth'], ['⚔️','sharpen'], ['🌙','bend'], ['↔️','stretch'],
        ['🔄','flip'], ['🕳️','hollow'], ['👥','duplicate'], ['🎨','color'],
        ['↩️','undo']
      ];
      var html = '<div style="display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:8px;">';
      tools.forEach(function(t){
        html += '<button onclick="runCodeByName(\''+t[1]+'\')" style="padding:10px;font-size:20px;'
          + 'background:rgba(255,215,0,0.1);border:1px solid #ffd700;border-radius:6px;cursor:pointer;">'
          + t[0] + '</button>';
      });
      html += '</div>';
      content.innerHTML = html;
    }else if(tab==='eyes'){
      var eyes = document.createElement('div');
      eyes.style.cssText = 'display:flex;gap:6px;flex-wrap:wrap;justify-content:center;';
      ['Far','Crown','Left','Right','Above','Below','Mirror'].forEach(function(v){
        var b = document.createElement('button');
        b.textContent = v;
        b.style.cssText = 'padding:10px 14px;background:rgba(0,255,255,0.1);border:1px solid #00ffff;'
          + 'border-radius:6px;color:#00ffff;cursor:pointer;font-size:14px;';
        b.onclick = function(){ try{ if(typeof goCameraView==='function') goCameraView(v.toLowerCase()); }catch(e){} };
        eyes.appendChild(b);
      });
      content.appendChild(eyes);
    }else if(tab==='map'){
      var mb = document.createElement('button');
      mb.textContent = '🗺️ Open Map';
      mb.style.cssText = 'padding:14px 28px;background:rgba(255,215,0,0.2);border:2px solid #ffd700;'
        + 'border-radius:8px;color:#ffd700;font-size:18px;cursor:pointer;';
      mb.onclick = function(){ try{ if(typeof toggleHolomap==='function') toggleHolomap(); }catch(e){} };
      content.appendChild(mb);
    }else if(tab==='bars'){
      var bars = document.createElement('div');
      bars.style.cssText = 'width:100%;p