diff --git a/assets/menu/sonofsolo-select.webp b/assets/menu/sonofsolo-select.webp
new file mode 100644
index 0000000..b8f4db1
Binary files /dev/null and b/assets/menu/sonofsolo-select.webp differ
diff --git a/assets/sonofsolo/manifest.js b/assets/sonofsolo/manifest.js
new file mode 100644
index 0000000..4e0cf91
--- /dev/null
+++ b/assets/sonofsolo/manifest.js
@@ -0,0 +1,2 @@
+window.FIGHTERS=window.FIGHTERS||{};
+window.FIGHTERS.sonofsolo={"id": "sonofsolo", "name": "SON OF SOLO MAN", "tag": "THE ACID HEIR", "race": "HUMAN", "title": "ACID HEIR", "color": "#7bd23c", "status": "COOL HEADED", "select": "assets/menu/sonofsolo-select.webp", "detail": "A calm stare, a flask, and an acid storm.", "style": "Zoner / acid flask and shouts", "balance": {"cooldowns": {"skill1": 4, "skill2": 7, "ultimate": 22}, "castTime": 0.5, "basicRefund": 0.05}, "names": ["JAB CEPAT", "ASAM SULFAT", "TERIAKAN", "HUJAN ASAM"], "combo": [{"damage": 6, "knockback": 80, "reach": 105, "duration": 0.34, "hitAt": 0.5}, {"damage": 8, "knockback": 110, "reach": 105, "duration": 0.38, "hitAt": 0.5}, {"damage": 12, "knockback": 220, "reach": 120, "duration": 0.5, "hitAt": 0.58}], "skills": {"skill1": {"kind": "lob", "damage": 14, "rise": 700, "gravity": 1800, "radius": 115, "dps": 6, "puddleLife": 3.5, "puddle": "puddle", "asset": "flask", "size": 90, "knockback": 160, "duration": 0.6, "hitAt": 0.55}, "skill2": {"kind": "projectile", "damage": 15, "speed": 820, "range": 560, "size": 170, "knockback": 200, "duration": 0.6, "hitAt": 0.5, "asset": "soundwave"}}, "ultimate": {"kind": "rain", "asset": "drop", "count": 14, "gap": 0.12, "damage": 3, "radius": 105, "spread": 380, "size": 150, "delay": 0.4, "hold": 1.1, "settle": 0.6, "finisher": {"damage": 28, "asset": "burst"}}, "fx": ["acidspray", "bigpuddle", "burst", "drop", "flask", "impact", "puddle", "soundwave"], "cutin": {"a": "#0b1d0b", "b": "#2f6b1c", "kicker": "#d6ffb0", "title": "HUJAN
ASAM", "detail": "ACID DOWNPOUR"}, "manifest": {"characterId": "sonofsolo", "engine": "component-row", "game_input": "sprite-sheet-alpha.png", "degraded_static_fallback": false, "curation_applied": false, "frame_variant": "pixel", "sprite_sheet_alpha": "sprite-sheet-alpha.webp", "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", "base_image": "base-source.png", "cell": {"shape": "rect", "width": 320, "height": 288, "safe_margin_x": 10, "safe_margin_y": 8}, "chroma_key": {"name": "magenta", "hex": "#FF00FF", "rgb": [255, 0, 255], "selection": "manual"}, "animation": {"cellWidth": 320, "cellHeight": 288, "columns": 4, "rows": {"idle": {"row": 0, "frames": 4, "fps": 5, "durations_ms": [200, 200, 200, 200], "loop": true, "frame_variant": "pixel"}, "walk": {"row": 1, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": true, "frame_variant": "pixel"}, "run": {"row": 2, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": true, "frame_variant": "pixel"}, "jump": {"row": 3, "frames": 1, "fps": 10, "durations_ms": [100], "loop": false, "frame_variant": "pixel"}, "doublejump": {"row": 4, "frames": 1, "fps": 12, "durations_ms": [83], "loop": false, "frame_variant": "pixel"}, "crouch": {"row": 5, "frames": 4, "fps": 8, "durations_ms": [125, 125, 125, 125], "loop": false, "frame_variant": "pixel"}, "attack1": {"row": 6, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack2": {"row": 7, "frames": 4, "fps": 13, "durations_ms": [77, 77, 77, 77], "loop": false, "frame_variant": "pixel"}, "attack3": {"row": 8, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill1": {"row": 9, "frames": 4, "fps": 11, "durations_ms": [91, 91, 91, 91], "loop": false, "frame_variant": "pixel"}, "skill2": {"row": 10, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}, "ultimate": {"row": 11, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "hurt": {"row": 12, "frames": 4, "fps": 9, "durations_ms": [111, 111, 111, 111], "loop": false, "frame_variant": "pixel"}, "down": {"row": 13, "frames": 4, "fps": 7, "durations_ms": [143, 143, 143, 143], "loop": false, "frame_variant": "pixel"}, "recover": {"row": 14, "frames": 4, "fps": 10, "durations_ms": [100, 100, 100, 100], "loop": false, "frame_variant": "pixel"}}}, "frame_layout": {"sheetWidth": 1280, "sheetHeight": 4320, "cellWidth": 320, "cellHeight": 288, "rows": {"idle": [{"x": 0, "y": 0, "w": 320, "h": 288}, {"x": 320, "y": 0, "w": 320, "h": 288}, {"x": 640, "y": 0, "w": 320, "h": 288}, {"x": 960, "y": 0, "w": 320, "h": 288}], "walk": [{"x": 0, "y": 288, "w": 320, "h": 288}, {"x": 320, "y": 288, "w": 320, "h": 288}, {"x": 640, "y": 288, "w": 320, "h": 288}, {"x": 960, "y": 288, "w": 320, "h": 288}], "run": [{"x": 0, "y": 576, "w": 320, "h": 288}, {"x": 320, "y": 576, "w": 320, "h": 288}, {"x": 640, "y": 576, "w": 320, "h": 288}, {"x": 960, "y": 576, "w": 320, "h": 288}], "jump": [{"x": 0, "y": 864, "w": 320, "h": 288}], "doublejump": [{"x": 0, "y": 1152, "w": 320, "h": 288}], "crouch": [{"x": 0, "y": 1440, "w": 320, "h": 288}, {"x": 320, "y": 1440, "w": 320, "h": 288}, {"x": 640, "y": 1440, "w": 320, "h": 288}, {"x": 960, "y": 1440, "w": 320, "h": 288}], "attack1": [{"x": 0, "y": 1728, "w": 320, "h": 288}, {"x": 320, "y": 1728, "w": 320, "h": 288}, {"x": 640, "y": 1728, "w": 320, "h": 288}, {"x": 960, "y": 1728, "w": 320, "h": 288}], "attack2": [{"x": 0, "y": 2016, "w": 320, "h": 288}, {"x": 320, "y": 2016, "w": 320, "h": 288}, {"x": 640, "y": 2016, "w": 320, "h": 288}, {"x": 960, "y": 2016, "w": 320, "h": 288}], "attack3": [{"x": 0, "y": 2304, "w": 320, "h": 288}, {"x": 320, "y": 2304, "w": 320, "h": 288}, {"x": 640, "y": 2304, "w": 320, "h": 288}, {"x": 960, "y": 2304, "w": 320, "h": 288}], "skill1": [{"x": 0, "y": 2592, "w": 320, "h": 288}, {"x": 320, "y": 2592, "w": 320, "h": 288}, {"x": 640, "y": 2592, "w": 320, "h": 288}, {"x": 960, "y": 2592, "w": 320, "h": 288}], "skill2": [{"x": 0, "y": 2880, "w": 320, "h": 288}, {"x": 320, "y": 2880, "w": 320, "h": 288}, {"x": 640, "y": 2880, "w": 320, "h": 288}, {"x": 960, "y": 2880, "w": 320, "h": 288}], "ultimate": [{"x": 0, "y": 3168, "w": 320, "h": 288}, {"x": 320, "y": 3168, "w": 320, "h": 288}, {"x": 640, "y": 3168, "w": 320, "h": 288}, {"x": 960, "y": 3168, "w": 320, "h": 288}], "hurt": [{"x": 0, "y": 3456, "w": 320, "h": 288}, {"x": 320, "y": 3456, "w": 320, "h": 288}, {"x": 640, "y": 3456, "w": 320, "h": 288}, {"x": 960, "y": 3456, "w": 320, "h": 288}], "down": [{"x": 0, "y": 3744, "w": 320, "h": 288}, {"x": 320, "y": 3744, "w": 320, "h": 288}, {"x": 640, "y": 3744, "w": 320, "h": 288}, {"x": 960, "y": 3744, "w": 320, "h": 288}], "recover": [{"x": 0, "y": 4032, "w": 320, "h": 288}, {"x": 320, "y": 4032, "w": 320, "h": 288}, {"x": 640, "y": 4032, "w": 320, "h": 288}, {"x": 960, "y": 4032, "w": 320, "h": 288}]}}}, "metrics": {"anchor": {"x": 160, "y": 280}, "states": {"idle": {"frames": [{"frame": 0, "bounds": {"left": -33, "right": 38, "top": -180, "bottom": 0}, "height": 180}, {"frame": 1, "bounds": {"left": -33, "right": 38, "top": -183, "bottom": 0}, "height": 183}, {"frame": 2, "bounds": {"left": -33, "right": 38, "top": -180, "bottom": 0}, "height": 180}, {"frame": 3, "bounds": {"left": -32, "right": 39, "top": -180, "bottom": 0}, "height": 180}]}, "walk": {"frames": [{"frame": 0, "bounds": {"left": -42, "right": 45, "top": -167, "bottom": 0}, "height": 167}, {"frame": 1, "bounds": {"left": -27, "right": 37, "top": -170, "bottom": 0}, "height": 170}, {"frame": 2, "bounds": {"left": -42, "right": 45, "top": -168, "bottom": 0}, "height": 168}, {"frame": 3, "bounds": {"left": -26, "right": 45, "top": -168, "bottom": 0}, "height": 168}]}, "run": {"frames": [{"frame": 0, "bounds": {"left": -56, "right": 52, "top": -145, "bottom": 0}, "height": 145}, {"frame": 1, "bounds": {"left": -16, "right": 72, "top": -145, "bottom": 0}, "height": 145}, {"frame": 2, "bounds": {"left": -66, "right": 50, "top": -146, "bottom": 0}, "height": 146}, {"frame": 3, "bounds": {"left": -26, "right": 63, "top": -139, "bottom": 0}, "height": 139}]}, "jump": {"frames": [{"frame": 0, "bounds": {"left": -15, "right": 71, "top": -150, "bottom": 0}, "height": 150}]}, "doublejump": {"frames": [{"frame": 0, "bounds": {"left": -35, "right": 36, "top": -111, "bottom": 0}, "height": 111}]}, "crouch": {"frames": [{"frame": 0, "bounds": {"left": -36, "right": 58, "top": -147, "bottom": 0}, "height": 147}, {"frame": 1, "bounds": {"left": -32, "right": 55, "top": -132, "bottom": 0}, "height": 132}, {"frame": 2, "bounds": {"left": -37, "right": 51, "top": -135, "bottom": 0}, "height": 135}, {"frame": 3, "bounds": {"left": -35, "right": 54, "top": -146, "bottom": 0}, "height": 146}]}, "attack1": {"frames": [{"frame": 0, "bounds": {"left": -46, "right": 49, "top": -162, "bottom": 0}, "height": 162}, {"frame": 1, "bounds": {"left": -47, "right": 58, "top": -161, "bottom": 0}, "height": 161}, {"frame": 2, "bounds": {"left": -50, "right": 78, "top": -162, "bottom": 0}, "height": 162}, {"frame": 3, "bounds": {"left": -48, "right": 51, "top": -162, "bottom": 0}, "height": 162}]}, "attack2": {"frames": [{"frame": 0, "bounds": {"left": -44, "right": 51, "top": -158, "bottom": 0}, "height": 158}, {"frame": 1, "bounds": {"left": -45, "right": 61, "top": -158, "bottom": 0}, "height": 158}, {"frame": 2, "bounds": {"left": -48, "right": 74, "top": -159, "bottom": 0}, "height": 159}, {"frame": 3, "bounds": {"left": -46, "right": 53, "top": -159, "bottom": 0}, "height": 159}]}, "attack3": {"frames": [{"frame": 0, "bounds": {"left": -48, "right": 52, "top": -146, "bottom": 0}, "height": 146}, {"frame": 1, "bounds": {"left": -51, "right": 83, "top": -147, "bottom": 0}, "height": 147}, {"frame": 2, "bounds": {"left": -58, "right": 62, "top": -124, "bottom": 0}, "height": 124}, {"frame": 3, "bounds": {"left": -33, "right": 40, "top": -163, "bottom": 0}, "height": 163}]}, "skill1": {"frames": [{"frame": 0, "bounds": {"left": -53, "right": 45, "top": -138, "bottom": 0}, "height": 138}, {"frame": 1, "bounds": {"left": -46, "right": 47, "top": -141, "bottom": 0}, "height": 141}, {"frame": 2, "bounds": {"left": -45, "right": 75, "top": -139, "bottom": 0}, "height": 139}, {"frame": 3, "bounds": {"left": -42, "right": 61, "top": -135, "bottom": 0}, "height": 135}]}, "skill2": {"frames": [{"frame": 0, "bounds": {"left": -47, "right": 52, "top": -182, "bottom": 0}, "height": 182}, {"frame": 1, "bounds": {"left": -47, "right": 52, "top": -182, "bottom": 0}, "height": 182}, {"frame": 2, "bounds": {"left": -48, "right": 52, "top": -182, "bottom": 0}, "height": 182}, {"frame": 3, "bounds": {"left": -49, "right": 81, "top": -182, "bottom": 0}, "height": 182}]}, "ultimate": {"frames": [{"frame": 0, "bounds": {"left": -46, "right": 50, "top": -111, "bottom": 0}, "height": 111}, {"frame": 1, "bounds": {"left": -58, "right": 57, "top": -141, "bottom": 0}, "height": 141}, {"frame": 2, "bounds": {"left": -53, "right": 46, "top": -143, "bottom": 0}, "height": 143}, {"frame": 3, "bounds": {"left": -57, "right": 47, "top": -154, "bottom": 0}, "height": 154}]}, "hurt": {"frames": [{"frame": 0, "bounds": {"left": -51, "right": 48, "top": -157, "bottom": 0}, "height": 157}, {"frame": 1, "bounds": {"left": -76, "right": 50, "top": -156, "bottom": 0}, "height": 156}, {"frame": 2, "bounds": {"left": -39, "right": 50, "top": -146, "bottom": 0}, "height": 146}, {"frame": 3, "bounds": {"left": -40, "right": 46, "top": -152, "bottom": 0}, "height": 152}]}, "down": {"frames": [{"frame": 0, "bounds": {"left": -64, "right": 39, "top": -119, "bottom": 0}, "height": 119}, {"frame": 1, "bounds": {"left": -71, "right": 43, "top": -83, "bottom": 0}, "height": 83}, {"frame": 2, "bounds": {"left": -51, "right": 73, "top": -64, "bottom": 0}, "height": 64}, {"frame": 3, "bounds": {"left": -72, "right": 63, "top": -44, "bottom": 0}, "height": 44}]}, "recover": {"frames": [{"frame": 0, "bounds": {"left": -78, "right": 67, "top": -57, "bottom": 0}, "height": 57}, {"frame": 1, "bounds": {"left": -61, "right": 43, "top": -93, "bottom": 0}, "height": 93}, {"frame": 2, "bounds": {"left": -38, "right": 43, "top": -100, "bottom": 0}, "height": 100}, {"frame": 3, "bounds": {"left": -41, "right": 43, "top": -128, "bottom": 0}, "height": 128}]}}, "emitters": {"attack1": {"x": 78, "y": -109, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack2": {"x": 74, "y": -106, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "attack3": {"x": 62, "y": -40, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill1": {"x": 75, "y": -121, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "skill2": {"x": 52, "y": -55, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}, "ultimate": {"x": 46, "y": -58, "frame": 2, "method": "Farthest-right opaque tip on the impact frame, facing right"}}, "playback": {"jump": {"airFrame": 0, "torsoPivot": {"x": 28, "y": -75}}, "doublejump": {"frame": 0, "duration": 0.28, "pivot": {"x": 0, "y": -56}}, "measurement": "Measured from the final atlas; no runtime resizing."}}, "mode": {"name": "MODE ASAM", "label": "ASAM", "announce": "MODE ASAM!", "duration": 10, "damageMul": 1.35, "speedMul": 1.2, "reachAdd": 20, "aura": "#9dff3c", "cooldowns": {"skill1": 5, "skill2": 8}, "names": ["JAB BERASAM", "SEMPROT ASAM", "GENANGAN LUAS", "BADAI ASAM"], "skills": {"skill1": {"kind": "wave", "damage": 20, "speed": 680, "range": 580, "size": 320, "tall": 200, "knockback": 220, "duration": 0.6, "hitAt": 0.5, "asset": "acidspray", "pierce": true}, "skill2": {"kind": "lob", "damage": 18, "rise": 760, "gravity": 1800, "radius": 190, "dps": 9, "puddleLife": 5, "puddle": "bigpuddle", "asset": "flask", "size": 110, "knockback": 200, "duration": 0.62, "hitAt": 0.55}}, "ultimate": {"kind": "rain", "asset": "drop", "count": 22, "gap": 0.09, "damage": 4, "radius": 125, "spread": 560, "size": 170, "delay": 0.4, "hold": 1.1, "settle": 0.6, "finisher": {"damage": 34, "asset": "burst"}}, "cutin": {"a": "#031a03", "b": "#4aa21c", "kicker": "#e4ffb8", "title": "BADAI
ASAM", "detail": "THE ACID STORM"}}};
diff --git a/assets/sonofsolo/run/sprite-sheet-alpha.webp b/assets/sonofsolo/run/sprite-sheet-alpha.webp
new file mode 100644
index 0000000..6e3dc66
Binary files /dev/null and b/assets/sonofsolo/run/sprite-sheet-alpha.webp differ
diff --git a/assets/sonofsolo/ui/cutin-mode.webp b/assets/sonofsolo/ui/cutin-mode.webp
new file mode 100644
index 0000000..138e0e6
Binary files /dev/null and b/assets/sonofsolo/ui/cutin-mode.webp differ
diff --git a/assets/sonofsolo/ui/cutin.webp b/assets/sonofsolo/ui/cutin.webp
new file mode 100644
index 0000000..f23dfd3
Binary files /dev/null and b/assets/sonofsolo/ui/cutin.webp differ
diff --git a/assets/sonofsolo/ui/fx-acidspray.webp b/assets/sonofsolo/ui/fx-acidspray.webp
new file mode 100644
index 0000000..52c0ec5
Binary files /dev/null and b/assets/sonofsolo/ui/fx-acidspray.webp differ
diff --git a/assets/sonofsolo/ui/fx-bigpuddle.webp b/assets/sonofsolo/ui/fx-bigpuddle.webp
new file mode 100644
index 0000000..06dda1d
Binary files /dev/null and b/assets/sonofsolo/ui/fx-bigpuddle.webp differ
diff --git a/assets/sonofsolo/ui/fx-burst.webp b/assets/sonofsolo/ui/fx-burst.webp
new file mode 100644
index 0000000..fa040d2
Binary files /dev/null and b/assets/sonofsolo/ui/fx-burst.webp differ
diff --git a/assets/sonofsolo/ui/fx-drop.webp b/assets/sonofsolo/ui/fx-drop.webp
new file mode 100644
index 0000000..38485b5
Binary files /dev/null and b/assets/sonofsolo/ui/fx-drop.webp differ
diff --git a/assets/sonofsolo/ui/fx-flask.webp b/assets/sonofsolo/ui/fx-flask.webp
new file mode 100644
index 0000000..e3a7752
Binary files /dev/null and b/assets/sonofsolo/ui/fx-flask.webp differ
diff --git a/assets/sonofsolo/ui/fx-impact.webp b/assets/sonofsolo/ui/fx-impact.webp
new file mode 100644
index 0000000..54c0ca7
Binary files /dev/null and b/assets/sonofsolo/ui/fx-impact.webp differ
diff --git a/assets/sonofsolo/ui/fx-puddle.webp b/assets/sonofsolo/ui/fx-puddle.webp
new file mode 100644
index 0000000..021425e
Binary files /dev/null and b/assets/sonofsolo/ui/fx-puddle.webp differ
diff --git a/assets/sonofsolo/ui/fx-soundwave.webp b/assets/sonofsolo/ui/fx-soundwave.webp
new file mode 100644
index 0000000..af5a863
Binary files /dev/null and b/assets/sonofsolo/ui/fx-soundwave.webp differ
diff --git a/assets/sonofsolo/ui/icon-basic.webp b/assets/sonofsolo/ui/icon-basic.webp
new file mode 100644
index 0000000..33b73ae
Binary files /dev/null and b/assets/sonofsolo/ui/icon-basic.webp differ
diff --git a/assets/sonofsolo/ui/icon-mode-skill1.webp b/assets/sonofsolo/ui/icon-mode-skill1.webp
new file mode 100644
index 0000000..f7fd37c
Binary files /dev/null and b/assets/sonofsolo/ui/icon-mode-skill1.webp differ
diff --git a/assets/sonofsolo/ui/icon-mode-skill2.webp b/assets/sonofsolo/ui/icon-mode-skill2.webp
new file mode 100644
index 0000000..3e0f772
Binary files /dev/null and b/assets/sonofsolo/ui/icon-mode-skill2.webp differ
diff --git a/assets/sonofsolo/ui/icon-mode-ultimate.webp b/assets/sonofsolo/ui/icon-mode-ultimate.webp
new file mode 100644
index 0000000..e29cfcc
Binary files /dev/null and b/assets/sonofsolo/ui/icon-mode-ultimate.webp differ
diff --git a/assets/sonofsolo/ui/icon-skill1.webp b/assets/sonofsolo/ui/icon-skill1.webp
new file mode 100644
index 0000000..f942417
Binary files /dev/null and b/assets/sonofsolo/ui/icon-skill1.webp differ
diff --git a/assets/sonofsolo/ui/icon-skill2.webp b/assets/sonofsolo/ui/icon-skill2.webp
new file mode 100644
index 0000000..a73f9f8
Binary files /dev/null and b/assets/sonofsolo/ui/icon-skill2.webp differ
diff --git a/assets/sonofsolo/ui/icon-ultimate.webp b/assets/sonofsolo/ui/icon-ultimate.webp
new file mode 100644
index 0000000..e05087a
Binary files /dev/null and b/assets/sonofsolo/ui/icon-ultimate.webp differ
diff --git a/assets/sonofsolo/ui/portrait.webp b/assets/sonofsolo/ui/portrait.webp
new file mode 100644
index 0000000..bb81e8a
Binary files /dev/null and b/assets/sonofsolo/ui/portrait.webp differ
diff --git a/game.js b/game.js
index 9b31bcb..5cf8b2e 100644
--- a/game.js
+++ b/game.js
@@ -2120,17 +2120,19 @@
if(id==='mira')return {name:'MIRA',cls:'MECHA',deck:'MIRA',title:'CANDY PILOT',portrait:'assets/mira/ui/portrait.webp',names:M.names,icons:['basic','skill1','skill2','ultimate'].map(s=>'assets/mira/ui/icon-'+s+'.webp')};
return {name:'ARCO',cls:'MECHA',deck:'ARCO',title:'AETHER ARM',portrait:'assets/ui/arco-avatar.webp',names:['IRON CHAIN','AETHER BOLT','SEISMIC DRIVE','HELIOS SQUADRON'],icons:['attack','skill1','skill2','squadron-icon'].map(s=>'assets/ui/'+s+'.webp')};
}
+ // Long fighter names (SON OF SOLO MAN) shrink so they stay on one line above the health bar.
+ function hudFit(el, name) { el.style.fontSize = ''; if (name.length > 10) { const fs = parseFloat(getComputedStyle(el).fontSize); if (fs) el.style.fontSize = (fs * Math.min(1, 10 / name.length) * 1.05) + 'px'; } }
function updateFighterIdentity() {
if(!F)return;
const identity=selectedCharacter+(bwx.rage.player>0&&modeOf(selectedCharacter)?'*mode':'')+':'+hero.form+':'+opponentCharacter+':'+dummy.form;
if(identity!==hudIdentity) {
hudIdentity=identity;const me=fighterInfo(selectedCharacter,hero.form),rival=fighterInfo(opponentCharacter,dummy.form);
if(bwx.rage.player>0&&modeOf(selectedCharacter)){const M=modeOf(selectedCharacter);me.names=M.names;me.icons=M.icons.map(n=>'assets/'+selectedCharacter+'/ui/icon-'+n+'.webp');}
- $('#player-name').textContent=me.name;$('#player-class').textContent=me.cls;$('#deck-character').textContent=me.deck;
+ $('#player-name').textContent=me.name;hudFit($('#player-name'),me.name);$('#player-class').textContent=me.cls;$('#deck-character').textContent=me.deck;
$('#player-title').textContent=me.title;
$('#player-portrait').src=me.portrait;$('#player-portrait').alt='Portrait '+me.name;
- $('#enemy-portrait').src=rival.portrait;$('#enemy-portrait').alt='Portrait '+opponentCharacter.toUpperCase();$('#enemy-class').textContent=rival.cls;
- $('#enemy-name').textContent=opponentCharacter.toUpperCase();$('#enemy-title').textContent=rival.title;
+ $('#enemy-portrait').src=rival.portrait;$('#enemy-portrait').alt='Portrait '+rival.name;$('#enemy-class').textContent=rival.cls;
+ $('#enemy-name').textContent=rival.name;hudFit($('#enemy-name'),rival.name);$('#enemy-title').textContent=rival.title;
$('.fighter-two').setAttribute('aria-label','Status lawan '+opponentCharacter.toUpperCase());
document.querySelectorAll('.skill-card').forEach((card,i)=>{card.querySelector('.skill-name').textContent=me.names[i];card.querySelector('img').src=me.icons[i];card.setAttribute('aria-label',me.names[i]+', '+['Spasi','I','O','P'][i]);});
}
diff --git a/index.html b/index.html
index 2b910a2..5ad90cc 100644
--- a/index.html
+++ b/index.html
@@ -21,8 +21,8 @@