<!-- SOLID CITY · part 3660 -->
.api) return;
var A = SC.api, S = A.S;
var H = { houses: [], joins: [], saidHouse: false, saidJoin: {}, saidStreet: {}, saidW6: false, housePos: { x: -1056, z: -895 } };
var STREET = { 3: { x: -990, z: -812, name: 'WARD 3' }, 5: { x: -847, z: -987, name: 'WARD 5' }, 4: { x: -933, z: -782, name: 'WARD 4 GATE', line: '🏘 WARD 4 GATE — two surveyed houses stand at the Living Edges gate, founded under the same law as the pilot, on plots the wider search found.' } };
var LINK_MID = { 'W2-W3': { x: -1016, z: -842 }, 'W3-W4': { x: -944, z: -787 } };

function localUV(st, x, z) {
  var du = x - st.center[0], dv = z - st.center[2];
  return [du * st.ux + dv * st.uz, du * st.vx + dv * st.vz];
}
/* The joins' designer delivered their standing surfaces as raw triangle
 * geometry — "VISUAL GEOMETRY ONLY until stand/collision registry
 * integrated" — so this placer performs the integration he specified:
 * the exact triangles of each connector answer standY by barycentric
 * height, the same mathematics his measureConnector proves them by. */
function triHeight(tris, x, z) {
  // each tri: [ax, ay, az, bx, by, bz, cx, cy, cz] in world coordinates
  for (var i = 0; i < tris.length; i++) {
    var t = tris[i];
    var den = (t[5] - t[8]) * (t[0] - t[6]) + (t[6] - t[3]) * (t[2] - t[8]);
    if (Math.abs(den) < 1e-10) continue;
    var u = ((t[5] - t[8]) * (x - t[6]) + (t[6] - t[3]) * (z - t[8])) / den;
    var v = ((t[8] - t[2]) * (x - t[6]) + (t[0] - t[6]) * (z - t[8])) / den;
    var w = 1 - u - v;
    if (Math.min(u, v, w) < -1e-7) continue;
    return u * t[1] + v * t[4] + w * t[7];
  }
  return null;
}
function extractTris(geo) {
  var pos = geo.getAttribute('position'), idx = geo.getIndex(), tris = [];
  var n = idx ? idx.count : pos.count;
  for (var i = 0; i + 2 < n; i += 3) {
    var tri = [];
    for (var k = 0; k < 3; k++) {
      var vi = idx ? idx.getX(i + k) : i + k;
      tri.push(pos.getX(vi), pos.getY(vi), pos.getZ(vi));
    }
    tris.push(tri);
  }
  return tris;
}
function standY(x, z, py) {
  var best = -1000;
  for (var h = 0; h < H.houses.length; h++) {
    var hs = H.houses[h], st = hs.stand, uv = localUV(st, x, z), floor = st.center[1];
    var cand = [];
    if (Math.abs(uv[0]) <= 4 && Math.abs(uv[1]) <= 5) cand.push(floor);
    if (hs.roofTop && Math.abs(uv[0]) <= 4.35 && Math.abs(uv[1]) <= 5.35) cand.push(hs.roofTop);
    for (var i = 0; i < cand.length; i++) if ((py == null || cand[i] <= py + 1.6) && cand[i] > best) best = cand[i];
  }
  for (var j = 0; j < H.joins.length; j++) {
    var y = triHeight(H.joins[j], x, z);
    if (y != null && (py == null || y <= py + 1.6) && y > best) best = y;
  }
  return best;
}
function radar(rg, blip, flying) {
  if (!H.houses.length) return;
  blip(H.housePos.x, H.housePos.z, '#ffd27a', flying ? 3 : 6, flying ? '' : 'PILOT HOUSE');
  for (var h = 1; h < H.houses.length; h++) blip(H.houses[h].cx, H.houses[h].cz, '#ffd27a', 3, '');
  for (var k in LINK_MID) blip(LINK_MID[k].x, LINK_MID[k].z, '#ffd27a', 3, '');
  blip(-1127, -524, '#ffd27a', 3, '');
}
function update(dt) {
  if (!H.houses.length) return;
  var dx = S.p.x - H.housePos.x, dz = S.p.z - H.housePos.z;
  if (!H.saidHouse && dx * dx + dz * dz < 150 * 150) {
    H.saidHouse = true;
    A.help('🏠 THE PILOT HOUSE — the nation\'s first dwelling, in Ward 2. Its door is glass; walk in, stand on its floor, examine its foundations. Nine more lawful houses now stand beside it.', 8);
  }
  for (var w in STREET) {
    if (H.saidStreet[w]) continue;
    var st = STREET[w], sx = S.p.x - st.x, sz = S.p.z - st.z;
    if (sx * sx + sz * sz < 130 * 130) { H.saidStreet[w] = true; A.help(st.line || ('🏘 ' + st.name + ' STREET — dwellings of the nation stand along this path, each founded on sampled ground, each floor under standing law.'), 7); }
  }
  var w6x = S.p.x + 1127, w6z = S.p.z + 524;
  if (!H.saidW6 && w6x * w6x + w6z * w6z < 70 * 70) { H.saidW6 = true; A.help('🛤 THE WARD 6 LINK — the South Ward touches the Long Road here, on a surveyed line, at the corridor\'s edge.', 7); }
  for (var k in LINK_MID) {
    if (H.saidJoin[k]) continue;
    var m = LINK_MID[k], jx = S.p.x - m.x, jz = S.p.z - m.z;
    if (jx * jx + jz * jz < 60 * 60) { H.saidJoin[k] = true; A.help('🛤 A join in the nation\'s road — the wards are one network here. This link was measured to three hundredths of a millimetre of its constructed surface.', 7); }
  }
}
function wallSolids(house) {
  var mesh = house.mesh, st = house.stand;
  var c = Math.cos(mesh.rotation.y), s = Math.sin(mesh.rotation.y);
  (house.solids.source || []).forEach(function (w) {
    var p = w.geometry.parameters, ly = w.position.y;
    if (p.height < 1 && ly > st.center[1] + 2) return; // the lintel — above the door, no standing law
    var len = Math.max(p.width, p.depth), dep = Math.min(p.width, p.depth);
    var n = Math.max(1, Math.ceil(len / 0.9)), cw = len / n;
    var hx = cw / 2 * Math.abs(c) + dep / 2 * Math.abs(s), hz = cw / 2 *