{
  "battle_metadata": {
    "battle_id": "EP01_CANNAE_216BC",
    "battle_name": "Battle of Cannae",
    "historic_date": "216-08-02",
    "location": {
      "region": "Apulia, Ancient Italy",
      "near_town": "Cannae (modern Barletta-Andria-Trani)",
      "river": "Aufidus (modern River Ofanto)",
      "coordinates_wgs84": {
        "latitude": 41.3061,
        "longitude": 16.1331
      }
    },
    "doctrine": {
      "rome": "Super-Massed Manipular Ram (Density over Frontage)",
      "carthage": "Elastic Crescent Retreat into Double Envelopment"
    },
    "runtime": {
      "duration_seconds": 1800,
      "fps": 30,
      "resolution": [
        1920,
        1080
      ]
    },
    "grid_bounds_meters": {
      "width_m": 4200,
      "height_m": 3000,
      "pixel_to_meter_scale": 2.1875
    }
  },
  "host_integration_cues": [
    {
      "cue_id": "CUE_00_NARRATIVE_ATMOSPHERIC_BRIDGE",
      "timestamp_range_sec": [
        31.0,
        36.0
      ],
      "display_format": "war_room_atmospheric_bridge",
      "host_pose": "eyes_down_to_aufidus_map",
      "framing": "medium_shot_host_to_tabletop_pan",
      "audio_cues": [
        "volturnus_wind_swell",
        "distant_roman_cornu_horn"
      ],
      "spoken_line": "Và hành trình của chúng ta bắt đầu tại chảo lửa Apulia, miền Nam nước Ý... Mùa hè năm 216 Trước Công Nguyên.",
      "tactical_action": "Host eyes shift down from camera to the antique wooden map of River Aufidus, Volturnus sand dust and distant cornu horn fade in, bridging seamlessly from channel intro to ancient battlefield"
    },
    {
      "cue_id": "CUE_01_OPENING_HOOK",
      "timestamp_range_sec": [
        36.0,
        85.0
      ],
      "display_format": "war_room_master_shot",
      "host_pose": "brass_divider_measurement",
      "framing": "wide_to_medium_close_up",
      "camera_target_px": [
        960,
        540
      ],
      "tactical_action": "Set divider at River Aufidus, look into lens, deliver Cold Open hook"
    },
    {
      "cue_id": "CUE_02_PIVOT_CRESCENT_FLEX",
      "timestamp_range_sec": [
        765,
        825
      ],
      "display_format": "tactical_corner_cam_pip",
      "host_pose": "command_pointer_tap",
      "framing": "lower_third_corner_pip_right",
      "screen_share_ratio": [
        0.75,
        0.25
      ],
      "tactical_action": "Tap pointer twice on convex crescent apex, explain convex-to-concave trap"
    },
    {
      "cue_id": "CUE_03_SEALING_THE_CAULDRON",
      "timestamp_range_sec": [
        1290,
        1350
      ],
      "display_format": "tactical_split_screen",
      "host_pose": "arms_crossed_to_clenched_fist",
      "framing": "split_screen_50_50",
      "tactical_action": "Analyze 4.2 men/m2 physical density and gladius drawing impossibility"
    },
    {
      "cue_id": "CUE_04_GRAND_SYNTHESIS_CTA",
      "timestamp_range_sec": [
        1650,
        1800
      ],
      "display_format": "war_room_full_screen",
      "host_pose": "tactical_marker_placement_reflection",
      "framing": "medium_shot_to_slow_pullback",
      "tactical_action": "Place fallen Roman marker, link to Desert Storm 1991, deliver Maharbal riddle CTA"
    }
  ],
  "environment": {
    "river_aufidus": {
      "name": "Aufidus River (Northern Flank Natural Barrier)",
      "flow_direction": "South-West to North-East (towards Adriatic Sea)",
      "bank_type": "Steep erosion cliffs, gravel bars, impassable for mass cavalry",
      "curve_points_canvas": [
        [
          180,
          120
        ],
        [
          320,
          240
        ],
        [
          410,
          390
        ],
        [
          460,
          560
        ],
        [
          510,
          720
        ],
        [
          580,
          890
        ],
        [
          720,
          1040
        ]
      ],
      "color_bgr": [
        60,
        85,
        75
      ],
      "width_px": 28,
      "cut_banks": {
        "height_m": "2.5 - 4.0m clay cliffs",
        "tactical_barrier": "Unfordable for cavalry and heavy legionaries; trapped Paullus right wing",
        "color_bgr": [
          45,
          60,
          50
        ]
      }
    },
    "hills_cannae": {
      "name": "Cannae Hill & Ancient Citadel (Arx Cannarum)",
      "label": "CANNAE CITADEL (54m PEAK - GRAIN DEPOT)",
      "center_px": [
        1680,
        920
      ],
      "radius_px": 180,
      "elevation_m": 54,
      "contour_rings_px": [
        180,
        135,
        90,
        45
      ],
      "feature": "Carthaginian forward logistics depot and vantage point overlooking Aufidus basin"
    },
    "camps": {
      "roman_large_camp": {
        "name": "Castra Maiora (Roman Greater Camp)",
        "label": "CASTRA MAIORA (10,000 GARRISON)",
        "pos_px": [
          1120,
          980
        ],
        "garrison": 10000,
        "side": "rome",
        "size_px": [
          80,
          80
        ],
        "style": "fortified_square_palisade_red"
      },
      "roman_small_camp": {
        "name": "Castra Minora (Roman Lesser Camp)",
        "label": "CASTRA MINORA (FORWARD OUTPOST)",
        "pos_px": [
          420,
          210
        ],
        "garrison": 3000,
        "side": "rome",
        "size_px": [
          50,
          50
        ],
        "style": "fortified_square_palisade_red"
      },
      "carthaginian_camp": {
        "name": "Castra Hannibalis (Carthaginian Headquarters)",
        "label": "CASTRA HANNIBALIS (PUNIC HQ)",
        "pos_px": [
          980,
          160
        ],
        "garrison": 2000,
        "side": "carthage",
        "size_px": [
          70,
          70
        ],
        "style": "crescent_palisade_gold"
      }
    },
    "meteorology": {
      "wind_name": "Volturnus",
      "azimuth_deg": 245,
      "speed_kmh": 38.0,
      "dust_storm_active": true,
      "effect_on_rome": "Blinding sand, sensory deprivation, respiratory strain facing SW",
      "sun_position": {
        "morning_azimuth_deg": 105,
        "elevation_deg": 48,
        "effect_on_rome": "Direct eye glare during morning approach"
      }
    },
    "cartography": {
      "compass_rose": {
        "pos_px": [
          1820,
          120
        ],
        "radius_px": 42,
        "north_azimuth_deg": 0,
        "style": "antique_brass_war_room"
      },
      "scale_bar": {
        "pos_px": [
          1480,
          1010
        ],
        "length_px": 218,
        "real_meters": 1000,
        "label": "SCALE: 1,000 METERS (1 KM)"
      },
      "grid": {
        "step_px": 200,
        "color_bgr": [
          28,
          34,
          42
        ],
        "line_width": 1,
        "opacity": 0.35
      }
    }
  },
  "operational_phases": [
    {
      "phase_id": 1,
      "name": "Phase 1: Strategic Deployment & Skirmish Screen",
      "timestamp_range_sec": [
        0,
        360
      ],
      "historic_time": "08:00 - 09:30 AM",
      "description": "Varro deploys 70,000 massed legionaries in unprecedented depth between Aufidus River and Cannae hills. Hannibal arrays Iberian/Gallic center in forward convex arc with Libyan veterans echeloned in reserve wings."
    },
    {
      "phase_id": 2,
      "name": "Phase 2: Skirmish Clashes & Cavalry Decapitation on River Flank",
      "timestamp_range_sec": [
        360,
        780
      ],
      "historic_time": "09:30 - 11:00 AM",
      "description": "Balearic slingers clash with Velites. Hasdrubal's heavy cavalry demolishes Paullus's Roman citizen cavalry in brutal dismounted melee along the cramped Aufidus bank."
    },
    {
      "phase_id": 3,
      "name": "Phase 3: The Infantry Collision & Elastic Crescent Flex",
      "timestamp_range_sec": [
        780,
        1320
      ],
      "historic_time": "11:00 AM - 01:15 PM",
      "description": "Massive Roman infantry ram slams into Hannibal's convex center. Hannibal and Mago conduct controlled retreat; the convex arc yields progressively, flexing into a deep concave crescent."
    },
    {
      "phase_id": 4,
      "name": "Phase 4: Double Flank Envelopment & Rear Cavalry Hammer",
      "timestamp_range_sec": [
        1320,
        1590
      ],
      "historic_time": "01:15 - 03:00 PM",
      "description": "Libyan veterans wheel 90 degrees inward, crushing Roman flanks. Hasdrubal routs Varro's allied cavalry, circles the Roman rear, and slams shut the encirclement trap."
    },
    {
      "phase_id": 5,
      "name": "Phase 5: The Cauldron Meatgrinder & Total Annihilation",
      "timestamp_range_sec": [
        1590,
        1800
      ],
      "historic_time": "03:00 - 05:30 PM",
      "description": "Extreme physical compression prevents Romans from drawing gladii. Slaughterhouse rate reaches ~100 deaths/minute. Consul Paullus dies fighting; 67,500 Romans slain."
    }
  ],
  "unit_roster": [
    {
      "id": "carthage_center_arc",
      "name": "Iberian & Gallic Crescent Center",
      "side": "carthage",
      "commander": "Hannibal Barca & Mago Barca",
      "type": "infantry",
      "subtypes": [
        "Iberian Scutarii with Falcata",
        "Gallic Insubres/Boii Broadswords"
      ],
      "color_rgb": [
        212,
        175,
        55
      ],
      "initial_strength": 22000,
      "final_strength": 16500,
      "start_pos_px": [
        960,
        480
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 780,
          "pos": [
            960,
            480
          ],
          "formation": "convex_protruding_arc"
        },
        {
          "t_sec": 1050,
          "pos": [
            960,
            440
          ],
          "formation": "flattening_horizontal_line"
        },
        {
          "t_sec": 1260,
          "pos": [
            960,
            390
          ],
          "formation": "concave_pocket_arc"
        },
        {
          "t_sec": 1500,
          "pos": [
            960,
            380
          ],
          "formation": "reinforced_concave_retaining_wall"
        }
      ],
      "size_px": [
        240,
        34
      ],
      "tactical_role": "Controlled elastic retreat; lure Roman ram into killing basin",
      "termination_time_sec": null,
      "termination_status": "VICTORIOUS SURVIVOR",
      "termination_display_duration_sec": 0.0,
      "fade_out_duration_sec": 0.0,
      "post_termination_state": "active_on_field",
      "defeat_lifecycle": {
        "termination_time_sec": null,
        "termination_status": "VICTORIOUS SURVIVOR",
        "termination_badge_text": "[VICTORIOUS]",
        "termination_cause": "Maintained operational integrity, completed encirclement, and secured decisive victory.",
        "termination_display_duration_sec": 0.0,
        "fade_out_duration_sec": 0.0,
        "post_termination_state": "active_on_field",
        "is_destructible": false
      }
    },
    {
      "id": "carthage_libyan_left",
      "name": "Libyan Veteran Phalanx (Left Wing)",
      "side": "carthage",
      "commander": "Hannibal's North African Veteran Officers",
      "type": "infantry",
      "subtypes": [
        "African Heavy Veterans in Captured Roman Mail (Lorica Hamata)"
      ],
      "color_rgb": [
        180,
        140,
        30
      ],
      "initial_strength": 5000,
      "final_strength": 4850,
      "start_pos_px": [
        720,
        420
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 780,
          "pos": [
            720,
            420
          ],
          "angle_deg": 0,
          "formation": "deep_column_reserve"
        },
        {
          "t_sec": 1260,
          "pos": [
            740,
            450
          ],
          "angle_deg": 45,
          "formation": "echeloned_forward"
        },
        {
          "t_sec": 1380,
          "pos": [
            770,
            500
          ],
          "angle_deg": 90,
          "formation": "inward_flank_wheel_thrust"
        }
      ],
      "size_px": [
        70,
        42
      ],
      "tactical_role": "Echeloned anchor; wheel 90 degrees inward against Roman left-center flank",
      "termination_time_sec": null,
      "termination_status": "VICTORIOUS SURVIVOR",
      "termination_display_duration_sec": 0.0,
      "fade_out_duration_sec": 0.0,
      "post_termination_state": "active_on_field",
      "defeat_lifecycle": {
        "termination_time_sec": null,
        "termination_status": "VICTORIOUS SURVIVOR",
        "termination_badge_text": "[VICTORIOUS]",
        "termination_cause": "Maintained operational integrity, completed encirclement, and secured decisive victory.",
        "termination_display_duration_sec": 0.0,
        "fade_out_duration_sec": 0.0,
        "post_termination_state": "active_on_field",
        "is_destructible": false
      }
    },
    {
      "id": "carthage_libyan_right",
      "name": "Libyan Veteran Phalanx (Right Wing)",
      "side": "carthage",
      "commander": "Hannibal's North African Veteran Officers",
      "type": "infantry",
      "subtypes": [
        "African Heavy Veterans in Captured Roman Mail (Lorica Hamata)"
      ],
      "color_rgb": [
        180,
        140,
        30
      ],
      "initial_strength": 5000,
      "final_strength": 4800,
      "start_pos_px": [
        1200,
        420
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 780,
          "pos": [
            1200,
            420
          ],
          "angle_deg": 0,
          "formation": "deep_column_reserve"
        },
        {
          "t_sec": 1260,
          "pos": [
            1180,
            450
          ],
          "angle_deg": -45,
          "formation": "echeloned_forward"
        },
        {
          "t_sec": 1380,
          "pos": [
            1150,
            500
          ],
          "angle_deg": -90,
          "formation": "inward_flank_wheel_thrust"
        }
      ],
      "size_px": [
        70,
        42
      ],
      "tactical_role": "Echeloned anchor; wheel 90 degrees inward against Roman right-center flank",
      "termination_time_sec": null,
      "termination_status": "VICTORIOUS SURVIVOR",
      "termination_display_duration_sec": 0.0,
      "fade_out_duration_sec": 0.0,
      "post_termination_state": "active_on_field",
      "defeat_lifecycle": {
        "termination_time_sec": null,
        "termination_status": "VICTORIOUS SURVIVOR",
        "termination_badge_text": "[VICTORIOUS]",
        "termination_cause": "Maintained operational integrity, completed encirclement, and secured decisive victory.",
        "termination_display_duration_sec": 0.0,
        "fade_out_duration_sec": 0.0,
        "post_termination_state": "active_on_field",
        "is_destructible": false
      }
    },
    {
      "id": "carthage_cav_hasdrubal",
      "name": "Hasdrubal Heavy Cavalry (Iberian & Celtic)",
      "side": "carthage",
      "commander": "Hasdrubal (Hannibal's Cavalry General)",
      "type": "cavalry",
      "subtypes": [
        "Armored Spanish Noble Cavalry",
        "Celtic Chieftain Horsemen"
      ],
      "color_rgb": [
        235,
        195,
        75
      ],
      "initial_strength": 6500,
      "final_strength": 5900,
      "start_pos_px": [
        540,
        440
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 420,
          "pos": [
            530,
            520
          ],
          "label": "Crush Roman cavalry on riverbank"
        },
        {
          "t_sec": 720,
          "pos": [
            510,
            640
          ],
          "label": "River corridor cleared"
        },
        {
          "t_sec": 1100,
          "pos": [
            1280,
            780
          ],
          "label": "Full gallop circuit behind Roman army"
        },
        {
          "t_sec": 1380,
          "pos": [
            1360,
            680
          ],
          "label": "Rout Varro's allied cavalry from rear"
        },
        {
          "t_sec": 1470,
          "pos": [
            960,
            690
          ],
          "label": "Slam shut rear infantry trap"
        }
      ],
      "size_px": [
        85,
        32
      ],
      "tactical_role": "Decapitate Roman cavalry, circuit entire battlefield rear, seal trap",
      "termination_time_sec": null,
      "termination_status": "VICTORIOUS SURVIVOR",
      "termination_display_duration_sec": 0.0,
      "fade_out_duration_sec": 0.0,
      "post_termination_state": "active_on_field",
      "defeat_lifecycle": {
        "termination_time_sec": null,
        "termination_status": "VICTORIOUS SURVIVOR",
        "termination_badge_text": "[VICTORIOUS]",
        "termination_cause": "Maintained operational integrity, completed encirclement, and secured decisive victory.",
        "termination_display_duration_sec": 0.0,
        "fade_out_duration_sec": 0.0,
        "post_termination_state": "active_on_field",
        "is_destructible": false
      }
    },
    {
      "id": "carthage_cav_maharbal",
      "name": "Maharbal Numidian Light Cavalry",
      "side": "carthage",
      "commander": "Maharbal",
      "type": "cavalry",
      "subtypes": [
        "Numidian Bareback Horse Archers/Javelin Throwers"
      ],
      "color_rgb": [
        210,
        160,
        40
      ],
      "initial_strength": 3500,
      "final_strength": 3350,
      "start_pos_px": [
        1420,
        440
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 480,
          "pos": [
            1400,
            540
          ],
          "label": "Harass and pin Roman allied cavalry"
        },
        {
          "t_sec": 1320,
          "pos": [
            1410,
            620
          ],
          "label": "Coordinate with Hasdrubal rear hammer"
        },
        {
          "t_sec": 1560,
          "pos": [
            1520,
            750
          ],
          "label": "Pursue fleeing remnants to Venusia"
        }
      ],
      "size_px": [
        80,
        28
      ],
      "tactical_role": "Fix Roman allied cavalry with feigned retreats until Hasdrubal arrives",
      "termination_time_sec": null,
      "termination_status": "VICTORIOUS SURVIVOR",
      "termination_display_duration_sec": 0.0,
      "fade_out_duration_sec": 0.0,
      "post_termination_state": "active_on_field",
      "defeat_lifecycle": {
        "termination_time_sec": null,
        "termination_status": "VICTORIOUS SURVIVOR",
        "termination_badge_text": "[VICTORIOUS]",
        "termination_cause": "Maintained operational integrity, completed encirclement, and secured decisive victory.",
        "termination_display_duration_sec": 0.0,
        "fade_out_duration_sec": 0.0,
        "post_termination_state": "active_on_field",
        "is_destructible": false
      }
    },
    {
      "id": "carthage_skirmishers",
      "name": "Balearic Slingers & Moorish Skirmishers",
      "side": "carthage",
      "commander": "Mago's Light Auxiliaries",
      "type": "skirmishers",
      "subtypes": [
        "Balearic Lead-Bullet Slingers",
        "Moorish Javelinmen"
      ],
      "color_rgb": [
        190,
        150,
        60
      ],
      "initial_strength": 8000,
      "final_strength": 7500,
      "start_pos_px": [
        960,
        530
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 360,
          "pos": [
            960,
            560
          ],
          "label": "Opening missile barrage"
        },
        {
          "t_sec": 600,
          "pos": [
            960,
            420
          ],
          "label": "Retire through intervals behind main phalanx"
        }
      ],
      "size_px": [
        180,
        20
      ],
      "tactical_role": "Screen army deployment, blind Roman vanguard, retire cleanly",
      "termination_time_sec": 600,
      "termination_status": "WITHDRAWN IN RESERVE",
      "termination_display_duration_sec": 2.5,
      "fade_out_duration_sec": 2.0,
      "post_termination_state": "removed_from_sandbox",
      "defeat_lifecycle": {
        "termination_time_sec": 600,
        "termination_status": "WITHDRAWN IN RESERVE",
        "termination_badge_text": "[SCREEN RETIRED]",
        "termination_cause": "Opening sling and javelin barrage completed; withdrew behind main infantry battle line into tactical reserve.",
        "termination_display_duration_sec": 2.5,
        "fade_out_duration_sec": 2.0,
        "post_termination_state": "removed_from_sandbox",
        "is_destructible": true
      }
    },
    {
      "id": "rome_center_ram",
      "name": "Roman Legions (Hastati & Principes)",
      "side": "rome",
      "commander": "Consul Gaius Terentius Varro (Alternating Command)",
      "type": "infantry",
      "subtypes": [
        "8 Roman Legions",
        "Condensed Deep Maniples with Scuta & Gladii"
      ],
      "color_rgb": [
        178,
        34,
        34
      ],
      "initial_strength": 40000,
      "final_strength": 4200,
      "start_pos_px": [
        960,
        680
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 780,
          "pos": [
            960,
            640
          ],
          "formation": "massed_super_ram"
        },
        {
          "t_sec": 1050,
          "pos": [
            960,
            540
          ],
          "formation": "compressed_funnel_surging"
        },
        {
          "t_sec": 1260,
          "pos": [
            960,
            470
          ],
          "formation": "swallowed_inside_concave_basin"
        },
        {
          "t_sec": 1470,
          "pos": [
            960,
            490
          ],
          "formation": "surrounded_four_sides_no_mobility"
        },
        {
          "t_sec": 1740,
          "pos": [
            960,
            495
          ],
          "formation": "compressed_slaughter_mass"
        }
      ],
      "size_px": [
        260,
        75
      ],
      "tactical_role": "Smash Carthaginian center via kinetic momentum and numerical mass",
      "termination_time_sec": 1740,
      "termination_status": "ANNIHILATED IN CAULDRON",
      "termination_display_duration_sec": 2.5,
      "fade_out_duration_sec": 2.0,
      "post_termination_state": "removed_from_sandbox",
      "defeat_lifecycle": {
        "termination_time_sec": 1740,
        "termination_status": "ANNIHILATED IN CAULDRON",
        "termination_badge_text": "[TERMINATED: ANNIHILATED]",
        "termination_cause": "Total collapse inside the slaughterhouse cauldron; Consul Paullus slain, organized resistance disintegrates, over 67,500 Romans butchered.",
        "termination_display_duration_sec": 2.5,
        "fade_out_duration_sec": 2.0,
        "post_termination_state": "removed_from_sandbox",
        "is_destructible": true
      }
    },
    {
      "id": "rome_allied_infantry",
      "name": "Allied Italian Legions (Socii Alae)",
      "side": "rome",
      "commander": "Allied Praefecti & Tribunes",
      "type": "infantry",
      "subtypes": [
        "8 Allied Socii Legions on Flanks of Roman Core"
      ],
      "color_rgb": [
        150,
        30,
        30
      ],
      "initial_strength": 30000,
      "final_strength": 3100,
      "start_pos_px": [
        960,
        720
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 780,
          "pos": [
            960,
            670
          ],
          "formation": "following_center_ram"
        },
        {
          "t_sec": 1100,
          "pos": [
            960,
            580
          ],
          "formation": "crowding_inward_towards_center"
        },
        {
          "t_sec": 1380,
          "pos": [
            960,
            520
          ],
          "formation": "trapped_under_libyan_lateral_thrust"
        }
      ],
      "size_px": [
        290,
        60
      ],
      "tactical_role": "Flank support; inadvertently compressed into central bottleneck",
      "termination_time_sec": 1650,
      "termination_status": "ENVELOPED & COMPRESSED",
      "termination_display_duration_sec": 2.5,
      "fade_out_duration_sec": 2.0,
      "post_termination_state": "removed_from_sandbox",
      "defeat_lifecycle": {
        "termination_time_sec": 1650,
        "termination_status": "ENVELOPED & COMPRESSED",
        "termination_badge_text": "[TERMINATED: COMPRESSED]",
        "termination_cause": "Crushed laterally by Libyan veteran phalanxes wheeling 90 degrees inward; packed to suffocating density in the meatgrinder.",
        "termination_display_duration_sec": 2.5,
        "fade_out_duration_sec": 2.0,
        "post_termination_state": "removed_from_sandbox",
        "is_destructible": true
      }
    },
    {
      "id": "rome_triarii_rear",
      "name": "Roman Triarii Veterans Reserve",
      "side": "rome",
      "commander": "Senior Centurions & Tribunes",
      "type": "infantry",
      "subtypes": [
        "Spear-Armed Veterans of 3rd Battle Line"
      ],
      "color_rgb": [
        130,
        20,
        20
      ],
      "initial_strength": 6000,
      "final_strength": 600,
      "start_pos_px": [
        960,
        780
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 780,
          "pos": [
            960,
            740
          ],
          "formation": "rear_line_kneeling"
        },
        {
          "t_sec": 1350,
          "pos": [
            960,
            660
          ],
          "formation": "forced_forward_by_mass_density"
        },
        {
          "t_sec": 1470,
          "pos": [
            960,
            640
          ],
          "formation": "smashed_by_hasdrubal_rear_charge"
        }
      ],
      "size_px": [
        220,
        30
      ],
      "tactical_role": "Standard rear reserve; obliterated from behind by Hasdrubal",
      "termination_time_sec": 1470,
      "termination_status": "CRUSHED IN REAR",
      "termination_display_duration_sec": 2.5,
      "fade_out_duration_sec": 2.0,
      "post_termination_state": "removed_from_sandbox",
      "defeat_lifecycle": {
        "termination_time_sec": 1470,
        "termination_status": "CRUSHED IN REAR",
        "termination_badge_text": "[TERMINATED: CRUSHED IN REAR]",
        "termination_cause": "Rear formation pulverized by Hasdrubal reformed heavy cavalry charge, sealing shut the fatal double envelopment.",
        "termination_display_duration_sec": 2.5,
        "fade_out_duration_sec": 2.0,
        "post_termination_state": "removed_from_sandbox",
        "is_destructible": true
      }
    },
    {
      "id": "rome_cav_paullus",
      "name": "Roman Citizen Cavalry (Right Wing)",
      "side": "rome",
      "commander": "Consul Lucius Aemilius Paullus",
      "type": "cavalry",
      "subtypes": [
        "Roman Patrician Equites with Bronze Helmets & Spears"
      ],
      "color_rgb": [
        200,
        50,
        50
      ],
      "initial_strength": 2400,
      "final_strength": 300,
      "start_pos_px": [
        520,
        620
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 420,
          "pos": [
            520,
            560
          ],
          "label": "Brutal melee against Hasdrubal"
        },
        {
          "t_sec": 660,
          "pos": [
            490,
            530
          ],
          "label": "Shattered into River Aufidus"
        }
      ],
      "size_px": [
        70,
        26
      ],
      "tactical_role": "Anchor right flank on Aufidus; outnumbered 3:1 by heavy horse",
      "termination_time_sec": 660,
      "termination_status": "SHATTERED & ANNIHILATED",
      "termination_display_duration_sec": 2.5,
      "fade_out_duration_sec": 2.0,
      "post_termination_state": "removed_from_sandbox",
      "defeat_lifecycle": {
        "termination_time_sec": 660,
        "termination_status": "SHATTERED & ANNIHILATED",
        "termination_badge_text": "[TERMINATED: ANNIHILATED]",
        "termination_cause": "Demolished by Hasdrubal heavy cavalry along the cramped Aufidus cut-bank; driven into the river and annihilated.",
        "termination_display_duration_sec": 2.5,
        "fade_out_duration_sec": 2.0,
        "post_termination_state": "removed_from_sandbox",
        "is_destructible": true
      }
    },
    {
      "id": "rome_cav_varro",
      "name": "Allied Italian Cavalry (Left Wing)",
      "side": "rome",
      "commander": "Consul Gaius Terentius Varro",
      "type": "cavalry",
      "subtypes": [
        "Campanian and Samnite Allied Cavalry"
      ],
      "color_rgb": [
        190,
        60,
        60
      ],
      "initial_strength": 4000,
      "final_strength": 500,
      "start_pos_px": [
        1400,
        640
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 480,
          "pos": [
            1400,
            580
          ],
          "label": "Skirmishing with Numidian riders"
        },
        {
          "t_sec": 1380,
          "pos": [
            1450,
            680
          ],
          "label": "Routed by dual attack of Maharbal & Hasdrubal"
        }
      ],
      "size_px": [
        85,
        26
      ],
      "tactical_role": "Hold open plain; routed when Hasdrubal hits rear",
      "termination_time_sec": 1380,
      "termination_status": "ROUTED & PURSUED",
      "termination_display_duration_sec": 2.5,
      "fade_out_duration_sec": 2.0,
      "post_termination_state": "removed_from_sandbox",
      "defeat_lifecycle": {
        "termination_time_sec": 1380,
        "termination_status": "ROUTED & PURSUED",
        "termination_badge_text": "[TERMINATED: ROUTED]",
        "termination_cause": "Caught in vicious pincer between Maharbal Numidians and Hasdrubal returning hammer; broken and routed towards Venusia.",
        "termination_display_duration_sec": 2.5,
        "fade_out_duration_sec": 2.0,
        "post_termination_state": "removed_from_sandbox",
        "is_destructible": true
      }
    },
    {
      "id": "rome_velites_screen",
      "name": "Roman Velites Skirmish Screen",
      "side": "rome",
      "commander": "Junior Centurions",
      "type": "skirmishers",
      "subtypes": [
        "Light Infantry in Wolf Skins with Parma & Javelins"
      ],
      "color_rgb": [
        160,
        50,
        50
      ],
      "initial_strength": 8000,
      "final_strength": 4000,
      "start_pos_px": [
        960,
        610
      ],
      "intermediate_positions_px": [
        {
          "t_sec": 360,
          "pos": [
            960,
            580
          ],
          "label": "Initial javelin duel"
        },
        {
          "t_sec": 600,
          "pos": [
            960,
            710
          ],
          "label": "Retreat through maniple intervals"
        }
      ],
      "size_px": [
        230,
        20
      ],
      "tactical_role": "Harass Carthaginian front line, fall back behind Hastati",
      "termination_time_sec": 600,
      "termination_status": "DISPERSED & ABSORBED",
      "termination_display_duration_sec": 2.5,
      "fade_out_duration_sec": 2.0,
      "post_termination_state": "removed_from_sandbox",
      "defeat_lifecycle": {
        "termination_time_sec": 600,
        "termination_status": "DISPERSED & ABSORBED",
        "termination_badge_text": "[DISPERSED & ABSORBED]",
        "termination_cause": "Opening skirmish concluded; javelins expended, screen dispersed and absorbed through maniple intervals into rear ranks.",
        "termination_display_duration_sec": 2.5,
        "fade_out_duration_sec": 2.0,
        "post_termination_state": "removed_from_sandbox",
        "is_destructible": true
      }
    }
  ],
  "tactical_vectors": [
    {
      "vector_id": "VEC_01_HASDRUBAL_RIVER_SWEEP",
      "name": "Hasdrubal Demolition of Roman Right Cavalry",
      "start_time_sec": 420,
      "duration_sec": 240,
      "bezier_pts": {
        "from": [
          540,
          440
        ],
        "ctrl": [
          510,
          510
        ],
        "to": [
          520,
          600
        ]
      },
      "color_rgb": [
        235,
        195,
        75
      ],
      "label": "River Corridor Decapitation",
      "target_unit_id": "rome_cav_paullus"
    },
    {
      "vector_id": "VEC_02_ROMAN_MASS_IMPULSE",
      "name": "Roman Battering Ram Frontal Advance",
      "start_time_sec": 780,
      "duration_sec": 360,
      "bezier_pts": {
        "from": [
          960,
          680
        ],
        "ctrl": [
          960,
          580
        ],
        "to": [
          960,
          470
        ]
      },
      "color_rgb": [
        178,
        34,
        34
      ],
      "label": "Frontal Ram Surge (Kinetic Thrust)",
      "target_unit_id": "carthage_center_arc"
    },
    {
      "vector_id": "VEC_03_HANNIBAL_ELASTIC_RETREAT",
      "name": "Controlled Yielding of Carthaginian Crescent",
      "start_time_sec": 840,
      "duration_sec": 420,
      "bezier_pts": {
        "from": [
          960,
          480
        ],
        "ctrl": [
          960,
          430
        ],
        "to": [
          960,
          385
        ]
      },
      "color_rgb": [
        212,
        175,
        55
      ],
      "label": "Elastic Convex-to-Concave Flex",
      "target_unit_id": "carthage_center_arc"
    },
    {
      "vector_id": "VEC_04_LIBYAN_LEFT_WHEEL",
      "name": "Libyan Veterans 90-Degree Inward Pivot (West)",
      "start_time_sec": 1320,
      "duration_sec": 120,
      "bezier_pts": {
        "from": [
          720,
          420
        ],
        "ctrl": [
          750,
          470
        ],
        "to": [
          830,
          480
        ]
      },
      "color_rgb": [
        180,
        140,
        30
      ],
      "label": "Libyan Flank Pincer Left",
      "target_unit_id": "rome_center_ram"
    },
    {
      "vector_id": "VEC_05_LIBYAN_RIGHT_WHEEL",
      "name": "Libyan Veterans 90-Degree Inward Pivot (East)",
      "start_time_sec": 1320,
      "duration_sec": 120,
      "bezier_pts": {
        "from": [
          1200,
          420
        ],
        "ctrl": [
          1170,
          470
        ],
        "to": [
          1090,
          480
        ]
      },
      "color_rgb": [
        180,
        140,
        30
      ],
      "label": "Libyan Flank Pincer Right",
      "target_unit_id": "rome_center_ram"
    },
    {
      "vector_id": "VEC_06_HASDRUBAL_REAR_CIRCUIT",
      "name": "Hasdrubal Grand Circuit Across Roman Rear",
      "start_time_sec": 780,
      "duration_sec": 480,
      "bezier_pts": {
        "from": [
          510,
          640
        ],
        "ctrl": [
          880,
          860
        ],
        "to": [
          1360,
          680
        ]
      },
      "color_rgb": [
        235,
        195,
        75
      ],
      "label": "Grand Equestrian Rear Circuit",
      "target_unit_id": "rome_cav_varro"
    },
    {
      "vector_id": "VEC_07_HASDRUBAL_HAMMER_SLAM",
      "name": "Hasdrubal Rear Encirclement Hammer Strike",
      "start_time_sec": 1440,
      "duration_sec": 150,
      "bezier_pts": {
        "from": [
          1340,
          670
        ],
        "ctrl": [
          1150,
          670
        ],
        "to": [
          960,
          650
        ]
      },
      "color_rgb": [
        235,
        195,
        75
      ],
      "label": "Rear Trap Sealed (Double Envelopment Complete)",
      "target_unit_id": "rome_triarii_rear"
    }
  ],
  "realtime_casualty_progression": [
    {
      "time_sec": 0,
      "historic_time": "08:00 AM",
      "rome_dead": 0,
      "rome_wounded": 0,
      "carthage_dead": 0,
      "slaughter_velocity_per_min": 0,
      "event": "Deployment completed, armies face off"
    },
    {
      "time_sec": 360,
      "historic_time": "09:30 AM",
      "rome_dead": 400,
      "rome_wounded": 850,
      "carthage_dead": 250,
      "slaughter_velocity_per_min": 5,
      "event": "Skirmish phase missile exchanges"
    },
    {
      "time_sec": 660,
      "historic_time": "10:30 AM",
      "rome_dead": 2100,
      "rome_wounded": 900,
      "carthage_dead": 650,
      "slaughter_velocity_per_min": 35,
      "event": "Roman right cavalry annihilated along Aufidus River"
    },
    {
      "time_sec": 960,
      "historic_time": "11:45 AM",
      "rome_dead": 5800,
      "rome_wounded": 3400,
      "carthage_dead": 2400,
      "slaughter_velocity_per_min": 42,
      "event": "Roman ram pushes Iberian/Gallic crescent back"
    },
    {
      "time_sec": 1260,
      "historic_time": "12:45 PM",
      "rome_dead": 11500,
      "rome_wounded": 6100,
      "carthage_dead": 4200,
      "slaughter_velocity_per_min": 65,
      "event": "Concave arc deepens; Romans compressed into bag"
    },
    {
      "time_sec": 1440,
      "historic_time": "01:45 PM",
      "rome_dead": 24000,
      "rome_wounded": 9500,
      "carthage_dead": 4900,
      "slaughter_velocity_per_min": 92,
      "event": "Libyans wheel inward, Hasdrubal slams rear shut"
    },
    {
      "time_sec": 1620,
      "historic_time": "03:15 PM",
      "rome_dead": 46000,
      "rome_wounded": 8200,
      "carthage_dead": 5350,
      "slaughter_velocity_per_min": 118,
      "event": "Peak slaughter rate; Romans suffocating shoulder to shoulder"
    },
    {
      "time_sec": 1740,
      "historic_time": "04:30 PM",
      "rome_dead": 62000,
      "rome_wounded": 6500,
      "carthage_dead": 5600,
      "slaughter_velocity_per_min": 105,
      "event": "Consul Paullus falls; organized resistance dissolves"
    },
    {
      "time_sec": 1800,
      "historic_time": "05:30 PM",
      "rome_dead": 67500,
      "rome_wounded": 3500,
      "rome_captured": 14500,
      "carthage_dead": 5700,
      "carthage_wounded": 2400,
      "slaughter_velocity_per_min": 12,
      "event": "Battle terminates; Mago collects 3 bushels of gold rings"
    }
  ],
  "camera_choreography": [
    {
      "time_sec": 0,
      "camera_mode": "tactical_overview",
      "target_px": [
        960,
        540
      ],
      "zoom": 1.0,
      "pitch_deg": 35,
      "bearing_deg": 0,
      "hud_banner": "BATTLE OF CANNAE (216 BC) - PROLOGUE"
    },
    {
      "time_sec": 360,
      "camera_mode": "flank_focus_river",
      "target_px": [
        540,
        520
      ],
      "zoom": 1.45,
      "pitch_deg": 48,
      "bearing_deg": 25,
      "hud_banner": "PHASE 1: THE RIVER CORRIDOR CLASH"
    },
    {
      "time_sec": 780,
      "camera_mode": "center_compression_focus",
      "target_px": [
        960,
        520
      ],
      "zoom": 1.35,
      "pitch_deg": 40,
      "bearing_deg": 0,
      "hud_banner": "PHASE 2: THE FLEXING CRESCENT"
    },
    {
      "time_sec": 1320,
      "camera_mode": "wide_encirclement_orbit",
      "target_px": [
        960,
        530
      ],
      "zoom": 1.15,
      "pitch_deg": 55,
      "bearing_deg": -15,
      "hud_banner": "PHASE 3: THE DOUBLE ENVELOPMENT CLOSES"
    },
    {
      "time_sec": 1590,
      "camera_mode": "top_down_cauldron_pressure",
      "target_px": [
        960,
        500
      ],
      "zoom": 1.8,
      "pitch_deg": 0,
      "bearing_deg": 0,
      "hud_banner": "PHASE 4: THE SLAUGHTERHOUSE CAULDRON"
    },
    {
      "time_sec": 1740,
      "camera_mode": "slow_pullback_sunset",
      "target_px": [
        960,
        540
      ],
      "zoom": 0.85,
      "pitch_deg": 25,
      "bearing_deg": 0,
      "hud_banner": "EPILOGUE: 67,500 FALLEN SONS OF ROME"
    }
  ],
  "audio_sync_cues": [
    {
      "time_sec": 0,
      "track": "ambient_war_room",
      "sfx": "wind_volturnus_low_howl",
      "volume_db": -12.0
    },
    {
      "time_sec": 31.0,
      "track": "atmospheric_bridge_ambient",
      "sfx": "volturnus_wind_swell_and_distant_cornu_echo",
      "volume_db": -10.0
    },
    {
      "time_sec": 360,
      "track": "taiko_war_drum_slow",
      "sfx": "balearic_sling_bullets_whoosh",
      "volume_db": -9.0
    },
    {
      "time_sec": 420,
      "track": "cavalry_impact_binaural",
      "sfx": "lowpass_horse_hooves_left_channel",
      "volume_db": -6.0
    },
    {
      "time_sec": 780,
      "track": "iron_mass_collision",
      "sfx": "scutum_crush_gladius_impact",
      "volume_db": -4.0
    },
    {
      "time_sec": 1320,
      "track": "horn_carthage_punic_signal",
      "sfx": "inward_flank_drill_shout",
      "volume_db": -5.0
    },
    {
      "time_sec": 1470,
      "track": "hasdrubal_rear_slam",
      "sfx": "deep_bass_shockwave_rumble",
      "volume_db": -3.0
    },
    {
      "time_sec": 1620,
      "track": "slaughter_cauldron_drone",
      "sfx": "crushed_breath_muffled_groans",
      "volume_db": -7.0
    },
    {
      "time_sec": 1740,
      "track": "funeral_cello_solo",
      "sfx": "paullus_final_stand_blade_drop",
      "volume_db": -10.0
    },
    {
      "time_sec": 1800,
      "track": "final_silence_wind",
      "sfx": "gold_rings_pour_on_marble_floor",
      "volume_db": -6.0
    }
  ]
}