- Locked gates (neutral → faction, below minLevel) now render their
swirling center in the controlling faction's hue as an in-world
"that gate belongs to someone" tell, complementing the comm window's
grayed REQUEST JUMP and lock message.
- JumpGate.setFactionTint tints the active swirl (setTint) or recolors
the procedural fallback field discs; null clears back to the ordinary
swirl. Falsy-but-valid hues (e.g. 0x000000) are not treated as clear.
- GameScene.gateFactionTintFor resolves the destination faction's color;
_refreshGateFactionTints re-resolves all gates at build, once the XP
ledger exists (save may have already lifted the lock), and on each
level-up event to clear tints as the lock lifts.
- Test harness extended with setTint/setFillStyle mocks; new checks cover
tint apply/clear/falsy-hue on the sprite path and field-disc recolor
+ restore on the fallback path.