## Why

The donor directory's core flows have gaps that hurt trust and usability: donation entries accept any date (even two donations days apart, which is medically unsafe), the add-donation modal doesn't close or confirm on save, navigation links and the back button don't behave like an SPA, Noakhali's upazila/union reference data isn't seeded, and the home page wastes space on a static category showcase while donor lists have no scroll pagination. A referral mechanism is also needed to grow the donor base.

## What Changes

- **Donation entry hardening**: the add-donation modal closes on successful save and shows a success confirmation; server-side and client-side date validation (valid date, not in the future); a minimum **75-day gap (2.5 months)** enforced between a user's donation entries, with a clear message explaining the gap rule; the user's next eligible donation date surfaced in the UI.
- **Referral tracking**: every user gets a unique referral code; registration gains an optional "referred by code" field; referral counts are tracked per user (`User` model: `referral_code`, `referred_by_user_id`, `referrals_count`).
- **SPA navigation**: all navbar links become Inertia `<Link>` navigations with active-state highlighting; the back button is fixed (works via Inertia history/back handling).
- **Noakhali location data**: seeders for the 9 upazilas and 91 unions of Noakhali district (user-supplied lists, in Bengali); migrations/models updated so unions belong to upazilas. Villages are NOT seeded — they are user-created on the fly: a searchable village dropdown that offers existing matches and a "create new village" option when no match is found.
- **Home page redesign of filter area**: the category showcase section is removed and replaced by a compact button beside the existing filter button.
- **Infinite scroll pagination**: donor list on the home page loads more results automatically as the user scrolls down.

## Capabilities

### New Capabilities
- `donation-management`: donation entry validation (date validity, 75-day minimum gap), modal UX (close on save, success feedback), and next-eligible-date display.
- `referral-program`: referral code generation per user, optional referral code at registration, referral count tracking.
- `site-navigation`: Inertia-based navigation for all links, active states, and a working back button.
- `location-data`: Noakhali upazila/union seeding, upazila→union hierarchy, and the searchable create-if-missing village selector.
- `donor-discovery`: home page donor search/browse experience — filter controls, category selection via button, and infinite scroll pagination.

### Modified Capabilities
<!-- None: no existing specs under openspec/specs/ yet. -->

## Impact

- **Backend**: `app/Models/User.php` (referral fields/relations), `Donation` model + store controller/validation (gap rule, date rules), registration flow (optional referral code — Fortify `CreateNewUser` or equivalent), location models/migrations (`upazila_id` on unions), donor list controller (pagination), village store/search endpoint (create-if-missing).
- **Database**: new migrations (user referral columns, unions.upazila_id if missing); new seeders `UpazilaSeeder`, `UnionSeeder` wired into `DatabaseSeeder`.
- **Frontend**: layout/navigation components (Inertia links, back button), add-donation modal component (close/success/validation errors), registration page (referral field), home page (remove showcase, button beside filter, infinite scroll), village combobox component.
- **Copy/messaging**: user-facing explanation of the 75-day donation gap rule (Bengali-first UI).
