<!-- LOVABLE:BEGIN -->
> [!IMPORTANT]
> This project is connected to [Lovable](https://lovable.dev). Avoid rewriting
> published git history — force pushing, or rebasing/amending/squashing commits
> that are already pushed — as it rewrites history on Lovable's side and the
> user will likely lose their project history.
>
> Commits you push to the connected branch sync back to Lovable and show up in
> the editor, so keep the branch in a working state.
<!-- LOVABLE:END -->

- Payment settlement is verified against Stripe amount, currency and environment, then recorded atomically through a service-role-only database function; test payments never count as revenue or deduct stock.
- Distributor payments belong to authenticated order owners; dashboard and payment-page reconciliation recover payments even when checkout return navigation is interrupted.
- Keep retail and wholesale product prices in the shared catalogue; label illustrative packaging and leave unconfirmed product specifications unspecified to avoid inventing product facts.
- Individual checkout saves an order before creating Stripe checkout, defaults to live payment, and exposes test checkout only as a clearly labelled fallback; verified settlement and dashboard reconciliation use the shared payment path.
- Stripe webhook notifications must validate the raw-body signature before calling shared settlement; retries remain idempotent through the database, so interrupted browser returns do not prevent recording sales.
- The wholesale page and distributor sign-in share one application form and submission path, so requirements and admin-visible records stay consistent.
