## Summary
- Closes#123.
- Hide account and document counts until there are 20 accounts. After that, both figures round down to one significant digit and show a plus, so the page never publishes an exact count.
- The product page and pricing page say early adopters pay $10 per month, locked for the lifetime of the account, and that price never goes up.
- The product page adds a roadmap section for image generation and vision.
## Test plan
- [ ] With fewer than 20 accounts, the product page shows no usage figures.
- [ ] With 23 accounts and 156 documents, the page shows 20+ accounts and 100+ documents stored, plus the as-of date.
- [ ] The product page states the lifetime $10 lock and lists image generation and vision under Roadmap.
- [ ] The pricing page states the same lifetime lock.
Reviewed-on: #126
## Summary
- Closes the public-page gaps from #124: each route gets its own title, description, canonical, heading, links, and JSON-LD, and unknown URLs have a real 404 document.
- Adds HeyCatch and the Google tag (`G-V12DLRLPWR`) only on the production site and the iOS and Android apps. Tianji still loads on beta.
- Needs the server-infra change that stops serving the app shell for missing paths.
## Test plan
- [ ] Build production and confirm `/` and `/pricing/` HTML include a unique title, description, canonical, one h1, social tags, related links, and Organization JSON-LD.
- [ ] Confirm a nonsense path is served as `404.html` once the nginx change is deployed.
- [ ] Confirm beta and local web do not load HeyCatch or gtag, and that a production or native build does.
- [ ] Open the live site after deploy and click around, then mark HeyCatch installed in its dashboard.
Reviewed-on: #125