<!-- RUBY-BACKUP · part 307 -->
t(0, py+20, 0);
          arch.name = 'solid-arch-'+ai;
          scene.add(arch);
        }
      }catch(e){}
    }, 18000);
    /* DOWNTOWN BORDER — illuminated manuscript border around downtown */
    setTimeout(function(){
      try{
        var goldMat = new THREE.MeshBasicMaterial({color:0xffd700});
        /* double ring with engraved pattern */
        for(var ri=0; ri<2; ri++){
          var radius = 150 + ri*8;
          var rpts = [];
          for(var ra=0; ra<=72; ra++){
            var ang = (ra/72)*Math.PI*2;
            /* scalloped edge — manuscript style */
            var rr = radius + Math.sin(ang*24)*1.5;
            rpts.push(new THREE.Vector3(Math.cos(ang)*rr, 10.4, Math.sin(ang)*rr));
          }
          var rgeo = new THREE.TubeGeometry(new THREE.CatmullRomCurve3(rpts, true), 72, 0.15, 4, true);
          var rmesh = new THREE.Mesh(rgeo, goldMat);
          rmesh.name = 'downtown-border';
          scene.add(rmesh);
        }
      }catch(e){}
    }, 14000);
    /* TOWER MEDALLIONS — banknote engraving, gold on dark */
    setTimeout(function(){
      try{
        var goldMat = new THREE.MeshBasicMaterial({color:0xffd700});
        var darkMat = new THREE.MeshBasicMaterial({color:0x0a0a0a});
        var count = 0;
        if(typeof scene!=='undefined'){
          scene.traverse(function(o){
            if(o.name && o.name.indexOf('downtown')===0 && o.name.indexOf('win')<0 && count < 10){
              var pos = o.position;
              /* dark medallion disc */
              var disc = new THREE.Mesh(new THREE.CircleGeometry(4, 32), darkMat);
              disc.position.set(pos.x, pos.y + 10, pos.z + 5.1);
              disc.name = 'medallion-disc';
              scene.add(disc);
              /* gold spiral — banknote style */
              var spiralPts = [];
              for(var si=0; si<=60; si++){
                var t = si/60;
                var ang = t * Math.PI * 6;
                var r = 0.3 + t * 3.2;
                spiralPts.push(new THREE.Vector3(
                  pos.x + Math.cos(ang)*r,
                  pos.y + 10 + Math.sin(ang)*r,
                  pos.z + 5.2
                ));
              }
              var sgeo = new THREE.TubeGeometry(new THREE.CatmullRomCurve3(spiralPts), 60, 0.05, 4, false);
              var spiral = new THREE.Mesh(sgeo, goldMat);
              spiral.name = 'medallion-spiral';
              scene.add(spiral);
              /* outer ring */
              var ring = new THREE.Mesh(new THREE.TorusGeometry(3.8, 0.08, 8, 32), goldMat);
              ring.position.set(pos.x, pos.y + 10, pos.z + 5.2);
              ring.name = 'medallion-ring';
              scene.add(ring);
              count++;
            }
          });
        }
      }catch(e){}
    }, 10000);
    /* TRAFFIC — cars flowing on the highways */
    (function(){
      try{
        window._traffic = [];
        var carColors = [0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xffffff, 0xff8800];
        var carGeo = new THREE.BoxGeometry(3, 1.5, 6);
        if(typeof _highwayPts!=='undefined'){
          _highwayPts.forEach(function(pts, hi){
            for(var ci=0; ci<5; ci++){
              var color = carColors[Math.floor(Math.random()*carColors.length)];
              var mat = new THREE.MeshStandardMaterial({color:color, emissive:color, emissiveIntensity:0.3});
              var car = new THREE.Mesh(carGeo, mat);
              car.name = 'traffic-car';
              /* headlights */
              var hl = new THREE.Mesh(new THREE.SphereGeometry(0.3, 8, 6),
                new THREE.MeshBasicMaterial({color:0xffffcc}));
              hl.position.set(0, 0, 3.2);
              car.add(hl);
              g.add(car);
              window._traffic.push({mesh:car, hw:hi, t:Math.random(), speed:0.02+Math.random()*0.03, dir:Math.random()>0.5?1:-1});
            }
          });
        }
        /* animate traffic */
        setInterval(function(){
          try{
            window._traffic.forEach(function(tc){
              tc.t += tc.speed * tc.dir * 0.016;
              if(tc.t > 1) tc.t = 0;
              if(tc.t < 0) tc.t = 1;
              var pts = _highwayPts[tc.hw];
              var seg = Math.floor(tc.t * (pts.length-1));
              var ft = (tc.t * (pts.length-1)) - seg;
              if(seg >= pts.length-1){ seg = pts.length-2; ft = 1; }
              var ax = pts[seg][0], az = pts[seg][1];
              var bx = pts[seg+1][0], bz = pts[seg+1][1];
              var cx = ax + (bx-ax)*ft, cz = az + (bz-az)*ft;
              var cy = 12;
              if(typeof fortifiedGroundY==='function') cy = fortifiedGroundY(cx, cz) + 2;
              tc.mesh.position.set(cx, cy, cz);
              /* face direction */
              var ang = Math.atan2(bx-ax, bz-az);
              tc.mesh.rotation.y = ang + (tc.dir<0 ? Math.PI : 0);
            });
          }catch(e){}
        }, 50);
      }catch(e){}
    })();
    /* THE CITY — dense block