 # Account Page (Account Settings)
 
 ## Purpose
 Provide a full account-level settings form for name, slug (read-only), billing contact email, billing address, and tax ID. Acts as the frontend surface for `getAccountSettings`/`updateAccountSettings` and reflects saved tenant metadata.
 
 ## Code Locations (exact paths)
 - Page component: `frontend/src/pages/account/AccountSettingsPage.tsx`
 - API client: `frontend/src/services/billing.api` (`getAccountSettings`, `updateAccountSettings`, `AccountSettings` type)
 - UI primitives: `frontend/src/components/ui/card`
 
 ## High-Level Responsibilities
 - Fetch current account settings on load and bind them into a local form.
 - Allow updating account display name, billing contact email, billing address fields, and tax/VAT ID.
 - Keep account slug immutable/read-only while exposing it for reference.
 - Surface success/error feedback inline.
 
 ## Detailed Behavior
 - On mount: calls `getAccountSettings()`; populates `settings` and `formData` with server values.
 - Form fields: `name`, `billing_email`, `billing_address_line1/2`, `billing_city`, `billing_state`, `billing_postal_code`, `billing_country`, `tax_id`; `slug` shown read-only from `settings.slug`.
 - Submit: `handleSubmit` -> `updateAccountSettings(formData)`; on success shows success banner then reloads settings; on failure shows error banner.
 - Loading states: full-page spinner before data load; button shows saving state.
 - Errors surfaced from caught exceptions (`err.message`) with console logging.
 
 ## Data Structures / Models Involved (no code)
 - Account settings DTO returned by `getAccountSettings` with fields listed above plus `slug`.
 
 ## Execution Flow
 - `useEffect` → `loadSettings` → `getAccountSettings` → set local state.
 - User edits controlled inputs → `handleSubmit` → `updateAccountSettings` → reload via `loadSettings`.
 - All network ops are direct REST calls via `billing.api`.
 
 ## Cross-Module Interactions
 - Shares account identity with billing pages (same `billing.api` source). Updated billing email/address is used by invoicing flows.
 
 ## State Transitions (if applicable)
 - View state: `loading` → loaded; `saving` toggles during submit. Success/error banners reflect last operation outcome.
 
 ## Error Handling
 - Catches fetch/update errors; shows inline red banner; logs to console. No retries.
 
 ## Tenancy Rules
 - Relies on backend to scope `getAccountSettings`/`updateAccountSettings` to the authenticated user’s account; no client-side tenancy logic beyond using the current auth token.
 
 ## Billing Rules (if applicable)
 - Billing contact and address collected here feed invoice generation; no pricing logic on this page.
 
 ## Background Tasks / Schedulers (if applicable)
 - None.
 
 ## Key Design Considerations
 - Slug is immutable to prevent accidental tenant identifier changes.
 - Form is fully controlled; reload after save ensures UI mirrors server truth.
 
 ## How Developers Should Work With This Module
 - Add new account-level fields by extending `AccountSettings` in `billing.api`, wiring controlled inputs, and persisting via `updateAccountSettings`.
 - Keep slug read-only; any slug mutation must be handled server-side with explicit UX.
