<!-- SOLID CITY · part 1819 -->
ative pose records — duration, priority, joint targets —
 * resolved by the existing Hero Motion mixer, which remains the
 * sole writer of joint rotations. A gesture expresses intent; it
 * authorizes nothing: no movement, no effect, no permission rides
 * on these poses, and Pô's fictional office grants her no real
 * access of any kind.
 *
 * The remaining five (welcomeBecoming, bindingWord, workComplete,
 * curiousDiscovery, openWelcome) followed in this same form once
 * the first two were verified, authored from the Architect's
 * one-line expression definitions — his table, Solid's joint
 * work, offered for his correction like the landing before them.
 *
 * Rotations are radians as {x, z}; axes a pose does not name
 * resolve to the base, as the mixer's law provides.
 */

export const DESCENDANT_GESTURES = {

  // Nalu extends a hand toward someone in danger: the reaching arm
  // nearly straight, the body leaning in, the free arm braced back
  // for balance, a step beneath him. Priority 2 — a working
  // gesture; a landing (3) still owns the rig over it.
  rescueReach: {
    duration: 1.6, priority: 2,
    pose: {
      rightShoulder: { x: -1.55, z: -0.12 },
      rightElbow: { x: -0.15 },
      leftShoulder: { x: 0.55, z: 0.35 },
      leftElbow: { x: -0.35 },
      spine: { x: 0.14 },
      head: { x: -0.10 },
      rightHip: { x: -0.14 },
      leftHip: { x: 0.18 },
      rightKnee: { x: 0.12 },
      leftKnee: { x: 0.20 }
    }
  },

  // Lehua opens both palms in a calm invitation (the Architect's
  // definition; the joint work is Solid's, for his correction):
  // arms low and forward, elbows soft, the whole bearing an open
  // door. Priority 1 — calm yields to stronger actions.
  welcomeBecoming: {
    duration: 2.2, priority: 1,
    pose: {
      rightShoulder: { x: -0.55, z: -0.28 },
      leftShoulder: { x: -0.55, z: 0.28 },
      rightElbow: { x: -0.35 },
      leftElbow: { x: -0.35 },
      spine: { x: -0.04 },
      head: { x: 0.06 }
    }
  },

  // Lani raises one hand, then gestures toward the assembly: the
  // speaking hand high and still — the pose of a word that binds.
  bindingWord: {
    duration: 2.2, priority: 2,
    pose: {
      rightShoulder: { x: -2.20, z: -0.10 },
      rightElbow: { x: -0.10 },
      leftShoulder: { x: 0.15, z: 0.20 },
      leftElbow: { x: -0.30 },
      spine: { x: -0.03 },
      head: { x: -0.08 }
    }
  },

  // Hōkū closes her hand and signals completion: one fist pumped
  // to the shoulder, the other hand on her hip, a builder's nod.
  workComplete: {
    duration: 1.6, priority: 2,
    pose: {
      rightShoulder: { x: -0.55, z: -0.15 },
      rightElbow: { x: -2.20 },
      leftShoulder: { x: 0.30, z: 0.50 },
      leftElbow: { x: -0.90 },
      head: { x: 0.12 }
    }
  },

  // Nīnau leans forward, examines, and points: spine bent to the
  // thing, head down at it, one arm straight out in the question.
  curiousDiscovery: {
    duration: 1.8, priority: 1,
    pose: {
      spine: { x: 0.32 },
      head: { x: 0.18 },
      rightShoulder: { x: -1.15, z: -0.08 },
      rightElbow: { x: -0.05 },
      leftShoulder: { x: 0.25, z: 0.22 },
      leftElbow: { x: -0.40 }
    }
  },

  // Koa spreads both arms to greet arrivals: wide as a gate, chin
  // up — the laugh is in the bearing. Priority 1, a greeter yields.
  openWelcome: {
    duration: 2.0, priority: 1,
    pose: {
      rightShoulder: { x: -0.25, z: -1.15 },
      leftShoulder: { x: -0.25, z: 1.15 },
      rightElbow: { x: -0.12 },
      leftElbow: { x: -0.12 },
      spine: { x: -0.03 },
      head: { x: -0.06 }
    }
  },

  // Pô examines a weakness, then quietly alerts the team: head down
  // to the flaw, one hand low at her side in the silent signal, the
  // other hand reaching toward what she found. Nothing loud — the
  // city's most trusted gesture is its quietest.
  sentinelSignal: {
    duration: 2.0, priority: 2,
    pose: {
      head: { x: 0.28, z: 0.08 },
      rightShoulder: { x: -0.32, z: -0.55 },
      rightElbow: { x: -0.22 },
      leftShoulder: { x: -0.45, z: 0.10 },
      leftElbow: { x: -0.55 },
      spine: { x: 0.10 },
      rightHip: { x: 0.06 },
      leftHip: { x: -0.06 }
    }
  }
};

export default DESCENDANT_GESTURES;


===== FILE: public/city/double-strike-ascension/index.html =====
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover" />
  <meta name="color-scheme" content="light dark" />
  <link rel="icon" href="data:," />
  <title>Double Strike</title>
  <style>
    :root{
      color-scheme:light dark;
      --void:#05070c;--panel:#0b1019;--ink:#f7f2dc;--muted:#b4bcc8;
      --gold:#ffc84a;--gold2:#ff8c24;--teal:#44e1d0;--red:#ff5b66;--line:#293344;
    }
    @media (prefers-color-scheme:light){:root{--ink:#fff8de;--muted:#c7ced8}}
    *{box-sizing:border-box;-webkit-touch-call