{"asset_map": {"player_character_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/player_character_portrait_c7f2e148-e982-4779-bd19-846c12baa885.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style portrait of a determined male arm wrestler, shoulders up, front-facing view. Thick bold outlines, comic book aesthetic, vibrant warm colors. Focused expression with a slight determined smile. Visible muscular shoulders, wearing a simple athletic tank top. High quality, detailed game asset, transparent background.", "description": "A determined, muscular arm wrestler portrait for the player character.", "subtype": "character", "aspect_ratio": [965, 979], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_rookie_rudi": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_rookie_rudi_083ebba4-580a-4999-b594-74978e2a93c3.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style portrait of a young man (early 20s) named Rookie Rudi, shoulders up, front-facing view. Nervous and uncertain expression, thin build, messy hair. Wearing a casual t-shirt. Thick bold outlines matching the style of image 1, but with lighter, less saturated colors. High quality, transparent background.", "description": "Portrait of Rookie Rudi, a nervous beginner opponent with a thin build.", "subtype": "character", "aspect_ratio": [670, 1004], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_steady_sam": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_steady_sam_fb41c047-3040-41f2-8ac2-1b16797bc6ba.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style portrait of a middle-aged man (30s-40s) named Steady Sam, shoulders up, front-facing view. Calm, focused, and confident expression. Average muscular build, neat professional hair, wearing a polo shirt. Thick bold outlines matching the style of image 1, neutral balanced colors. High quality, transparent background.", "description": "Portrait of Steady Sam, a calm and professional intermediate opponent.", "subtype": "character", "aspect_ratio": [969, 992], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_rapid_rita": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_rapid_rita_c3a4af25-c2b8-41f7-98ca-c48b38e09d8c.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style portrait of an athletic female arm wrestler named Rapid Rita, shoulders up, front-facing view. Fierce, competitive expression with a slight smirk. Highly toned muscular build, ponytail hairstyle, wearing athletic gear. Thick bold outlines matching image 1, bold energetic red and orange colors. High quality, transparent background.", "description": "Portrait of Rapid Rita, an intense and athletic advanced opponent.", "subtype": "character", "aspect_ratio": [848, 1020], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "arm_wrestling_table": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/arm_wrestling_table_87a049c6-bd61-4858-bd6a-b1192270d1ea.webp", "type": "image", "prompt": "Generate a 2:1 wide cartoon-style arm wrestling table viewed from a slight side perspective (3/4 view). Wooden texture with subtle grain, thick bold outlines matching character portraits. Includes a padded elbow rest in the center. Warm brown tones, clean and simple design, high quality game asset, transparent background.", "description": "A wooden arm wrestling table with padded elbow rests in a 3/4 side perspective.", "subtype": "object", "aspect_ratio": [1217, 869], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "player_arm": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/player_arm_ac97e65b-d696-47d6-98f3-6f03ef7d4d9d.webp", "type": "image", "prompt": "Generate a vertical cartoon-style muscular arm in arm wrestling position, from elbow to clenched fist. Exaggerated muscle definition, warm skin tones matching image 1. Thick bold outlines. Vertical orientation for the right side of the screen, facing left. High quality, transparent background.", "description": "Exaggerated muscular arm for the player, oriented for the right side of the screen.", "subtype": "character", "aspect_ratio": [754, 773], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_88efcbb7-04ce-4234-9063-dfd47328210e.webp", "type": "image", "prompt": "Generate a vertical cartoon-style muscular arm in arm wrestling position, from elbow to clenched fist. Thick bold outlines matching image 1. Vertical orientation for the left side of the screen, facing right (mirror image of player_arm). Different skin tone than player for contrast. High quality, transparent background.", "description": "Muscular arm for the opponent, oriented for the left side of the screen.", "subtype": "character", "aspect_ratio": [813, 1024], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "icon_power_boost": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/icon_power_boost_7b271030-b48a-414b-877c-877bd207cdfe.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style icon for a 'Power Boost'. A flexed bicep muscle with energy and power lines radiating from it. Bold outlines, red and orange color scheme, sparkles and energy effects. Simple iconic design for UI, readable at small sizes, transparent background.", "description": "Icon for the Power Boost item showing a flexed bicep with energy effects.", "subtype": "ui", "aspect_ratio": [831, 848], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "icon_stamina_potion": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/icon_stamina_potion_f0f56a6a-a558-4ec6-adfb-cb9045a334f4.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style icon for a 'Stamina Potion'. A glass potion bottle filled with glowing green and cyan liquid, bubbles and sparkle effects. Bold outlines, clear iconic UI design, high quality, transparent background.", "description": "Icon for the Stamina Potion item with glowing green liquid.", "subtype": "ui", "aspect_ratio": [648, 914], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "icon_slow_opponent": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/icon_slow_opponent_9fc8567d-71a5-468c-ae45-4f87d4fe0d06.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style icon for a 'Slow Opponent' item. A stopwatch or clock with a downward arrow and motion lines suggesting slow-motion. Purple and blue color scheme, bold outlines, simple and clear UI icon, transparent background.", "description": "Icon for the Slow Opponent item showing a clock with time effects.", "subtype": "ui", "aspect_ratio": [906, 896], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "icon_iron_grip": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/icon_iron_grip_9ba093fb-10b8-442c-89f1-7490d1b1d0ea.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style icon for 'Iron Grip' skill. A clenched fist with a metallic silver and iron texture/sheen. Bold outlines, strength lines and impact effects, gray color palette. Simple iconic design, high quality, transparent background.", "description": "Icon for the Iron Grip skill showing a metallic clenched fist.", "subtype": "ui", "aspect_ratio": [881, 930], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "icon_quick_recovery": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/icon_quick_recovery_2a053596-760d-4afe-8c8a-ebd2881f3b8d.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style icon for 'Quick Recovery'. A heart shape with a plus symbol and upward arrows. Green and teal color scheme, restoration sparkles, bold outlines. Simple and clean UI design, transparent background.", "description": "Icon for the Quick Recovery skill showing a heart and plus symbol.", "subtype": "ui", "aspect_ratio": [835, 781], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "icon_coin": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/icon_coin_dbdb95d7-a2c4-4876-a6a7-2fc01d563314.webp", "type": "image", "prompt": "Generate a 1:1 square cartoon-style gold coin icon. Bright gold/yellow color scheme with a simple emblem in the center. Bold outlines, shine and sparkle effects, high quality game currency asset, transparent background.", "description": "Golden coin icon for the game's currency.", "subtype": "ui", "aspect_ratio": [912, 895], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "background_main_menu": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/background_main_menu_62310500-e5d5-4989-93ee-402dee65c139.webp", "type": "image", "prompt": "Generate a 9:16 tall image of a cartoon-style stylized gym or competition arena. Warm inviting colors, bold outlines matching the game's art style. Includes banners, lights, and subtle crowd silhouettes. Slight blur/soft focus effect to ensure UI readability. High resolution, detailed background, opaque.", "description": "A vertical background showing a stylized gym for the main menu.", "subtype": "background", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "background_match": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/background_match_724e52b7-aedd-43de-838a-9da3db5f2c79.webp", "type": "image", "prompt": "Generate a 9:16 tall image of a cartoon-style arm wrestling arena from a side angle. Warm colors, energetic atmosphere, audience silhouettes in the background. Bold outlines, slight background blur to focus on the match. Matches the aesthetic of image 1. High resolution, opaque background.", "description": "A vertical background for the match screen showing a side view of an arena.", "subtype": "background", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "sfx_tap": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sfx_tap_8076950d-7fa0-4d23-8a79-9acf8e598b89.mp3", "type": "audio", "prompt": "A sharp, punchy character effort sound effect. Quick, clean impact with a light organic snap, like a fist hitting a palm. Snappy attack, zero decay, no metallic ringing. Designed for high-frequency repetition in an arcade game without ear fatigue. High energy, responsive, and dry.", "description": "Short, punchy tap feedback for rapid arm wrestling input.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 2, "loop": false, "animation": null}, "sfx_item_use": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sfx_item_use_f919e999-85f3-45d8-b03c-0cbc67f57d72.mp3", "type": "audio", "prompt": "A magical power-up activation chime, digital sparkle mixed with a brief rising synth swell. Bright, empowering, and high-pitched. Suggests a temporary boost or status upgrade. Clear, shimmering finish, 0.5 seconds of active sound followed by a short clean tail.", "description": "Positive activation sound for power-ups and equipment.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 1.52, "loop": false, "animation": null}, "sfx_victory": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sfx_victory_829e99d5-5d3f-4e62-9dc7-0671f1719e82.mp3", "type": "audio", "prompt": "A short, triumphant 90s arcade victory fanfare. Bright brass horns playing a rising major-key melody, supported by a snare drum roll and a final crash cymbal. Celebratory, high-energy, and rewarding. Classic sports game winner sting.", "description": "Triumphant fanfare for winning an arm wrestling match.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 2.22, "loop": false, "animation": null}, "sfx_defeat": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sfx_defeat_9c08258c-92cb-4014-ac29-7caf8cf6ef79.mp3", "type": "audio", "prompt": "A short, descending musical motif on a mellow marimba or muted synth. Slightly comical 'aww' vibe but maintaining an upbeat arcade aesthetic. Non-punishing, clean, and quick, encouraging the player to try again immediately.", "description": "Gentle disappointment sound for losing a match.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 1.46, "loop": false, "animation": null}, "sfx_coin": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sfx_coin_db59125e-ccb9-4958-beb9-9d78343e2d16.mp3", "type": "audio", "prompt": "Classic high-pitched digital coin collect sound. Shimmering, metallic 'ding' with a short resonant ring. Satisfying, arcade-style reward audio, designed to sound good when played in rapid succession for coin counting.", "description": "Satisfying chime for collecting or earning match rewards.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 1, "loop": false, "animation": null}, "sfx_purchase": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sfx_purchase_22026715-dfa8-4910-b92a-fee562659fe6.mp3", "type": "audio", "prompt": "A positive shop transaction sound effect. A combination of a soft cash register 'ka-ching' and a digital confirmation beep. Sounds successful, professional, and rewarding. Clean and concise.", "description": "Confirmation sound for successful shop transactions.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 1.63, "loop": false, "animation": null}, "music_menu": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/music_menu_a3e3823a-86fe-4ee7-b514-6a4b13a30b70.mp3", "type": "audio", "prompt": "Upbeat arcade menu theme, funky bassline, 120 BPM, energetic synth brass stabs, and clean electric guitar rhythm. Competitive but casual vibe, bright major key, loopable structure with a groovy drum break. Instrumental only, 1990s sports game aesthetic.", "description": "Upbeat and funky menu music to keep players motivated.", "subtype": "music", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 30, "loop": true, "animation": null}, "music_match": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/music_match_500a2d77-cb85-4f4e-a759-df6689fa5bff.mp3", "type": "audio", "prompt": "Intense high-energy battle music for an arm wrestling match. 145 BPM, driving electronic rock fusion, heavy distorted synth bass, aggressive drum beats, and fast-paced melodic sequences. Builds tension with rising rhythmic patterns. Seamless loop, adrenaline-pumping, instrumental only.", "description": "Intense, high-tempo track for active arm wrestling battles.", "subtype": "music", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 30, "loop": true, "animation": null}, "opponent_iron_fist_ivan": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_iron_fist_ivan_f774f220-ba60-41c1-aec7-c5aefeb29455.webp", "type": "image", "prompt": "Generate a character portrait of Iron Fist Ivan, a muscular Russian arm wrestler with a stern expression, thick beard, and intense eyes. Shoulders-up view, confident and intimidating pose. Professional game art style, clean lines, polished finish, consistent with the style of opponent_rookie_rudi and opponent_steady_sam. Transparent background, high resolution.", "description": "Portrait of Iron Fist Ivan, a muscular and intimidating Russian arm wrestler for the opponent profile.", "subtype": "character", "aspect_ratio": [877, 994], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_thunder_tina": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_thunder_tina_5652ecee-4054-438e-8c5b-75f1dc191ea8.webp", "type": "image", "prompt": "Generate a character portrait of Thunder Tina, a powerful female arm wrestler with an athletic build. She has a fierce, confident expression and intense eyes. Include subtle lightning-like blue energy effects around her. Front-facing, from shoulders up, professional game-ready character illustration. Style matches the existing opponent portraits like image 1 and image 2.", "description": "Portrait of Thunder Tina, a fierce and athletic medium-hard difficulty opponent with lightning motifs.", "subtype": "character", "aspect_ratio": [786, 954], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_stone_crusher_steve": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_stone_crusher_steve_6fad6621-bf60-4163-b2bf-23bab47dff89.webp", "type": "image", "prompt": "Generate a character portrait of 'Stone Crusher Steve', an extremely muscular and massive arm wrestler. He has a scarred face, a very dangerous and intimidating presence, and a stern expression. Show him from the shoulders up, front-facing. The art style should match the muscular and stylized aesthetic of the existing game characters like 'opponent_iron_fist_ivan'. High resolution, detailed, professional game asset quality on a transparent background.", "description": "Portrait of Stone Crusher Steve, a high-difficulty muscular opponent with a scarred face.", "subtype": "character", "aspect_ratio": [916, 1024], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_lightning_leo": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_lightning_leo_e95c2216-8d49-4789-94c5-06e59a5b94ad.webp", "type": "image", "prompt": "Generate a character portrait of Lightning Leo, a fast and agile arm wrestler. He has an athletic build, sharp facial features, and intense, focused eyes. Use a professional game asset style, shoulders up, front-facing illustration. He should have an energetic and quick expression. Consistent with the art style of 'opponent_rookie_rudi' and 'opponent_rapid_rita'. Transparent background, high resolution.", "description": "Portrait of Lightning Leo, an agile and fast-paced opponent for the arm wrestling match.", "subtype": "character", "aspect_ratio": [811, 955], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_titan_tom": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_titan_tom_ff4d3332-c57b-4e33-add3-f04985dcbfc6.webp", "type": "image", "prompt": "Generate a character portrait of Titan Tom, a gigantic arm wrestler with enormous muscles and a confident champion's smile. He has a commanding presence and massive shoulders. Style should match the existing character portraits: polished game art, front-facing, from shoulders up. High resolution, detailed textures, professional quality, transparent background.", "description": "Portrait of Titan Tom, a legendary and massive arm wrestler opponent.", "subtype": "character", "aspect_ratio": [915, 1024], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_shadow_sara": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_shadow_sara_51996bb8-0c06-450f-b739-85169fb949f6.webp", "type": "image", "prompt": "Generate a character portrait of Shadow Sara from the shoulders up. She is a mysterious female arm wrestler with a sleek athletic build, dark features, and a cunning, confident expression. Use a clean, polished game-ready art style consistent with a competitive sports game. The lighting should be slightly moody to emphasize her 'shadow' theme. Front-facing view, transparent background, high resolution, detailed character design.", "description": "Portrait of Shadow Sara, a mysterious and cunning female arm wrestler for the match interface.", "subtype": "character", "aspect_ratio": [986, 1001], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_beast_bruno": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_beast_bruno_d05abb5a-3aff-4d11-b2f8-2b1dffe8c97d.webp", "type": "image", "prompt": "Generate a portrait of 'Beast Bruno', a wild and powerful arm wrestler. He has an untamed appearance with messy hair, intense primal eyes, and a raw, dangerous look. Shoulders-up view, front-facing. Artistic style matches the muscular and stylized aesthetic of other game characters. High resolution, detailed facial features, professional game-ready character art, transparent background.", "description": "Portrait of Beast Bruno, a primal and powerful high-difficulty opponent.", "subtype": "character", "aspect_ratio": [915, 1024], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_swift_sophia": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_swift_sophia_6dbd72f4-8a6b-4ec4-96a3-14fc6d7f7044.webp", "type": "image", "prompt": "Generate a character portrait of Swift Sophia, a nimble female arm wrestler. She has an athletic build, sharp eyes, and an alert, quick expression. Styled as a professional game character portrait from the shoulders up. She should look focused and high-energy to match her fast tap speed. Maintain a consistent art style with existing opponent portraits like Rapid Rita and Thunder Tina. High resolution, detailed, clean lines, transparent background.", "description": "Portrait of Swift Sophia, a nimble and fast-reacting female opponent.", "subtype": "character", "aspect_ratio": [811, 1011], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_king_kaiser": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_king_kaiser_ac47155a-be9e-4172-a791-edd1274169b3.webp", "type": "image", "prompt": "Generate a high-quality character portrait of King Kaiser, the ultimate arm wrestling champion. He has a regal bearing, massive muscles, and a commanding, legendary presence. He should be shown from the shoulders up, looking directly at the camera with extreme confidence. Features include a thick, well-groomed beard, a subtle golden crown or laurel to signify his 'King' status, and intense, experienced eyes. Use a consistent artistic style matching the other game portraits: polished, vibrant colors, and a clean, professional game-ready look on a transparent background.", "description": "Portrait of King Kaiser, the legendary ultimate arm wrestling champion with a regal and powerful presence.", "subtype": "character", "aspect_ratio": [907, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_venom_victor": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_venom_victor_ffeaf533-4132-4b91-837f-ae322919c468.webp", "type": "image", "prompt": "Portrait of Venom Victor, a dangerous and unpredictable arm wrestler with a menacing expression, scarred features, and a dark aura. He has a sinister and powerful look, shown from the shoulders up. The style should match the existing character portraits like 'opponent_king_kaiser'\u2014highly detailed, semi-realistic game art with dramatic lighting. Front-facing character, transparent background, high resolution.", "description": "Portrait of Venom Victor, a sinister and dangerous extreme-difficulty arm wrestler.", "subtype": "character", "aspect_ratio": [945, 1024], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_iron_gloves": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_iron_gloves_dafbb7bf-1e80-408a-867a-ca133154f1b7.webp", "type": "image", "prompt": "Generate a high-quality game icon of a pair of heavy iron gloves with reinforced knuckles and a polished metallic shine. Front view, symmetrical composition, clean edges, professional game UI style, transparent background.", "description": "Icon for Iron Gloves equipment, featuring heavy metal gloves with reinforced knuckles.", "subtype": "ui", "aspect_ratio": [970, 838], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_grip_tape": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_grip_tape_43675ac3-985d-4544-969f-187aeb86e9c9.webp", "type": "image", "prompt": "Generate a professional game icon of a roll of textured grip tape with a visible anti-slip pattern. Front view, clean lines, high-quality 2D digital art style consistent with a sports management game. High resolution, detailed texture, transparent background.", "description": "Icon for the Grip Tape equipment showing a textured roll of athletic tape.", "subtype": "ui", "aspect_ratio": [915, 734], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_wrist_brace": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_wrist_brace_78eba0e4-10aa-41e7-a7cb-c447caa14276.webp", "type": "image", "prompt": "Generate a high-quality game icon of a supportive wrist brace with adjustable straps and reinforced padding. Professional game asset, front-view, clean lines, polished texture, 80x80 pixel aesthetic, transparent background, matching the style of equipment_iron_gloves.", "description": "Icon for Wrist Brace equipment providing support and reinforcement.", "subtype": "ui", "aspect_ratio": [472, 912], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_muscle_oil": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_muscle_oil_085fe906-2ed6-4f00-a9a2-c43a32f05b9c.webp", "type": "image", "prompt": "Generate a game-ready icon for Muscle Oil equipment. A small, polished bottle containing shimmering golden liquid with a metallic or glass sheen. High resolution, 2D game asset, clean lines, professional quality, front view, isolated on a transparent background.", "description": "An icon representing the Muscle Oil equipment item, featuring a shimmering bottle with golden liquid.", "subtype": "ui", "aspect_ratio": [573, 1133], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_energy_drink": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_energy_drink_62896b7e-0a0b-488a-9680-ab7f8cd1417a.webp", "type": "image", "prompt": "Generate a high-quality icon of an energy drink can with vibrant colors and glowing energy effects radiating from it. Clean, polished game asset style, front view, 2D vector art feel. The design should feature bold graphics and a metallic sheen. Transparent background, 80x80 pixels style, professional quality.", "description": "An icon for an energy drink equipment item with vibrant colors and energy effects.", "subtype": "ui", "aspect_ratio": [939, 972], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_adrenaline_shot": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_adrenaline_shot_a61d9bee-0290-4223-b674-f6d16af4bfed.webp", "type": "image", "prompt": "Generate a game-ready icon of an Adrenaline Shot syringe filled with glowing neon energy liquid and subtle electric energy effects. Front view, centered composition, clean and polished digital art style matching the equipment icons in the game. Vibrant colors, high resolution, professional quality, transparent background.", "description": "Icon for Adrenaline Shot equipment showing a syringe with glowing energy liquid.", "subtype": "ui", "aspect_ratio": [460, 1063], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_focus_pill": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_focus_pill_ee844c7b-9294-41da-a2c3-b2286bb62a27.webp", "type": "image", "prompt": "Generate a professional quality game icon of a single glowing pill capsule. The pill should emit a soft blue or purple aura representing mental focus and clarity. Clean, polished 2D game asset style, front view, vibrant colors, detailed lighting, centered composition, transparent background.", "description": "Icon for the Focus Pill equipment, showing a glowing capsule with mental clarity effects.", "subtype": "ui", "aspect_ratio": [361, 699], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_lucky_charm": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_lucky_charm_109e9fa0-e88b-4a9a-a150-54732a4207b0.webp", "type": "image", "prompt": "Generate a professional game icon for a mystical lucky charm or talisman. The charm should feature intricate patterns and emit a soft, magical glowing effect. Front-view, centered composition, clean polished game-ready asset. 2D stylized art style consistent with other equipment icons. High resolution, detailed, transparent background.", "description": "A mystical glowing talisman icon used as equipment to boost luck.", "subtype": "ui", "aspect_ratio": [628, 797], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_pain_killer": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_pain_killer_fd629dde-0c60-44fa-9779-05a534f23204.webp", "type": "image", "prompt": "Generate a clean, game-ready icon of a medicine bottle for 'Pain Killer' equipment. The bottle should feature a clinical design with a label showing a cross or a soothing wave symbol. Polished style with soft highlights to indicate a calming effect, front-facing perspective, professional quality, high resolution, transparent background.", "description": "Icon for Pain Killer equipment, a bottle of medicine used to reduce fatigue or pain during arm wrestling matches.", "subtype": "ui", "aspect_ratio": [621, 1127], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_steroids": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_steroids_c7548e19-ef02-4d33-be33-d2eb746d043e.webp", "type": "image", "prompt": "Generate a professional game UI icon for a 'Steroids' equipment item. The icon should feature a small glass vial filled with a glowing, suspicious neon-purple liquid. Include a dark, misty aura or purple smoke surrounding the vial and a small hazard/warning symbol on the label. 2D stylized game art, front view, high resolution, clean lines, polished finish, transparent background.", "description": "Icon for the Steroids cheating item, featuring a suspicious vial with a dark aura.", "subtype": "ui", "aspect_ratio": [372, 762], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "equipment_nerve_gas": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/equipment_nerve_gas_5ccebeea-c205-419c-be08-4851d9f42a18.webp", "type": "image", "prompt": "Generate a game-ready icon of a metallic canister emitting toxic green gas effects with visible hazard/warning symbols. Clean, polished style, front view, high resolution, detailed metallic texture with a dangerous green aura, transparent background, suitable for an 80x80 pixel UI element.", "description": "An icon for a toxic nerve gas canister used as a cheating item in the game.", "subtype": "ui", "aspect_ratio": [650, 904], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_muscle_growth": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_muscle_growth_406964c8-d5b7-46e7-a625-68be69714f70.webp", "type": "image", "prompt": "Generate a clean, polished game icon for a 'Muscle Growth' upgrade. The icon features a highly defined, flexed bicep muscle with upward-pointing growth arrows and glowing power effects. Consistent with the style of image 1, showing vibrant colors and a bold outline. Front view, professional quality, 2D vector style, transparent background.", "description": "Icon for the Muscle Growth upgrade showing a bicep with growth indicators and power effects.", "subtype": "ui", "aspect_ratio": [772, 710], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_endurance": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_endurance_593c9323-f979-477b-ac82-a9f428258b3f.webp", "type": "image", "prompt": "Generate a clean, high-quality game UI icon for an Endurance upgrade. The icon features a stylized vibrant red heart combined with green stamina/energy bars and subtle glowing energy effects. Polished digital art style, front-view, professional game-ready asset, transparent background.", "description": "Icon for the Endurance upgrade featuring a heart with stamina bars and energy effects.", "subtype": "ui", "aspect_ratio": [724, 709], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_reflexes": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_reflexes_69ff789e-a183-4e83-842d-13afa6064d8d.webp", "type": "image", "prompt": "Generate a game-ready UI icon of a bright yellow lightning bolt with dynamic blue speed lines and energy effects. Front view, clean vector-style with a slight 3D polish and glow, professional quality, high resolution, transparent background.", "description": "Icon for the Reflexes upgrade showing a lightning bolt with speed trails", "subtype": "ui", "aspect_ratio": [832, 831], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_recovery": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_recovery_f0920bea-674f-4580-83cc-7f2bb0117150.webp", "type": "image", "prompt": "Generate a clean, game-ready UI icon for a Recovery upgrade. The icon features a bold healing cross in the center with glowing green regeneration energy swirls and sparkles around it. Professional digital art style, front view, high resolution, detailed lighting, transparent background.", "description": "Icon for the Recovery upgrade showing a healing cross with regeneration effects.", "subtype": "ui", "aspect_ratio": [848, 852], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_focus": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_focus_79eb0c32-0a90-4bc6-81d5-663a467c5466.webp", "type": "image", "prompt": "Generate a high-quality game UI icon for a 'Focus' upgrade. The icon features a sharp, wide-open eye with a glowing iris, surrounded by radiating concentration lines and subtle mental energy effects. Clean, polished vector-style illustration, front view, 80x80 pixel aesthetic, vibrant colors, transparent background, professional game asset quality.", "description": "Icon for the Focus upgrade showing a concentrated eye with mental energy effects.", "subtype": "ui", "aspect_ratio": [840, 898], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_resistance": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_resistance_0c4d56da-402f-4605-8133-82a34e5a5045.webp", "type": "image", "prompt": "Generate a high-quality UI icon for a Resistance upgrade, featuring a polished metallic shield with glowing protective energy effects. The style should match existing game icons like 'icon_iron_grip' and 'upgrade_muscle_growth'. Clean 2D game asset style, front view, vibrant colors, detailed textures, professional quality, transparent background.", "description": "Icon for the Resistance upgrade featuring a protective shield with energy effects.", "subtype": "ui", "aspect_ratio": [992, 821], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_precision": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_precision_406abbe2-0d4e-4915-b6aa-615ed8365606.webp", "type": "image", "prompt": "Generate a polished game UI icon for a 'Precision' upgrade. The icon features a sleek, metallic target crosshair with glowing blue accuracy effects and digital reticle elements. 80x80 pixels style, front-view, high resolution, clean lines, professional game asset quality, transparent background.", "description": "An icon for the Precision upgrade showing a target crosshair for better accuracy.", "subtype": "ui", "aspect_ratio": [853, 850], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_momentum": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_momentum_13eabb99-19d9-4154-918d-adb19b1be89b.webp", "type": "image", "prompt": "Generate a game-ready UI icon for a Momentum upgrade. The icon features a bold forward-pointing arrow with dynamic acceleration trail effects and energy streaks. Polished, clean vector-style art with high contrast. Front view, centered composition, high resolution, professional quality game asset on a transparent background.", "description": "Icon for the Momentum upgrade showing an accelerating arrow.", "subtype": "ui", "aspect_ratio": [884, 709], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_stamina_pool": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_stamina_pool_d0feb783-2bc4-40dc-bda6-7b065d5c6c09.webp", "type": "image", "prompt": "Generate a high-quality UI icon for a Stamina Pool upgrade. The icon features a glowing blue water droplet or a small pool of liquid with shimmering energy effects and ripples. 2D polished game asset style, front view, clean edges, vibrant colors, detailed lighting, transparent background. Matches the style of existing game icons.", "description": "Icon for Stamina Pool upgrade showing an energy-infused water droplet.", "subtype": "ui", "aspect_ratio": [729, 1007], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "upgrade_power_surge": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/upgrade_power_surge_844910f6-e76c-4692-8955-43f5c770a295.webp", "type": "image", "prompt": "Generate a high-quality game icon for a 'Power Surge' upgrade. The icon features a vibrant electrical surge and a blue lightning explosion with energetic power effects. 2D polished game art style, front view, centered composition, high detail, sharp edges, professional UI asset, transparent background.", "description": "Icon for Power Surge upgrade showing an electrical explosion of energy", "subtype": "ui", "aspect_ratio": [939, 918], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "skill_berserker_rage": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/skill_berserker_rage_66933c69-f65d-4f3b-9a54-a07cb4931247.webp", "type": "image", "prompt": "Generate a clean, game-ready UI icon for a 'Berserker Rage' skill. The icon features a stylized, ferocious angry face with glowing red eyes and intense expression, surrounded by fiery red rage energy effects. Professional vector-style illustration, high contrast, bold outlines, front view, transparent background, 80x80 pixels aesthetic, consistent with existing game skill icons.", "description": "Icon for the Berserker Rage skill showing a stylized angry face with red energy effects.", "subtype": "ui", "aspect_ratio": [817, 850], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "skill_counter_attack": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/skill_counter_attack_95b972b4-0f58-4ebe-87a3-06973a77eae5.webp", "type": "image", "prompt": "Generate a professional game UI icon for a 'Counter Attack' skill. The icon features a sturdy shield with a glowing curved arrow reflecting off its surface, symbolizing a parry or counter-move. Clean, polished vector-style game asset with vibrant colors, metallic textures, and subtle energy effects. Front view, centered composition, high resolution, transparent background.", "description": "Icon for the Counter Attack skill showing a shield with a reflection arrow.", "subtype": "ui", "aspect_ratio": [718, 851], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "skill_adrenaline_rush": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/skill_adrenaline_rush_13808c8f-e083-45c3-90fb-41bf03c5cff9.webp", "type": "image", "prompt": "Generate a high-quality game icon for an 'Adrenaline Rush' skill. The icon features a vibrant red anatomical heart silhouette with dynamic speed lines and motion blur effects to suggest a rush. Clean, polished vector-style art with bold outlines, consistent with a professional mobile game UI. Front view, centered composition, transparent background.", "description": "Skill icon for Adrenaline Rush featuring a heart with speed effects", "subtype": "ui", "aspect_ratio": [779, 765], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "skill_iron_will": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/skill_iron_will_9e5b6dce-d52f-4845-ace6-5df92364c276.webp", "type": "image", "prompt": "Generate a clean, high-quality game UI icon for an 'Iron Will' skill. The design should feature a stylized, glowing willpower symbol or a determined facial silhouette with a metallic sheen. Professional game asset style, 80x80 pixel feel, vibrant colors, centered composition, front view, transparent background.", "description": "An icon representing the Iron Will skill, showing a symbol of mental strength and determination.", "subtype": "ui", "aspect_ratio": [904, 908], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "skill_perfect_timing": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/skill_perfect_timing_f13a7723-2757-4123-ad47-09666c2ea9ab.webp", "type": "image", "prompt": "Generate a professional game UI icon for a 'Perfect Timing' skill. The icon should feature a sleek clock or stopwatch with glowing precision effects and highlights. Use a polished, high-resolution style consistent with existing skill icons like iron_will. Front view, centered composition, vibrant colors, transparent background.", "description": "An icon for the Perfect Timing skill featuring a precision-focused clock or timer.", "subtype": "ui", "aspect_ratio": [662, 848], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_rookie_rudi_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_rookie_rudi_portrait_55f44e7e-a6b9-484c-825c-a733d23ddf1f.webp", "type": "image", "prompt": "Generate a circular portrait of a young, thin beginner arm wrestler named Rookie Rudi. He has an anxious expression with visible sweat on his forehead and is wearing a simple gym shirt. Head and shoulders view, friendly but uncertain demeanor. The style should match the existing character portraits, featuring clean lines and a polished game-ready aesthetic with a transparent background.", "description": "A circular portrait of Rookie Rudi, a nervous beginner arm wrestler with a thin build and anxious expression.", "subtype": "character", "aspect_ratio": [820, 898], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_steady_sam_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_steady_sam_portrait_cfafde41-466a-4e51-8137-824a9e30439a.webp", "type": "image", "prompt": "Generate a high-quality circular portrait of 'Steady Sam', a middle-aged intermediate arm wrestler. He has a balanced, athletic build and a composed, confident expression with focused eyes. He is wearing professional gym attire. Head and shoulders view, centered in the frame. The art style should be polished and consistent with the existing character portraits, featuring clean lines and professional game-ready shading. Transparent background.", "description": "Portrait of Steady Sam, a calm and professional intermediate arm wrestler for the opponent profile.", "subtype": "character", "aspect_ratio": [982, 984], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_rapid_rita_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_rapid_rita_portrait_0e04ee64-065f-4d71-81e6-cea37c520e30.webp", "type": "image", "prompt": "Generate a high-quality circular portrait of Rapid Rita, an intense and athletic female arm wrestler. She has a fierce expression with determined eyes and a powerful, athletic build. She is wearing sporty, modern gym gear. The style should be a clean, polished digital illustration consistent with professional game assets. Head and shoulders view, centered in a circular frame with a transparent background. Professional lighting, vibrant colors, reflecting an advanced difficulty level.", "description": "A circular head-and-shoulders portrait of Rapid Rita, a fierce and athletic advanced-level arm wrestler.", "subtype": "character", "aspect_ratio": [890, 973], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_iron_fist_ivan_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_iron_fist_ivan_portrait_773135fa-4644-4d81-96e1-4d0978ae8cad.webp", "type": "image", "prompt": "Generate a circular portrait of Iron Fist Ivan, a muscular and intimidating Russian arm wrestler. He is bald with a very muscular build, a stern expression, and cold, focused eyes. He wears a simple gym tank top. The style should be a clean, polished game-ready character illustration, head and shoulders view, with an intimidating and powerful demeanor. Consistent with the professional art style of previous opponent portraits.", "description": "Portrait of Iron Fist Ivan, an intimidating Russian arm wrestler for the opponent profile.", "subtype": "character", "aspect_ratio": [1024, 1024], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_thunder_tina_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_thunder_tina_portrait_48be21cd-c8fc-40ae-8fd7-cdb296d21ce4.webp", "type": "image", "prompt": "Generate a high-quality circular portrait of Thunder Tina, a fierce and athletic female arm wrestler. She has an athletic muscular build, a fierce and determined expression, and is wearing lightning-themed gym gear. Subtle electric energy arcs crackle around her. Head and shoulders view, centered composition, powerful and energetic demeanor. Professional game art style, clean lines, vibrant colors, transparent background.", "description": "A fierce and athletic female arm wrestler portrait with lightning motifs for the character selection or match screen.", "subtype": "character", "aspect_ratio": [890, 969], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_stone_crusher_steve_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_stone_crusher_steve_portrait_416bacd5-cbac-4e9e-921c-f7dc45c3530d.webp", "type": "image", "prompt": "Generate a circular portrait of Stone Crusher Steve, a high-difficulty muscular arm wrestler. Head and shoulders view, extremely muscular build, scarred face with a tough and brutal expression, intimidating presence. He is wearing heavy armor-like gym gear. The style should match the existing character portraits, featuring a clean, polished game-ready look with professional lighting and a transparent background.", "description": "Portrait of Stone Crusher Steve, a high-difficulty muscular opponent with a scarred face for the character profile.", "subtype": "character", "aspect_ratio": [1021, 1024], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_lightning_leo_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_lightning_leo_portrait_cfee6cd2-5968-49bb-946c-cabf114c8cc4.webp", "type": "image", "prompt": "Generate a circular portrait of Lightning Leo, an agile and fast-paced male arm wrestler. He has a lean but defined muscular build, a quick and sharp facial expression, and sleek high-tech athletic gear. Feature subtle electric yellow lightning effects or trails around his head and shoulders. Head and shoulders view, centered in a circular frame, clean professional game art style, transparent background, high resolution.", "description": "A high-difficulty agile opponent portrait for the arm wrestling match interface.", "subtype": "character", "aspect_ratio": [947, 962], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_titan_tom_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_titan_tom_portrait_3fd31f37-a919-4029-8119-0f4a7aa79f37.webp", "type": "image", "prompt": "Generate a professional game character portrait of Titan Tom, a legendary and massive arm wrestler. He has an extremely large, giant muscular build with a confident and dominant expression. He is wearing a gold championship belt draped over his shoulder. The style should be a high-quality digital illustration. Head and shoulders view, centered in a circular frame composition. High resolution, detailed textures, professional game-ready asset with a transparent background.", "description": "Portrait of Titan Tom, a legendary and massive arm wrestler opponent for the character selection or match interface.", "subtype": "character", "aspect_ratio": [1003, 1001], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_shadow_sara_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_shadow_sara_portrait_cc667fdd-5890-47ad-a0dd-bae3867e9fb9.webp", "type": "image", "prompt": "Generate a professional game asset portrait of Shadow Sara. She is a mysterious and cunning female arm wrestler with an athletic build. She has a shadowy aura surrounding her and wears dark tactical gear. Head and shoulders view, centered within a circular frame. Her expression is mysterious and calculating. Clean, polished digital art style consistent with a high-stakes sports game. Transparent background.", "description": "A circular portrait of Shadow Sara, a mysterious and cunning female arm wrestler for the match interface.", "subtype": "character", "aspect_ratio": [962, 1023], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_beast_bruno_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_beast_bruno_portrait_29f3d00c-46e5-4e58-8d23-1fb2ecce4ebf.webp", "type": "image", "prompt": "Generate a high-resolution, head-and-shoulders circular portrait of 'Beast Bruno', a primal and powerful arm wrestler. He has an extremely muscular build, a wild and savage facial expression with beast-like features, and long messy hair. He wears minimal rugged gym gear to show off his massive trapezius and shoulder muscles. The art style should be a polished, detailed game illustration matching the existing character portraits, featuring dramatic lighting to emphasize his intimidating presence. Front-facing view, transparent background.", "description": "A primal and savage high-difficulty opponent portrait for the arm wrestling match interface.", "subtype": "character", "aspect_ratio": [936, 946], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_swift_sophia_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_swift_sophia_portrait_7c5054e9-b80c-4df8-8946-38db6f3b96c0.webp", "type": "image", "prompt": "Generate a high-quality circular portrait of Swift Sophia, a nimble and fast-reacting female arm wrestler. She has a lean, athletic build and a quick, focused facial expression. She wears sleek, speed-focused athletic gear. Head and shoulders view, centered within a circular frame. The art style should match the existing character portraits: polished, detailed game art with a consistent lighting style suitable for a character profile. Transparent background outside the circular frame.", "description": "A circular character portrait of Swift Sophia, a fast-reacting hard-difficulty opponent.", "subtype": "character", "aspect_ratio": [893, 1009], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_king_kaiser_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_king_kaiser_portrait_7d40dc7e-528b-4aac-ba2a-14d89a45c351.webp", "type": "image", "prompt": "Generate a high-quality circular portrait of King Kaiser, the legendary ultimate arm wrestling champion. Head and shoulders view, male, extremely muscular build with a regal and supreme expression. He is wearing a small golden crown and royal-themed athletic attire. A subtle golden aura surrounds him. High resolution, polished game art style, consistent with a professional character select screen, transparent background.", "description": "Portrait of King Kaiser, the legendary ultimate arm wrestling champion with a regal and powerful presence.", "subtype": "character", "aspect_ratio": [932, 1000], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_venom_victor_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_venom_victor_portrait_5e5154be-7b63-4a01-9ede-0c1645569b1d.webp", "type": "image", "prompt": "Generate a circular portrait of Venom Victor, a sinister and dangerous male arm wrestler. He has a muscular build, a menacing expression, and a toxic green venomous aura emanating from him. He is wearing dark, tactical gym gear. Head and shoulders view, front-facing, clean polished game art style, high resolution, detailed, transparent background.", "description": "A sinister and dangerous extreme-difficulty arm wrestler portrait with a toxic aura.", "subtype": "character", "aspect_ratio": [958, 964], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_inferno_ivan_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_inferno_ivan_portrait_2f316678-8a3c-4793-9d3d-9e04aae4ae50.webp", "type": "image", "prompt": "Generate a circular head-and-shoulders portrait of a fierce and intimidating arm wrestler named Inferno Ivan. He has intense burning eyes, a scarred muscular face, and a menacing aggressive expression. The style should match the existing character portraits with clean lines and high-quality game-ready polish. Dark and aggressive aesthetic, transparent background, professional quality.", "description": "A fierce and intimidating character portrait of Inferno Ivan for the opponent selection screen.", "subtype": "character", "aspect_ratio": [1020, 1023], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_titan_rex_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_titan_rex_portrait_082e5ea4-e53e-4849-b6b2-2b48309aba78.webp", "type": "image", "prompt": "Generate a circular head-and-shoulders portrait of a massive, extremely muscular arm wrestler named Titan Rex. He has a primal, beast-like appearance with huge shoulders and a thick neck. His expression is intimidating, showing raw power and dominance. High-quality, clean game art style, transparent background, front-facing view. Match the artistic style of opponent_titan_tom_portrait and opponent_beast_bruno_portrait.", "description": "Circular head-and-shoulders portrait of Titan Rex, a massive and primal beast-like arm wrestler.", "subtype": "character", "aspect_ratio": [1013, 1021], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_shadow_assassin_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_shadow_assassin_portrait_4951baa4-16ad-4195-a4bc-bb4a40b17b87.webp", "type": "image", "prompt": "Generate a circular, head-and-shoulders portrait of a mysterious and deadly-looking arm wrestler, 'The Shadow Assassin'. The character has dark features, cold calculating eyes, and a sleek, dangerous appearance with a hint of menace. Art style is a polished, professional 2D game illustration consistent with a competitive sports/fighting game. High resolution, detailed facial features, transparent background around the circular frame.", "description": "A circular character portrait of the Shadow Assassin, a mysterious and deadly arm wrestling opponent.", "subtype": "character", "aspect_ratio": [904, 904], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_crimson_crusher_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_crimson_crusher_portrait_7b2c77d0-a196-40f8-a9e6-60bb16d8ebc8.webp", "type": "image", "prompt": "Generate a circular head-and-shoulders portrait of a brutal, battle-hardened male arm wrestler named Crimson Crusher. He has deep facial scars, intense glowing red eyes, and a shaved head. He wears a crimson-colored wrestling singlet. The lighting is dramatic with red highlights, emphasizing his extreme toughness and aggressive expression. The art style should match the muscular, stylized professional game art seen in the existing character portraits. Transparent background.", "description": "A circular head-and-shoulders portrait of Crimson Crusher, a brutal and scarred arm wrestler with a red-themed aggressive aesthetic.", "subtype": "character", "aspect_ratio": [1024, 1024], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_steel_sentinel_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_steel_sentinel_portrait_b9aae659-f9fb-4ee8-bd72-1270b641caaa.webp", "type": "image", "prompt": "Generate a circular head-and-shoulders portrait of a cold, metallic-looking arm wrestler named Steel Sentinel. He has an emotionless, robotic demeanor with extremely muscular and imposing features. Stoic and unbeatable expression. The skin has a subtle metallic sheen or cybernetic enhancements. Professional game character art style, high resolution, centered composition, transparent background.", "description": "A circular portrait of Steel Sentinel, a metallic and robotic-looking arm wrestler with an imposing physique.", "subtype": "character", "aspect_ratio": [950, 986], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_savage_storm_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_savage_storm_portrait_486a2d4f-1396-41cd-8d51-2df568323b6b.webp", "type": "image", "prompt": "Generate a circular head-and-shoulders portrait of 'Savage Storm', a wild and untamed arm wrestler. He has long, messy hair, a fierce and aggressive expression, and a primal aura. The character should look muscular and powerful, surrounded by subtle chaotic storm-like energy effects. The art style should be consistent with a clean, polished game character illustration, front-facing, on a transparent background.", "description": "A circular character portrait of Savage Storm, a wild and primal arm wrestler with chaotic energy.", "subtype": "character", "aspect_ratio": [958, 978], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_midnight_phantom_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_midnight_phantom_portrait_ad11bb0b-653b-4ed1-9e44-74a5c938d6c9.webp", "type": "image", "prompt": "Generate a high-quality, circular head-and-shoulders portrait of a sleek and handsome but dangerous arm wrestler known as Midnight Phantom. He has dark, mysterious features and an air of lethal sophistication. Elegant yet deadly appearance, sharp facial features, deep shadows, and a subtle cold gaze. Consistent with the professional arm wrestling game character style. Transparent background.", "description": "A circular head-and-shoulders portrait of Midnight Phantom, a sleek and sophisticated high-difficulty opponent.", "subtype": "character", "aspect_ratio": [899, 971], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_volcanic_fury_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_volcanic_fury_portrait_ce99b64b-e1df-47b3-83ee-44506d712e84.webp", "type": "image", "prompt": "Generate a high-quality circular head-and-shoulders character portrait of a volcanic-themed arm wrestler. The character has intense, fiery glowing eyes, an aggressive facial expression, and an extremely muscular build. Incorporate subtle volcanic elements like cooling lava cracks on skin or heat haze. The background should be simple and dark to emphasize the character. Front-facing view, matching the clean and polished artistic style of other opponent portraits in the game.", "description": "A circular head-and-shoulders portrait of Volcanic Fury, a fierce and muscular arm wrestler with a fiery, explosive theme.", "subtype": "character", "aspect_ratio": [987, 994], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_apex_predator_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_apex_predator_portrait_bc551025-4b97-4b95-8d2b-ecfe9c5eb0c2.webp", "type": "image", "prompt": "Generate a circular head-and-shoulders character portrait of a handsome but predatory male arm wrestler. He has sharp, chiseled features, a piercing hunter's gaze, and a lean, muscular build. The style is polished and athletic, conveying lethal grace and power. Set against a simple dark background, centered, high resolution, matching the professional art style of existing character portraits.", "description": "A circular head-and-shoulders portrait of the Apex Predator, a sharp-featured and athletic arm wrestler.", "subtype": "character", "aspect_ratio": [796, 981], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_god_of_war_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_god_of_war_portrait_c1ab9280-5b03-4aaf-ad4b-1d005c255620.webp", "type": "image", "prompt": "Generate a circular head-and-shoulders portrait of an ultimate, godlike arm wrestler. The character should have an extremely muscular build, a commanding presence, and a divine legendary appearance. Use a powerful aura with golden or celestial glowing effects to signify absolute dominance. Artistic style should match the existing character portraits: polished, detailed, and intense game art. Front-facing, epic lighting, high resolution, transparent background.", "description": "A godlike, legendary arm wrestler portrait representing the ultimate boss or divine opponent.", "subtype": "character", "aspect_ratio": [1013, 1016], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_rookie": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_rookie_02c2d233-0a1b-4e59-9593-dd87349ef1d7.webp", "type": "image", "prompt": "Generate a side view of a thin, lean male arm for a nervous beginner arm wrestler. The arm should have minimal muscle definition, a light skin tone, and appear noticeably weak and inexperienced compared to a professional athlete. Positioned for an arm wrestling match, oriented for the left side of the screen to face the player. Clean lines, game-ready asset, transparent background, high resolution.", "description": "A thin and weak arm asset for the beginner opponent Rookie Rudi.", "subtype": "object", "aspect_ratio": [607, 933], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_strong": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_strong_1bedea86-a6f6-471d-a17c-49de64057de7.webp", "type": "image", "prompt": "Generate a highly detailed, extremely muscular male arm for an arm-wrestling game. The arm should feature massive biceps, thick forearm muscles, and prominent, bulging veins. It has a tanned, weathered skin tone and an intimidating, powerful appearance. Side view perspective, oriented for the left side of the screen, positioned in a 90-degree arm-wrestling stance. Professional game asset, polished digital art style, transparent background.", "description": "A massive, muscular opponent arm for high-difficulty characters like Stone Crusher Steve or Titan Tom.", "subtype": "object", "aspect_ratio": [1001, 954], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_medium": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_medium_c5961f94-dfac-4a9c-8c9d-ac3e7c99f0f9.webp", "type": "image", "prompt": "Generate a side view of a moderately muscular human arm prepared for an arm wrestling match, oriented for the left side of the screen. The arm features good muscle definition in the biceps and forearms with a medium skin tone. It should look fit and athletic but less extreme than a heavyweight bodybuilder. High resolution, polished game art style, side-on perspective, transparent background.", "description": "A moderately muscular arm for intermediate level opponents, shown in side view for the arm wrestling match.", "subtype": "character", "aspect_ratio": [683, 774], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_extreme": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_extreme_23441982-6022-484d-9354-b59427c4e14e.webp", "type": "image", "prompt": "Generate a side view of an absolutely massive, godlike muscular right arm ready for an arm wrestling match. The arm should feature superhuman muscle definition, bulging biceps larger than a human head, and intense vascularity with thick veins. The skin should have a subtle golden and metallic sheen to suggest divine, supernatural power. Stylized game asset, high detail, professional digital art, set against a transparent background.", "description": "An enormous, godlike muscular arm for the ultimate boss opponents, featuring a divine golden sheen.", "subtype": "character", "aspect_ratio": [913, 999], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_rookie_rudi": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_rookie_rudi_58d53d7d-9689-4e6d-ace5-5627a266ff99.webp", "type": "image", "prompt": "Generate a side-view of a thin, scrawny male arm positioned for an arm wrestling match. The arm should look weak and inexperienced, with pale skin, minimal muscle definition, and a slightly trembling or nervous posture. High-quality game asset style, clean lines, side-scrolling perspective, transparent background.", "description": "A thin, scrawny arm for the beginner opponent Rookie Rudi, showing low strength and nervousness.", "subtype": "object", "aspect_ratio": [719, 1075], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_steady_sam": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_steady_sam_037f22eb-fd5e-43fe-a8b3-e37deeb60ec7.webp", "type": "image", "prompt": "Generate a moderately muscular right arm for an intermediate arm wrestler, side view, ready for match positioning. The arm has balanced muscle definition, a healthy tan skin tone, and a calm, professional appearance. Consistent with a 3/4 perspective to fit the existing arm wrestling table. High resolution, detailed skin texture and subtle muscle veins, clean game-ready asset on a transparent background.", "description": "A moderately muscular, professional arm for Steady Sam for the match view.", "subtype": "character", "aspect_ratio": [682, 772], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_rapid_rita": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_rapid_rita_8481b932-9fb8-42ea-899f-a80a0ff1babf.webp", "type": "image", "prompt": "Generate a side-view illustration of a lean, highly athletic female arm prepared for an arm wrestling match. The arm should feature well-defined muscles and a toned, athletic appearance suggesting speed and agility. Consistent with the game's muscular art style, ensure the limb is oriented for the left side of the screen to face the player. Clean, polished game asset with a transparent background.", "description": "A lean and athletic female arm for the advanced opponent Rapid Rita, shown from a side perspective.", "subtype": "object", "aspect_ratio": [667, 621], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_iron_fist_ivan": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_iron_fist_ivan_cb1d7820-66c8-40ba-aa53-92208ffd594f.webp", "type": "image", "prompt": "Generate a high-resolution, side-view illustration of a strong, muscular male arm for an arm wrestling match. The arm should belong to Iron Fist Ivan, an intimidating Russian wrestler. It features prominent, bulging muscles, a tan or olive skin tone, and a powerful, thick-boned structure. The arm is oriented for the left side of the screen, facing right towards the player's arm. Clean, polished game-ready art style with sharp details and professional shading. Transparent background.", "description": "A powerful, muscular arm for the Russian opponent Iron Fist Ivan, designed for the match interface.", "subtype": "character", "aspect_ratio": [717, 818], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_thunder_tina": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_thunder_tina_5304304f-68cb-4d1b-b186-318816c63b1d.webp", "type": "image", "prompt": "Generate a powerful and muscular female arm for the character Thunder Tina, side view, right-facing and ready for arm wrestling. The arm should have strong, defined muscles and athletic female physiology. Incorporate subtle glowing blue lightning motifs or electric energy trails around the forearm. Style should match the existing game art: clean, polished 2D game asset with professional coloring. Transparent background.", "description": "A powerful, muscular female arm for Thunder Tina with lightning motifs for the wrestling match.", "subtype": "character", "aspect_ratio": [907, 860], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_stone_crusher_steve": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_stone_crusher_steve_2e5509c4-77ad-44bd-bf25-f0cd0a5705e4.webp", "type": "image", "prompt": "Generate a massive, heavily muscled arm for a high-difficulty arm wrestler named Stone Crusher Steve. The arm should feature huge, bulging muscles, rough and scarred skin texture, and a brutal, intimidating appearance. Show the arm from a side view perspective, oriented for the left side of the screen to face the player. Style should match the exaggerated, powerful aesthetic of 'player_arm'. High resolution, detailed skin textures, professional game asset, transparent background.", "description": "A massive, scarred, and heavily muscled arm for the high-difficulty opponent Stone Crusher Steve.", "subtype": "character", "aspect_ratio": [862, 881], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_lightning_leo": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_lightning_leo_3a5454a4-0603-43f1-a486-6c9bec96c8f7.webp", "type": "image", "prompt": "Modify the arm in image 1 to add prominent lightning effects and electrical energy. Add glowing electric arcs, sharp lightning bolts, and a vibrant blue electrical aura surrounding the lean, agile muscular arm. Maintain the same side-view wrestling pose and muscular structure. The background must be transparent.", "description": "An edited version of Lightning Leo's arm with vibrant electrical energy and lightning bolts for the match screen.", "subtype": "character", "aspect_ratio": [832, 1082], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_titan_tom": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_titan_tom_5508fc4f-9e48-4349-83f7-6784b8d14f2b.webp", "type": "image", "prompt": "Generate a legendary, massive, and extremely muscular male arm for the character Titan Tom. The arm should be enormous with Herculean proportions, featuring bulging biceps and thick forearms to represent a titan-like strength. Side-view perspective, oriented for the left side of the screen to face the player. Polished game art style consistent with a high-stakes arm wrestling game. High resolution, detailed skin texture with visible power, on a transparent background.", "description": "A legendary, massive arm for Titan Tom, designed for the arm wrestling match screen.", "subtype": "character", "aspect_ratio": [1015, 1023], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_shadow_sara": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_shadow_sara_f30f1a81-2d7f-4b68-a433-865b13604f5f.webp", "type": "image", "prompt": "Generate a side view of a strong, muscular female arm for an arm wrestling match. The character is Shadow Sara, a mysterious and cunning wrestler. The arm should have defined musculature, female physiology, and a dark, mysterious aesthetic\u2014perhaps with subtle shadowy wisps or dark athletic gear. Positioned for the left side of the screen to face the player. High resolution, detailed textures, consistent with the stylized gym art style of the game, transparent background.", "description": "A mysterious and strong female arm for the opponent Shadow Sara, viewed from the side.", "subtype": "character", "aspect_ratio": [966, 767], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_beast_bruno": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_beast_bruno_d6f938a3-9261-4f0b-8216-5d56540c3eb5.webp", "type": "image", "prompt": "Generate a side view of a massive, primal arm for a beast-like arm wrestler. The arm is extremely muscular with bulging veins and a wild, rugged skin texture, potentially with coarse hair or subtle beast-like markings. The hand is clenched in a powerful grip ready for arm wrestling. Match the side-view perspective and art style of the existing arm wrestling game assets like 'opponent_arm_stone_crusher_steve'. High resolution, detailed muscle anatomy, transparent background.", "description": "A primal and massive muscular arm for the high-difficulty opponent Beast Bruno.", "subtype": "object", "aspect_ratio": [928, 954], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_swift_sophia": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_swift_sophia_c5838040-a832-44f1-a898-ec70e28bf0d6.webp", "type": "image", "prompt": "Generate a side-view illustration of a nimble, athletic female arm for the character Swift Sophia. The arm should be medium-sized with lean, well-defined muscles and a swift, responsive appearance. The physiology is athletic female, oriented for the left side of an arm wrestling table. Clean, polished game art style matching the existing 'opponent_arm' assets. Transparent background, high resolution.", "description": "A nimble, athletic female arm for the opponent Swift Sophia, shown in side view for the match interface.", "subtype": "object", "aspect_ratio": [922, 860], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_king_kaiser": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_king_kaiser_3571dd62-6e73-4937-a41c-51c96270a5c8.webp", "type": "image", "prompt": "Generate a side-view illustration of a legendary arm wrestler's arm for King Kaiser. The arm is extremely large with enormous, bulging muscles and a regal, powerful presence. The skin has a subtle golden sheen or royal quality, perhaps with a decorative gold wristband or royal motif. High-quality game asset style, detailed muscle definition, professional digital art, set against a transparent background, side view oriented for the left side of the screen.", "description": "A regal and enormously muscular arm for the ultimate champion King Kaiser, featuring royal gold accents.", "subtype": "character", "aspect_ratio": [959, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_venom_victor": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_venom_victor_3f8f9d56-beb7-444a-a85d-c68cd1b34821.webp", "type": "image", "prompt": "Remove the character head and face from the image. Transform the asset to show ONLY the sinister, muscular arm of Venom Victor. The arm should have a toxic aesthetic with green-veined textures and a dark aura, posed in a side-wrestling position for an arm wrestling match. Keep the arm isolated on a transparent background, ensuring no other body parts or character elements are visible. Match the style and muscularity of image 1.", "description": "A sinister, muscular arm with toxic aesthetic for Venom Victor, isolated for the wrestling match view.", "subtype": "object", "aspect_ratio": [942, 885], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_inferno_ivan": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_inferno_ivan_0d734416-2697-45f8-a60c-0664444ea22f.webp", "type": "image", "prompt": "A side view illustration of a massive, extremely muscular arm for an arm wrestling match. The arm belongs to 'Inferno Ivan', featuring fiery red and orange skin tones with glowing lava-like veins. Wisps of stylized fire and embers emanate from the bicep and forearm. The hand is clenched, ready for a match. High-quality game art, clean lines, polished shading, transparent background, matching the perspective of a side-scrolling arm wrestling game.", "description": "A massive, fiery muscular arm for the opponent Inferno Ivan in a side-wrestling pose.", "subtype": "character", "aspect_ratio": [1023, 1024], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_titan_rex": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_titan_rex_258638dc-2086-4675-93da-dd9824d2ff11.webp", "type": "image", "prompt": "Generate a massive, primal beast-like arm for an arm wrestling game. The arm is extremely large with enormous, bulging muscles and a primal reptilian appearance featuring scaly skin and prehistoric textures. Side view, right-facing orientation, positioned and angled for an arm wrestling match. Professional game asset style, detailed anatomy, transparent background, high resolution, intimidating and powerful aesthetic.", "description": "A massive, prehistoric reptilian arm for the beast-like opponent Titan Rex.", "subtype": "character", "aspect_ratio": [966, 953], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_shadow_assassin": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_shadow_assassin_2e7e4d9b-7b36-4336-8129-4200a236d691.webp", "type": "image", "prompt": "Generate a high-resolution, detailed side-view of a large, muscular arm for a 'Shadow Assassin' character. The arm should be prepared for an arm wrestling match, oriented for the left side of the screen. Style: game-ready asset with a dark, mysterious aesthetic, featuring shadowy energy wisps or dark matte-black wraps. The skin should be pale or covered in subtle dark tattoos, appearing lethal and stealthy. Match the perspective and scale of 'opponent_arm_titan_tom' but with a more sinister, assassin-themed visual treatment. Transparent background.", "description": "A dark, muscular arm for the Shadow Assassin opponent, shown from a side view.", "subtype": "object", "aspect_ratio": [989, 978], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_crimson_crusher": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_crimson_crusher_5c0ac7db-42c1-4f37-b994-6ffed6cb61e1.webp", "type": "image", "prompt": "Generate a high-detail, side-view illustration of a massive, muscular arm for an arm-wrestling match. The arm should have a brutal and aggressive aesthetic, featuring crimson-red skin tones and visible battle scars. The muscles should be extremely large and defined, showing intense vascularity. The hand is gripped and positioned for a match, oriented for the left side of the screen. Clean game-ready asset with a transparent background, matching the art style of the other opponent arms.", "description": "A brutal, scarred, and muscular crimson-themed arm for the opponent Crimson Crusher.", "subtype": "character", "aspect_ratio": [926, 896], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_steel_sentinel": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_steel_sentinel_4c7ef781-e282-4411-8cc3-c496ff63091f.webp", "type": "image", "prompt": "Generate a massive, robotic arm for a side-view arm wrestling match. The arm should feature enormous mechanical muscle groups made of brushed steel and metallic silver plating. Include visible hydraulic pistons, glowing blue light-seams between metal plates, and a reinforced robotic hand. The orientation must be side view, facing the player's arm. Clean, polished game asset style, high resolution, transparent background.", "description": "A massive, robotic silver arm for the Steel Sentinel opponent in side view.", "subtype": "character", "aspect_ratio": [1344, 853], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_savage_storm": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_savage_storm_ff062949-25bb-4c2d-83d2-359a15c0f734.webp", "type": "image", "prompt": "Change the image to show only a single massive, muscular arm. Remove any second arm or paired arm elements. The arm should be chaotic blue and gray with a wild, primal energy aesthetic, positioned in a side-wrestling pose suitable for an arm-wrestling match. Maintain the style and color palette of image 1 but isolate it to one arm on a transparent background.", "description": "A single massive, chaotic blue and gray muscular arm for the Savage Storm opponent.", "subtype": "character", "aspect_ratio": [1006, 1020], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_midnight_phantom": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_midnight_phantom_912013f0-a7e7-4f1b-982d-279a652d593e.webp", "type": "image", "prompt": "Generate a side view of a large, muscular arm for an arm wrestling match. The arm belongs to a sophisticated character, featuring dark midnight blue and black skin tones with a sleek, polished appearance. The musculature is powerful yet elegant, with subtle highlights that suggest a high-end, mysterious aesthetic. Side perspective, right-facing, ready for competition, transparent background, high resolution, detailed professional game asset.", "description": "A sleek, muscular midnight-themed arm for the high-difficulty opponent Midnight Phantom.", "subtype": "object", "aspect_ratio": [911, 740], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_volcanic_fury": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_volcanic_fury_2aa3b43e-ceb4-4cda-9297-5218c71c0f0a.webp", "type": "image", "prompt": "Generate a side-view illustration of a massive, extremely muscular right arm for an arm wrestling match. The arm belongs to Volcanic Fury and features a volcanic theme: skin like cooling black basalt with glowing red and orange lava cracks between enormous muscle bellies. The hand is clenched, ready to grip. Stylized game art, professional quality, fiery embers floating around the arm, transparent background, front-facing from a side perspective to match the game's arm wrestling table.", "description": "A massive, lava-infused muscular arm for the Volcanic Fury opponent, shown in side-view for arm wrestling.", "subtype": "character", "aspect_ratio": [881, 881], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_apex_predator": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_apex_predator_daa4b18b-5886-470c-abeb-508e697559d7.webp", "type": "image", "prompt": "Generate a side-view illustration of a very large, muscular arm for an arm wrestling match. The arm belongs to the 'Apex Predator', featuring sharp muscle definition, a lean but powerful athletic build, and a predatory aesthetic. The skin should look tough and conditioned. The arm is oriented for the left side of the screen to face the player. High resolution, detailed anatomy, polished game asset style, transparent background.", "description": "A sharp, athletic and predatory muscular arm for the Apex Predator opponent.", "subtype": "character", "aspect_ratio": [825, 848], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "opponent_arm_god_of_war": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/opponent_arm_god_of_war_5ca144e3-f3d3-4af4-b8bc-96a43c3d971c.webp", "type": "image", "prompt": "Generate a legendary, godlike muscular arm for a divine arm wrestler. The arm is extremely large with enormous, well-defined muscles and a divine golden and white color palette. It features ethereal energy effects and a regal, legendary quality. Side view illustration, oriented for the left side of the screen, ready for arm wrestling. High resolution, polished game-ready asset, transparent background, matching the style of existing opponent arms.", "description": "An enormous, divine-themed muscular arm for the ultimate godlike boss opponent.", "subtype": "character", "aspect_ratio": [909, 818], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "hud_coin": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/hud_coin_bfe0941c-b40f-48d3-879f-ca3144db909b.webp", "type": "image", "prompt": "Generate a professional, polished 3D golden coin icon for a game HUD. The coin is circular with a bright gold metallic finish, featuring a distinct rim and a subtle emblem in the center. Use clean, vibrant arcade-style lighting with sharp highlights and soft shadows to create depth. Transparent background, high resolution, detailed game asset.", "description": "A shiny golden coin icon for the game's heads-up display and currency counter.", "subtype": "ui", "aspect_ratio": [820, 823], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "arm_wrestling_reference": {"url": "https://dzmv1mxivz48k.cloudfront.net/images/Google_105913482011233386585/1785898362841_01KZ7XCSYSQP4Z7XQF2TEZWVHJ.Screenshot_2026_0805_095209.png", "type": "image", "prompt": null, "description": "Reference photo showing realistic arm wrestling grip with hands locked together - used as visual reference for proper hand positioning and grip style in the game", "subtype": null, "aspect_ratio": [340, 357], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}}, "game_code": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Panco Raja</title>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <link href=\"https://fonts.googleapis.com/css2?family=Fredoka:wght@400;600;700&family=Inter:wght@400;600&display=swap\" rel=\"stylesheet\">\n    <style>\n        /* CSS Reset */\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        /* Custom Properties */\n        :root {\n            /* Animation Timings */\n            --transition-fast: 150ms;\n            --transition-normal: 300ms;\n            --transition-slow: 500ms;\n\n            /* Easing Functions */\n            --ease-out: cubic-bezier(0.0, 0, 0.2, 1);\n            --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n            --ease-bounce: cubic-bezier(0.68, -0.6, 0.32, 1.6);\n\n            /* Colors */\n            --color-primary: #FF4500;\n            --color-secondary: #FFA500;\n            --color-success: #32CD32;\n            --color-danger: #DC143C;\n            --color-gold: #FFD700;\n            --color-bg: #1a1a2e;\n            --color-ui: rgba(26, 26, 46, 0.8);\n            --color-text: #FFFFFF;\n            --color-text-dim: rgba(255, 255, 255, 0.7);\n        }\n\n        body, html {\n            margin: 0;\n            padding: 0;\n            width: 100%;\n            height: 100%;\n            overflow: hidden;\n            touch-action: none;\n            user-select: none;\n            -webkit-user-select: none;\n            font-family: 'Fredoka', sans-serif;\n            background-color: #000;\n        }\n\n        #game-world {\n            position: relative;\n            width: 100%;\n            height: 100%;\n            overflow: hidden;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n\n        #game-canvas {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            image-rendering: pixelated;\n        }\n\n        /* Screen Transitions */\n        .screen {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            display: none;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            padding: 40px;\n            opacity: 0;\n            transform: scale(0.95);\n            transition: opacity var(--transition-normal) var(--ease-out), transform var(--transition-normal) var(--ease-out);\n            z-index: 5;\n            pointer-events: none;\n        }\n\n        .screen.active {\n            display: flex;\n            opacity: 1;\n            transform: scale(1);\n            pointer-events: auto;\n        }\n\n        /* HUD Components */\n        .hud-container {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            padding: 20px;\n            pointer-events: none;\n            z-index: 20;\n            display: flex;\n            justify-content: space-between;\n            align-items: flex-start;\n        }\n\n        .coin-hud {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            background: rgba(0, 0, 0, 0.6);\n            backdrop-filter: blur(10px);\n            padding: 15px 25px;\n            border-radius: 20px;\n            border: 2px solid var(--color-gold);\n            box-shadow: 0 0 20px rgba(255, 215, 0, 0.3);\n            pointer-events: auto;\n            animation: slide-down 0.5s var(--ease-out);\n        }\n\n        .coin-hud img {\n            width: 60px;\n            height: 60px;\n            margin-bottom: 5px;\n            filter: drop-shadow(0 0 10px var(--color-gold));\n        }\n\n        .coin-hud span {\n            font-size: 32px;\n            font-weight: 700;\n            color: var(--color-gold);\n            text-shadow: 0 2px 4px rgba(0,0,0,0.5);\n        }\n\n        @keyframes slide-down {\n            from { transform: translateY(-100%); opacity: 0; }\n            to { transform: translateY(0); opacity: 1; }\n        }\n\n        /* Buttons Version 2.0 */\n        .btn-v2 {\n            position: relative;\n            font-family: 'Fredoka', sans-serif;\n            font-size: 32px;\n            font-weight: 700;\n            color: white;\n            text-transform: uppercase;\n            padding: 25px 60px;\n            background: linear-gradient(135deg, #ff4d00 0%, #ff8c00 100%);\n            border: none;\n            border-radius: 25px;\n            box-shadow: 0 10px 0 #b33600, 0 20px 30px rgba(0,0,0,0.3);\n            cursor: pointer;\n            transition: all 0.1s;\n            margin: 15px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            min-width: 280px;\n        }\n\n        .btn-v2:active {\n            transform: translateY(6px);\n            box-shadow: 0 4px 0 #b33600, 0 10px 15px rgba(0,0,0,0.3);\n        }\n\n        .btn-v2.secondary {\n            background: linear-gradient(135deg, #4a00e0 0%, #8e2de2 100%);\n            box-shadow: 0 10px 0 #3a00b3, 0 20px 30px rgba(0,0,0,0.3);\n        }\n\n        .btn-v2.secondary:active {\n            box-shadow: 0 4px 0 #3a00b3, 0 10px 15px rgba(0,0,0,0.3);\n        }\n\n        /* Match UI Revamp */\n        .match-overlay {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            pointer-events: none;\n            z-index: 10;\n        }\n\n        .match-header {\n            position: absolute;\n            top: 20px;\n            left: 0;\n            width: 100%;\n            display: flex;\n            justify-content: space-around;\n            align-items: center;\n            padding: 0 20px;\n        }\n\n        .profile-mini {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            width: 120px;\n        }\n\n        .profile-mini img {\n            width: 80px;\n            height: 80px;\n            border-radius: 50%;\n            border: 4px solid #fff;\n            box-shadow: 0 4px 10px rgba(0,0,0,0.3);\n            background: #222;\n        }\n\n        .profile-mini .name {\n            font-size: 18px;\n            font-weight: 700;\n            color: #fff;\n            text-transform: uppercase;\n            margin-top: 5px;\n            text-shadow: 0 2px 4px rgba(0,0,0,0.8);\n            text-align: center;\n            white-space: nowrap;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            width: 100%;\n        }\n\n        .stamina-container {\n            position: absolute;\n            left: 50%;\n            transform: translateX(-50%);\n            width: 80%;\n            height: 40px;\n            background: rgba(0,0,0,0.5);\n            border-radius: 20px;\n            border: 4px solid #fff;\n            overflow: hidden;\n            box-shadow: 0 0 15px rgba(0,0,0,0.5);\n        }\n\n        .stamina-container.player { bottom: 420px; }\n        .stamina-container.opponent { top: 200px; }\n\n        .stamina-bar-fill {\n            height: 100%;\n            width: 100%;\n            background: linear-gradient(90deg, #00ff00, #aaffaa);\n            transition: width 0.1s ease-out;\n            box-shadow: inset 0 0 10px rgba(255,255,255,0.5);\n        }\n\n        .stamina-bar-fill.critical {\n            background: linear-gradient(90deg, #ff0000, #ff5555);\n            animation: flash 0.3s infinite;\n        }\n\n        @keyframes flash {\n            0%, 100% { opacity: 1; }\n            50% { opacity: 0.5; }\n        }\n\n        /* Tap Area v2 */\n        .tap-zone {\n            position: absolute;\n            bottom: 30px;\n            left: 50%;\n            transform: translateX(-50%);\n            width: 300px;\n            height: 300px;\n            background: radial-gradient(circle, rgba(255,69,0,0.4) 0%, rgba(255,69,0,0) 70%);\n            border-radius: 50%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            pointer-events: auto;\n            cursor: pointer;\n            border: 4px dashed rgba(255,255,255,0.3);\n            animation: pulse-ring 2s infinite;\n        }\n\n        @keyframes pulse-ring {\n            0% { transform: translateX(-50%) scale(0.9); opacity: 0.5; }\n            50% { transform: translateX(-50%) scale(1.1); opacity: 1; }\n            100% { transform: translateX(-50%) scale(0.9); opacity: 0.5; }\n        }\n\n        .tap-label {\n            font-size: 60px;\n            color: #fff;\n            font-weight: 800;\n            text-shadow: 0 0 20px rgba(0,0,0,0.8);\n            pointer-events: none;\n        }\n\n        /* Item Bar v2 - Split and Smaller */\n        .item-bar {\n            position: absolute;\n            display: flex;\n            flex-direction: column;\n            gap: 8px;\n            padding: 8px;\n            background: rgba(0,0,0,0.5);\n            backdrop-filter: blur(10px);\n            border-radius: 12px;\n            border: 1px solid rgba(255,255,255,0.2);\n            pointer-events: auto;\n            z-index: 15;\n        }\n\n        .item-bar.left-1 {\n            left: 15px;\n            bottom: 60px;\n        }\n\n        .item-bar.left-2 {\n            left: 75px;\n            bottom: 60px;\n        }\n\n        .item-bar.right-1 {\n            right: 15px;\n            bottom: 60px;\n        }\n\n        .item-btn {\n            width: 52px;\n            height: 52px;\n            background: rgba(255,255,255,0.1);\n            border-radius: 10px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            cursor: pointer;\n            position: relative;\n            transition: transform 0.1s;\n            border: 2px solid rgba(255,255,255,0.2);\n            flex-shrink: 0;\n        }\n\n        .item-btn:active { transform: scale(0.9); }\n        .item-btn.disabled { opacity: 0.3; cursor: not-allowed; }\n\n        .item-btn img { width: 36px; height: 36px; }\n        .item-btn .badge {\n            position: absolute;\n            top: -6px;\n            right: -6px;\n            background: var(--color-primary);\n            color: #fff;\n            padding: 1px 6px;\n            border-radius: 8px;\n            font-size: 12px;\n            font-weight: 700;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.3);\n        }\n\n        /* Version Label */\n        .version-tag {\n            position: absolute;\n            bottom: 10px;\n            right: 15px;\n            color: rgba(255,255,255,0.3);\n            font-size: 14px;\n            pointer-events: none;\n        }\n\n        /* Shop Grid */\n        .shop-grid {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: 15px;\n            width: 100%;\n            max-height: 60vh;\n            overflow-y: auto;\n            padding-right: 10px;\n        }\n\n        .shop-card {\n            display: flex;\n            align-items: center;\n            background: rgba(255,255,255,0.05);\n            border-radius: 20px;\n            padding: 15px;\n            border: 2px solid rgba(255,255,255,0.1);\n            transition: all 0.2s;\n        }\n\n        .shop-card.owned {\n            border-color: var(--color-success);\n            background: rgba(50, 205, 50, 0.05);\n        }\n\n        .shop-card img { width: 80px; height: 80px; margin-right: 20px; }\n        .shop-card-info { flex: 1; }\n        .shop-card-title { font-size: 24px; font-weight: 700; margin-bottom: 5px; color: #fff; }\n        .shop-card-desc { font-size: 16px; color: #fff; margin-bottom: 10px; }\n        .shop-card-price { font-size: 20px; color: #fff; font-weight: 700; }\n\n        /* Opponent Selection */\n        .opponent-list {\n            display: flex;\n            flex-direction: column;\n            gap: var(--space-md);\n            width: 100%;\n            max-width: 600px;\n            max-height: 70%;\n            overflow-y: auto;\n            padding: var(--space-sm);\n        }\n\n        .opponent-card {\n            background: rgba(255,255,255,0.1);\n            border-radius: 16px;\n            padding: var(--space-md);\n            display: flex;\n            align-items: center;\n            gap: var(--space-md);\n            cursor: pointer;\n            transition: transform var(--transition-fast) var(--ease-out);\n            border: 3px solid transparent;\n        }\n\n        .opponent-card:active {\n            transform: scale(0.98);\n        }\n\n        .opponent-card.locked {\n            opacity: 0.5;\n            cursor: not-allowed;\n        }\n\n        .opponent-card.selected {\n            border-color: var(--color-gold);\n        }\n\n        .opponent-card-portrait {\n            width: 100px;\n            height: 100px;\n            border-radius: 50%;\n            border: 3px solid var(--color-gold);\n        }\n\n        .opponent-card-info {\n            flex: 1;\n        }\n\n        .opponent-card-name {\n            font-family: 'Fredoka', sans-serif;\n            font-size: 28px;\n            font-weight: 600;\n            color: var(--color-text);\n            margin-bottom: var(--space-xs);\n        }\n\n        .opponent-card-reward {\n            font-size: 20px;\n            color: var(--color-gold);\n            font-weight: 600;\n        }\n\n        #main-menu .title {\n            font-size: 80px;\n            line-height: 0.9;\n            margin-bottom: 20px;\n            text-align: center;\n            color: var(--color-gold);\n            text-shadow: 0 0 20px rgba(255, 215, 0, 0.4), 0 5px 15px rgba(0,0,0,0.5);\n            font-weight: 900;\n            letter-spacing: -2px;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n        }\n\n        #main-menu {\n            justify-content: center;\n            padding-bottom: 100px;\n        }\n\n        .result-title {\n            font-family: 'Fredoka', sans-serif;\n            font-size: 64px;\n            font-weight: 700;\n            margin-bottom: var(--space-lg);\n            text-shadow: 4px 4px 0px rgba(0,0,0,0.5);\n        }\n\n        .result-title.victory {\n            color: var(--color-gold);\n        }\n\n        .result-title.defeat {\n            color: var(--color-danger);\n        }\n\n        .result-coins {\n            font-family: 'Fredoka', sans-serif;\n            font-size: 40px;\n            font-weight: 600;\n            color: var(--color-gold);\n            margin-bottom: var(--space-xl);\n        }\n\n        /* Animations */\n        @keyframes intro-zoom {\n            0% { transform: scale(0.5); opacity: 0; filter: blur(10px); }\n            20% { transform: scale(1.1); opacity: 1; filter: blur(0px); }\n            80% { transform: scale(1); opacity: 1; }\n            100% { transform: scale(1.5); opacity: 0; }\n        }\n\n        @keyframes fade-in-up {\n            from { transform: translateY(30px); opacity: 0; }\n            to { transform: translateY(0); opacity: 1; }\n        }\n\n        @keyframes championship-glow {\n            0%, 100% { text-shadow: 0 0 20px rgba(255, 215, 0, 0.4); }\n            50% { text-shadow: 0 0 40px rgba(255, 215, 0, 0.8), 0 0 60px rgba(255, 215, 0, 0.4); }\n        }\n\n        @keyframes pulse {\n            0%, 100% { opacity: 1; }\n            50% { opacity: 0.6; }\n        }\n\n        @keyframes tap-ripple {\n            0% {\n                transform: scale(0);\n                opacity: 1;\n            }\n            100% {\n                transform: scale(2);\n                opacity: 0;\n            }\n        }\n\n        .tap-ripple {\n            position: absolute;\n            width: 100px;\n            height: 100px;\n            border-radius: 50%;\n            background: radial-gradient(circle, rgba(255,255,255,0.8) 0%, rgba(255,255,255,0) 70%);\n            pointer-events: none;\n            animation: tap-ripple 0.5s var(--ease-out);\n        }\n\n        /* Loading Screen */\n        .loading-screen {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: #111;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            z-index: 1000;\n        }\n\n        .loading-logo {\n            font-size: 80px;\n            font-weight: 900;\n            color: var(--color-gold);\n            text-shadow: 0 0 30px rgba(255, 215, 0, 0.5);\n            margin-bottom: 20px;\n            animation: pulse-glow 2s infinite;\n        }\n\n        @keyframes pulse-glow {\n            0%, 100% { transform: scale(1); opacity: 0.8; }\n            50% { transform: scale(1.05); opacity: 1; }\n        }\n\n        .progress-bar {\n            width: 300px;\n            height: 10px;\n            background: rgba(255,255,255,0.1);\n            border-radius: 5px;\n            overflow: hidden;\n            margin-top: 20px;\n        }\n\n        .progress-fill {\n            height: 100%;\n            width: 0%;\n            background: var(--color-gold);\n            transition: width 0.3s;\n        }\n\n    </style>\n</head>\n<body>\n    <div id=\"game-world\">\n        <canvas id=\"game-canvas\"></canvas>\n        \n        <div id=\"loading-screen\" class=\"loading-screen\">\n            <div class=\"loading-logo\">ARM WRESTLING KING</div>\n            <div class=\"progress-bar\"><div id=\"progress-fill\" class=\"progress-fill\"></div></div>\n            <div style=\"color: #fff; margin-top: 10px; opacity: 0.5;\">VERSION 2.0</div>\n        </div>\n\n        <!-- Global HUD -->\n        <div class=\"hud-container\" id=\"global-hud\" style=\"display: none;\">\n            <div class=\"coin-hud\">\n                <img id=\"hud-coin-img\" alt=\"Coins\">\n                <span id=\"hud-coin-val\">0</span>\n            </div>\n        </div>\n\n        <div id=\"splash-screen\" class=\"screen\" style=\"background: radial-gradient(circle, #2c3e50 0%, #000 100%); z-index: 50;\">\n            <div class=\"title\" style=\"font-size: 90px; color: var(--color-gold); text-shadow: 0 0 30px rgba(255, 215, 0, 0.6); animation: intro-zoom 5s forwards; text-align: center; font-weight: 900; line-height: 0.9;\">ARM WRESTLING<br>KING</div>\n            <div style=\"color: #fff; font-size: 32px; margin-top: 20px; animation: fade-in-up 2s 1s both; font-weight: 700; letter-spacing: 4px; text-transform: uppercase;\">World Championship</div>\n        </div>\n\n        <div id=\"main-menu\" class=\"screen\">\n            <div class=\"title\" style=\"font-size: 80px; line-height: 0.9; margin-bottom: 10px; text-align: center; color: var(--color-gold); text-shadow: 0 0 20px rgba(255, 215, 0, 0.4);\">ARM WRESTLING<br>KING</div>\n            <div style=\"color: var(--color-gold); font-size: 24px; font-weight: 700; margin-bottom: 40px; text-transform: uppercase; letter-spacing: 5px;\">Pro League 2.0</div>\n            <button class=\"btn-v2\" id=\"btn-fight\">BATTLE START</button>\n            <button class=\"btn-v2 secondary\" id=\"btn-shop\">EQUIPMENT & SHOP</button>\n            <div class=\"version-tag\">ASTROCADE V2.0.4</div>\n        </div>\n\n        <div id=\"opponent-select\" class=\"screen\">\n            <div class=\"subtitle\">CHOOSE YOUR CHALLENGER</div>\n            <div class=\"opponent-list\" id=\"opponent-list\" style=\"max-height: 70vh; overflow-y: auto; width: 100%; padding: 20px;\"></div>\n            <button class=\"btn-v2 secondary\" id=\"btn-back-from-select\" style=\"min-width: 200px; padding: 15px;\">BACK</button>\n        </div>\n\n        <div id=\"match-screen\" class=\"screen\">\n            <div class=\"match-overlay\">\n                <!-- Opponent & Player Mini Profiles -->\n                <div class=\"match-header\">\n                    <div class=\"profile-mini\">\n                        <img id=\"m-opp-portrait\" alt=\"Opponent\">\n                        <div id=\"m-opp-name\" class=\"name\"></div>\n                    </div>\n                    <div class=\"profile-mini\">\n                        <img id=\"m-pla-portrait\" alt=\"Player\">\n                        <div class=\"name\">YOU</div>\n                    </div>\n                </div>\n\n                <!-- Stamina Bars -->\n                <div class=\"stamina-container opponent\">\n                    <div id=\"m-opp-stamina\" class=\"stamina-bar-fill\"></div>\n                </div>\n                <div class=\"stamina-container player\">\n                    <div id=\"m-pla-stamina\" class=\"stamina-bar-fill\"></div>\n                </div>\n\n                <!-- Item Bars split to left and right -->\n                <div class=\"item-bar left-1\" id=\"m-item-bar-left-1\"></div>\n                <div class=\"item-bar left-2\" id=\"m-item-bar-left-2\"></div>\n                <div class=\"item-bar right-1\" id=\"m-item-bar-right-1\"></div>\n\n                <!-- Tap Zone -->\n                <div class=\"tap-zone\" id=\"m-tap-zone\">\n                    <div class=\"tap-label\">TAP!</div>\n                </div>\n            </div>\n        </div>\n\n        <div id=\"shop-screen\" class=\"screen\">\n            <div class=\"subtitle\">TRAINING & GEAR</div>\n            <div class=\"shop-tabs\" style=\"display: flex; gap: 10px; margin-bottom: 20px; width: 100%;\">\n                <button class=\"btn-v2 secondary active-tab\" data-tab=\"upgrades\" style=\"flex: 1; padding: 15px; font-size: 18px; min-width: 0;\">UPGRADES</button>\n                <button class=\"btn-v2 secondary\" data-tab=\"equipment\" style=\"flex: 1; padding: 15px; font-size: 18px; min-width: 0;\">GEAR</button>\n                <button class=\"btn-v2 secondary\" data-tab=\"skills\" style=\"flex: 1; padding: 15px; font-size: 18px; min-width: 0;\">SKILLS</button>\n            </div>\n            <div class=\"shop-grid\" id=\"m-shop-grid\"></div>\n            <button class=\"btn-v2 secondary\" id=\"btn-back-from-shop\" style=\"margin-top: 20px; min-width: 200px; padding: 15px;\">BACK</button>\n        </div>\n\n        <div id=\"result-screen\" class=\"screen\">\n            <div id=\"m-res-title\" style=\"font-size: 80px; font-weight: 900; margin-bottom: 20px; text-shadow: 0 0 30px rgba(0,0,0,0.5);\">VICTORY</div>\n            <div id=\"m-res-reward\" style=\"font-size: 40px; color: var(--color-gold); margin-bottom: 40px; text-shadow: 0 0 20px rgba(0,0,0,0.5);\">+500 COINS</div>\n            <button class=\"btn-v2\" id=\"btn-res-continue\">CONTINUE</button>\n        </div>\n    </div>\n    <script>\n        /**\n         * PANCO RAJA - Arm Wrestling Tap Game\n         * \n         * A competitive arm wrestling game where players tap rapidly to defeat opponents.\n         * Features include:\n         * - Tap-based combat with stamina management\n         * - Equipment items that provide tactical advantages\n         * - Skill system with passive bonuses\n         * - Progressive difficulty with multiple opponents\n         * - Shop system for upgrades and purchases\n         * - Coin-based progression\n         */\n\n        async function run(mode) {\n            const gameWorld = document.getElementById('game-world');\n            const canvas = document.getElementById('game-canvas');\n            const ctx = canvas.getContext('2d');\n\n            function resizeCanvas() {\n                canvas.width = gameWorld.clientWidth;\n                canvas.height = gameWorld.clientHeight;\n            }\n            resizeCanvas();\n            window.addEventListener('resize', resizeCanvas);\n\n            const audioContext = new (window.AudioContext || window.webkitAudioContext)();\n            const audioBuffers = {};\n            let currentMusic = null;\n            const assetCache = {};\n            const ui = {};\n\n            // Cache UI elements\n            function cacheUI() {\n                ui.plaStaminaBar = document.getElementById('m-pla-stamina');\n                ui.oppStaminaBar = document.getElementById('m-opp-stamina');\n                ui.tapZone = document.getElementById('m-tap-zone');\n                ui.tapLabel = ui.tapZone ? ui.tapZone.querySelector('.tap-label') : null;\n                ui.oppPortrait = document.getElementById('m-opp-portrait');\n                ui.plaPortrait = document.getElementById('m-pla-portrait');\n                ui.oppName = document.getElementById('m-opp-name');\n                ui.hudCoinVal = document.getElementById('hud-coin-val');\n                ui.globalHud = document.getElementById('global-hud');\n                ui.resTitle = document.getElementById('m-res-title');\n                ui.resReward = document.getElementById('m-res-reward');\n                ui.shopGrid = document.getElementById('m-shop-grid');\n                ui.opponentList = document.getElementById('opponent-list');\n                ui.loadingScreen = document.getElementById('loading-screen');\n                ui.progressFill = document.getElementById('progress-fill');\n            }\n            cacheUI();\n\n            // Version 2.0 State\n            let currentScreen = 'main-menu';\n            let selectedOpponent = null;\n            let matchState = null;\n            let playerProgress = null;\n            let shakeAmount = 0;\n            let particles = [];\n            let lastTimestamp = 0;\n\n            // Asset preloading with progress bar\n            async function preloadAssets() {\n                const assetIds = [\n                    'hud_coin', 'player_character_portrait', 'arm_wrestling_table', 'player_arm',\n                    'icon_power_boost', 'icon_stamina_potion', 'icon_slow_opponent', 'icon_iron_grip', 'icon_quick_recovery', 'icon_coin',\n                    'background_main_menu', 'background_match', 'sfx_tap', 'sfx_item_use', 'sfx_victory', 'sfx_defeat', 'sfx_coin', 'sfx_purchase', 'music_menu', 'music_match'\n                ];\n                \n                // Add all opponent portraits and arms\n                const oppPrefixes = [\n                    'rookie_rudi', 'steady_sam', 'rapid_rita', 'iron_fist_ivan', 'thunder_tina',\n                    'stone_crusher_steve', 'lightning_leo', 'titan_tom', 'shadow_sara', 'beast_bruno',\n                    'king_kaiser', 'venom_victor', 'inferno_ivan', 'titan_rex',\n                    'shadow_assassin', 'crimson_crusher', 'steel_sentinel', 'savage_storm',\n                    'midnight_phantom', 'volcanic_fury', 'apex_predator', 'god_of_war'\n                ];\n                \n                oppPrefixes.forEach(p => {\n                    assetIds.push(`opponent_arm_${p}`);\n                    assetIds.push(`opponent_${p}_portrait`);\n                });\n                \n                // Gear/Skill icons\n                assetIds.push('equipment_iron_gloves', 'equipment_grip_tape', 'equipment_wrist_brace', 'equipment_muscle_oil', 'equipment_energy_drink', 'equipment_adrenaline_shot', 'equipment_focus_pill', 'equipment_lucky_charm', 'equipment_pain_killer', 'equipment_steroids', 'equipment_nerve_gas');\n                assetIds.push('upgrade_muscle_growth', 'upgrade_endurance', 'upgrade_reflexes', 'upgrade_recovery', 'upgrade_focus', 'upgrade_resistance', 'upgrade_precision', 'upgrade_momentum', 'upgrade_stamina_pool', 'upgrade_power_surge');\n                assetIds.push('skill_berserker_rage', 'skill_counter_attack', 'skill_adrenaline_rush', 'skill_iron_will', 'skill_perfect_timing');\n\n                const uniqueIds = [...new Set(assetIds)];\n                let loaded = 0;\n\n                const promises = uniqueIds.map(async (id) => {\n                    const assetInfo = lib.getAsset(id);\n                    if (!assetInfo) {\n                        loaded++;\n                        return;\n                    }\n\n                    if (assetInfo.type === 'image') {\n                        return new Promise((resolve) => {\n                            const img = new Image();\n                            img.onload = () => {\n                                assetCache[id] = img;\n                                loaded++;\n                                if (ui.progressFill) ui.progressFill.style.width = `${(loaded / uniqueIds.length) * 100}%`;\n                                resolve();\n                            };\n                            img.onerror = () => { loaded++; resolve(); };\n                            img.src = assetInfo.url;\n                        });\n                    } else if (assetInfo.type === 'audio') {\n                        try {\n                            const response = await fetch(assetInfo.url);\n                            const arrayBuffer = await response.arrayBuffer();\n                            audioBuffers[id] = await audioContext.decodeAudioData(arrayBuffer);\n                        } catch (e) {\n                            console.warn('Failed to load audio:', id, e);\n                        }\n                        loaded++;\n                        if (ui.progressFill) ui.progressFill.style.width = `${(loaded / uniqueIds.length) * 100}%`;\n                    }\n                });\n\n                await Promise.all(promises);\n                // Set global coin image correctly\n                if (assetCache['hud_coin']) document.getElementById('hud-coin-img').src = assetCache['hud_coin'].src;\n            }\n\n            function playSound(id) {\n                if (!audioBuffers[id]) return;\n                const source = audioContext.createBufferSource();\n                source.buffer = audioBuffers[id];\n                source.connect(audioContext.destination);\n                source.start(0);\n            }\n\n            function playMusic(id) {\n                if (currentMusic) { currentMusic.stop(); currentMusic = null; }\n                if (!audioBuffers[id]) return;\n                const source = audioContext.createBufferSource();\n                source.buffer = audioBuffers[id];\n                source.loop = true;\n                source.connect(audioContext.destination);\n                source.start(0);\n                currentMusic = source;\n            }\n\n            async function loadProgress() {\n                const saved = await lib.getUserGameState();\n                playerProgress = saved?.state || {\n                    coins: window.gameConfig.player.startingCoins,\n                    powerLevel: window.gameConfig.player.basePowerLevel,\n                    staminaLevel: window.gameConfig.player.baseStaminaLevel,\n                    ownedItems: [], ownedSkills: [], ownedUpgrades: [],\n                    unlockedOpponents: [0],\n                    equippedItems: Array(14).fill(null)\n                };\n                // Ensure equippedItems is correct size if loading from old save\n                if (playerProgress.equippedItems.length < 14) {\n                    const newEquipped = Array(14).fill(null);\n                    playerProgress.equippedItems.forEach((item, i) => {\n                        if (i < 14) newEquipped[i] = item;\n                    });\n                    playerProgress.equippedItems = newEquipped;\n                }\n            }\n\n            function saveProgress() { lib.saveUserGameState(playerProgress); }\n\n            function updateCoins() {\n                if (ui.hudCoinVal) ui.hudCoinVal.textContent = playerProgress.coins.toLocaleString();\n            }\n\n            function showScreen(id) {\n                document.querySelectorAll('.screen').forEach(s => {\n                    s.classList.remove('active');\n                    s.style.display = 'none';\n                });\n                const target = document.getElementById(id);\n                if (!target) return;\n                target.style.display = 'flex';\n                // Trigger reflow for transition\n                void target.offsetWidth;\n                target.classList.add('active');\n                currentScreen = id;\n\n                if (ui.globalHud) ui.globalHud.style.display = (id === 'main-menu' || id === 'shop-screen' || id === 'opponent-select') ? 'flex' : 'none';\n\n                if (id === 'match-screen') playMusic('music_match');\n                else if (id === 'main-menu' || id === 'shop-screen') playMusic('music_menu');\n            }\n\n            function getOpponentData(index) {\n                const opponent = window.gameConfig.opponents[index];\n                const oppPrefixes = [\n                    'rookie_rudi', 'steady_sam', 'rapid_rita', 'iron_fist_ivan', 'thunder_tina',\n                    'stone_crusher_steve', 'lightning_leo', 'titan_tom', 'shadow_sara', 'beast_bruno',\n                    'king_kaiser', 'venom_victor', 'inferno_ivan', 'titan_rex',\n                    'shadow_assassin', 'crimson_crusher', 'steel_sentinel', 'savage_storm',\n                    'midnight_phantom', 'volcanic_fury', 'apex_predator', 'god_of_war'\n                ];\n                const p = oppPrefixes[index] || oppPrefixes[0];\n                return { ...opponent, portrait: `opponent_${p}_portrait`, armAsset: `opponent_arm_${p}` };\n            }\n\n            function setupOpponentList() {\n                if (!ui.opponentList) return;\n                ui.opponentList.innerHTML = '';\n                window.gameConfig.opponents.forEach((opp, i) => {\n                    const unlocked = playerProgress.unlockedOpponents.includes(i);\n                    const data = getOpponentData(i);\n                    const card = document.createElement('div');\n                    card.className = `shop-card ${unlocked ? '' : 'locked'}`;\n                    card.style.opacity = unlocked ? '1' : '0.5';\n                    card.innerHTML = `\n                        <img src=\"${assetCache[data.portrait]?.src || ''}\">\n                        <div class=\"shop-card-info\">\n                            <div class=\"shop-card-title\">${opp.name}</div>\n                            <div class=\"shop-card-desc\">Difficulty: ${opp.difficulty} | Reward: ${opp.coinReward}</div>\n                        </div>\n                        ${unlocked ? '<div style=\"color:var(--color-gold);font-weight:700;\">CHALLENGE</div>' : '<div>LOCKED</div>'}\n                    `;\n                    if (unlocked) card.onclick = () => { selectedOpponent = i; startMatch(); };\n                    ui.opponentList.appendChild(card);\n                });\n            }\n\n            function startMatch() {\n                const opp = getOpponentData(selectedOpponent);\n                matchState = {\n                    pos: 0, playerStamina: 100, oppStamina: 100, isActive: true,\n                    playerPower: playerProgress.powerLevel + (playerProgress.ownedUpgrades.length * 0.5),\n                    oppPower: opp.powerMultiplier, oppSpeed: opp.tapSpeed,\n                    lastOppTap: 0, items: [...playerProgress.equippedItems].filter(i => i),\n                    activeEffects: {},\n                    intensity: 0, // For visual strain\n                    playerFatigued: false,\n                    oppFatigued: false\n                };\n\n                if (ui.oppPortrait) ui.oppPortrait.src = assetCache[opp.portrait]?.src || '';\n                if (ui.plaPortrait) ui.plaPortrait.src = assetCache['player_character_portrait']?.src || '';\n                if (ui.oppName) ui.oppName.textContent = opp.name;\n                updateMatchUI();\n                showScreen('match-screen');\n            }\n\n            function updateMatchUI() {\n                if (!matchState) return;\n                document.getElementById('m-pla-stamina').style.width = `${matchState.playerStamina}%`;\n                document.getElementById('m-opp-stamina').style.width = `${matchState.oppStamina}%`;\n                \n                const barLeft1 = document.getElementById('m-item-bar-left-1');\n                const barLeft2 = document.getElementById('m-item-bar-left-2');\n                const barRight1 = document.getElementById('m-item-bar-right-1');\n                \n                barLeft1.innerHTML = '';\n                barLeft2.innerHTML = '';\n                barRight1.innerHTML = '';\n\n                matchState.items.forEach((id, i) => {\n                    const item = window.gameConfig.items.find(it => it.id === id);\n                    if (!item) return;\n                    \n                    const btn = document.createElement('div');\n                    btn.className = 'item-btn';\n                    btn.innerHTML = `<img src=\"${assetCache[item.icon]?.src || ''}\"><div class=\"badge\">1</div>`;\n                    btn.onclick = () => useMatchItem(i);\n                    \n                    if (i < 5) barLeft1.appendChild(btn);\n                    else if (i < 10) barLeft2.appendChild(btn);\n                    else if (i < 14) barRight1.appendChild(btn);\n                });\n\n                // Hide bar if empty\n                barLeft1.style.display = barLeft1.innerHTML === '' ? 'none' : 'flex';\n                barLeft2.style.display = barLeft2.innerHTML === '' ? 'none' : 'flex';\n                barRight1.style.display = barRight1.innerHTML === '' ? 'none' : 'flex';\n            }\n\n            function useMatchItem(index) {\n                const id = matchState.items[index];\n                const item = window.gameConfig.items.find(it => it.id === id);\n                playSound('sfx_item_use');\n                if (item.effect === 'stamina_restore') matchState.playerStamina = Math.min(100, matchState.playerStamina + item.effectStrength);\n                if (item.effect === 'power_boost') matchState.activeEffects.power = { val: item.effectStrength, end: Date.now() + 5000 };\n                if (item.effect === 'slow_opponent') matchState.activeEffects.slow = { val: item.effectStrength, end: Date.now() + 5000 };\n                matchState.items.splice(index, 1);\n                updateMatchUI();\n                shakeAmount = 15;\n            }\n\n            function createParticle(x, y, color = '#ff4500') {\n                if (particles.length > 50) return; // Performance cap\n                particles.push({\n                    x: x, y: y,\n                    vx: (Math.random() - 0.5) * 10,\n                    vy: (Math.random() - 0.5) * 10,\n                    alpha: 1,\n                    size: Math.random() * 5 + 5,\n                    color: color\n                });\n            }\n\n            function handleTap(e) {\n                if (!matchState || !matchState.isActive || matchState.playerStamina <= 0 || matchState.playerFatigued) return;\n                \n                // Visual feedback\n                if (e) {\n                    const rect = canvas.getBoundingClientRect();\n                    const touchX = (e.clientX || (e.touches && e.touches[0].clientX)) - rect.left;\n                    const touchY = (e.clientY || (e.touches && e.touches[0].clientY)) - rect.top;\n                    for (let i = 0; i < 5; i++) createParticle(touchX, touchY);\n                }\n\n                let p = matchState.playerPower;\n                if (matchState.activeEffects.power && Date.now() < matchState.activeEffects.power.end) p *= matchState.activeEffects.power.val;\n                matchState.pos += p;\n                matchState.playerStamina = Math.max(0, matchState.playerStamina - window.gameConfig.match.staminaDrainRate);\n                \n                if (matchState.playerStamina <= 0) {\n                    matchState.playerFatigued = true;\n                    shakeAmount = 25; // Extra shake when hitting zero\n                }\n\n                playSound('sfx_tap');\n                shakeAmount = Math.max(shakeAmount, 10);\n                checkWin();\n            }\n\n            function checkWin() {\n                const threshold = window.gameConfig.match.winThreshold;\n                if (matchState.pos >= threshold) endMatch(true);\n                else if (matchState.pos <= -threshold) endMatch(false);\n            }\n\n            function endMatch(won) {\n                matchState.isActive = false;\n                const opp = getOpponentData(selectedOpponent);\n                if (won) {\n                    playerProgress.coins += opp.coinReward;\n                    if (!playerProgress.unlockedOpponents.includes(selectedOpponent + 1) && selectedOpponent + 1 < window.gameConfig.opponents.length) {\n                        playerProgress.unlockedOpponents.push(selectedOpponent + 1);\n                    }\n                    playSound('sfx_victory');\n                } else {\n                    playerProgress.coins = Math.max(0, playerProgress.coins - opp.coinBet);\n                    playSound('sfx_defeat');\n                }\n                saveProgress();\n                updateCoins();\n                if (ui.resTitle) {\n                    ui.resTitle.textContent = won ? 'VICTORY' : 'DEFEAT';\n                    ui.resTitle.style.color = won ? 'var(--color-gold)' : 'var(--color-danger)';\n                }\n                if (ui.resReward) ui.resReward.textContent = won ? `+${opp.coinReward} COINS` : `-${opp.coinBet} COINS`;\n                showScreen('result-screen');\n            }\n\n            function setupShop() {\n                if (!ui.shopGrid) return;\n                \n                // Only setup tab listeners once\n                if (!ui.shopTabsInitialized) {\n                    document.querySelectorAll('.shop-tabs button').forEach(btn => {\n                        btn.onclick = () => {\n                            document.querySelectorAll('.shop-tabs button').forEach(b => b.classList.remove('active-tab'));\n                            btn.classList.add('active-tab');\n                            updateShopContent(btn.dataset.tab);\n                        };\n                    });\n                    ui.shopTabsInitialized = true;\n                }\n\n                function updateShopContent(tab) {\n                    ui.shopGrid.innerHTML = '';\n                    let items = [];\n                    if (tab === 'upgrades') items = window.gameConfig.upgrades;\n                    else if (tab === 'equipment') items = window.gameConfig.items;\n                    else items = window.gameConfig.skills;\n\n                    items.forEach(item => {\n                        const owned = playerProgress.ownedUpgrades.includes(item.id) || playerProgress.ownedItems.includes(item.id) || playerProgress.ownedSkills.includes(item.id);\n                        const card = document.createElement('div');\n                        card.className = `shop-card ${owned ? 'owned' : ''}`;\n                        card.innerHTML = `\n                            <img src=\"${assetCache[item.icon]?.src || ''}\">\n                            <div class=\"shop-card-info\">\n                                <div class=\"shop-card-title\">${item.name}</div>\n                                <div class=\"shop-card-desc\">${item.description}</div>\n                                <div class=\"shop-card-price\">${owned ? 'OWNED' : item.cost + ' COINS'}</div>\n                            </div>\n                        `;\n                        if (!owned) card.onclick = () => {\n                            if (playerProgress.coins >= item.cost) {\n                                playerProgress.coins -= item.cost;\n                                if (tab === 'upgrades') playerProgress.ownedUpgrades.push(item.id);\n                                else if (tab === 'equipment') {\n                                    playerProgress.ownedItems.push(item.id);\n                                    const emptySlot = playerProgress.equippedItems.findIndex(s => s === null);\n                                    if (emptySlot !== -1) playerProgress.equippedItems[emptySlot] = item.id;\n                                }\n                                else playerProgress.ownedSkills.push(item.id);\n                                playSound('sfx_purchase');\n                                saveProgress();\n                                updateCoins();\n                                updateShopContent(tab);\n                            }\n                        };\n                        ui.shopGrid.appendChild(card);\n                    });\n                }\n                \n                // Find currently active tab or default to upgrades\n                const activeTab = document.querySelector('.shop-tabs button.active-tab') || document.querySelector('.shop-tabs button[data-tab=\"upgrades\"]');\n                if (activeTab) updateShopContent(activeTab.dataset.tab);\n            }\n\n            function draw(timestamp) {\n                if (!lastTimestamp) {\n                    lastTimestamp = timestamp;\n                    requestAnimationFrame(draw);\n                    return;\n                }\n                let dt = (timestamp - lastTimestamp) / 1000;\n                lastTimestamp = timestamp;\n\n                if (dt > 0.1) dt = 0.1;\n\n                ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n                ctx.save();\n                if (shakeAmount > 0) {\n                    ctx.translate(Math.random() * shakeAmount - shakeAmount/2, Math.random() * shakeAmount - shakeAmount/2);\n                    shakeAmount *= Math.pow(0.1, dt);\n                    if (shakeAmount < 0.1) shakeAmount = 0;\n                }\n\n                if (currentScreen === 'main-menu') {\n                    if (assetCache['background_main_menu']) ctx.drawImage(assetCache['background_main_menu'], 0, 0, canvas.width, canvas.height);\n                } else if (currentScreen === 'match-screen') {\n                    if (assetCache['background_match']) ctx.drawImage(assetCache['background_match'], 0, 0, canvas.width, canvas.height);\n                    if (assetCache['arm_wrestling_table']) {\n                        const tw = canvas.width * 0.9;\n                        const th = tw * 0.6;\n                        ctx.drawImage(assetCache['arm_wrestling_table'], (canvas.width-tw)/2, canvas.height*0.35, tw, th);\n                    }\n\n                    if (matchState && matchState.isActive) {\n                        let interval = 1000 / matchState.oppSpeed;\n                        if (matchState.activeEffects.slow && Date.now() < matchState.activeEffects.slow.end) interval *= matchState.activeEffects.slow.val;\n                        \n                        const now = Date.now();\n                        const centerX = canvas.width / 2;\n                        const centerY = canvas.height * 0.45;\n                        const winThreshold = window.gameConfig.match.winThreshold;\n\n                        if (now - matchState.lastOppTap > interval) {\n                            matchState.lastOppTap = now;\n                            \n                            if (!matchState.oppFatigued) {\n                                // Calculate effective opponent power based on stamina\n                                let effectiveOppPower = matchState.oppPower;\n                                if (matchState.oppStamina <= 10) effectiveOppPower *= 0.5; // Weaken when very low\n                                \n                                matchState.pos -= effectiveOppPower;\n                                \n                                // Opponent loses stamina similar to player\n                                // Scales with match position: more drain if player is winning\n                                const baseDrain = window.gameConfig.match.staminaDrainRate;\n                                const staminaCost = (baseDrain * 0.8) + (Math.max(0, matchState.pos) / winThreshold) * 3;\n                                matchState.oppStamina = Math.max(0, matchState.oppStamina - staminaCost);\n                                \n                                if (matchState.oppStamina <= 0) {\n                                    matchState.oppFatigued = true;\n                                }\n                                checkWin();\n                            }\n                        }\n                        \n                        const timeScale = 60 * dt;\n                        matchState.playerStamina = Math.min(100, matchState.playerStamina + (window.gameConfig.match.staminaRegenRate * timeScale));\n                        \n                        // Recovery threshold: must reach 20% to tap again\n                        if (matchState.playerFatigued && matchState.playerStamina >= 20) {\n                            matchState.playerFatigued = false;\n                        }\n\n                        // Opponent recovers stamina\n                        let oppRegen = window.gameConfig.match.staminaRegenRate;\n                        if (matchState.pos > 0) oppRegen *= 0.5; \n                        matchState.oppStamina = Math.min(100, matchState.oppStamina + (oppRegen * timeScale));\n\n                        if (matchState.oppFatigued && matchState.oppStamina >= 20) {\n                            matchState.oppFatigued = false;\n                        }\n                        \n                        if (ui.plaStaminaBar) ui.plaStaminaBar.style.width = `${matchState.playerStamina}%`;\n                        if (ui.oppStaminaBar) ui.oppStaminaBar.style.width = `${matchState.oppStamina}%`;\n                        \n                        // Fatigue UI feedback\n                        if (ui.tapZone && ui.tapLabel) {\n                            if (matchState.playerFatigued) {\n                                ui.tapZone.style.opacity = '0.3';\n                                ui.tapLabel.textContent = 'TIRED!';\n                                ui.tapZone.style.background = 'rgba(100,100,100,0.5)';\n                            } else {\n                                ui.tapZone.style.opacity = '1';\n                                ui.tapLabel.textContent = 'TAP!';\n                                ui.tapZone.style.background = 'radial-gradient(circle, rgba(255,69,0,0.4) 0%, rgba(255,69,0,0) 70%)';\n                            }\n                        }\n                        \n                        // Color feedback for stamina\n                        if (ui.plaStaminaBar) {\n                            if (matchState.playerStamina < 25) ui.plaStaminaBar.classList.add('critical');\n                            else ui.plaStaminaBar.classList.remove('critical');\n                        }\n\n                        if (ui.oppStaminaBar) {\n                            if (matchState.oppStamina < 25) ui.oppStaminaBar.classList.add('critical');\n                            else ui.oppStaminaBar.classList.remove('critical');\n                        }\n                        \n                        // Calculate arm struggle dynamics\n                        const struggleX = Math.sin(timestamp / 50) * 3;\n                        const struggleY = Math.cos(timestamp / 40) * 2;\n                        \n                        // LOCKED HANDS PHYSICS-LIKE RENDERING\n                        const handX = centerX + (matchState.pos / winThreshold) * 180 + struggleX;\n                        const handY = centerY - 160 + Math.abs(matchState.pos / winThreshold) * 140 + struggleY;\n                        \n                        const elbowOffset = 130; \n                        const elbowY = centerY + 220;\n\n                        // Draw Opponent Arm\n                        const oppArm = assetCache[getOpponentData(selectedOpponent).armAsset];\n                        if (oppArm) {\n                            ctx.save();\n                            const oppElbowX = centerX - elbowOffset;\n                            const dx = handX - oppElbowX;\n                            const dy = handY - elbowY;\n                            const dist = Math.sqrt(dx * dx + dy * dy);\n                            const angle = Math.atan2(dy, dx);\n                            \n                            ctx.translate(oppElbowX, elbowY); \n                            ctx.rotate(angle + Math.PI / 2);\n                            \n                            const trembling = (100 - matchState.oppStamina) / 100 * 6;\n                            ctx.translate(Math.random()*trembling - trembling/2, Math.random()*trembling - trembling/2);\n                            \n                            // Draw arm stretching to hand target. Hand is at top-center (X=0, Y=-dist)\n                            // Offset X slightly (e.g. +10) to make the hands overlap in a grip\n                            ctx.drawImage(oppArm, -70 + 10, -dist, 140, dist);\n                            ctx.restore();\n                        }\n\n                        // Draw Player Arm\n                        const plaArm = assetCache['player_arm'];\n                        if (plaArm) {\n                            ctx.save();\n                            const plaElbowX = centerX + elbowOffset;\n                            const dx = handX - plaElbowX;\n                            const dy = handY - elbowY;\n                            const dist = Math.sqrt(dx * dx + dy * dy);\n                            const angle = Math.atan2(dy, dx);\n                            \n                            ctx.translate(plaElbowX, elbowY);\n                            ctx.rotate(angle + Math.PI / 2);\n                            \n                            // We don't flip with scale(-1, 1) if the asset is already right-side oriented\n                            // But we need to make sure the hand meets the opponent's.\n                            // Offset X slightly (-10) to grip the opponent's hand\n                            const trembling = (100 - matchState.playerStamina) / 100 * 6;\n                            ctx.translate(Math.random()*trembling - trembling/2, Math.random()*trembling - trembling/2);\n                            \n                            ctx.drawImage(plaArm, -70 - 10, -dist, 140, dist);\n                            ctx.restore();\n                        }\n\n                        // Add strain particles at the point of contact (hands)\n                        if (Math.random() > 0.8) {\n                            createParticle(handX, handY, '#fff');\n                        }\n                    }\n                }\n\n                // Update and Draw Particles\n                for (let i = particles.length - 1; i >= 0; i--) {\n                    const p = particles[i];\n                    p.x += p.vx;\n                    p.y += p.vy;\n                    p.alpha -= dt * 2;\n                    if (p.alpha <= 0) {\n                        particles.splice(i, 1);\n                        continue;\n                    }\n                    ctx.globalAlpha = p.alpha;\n                    ctx.fillStyle = p.color;\n                    ctx.beginPath();\n                    ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);\n                    ctx.fill();\n                }\n                ctx.globalAlpha = 1;\n\n                ctx.restore();\n                requestAnimationFrame(draw);\n            }\n\n            // Events\n            document.getElementById('btn-fight').onclick = () => { setupOpponentList(); showScreen('opponent-select'); };\n            document.getElementById('btn-shop').onclick = () => { setupShop(); showScreen('shop-screen'); };\n            document.getElementById('btn-back-from-select').onclick = () => showScreen('main-menu');\n            document.getElementById('btn-back-from-shop').onclick = () => showScreen('main-menu');\n            document.getElementById('btn-res-continue').onclick = () => showScreen('main-menu');\n            document.getElementById('m-tap-zone').onclick = handleTap;\n\n            // Initialize\n            await preloadAssets();\n            await loadProgress();\n            if (ui.loadingScreen) ui.loadingScreen.style.display = 'none';\n            updateCoins();\n            \n            // Show 5-second intro splash\n            showScreen('splash-screen');\n            setTimeout(() => {\n                if (currentScreen === 'splash-screen') {\n                    showScreen('main-menu');\n                }\n            }, 5000);\n\n            requestAnimationFrame(draw);\n\n            if (mode === 'edit') {\n                lib.showGameParameters({\n                    name: 'Panco Raja 2.0 Settings',\n                    params: {\n                        'Starting Coins': { key: 'player.startingCoins', type: 'slider', min: 0, max: 10000, step: 100 },\n                        'Win Threshold': { key: 'match.winThreshold', type: 'slider', min: 50, max: 200, step: 10 },\n                        'Stamina Drain': { key: 'match.staminaDrainRate', type: 'slider', min: 0.1, max: 5, step: 0.1 }\n                    }\n                });\n            }\n        }\n    </script>\n</body>\n</html>", "game_config": "{\n  \"player\": {\n    \"startingCoins\": 100,\n    \"basePowerLevel\": 3,\n    \"baseStaminaLevel\": 3\n  },\n  \"opponents\": [\n    {\n      \"powerMultiplier\": 2,\n      \"coinReward\": 50,\n      \"name\": \"Rookie Rudi\",\n      \"tapSpeed\": 1.5,\n      \"coinBet\": 30,\n      \"difficulty\": \"Normal\"\n    },\n    {\n      \"powerMultiplier\": 2.5,\n      \"coinReward\": 100,\n      \"tapSpeed\": 2.5,\n      \"difficulty\": \"Normal\",\n      \"coinBet\": 60,\n      \"name\": \"Steady Sam\"\n    },\n    {\n      \"powerMultiplier\": 3,\n      \"coinReward\": 275,\n      \"tapSpeed\": 4,\n      \"name\": \"Rapid Rita\",\n      \"coinBet\": 150,\n      \"difficulty\": \"Medium\"\n    },\n    {\n      \"coinReward\": 175,\n      \"tapSpeed\": 3,\n      \"name\": \"Iron Fist Ivan\",\n      \"powerMultiplier\": 3.5,\n      \"coinBet\": 110,\n      \"difficulty\": \"Medium\"\n    },\n    {\n      \"difficulty\": \"Medium\",\n      \"tapSpeed\": 3.5,\n      \"coinReward\": 225,\n      \"name\": \"Thunder Tina\",\n      \"powerMultiplier\": 3.8,\n      \"coinBet\": 140\n    },\n    {\n      \"powerMultiplier\": 4.5,\n      \"tapSpeed\": 2.8,\n      \"name\": \"Stone Crusher Steve\",\n      \"coinReward\": 350,\n      \"coinBet\": 220,\n      \"difficulty\": \"Hard\"\n    },\n    {\n      \"coinBet\": 260,\n      \"tapSpeed\": 5.5,\n      \"powerMultiplier\": 3.2,\n      \"difficulty\": \"Hard\",\n      \"name\": \"Lightning Leo\",\n      \"coinReward\": 400\n    },\n    {\n      \"name\": \"Titan Tom\",\n      \"coinReward\": 450,\n      \"tapSpeed\": 3.2,\n      \"powerMultiplier\": 5,\n      \"coinBet\": 300,\n      \"difficulty\": \"Hard\"\n    },\n    {\n      \"coinBet\": 340,\n      \"difficulty\": \"Hard\",\n      \"powerMultiplier\": 3.5,\n      \"coinReward\": 500,\n      \"name\": \"Shadow Sara\",\n      \"tapSpeed\": 4.8\n    },\n    {\n      \"coinBet\": 380,\n      \"powerMultiplier\": 4.8,\n      \"tapSpeed\": 4.2,\n      \"coinReward\": 550,\n      \"name\": \"Beast Bruno\",\n      \"difficulty\": \"Hard\"\n    },\n    {\n      \"powerMultiplier\": 5.5,\n      \"coinReward\": 750,\n      \"name\": \"King Kaiser\",\n      \"difficulty\": \"Expert\",\n      \"coinBet\": 550,\n      \"tapSpeed\": 5\n    },\n    {\n      \"powerMultiplier\": 5.2,\n      \"tapSpeed\": 6,\n      \"coinBet\": 650,\n      \"difficulty\": \"Expert\",\n      \"name\": \"Venom Victor\",\n      \"coinReward\": 850\n    },\n    {\n      \"coinBet\": 950,\n      \"coinReward\": 1200,\n      \"name\": \"Inferno Ivan\",\n      \"powerMultiplier\": 7,\n      \"tapSpeed\": 5.8,\n      \"difficulty\": \"Extreme\"\n    },\n    {\n      \"powerMultiplier\": 8.5,\n      \"name\": \"Titan Rex\",\n      \"coinReward\": 1500,\n      \"tapSpeed\": 4.5,\n      \"difficulty\": \"Extreme\",\n      \"coinBet\": 1200\n    },\n    {\n      \"difficulty\": \"Extreme\",\n      \"name\": \"Shadow Assassin\",\n      \"coinReward\": 1800,\n      \"tapSpeed\": 6.5,\n      \"coinBet\": 1500,\n      \"powerMultiplier\": 6.8\n    },\n    {\n      \"coinBet\": 1800,\n      \"name\": \"Crimson Crusher\",\n      \"coinReward\": 2000,\n      \"tapSpeed\": 5.2,\n      \"powerMultiplier\": 7.5,\n      \"difficulty\": \"Extreme\"\n    },\n    {\n      \"difficulty\": \"Extreme\",\n      \"coinBet\": 2000,\n      \"powerMultiplier\": 8,\n      \"coinReward\": 2200,\n      \"name\": \"Steel Sentinel\",\n      \"tapSpeed\": 5.5\n    },\n    {\n      \"coinBet\": 2200,\n      \"name\": \"Savage Storm\",\n      \"difficulty\": \"Extreme\",\n      \"powerMultiplier\": 7.2,\n      \"tapSpeed\": 6.2,\n      \"coinReward\": 2400\n    },\n    {\n      \"coinReward\": 2600,\n      \"tapSpeed\": 6.8,\n      \"coinBet\": 2400,\n      \"powerMultiplier\": 6.5,\n      \"difficulty\": \"Extreme\",\n      \"name\": \"Midnight Phantom\"\n    },\n    {\n      \"coinReward\": 2800,\n      \"powerMultiplier\": 8.2,\n      \"name\": \"Volcanic Fury\",\n      \"tapSpeed\": 5.9,\n      \"difficulty\": \"Extreme\",\n      \"coinBet\": 2600\n    },\n    {\n      \"coinBet\": 2800,\n      \"powerMultiplier\": 7.8,\n      \"tapSpeed\": 6.3,\n      \"coinReward\": 3000,\n      \"name\": \"Apex Predator\",\n      \"difficulty\": \"Extreme\"\n    },\n    {\n      \"powerMultiplier\": 9,\n      \"coinBet\": 5000,\n      \"name\": \"God of War\",\n      \"tapSpeed\": 7,\n      \"coinReward\": 5000,\n      \"difficulty\": \"Ultimate\"\n    }\n  ],\n  \"items\": [\n    {\n      \"id\": \"power_boost\",\n      \"name\": \"Power Boost\",\n      \"description\": \"Double tap power for 5 seconds\",\n      \"icon\": \"icon_power_boost\",\n      \"cost\": 150,\n      \"effect\": \"power_boost\",\n      \"effectStrength\": 2.0,\n      \"usesPerMatch\": 2\n    },\n    {\n      \"id\": \"stamina_potion\",\n      \"name\": \"Stamina Potion\",\n      \"description\": \"Restore 50 stamina instantly\",\n      \"icon\": \"icon_stamina_potion\",\n      \"cost\": 100,\n      \"effect\": \"stamina_restore\",\n      \"effectStrength\": 50,\n      \"usesPerMatch\": 3\n    },\n    {\n      \"id\": \"slow_opponent\",\n      \"name\": \"Slow Opponent\",\n      \"description\": \"Halve opponent tap speed for 5 seconds\",\n      \"icon\": \"icon_slow_opponent\",\n      \"cost\": 200,\n      \"effect\": \"slow_opponent\",\n      \"effectStrength\": 2.0,\n      \"usesPerMatch\": 2\n    },\n    {\n      \"id\": \"iron_gloves\",\n      \"name\": \"Iron Gloves\",\n      \"description\": \"+20% tap power permanently\",\n      \"icon\": \"equipment_iron_gloves\",\n      \"cost\": 250,\n      \"effect\": \"permanent_power\",\n      \"effectStrength\": 1.2,\n      \"usesPerMatch\": 999\n    },\n    {\n      \"id\": \"grip_tape\",\n      \"name\": \"Grip Tape\",\n      \"description\": \"+15% stamina efficiency\",\n      \"icon\": \"equipment_grip_tape\",\n      \"cost\": 200,\n      \"effect\": \"stamina_efficiency\",\n      \"effectStrength\": 0.85,\n      \"usesPerMatch\": 999\n    },\n    {\n      \"id\": \"wrist_brace\",\n      \"name\": \"Wrist Brace\",\n      \"description\": \"Reduce stamina drain by 25%\",\n      \"icon\": \"equipment_wrist_brace\",\n      \"cost\": 220,\n      \"effect\": \"reduce_drain\",\n      \"effectStrength\": 0.75,\n      \"usesPerMatch\": 999\n    },\n    {\n      \"id\": \"muscle_oil\",\n      \"name\": \"Muscle Oil\",\n      \"description\": \"+10% power for entire match\",\n      \"icon\": \"equipment_muscle_oil\",\n      \"cost\": 180,\n      \"effect\": \"match_power\",\n      \"effectStrength\": 1.1,\n      \"usesPerMatch\": 999\n    },\n    {\n      \"id\": \"energy_drink\",\n      \"name\": \"Energy Drink\",\n      \"description\": \"Restore 30 stamina per use (3 uses)\",\n      \"icon\": \"equipment_energy_drink\",\n      \"cost\": 120,\n      \"effect\": \"stamina_restore\",\n      \"effectStrength\": 30,\n      \"usesPerMatch\": 3\n    },\n    {\n      \"id\": \"adrenaline_shot\",\n      \"name\": \"Adrenaline Shot\",\n      \"description\": \"Triple power for 3 seconds (2 uses)\",\n      \"icon\": \"equipment_adrenaline_shot\",\n      \"cost\": 280,\n      \"effect\": \"power_boost\",\n      \"effectStrength\": 3.0,\n      \"usesPerMatch\": 2\n    },\n    {\n      \"id\": \"focus_pill\",\n      \"name\": \"Focus Pill\",\n      \"description\": \"Increase tap speed by 50% for 4 seconds\",\n      \"icon\": \"equipment_focus_pill\",\n      \"cost\": 200,\n      \"effect\": \"tap_speed_boost\",\n      \"effectStrength\": 1.5,\n      \"usesPerMatch\": 2\n    },\n    {\n      \"id\": \"lucky_charm\",\n      \"name\": \"Lucky Charm\",\n      \"description\": \"Random boost: power, stamina, or speed\",\n      \"icon\": \"equipment_lucky_charm\",\n      \"cost\": 150,\n      \"effect\": \"random_boost\",\n      \"effectStrength\": 1.0,\n      \"usesPerMatch\": 3\n    },\n    {\n      \"id\": \"pain_killer\",\n      \"name\": \"Pain Killer\",\n      \"description\": \"Ignore stamina drain for 3 seconds\",\n      \"icon\": \"equipment_pain_killer\",\n      \"cost\": 300,\n      \"effect\": \"no_drain\",\n      \"effectStrength\": 1.0,\n      \"usesPerMatch\": 1\n    },\n    {\n      \"id\": \"steroids\",\n      \"name\": \"Steroids (Cheating)\",\n      \"description\": \"Massive power boost but risky!\",\n      \"icon\": \"equipment_steroids\",\n      \"cost\": 500,\n      \"effect\": \"cheating_power\",\n      \"effectStrength\": 4.0,\n      \"usesPerMatch\": 1\n    },\n    {\n      \"id\": \"nerve_gas\",\n      \"name\": \"Nerve Gas (Cheating)\",\n      \"description\": \"Paralyze opponent for 4 seconds\",\n      \"icon\": \"equipment_nerve_gas\",\n      \"cost\": 600,\n      \"effect\": \"paralyze_opponent\",\n      \"effectStrength\": 1.0,\n      \"usesPerMatch\": 1\n    }\n  ],\n  \"skills\": [\n    {\n      \"id\": \"iron_grip\",\n      \"name\": \"Iron Grip\",\n      \"description\": \"Reduce stamina drain by 30%\",\n      \"icon\": \"icon_iron_grip\",\n      \"cost\": 300\n    },\n    {\n      \"id\": \"quick_recovery\",\n      \"name\": \"Quick Recovery\",\n      \"description\": \"Increase stamina regeneration by 50%\",\n      \"icon\": \"icon_quick_recovery\",\n      \"cost\": 300\n    },\n    {\n      \"id\": \"berserker_rage\",\n      \"name\": \"Berserker Rage\",\n      \"description\": \"Power +40% when stamina is low\",\n      \"icon\": \"skill_berserker_rage\",\n      \"cost\": 350\n    },\n    {\n      \"id\": \"counter_attack\",\n      \"name\": \"Counter Attack\",\n      \"description\": \"Reflect 20% of opponent damage\",\n      \"icon\": \"skill_counter_attack\",\n      \"cost\": 400\n    },\n    {\n      \"id\": \"adrenaline_rush\",\n      \"name\": \"Adrenaline Rush\",\n      \"description\": \"Tap speed +25% when stamina below 30%\",\n      \"icon\": \"skill_adrenaline_rush\",\n      \"cost\": 350\n    },\n    {\n      \"id\": \"iron_will\",\n      \"name\": \"Iron Will\",\n      \"description\": \"Stamina never drops below 10%\",\n      \"icon\": \"skill_iron_will\",\n      \"cost\": 450\n    },\n    {\n      \"id\": \"perfect_timing\",\n      \"name\": \"Perfect Timing\",\n      \"description\": \"Every 5th tap deals 2x damage\",\n      \"icon\": \"skill_perfect_timing\",\n      \"cost\": 400\n    }\n  ],\n  \"shop\": {\n    \"powerUpgradeCost\": 100,\n    \"staminaUpgradeCost\": 100\n  },\n  \"match\": {\n    \"winThreshold\": 100,\n    \"staminaDrainRate\": 4,\n    \"staminaRegenRate\": 0.2\n  },\n  \"upgrades\": [\n    {\n      \"id\": \"muscle_growth\",\n      \"name\": \"Muscle Growth\",\n      \"description\": \"Increase base power by 10%\",\n      \"icon\": \"upgrade_muscle_growth\",\n      \"cost\": 100,\n      \"type\": \"power_multiplier\",\n      \"effect\": 0.1\n    },\n    {\n      \"id\": \"endurance\",\n      \"name\": \"Endurance\",\n      \"description\": \"Increase max stamina by 15%\",\n      \"icon\": \"upgrade_endurance\",\n      \"cost\": 100,\n      \"type\": \"stamina_multiplier\",\n      \"effect\": 0.15\n    },\n    {\n      \"id\": \"reflexes\",\n      \"name\": \"Reflexes\",\n      \"description\": \"Tap 10% faster\",\n      \"icon\": \"upgrade_reflexes\",\n      \"cost\": 120,\n      \"type\": \"tap_speed\",\n      \"effect\": 0.1\n    },\n    {\n      \"id\": \"recovery\",\n      \"name\": \"Recovery\",\n      \"description\": \"Stamina regenerates 20% faster\",\n      \"icon\": \"upgrade_recovery\",\n      \"cost\": 110,\n      \"type\": \"regen_multiplier\",\n      \"effect\": 0.2\n    },\n    {\n      \"id\": \"focus\",\n      \"name\": \"Focus\",\n      \"description\": \"Reduce stamina drain by 10%\",\n      \"icon\": \"upgrade_focus\",\n      \"cost\": 100,\n      \"type\": \"drain_reduction\",\n      \"effect\": 0.1\n    },\n    {\n      \"id\": \"resistance\",\n      \"name\": \"Resistance\",\n      \"description\": \"Reduce opponent power by 5%\",\n      \"icon\": \"upgrade_resistance\",\n      \"cost\": 130,\n      \"type\": \"opponent_reduction\",\n      \"effect\": 0.05\n    },\n    {\n      \"id\": \"precision\",\n      \"name\": \"Precision\",\n      \"description\": \"Increase tap effectiveness by 8%\",\n      \"icon\": \"upgrade_precision\",\n      \"cost\": 115,\n      \"type\": \"power_multiplier\",\n      \"effect\": 0.08\n    },\n    {\n      \"id\": \"momentum\",\n      \"name\": \"Momentum\",\n      \"description\": \"Each tap builds momentum (+2% per tap)\",\n      \"icon\": \"upgrade_momentum\",\n      \"cost\": 150,\n      \"type\": \"momentum\",\n      \"effect\": 0.02\n    },\n    {\n      \"id\": \"stamina_pool\",\n      \"name\": \"Stamina Pool\",\n      \"description\": \"Max stamina +20%\",\n      \"icon\": \"upgrade_stamina_pool\",\n      \"cost\": 120,\n      \"type\": \"stamina_multiplier\",\n      \"effect\": 0.2\n    },\n    {\n      \"id\": \"power_surge\",\n      \"name\": \"Power Surge\",\n      \"description\": \"Power increases by 15% when stamina is high\",\n      \"icon\": \"upgrade_power_surge\",\n      \"cost\": 140,\n      \"type\": \"conditional_power\",\n      \"effect\": 0.15\n    }\n  ]\n}", "game_design_document": "## Core Game Loop and Mechanics\n\n**Panco Raja** is a competitive arm wrestling game where players face off against AI opponents in intense tap battles. The core experience revolves around:\n\n### Match Flow\n1. **Pre-Match Setup**: Players can equip items and skills before each match\n2. **Arm Wrestling Battle**: Rapid tapping competition where both players' arms move based on tap speed and power\n3. **Strategic Item Use**: During the match, players can activate equipped items and skills for advantages\n4. **Victory/Defeat**: Win by pushing opponent's arm to the table; earn coins and unlock new opponents\n5. **Progression**: Use earned coins to buy permanent stat upgrades, new equipment, and skills from the shop\n\n### Core Mechanics\n\n**Tapping System**:\n- Players tap rapidly to generate force\n- Each tap adds to a power meter that determines arm position\n- Opponent AI taps at varying speeds based on difficulty\n- Arm position is a tug-of-war: positive values favor player, negative favor opponent\n- First to push opponent's arm to -100 or +100 wins\n\n**Power (Kekuatan) System**:\n- Base power multiplies the effectiveness of each tap\n- Can be permanently upgraded in the shop\n- Higher power means each tap pushes harder\n\n**Stamina System**:\n- Each tap consumes stamina\n- Stamina regenerates slowly during the match\n- Running out of stamina makes taps less effective\n- Can be upgraded for higher max stamina and faster regeneration\n\n**Equipment System**:\n- Players can own multiple equipment items\n- Before each match, select up to 3 items to bring\n- Each item has limited uses per match\n- Items provide various advantages: instant power boost, opponent slowdown, stamina restore, etc.\n\n**Skill System**:\n- Permanent passive abilities purchased from shop\n- Examples: \"Iron Grip\" (slower stamina drain), \"Quick Recovery\" (faster stamina regen), \"Power Surge\" (critical tap chance)\n- Multiple skills can be active simultaneously\n\n**Cheat Items**:\n- Special rare items with powerful effects\n- Examples: \"Slippery Oil\" (opponent loses grip), \"Distraction\" (opponent stops tapping briefly), \"Magnetic Glove\" (auto-win advantage)\n- More expensive and have cooldowns\n- Add a mischievous, fun element to gameplay\n\n**Currency & Progression**:\n- Win matches to earn coins\n- Coins used to purchase: power upgrades, stamina upgrades, new equipment, new skills, unlock new opponents\n- Each opponent has increasing difficulty and coin rewards\n- 5 opponents total, each with unique appearance and AI behavior\n\n## Starting Scope\n\n**First Implementation Should Include**:\n\n1. **Core Match Mechanics**:\n   - Tap-based arm wrestling with visual arm movement\n   - Power meter and arm position system\n   - Basic stamina system\n   - Win/lose conditions with victory screen\n\n2. **3 Opponents**:\n   - Beginner (slow tapping)\n   - Intermediate (medium tapping)\n   - Advanced (fast tapping with occasional bursts)\n\n3. **Basic Shop System**:\n   - Power upgrade (5 levels)\n   - Stamina upgrade (5 levels)\n   - 3 basic equipment items (Power Boost, Stamina Potion, Slow Opponent)\n   - 2 basic skills (Iron Grip, Quick Recovery)\n\n4. **Simple UI**:\n   - Main menu with \"Fight\" and \"Shop\" buttons\n   - Match screen with tap area, arm position indicator, stamina bar\n   - Equipment slots (3) with use buttons\n   - Victory/defeat screen with coin reward\n   - Shop interface with purchasable items\n\n5. **Basic Progression**:\n   - Coin earning system\n   - Unlock opponents sequentially\n   - Save player's coins, upgrades, and owned items\n\n**Future Additions** (not in first iteration):\n- 2 additional opponents (Expert, Champion)\n- More equipment variety (8-10 total items)\n- More skills (5-6 total)\n- Cheat items (3-4 special items)\n- Tournament mode\n- Daily challenges\n- Achievement system\n- Animated character reactions\n\n## Game Perspective\n\n**Fixed-screen** with a side view of the arm wrestling table. The camera shows both the player's arm (bottom/right) and opponent's arm (top/left) meeting at the center of the table. The perspective is angled slightly to show depth, similar to classic arm wrestling arcade games.\n\n## Game World and Level Design\n\n### Visual Layout\n\n**Match Screen**:\n- Top third: Opponent character portrait and name, opponent stamina bar\n- Middle third: Arm wrestling table with both arms, central power meter showing arm position\n- Bottom third: Player stamina bar, equipped items (3 slots with use buttons), tap area\n\n**Main Menu**:\n- Game title at top\n- Character portrait of player\n- \"Fight\" button (large, prominent)\n- \"Shop\" button\n- Current coins display\n- Current opponent indicator\n\n**Shop Screen**:\n- Tabs: \"Upgrades\", \"Equipment\", \"Skills\"\n- Grid layout of purchasable items\n- Each item shows: icon, name, description, cost, owned status\n- \"Back\" button to return to main menu\n\n### Opponent Progression\n\n1. **Rookie Rudi** - Beginner opponent, slow and steady\n2. **Steady Sam** - Intermediate, consistent tapping\n3. **Rapid Rita** - Advanced, fast with burst patterns\n4. *(Future)* **Power Pete** - Expert, high power taps\n5. *(Future)* **Champion Chandra** - Final boss, adaptive AI\n\nEach opponent has unique visual design and personality reflected in their character portrait.\n\n## Edit Mode Design\n\nPlayers can customize the following in Edit Mode:\n\n### Editable Properties\n\n**Player Stats**:\n- Starting coins (0-10000)\n- Base power level (1-10)\n- Base stamina level (1-10)\n\n**Opponent Difficulty**:\n- Each opponent's tap speed multiplier (0.5-2.0)\n- Each opponent's power multiplier (0.5-2.0)\n- Coin reward per opponent (10-500)\n\n**Shop Prices**:\n- Cost of each upgrade tier\n- Cost of each equipment item\n- Cost of each skill\n\n**Item Properties**:\n- Effect strength of each equipment item\n- Number of uses per match for each item\n- Cooldown duration for items\n\n**Match Settings**:\n- Win threshold (50-150)\n- Stamina drain rate (0.5-2.0)\n- Stamina regen rate (0.5-2.0)\n\n### Constraints\n\n- All numeric values have reasonable min/max ranges to prevent broken gameplay\n- At least one opponent must be unlocked at start\n- Shop items must have positive costs\n- Win threshold must be achievable\n\n## Control Design\n\n### Mobile (Touch) Controls\n\n**Match Screen**:\n- **Tap Area** (bottom 40% of screen): Large, clearly marked area for rapid tapping\n  - Visual feedback on each tap (ripple effect, button press animation)\n  - Tap anywhere in this zone to generate power\n- **Item Buttons** (3 buttons above tap area): Each equipped item has a button to activate\n  - Minimum 96x96px touch targets\n  - Shows item icon, name, and remaining uses\n  - Disabled state when no uses left or on cooldown\n\n**Menu Navigation**:\n- **Tap to select**: All menu buttons, shop items, opponent selection\n- **Swipe**: Optional for browsing shop categories\n\n### Desktop (Keyboard/Mouse) Controls\n\n**Match Screen**:\n- **Spacebar or Left Mouse Click**: Tap to generate power\n  - Can click anywhere on screen or press spacebar repeatedly\n- **Number Keys 1-3**: Activate equipped items 1, 2, 3\n- **Mouse Click on Item Buttons**: Alternative way to activate items\n\n**Menu Navigation**:\n- **Mouse Click**: Navigate all menus, purchase items, select opponents\n- **Arrow Keys + Enter**: Alternative keyboard navigation\n\n### Input Handling\n\n- Track tap/click rate to calculate power generation\n- Prevent accidental double-taps (minimum 50ms between valid taps)\n- Visual and audio feedback for every valid tap\n- Clear indication when stamina is low (red pulsing stamina bar)\n- Disable tap input during victory/defeat animations\n\n## Art Style and Visual Theme\n\n### Overall Style\n**Cartoon/Comic Book Style** with bold outlines, vibrant colors, and exaggerated character designs. The aesthetic should be fun, energetic, and slightly humorous - think mobile game polish with personality.\n\n### Color Palette\n- **Primary**: Bold reds, oranges, and yellows for energy and action\n- **Secondary**: Blues and greens for UI elements and contrast\n- **Accents**: Gold for coins, purple for special/cheat items\n- **Backgrounds**: Warm, inviting colors that don't distract from gameplay\n\n### Character Design\n- **Exaggerated proportions**: Large muscular arms, expressive faces\n- **Distinct silhouettes**: Each opponent should be recognizable by shape alone\n- **Personality through design**: Clothing, accessories, and expressions convey character\n- **Consistent style**: All characters share the same art style and level of detail\n\n### UI Design\n- **Bold, readable fonts**: Clear hierarchy with large text for important info\n- **Rounded buttons**: Friendly, approachable interface\n- **Icon-based**: Equipment and skills represented by clear, simple icons\n- **Animated elements**: Subtle animations for buttons, transitions, and feedback\n\n### Technical Approach\n- **Generated Assets**: Character portraits, equipment icons, background elements\n- **Code-Rendered**: UI elements (buttons, bars, meters), simple shapes, text\n- **Consistent Scale**: All character portraits at same resolution, all icons at same size", "persistent_storage_config": null, "game_metadata": {"game_id": "01KQKD4CRP6VBGH1T4MG87MQWK", "title": "Arm Wrestling King", "description": "Master arm wrestling through rapid taps, strategic power-ups, and secret cheats to defeat increasingly tough opponents!", "thumbnail_url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/thumbnail_c3ba21ce-2d98-499c-995c-c5c2b31f318e.webp", "created_at": 1777694103, "updated_at": 1785902410780.4763, "art_style": null}, "task_plan": null}