| Token | Value | Use |
|---|---|---|
| bg | #0B1426 |
Page background |
| text | #F5F0E8 |
Body / headings (ivory) |
| accent | #C9A84C |
Dividers, recommended, CTAs |
| card | #2A3A52 |
Panels, table header |
| muted | #8B9BB5 |
Secondary labels |
- EN headings: Playfair Display (
font-heading-en). - ZH headings: Noto Serif TC (
font-heading-zh). - Numbers / data: DM Mono (
font-mono-data). - ZH body: Noto Sans TC (Source Han lineage; Google delivery as Noto Sans TC) (
font-body-zh). - EN body: system /
font-sanswith ivory on navy.
max-w-6xl/max-w-7xlcontent column withpx-4 md:px-8, sectionscroll-mt-24for sticky nav offset.- Sticky top bar: logo/title left, section links center (hidden sm), controls right (language + scenario compact on mobile).
framer-motion:staggerChildrenon main sections; tabAnimatePresence; chart wrapperinitial/animateonce.- Recharts bars: animate via
isAnimationActive+ keyed remount on term change.
/data/loans.ts— all lender rows + scenario applicability + recommended id./data/channels.ts— six channels + feasibility + accordion copy./data/translations.ts— UI strings EN/繁中./data/userProfile.ts— hardcoded profile object.
- Accordion, tabs, checkboxes from Radix; visible focus rings (
ring-gold/50).