<!-- RUBY-BACKUP · part 106 -->
ction' ? getCityCenter() : {x:25, z:-10});
    /* prophetess aura — strange and wonderful */
    if(typeof PROVOLTA_MODEL!=='undefined' && PROVOLTA_MODEL && !PROPHETESS_AURA){
      PROPHETESS_AURA = new THREE.Group();
      /* floating runes */
      for(var i=0; i<8; i++){
        (function(idx){
          var runeGeo = new THREE.OctahedronGeometry(0.12);
          var runeMat = new THREE.MeshBasicMaterial({
            color: 0x00ffff, transparent: true, opacity: 0.8
          });
          var rune = new THREE.Mesh(runeGeo, runeMat);
          var angle = (idx/8) * Math.PI * 2;
          rune.position.set(Math.cos(angle)*1.5, 2.5, Math.sin(angle)*1.5);
          rune.userData.orbitAngle = angle;
          rune.userData.orbitSpeed = 0.5 + Math.random()*0.5;
          PROPHETESS_AURA.add(rune);
        })(i);
      }
      /* soft glow beneath her */
      var glowGeo = new THREE.CircleGeometry(2.0, 24);
      var glowMat = new THREE.MeshBasicMaterial({
        color: 0x00ffff, transparent: true, opacity: 0.15,
        side: THREE.DoubleSide
      });
      var glow = new THREE.Mesh(glowGeo, glowMat);
      glow.rotation.x = -Math.PI/2;
      glow.position.y = 0.05;
      PROPHETESS_AURA.add(glow);
      PROVOLTA_MODEL.add(PROPHETESS_AURA);
      /* orbit the runes */
      setInterval(function(){
        try{
          PROPHETESS_AURA.children.forEach(function(rune){
            if(rune.userData.orbitAngle !== undefined){
              rune.userData.orbitAngle += 0.02 * rune.userData.orbitSpeed;
              var a = rune.userData.orbitAngle;
              rune.position.x = Math.cos(a)*1.5;
              rune.position.z = Math.sin(a)*1.5;
              rune.position.y = 2.5 + Math.sin(Date.now()*0.002 + a)*0.3;
              rune.rotation.y += 0.05;
              rune.rotation.x += 0.03;
            }
          });
        }catch(e){}
      }, 33);
    }
    /* the little girl */
    if(!LITTLE_GIRL){
      LITTLE_GIRL = new THREE.Group();
      var skinMat = new THREE.MeshStandardMaterial({color:0xffcc99, roughness:0.8});
      var dressMat = new THREE.MeshStandardMaterial({color:0xff99cc, roughness:0.9});
      var hairMat = new THREE.MeshStandardMaterial({color:0x664422, roughness:0.9});
      /* body — small */
      var body = new THREE.Mesh(new THREE.CylinderGeometry(0.18, 0.25, 0.5, 10), dressMat);
      body.position.y = 0.45;
      LITTLE_GIRL.add(body);
      /* head */
      var head = new THREE.Mesh(new THREE.SphereGeometry(0.22, 12, 12), skinMat);
      head.position.y = 0.9;
      LITTLE_GIRL.add(head);
      /* hair */
      var hair = new THREE.Mesh(new THREE.SphereGeometry(0.24, 12, 12), hairMat);
      hair.position.set(0, 0.95, -0.05);
      hair.scale.set(1, 0.8, 1);
      LITTLE_GIRL.add(hair);
      /* eyes — looking up at PROVOLTA */
      var eyeMat = new THREE.MeshBasicMaterial({color:0x222222});
      var eyeL = new THREE.Mesh(new THREE.SphereGeometry(0.03, 6, 6), eyeMat);
      eyeL.position.set(-0.08, 0.92, 0.18);
      LITTLE_GIRL.add(eyeL);
      var eyeR = new THREE.Mesh(new THREE.SphereGeometry(0.03, 6, 6), eyeMat);
      eyeR.position.set(0.08, 0.92, 0.18);
      LITTLE_GIRL.add(eyeR);
      /* arms reaching up for the flower */
      var armMat = new THREE.MeshStandardMaterial({color:0xffcc99, roughness:0.8});
      var armL = new THREE.Mesh(new THREE.CylinderGeometry(0.05, 0.05, 0.4, 8), armMat);
      armL.position.set(-0.2, 0.6, 0.1);
      armL.rotation.z = 0.5;
      armL.rotation.x = -0.5;
      LITTLE_GIRL.add(armL);
      var armR = new THREE.Mesh(new THREE.CylinderGeometry(0.05, 0.05, 0.4, 8), armMat);
      armR.position.set(0.2, 0.6, 0.1);
      armR.rotation.z = -0.5;
      armR.rotation.x = -0.5;
      LITTLE_GIRL.add(armR);
      LITTLE_GIRL.position.set(cc.x - 1.5, 0, cc.z + 3.5);
      /* she faces PROVOLTA */
      LITTLE_GIRL.lookAt(cc.x + 2, 0, cc.z + 2);
      if(typeof scene!=='undefined') scene.add(LITTLE_GIRL);
      /* gentle bounce — she's excited */
      setInterval(function(){
        try{
          var t = Date.now() * 0.004;
          LITTLE_GIRL.position.y = Math.abs(Math.sin(t)) * 0.08;
        }catch(e){}
      }, 33);
    }
    /* the flower — PROVOLTA gives it */
    if(!FLOWER_GIFT && typeof PROVOLTA_MODEL!=='undefined' && PROVOLTA_MODEL){
      FLOWER_GIFT = new THREE.Group();
      var stemMat = new THREE.MeshStandardMaterial({color:0x228822, roughness:0.9});
      var petalMat = new THREE.MeshStandardMaterial({
        color:0xff66aa, emissive:0xff66aa, emissiveIntensity:0.5, roughness:0.7
      });
      var centerMat = new THREE.MeshStandardMaterial({
        color:0xffd700, emissive:0xffd700, emissiveIntensity:1
      });
      var stem = new THREE.Mesh(new THREE.CylinderGeometry(0.02, 0.02, 0.5, 8), stemMat);
      FLOWER_GIFT.add(stem);
      for(var pi=0; pi<6; pi++){
        var petal = new THREE.Mesh(new THREE.SphereGeometry(0.08, 8, 8), petalMat);
        var pa = (pi/6) * Math.PI * 2;
    