<!-- NEWWORLD · part 3 -->
E.MeshStandardMaterial({
      color: 0xffd700,    // Gold — the King's color
      roughness: 0.5      // Slight shine
    })
  );
  mesh.position.set(0, 1, 0);  // Float 1 unit above ground
  mesh.castShadow = true;       // Casts shadow on ground
  Engine.scene.add(mesh);
  
  /* ----- SYNC ----- */
  // Call each frame to match mesh to logical position
  function update(){
    mesh.position.set(pos.x, 1, pos.z);
  }
  
  /* ----- PUBLIC API ----- */
  return {
    pos: pos,      // Read/write position here
    mesh: mesh,    // Direct mesh access (rarely needed)
    update: update // Sync mesh to pos
  };
})();


===== FILE: public/newworld/radio.js =====
/* ============================================================
   RADIO.js
   Category: AUDIO / SOUL PRINT
   Purpose: Soul Print Radio — 333 songs, official source
   Dependencies: None (standalone, uses HTML5 Audio)
   Provides: Radio.show(), Radio.toggle(), Radio.next()
   Source: /SolidBigIsland/songs.json + /SolidBigIsland/mp3/
   ============================================================ */

var Radio = (function(){
  'use strict';
  
  /* ----- STATE ----- */
  var audio = null;       // HTML5 Audio element
  var playlist = [];      // 333 songs from songs.json
  var current = 0;        // Current track index
  var playing = false;    // Playback state
  
  /* ----- PLAYLIST LOADING ----- */
  // Fetches the King's 333 songs on init
  function loadPlaylist(){
    fetch('/SolidBigIsland/songs.json')
      .then(function(r){ return r.json(); })
      .then(function(data){
        playlist = data.songs || [];
        console.log('Radio loaded: ' + playlist.length + ' songs');
        updateTrackInfo();
      })
      .catch(function(e){
        console.error('Radio playlist failed:', e.message);
      });
  }
  
  /* ----- UI CONSTRUCTION ----- */
  // Builds the radio panel (hidden by default)
  function createUI(){
    var panel = document.createElement('div');
    panel.id = 'radio-panel';
    panel.style.cssText = [
      'position:fixed',
      'bottom:120px',
      'right:10px',
      'width:280px',
      'background:rgba(10,10,20,0.95)',
      'border:2px solid #00ffff',
      'border-radius:12px',
      'padding:12px',
      'color:#fff',
      'font-family:sans-serif',
      'z-index:9999',
      'display:none'
    ].join(';');
    
    panel.innerHTML =
      '<div style="color:#00ffff;font-weight:bold;margin-bottom:8px;">' +
        '&#10022; SOUL PRINT RADIO' +
      '</div>' +
      '<div id="radio-track" style="font-size:12px;margin-bottom:8px;min-height:32px;">' +
        'Loading...' +
      '</div>' +
      '<div style="display:flex;gap:8px;margin-bottom:8px;">' +
        '<button id="radio-play" style="flex:1;padding:8px;background:#00aaaa;' +
          'border:none;border-radius:6px;color:#fff;font-size:16px;">&#9654;</button>' +
        '<button id="radio-next" style="flex:1;padding:8px;background:#444;' +
          'border:none;border-radius:6px;color:#fff;font-size:16px;">&#9197;</button>' +
      '</div>' +
      '<div style="display:flex;align-items:center;gap:8px;">' +
        '<span style="font-size:12px;">&#128266;</span>' +
        '<input id="radio-vol" type="range" min="0" max="100" value="70" style="flex:1;">' +
      '</div>' +
      '<button id="radio-close" style="margin-top:8px;width:100%;padding:6px;' +
        'background:#333;border:none;border-radius:6px;color:#fff;">Close</button>';
    
    document.body.appendChild(panel);
    
    /* ----- AUDIO ELEMENT ----- */
    audio = new Audio();
    audio.volume = 0.7;
    audio.addEventListener('ended', function(){ next(); });
    
    /* ----- CONTROL WIRING ----- */
    document.getElementById('radio-play').onclick = function(){ toggle(); };
    document.getElementById('radio-next').onclick = function(){ next(); };
    document.getElementById('radio-vol').oninput = function(e){
      audio.volume = e.target.value / 100;
    };
    document.getElementById('radio-close').onclick = function(){
      panel.style.display = 'none';
    };
  }
  
  /* ----- TRACK INFO ----- */
  function updateTrackInfo(){
    var el = document.getElementById('radio-track');
    if(!el || !playlist.length) return;
    var song = playlist[current];
    el.textContent = (current + 1) + '/' + playlist.length + ': ' + song.title;
  }
  
  /* ----- PLAYBACK CONTROLS ----- */
  
  // Play/pause toggle
  function toggle(){
    if(!playlist.length) return;
    if(playing){
      audio.pause();
      playing = false;
      document.getElementById('radio-play').innerHTML = '&#9654;';
    } else {
      playTrack(current);
    }
  }
  
  // Play specific track by index
  function playTrack(idx){
    current = idx;
    var song = playlist[idx];
    if(!song) return;
    
    audio.src = '/SolidBigIsland/mp3/' + song.file;
    audio.play().then(function(){
      playing = true;
      document.getElementById('radio-play').innerHTML = '&#10074;&#10074;';
      update