Subscription plans can carry a display-only ISO currency code, but the admin plan table and user plan cards still used a hard-coded dollar sign. Resolve the symbol through the shared currency helper while retaining existing number formatting, the currency code label, and legacy blank-currency behavior.
Constraint: Plans without a currency must keep the legacy USD display
Rejected: Reformat complete prices with Intl.NumberFormat | it would change existing decimals and remove the explicit currency code
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep plan currency symbols aligned across admin and user displays
Tested: targeted Vitest 4 tests; targeted ESLint; vue-tsc; Vite production build; full Vitest 1222 tests passed
Not-tested: Full Vitest has 2 unrelated upstream failures in admin.system.rollback.spec.ts
Related: https://github.com/Wei-Shaw/sub2api/issues/4609