{
 "_note": "Movable pieces of the desk scene. 'box' is [left, top, right, bottom] in the scene's 1600 x 1000 units; each file is cropped to exactly that box, so place it with left/top/width/height computed from --ox/--oy/--u. Layers with \"below\": true sit UNDER the scene picture (the scene leaves that area transparent). Only animate with transform and opacity.",
 "scene": {
  "width": 1600,
  "height": 1000,
  "objectPosition": "72% 50%",
  "file": "assets/scene/desk-painted.webp"
 },
 "layers": {
  "tree": {
   "file": "assets/scene/tree.webp",
   "box": [
    1174.0,
    34.0,
    1568.0,
    547.3
   ],
   "below": true,
   "anchor": [
    1243,
    540
   ],
   "idle": "sways gently in the wind all the time; a stronger gust on hover over the window"
  },
  "plant": {
   "file": "assets/scene/plant.webp",
   "box": [
    134.7,
    0.0,
    234.7,
    184.0
   ],
   "anchor": [
    180,
    6
   ],
   "touch": "on hover or tap the vines swing like a pendulum and settle"
  },
  "bird": {
   "file": "assets/scene/bird.webp",
   "box": [
    1217.3,
    507.3,
    1296.7,
    554.0
   ],
   "anchor": [
    1252,
    549
   ],
   "touch": "on tap it hops twice along the sill (squash a little before each hop), turns its head, then settles"
  },
  "camera": {
   "file": "assets/scene/camera.webp",
   "box": [
    1318.0,
    446.7,
    1418.0,
    561.3
   ],
   "anchor": [
    1366,
    550
   ],
   "touch": "on click it dips slightly as if the shutter was pressed, and a white flash fills the screen for about 0.15 s"
  },
  "mug": {
   "file": "assets/scene/mug.webp",
   "box": [
    450.7,
    499.3,
    607.3,
    812.0
   ],
   "aboveMap": true,
   "note": "stands on the open map like a paperweight: drawn ABOVE the map and the stickers, always visible (the base scene no longer contains it)"
  },
  "gaiwan": {
   "file": "assets/scene/gaiwan.webp",
   "box": [
    1182.0,
    726.0,
    1417.3,
    846.7
   ],
   "aboveMap": true,
   "note": "stands on the open map like a paperweight: drawn ABOVE the map and the stickers, always visible (the base scene no longer contains it)"
  },
  "teacupLid": {
   "file": "assets/scene/teacupLid.webp",
   "box": [
    1228.7,
    680.7,
    1374.7,
    752.7
   ],
   "anchor": [
    1300,
    736
   ],
   "touch": "on click the lid rattles (two quick tilts) and settles",
   "aboveMap": true
  },
  "steam": {
   "file": "assets/scene/steam.webp",
   "box": [
    1230.7,
    686.7,
    1256.7,
    730.0
   ],
   "idle": "rises and fades in a slow loop",
   "aboveMap": true
  },
  "lampChain": {
   "file": "assets/scene/lampChain.webp",
   "box": [
    386.7,
    496.7,
    407.3,
    550.7
   ],
   "bead": [
    396,
    538
   ],
   "cordTop": [
    396,
    502
   ],
   "pullDistance": 22,
   "touch": "a switch: every pull toggles the lamp. On at the start of step 1.5; after Back to desk the chain sways again and a note says the lamp can be switched off"
  },
  "lampGlow": {
   "file": "assets/scene/lampGlow.webp",
   "box": [
    92.7,
    426.0,
    578.0,
    820.0
   ],
   "blend": "normal",
   "note": "fades in when the lamp switches on: a round pool of warm light straight under the shade, on the desk and the biscuit tin. Use mix-blend-mode: soft-light (or screen at low opacity) so the tin keeps its colours."
  },
  "lampDim": {
   "file": "assets/scene/lampDim.webp",
   "box": [
    0,
    0,
    1600,
    1000
   ],
   "note": "fades in with the light: the room darkens a little except where the lamp shines, so the eye goes to the tin"
  },
  "tinBody": {
   "file": "assets/scene/tinBody.webp",
   "box": [
    148.7,
    636.0,
    383.3,
    770.7
   ],
   "opening": [
    256,
    650
   ],
   "floor": [
    256,
    744
   ]
  },
  "tinLid": {
   "file": "assets/scene/tinLid.webp",
   "box": [
    158.7,
    626.0,
    355.3,
    672.0
   ],
   "hinge": [
    164,
    652
   ],
   "note": "the hinge is on the LEFT: the lid swings left and lands on the desk left of the tin, away from the map"
  },
  "aboutBoard": {
   "file": "assets/scene/aboutBoard.webp",
   "box": [
    328,
    212,
    418,
    292
   ],
   "note": "the cork under the about note, painted in; always shown, under it"
  },
  "aboutNote": {
   "file": "assets/scene/aboutNote.webp",
   "box": [
    328,
    212,
    418,
    292
   ],
   "pin": [
    372,
    222
   ],
   "lines": [
    [
     350,
     247,
     398,
     247
    ],
    [
     350,
     259,
     395,
     259
    ],
    [
     350,
     271,
     385,
     271
    ]
   ],
   "hint": [
    338,
    306
   ],
   "touch": "the about note (.ds-pinnote): its corner flutters now and then; on hover it lifts and the pin wobbles; on click it comes off its pin and opens as a letter (.ds-letter). hint: the top left of the \u5173\u4e8e\u6211 about note under it, its arrow pointing straight up"
  },
  "photoString": {
   "box": [
    600,
    112,
    1140,
    260
   ],
   "twine": {
    "y0": 10,
    "y1": 18,
    "sag": 46
   },
   "slots": {
    "first": 0.07,
    "step": 0.155,
    "count": 5
   },
   "tag": [
    444,
    44
   ],
   "note": "the photo string (.ds-photostring), between the cork board and the window: no picture of its own, js draws the twine and hangs the photos (js/photostring.js). twine: where it is tied at each end and how far it sags (units inside the box); slots: where the photos hang along it (0-1); tag: the \u6536\u96c6\u518c tag at its right end (units inside the box)"
  },
  "envelope": {
   "box": [
    84,
    742,
    354,
    910.75
   ],
   "rotate": -4,
   "hint": [
    372,
    842
   ],
   "note": "the ending's envelope (.ds-envelope, drawn in CSS: no picture), lying on the stack of books, turned -4deg; 16:10, so 270 units wide. hint: the top left of the \u62c9\u5f00\u5c01\u53e3 note beside it (from docs/ending-mockup.html). It slides onto the desk the first time in a visit that the visitor comes back from the map (js/ending.js)."
  },
  "duskLamp": {
   "box": [
    80,
    380,
    640,
    900
   ],
   "note": "the ending, at dusk: the desk lamp's warm pool (.ds-dusk__lamp, no picture), brighter than by day; fades in with .ds-dusk (BUILD_PLAN step 6, 3)"
  }
 }
}