<!-- SOLID CITY · part 1798 -->
.PI / 4; cap.position.y = 9.05; root.add(cap);
  var pin = new T.Mesh(new T.CylinderGeometry(0.12, 0.12, 0.5, 8), new T.MeshBasicMaterial({ color: C.gold }));
  pin.position.y = 9.75; root.add(pin);
  var needle = new T.Mesh(new T.BoxGeometry(0.16, 0.1, 4.6), new T.MeshBasicMaterial({ color: C.gold }));
  needle.position.y = 9.75; root.add(needle);
  foot.push([0, 0, 6, 6, 0, 9.6, 0]); // obelisk only; the dais stays walkable

  root.userData = {
    footprint: foot, center: { x: 0, z: 0 }, radius: 18, height: 10,
    update: function (t) {
      needle.rotation.y = t * 0.35;
      cap.rotation.y = Math.PI / 4 + Math.sin(t * 0.8) * 0.12;
    }
  };
  return root;
}
export default createCompassMeridian;


===== FILE: public/city/crystal-crown-place.js =====
/* Solid City — places THE CRYSTAL CROWN (public/city/
 * crystal-crown.js) above the Sky Ring City.
 * "Make another one on top with a crystal mountain and have
 * valleys with rivers that fall to rain on the houses below.
 * And make trees all over big ones." — the King, 2026-10-14.
 * The crown floats 118 metres above the glass city (which
 * itself floats 140 above the terrace): a wild island of
 * meadow, valley and crystal, whose rivers pour off the rim
 * and break into rain over the rooftops below. Its standing
 * hook answers from the land's own height law, and was added
 * to updateWalk and standingAt in the same breath, as the
 * Law of the Two Lists commands. */
(function () {
'use strict';
if (!window.SC || !SC.api) return;
var A = SC.api, S = A.S;
var POS = { x: 0, z: -1600 };
var SKY_LIFT = 140, CROWN_LIFT = 118;
var M = { state: 'idle', group: null, wait: 5.0 };
function hyperStop() {
  var H = window.CityHyper; if (!H || !H.pois || !M.group) return;
  if (H.pois.some(function (p) { return p.id === 'crystal-crown'; })) return;
  var a = 1.6, r = 210;
  H.pois.push({ id: 'crystal-crown', name: 'THE CRYSTAL CROWN', short: 'CROWN', x: POS.x, z: POS.z,
    stand: { x: POS.x + Math.cos(a) * r, z: POS.z + Math.sin(a) * r },
    alias: 'crystal crown mountain rivers waterfalls rain trees sky island',
    text: 'The wild crown of the sky: a floating island above the glass city, carrying a mountain of crystal, three rivers that pour off its rim and fall as rain on the rooftops below, and great trees wherever the land is kind. Raised by the King\'s word on October 14, 2026.' });
  if (H.regrid) H.regrid();
}
async function build() {
  if (M.state !== 'idle') return;
  M.state = 'building';
  try {
    var mod = await import('/city/crystal-crown.js?v=20261014c');
    var topY = window.CityAncestorRoads.topY();
    var g = mod.createCrystalCrown({ THREE: A.T, center: POS, baseY: topY + SKY_LIFT + CROWN_LIFT, floorY: topY + SKY_LIFT, groundY: topY });
    A.world.add(g); M.group = g;
    (g.userData.solids || []).forEach(function (b) {
      A.solids.push({ x0: b.x - b.w / 2, x1: b.x + b.w / 2, z0: b.z - b.d / 2, z1: b.z + b.d / 2, y0: b.y0, y1: b.y1, crystalCrown: true });
    });
    M.state = 'ready';
    hyperStop();
  } catch (e) { M.state = 'idle'; }
}
function standY(x, z, py) {
  if (!M.group || M.state !== 'ready') return -1000;
  var h = M.group.userData.heightAt(x, z);
  if (h == null) return -1000;
  var gate = (S && S.drive) ? 1.6 : 0.45;
  if (py == null || h <= py + gate) return h;
  return -1000;
}
function update(dt) {
  if (M.state === 'idle') {
    M.wait -= dt;
    var tReady = !!(window.CityAncestorRoads && CityAncestorRoads.state && CityAncestorRoads.state() === 'ready');
    if (M.wait <= 0 && A.isBuilt() && tReady) build();
    return;
  }
  if (M.state !== 'ready' || !M.group) return;
  if (M.group.userData.update) try { M.group.userData.update(dt, S.t); } catch (e) {}
  /* THE WORMHOLE'S LAW: step into a mouth and the world puts
   * you at the other — with a breath of cooldown, so the far
   * mouth never throws you straight back. */
  M.cool = (M.cool || 0) - dt;
  var portals = M.group.userData.portals || [];
  var P = S.p;
  if (M.cool <= 0 && P && portals.length === 2) {
    for (var i = 0; i < 2; i++) {
      var m = portals[i], o = portals[1 - i];
      if (Math.hypot(P.x - m.x, P.z - m.z) < 2.8 && Math.abs(P.y - m.y) < 4.5) {
        P.x = o.x; P.z = o.z; P.y = o.y + 0.2;
        M.cool = 3;
        if (A.help) A.help(i === 0 ? '🌀 Through the wormhole — the Crystal Crown.' : '🌀 Through the wormhole — back to the terrace.');
        break;
      }
    }
  }
}
window.CityCrystalCrown = { update: update, standY: standY, state: function () { return M.state; }, group: function () { return M.group; } };
})();


===== FILE: public/city/crystal-crown-place.js.bak-all-20261014 =====
/* Solid City — places THE CRYSTAL CROWN (public/city/
 * crystal-crown.js) above the Sky Ring City.
 * "Make another one on top with a crystal mountain and have
 * valleys with rivers that fall to rain on the houses below.
 * And make trees all over big ones." — the King, 2026-10-14.
 * The crown floats 118 metres