{
 "schema": "story-shots/2",
 "about": "Camera shots (js/core/shots.js). Keys over the beat fraction u; offsets back/up/side in kpc in the ray frame (up = ê₂, the disk normal projected off the beam). textSide: where kinetic type and equations go on column layouts; with text on the left the camera sits on the −ê₁ side so the trailing beam leaves toward the lower right. beamAngle solves the roll so the projected beam descends to the right at that angle. classMods[cls] re-frames for portrait screens (cls is passed to seek as a presentation input). Generated by scratch/story2_w/U_motion/gen_shots.py. fix1 (review SC-1/M2/SC-6): turns spread over a third of a beat or more, no backwards chase, B12-B13 slow dollies.",
 "shots": {
  "gate": {
   "textSide": "left",
   "cut": true,
   "keys": [
    {
     "u": 0,
     "kind": "orbit",
     "center": "origin",
     "r": 600,
     "el": -15.6,
     "az0": 31.75,
     "az1": 33.75,
     "fov": 25,
     "beamAngle": 22,
     "beamSign": "desc"
    }
   ]
  },
  "coldopen": {
   "textSide": "left",
   "cut": false,
   "keys": [
    {
     "u": 0,
     "kind": "pose",
     "at": {
      "l": -306,
      "up": 6
     },
     "look": {
      "l": 0
     },
     "fov": 38
    },
    {
     "u": 1,
     "kind": "pose",
     "at": {
      "l": -300,
      "up": 7
     },
     "look": {
      "l": 0
     },
     "fov": 38,
     "ease": "linear"
    }
   ],
   "blendIn": 0.6
  },
  "halo": {
   "textSide": "left",
   "blendIn": 0.6,
   "keys": [
    {
     "u": 0,
     "kind": "orbit",
     "center": "origin",
     "r": 650,
     "el": 30,
     "az0": -48,
     "az1": -56,
     "fov": 40
    }
   ]
  },
  "drop": {
   "textSide": "left",
   "blendIn": 0.6,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 14,
     "up": 4,
     "side": -5,
     "lookAhead": 12,
     "fov": 55
    }
   ]
  },
  "first": {
   "textSide": "left",
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 10,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55
    },
    {
     "u": 0.3,
     "kind": "chase",
     "back": 2,
     "up": 0.8,
     "side": 0,
     "lookAhead": 30,
     "fov": 60,
     "ease": "smoothstep"
    },
    {
     "u": 0.7,
     "kind": "chase",
     "back": 2,
     "up": 0.8,
     "side": 0,
     "lookAhead": 30,
     "fov": 60
    },
    {
     "u": 1,
     "kind": "chase",
     "back": 10,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55,
     "ease": "smoothstep"
    }
   ],
   "note": "review2 three_d T3: on-axis stretch u 0.3-0.7 (camera 0.8 kpc above the ray, 2 kpc behind the probe, looking 30 kpc ahead): the reader follows the sightline through B4's cells"
  },
  "cloudA": {
   "textSide": "left",
   "blendIn": 0.2,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 16,
     "up": 6,
     "side": -9,
     "lookAhead": 12,
     "fov": 58
    },
    {
     "u": 0.5,
     "kind": "chase",
     "back": 16,
     "up": 8,
     "side": -11,
     "lookAhead": 12,
     "fov": 58,
     "ease": "smoothstep"
    },
    {
     "u": 0.72,
     "kind": "chase",
     "back": 16,
     "up": 8,
     "side": -11,
     "lookAhead": 12,
     "fov": 58
    },
    {
     "u": 1,
     "kind": "chase",
     "back": 6,
     "up": 2,
     "side": -3,
     "lookAhead": 12,
     "fov": 62,
     "ease": "smoothstep"
    }
   ],
   "note": "review2 three_d T7: holds ~18 kpc off the ray (outside Cloud A's H I box) while the H I colours come on (u 0.5-0.72), then closes in"
  },
  "quiet": {
   "textSide": "left",
   "blendIn": 0.0,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 6,
     "up": 2,
     "side": -3,
     "lookAhead": 12,
     "fov": 62
    },
    {
     "u": 0.45,
     "kind": "chase",
     "back": 18,
     "up": 8,
     "side": -10,
     "lookAhead": 10,
     "fov": 55,
     "beamAngle": 45,
     "ease": "smoothstep"
    },
    {
     "u": 0.6,
     "kind": "chase",
     "back": 18,
     "up": 8,
     "side": -10,
     "lookAhead": 10,
     "fov": 55,
     "beamAngle": 45
    },
    {
     "u": 1,
     "kind": "chase",
     "back": 12,
     "up": 4,
     "side": -6,
     "lookAhead": 12,
     "fov": 55,
     "beamAngle": 45,
     "ease": "smoothstep"
    }
   ]
  },
  "cloudB": {
   "textSide": "left",
   "blendIn": 0.0,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 12,
     "up": 4,
     "side": -6,
     "lookAhead": 12,
     "fov": 55,
     "beamAngle": 45
    },
    {
     "u": 1,
     "kind": "chase",
     "back": 7,
     "up": 2.5,
     "side": -3.5,
     "lookAhead": 12,
     "fov": 55
    }
   ]
  },
  "stop263": {
   "textSide": "left",
   "blendIn": 0.2,
   "keys": [
    {
     "u": 0,
     "kind": "orbit",
     "center": {
      "cell": 263
     },
     "r": 8.2,
     "el": 0.0,
     "az0": -41.6,
     "az1": -77.0,
     "fov": 55,
     "beamAngle": 58
    }
   ]
  },
  "drag263": {
   "textSide": "left",
   "blendIn": 0.0,
   "keys": [
    {
     "u": 0,
     "kind": "orbit",
     "center": {
      "cell": 263
     },
     "r": 8.2,
     "el": 0.0,
     "az0": -77.0,
     "az1": -81.0,
     "fov": 55,
     "beamAngle": 58
    }
   ]
  },
  "restB": {
   "textSide": "left",
   "blendIn": 0.15,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 7,
     "up": 2.5,
     "side": -3.5,
     "lookAhead": 12,
     "fov": 55
    }
   ]
  },
  "coldknot": {
   "textSide": "left",
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 6,
     "up": 2,
     "side": -3,
     "lookAhead": 12,
     "fov": 55
    }
   ]
  },
  "halfway": {
   "textSide": "left",
   "blendIn": 0.0,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 6,
     "up": 2,
     "side": -3,
     "lookAhead": 12,
     "fov": 55
    },
    {
     "u": 0.45,
     "kind": "pose",
     "at": {
      "l": "probe",
      "back": 12,
      "up": 12,
      "side": -20
     },
     "look": {
      "mix": [
       "probe",
       "origin",
       0.12
      ]
     },
     "fov": 58,
     "beamAngle": 50,
     "ease": "smoothstep"
    },
    {
     "u": 0.6,
     "kind": "pose",
     "at": {
      "l": "probe",
      "back": 12,
      "up": 12,
      "side": -20
     },
     "look": {
      "mix": [
       "probe",
       "origin",
       0.12
      ]
     },
     "fov": 58,
     "beamAngle": 50
    },
    {
     "u": 1,
     "kind": "chase",
     "back": 8,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55,
     "ease": "smoothstep"
    }
   ]
  },
  "thread": {
   "textSide": "left",
   "blendIn": 0.25,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 8,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55
    },
    {
     "u": 0.2,
     "kind": "chase",
     "back": 8,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55,
     "beamAngle": 50
    },
    {
     "u": 0.4,
     "kind": "pose",
     "at": {
      "l": 24,
      "back": 0.0,
      "up": 40.0,
      "side": -280.0
     },
     "look": {
      "l": 24
     },
     "fov": 50.0,
     "beamAngle": 50.0,
     "ease": "smoothstep"
    },
    {
     "u": 0.72,
     "kind": "pose",
     "at": {
      "l": 24,
      "back": 0.0,
      "up": 40.0,
      "side": -280.0
     },
     "look": {
      "l": 24
     },
     "fov": 50.0,
     "beamAngle": 50.0
    },
    {
     "u": 1,
     "kind": "chase",
     "back": 8,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55,
     "beamAngle": 50,
     "ease": "smoothstep"
    }
   ],
   "about_fix3": "fix3 R4: from u 0.40 to 0.72 the camera holds a side view of the 84 kpc pair (cells 296 at l -18.2 and 438 at +65.7) aimed at their midpoint (l +24, hero-ray kpc) from 280 kpc off the beam, so both cells sit inside the world band in every layout class while B9.1 (u 0.61-0.70) is read; it comes back to the chase by u = 1. A later return breaks camera continuity or G3 at B9.2, an earlier one lets seek's comfort smoothing pull the frame off the pair."
  },
  "cloudD": {
   "textSide": "left",
   "blendIn": 0.3,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 8,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55
    }
   ]
  },
  "lookback": {
   "textSide": "left",
   "blendIn": 0.3,
   "keys": [
    {
     "u": 0,
     "kind": "chase",
     "back": 8,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55,
     "beamAngle": 55
    },
    {
     "u": 0.1,
     "kind": "chase",
     "back": 8,
     "up": 3,
     "side": -4,
     "lookAhead": 12,
     "fov": 55,
     "beamAngle": 55
    },
    {
     "u": 0.5,
     "kind": "pose",
     "at": {
      "l": "probe",
      "back": 12,
      "up": 6,
      "side": -16
     },
     "look": {
      "l": "probe-4"
     },
     "fov": 55,
     "beamAngle": 55,
     "ease": "smoothstep",
     "beamSign": "desc"
    },
    {
     "u": 0.75,
     "kind": "pose",
     "at": {
      "l": 150,
      "up": 60,
      "side": -140
     },
     "look": {
      "l": 150
     },
     "fov": 52,
     "beamAngle": 52,
     "ease": "smoothstep",
     "beamSign": "desc"
    },
    {
     "u": 1,
     "kind": "pose",
     "at": {
      "l": 0,
      "up": 137,
      "side": -300
     },
     "look": {
      "l": 0
     },
     "fov": 48,
     "beamAngle": 50,
     "ease": "smoothstep",
     "beamSign": "desc"
    }
   ]
  },
  "telescope": {
   "textSide": "left",
   "blendIn": 0.6,
   "keys": [
    {
     "u": 0,
     "kind": "pose",
     "at": {
      "l": 300,
      "up": 22,
      "side": -18
     },
     "look": {
      "l": 150
     },
     "fov": 50,
     "beamAngle": 55
    },
    {
     "u": 1,
     "kind": "pose",
     "at": {
      "l": 292,
      "up": 26,
      "side": -24
     },
     "look": {
      "l": 146
     },
     "fov": 50,
     "beamAngle": 55,
     "ease": "linear"
    }
   ]
  },
  "telescopeHold": {
   "textSide": "left",
   "blendIn": 0.0,
   "keys": [
    {
     "u": 0,
     "kind": "pose",
     "at": {
      "l": 292,
      "up": 26,
      "side": -24
     },
     "look": {
      "l": 146
     },
     "fov": 50,
     "beamAngle": 55
    },
    {
     "u": 1,
     "kind": "pose",
     "at": {
      "l": 280,
      "up": 34,
      "side": -34
     },
     "look": {
      "l": 140
     },
     "fov": 50,
     "beamAngle": 55,
     "ease": "linear"
    }
   ]
  },
  "readback": {
   "textSide": "left",
   "blendIn": 0.6,
   "keys": [
    {
     "u": 0,
     "kind": "pose",
     "at": {
      "l": 0,
      "up": 137,
      "side": -300
     },
     "look": {
      "l": 0
     },
     "fov": 48,
     "beamAngle": 50,
     "beamSign": "desc"
    },
    {
     "u": 1,
     "kind": "pose",
     "at": {
      "l": -10,
      "up": 128,
      "side": -282
     },
     "look": {
      "l": 0
     },
     "fov": 47,
     "beamAngle": 50,
     "beamSign": "desc",
     "ease": "linear"
    }
   ]
  },
  "yours": {
   "textSide": "left",
   "blendIn": 0.0,
   "keys": [
    {
     "u": 0,
     "kind": "pose",
     "at": {
      "l": -10,
      "up": 128,
      "side": -282
     },
     "look": {
      "l": 0
     },
     "fov": 47,
     "beamAngle": 50,
     "beamSign": "desc"
    },
    {
     "u": 1,
     "kind": "pose",
     "at": {
      "l": -18,
      "up": 122,
      "side": -268
     },
     "look": {
      "l": 0
     },
     "fov": 46,
     "beamAngle": 50,
     "beamSign": "desc",
     "ease": "linear"
    }
   ]
  }
 },
 "classMods": {
  "phonePortrait": {
   "upScale": 0.45,
   "sideScale": 1.3,
   "lookAheadScale": 0.35,
   "beamAngle": 22,
   "mixScale": 0.25
  },
  "narrow": {
   "upScale": 0.45,
   "sideScale": 1.3,
   "lookAheadScale": 0.35,
   "beamAngle": 10,
   "mixScale": 0.1
  },
  "tablet": {
   "upScale": 0.6,
   "sideScale": 1.1,
   "lookAheadScale": 0.6,
   "beamAngle": 26,
   "mixScale": 0.25
  },
  "phoneLandscape": {
   "beamAngle": 62
  }
 }
}