[visual][arena] Unify numeric precision on Arena buy panel (CL8Y / CHARM / launch projection)
## Summary
During local-stack visual QA ([#164](https://gitlab.com/PlasticDigits/yieldomega/-/issues/164)), the Arena buy hub showed **inconsistent decimal precision** across related amounts (for example 18-decimal CL8Y spend input vs fewer decimals on CHARM output vs **“Worth at launch ≈”** display). Nothing was broken functionally; this is **P3 polish** for readability and trust.
## What is wrong
Sibling numeric fields on `/timecurve/arena` use **different rounding / sig-fig rules** side by side, which reads as sloppy or ambiguous during comparison.
## Expected
Per-surface rules should be **documented and consistent** (e.g. align CHARM band labels with the same precision policy as Simple page, or explicitly label precision like “≈”). Users should not see **arbitrary mixing** of 2-, 3-, and 18-decimal presentations for the same logical step without explanation.
## Relevant docs / skills / files
- Umbrella QA: [#164](https://gitlab.com/PlasticDigits/yieldomega/-/issues/164) §6 item 6 (fee surfaces — partial walk).
- Invariants / UX map: [`docs/testing/invariants-and-business-logic.md`](docs/testing/invariants-and-business-logic.md) (Arena / TimeCurve sections).
- Views: [`docs/frontend/timecurve-views.md`](docs/frontend/timecurve-views.md).
- Likely implementation: [`frontend/src/pages/timeCurveArena/TimeCurveArenaView.tsx`](frontend/src/pages/timeCurveArena/TimeCurveArenaView.tsx), [`frontend/src/pages/timeCurveArena/useTimeCurveArenaModel.tsx`](frontend/src/pages/timeCurveArena/useTimeCurveArenaModel.tsx), shared math/format helpers under [`frontend/src/lib/timeCurveMath.ts`](frontend/src/lib/timeCurveMath.ts), [`frontend/src/lib/timeCurvePodiumMath.ts`](frontend/src/lib/timeCurvePodiumMath.ts).
## Recommended fix
1. Define one **display policy** for Arena buy hub (input, derived CHARM, USD/CL8Y hints, launch projection): fixed decimals vs significant figures.
2. Apply shared formatters (reuse Simple page helpers where appropriate) so **related numbers update together** without visual mismatch.
3. Add a short **contributor note** in `timecurve-views.md` or invariants if the policy differs from Simple intentionally.
## Acceptance criteria
- [ ] CL8Y spend, CHARM preview, and **Worth at launch** (if shown) follow a **single documented** precision scheme on Arena buy hub.
- [ ] No unexplained **order-of-magnitude** jumps in digit count between adjacent labels on the same card.
- [ ] Responsive breakpoints do not clip formatted strings introduced by the change.
## Verification checklist
- [ ] `/timecurve/arena` with funded wallet: compare Arena vs Simple for same band — formatting intent matches docs.
- [ ] Very small and very large CHARM/CL8Y values — no scientific notation surprises (cross-check [#164](https://gitlab.com/PlasticDigits/yieldomega/-/issues/164) §6.4 / §6.5).
- [ ] Snapshot or manual QA note attached to this issue when done.
/cc @Brouie — tracked from [#164](https://gitlab.com/PlasticDigits/yieldomega/-/issues/164) §6.6 polish nit.
issue