{
  "sprites": {
    "mecha_frieza": {
      "src": "assets/android/mecha_frieza-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            166,
            256
          ]
        ],
        "attack": [
          [
            270,
            6,
            252,
            200
          ],
          [
            534,
            6,
            231,
            244
          ],
          [
            798,
            6,
            233,
            260
          ],
          [
            6,
            278,
            166,
            256
          ]
        ],
        "special": [
          [
            270,
            278,
            166,
            256
          ],
          [
            534,
            278,
            164,
            256
          ],
          [
            798,
            278,
            166,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            83.0,
            256
          ]
        ],
        "attack": [
          [
            126.0,
            200
          ],
          [
            115.5,
            244
          ],
          [
            116.5,
            260
          ],
          [
            83.0,
            256
          ]
        ],
        "special": [
          [
            83.0,
            256
          ],
          [
            82.0,
            256
          ],
          [
            83.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            146,
            102
          ],
          [
            144,
            102
          ],
          [
            146,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00217",
      "cardId": "1030990",
      "source": "https://dbz-dokkanbattle.com/card/1030990",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
            "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image0.png",
            "sourceRectPixels": [
              891,
              410,
              1012,
              504
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              121,
              187
            ],
            "scaleForDisplay": 1.3689839572192513
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
            "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image1.png",
            "sourceRectPixels": [
              768,
              186,
              952,
              259
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              184,
              146
            ],
            "scaleForDisplay": 1.3689839572192513
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
            "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image1.png",
            "sourceRectPixels": [
              762,
              260,
              940,
              344
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              169,
              178
            ],
            "scaleForDisplay": 1.3689839572192513
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
            "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image1.png",
            "sourceRectPixels": [
              194,
              77,
              384,
              162
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              170,
              190
            ],
            "scaleForDisplay": 1.3689839572192513
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
            "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image0.png",
            "sourceRectPixels": [
              891,
              410,
              1012,
              504
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              121,
              187
            ],
            "scaleForDisplay": 1.3689839572192513
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
            "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image0.png",
            "sourceRectPixels": [
              891,
              410,
              1012,
              504
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              121,
              187
            ],
            "scaleForDisplay": 1.3689839572192513
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/mecha_frieza/sp01/sp_character_00217_01.lwf",
            "sourceTexture": "source-assets/android/mecha_frieza/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              416,
              324
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              414,
              646
            ],
            "scaleForDisplay": 0.39628482972136225
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/mecha_frieza/battle/battle_character_00217.lwf",
            "sourceTexture": "source-assets/android/mecha_frieza/battle/lwf_image0.png",
            "sourceRectPixels": [
              891,
              410,
              1012,
              504
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              121,
              187
            ],
            "scaleForDisplay": 1.3689839572192513
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "king_cold": {
      "src": "assets/android/king_cold-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            176,
            256
          ]
        ],
        "attack": [
          [
            329,
            6,
            202,
            239
          ],
          [
            652,
            6,
            265,
            238
          ],
          [
            975,
            6,
            258,
            241
          ],
          [
            6,
            274,
            176,
            256
          ]
        ],
        "special": [
          [
            329,
            274,
            176,
            256
          ],
          [
            652,
            274,
            311,
            256
          ],
          [
            975,
            274,
            176,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            88.0,
            256
          ]
        ],
        "attack": [
          [
            101.0,
            239
          ],
          [
            132.5,
            238
          ],
          [
            129.0,
            241
          ],
          [
            88.0,
            256
          ]
        ],
        "special": [
          [
            88.0,
            256
          ],
          [
            155.5,
            256
          ],
          [
            88.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            155,
            102
          ],
          [
            274,
            102
          ],
          [
            155,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00213",
      "cardId": "1024040",
      "source": "https://dbz-dokkanbattle.com/card/1024040",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
            "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
            "sourceRectPixels": [
              780,
              166,
              1013,
              335
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              233,
              338
            ],
            "scaleForDisplay": 0.757396449704142
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
            "sourceTexture": "source-assets/android/king_cold/battle/lwf_image0.png",
            "sourceRectPixels": [
              586,
              160,
              902,
              294
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              267,
              316
            ],
            "scaleForDisplay": 0.757396449704142
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
            "sourceTexture": "source-assets/android/king_cold/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              336,
              316,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              350,
              314
            ],
            "scaleForDisplay": 0.757396449704142
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
            "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              345,
              343,
              504
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              341,
              318
            ],
            "scaleForDisplay": 0.757396449704142
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
            "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
            "sourceRectPixels": [
              780,
              166,
              1013,
              335
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              233,
              338
            ],
            "scaleForDisplay": 0.757396449704142
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
            "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
            "sourceRectPixels": [
              780,
              166,
              1013,
              335
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              233,
              338
            ],
            "scaleForDisplay": 0.757396449704142
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/king_cold/sp01/sp_character_00213_01.lwf",
            "sourceTexture": "source-assets/android/king_cold/sp01/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              1014,
              417
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              1012,
              832
            ],
            "scaleForDisplay": 0.3076923076923077
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/king_cold/battle/battle_character_00213.lwf",
            "sourceTexture": "source-assets/android/king_cold/battle/lwf_image2.png",
            "sourceRectPixels": [
              780,
              166,
              1013,
              335
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              233,
              338
            ],
            "scaleForDisplay": 0.757396449704142
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "android16": {
      "src": "assets/android/android16-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            139,
            256
          ]
        ],
        "attack": [
          [
            302,
            6,
            245,
            196
          ],
          [
            598,
            6,
            213,
            234
          ],
          [
            894,
            6,
            284,
            240
          ],
          [
            6,
            274,
            139,
            256
          ]
        ],
        "special": [
          [
            302,
            274,
            139,
            256
          ],
          [
            598,
            274,
            262,
            256
          ],
          [
            894,
            274,
            139,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            69.5,
            256
          ]
        ],
        "attack": [
          [
            122.5,
            196
          ],
          [
            106.5,
            234
          ],
          [
            142.0,
            240
          ],
          [
            69.5,
            256
          ]
        ],
        "special": [
          [
            69.5,
            256
          ],
          [
            131.0,
            256
          ],
          [
            69.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            122,
            102
          ],
          [
            231,
            102
          ],
          [
            122,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00022",
      "cardId": "1001270",
      "source": "https://dbz-dokkanbattle.com/card/1001270",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
            "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
            "sourceRectPixels": [
              288,
              439,
              554,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              144,
              266
            ],
            "scaleForDisplay": 0.9660377358490566
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
            "sourceTexture": "source-assets/android/android16/battle/lwf_image2.png",
            "sourceRectPixels": [
              144,
              1,
              348,
              128
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              254,
              204
            ],
            "scaleForDisplay": 0.9660377358490566
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
            "sourceTexture": "source-assets/android/android16/battle/lwf_image2.png",
            "sourceRectPixels": [
              434,
              381,
              654,
              502
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              220,
              242
            ],
            "scaleForDisplay": 0.9660377358490566
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
            "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              296,
              125
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              294,
              248
            ],
            "scaleForDisplay": 0.9660377358490566
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
            "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
            "sourceRectPixels": [
              288,
              439,
              554,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              144,
              266
            ],
            "scaleForDisplay": 0.9660377358490566
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
            "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
            "sourceRectPixels": [
              288,
              439,
              554,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              144,
              266
            ],
            "scaleForDisplay": 0.9660377358490566
          },
          {
            "kind": "special",
            "fragment": 2,
            "sourceLwf": "source-assets/android/android16/sp01/sp_character_00022_01.lwf",
            "sourceTexture": "source-assets/android/android16/sp01/lwf_image1.png",
            "sourceRectPixels": [
              596,
              138,
              864,
              269
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              268,
              262
            ],
            "scaleForDisplay": 0.9770992366412213
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android16/battle/battle_character_00022.lwf",
            "sourceTexture": "source-assets/android/android16/battle/lwf_image1.png",
            "sourceRectPixels": [
              288,
              439,
              554,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              144,
              266
            ],
            "scaleForDisplay": 0.9660377358490566
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "android17": {
      "src": "assets/android/android17-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            122,
            256
          ]
        ],
        "attack": [
          [
            256,
            6,
            173,
            260
          ],
          [
            506,
            6,
            238,
            258
          ],
          [
            756,
            6,
            208,
            257
          ],
          [
            6,
            278,
            122,
            256
          ]
        ],
        "special": [
          [
            256,
            278,
            122,
            256
          ],
          [
            506,
            278,
            185,
            256
          ],
          [
            756,
            278,
            122,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            61.0,
            256
          ]
        ],
        "attack": [
          [
            86.5,
            260
          ],
          [
            119.0,
            258
          ],
          [
            104.0,
            257
          ],
          [
            61.0,
            256
          ]
        ],
        "special": [
          [
            61.0,
            256
          ],
          [
            92.5,
            256
          ],
          [
            61.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            107,
            102
          ],
          [
            163,
            102
          ],
          [
            107,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00021",
      "cardId": "1001250",
      "source": "https://dbz-dokkanbattle.com/card/1001250",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
            "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
            "sourceRectPixels": [
              812,
              460,
              1021,
              510
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              100,
              209
            ],
            "scaleForDisplay": 1.2248803827751196
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
            "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
            "sourceRectPixels": [
              616,
              244,
              828,
              315
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              141,
              212
            ],
            "scaleForDisplay": 1.2248803827751196
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
            "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
            "sourceRectPixels": [
              428,
              76,
              622,
              181
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              194,
              211
            ],
            "scaleForDisplay": 1.2248803827751196
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
            "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
            "sourceRectPixels": [
              600,
              400,
              810,
              485
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              170,
              210
            ],
            "scaleForDisplay": 1.2248803827751196
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
            "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
            "sourceRectPixels": [
              812,
              460,
              1021,
              510
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              100,
              209
            ],
            "scaleForDisplay": 1.2248803827751196
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
            "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
            "sourceRectPixels": [
              812,
              460,
              1021,
              510
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              100,
              209
            ],
            "scaleForDisplay": 1.2248803827751196
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/android17/sp01/sp_character_00021_01.lwf",
            "sourceTexture": "source-assets/android/android17/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              425,
              294
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              423,
              585
            ],
            "scaleForDisplay": 0.4376068376068376
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android17/battle/battle_character_00021.lwf",
            "sourceTexture": "source-assets/android/android17/battle/lwf_image0.png",
            "sourceRectPixels": [
              812,
              460,
              1021,
              510
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              100,
              209
            ],
            "scaleForDisplay": 1.2248803827751196
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "android18": {
      "src": "assets/android/android18-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            112,
            256
          ]
        ],
        "attack": [
          [
            175,
            6,
            134,
            216
          ],
          [
            344,
            6,
            157,
            226
          ],
          [
            513,
            6,
            149,
            243
          ],
          [
            6,
            274,
            112,
            256
          ]
        ],
        "special": [
          [
            175,
            274,
            112,
            256
          ],
          [
            344,
            274,
            117,
            256
          ],
          [
            513,
            274,
            112,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            56.0,
            256
          ]
        ],
        "attack": [
          [
            67.0,
            216
          ],
          [
            78.5,
            226
          ],
          [
            74.5,
            243
          ],
          [
            56.0,
            256
          ]
        ],
        "special": [
          [
            56.0,
            256
          ],
          [
            58.5,
            256
          ],
          [
            56.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            99,
            102
          ],
          [
            103,
            102
          ],
          [
            99,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00020",
      "cardId": "1001260",
      "source": "https://dbz-dokkanbattle.com/card/1001260",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
            "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
            "sourceRectPixels": [
              239,
              404,
              332,
              510
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              93,
              212
            ],
            "scaleForDisplay": 1.2075471698113207
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
            "sourceTexture": "source-assets/android/android18/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              181,
              56
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              111,
              179
            ],
            "scaleForDisplay": 1.2075471698113207
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
            "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
            "sourceRectPixels": [
              694,
              398,
              824,
              492
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              130,
              187
            ],
            "scaleForDisplay": 1.2075471698113207
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
            "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
            "sourceRectPixels": [
              460,
              1,
              583,
              102
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              123,
              201
            ],
            "scaleForDisplay": 1.2075471698113207
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
            "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
            "sourceRectPixels": [
              239,
              404,
              332,
              510
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              93,
              212
            ],
            "scaleForDisplay": 1.2075471698113207
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
            "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
            "sourceRectPixels": [
              239,
              404,
              332,
              510
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              93,
              212
            ],
            "scaleForDisplay": 1.2075471698113207
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/android18/sp01/sp_character_00020_01.lwf",
            "sourceTexture": "source-assets/android/android18/sp01/lwf_image0.png",
            "sourceRectPixels": [
              302,
              1,
              599,
              326
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              297,
              649
            ],
            "scaleForDisplay": 0.39445300462249616
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android18/battle/battle_character_00020.lwf",
            "sourceTexture": "source-assets/android/android18/battle/lwf_image0.png",
            "sourceRectPixels": [
              239,
              404,
              332,
              510
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              93,
              212
            ],
            "scaleForDisplay": 1.2075471698113207
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "android19": {
      "src": "assets/android/android19-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            171,
            256
          ]
        ],
        "attack": [
          [
            239,
            6,
            176,
            244
          ],
          [
            472,
            6,
            219,
            240
          ],
          [
            705,
            6,
            221,
            245
          ],
          [
            6,
            274,
            171,
            256
          ]
        ],
        "special": [
          [
            239,
            274,
            171,
            256
          ],
          [
            472,
            274,
            168,
            256
          ],
          [
            705,
            274,
            171,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            85.5,
            256
          ]
        ],
        "attack": [
          [
            88.0,
            244
          ],
          [
            109.5,
            240
          ],
          [
            110.5,
            245
          ],
          [
            85.5,
            256
          ]
        ],
        "special": [
          [
            85.5,
            256
          ],
          [
            84.0,
            256
          ],
          [
            85.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            150,
            102
          ],
          [
            148,
            102
          ],
          [
            150,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00018",
      "cardId": "1001230",
      "source": "https://dbz-dokkanbattle.com/card/1001230",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
            "sourceTexture": "source-assets/android/android19/battle/lwf_image0.png",
            "sourceRectPixels": [
              383,
              76,
              616,
              154
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              156,
              233
            ],
            "scaleForDisplay": 1.0987124463519313
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
            "sourceTexture": "source-assets/android/android19/battle/lwf_image1.png",
            "sourceRectPixels": [
              430,
              176,
              590,
              288
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              160,
              222
            ],
            "scaleForDisplay": 1.0987124463519313
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
            "sourceTexture": "source-assets/android/android19/battle/lwf_image1.png",
            "sourceRectPixels": [
              205,
              295,
              404,
              404
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              199,
              218
            ],
            "scaleForDisplay": 1.0987124463519313
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
            "sourceTexture": "source-assets/android/android19/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              188,
              203,
              300
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              201,
              223
            ],
            "scaleForDisplay": 1.0987124463519313
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
            "sourceTexture": "source-assets/android/android19/battle/lwf_image0.png",
            "sourceRectPixels": [
              383,
              76,
              616,
              154
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              156,
              233
            ],
            "scaleForDisplay": 1.0987124463519313
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
            "sourceTexture": "source-assets/android/android19/battle/lwf_image0.png",
            "sourceRectPixels": [
              383,
              76,
              616,
              154
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              156,
              233
            ],
            "scaleForDisplay": 1.0987124463519313
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/android19/sp01/sp_character_00018_01.lwf",
            "sourceTexture": "source-assets/android/android19/sp01/lwf_image0.png",
            "sourceRectPixels": [
              460,
              1,
              916,
              349
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              456,
              696
            ],
            "scaleForDisplay": 0.367816091954023
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/android19/battle/battle_character_00018.lwf",
            "sourceTexture": "source-assets/android/android19/battle/lwf_image0.png",
            "sourceRectPixels": [
              383,
              76,
              616,
              154
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              156,
              233
            ],
            "scaleForDisplay": 1.0987124463519313
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "dr_gero": {
      "src": "assets/android/dr_gero-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            199,
            256
          ]
        ],
        "attack": [
          [
            270,
            6,
            170,
            247
          ],
          [
            534,
            6,
            252,
            238
          ],
          [
            798,
            6,
            235,
            244
          ],
          [
            6,
            274,
            199,
            256
          ]
        ],
        "special": [
          [
            270,
            274,
            199,
            256
          ],
          [
            534,
            274,
            236,
            256
          ],
          [
            798,
            274,
            199,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            99.5,
            256
          ]
        ],
        "attack": [
          [
            85.0,
            247
          ],
          [
            126.0,
            238
          ],
          [
            117.5,
            244
          ],
          [
            99.5,
            256
          ]
        ],
        "special": [
          [
            99.5,
            256
          ],
          [
            118.0,
            256
          ],
          [
            99.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            175,
            102
          ],
          [
            208,
            102
          ],
          [
            175,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00019",
      "cardId": "1001240",
      "source": "https://dbz-dokkanbattle.com/card/1001240",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
            "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
            "sourceRectPixels": [
              334,
              427,
              542,
              508
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              162,
              208
            ],
            "scaleForDisplay": 1.2307692307692308
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
            "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
            "sourceRectPixels": [
              602,
              1,
              740,
              102
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              138,
              201
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
            "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image0.png",
            "sourceRectPixels": [
              215,
              310,
              420,
              406
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              205,
              193
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
            "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
            "sourceRectPixels": [
              769,
              98,
              960,
              198
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              191,
              198
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
            "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
            "sourceRectPixels": [
              334,
              427,
              542,
              508
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              162,
              208
            ],
            "scaleForDisplay": 1.2307692307692308
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
            "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
            "sourceRectPixels": [
              334,
              427,
              542,
              508
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              162,
              208
            ],
            "scaleForDisplay": 1.2307692307692308
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/dr_gero/sp01/sp_character_00019_01.lwf",
            "sourceTexture": "source-assets/android/dr_gero/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              550,
              298
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              548,
              595
            ],
            "scaleForDisplay": 0.43025210084033616
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/dr_gero/battle/battle_character_00019.lwf",
            "sourceTexture": "source-assets/android/dr_gero/battle/lwf_image1.png",
            "sourceRectPixels": [
              334,
              427,
              542,
              508
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              162,
              208
            ],
            "scaleForDisplay": 1.2307692307692308
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "cell": {
      "src": "assets/android/cell-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            213,
            256
          ]
        ],
        "attack": [
          [
            302,
            6,
            241,
            214
          ],
          [
            598,
            6,
            261,
            251
          ],
          [
            894,
            6,
            284,
            252
          ],
          [
            6,
            274,
            213,
            256
          ]
        ],
        "special": [
          [
            302,
            274,
            213,
            256
          ],
          [
            598,
            274,
            224,
            256
          ],
          [
            894,
            274,
            213,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            106.5,
            256
          ]
        ],
        "attack": [
          [
            120.5,
            214
          ],
          [
            130.5,
            251
          ],
          [
            142.0,
            252
          ],
          [
            106.5,
            256
          ]
        ],
        "special": [
          [
            106.5,
            256
          ],
          [
            112.0,
            256
          ],
          [
            106.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            187,
            102
          ],
          [
            197,
            102
          ],
          [
            187,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00006",
      "cardId": "1000070",
      "source": "https://dbz-dokkanbattle.com/card/1000070",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
            "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              270,
              288,
              390
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              238,
              286
            ],
            "scaleForDisplay": 0.8951048951048951
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
            "sourceTexture": "source-assets/android/cell/battle/lwf_image3.png",
            "sourceRectPixels": [
              606,
              121,
              875,
              240
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              269,
              239
            ],
            "scaleForDisplay": 0.8951048951048951
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
            "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
            "sourceRectPixels": [
              326,
              1,
              618,
              141
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              292,
              280
            ],
            "scaleForDisplay": 0.8951048951048951
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
            "sourceTexture": "source-assets/android/cell/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              319,
              142
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              317,
              281
            ],
            "scaleForDisplay": 0.8951048951048951
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
            "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              270,
              288,
              390
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              238,
              286
            ],
            "scaleForDisplay": 0.8951048951048951
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
            "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              270,
              288,
              390
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              238,
              286
            ],
            "scaleForDisplay": 0.8951048951048951
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/cell/sp01/sp_character_00006_01.lwf",
            "sourceTexture": "source-assets/android/cell/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              841,
              480
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              839,
              957
            ],
            "scaleForDisplay": 0.26750261233019856
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell/battle/battle_character_00006.lwf",
            "sourceTexture": "source-assets/android/cell/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              270,
              288,
              390
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              238,
              286
            ],
            "scaleForDisplay": 0.8951048951048951
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "cell_second": {
      "src": "assets/android/cell_second-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            152,
            256
          ]
        ],
        "attack": [
          [
            302,
            6,
            209,
            229
          ],
          [
            598,
            6,
            284,
            233
          ],
          [
            894,
            6,
            205,
            252
          ],
          [
            6,
            274,
            152,
            256
          ]
        ],
        "special": [
          [
            302,
            274,
            152,
            256
          ],
          [
            598,
            274,
            217,
            256
          ],
          [
            894,
            274,
            152,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            76.0,
            256
          ]
        ],
        "attack": [
          [
            104.5,
            229
          ],
          [
            142.0,
            233
          ],
          [
            102.5,
            252
          ],
          [
            76.0,
            256
          ]
        ],
        "special": [
          [
            76.0,
            256
          ],
          [
            108.5,
            256
          ],
          [
            76.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            134,
            102
          ],
          [
            191,
            102
          ],
          [
            134,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00204",
      "cardId": "1001710",
      "source": "https://dbz-dokkanbattle.com/card/1001710",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
            "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
            "sourceRectPixels": [
              534,
              328,
              748,
              508
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              214,
              360
            ],
            "scaleForDisplay": 0.7111111111111111
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
            "sourceTexture": "source-assets/android/cell_second/battle/lwf_image0.png",
            "sourceRectPixels": [
              698,
              335,
              1020,
              482
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              294,
              322
            ],
            "scaleForDisplay": 0.7111111111111111
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
            "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              306,
              329,
              506
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              399,
              327
            ],
            "scaleForDisplay": 0.7111111111111111
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
            "sourceTexture": "source-assets/android/cell_second/battle/lwf_image3.png",
            "sourceRectPixels": [
              329,
              272,
              683,
              416
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              288,
              354
            ],
            "scaleForDisplay": 0.7111111111111111
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
            "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
            "sourceRectPixels": [
              534,
              328,
              748,
              508
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              214,
              360
            ],
            "scaleForDisplay": 0.7111111111111111
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
            "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
            "sourceRectPixels": [
              534,
              328,
              748,
              508
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              214,
              360
            ],
            "scaleForDisplay": 0.7111111111111111
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/cell_second/sp01/sp_character_00204_01.lwf",
            "sourceTexture": "source-assets/android/cell_second/sp01/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              828,
              488
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              826,
              974
            ],
            "scaleForDisplay": 0.26283367556468173
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_second/battle/battle_character_00204.lwf",
            "sourceTexture": "source-assets/android/cell_second/battle/lwf_image1.png",
            "sourceRectPixels": [
              534,
              328,
              748,
              508
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              214,
              360
            ],
            "scaleForDisplay": 0.7111111111111111
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "cell_perfect": {
      "src": "assets/android/cell_perfect-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            94,
            256
          ]
        ],
        "attack": [
          [
            258,
            6,
            180,
            224
          ],
          [
            510,
            6,
            207,
            230
          ],
          [
            762,
            6,
            199,
            254
          ],
          [
            6,
            274,
            94,
            256
          ]
        ],
        "special": [
          [
            258,
            274,
            94,
            256
          ],
          [
            510,
            274,
            240,
            256
          ],
          [
            762,
            274,
            94,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            47.0,
            256
          ]
        ],
        "attack": [
          [
            90.0,
            224
          ],
          [
            103.5,
            230
          ],
          [
            99.5,
            254
          ],
          [
            47.0,
            256
          ]
        ],
        "special": [
          [
            47.0,
            256
          ],
          [
            120.0,
            256
          ],
          [
            47.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            83,
            102
          ],
          [
            211,
            102
          ],
          [
            83,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00205",
      "cardId": "1001720",
      "source": "https://dbz-dokkanbattle.com/card/1001720",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
            "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              324,
              120,
              484
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              118,
              321
            ],
            "scaleForDisplay": 0.7975077881619937
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
            "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              292,
              228,
              432
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              226,
              281
            ],
            "scaleForDisplay": 0.7975077881619937
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
            "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              261,
              146
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              259,
              289
            ],
            "scaleForDisplay": 0.7975077881619937
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
            "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
            "sourceRectPixels": [
              169,
              1,
              418,
              160
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              249,
              318
            ],
            "scaleForDisplay": 0.7975077881619937
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
            "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              324,
              120,
              484
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              118,
              321
            ],
            "scaleForDisplay": 0.7975077881619937
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
            "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              324,
              120,
              484
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              118,
              321
            ],
            "scaleForDisplay": 0.7975077881619937
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/cell_perfect/sp01/sp_character_00205_01.lwf",
            "sourceTexture": "source-assets/android/cell_perfect/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              806,
              430
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              804,
              858
            ],
            "scaleForDisplay": 0.29836829836829837
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_perfect/battle/battle_character_00205.lwf",
            "sourceTexture": "source-assets/android/cell_perfect/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              324,
              120,
              484
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              118,
              321
            ],
            "scaleForDisplay": 0.7975077881619937
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "cell_superperfect": {
      "src": "assets/android/cell_superperfect-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            127,
            256
          ]
        ],
        "attack": [
          [
            285,
            6,
            194,
            236
          ],
          [
            564,
            6,
            189,
            211
          ],
          [
            843,
            6,
            189,
            234
          ],
          [
            6,
            274,
            127,
            256
          ]
        ],
        "special": [
          [
            285,
            274,
            127,
            256
          ],
          [
            564,
            274,
            267,
            256
          ],
          [
            843,
            274,
            127,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            63.5,
            256
          ]
        ],
        "attack": [
          [
            97.0,
            236
          ],
          [
            94.5,
            211
          ],
          [
            94.5,
            234
          ],
          [
            63.5,
            256
          ]
        ],
        "special": [
          [
            63.5,
            256
          ],
          [
            133.5,
            256
          ],
          [
            63.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            112,
            102
          ],
          [
            235,
            102
          ],
          [
            112,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00202",
      "cardId": "1003760",
      "source": "https://dbz-dokkanbattle.com/card/1003760",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
            "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              187,
              188
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              185,
              373
            ],
            "scaleForDisplay": 0.6863270777479893
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
            "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              178,
              284,
              350
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              282,
              344
            ],
            "scaleForDisplay": 0.6863270777479893
          },
          {
            "kind": "attack",
            "fragment": 28,
            "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
            "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image2.png",
            "sourceRectPixels": [
              746,
              162,
              1022,
              316
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              276,
              308
            ],
            "scaleForDisplay": 0.6863270777479893
          },
          {
            "kind": "attack",
            "fragment": 37,
            "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
            "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image2.png",
            "sourceRectPixels": [
              134,
              180,
              409,
              350
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              275,
              341
            ],
            "scaleForDisplay": 0.6863270777479893
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
            "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              187,
              188
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              185,
              373
            ],
            "scaleForDisplay": 0.6863270777479893
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
            "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              187,
              188
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              185,
              373
            ],
            "scaleForDisplay": 0.6863270777479893
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/cell_superperfect/sp01/sp_character_00202_01.lwf",
            "sourceTexture": "source-assets/android/cell_superperfect/sp01/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              952,
              456
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              950,
              910
            ],
            "scaleForDisplay": 0.2813186813186813
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_superperfect/battle/battle_character_00202.lwf",
            "sourceTexture": "source-assets/android/cell_superperfect/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              187,
              188
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              185,
              373
            ],
            "scaleForDisplay": 0.6863270777479893
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "cell_jr": {
      "src": "assets/android/cell_jr-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            274,
            256
          ]
        ],
        "attack": [
          [
            376,
            6,
            292,
            233
          ],
          [
            746,
            6,
            358,
            284
          ],
          [
            1116,
            6,
            310,
            248
          ],
          [
            6,
            302,
            274,
            256
          ]
        ],
        "special": [
          [
            376,
            302,
            274,
            256
          ],
          [
            746,
            302,
            247,
            256
          ],
          [
            1116,
            302,
            274,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            137.0,
            256
          ]
        ],
        "attack": [
          [
            146.0,
            233
          ],
          [
            179.0,
            284
          ],
          [
            155.0,
            248
          ],
          [
            137.0,
            256
          ]
        ],
        "special": [
          [
            137.0,
            256
          ],
          [
            123.5,
            256
          ],
          [
            137.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            241,
            102
          ],
          [
            217,
            102
          ],
          [
            241,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00040",
      "cardId": "1000660",
      "source": "https://dbz-dokkanbattle.com/card/1000660",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
            "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
            "sourceRectPixels": [
              686,
              282,
              793,
              332
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              107,
              100
            ],
            "scaleForDisplay": 2.56
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
            "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
            "sourceRectPixels": [
              783,
              162,
              874,
              219
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              114,
              91
            ],
            "scaleForDisplay": 2.56
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
            "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
            "sourceRectPixels": [
              364,
              1,
              504,
              56
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              140,
              111
            ],
            "scaleForDisplay": 2.56
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
            "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
            "sourceRectPixels": [
              506,
              64,
              627,
              113
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              121,
              97
            ],
            "scaleForDisplay": 2.56
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
            "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
            "sourceRectPixels": [
              686,
              282,
              793,
              332
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              107,
              100
            ],
            "scaleForDisplay": 2.56
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
            "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
            "sourceRectPixels": [
              686,
              282,
              793,
              332
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              107,
              100
            ],
            "scaleForDisplay": 2.56
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/cell_jr/sp01/sp_character_00040_01.lwf",
            "sourceTexture": "source-assets/android/cell_jr/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              163,
              348,
              330
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              334,
              346
            ],
            "scaleForDisplay": 0.7398843930635838
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/cell_jr/battle/battle_character_00040.lwf",
            "sourceTexture": "source-assets/android/cell_jr/battle/lwf_image0.png",
            "sourceRectPixels": [
              686,
              282,
              793,
              332
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              107,
              100
            ],
            "scaleForDisplay": 2.56
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "hercule": {
      "src": "assets/android/hercule-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            244,
            256
          ]
        ],
        "attack": [
          [
            355,
            6,
            280,
            273
          ],
          [
            704,
            6,
            279,
            273
          ],
          [
            1053,
            6,
            337,
            264
          ],
          [
            6,
            291,
            244,
            256
          ]
        ],
        "special": [
          [
            355,
            291,
            244,
            256
          ],
          [
            704,
            291,
            324,
            256
          ],
          [
            1053,
            291,
            244,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            122.0,
            256
          ]
        ],
        "attack": [
          [
            140.0,
            273
          ],
          [
            139.5,
            273
          ],
          [
            168.5,
            264
          ],
          [
            122.0,
            256
          ]
        ],
        "special": [
          [
            122.0,
            256
          ],
          [
            162.0,
            256
          ],
          [
            122.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            215,
            102
          ],
          [
            285,
            102
          ],
          [
            215,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00226",
      "cardId": "1000820",
      "source": "https://dbz-dokkanbattle.com/card/1000820",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
            "sourceTexture": "source-assets/android/hercule/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              217,
              104
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              205,
              215
            ],
            "scaleForDisplay": 1.1906976744186046
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
            "sourceTexture": "source-assets/android/hercule/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              210,
              237,
              325
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              235,
              229
            ],
            "scaleForDisplay": 1.1906976744186046
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
            "sourceTexture": "source-assets/android/hercule/battle/lwf_image2.png",
            "sourceRectPixels": [
              742,
              212,
              976,
              326
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              234,
              229
            ],
            "scaleForDisplay": 1.1906976744186046
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
            "sourceTexture": "source-assets/android/hercule/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              243,
              224,
              384
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              283,
              222
            ],
            "scaleForDisplay": 1.1906976744186046
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
            "sourceTexture": "source-assets/android/hercule/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              217,
              104
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              205,
              215
            ],
            "scaleForDisplay": 1.1906976744186046
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
            "sourceTexture": "source-assets/android/hercule/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              217,
              104
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              205,
              215
            ],
            "scaleForDisplay": 1.1906976744186046
          },
          {
            "kind": "special",
            "fragment": 2,
            "sourceLwf": "source-assets/android/hercule/sp01/sp_character_00226_01.lwf",
            "sourceTexture": "source-assets/android/hercule/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              984,
              389
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              982,
              776
            ],
            "scaleForDisplay": 0.32989690721649484
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/hercule/battle/battle_character_00226.lwf",
            "sourceTexture": "source-assets/android/hercule/battle/lwf_image3.png",
            "sourceRectPixels": [
              2,
              1,
              217,
              104
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              205,
              215
            ],
            "scaleForDisplay": 1.1906976744186046
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "trunks_future": {
      "src": "assets/android/trunks_future-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            156,
            256
          ]
        ],
        "attack": [
          [
            270,
            6,
            226,
            206
          ],
          [
            534,
            6,
            191,
            259
          ],
          [
            798,
            6,
            252,
            233
          ],
          [
            6,
            277,
            156,
            256
          ]
        ],
        "special": [
          [
            270,
            277,
            156,
            256
          ],
          [
            534,
            277,
            234,
            256
          ],
          [
            798,
            277,
            156,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            78.0,
            256
          ]
        ],
        "attack": [
          [
            113.0,
            206
          ],
          [
            95.5,
            259
          ],
          [
            126.0,
            233
          ],
          [
            78.0,
            256
          ]
        ],
        "special": [
          [
            78.0,
            256
          ],
          [
            117.0,
            256
          ],
          [
            78.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            137,
            102
          ],
          [
            206,
            102
          ],
          [
            137,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00211",
      "cardId": "1001860",
      "source": "https://dbz-dokkanbattle.com/card/1001860",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
            "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              105,
              126,
              207
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              124,
              204
            ],
            "scaleForDisplay": 1.2549019607843137
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
            "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              620,
              192,
              784,
              282
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              180,
              164
            ],
            "scaleForDisplay": 1.2549019607843137
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
            "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image0.png",
            "sourceRectPixels": [
              770,
              424,
              976,
              500
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              152,
              206
            ],
            "scaleForDisplay": 1.2549019607843137
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
            "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              410,
              188,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              201,
              186
            ],
            "scaleForDisplay": 1.2549019607843137
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
            "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              105,
              126,
              207
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              124,
              204
            ],
            "scaleForDisplay": 1.2549019607843137
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
            "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              105,
              126,
              207
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              124,
              204
            ],
            "scaleForDisplay": 1.2549019607843137
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/trunks_future/sp01/sp_character_00211_01.lwf",
            "sourceTexture": "source-assets/android/trunks_future/sp01/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              552,
              302
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              550,
              601
            ],
            "scaleForDisplay": 0.4259567387687188
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_future/battle/battle_character_00211.lwf",
            "sourceTexture": "source-assets/android/trunks_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              105,
              126,
              207
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              124,
              204
            ],
            "scaleForDisplay": 1.2549019607843137
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "trunks_ssj": {
      "src": "assets/android/trunks_ssj-atlas-v2.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            146,
            256
          ]
        ],
        "attack": [
          [
            256,
            6,
            181,
            265
          ],
          [
            506,
            6,
            218,
            214
          ],
          [
            756,
            6,
            238,
            237
          ],
          [
            6,
            283,
            146,
            256
          ]
        ],
        "special": [
          [
            256,
            283,
            146,
            256
          ],
          [
            506,
            283,
            204,
            249
          ],
          [
            756,
            283,
            146,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            73.0,
            256
          ]
        ],
        "attack": [
          [
            90.5,
            265
          ],
          [
            109.0,
            214
          ],
          [
            119.0,
            237
          ],
          [
            73.0,
            256
          ]
        ],
        "special": [
          [
            73.0,
            256
          ],
          [
            102.0,
            249
          ],
          [
            73.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            128,
            102
          ],
          [
            180,
            100
          ],
          [
            128,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "01345",
      "cardId": "1026991",
      "source": "https://dbz-dokkanbattle.com/card/1026991",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
            "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              449,
              220,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              124,
              218
            ],
            "scaleForDisplay": 1.1743119266055047
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
            "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              205,
              156,
              318
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              154,
              226
            ],
            "scaleForDisplay": 1.1743119266055047
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
            "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              364,
              184,
              550,
              275
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              186,
              182
            ],
            "scaleForDisplay": 1.1743119266055047
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
            "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              103,
              206,
              204
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              204,
              202
            ],
            "scaleForDisplay": 1.1743119266055047
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
            "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              449,
              220,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              124,
              218
            ],
            "scaleForDisplay": 1.1743119266055047
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
            "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              449,
              220,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              124,
              218
            ],
            "scaleForDisplay": 1.1743119266055047
          },
          {
            "kind": "attack",
            "fragment": 0,
            "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
            "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              848,
              342,
              1022,
              448
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              174,
              212
            ],
            "scaleForDisplay": 1.1743119266055047
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_ssj/battle/battle_character_01345.lwf",
            "sourceTexture": "source-assets/android/trunks_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              449,
              220,
              511
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              124,
              218
            ],
            "scaleForDisplay": 1.1743119266055047
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "trunks_super": {
      "src": "assets/android/trunks_super-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            150,
            256
          ]
        ],
        "attack": [
          [
            241,
            6,
            215,
            229
          ],
          [
            476,
            6,
            223,
            252
          ],
          [
            711,
            6,
            210,
            226
          ],
          [
            6,
            274,
            150,
            256
          ]
        ],
        "special": [
          [
            241,
            274,
            150,
            256
          ],
          [
            476,
            274,
            164,
            256
          ],
          [
            711,
            274,
            150,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            75.0,
            256
          ]
        ],
        "attack": [
          [
            107.5,
            229
          ],
          [
            111.5,
            252
          ],
          [
            105.0,
            226
          ],
          [
            75.0,
            256
          ]
        ],
        "special": [
          [
            75.0,
            256
          ],
          [
            82.0,
            256
          ],
          [
            75.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            132,
            102
          ],
          [
            144,
            102
          ],
          [
            132,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00208",
      "cardId": "1009780",
      "source": "https://dbz-dokkanbattle.com/card/1009780",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
            "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              264,
              150,
              390
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              148,
              253
            ],
            "scaleForDisplay": 1.0118577075098814
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
            "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              116,
              228,
              222
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              212,
              226
            ],
            "scaleForDisplay": 1.0118577075098814
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
            "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image0.png",
            "sourceRectPixels": [
              226,
              326,
              475,
              436
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              220,
              249
            ],
            "scaleForDisplay": 1.0118577075098814
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
            "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              222,
              225,
              326
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              208,
              223
            ],
            "scaleForDisplay": 1.0118577075098814
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
            "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              264,
              150,
              390
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              148,
              253
            ],
            "scaleForDisplay": 1.0118577075098814
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
            "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              264,
              150,
              390
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              148,
              253
            ],
            "scaleForDisplay": 1.0118577075098814
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/trunks_super/sp01/sp_character_00208_01.lwf",
            "sourceTexture": "source-assets/android/trunks_super/sp01/lwf_image0.png",
            "sourceRectPixels": [
              447,
              1,
              889,
              346
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              442,
              689
            ],
            "scaleForDisplay": 0.37155297532656023
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/trunks_super/battle/battle_character_00208.lwf",
            "sourceTexture": "source-assets/android/trunks_super/battle/lwf_image2.png",
            "sourceRectPixels": [
              2,
              264,
              150,
              390
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              148,
              253
            ],
            "scaleForDisplay": 1.0118577075098814
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "gohan_teen": {
      "src": "assets/android/gohan_teen-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            135,
            256
          ]
        ],
        "attack": [
          [
            231,
            6,
            213,
            207
          ],
          [
            456,
            6,
            180,
            271
          ],
          [
            681,
            6,
            189,
            246
          ],
          [
            6,
            289,
            135,
            256
          ]
        ],
        "special": [
          [
            231,
            289,
            135,
            256
          ],
          [
            456,
            289,
            180,
            256
          ],
          [
            681,
            289,
            135,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            67.5,
            256
          ]
        ],
        "attack": [
          [
            106.5,
            207
          ],
          [
            90.0,
            271
          ],
          [
            94.5,
            246
          ],
          [
            67.5,
            256
          ]
        ],
        "special": [
          [
            67.5,
            256
          ],
          [
            90.0,
            256
          ],
          [
            67.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            119,
            102
          ],
          [
            158,
            102
          ],
          [
            119,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00322",
      "cardId": "1002870",
      "source": "https://dbz-dokkanbattle.com/card/1002870",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
            "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
            "sourceRectPixels": [
              355,
              402,
              446,
              488
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              91,
              172
            ],
            "scaleForDisplay": 1.4883720930232558
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
            "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
            "sourceRectPixels": [
              747,
              384,
              890,
              453
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              143,
              139
            ],
            "scaleForDisplay": 1.4883720930232558
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
            "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
            "sourceRectPixels": [
              149,
              266,
              270,
              358
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              121,
              182
            ],
            "scaleForDisplay": 1.4883720930232558
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
            "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              282,
              129,
              364
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              127,
              165
            ],
            "scaleForDisplay": 1.4883720930232558
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
            "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
            "sourceRectPixels": [
              355,
              402,
              446,
              488
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              91,
              172
            ],
            "scaleForDisplay": 1.4883720930232558
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
            "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
            "sourceRectPixels": [
              355,
              402,
              446,
              488
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              91,
              172
            ],
            "scaleForDisplay": 1.4883720930232558
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/gohan_teen/sp01/sp_character_00322_01.lwf",
            "sourceTexture": "source-assets/android/gohan_teen/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              458,
              162
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              321,
              456
            ],
            "scaleForDisplay": 0.5614035087719298
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen/battle/battle_character_00322.lwf",
            "sourceTexture": "source-assets/android/gohan_teen/battle/lwf_image0.png",
            "sourceRectPixels": [
              355,
              402,
              446,
              488
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              91,
              172
            ],
            "scaleForDisplay": 1.4883720930232558
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "gohan_teen_ssj": {
      "src": "assets/android/gohan_teen_ssj-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            136,
            256
          ]
        ],
        "attack": [
          [
            257,
            6,
            214,
            209
          ],
          [
            508,
            6,
            177,
            259
          ],
          [
            759,
            6,
            196,
            248
          ],
          [
            6,
            277,
            136,
            256
          ]
        ],
        "special": [
          [
            257,
            277,
            136,
            256
          ],
          [
            508,
            277,
            239,
            256
          ],
          [
            759,
            277,
            136,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            68.0,
            256
          ]
        ],
        "attack": [
          [
            107.0,
            209
          ],
          [
            88.5,
            259
          ],
          [
            98.0,
            248
          ],
          [
            68.0,
            256
          ]
        ],
        "special": [
          [
            68.0,
            256
          ],
          [
            119.5,
            256
          ],
          [
            68.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            120,
            102
          ],
          [
            210,
            102
          ],
          [
            120,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00199",
      "cardId": "1004690",
      "source": "https://dbz-dokkanbattle.com/card/1004690",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              79,
              83,
              156
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              81,
              153
            ],
            "scaleForDisplay": 1.673202614379085
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              619,
              388,
              747,
              450
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              128,
              125
            ],
            "scaleForDisplay": 1.673202614379085
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              910,
              336,
              1016,
              414
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              106,
              155
            ],
            "scaleForDisplay": 1.673202614379085
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              357,
              161,
              474,
              235
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              117,
              148
            ],
            "scaleForDisplay": 1.673202614379085
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              79,
              83,
              156
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              81,
              153
            ],
            "scaleForDisplay": 1.673202614379085
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              79,
              83,
              156
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              81,
              153
            ],
            "scaleForDisplay": 1.673202614379085
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/gohan_teen_ssj/sp01/sp_character_00199_01.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              431,
              231
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              429,
              460
            ],
            "scaleForDisplay": 0.5565217391304348
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen_ssj/battle/battle_character_00199.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              79,
              83,
              156
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              81,
              153
            ],
            "scaleForDisplay": 1.673202614379085
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "gohan_teen_ssj2": {
      "src": "assets/android/gohan_teen_ssj2-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            114,
            256
          ]
        ],
        "attack": [
          [
            258,
            6,
            209,
            256
          ],
          [
            510,
            6,
            228,
            253
          ],
          [
            762,
            6,
            240,
            236
          ],
          [
            6,
            274,
            114,
            256
          ]
        ],
        "special": [
          [
            258,
            274,
            114,
            256
          ],
          [
            510,
            274,
            186,
            256
          ],
          [
            762,
            274,
            114,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            57.0,
            256
          ]
        ],
        "attack": [
          [
            104.5,
            256
          ],
          [
            114.0,
            253
          ],
          [
            120.0,
            236
          ],
          [
            57.0,
            256
          ]
        ],
        "special": [
          [
            57.0,
            256
          ],
          [
            93.0,
            256
          ],
          [
            57.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            100,
            102
          ],
          [
            164,
            102
          ],
          [
            100,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00203",
      "cardId": "1004740",
      "source": "https://dbz-dokkanbattle.com/card/1004740",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              865,
              351,
              1022,
              386
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              70,
              157
            ],
            "scaleForDisplay": 1.6305732484076434
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              594,
              250,
              751,
              314
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              128,
              157
            ],
            "scaleForDisplay": 1.6305732484076434
          },
          {
            "kind": "attack",
            "fragment": 28,
            "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              864,
              387,
              1019,
              457
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              140,
              155
            ],
            "scaleForDisplay": 1.6305732484076434
          },
          {
            "kind": "attack",
            "fragment": 37,
            "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              304,
              438,
              451,
              510
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              147,
              145
            ],
            "scaleForDisplay": 1.6305732484076434
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              865,
              351,
              1022,
              386
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              70,
              157
            ],
            "scaleForDisplay": 1.6305732484076434
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              865,
              351,
              1022,
              386
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              70,
              157
            ],
            "scaleForDisplay": 1.6305732484076434
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/gohan_teen_ssj2/sp01/sp_character_00203_01.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj2/sp01/lwf_image0.png",
            "sourceRectPixels": [
              475,
              1,
              935,
              318
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              460,
              634
            ],
            "scaleForDisplay": 0.4037854889589905
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_teen_ssj2/battle/battle_character_00203.lwf",
            "sourceTexture": "source-assets/android/gohan_teen_ssj2/battle/lwf_image0.png",
            "sourceRectPixels": [
              865,
              351,
              1022,
              386
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              70,
              157
            ],
            "scaleForDisplay": 1.6305732484076434
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "gohan_future": {
      "src": "assets/android/gohan_future-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            174,
            256
          ]
        ],
        "attack": [
          [
            299,
            6,
            249,
            200
          ],
          [
            592,
            6,
            216,
            269
          ],
          [
            885,
            6,
            281,
            248
          ],
          [
            6,
            287,
            174,
            256
          ]
        ],
        "special": [
          [
            299,
            287,
            174,
            256
          ],
          [
            592,
            287,
            263,
            256
          ],
          [
            885,
            287,
            174,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            87.0,
            256
          ]
        ],
        "attack": [
          [
            124.5,
            200
          ],
          [
            108.0,
            269
          ],
          [
            140.5,
            248
          ],
          [
            87.0,
            256
          ]
        ],
        "special": [
          [
            87.0,
            256
          ],
          [
            131.5,
            256
          ],
          [
            87.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            153,
            102
          ],
          [
            231,
            102
          ],
          [
            153,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00462",
      "cardId": "1005611",
      "source": "https://dbz-dokkanbattle.com/card/1005611",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
            "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              191,
              402,
              324,
              500
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              196
            ],
            "scaleForDisplay": 1.3061224489795917
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
            "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              433,
              193,
              510
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              191,
              153
            ],
            "scaleForDisplay": 1.3061224489795917
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
            "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image0.png",
            "sourceRectPixels": [
              2,
              236,
              208,
              318
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              165,
              206
            ],
            "scaleForDisplay": 1.3061224489795917
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
            "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              656,
              1,
              871,
              96
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              215,
              190
            ],
            "scaleForDisplay": 1.3061224489795917
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
            "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              191,
              402,
              324,
              500
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              196
            ],
            "scaleForDisplay": 1.3061224489795917
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
            "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              191,
              402,
              324,
              500
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              196
            ],
            "scaleForDisplay": 1.3061224489795917
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/gohan_future/sp01/sp_character_00462_01.lwf",
            "sourceTexture": "source-assets/android/gohan_future/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              639,
              310
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              637,
              619
            ],
            "scaleForDisplay": 0.4135702746365105
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_future/battle/battle_character_00462.lwf",
            "sourceTexture": "source-assets/android/gohan_future/battle/lwf_image1.png",
            "sourceRectPixels": [
              191,
              402,
              324,
              500
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              196
            ],
            "scaleForDisplay": 1.3061224489795917
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "gohan_future_ssj": {
      "src": "assets/android/gohan_future_ssj-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            170,
            256
          ]
        ],
        "attack": [
          [
            293,
            6,
            244,
            202
          ],
          [
            580,
            6,
            211,
            268
          ],
          [
            867,
            6,
            275,
            244
          ],
          [
            6,
            286,
            170,
            256
          ]
        ],
        "special": [
          [
            293,
            286,
            170,
            256
          ],
          [
            580,
            286,
            253,
            256
          ],
          [
            867,
            286,
            170,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            85.0,
            256
          ]
        ],
        "attack": [
          [
            122.0,
            202
          ],
          [
            105.5,
            268
          ],
          [
            137.5,
            244
          ],
          [
            85.0,
            256
          ]
        ],
        "special": [
          [
            85.0,
            256
          ],
          [
            126.5,
            256
          ],
          [
            85.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            150,
            102
          ],
          [
            223,
            102
          ],
          [
            150,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00209",
      "cardId": "1008530",
      "source": "https://dbz-dokkanbattle.com/card/1008530",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
            "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              725,
              258,
              858,
              358
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              200
            ],
            "scaleForDisplay": 1.28
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
            "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              584,
              323,
              775,
              402
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              191,
              158
            ],
            "scaleForDisplay": 1.28
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
            "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              558,
              262,
              723,
              366
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              165,
              209
            ],
            "scaleForDisplay": 1.28
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
            "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              353,
              372,
              544,
              480
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              215,
              191
            ],
            "scaleForDisplay": 1.28
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
            "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              725,
              258,
              858,
              358
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              200
            ],
            "scaleForDisplay": 1.28
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
            "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              725,
              258,
              858,
              358
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              200
            ],
            "scaleForDisplay": 1.28
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/gohan_future_ssj/sp01/sp_character_00209_01.lwf",
            "sourceTexture": "source-assets/android/gohan_future_ssj/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              639,
              324
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              637,
              645
            ],
            "scaleForDisplay": 0.39689922480620154
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/gohan_future_ssj/battle/battle_character_00209.lwf",
            "sourceTexture": "source-assets/android/gohan_future_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              725,
              258,
              858,
              358
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              133,
              200
            ],
            "scaleForDisplay": 1.28
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "vegeta_ssj": {
      "src": "assets/android/vegeta_ssj-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            134,
            256
          ]
        ],
        "attack": [
          [
            215,
            6,
            127,
            253
          ],
          [
            424,
            6,
            197,
            247
          ],
          [
            633,
            6,
            183,
            227
          ],
          [
            6,
            274,
            134,
            256
          ]
        ],
        "special": [
          [
            215,
            274,
            134,
            256
          ],
          [
            424,
            274,
            155,
            256
          ],
          [
            633,
            274,
            134,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            67.0,
            256
          ]
        ],
        "attack": [
          [
            63.5,
            253
          ],
          [
            98.5,
            247
          ],
          [
            91.5,
            227
          ],
          [
            67.0,
            256
          ]
        ],
        "special": [
          [
            67.0,
            256
          ],
          [
            77.5,
            256
          ],
          [
            67.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            118,
            102
          ],
          [
            136,
            102
          ],
          [
            118,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00002",
      "cardId": "1005550",
      "source": "https://dbz-dokkanbattle.com/card/1005550",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
            "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              279,
              203,
              398,
              316
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              119,
              227
            ],
            "scaleForDisplay": 1.1277533039647578
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
            "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              499,
              203,
              612,
              315
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              113,
              224
            ],
            "scaleForDisplay": 1.1277533039647578
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
            "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image1.png",
            "sourceRectPixels": [
              223,
              1,
              442,
              88
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              175,
              219
            ],
            "scaleForDisplay": 1.1277533039647578
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
            "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              572,
              350,
              773,
              431
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              162,
              201
            ],
            "scaleForDisplay": 1.1277533039647578
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
            "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              279,
              203,
              398,
              316
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              119,
              227
            ],
            "scaleForDisplay": 1.1277533039647578
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
            "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              279,
              203,
              398,
              316
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              119,
              227
            ],
            "scaleForDisplay": 1.1277533039647578
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/vegeta_ssj/sp01/sp_character_00002_01.lwf",
            "sourceTexture": "source-assets/android/vegeta_ssj/sp01/lwf_image0.png",
            "sourceRectPixels": [
              414,
              1,
              822,
              338
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              408,
              673
            ],
            "scaleForDisplay": 0.3803863298662704
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/vegeta_ssj/battle/battle_character_00002.lwf",
            "sourceTexture": "source-assets/android/vegeta_ssj/battle/lwf_image0.png",
            "sourceRectPixels": [
              279,
              203,
              398,
              316
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              119,
              227
            ],
            "scaleForDisplay": 1.1277533039647578
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "super_vegeta": {
      "src": "assets/android/super_vegeta-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            150,
            256
          ]
        ],
        "attack": [
          [
            236,
            6,
            196,
            214
          ],
          [
            466,
            6,
            205,
            236
          ],
          [
            696,
            6,
            218,
            232
          ],
          [
            6,
            274,
            150,
            256
          ]
        ],
        "special": [
          [
            236,
            274,
            150,
            256
          ],
          [
            466,
            274,
            150,
            256
          ],
          [
            696,
            274,
            150,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            75.0,
            256
          ]
        ],
        "attack": [
          [
            98.0,
            214
          ],
          [
            102.5,
            236
          ],
          [
            109.0,
            232
          ],
          [
            75.0,
            256
          ]
        ],
        "special": [
          [
            75.0,
            256
          ],
          [
            75.0,
            256
          ],
          [
            75.0,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            132,
            102
          ],
          [
            132,
            102
          ],
          [
            132,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "00458",
      "cardId": "1004760",
      "source": "https://dbz-dokkanbattle.com/card/1004760",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
            "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              114,
              127,
              220
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              125,
              214
            ],
            "scaleForDisplay": 1.1962616822429906
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
            "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
            "sourceRectPixels": [
              196,
              426,
              375,
              508
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              164,
              179
            ],
            "scaleForDisplay": 1.1962616822429906
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
            "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
            "sourceRectPixels": [
              649,
              90,
              846,
              176
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              171,
              197
            ],
            "scaleForDisplay": 1.1962616822429906
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
            "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image0.png",
            "sourceRectPixels": [
              669,
              179,
              851,
              276
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              182,
              194
            ],
            "scaleForDisplay": 1.1962616822429906
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
            "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              114,
              127,
              220
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              125,
              214
            ],
            "scaleForDisplay": 1.1962616822429906
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
            "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              114,
              127,
              220
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              125,
              214
            ],
            "scaleForDisplay": 1.1962616822429906
          },
          {
            "kind": "special",
            "fragment": 0,
            "sourceLwf": "source-assets/android/super_vegeta/sp01/sp_character_00458_01.lwf",
            "sourceTexture": "source-assets/android/super_vegeta/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              393,
              335
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              391,
              668
            ],
            "scaleForDisplay": 0.38323353293413176
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/super_vegeta/battle/battle_character_00458.lwf",
            "sourceTexture": "source-assets/android/super_vegeta/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              114,
              127,
              220
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              125,
              214
            ],
            "scaleForDisplay": 1.1962616822429906
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "piccolo_kami": {
      "src": "assets/android/piccolo_kami-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            157,
            256
          ]
        ],
        "attack": [
          [
            309,
            6,
            206,
            227
          ],
          [
            612,
            6,
            291,
            229
          ],
          [
            915,
            6,
            267,
            236
          ],
          [
            6,
            274,
            157,
            256
          ]
        ],
        "special": [
          [
            309,
            274,
            157,
            256
          ],
          [
            612,
            274,
            271,
            256
          ],
          [
            915,
            274,
            157,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            78.5,
            256
          ]
        ],
        "attack": [
          [
            103.0,
            227
          ],
          [
            145.5,
            229
          ],
          [
            133.5,
            236
          ],
          [
            78.5,
            256
          ]
        ],
        "special": [
          [
            78.5,
            256
          ],
          [
            135.5,
            256
          ],
          [
            78.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            138,
            102
          ],
          [
            238,
            102
          ],
          [
            138,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "01009",
      "cardId": "4017500",
      "source": "https://dbz-dokkanbattle.com/card/4017500",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
            "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
            "sourceRectPixels": [
              864,
              737,
              1015,
              983
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              151,
              246
            ],
            "scaleForDisplay": 1.0406504065040652
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
            "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image0.png",
            "sourceRectPixels": [
              220,
              597,
              418,
              815
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              198,
              218
            ],
            "scaleForDisplay": 1.0406504065040652
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
            "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              2,
              282,
              222
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              280,
              220
            ],
            "scaleForDisplay": 1.0406504065040652
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
            "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              224,
              229,
              481
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              0,
              257,
              227
            ],
            "scaleForDisplay": 1.0406504065040652
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
            "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
            "sourceRectPixels": [
              864,
              737,
              1015,
              983
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              151,
              246
            ],
            "scaleForDisplay": 1.0406504065040652
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
            "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
            "sourceRectPixels": [
              864,
              737,
              1015,
              983
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              151,
              246
            ],
            "scaleForDisplay": 1.0406504065040652
          },
          {
            "kind": "special",
            "fragment": 2,
            "sourceLwf": "source-assets/android/piccolo_kami/sp01/sp_character_01009_01.lwf",
            "sourceTexture": "source-assets/android/piccolo_kami/sp01/lwf_image0.png",
            "sourceRectPixels": [
              2,
              1,
              558,
              264
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              556,
              526
            ],
            "scaleForDisplay": 0.4866920152091255
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/piccolo_kami/battle/battle_character_01009.lwf",
            "sourceTexture": "source-assets/android/piccolo_kami/battle/lwf_image1.png",
            "sourceRectPixels": [
              864,
              737,
              1015,
              983
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              151,
              246
            ],
            "scaleForDisplay": 1.0406504065040652
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    },
    "vegeta_android": {
      "src": "assets/android/vegeta_android-atlas.webp",
      "frames": {
        "idle": [
          [
            6,
            6,
            137,
            256
          ]
        ],
        "attack": [
          [
            217,
            6,
            127,
            249
          ],
          [
            428,
            6,
            199,
            244
          ],
          [
            639,
            6,
            184,
            229
          ],
          [
            6,
            274,
            137,
            256
          ]
        ],
        "special": [
          [
            217,
            274,
            137,
            256
          ],
          [
            428,
            274,
            191,
            236
          ],
          [
            639,
            274,
            137,
            256
          ]
        ]
      },
      "anchors": {
        "idle": [
          [
            68.5,
            256
          ]
        ],
        "attack": [
          [
            63.5,
            249
          ],
          [
            99.5,
            244
          ],
          [
            92.0,
            229
          ],
          [
            68.5,
            256
          ]
        ],
        "special": [
          [
            68.5,
            256
          ],
          [
            95.5,
            236
          ],
          [
            68.5,
            256
          ]
        ]
      },
      "bodyHeight": 256,
      "faces": "right",
      "frameFaces": {
        "idle": [
          "right"
        ],
        "attack": [
          "right",
          "right",
          "right",
          "right"
        ],
        "special": [
          "right",
          "right",
          "right"
        ]
      },
      "specialReleaseFrame": 1,
      "emissionPoints": {
        "special": [
          [
            121,
            102
          ],
          [
            168,
            94
          ],
          [
            121,
            102
          ]
        ]
      },
      "style": "dokkan",
      "role": "playable",
      "gameCharacterId": "01003",
      "cardId": "1028491",
      "source": "https://dbz-dokkanbattle.com/card/1028491",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "provenance": {
        "idle": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
            "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
            "sourceRectPixels": [
              130,
              249,
              252,
              362
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              122,
              226
            ],
            "scaleForDisplay": 1.1327433628318584
          }
        ],
        "attack": [
          {
            "kind": "attack",
            "fragment": 25,
            "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
            "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image1.png",
            "sourceRectPixels": [
              2,
              1,
              114,
              111
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              112,
              220
            ],
            "scaleForDisplay": 1.1327433628318584
          },
          {
            "kind": "attack",
            "fragment": 26,
            "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
            "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
            "sourceRectPixels": [
              458,
              309,
              674,
              397
            ],
            "rotationUndone": 1,
            "alphaTrimBox": [
              0,
              1,
              176,
              216
            ],
            "scaleForDisplay": 1.1327433628318584
          },
          {
            "kind": "attack",
            "fragment": 31,
            "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
            "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image1.png",
            "sourceRectPixels": [
              286,
              217,
              448,
              318
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              0,
              0,
              162,
              202
            ],
            "scaleForDisplay": 1.1327433628318584
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
            "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
            "sourceRectPixels": [
              130,
              249,
              252,
              362
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              122,
              226
            ],
            "scaleForDisplay": 1.1327433628318584
          }
        ],
        "special": [
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
            "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
            "sourceRectPixels": [
              130,
              249,
              252,
              362
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              122,
              226
            ],
            "scaleForDisplay": 1.1327433628318584
          },
          {
            "kind": "attack",
            "fragment": 4,
            "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
            "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
            "sourceRectPixels": [
              676,
              407,
              846,
              511
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              170,
              208
            ],
            "scaleForDisplay": 1.1327433628318584
          },
          {
            "kind": "attack",
            "fragment": 49,
            "sourceLwf": "source-assets/android/vegeta_android/battle/battle_character_01003.lwf",
            "sourceTexture": "source-assets/android/vegeta_android/battle/lwf_image0.png",
            "sourceRectPixels": [
              130,
              249,
              252,
              362
            ],
            "rotationUndone": 0,
            "alphaTrimBox": [
              1,
              0,
              122,
              226
            ],
            "scaleForDisplay": 1.1327433628318584
          }
        ]
      },
      "note": "Unmodified original Dokkan guard, melee and special textures, cropped from LWF rectangles, rotation restored, proportional scaling. Representative poses, not a full LWF timeline."
    }
  },
  "portraits": {
    "mecha_frieza": {
      "src": "assets/android/mecha_frieza-portrait.webp",
      "artSrc": "assets/android/mecha_frieza-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1030990",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1030990/card_1030990_character.png",
      "cardId": "1030990",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "king_cold": {
      "src": "assets/android/king_cold-portrait.webp",
      "artSrc": "assets/android/king_cold-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1024040",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1024040/card_1024040_character.png",
      "cardId": "1024040",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "android16": {
      "src": "assets/android/android16-portrait.webp",
      "artSrc": "assets/android/android16-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001270",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001270/card_1001270_character.png",
      "cardId": "1001270",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "android17": {
      "src": "assets/android/android17-portrait.webp",
      "artSrc": "assets/android/android17-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001250",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001250/card_1001250_character.png",
      "cardId": "1001250",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "android18": {
      "src": "assets/android/android18-portrait.webp",
      "artSrc": "assets/android/android18-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001260",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001260/card_1001260_character.png",
      "cardId": "1001260",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "android19": {
      "src": "assets/android/android19-portrait.webp",
      "artSrc": "assets/android/android19-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001230",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001230/card_1001230_character.png",
      "cardId": "1001230",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "dr_gero": {
      "src": "assets/android/dr_gero-portrait.webp",
      "artSrc": "assets/android/dr_gero-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001240",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001240/card_1001240_character.png",
      "cardId": "1001240",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "cell": {
      "src": "assets/android/cell-portrait.webp",
      "artSrc": "assets/android/cell-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1000070",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1000070/card_1000070_character.png",
      "cardId": "1000070",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "cell_second": {
      "src": "assets/android/cell_second-portrait.webp",
      "artSrc": "assets/android/cell_second-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001710",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001710/card_1001710_character.png",
      "cardId": "1001710",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "cell_perfect": {
      "src": "assets/android/cell_perfect-portrait.webp",
      "artSrc": "assets/android/cell_perfect-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001720",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001720/card_1001720_character.png",
      "cardId": "1001720",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "cell_superperfect": {
      "src": "assets/android/cell_superperfect-portrait.webp",
      "artSrc": "assets/android/cell_superperfect-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1003760",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1003760/card_1003760_character.png",
      "cardId": "1003760",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "cell_jr": {
      "src": "assets/android/cell_jr-portrait.webp",
      "artSrc": "assets/android/cell_jr-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1000660",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1000660/card_1000660_character.png",
      "cardId": "1000660",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "hercule": {
      "src": "assets/android/hercule-portrait.webp",
      "artSrc": "assets/android/hercule-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1000820",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1000820/card_1000820_character.png",
      "cardId": "1000820",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "trunks_future": {
      "src": "assets/android/trunks_future-portrait.webp",
      "artSrc": "assets/android/trunks_future-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1001860",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1001860/card_1001860_character.png",
      "cardId": "1001860",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "trunks_ssj": {
      "src": "assets/android/trunks_ssj-portrait-v2.webp",
      "artSrc": "assets/android/trunks_ssj-art-v2.webp",
      "source": "https://dbz-dokkanbattle.com/card/1026991",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1026990/card_1026990_character.png",
      "cardId": "1026990",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "trunks_super": {
      "src": "assets/android/trunks_super-portrait.webp",
      "artSrc": "assets/android/trunks_super-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1009780",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1009780/card_1009780_character.png",
      "cardId": "1009780",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gohan_teen": {
      "src": "assets/android/gohan_teen-portrait.webp",
      "artSrc": "assets/android/gohan_teen-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1002870",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1002870/card_1002870_character.png",
      "cardId": "1002870",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gohan_teen_ssj": {
      "src": "assets/android/gohan_teen_ssj-portrait.webp",
      "artSrc": "assets/android/gohan_teen_ssj-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1004690",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1004690/card_1004690_character.png",
      "cardId": "1004690",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gohan_teen_ssj2": {
      "src": "assets/android/gohan_teen_ssj2-portrait.webp",
      "artSrc": "assets/android/gohan_teen_ssj2-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1004740",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1004740/card_1004740_character.png",
      "cardId": "1004740",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gohan_future": {
      "src": "assets/android/gohan_future-portrait.webp",
      "artSrc": "assets/android/gohan_future-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1005611",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1005610/card_1005610_character.png",
      "cardId": "1005610",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "gohan_future_ssj": {
      "src": "assets/android/gohan_future_ssj-portrait.webp",
      "artSrc": "assets/android/gohan_future_ssj-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1008530",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1008530/card_1008530_character.png",
      "cardId": "1008530",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "vegeta_ssj": {
      "src": "assets/android/vegeta_ssj-portrait.webp",
      "artSrc": "assets/android/vegeta_ssj-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1005550",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1005550/card_1005550_character.png",
      "cardId": "1005550",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "super_vegeta": {
      "src": "assets/android/super_vegeta-portrait.webp",
      "artSrc": "assets/android/super_vegeta-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1004760",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1004760/card_1004760_character.png",
      "cardId": "1004760",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "piccolo_kami": {
      "src": "assets/android/piccolo_kami-portrait.webp",
      "artSrc": "assets/android/piccolo_kami-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/4017500",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/4017500/card_4017500_character.png",
      "cardId": "4017500",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    },
    "vegeta_android": {
      "src": "assets/android/vegeta_android-portrait.webp",
      "artSrc": "assets/android/vegeta_android-art.webp",
      "source": "https://dbz-dokkanbattle.com/card/1028491",
      "artSource": "https://dbz-dokkanbattle.com/img/character/card/1028490/card_1028490_character.png",
      "cardId": "1028490",
      "credits": "Dragon Ball Z Dokkan Battle — Akatsuki / Bandai Namco; original public textures hosted by Dokkan Battle France",
      "style": "dokkan-card",
      "portraitSize": [
        196,
        196
      ]
    }
  }
}
