<!-- SOLID CITY · part 3209 -->
 / 78;
      var rem = flyToward(fe, mother.x + mother.vx * eta * 0.85, mother.y - 6, mother.z + mother.vz * eta * 0.85, 78, dt);
      if (rem < 42) { fe.mode = 'dock'; fe.holdT = 7; }
    } else if (fe.mode === 'dock') {
      var f = motherFlank();
      flyToward(fe, f.x, f.y, f.z, 40, dt);
      fe.yaw = mother.yaw;
      fe.holdT -= dt;
      if (fe.holdT <= 0) { fe.to = pickDest(''); fe.mode = 'toPort'; }
    } else if (fe.mode === 'toPort') {
      var rem2 = flyToward(fe, fe.to.x + 14, fe.to.gy + 12, fe.to.z, 78, dt);
      if (rem2 < 2) { fe.at = fe.to; fe.mode = 'hover'; fe.t = 7 + Math.random() * 8; }
    }
    fe.mesh.position.set(fe.x, fe.y, fe.z);
    fe.mesh.rotation.set(0, fe.yaw, 0);
  }

  /* ================= HIGH TRAFFIC =================
   * Ships on the wide sea lanes, high and far: their heights
   * are surveyed at build from the land beneath their own
   * circles — the sky measured before it is flown, as always. */
  var traffic = [];
  [[-900, -300, 1700], [200, 2300, 1400], [-300, -2900, 1500], [1500, 2500, 1100]].forEach(function (lane, li) {
    var mx = -1e12;
    for (var a = 0; a < Math.PI * 2; a += 0.02) { var g2 = heightAt(lane[0] + Math.cos(a) * lane[2], lane[1] + Math.sin(a) * lane[2]); if (g2 > mx) mx = g2; }
    var h = Math.min(412, Math.max(320, mx + 48));
    var m = buildShuttle(); m.scale.setScalar(2.1); group.add(m);
    traffic.push({ mesh: m, cx: lane[0], cz: lane[1], r: lane[2], h: h, a: li * 1.7, w: (li % 2 ? -1 : 1) * (Math.PI * 2) / (300 + li * 60) });
  });
  function stepTraffic(dt) {
    traffic.forEach(function (tf) {
      tf.a += tf.w * dt;
      var x = tf.cx + Math.cos(tf.a) * tf.r, z = tf.cz + Math.sin(tf.a) * tf.r;
      tf.mesh.position.set(x, tf.h, z);
      tf.mesh.rotation.set(0, Math.atan2(Math.cos(tf.a) * (tf.w > 0 ? 1 : -1), -Math.sin(tf.a) * (tf.w > 0 ? 1 : -1)), 0);
    });
  }

  /* ================= MORE SKY (the King's word, 2026-10-14
   * ~07:36: "Make more traffic in the sky") =================
   * Four new lanes of the wide sea traffic, single-mesh sleek
   * ships crossing the whole map on long straight runs, a
   * ring of orbiters forever circling the ancestors' stack,
   * and THE SISTER SHIP — a smaller cruiser keeping the
   * Mother company on her own ellipse around the mountain. */
  function sleekShip(scale) {
    var m = new T.Mesh(new T.SphereGeometry(1.6, 10, 7), MAT.titanium);
    m.scale.set(scale, scale * 0.5, scale * 2.3); m.frustumCulled = false; group.add(m);
    return m;
  }
  [[2600, -600, 1200], [-2400, -400, 1300], [600, -4200, 1000], [-1800, 1800, 1600]].forEach(function (lane, li) {
    var mx = -1e12;
    for (var a = 0; a < Math.PI * 2; a += 0.02) { var g2 = heightAt(lane[0] + Math.cos(a) * lane[2], lane[1] + Math.sin(a) * lane[2]); if (g2 > mx) mx = g2; }
    var h = Math.min(412, Math.max(320, mx + 48));
    traffic.push({ mesh: sleekShip(2.1), cx: lane[0], cz: lane[1], r: lane[2], h: h, a: li * 2.3 + 0.7, w: (li % 2 ? 1 : -1) * (Math.PI * 2) / (340 + li * 50) });
  });
  var streamers = [];
  [[-4500, -500, 4500, 300, 380], [-3000, 4200, 3800, -3800, 350], [4500, 1800, -4200, -2200, 395], [-4800, -2600, 4600, 900, 365], [500, -4800, -900, 4600, 340], [-1500, 4800, 2600, -4600, 388]].forEach(function (L, li) {
    var len = Math.hypot(L[2] - L[0], L[3] - L[1]);
    streamers.push({ mesh: sleekShip(2.6), x0: L[0], z0: L[1], x1: L[2], z1: L[3], h: L[4], t: (li * 0.23) % 1, sp: (58 + li * 6) / len, yaw: Math.atan2(L[2] - L[0], L[3] - L[1]) });
  });
  var orbiters = [];
  for (var oi = 0; oi < 6; oi++) {
    orbiters.push({ mesh: sleekShip(1.15), r: 730 + oi * 48, h: 232 + (oi % 3) * 24, a: oi * 1.13, w: (Math.PI * 2) / (170 + oi * 22) });
  }
  var sister = (function () {
    var g = new T.Group();
    var hull = new T.Mesh(new T.CylinderGeometry(3.4, 3.4, 34, 12), MAT.titanium); hull.rotation.x = Math.PI / 2; g.add(hull);
    var nose = new T.Mesh(new T.SphereGeometry(3.4, 12, 8), MAT.titanium); nose.scale.set(1, 1, 1.6); nose.position.z = 17; g.add(nose);
    var dome = new T.Mesh(new T.SphereGeometry(2.4, 10, 6), MAT.glass); dome.scale.set(1, 0.55, 1.6); dome.position.set(0, 2.6, 9); g.add(dome);
    var ring = new T.Mesh(new T.TorusGeometry(5.8, 0.6, 8, 22), MAT.silver); ring.position.z = -2; g.add(ring);
    g.add(box(9, 0.5, 5.5, MAT.gold, 0, -3.1, -10));
    group.add(g);
    return { mesh: g, ring: ring, a: 2.2, x: 0, y: 340, z: 0, yaw: 0 };
  })();
  var SISTER = { cx: 0, cz: -1600, rx: 1950, rz: 1550, w: (Math.PI * 2) / 430 };
  function stepMoreSky(dt) {
    streamers.forEach(function (st) {
      st.t += st.sp * dt; if (st.t > 1) st.t -= 1;
      st.mesh.position.set(st.x0 + (st.x1 - st.x0) * st.t, st.h, st.z0 + (st.z1 - st.z0) * st.t);
      st.mesh.rotation.set(0, st.yaw, 0.04);
    });
    orbiters.forEach(function (ob) {
      ob.a += ob.w * dt;
      var x = Math.cos(ob.a) * ob.r, z = -1600 + Math.sin(ob.a) * ob.r;
      ob.mesh.position.set(x, ob.h, z)