dc43f723fb
src/lib/countries.ts imported the full iso-3166 package solely to build a Set of valid ISO 3166-2 subdivision codes for validation. That dataset (~5000 objects with names, parents, and tree structure) landed in the eagerly-preloaded countries chunk because NoteContent, ComposeBox, and campaign.ts all import from countries.ts on the critical path. Ship only the subdivision code strings instead, generated at build time into src/lib/subdivisionCodes.ts via scripts/gen-subdivision-codes.mjs. iso-3166 moves to devDependencies since only the generator script needs it now. The strict-validation contract (rejecting US-ZZ etc.) is preserved.