<!-- RUBY-BACKUP · part 521 -->
Geometry(3, 40, 3), goldMat);
          tower.position.set(bi*20, rpy+20, 200); tower.name='boston-bridge-tower'; scene.add(tower);
          /* cables */
          for(var ci=0; ci<6; ci++){
            var cpts = [new THREE.Vector3(bi*20, rpy+38-ci*3, 200), new THREE.Vector3(bi*(20+ci*8), rpy+2, 200)];
            var cgeo = new THREE.TubeGeometry(new THREE.CatmullRomCurve3(cpts), 8, 0.15, 4, false);
            var cable = new THREE.Mesh(cgeo, goldMat); cable.name='boston-cable'; scene.add(cable);
          }
        }
        var deck = new THREE.Mesh(new THREE.BoxGeometry(120, 2, 8), brickMat);
        deck.position.set(0, rpy+2, 200); deck.name='boston-bridge-deck'; scene.add(deck);
        /* 3. GREEN COMMON — park ring around plaza */
        for(var gi=0; gi<16; gi++){
          var gang = (gi/16)*Math.PI*2;
          var gx = Math.cos(gang)*45, gz = Math.sin(gang)*45;
          var gpy = 10;
          try{ if(typeof fortifiedGroundY==='function') gpy = fortifiedGroundY(gx, gz); }catch(e){}
          var tree = new THREE.Mesh(new THREE.ConeGeometry(2, 6, 8), greenMat);
          tree.position.set(gx, gpy+3, gz); tree.name='boston-tree'; scene.add(tree);
        }
        var lawn = new THREE.Mesh(new THREE.CircleGeometry(50, 32), greenMat);
        lawn.rotation.x = -Math.PI/2; lawn.position.set(0, py+0.2, 0); lawn.name='boston-lawn'; scene.add(lawn);
        /* brownstones removed — our buildings only */
        /* 5. FREEDOM TRAIL — gold path connecting landmarks */
        var trailPts = [];
        var landmarks = [[0,0],[30,0],[100,-50],[0,200],[150,150]];
        landmarks.forEach(function(lm){
          trailPts.push(new THREE.Vector3(lm[0], py+0.5, lm[1]));
        });
        var tgeo = new THREE.TubeGeometry(new THREE.CatmullRomCurve3(trailPts), 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;
    