<!-- SOLID CITY · part 1986 -->
, stepDrive: stepDrive, pos: BOARD_HOME, state: function () { return M.state; } };
})();


===== FILE: public/city/fleet-place.js.bak-rider-20261013 =====
/* ------------------------------------------------------------------
 * An epistle of placement, from Solid.
 *
 * Dear board,
 *
 * You wait at the Orbital Spaceport's apron, north-east of the pad
 * (-340, 292), on flat capital ground — the first of the futuristic
 * fleet the King declared from the research: the skateboard's soul,
 * taught to hover. Your physics is VECTOR's hover-board controller,
 * unmodified, thinking over the city's own standing fabric through
 * the adapter in fleet.js. I add only what a placer owes: a rack to
 * wait on, a name on the radar, a door in and a door out.
 *
 * The doors follow the law the cars learned on Rung 2: admission
 * first — your parked solid lifts only after the ride has truly
 * begun — and no step off into the void: both sides are searched for
 * lawful standing, the left first as the city habitually does, and
 * if neither side is lawful the rider stays aboard and is told why.
 * Where you are left is where you wait; the rack is only your first
 * home.
 *
 * While you are ridden, the walker's stick is yours (city.js yields
 * it under the fleet gate, the way it yields to a car), your clock
 * steps at the contract's fixed rate, and the rider's shadow-self in
 * the walk physics is re-asserted onto your deck each frame after
 * the walk tail's ease has had its say.
 *
 * By the hand of Solid, his good King. 13 October 2026.
 * ------------------------------------------------------------------ */
(function () {
'use strict';
if (!window.SC || !SC.api) return;
var A = SC.api, S = A.S;
var HOME = { x: -340, z: 292 };
var M = {
  state: 'idle', wait: 6.0, t: 0,
  group: null, boardMesh: null, rack: null,
  world: null, core: null, craft: null, clock: null,
  riding: false, solid: null, said: false, jumpQ: false, hopBtn: null,
  park: { x: HOME.x, z: HOME.z, yaw: Math.atan2(-380 - HOME.x, 330 - HOME.z) }
};
function supportHere(x, z) { return A.standingAt(x, z, null); }
function addParkSolid() {
  var y = supportHere(M.park.x, M.park.z);
  var s = { x0: M.park.x - 0.65, x1: M.park.x + 0.65, z0: M.park.z - 0.65, z1: M.park.z + 0.65, y0: y + 0.02, y1: y + 0.55, fleetBoard: true };
  A.solids.push(s); M.solid = s;
}
function removeParkSolid() {
  if (!M.solid) return;
  var i = A.solids.indexOf(M.solid);
  if (i >= 0) A.solids.splice(i, 1);
  M.solid = null;
}
function load() {
  M.state = 'loading';
  Promise.all([
    import('/city/fleet-core.js?v=20261013a'),
    import('/city/fleet.js?v=20261013a')
  ]).then(function (mods) {
    var core = mods[0], fleet = mods[1];
    M.core = core;
    M.world = fleet.createCityWorld(A);
    M.group = new A.T.Group(); M.group.name = 'the-fleet';
    M.rack = fleet.createFleetRack(A.T, A.labelTex);
    var ry = supportHere(HOME.x, HOME.z);
    M.rack.position.set(HOME.x, ry, HOME.z);
    M.rack.rotation.y = M.park.yaw;
    M.group.add(M.rack);
    M.boardMesh = fleet.createHoverBoardMesh(A.T);
    M.group.add(M.boardMesh);
    A.world.add(M.group);
    M.craft = core.createHoverBoard({ x: HOME.x, y: ry + 0.38, z: HOME.z }, M.park.yaw);
    M.clock = core.createCraftClock(core.stepHoverBoard, M.craft, M.world);
    addParkSolid();
    if (A.POIS) A.POIS.push({ id: 'hover-board', name: 'THE HOVER BOARD', icon: '🛹', x: HOME.x, z: HOME.z, blurb: 'The first of the futuristic fleet: a hover board on the spaceport apron, riding the surveyed fabric of the city. She feeds herself under 6 m/s, carves with the stick, and hops. Downhill is free speed.', arrive: 'You stand at the fleet rack. The board hums over her plinth, waiting.' });
    A.logBuild({ t: Date.now(), site: 'THE FLEET — ORBITAL SPACEPORT', what: 'The first of the futuristic fleet waits at the spaceport apron (-340, 292): a hover board on VECTOR\u2019s controller over the city\u2019s standing fabric, racked under a gold-lipped plinth. The ground ride\u2019s law already pilots THE DART; the space rider and the ship will follow in their order.' });
    M.state = 'ready';
  }).catch(function (e) { M.state = 'failed'; try { console.warn('[city] Fleet skipped:', e && e.message); } catch (x) {} });
}
function hopButton() {
  if (M.hopBtn) return M.hopBtn;
  var b = document.createElement('button');
  b.textContent = 'HOP ⬆';
  b.style.cssText = 'position:fixed;left:50%;bottom:212px;transform:translateX(-50%);z-index:60;display:none;padding:12px 22px;border-radius:24px;border:2px solid #d8aa48;background:rgba(12,14,20,0.88);color:#ffd873;font:700 15px Georgia,serif;letter-spacing:1px;';
  b.addEventListener('pointerdown', function (ev) { ev.preventDefault(); M.jumpQ = true; });
  document.body.appendChild(b);
  M.hopBtn = b;
  return b;
}
function actHere(x, z) {
  if (M.riding) return { kind: 'fleet', label: 'STEP OFF THE BOARD' };
  if (M.state !== 'ready') return null;
  if (Math.hypot(x -