He has 16663 HP on hard, (on normal it's 16000 and HM bonuses are 50% to health, but that is the health cap) and on average you will do about 600-900 dmg, but he recovers 200 HP at the end of every turn. His stats are extremely high, and hard mode increases them by 25%. He also moves several times per turn.
He can summon Charon with no cost to him every few turns, including the first. Charon does a ton of earth-based dmg and has a chance to instantly KO enemies, based on the luck of the user and the targets. Considering he has 59 Luck out of 99 and at most you may have 36 on one person, that's a good chance. Except for the first turn, he'll always show you that he's going to summon him either on his next move or the next turn after using Element Swap.
He has a strong single target attack that can easily KO or seriously injure your squishier characters.
He has a 3 target drain attack which does about 250 dmg, while your party can hit a max of 1999 HP, but will probably have about 800-1200 HP.
And finally the most evil move he can use, Djinn Storm. DS puts all 9 Djinn that each character in the front party on Recovery. This is really bad because Djinn are absolutely useless on Recovery. If they're Set, they give stat bonuses and affect the class of the character that has them equipped, as well as being able to unleash them which activate their special ability, putting them on Standby, where they provide no bonuses but can be used to summon. Summoning puts a Djinn on Recovery where they cannot do anything, your characters have lower stats, and possibly a different class, and all recover one at a time from each character. Since Djinn Storm puts them all on Recovery, you are stuck with the cruddy classes from the beginning of the game. Oh and he does it without warning.
So basically the fight comes down to
Doing damage, healing, reviving from Charon, switching Djinn Stormed characters with characters from the back party, waiting for everyone to recover and repeat.