{
  "schemaVersion": "1.0.0",
  "kind": "nandarona.character-2d-runtime",
  "characterId": "terika",
  "familyId": "weather",
  "sourceRelease": "terika@2.3.0",
  "canvas": {
    "width": 512,
    "height": 512,
    "background": "white-matte"
  },
  "rendering": {
    "sourceCanvas": {
      "width": 512,
      "height": 512,
      "background": "white-matte"
    },
    "includedFormats": [
      "png",
      "webp"
    ],
    "alphaStatus": "not-included",
    "recommendedBlend": "normal",
    "warning": "Current frames use a white matte. Transparent cutouts and engine-native materials are not included and must not be claimed as included."
  },
  "runtime": {
    "coordinateSystem": "normalized-2d-top-left",
    "defaultPivot": {
      "x": 0.5,
      "y": 0.5
    },
    "stateCount": 6,
    "transitionPolicy": "Interpolate declared channels when practical; crossfade when topology changes.",
    "collisionPolicy": "These are readable environmental signals, not physics bodies. Use gameplay volumes separate from artwork.",
    "reducedMotion": "Jump to the destination state or use a 120ms opacity crossfade; never require flashing to understand state."
  },
  "motion": {
    "characterId": "terika",
    "motionModel": "projected-light-zone",
    "channels": [
      {
        "id": "beamAngle",
        "type": "angle-degrees",
        "range": [
          -60,
          60
        ],
        "default": 0
      },
      {
        "id": "beamWidth",
        "type": "normalized",
        "range": [
          0.15,
          1
        ],
        "default": 0.4
      },
      {
        "id": "warmthRadius",
        "type": "normalized",
        "range": [
          0,
          1
        ],
        "default": 0
      }
    ],
    "pivot": {
      "x": 0.5,
      "y": 0.82
    },
    "collision": "separate-gameplay-volume",
    "loop": {
      "states": [
        "dim",
        "seek",
        "narrow-beam"
      ],
      "durationMs": 2200
    }
  },
  "frames": [
    {
      "state": "dim",
      "index": 0,
      "png": "media/frames/dim.png",
      "webp": "media/frames/dim.webp",
      "sourceRect": {
        "x": 0,
        "y": 0,
        "width": 512,
        "height": 512
      },
      "contentBounds": {
        "x": 0.1582,
        "y": 0.1152,
        "width": 0.7344,
        "height": 0.7676
      }
    },
    {
      "state": "seek",
      "index": 1,
      "png": "media/frames/seek.png",
      "webp": "media/frames/seek.webp",
      "sourceRect": {
        "x": 512,
        "y": 0,
        "width": 512,
        "height": 512
      },
      "contentBounds": {
        "x": 0.0586,
        "y": 0.1348,
        "width": 0.7676,
        "height": 0.7617
      }
    },
    {
      "state": "narrow-beam",
      "index": 2,
      "png": "media/frames/narrow-beam.png",
      "webp": "media/frames/narrow-beam.webp",
      "sourceRect": {
        "x": 1024,
        "y": 0,
        "width": 512,
        "height": 512
      },
      "contentBounds": {
        "x": 0.0391,
        "y": 0.125,
        "width": 0.748,
        "height": 0.7539
      }
    },
    {
      "state": "reveal",
      "index": 3,
      "png": "media/frames/reveal.png",
      "webp": "media/frames/reveal.webp",
      "sourceRect": {
        "x": 0,
        "y": 512,
        "width": 512,
        "height": 512
      },
      "contentBounds": {
        "x": 0.0664,
        "y": 0.0664,
        "width": 0.8945,
        "height": 0.7754
      }
    },
    {
      "state": "warm-zone",
      "index": 4,
      "png": "media/frames/warm-zone.png",
      "webp": "media/frames/warm-zone.webp",
      "sourceRect": {
        "x": 512,
        "y": 512,
        "width": 512,
        "height": 512
      },
      "contentBounds": {
        "x": 0.041,
        "y": 0.0293,
        "width": 0.959,
        "height": 0.8301
      }
    },
    {
      "state": "set",
      "index": 5,
      "png": "media/frames/set.png",
      "webp": "media/frames/set.webp",
      "sourceRect": {
        "x": 1024,
        "y": 512,
        "width": 512,
        "height": 512
      },
      "contentBounds": {
        "x": 0,
        "y": 0.0156,
        "width": 0.8789,
        "height": 0.8223
      }
    }
  ]
}
