• NodeMapUI: card upgrade picker uses the real combat card prefab (via SharedCardPrefab cache) so upgraded art matches in-hand visuals. Event pool filtered by IsEventUnlocked. Event choice previews show +X gold, -Card, -Gear, FIGHT (N enemies), etc.
  • ShopUI: build-path weighting now 1.5x spec / 0.5x off-spec class / 1.0x neutral (was 3x / 0.25x — too dominant). Shop never sells at-cap cards or cross-class weapons. Pool filtered by meta unlocks.
  • CharacterScreen: cross-class weapons show “WRONG CLASS” instead of a live EQUIP button.
  • CardRewardUI: routes through TryAddCardToDeck for copy-cap.
  • NodeMapManager / NodeMapSceneSetup: run-complete path routed through MetaProgress.RecordRunEnded so tokens + difficulty unlocks fire consistently.

Commit d8a4ec4 by astafford8488.