- Shipped
- May 18, 2026 at 12:51 AM UTC
- Author
- Kamo
- Commit
- b8e13d7
1. Accessibility: - StatusBanner gets role=status + aria-live, an inline icon (so success/warn isn't conveyed by colour alone), and a contrast bump from text-{teal,amber}-300 to text-{teal,amber}-200 over the 10% background (now passes WCAG AA ~4.7:1 on the dark theme). - RouteFocus mounts in the root layout and moves keyboard/SR focus to #main-content on every client-side route change, so screen-reader users land somewhere meaningful instead of on a stale link in the unmounted page. 2. Post-submission timeline (/apply/done): replaces the cliff-edge "🎉 Application submitted. We'll be in touch with next steps." with a real 6-step timeline (Today → 24h → days 2-5 → week 1-3 → week 3-4 → week 4-6), per-step CTAs that link back to workspace and documents, a "while you wait" checklist (watch email, prep docs, don't apply for new credit, support contact), and two primary actions: workspace and direct phone. 3. Fee/APR transparency: lib/ratequote/feeBreakdown.ts emits an illustrative origination / third-party / prepaids breakdown sized to the loan amount. FeeBreakdownDisclosure renders it as a collapsible "What this might cost in total" panel under the EstimateReveal numbers — borrowers see structure (origination, appraisal, title, credit, prepaids) and order-of-magnitude estimates with a clear "not your real LE" caveat. 4. i18n key scaffold: messages/en.json now carries borrower-facing keys for common errors, header, autosave, test mode, estimate, consent, front door, personality, and the done page. The English source lives here; non-English translations sync from kamo-translation-dictionary per project convention. Components still mostly use hardcoded English literals — wrapping is incremental as we touch surrounding code. Pattern: useTranslations from next-intl, top-level namespaces match the keys above. Build 29/29, 140 tests pass.