<!-- RUBY-BACKUP · part 301 -->
railPts), 32, 0.5, 6, false);
        var trail = new THREE.Mesh(tgeo, goldMat); trail.name='boston-trail'; scene.add(trail);
      }catch(e){}
    }, 20000);
    /* CAMERA CYCLE — called from menu button, no floating clutter */
    window._camModes = [
      {n:'Orbit', f:function(){ try{ camDist=13; camPitch=0.55; }catch(e){} }},
      {n:'Top', f:function(){ try{ camPitch=1.45; camDist=30; }catch(e){} }},
      {n:'Sky', f:function(){ try{ if(typeof camera!=='undefined'){ camera.position.set(0,900,900); camera.lookAt(0,0,0); } }catch(e){} }},
      {n:'Far', f:function(){ try{ camDist=80; camPitch=0.7; }catch(e){} }},
      {n:'Close', f:function(){ try{ camDist=6; }catch(e){} }},
      {n:'Front', f:function(){ try{ camYaw=faceYaw; camPitch=0.35; camDist=12; }catch(e){} }}
    ];
    window._camIdx = 0;
    window.cycleCamera = function(){
      try{
        window._camIdx = (window._camIdx+1)%window._camModes.length;
        window._camModes[window._camIdx].f();
        if(typeof codeStatus==='function') codeStatus('camera: '+window._camModes[window._camIdx].n);
      }catch(e){}
    };
    /* PRACTICE MAP — clean rebuild, lessons applied (at 600,600) */
    setTimeout(function(){
      try{
        var CX = 600, CZ = 600; /* practice district center */
        var goldMat = new THREE.MeshStandardMaterial({color:0xffd700, metalness:0.85, roughness:0.25});
        var roadMat = new THREE.MeshStandardMaterial({color:0x2a2a2a, roughness:0.8});
        var greenMat = new THREE.MeshStandardMaterial({color:0x2d6a2d, roughness:0.9});
        var holoMat = new THREE.MeshBasicMaterial({color:0x00ffff, transparent:true, opacity:0.3});
        var cpy = 10;
        try{ if(typeof fortifiedGroundY==='function') cpy = fortifiedGroundY(CX, CZ); }catch(e){}
        /* DISTRICT PLAN — three zones, phi-spaced */
        /* Zone 1: Entry plaza (south) */
        var entry = new THREE.Mesh(new THREE.CircleGeometry(20, 24), goldMat);
        entry.rotation.x = -Math.PI/2;
        entry.position.set(CX, cpy+0.3, CZ+60);
        entry.name='practice-entry'; scene.add(entry);
        /* Zone 2: Central green (middle) */
        var green = new THREE.Mesh(new THREE.CircleGeometry(30, 24), greenMat);
        green.rotation.x = -Math.PI/2;
        green.position.set(CX, cpy+0.3, CZ);
        green.name='practice-green'; scene.add(green);
        /* Zone 3: Landmark pad (north) — ONE landmark, spaced */
        var pad = new THREE.Mesh(new THREE.CircleGeometry(25, 24), goldMat);
        pad.rotation.x = -Math.PI/2;
        pad.position.set(CX, cpy+0.3, CZ-62);
        pad.name='practice-pad'; scene.add(pad);
        /* INFRASTRUCTURE FIRST — roads connecting zones before any monument */
        var road1 = new THREE.Mesh(new THREE.BoxGeometry(6, 0.5, 40), roadMat);
        road1.position.set(CX, cpy+0.5, CZ+30);
        road1.name='practice-road'; scene.add(road1);
        var road2 = new THREE.Mesh(new THREE.BoxGeometry(6, 0.5, 37), roadMat);
        road2.position.set(CX, cpy+0.5, CZ-31);
        road2.name='practice-road'; scene.add(road2);
        /* ONE landmark — Sovereign Deco tower, phi proportions */
        var PHI = 1.6180339887;
        var towerGold = new THREE.MeshStandardMaterial({color:0xffd700, emissive:0xffd700, emissiveIntensity:0.7, roughness:0.3, metalness:0.6});
        var pw = 16, ph = 26, pyy = cpy;
        for(var pi2=0; pi2<4; pi2++){
          var ptier = new THREE.Mesh(new THREE.BoxGeometry(pw, ph, pw), towerGold);
          ptier.position.set(CX, pyy+ph/2, CZ-62);
          ptier.name='practice-tower'; scene.add(ptier);
          pyy += ph; pw /= PHI; ph /= PHI;
        }
        /* engraved band — linework flowing */
        var eband = new THREE.Mesh(new THREE.TorusGeometry(12, 0.3, 6, 32), holoMat);
        eband.position.set(CX, cpy+8, CZ-62);
        eband.rotation.x = Math.PI/2;
        eband.name='practice-band'; scene.add(eband);
        /* PIECE 2: lanai pavilion on the green — open air, gold posts, breathing */
        var pavY = 10;
        try{ if(typeof fortifiedGroundY==='function') pavY = fortifiedGroundY(CX, CZ); }catch(e){}
        /* 6 gold posts */
        for(var pp2=0; pp2<6; pp2++){
          var pang3 = (pp2/6)*Math.PI*2;
          var ppx3 = CX+Math.cos(pang3)*10, ppz3 = CZ+Math.sin(pang3)*10;
          var post = new THREE.Mesh(new THREE.CylinderGeometry(0.8, 1, 12, 8), goldMat);
          post.position.set(ppx3, pavY+6, ppz3);
          post.name='practice-post'; scene.add(post);
        }
        /* steep pitched roof — hale silhouette in gold */
        var proof = new THREE.Mesh(new THREE.ConeGeometry(14, 8, 6), goldMat);
        proof.position.set(CX, pavY+16, CZ);
        proof.name='practice-roof'; scene.add(proof);
        /* glowing floor */
        var pfloor = new THREE.Mesh(new THREE.CircleGeometry(11, 24), holoMat);
        pfloor.rotation.x = -Math.PI/2;
        pfloor.position.set(CX, pavY+0.5, CZ);
        pfloor.name='practi