Great job! The game plays very intuitively, even without reading the description. Ending the game "early" when no units remain is also a nice touch.
A quick tweak I'd like to suggest is to allow lower level units to capture higher level units, it'll make the tactics more fair. The lower level units already can't move far, are ridiculously expensive late game, and has lower price-to-value as a pair at capturing land as a pair (for defense) compared to higher levels.
Also more work can be put on the AI to be more strategic at defending territory and units: not leaving entire sides open to enemy conquest or putting units into "danger" without other units "defending" them.