import { Suspense, useEffect } from "react";
import { InstallPrompt } from "@/components/pwa/InstallPrompt";
import { OnboardingGate } from "@/components/OnboardingGate";
import { LayoutRoute } from "@/components/LayoutRoute";
import { lazyRetry } from "@/lib/lazyRetry";
import { Toaster } from "@/components/ui/toaster";
import { Toaster as Sonner } from "@/components/ui/sonner";
import { TooltipProvider } from "@/components/ui/tooltip";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { BrowserRouter, Routes, Route, Navigate, useParams, useLocation } from "react-router-dom";
// ... keep existing code (other imports unchanged)
import { useAutoAvatar } from "@/hooks/useAutoAvatar";
import { useAuth } from "@/hooks/useAuth";
import { LocaleProvider } from "@/hooks/useLocale.tsx";
import { TenantProvider } from "@/contexts/TenantContext";
import { Skeleton } from "@/components/ui/skeleton";
import { ErrorBoundary } from "@/components/ErrorBoundary";
import { CartProvider } from "@/contexts/CartContext";
import { CustomerViewProvider } from "@/contexts/CustomerViewContext";
import { isNetworkDomain, isGoodlifeSocialDomain, isAccidentMateDomain } from "@/lib/hostname";
import { BuyLocalRouter } from "@/components/buy-local/BuyLocalRouter";
import { AccidentMateRouter } from "@/components/accident-mate/AccidentMateRouter";


// Critical routes - loaded immediately
import Index from "./pages/Index";
import Auth from "./pages/Auth";
import Home from "./pages/Home";
import NotFound from "./pages/NotFound";
// Eagerly imported so the Goodlife public landing renders in the initial
// bundle on goodlifesocial.* — no extra chunk download before the feed shows.
import GoodlifeLanding from "./pages/goodlife/GoodlifeLanding";

// Lazy loaded routes - loaded on demand
const Pricing = lazyRetry(() => import("./pages/Pricing"));
const SubscriptionSuccess = lazyRetry(() => import("./pages/SubscriptionSuccess"));
const ModuleSubscriptionSuccess = lazyRetry(() => import("./pages/ModuleSubscriptionSuccess"));
const ResetPassword = lazyRetry(() => import("./pages/ResetPassword"));
const SetPassword = lazyRetry(() => import("./pages/SetPassword"));
const FleetDashboard = lazyRetry(() => import("./pages/FleetDashboard"));
const BookingsDashboard = lazyRetry(() => import("./pages/BookingsDashboard"));
const AnalyticsDashboard = lazyRetry(() => import("./pages/AnalyticsDashboard"));
const FinanceDashboard = lazyRetry(() => import("./pages/FinanceDashboard"));
const ChartOfAccounts = lazyRetry(() => import("./pages/ChartOfAccounts"));
const FinanceTransactions = lazyRetry(() => import("./pages/FinanceTransactions"));
const VATReturns = lazyRetry(() => import("./pages/VATReturns"));
const CompaniesHouseAccounts = lazyRetry(() => import("./pages/CompaniesHouseAccounts"));
const CorpTaxWorksheet = lazyRetry(() => import("./pages/CorpTaxWorksheet"));
const XeroSync = lazyRetry(() => import("./pages/XeroSync"));
const FinanceFilings = lazyRetry(() => import("./pages/FinanceFilings"));
const FinanceReports = lazyRetry(() => import("./pages/FinanceReports"));
const SalesInvoices = lazyRetry(() => import("./pages/SalesInvoices"));
const PurchaseBills = lazyRetry(() => import("./pages/PurchaseBills"));
const BankReconciliation = lazyRetry(() => import("./pages/BankReconciliation"));
const BudgetingForecasting = lazyRetry(() => import("./pages/BudgetingForecasting"));
const PublicTrustScore = lazyRetry(() => import("./pages/PublicTrustScore"));
const TrustScorePage = lazyRetry(() => import("./pages/TrustScorePage"));

const FinancePaymentReminders = lazyRetry(() => import("./pages/FinancePaymentReminders"));
const FinanceDocuments = lazyRetry(() => import("./pages/FinanceDocuments"));
const FinanceApprovalWorkflows = lazyRetry(() => import("./pages/FinanceApprovalWorkflows"));
const FinanceMultiCurrency = lazyRetry(() => import("./pages/FinanceMultiCurrency"));

const TeamDashboard = lazyRetry(() => import("./pages/team/TeamDashboard"));
const TeamMembers = lazyRetry(() => import("./pages/team/TeamMembers"));
const OperationsDashboard = lazyRetry(() => import("./pages/operations/OperationsDashboard"));
const JobDescriptions = lazyRetry(() => import("./pages/team/JobDescriptions"));
const HRJobs = lazyRetry(() => import("./pages/team/HRJobs"));
const ComplianceCockpit = lazyRetry(() => import("./pages/team/ComplianceCockpit"));
const Licensing = lazyRetry(() => import("./pages/team/Licensing"));
const HRNoticeboard = lazyRetry(() => import("./pages/team/HRNoticeboard"));
const TeamFeed = lazyRetry(() => import("./pages/team/TeamFeed"));
const MemberCRM = lazyRetry(() => import("./pages/community/MemberCRM"));
const EngagementAnalytics = lazyRetry(() => import("./pages/community/EngagementAnalytics"));
const HRDiscussionBoard = lazyRetry(() => import("./pages/team/HRDiscussionBoard"));
const TeamSettings = lazyRetry(() => import("./pages/team/TeamSettings"));
const DrugAlcoholTesting = lazyRetry(() => import("./pages/team/DrugAlcoholTesting"));
const CredentialVault = lazyRetry(() => import("./pages/CredentialVault"));
const ProjectsDashboard = lazyRetry(() => import("./pages/ProjectsDashboard"));
const MyProjectTasks = lazyRetry(() => import("./pages/MyProjectTasks"));
const MyProjects = lazyRetry(() => import("./pages/MyProjects"));
const BusinessPlanPage = lazyRetry(() => import("./pages/BusinessPlanPage"));
const ProjectDetail = lazyRetry(() => import("./pages/ProjectDetail"));
const AllProjects = lazyRetry(() => import("./pages/AllProjects"));
const ContractsList = lazyRetry(() => import("./pages/ContractsList"));
const ProjectTeamMembers = lazyRetry(() => import("./pages/ProjectTeamMembers"));
const MarketingDashboard = lazyRetry(() => import("./pages/MarketingDashboard"));
const MarketingSocial = lazyRetry(() => import("./pages/MarketingSocial"));
const MarketingPR = lazyRetry(() => import("./pages/MarketingPR"));
const MarketingAutomation = lazyRetry(() => import("./pages/MarketingAutomation"));
const MarketingContent = lazyRetry(() => import("./pages/MarketingContent"));
const MarketingCampaignDetail = lazyRetry(() => import("./pages/MarketingCampaignDetail"));
const MarketingPipeline = lazyRetry(() => import("./pages/MarketingPipeline"));
const MarketingAdvertising = lazyRetry(() => import("./pages/MarketingAdvertising"));
const MarketingInnovation = lazyRetry(() => import("./pages/MarketingInnovation"));
const InvestmentDashboard = lazyRetry(() => import("./pages/InvestmentDashboard"));
const Shares = lazyRetry(() => import("./pages/Shares"));
const Bonds = lazyRetry(() => import("./pages/Bonds"));
const Bondholdings = lazyRetry(() => import("./pages/Bondholders"));
const MyBonds = lazyRetry(() => import("./pages/MyBonds"));
const Shareholdings = lazyRetry(() => import("./pages/Shareholders"));

const DocumentLibrary = lazyRetry(() => import("./pages/DocumentLibrary"));
const ShareholderAgreement = lazyRetry(() => import("./pages/ShareholderAgreement"));
const ShareMarketplace = lazyRetry(() => import("./pages/ShareMarketplace"));
const RegisterOfMembers = lazyRetry(() => import("./pages/RegisterOfMembers"));
const Community = lazyRetry(() => import("./pages/Community"));
const GoodlifeHome = lazyRetry(() => import("./pages/goodlife/GoodlifeHome"));
const GoodlifeLayoutRoute = lazyRetry(() => import("./components/goodlife/GoodlifeLayoutRoute"));
const GoodlifeAuth = lazyRetry(() => import("./pages/goodlife/GoodlifeAuth"));
const GoodlifeSignup = lazyRetry(() => import("./pages/goodlife/GoodlifeSignup"));
const GoodlifeHandleClaim = lazyRetry(() => import("./pages/goodlife/GoodlifeHandleClaim"));

const GoodlifeSignInMethods = lazyRetry(() => import("./pages/goodlife/GoodlifeSignInMethods"));
const GoodlifeProfilePage = lazyRetry(() => import("./pages/goodlife/GoodlifeProfilePage"));
const GoodlifeProfileEdit = lazyRetry(() => import("./pages/goodlife/GoodlifeProfileEdit"));
const GoodlifeMessages = lazyRetry(() => import("./pages/goodlife/GoodlifeMessages"));
const GoodlifeTenantPage = lazyRetry(() => import("./pages/goodlife/GoodlifeTenantPage"));
const GoodlifeHandleResolver = lazyRetry(() => import("./pages/goodlife/GoodlifeHandleResolver"));
const GoodlifeTenantSettings = lazyRetry(() => import("./pages/goodlife/GoodlifeTenantSettings"));
const SignInMethods = lazyRetry(() => import("./pages/SignInMethods"));
const SignInMethodVerify = lazyRetry(() => import("./pages/SignInMethodVerify"));
const GoodlifeModerationConsole = lazyRetry(() => import("./pages/goodlife/GoodlifeModerationConsole"));
const GoodlifeGroups = lazyRetry(() => import("./pages/goodlife/GoodlifeGroups"));
const GoodlifeGroupPage = lazyRetry(() => import("./pages/goodlife/GoodlifeGroupPage"));
const GoodlifeEvents = lazyRetry(() => import("./pages/goodlife/GoodlifeEvents"));
const GoodlifeVideos = lazyRetry(() => import("./pages/goodlife/GoodlifeVideos"));
const GoodlifeMarketplace = lazyRetry(() => import("./pages/goodlife/GoodlifeMarketplace"));


const GoodlifeMyFeed = lazyRetry(() => import("./pages/goodlife/GoodlifeMyFeed"));
const GoodlifePhotos = lazyRetry(() => import("./pages/goodlife/GoodlifePhotos"));
const GoodlifeFriends = lazyRetry(() => import("./pages/goodlife/GoodlifeFriends"));
const GoodlifeSearch = lazyRetry(() => import("./pages/goodlife/GoodlifeSearch"));
const GoodlifeCompose = lazyRetry(() => import("./pages/goodlife/GoodlifeCompose"));
const GoodlifeConnectedAccounts = lazyRetry(() => import("./pages/goodlife/GoodlifeConnectedAccounts"));
const GoodlifeFred = lazyRetry(() => import("./pages/goodlife/GoodlifeFred"));
const GoodlifeNotifications = lazyRetry(() => import("./pages/goodlife/GoodlifeNotifications"));
const GoodlifeOffboarding = lazyRetry(() => import("./pages/goodlife/GoodlifeOffboarding"));
const GoodlifeMemories = lazyRetry(() => import("./pages/goodlife/GoodlifeMemories"));
const GoodlifeMeet = lazyRetry(() => import("./pages/goodlife/GoodlifeMeet"));
const GoodlifeCV = lazyRetry(() => import("./pages/goodlife/GoodlifeCV"));
const GoodlifeJobs = lazyRetry(() => import("./pages/goodlife/GoodlifeJobs"));
const GoodlifeJobDetail = lazyRetry(() => import("./pages/goodlife/GoodlifeJobDetail"));
const GoodlifeJobApplications = lazyRetry(() => import("./pages/goodlife/GoodlifeJobApplications"));
const GoodlifeJobsManage = lazyRetry(() => import("./pages/goodlife/GoodlifeJobsManage"));
const GoodlifeTalentBoard = lazyRetry(() => import("./pages/goodlife/GoodlifeTalentBoard"));
const GoodlifeJobAlerts = lazyRetry(() => import("./pages/goodlife/GoodlifeJobAlerts"));
const GoodlifeJobOffer = lazyRetry(() => import("./pages/goodlife/GoodlifeJobOffer"));
const GoodlifeJobsAnalytics = lazyRetry(() => import("./pages/goodlife/GoodlifeJobsAnalytics"));
const GoodlifeJobPipeline = lazyRetry(() => import("./pages/goodlife/GoodlifeJobPipeline"));
const GoodlifeJobMatch = lazyRetry(() => import("./pages/goodlife/GoodlifeJobMatch"));
const GoodlifeJobHealth = lazyRetry(() => import("./pages/goodlife/GoodlifeJobHealth"));
const GoodlifeApplicationReview = lazyRetry(() => import("./pages/goodlife/GoodlifeApplicationReview"));
const GoodlifeMyReferrals = lazyRetry(() => import("./pages/goodlife/GoodlifeMyReferrals"));
const DiscussionBoard = lazyRetry(() => import("./pages/DiscussionBoard"));
const Members = lazyRetry(() => import("./pages/Members"));
const Messages = lazyRetry(() => import("./pages/Messages"));
const MyFeed = lazyRetry(() => import("./pages/MyFeed"));
const Enthusiasts = lazyRetry(() => import("./pages/Enthusiasts"));
const CommunityCustomerPortal = lazyRetry(() => import("./pages/CommunityCustomerPortal"));
const Campaigns = lazyRetry(() => import("./pages/Campaigns"));
const CommunityGroups = lazyRetry(() => import("./pages/CommunityGroups"));
const Newsletters = lazyRetry(() => import("./pages/Newsletters"));
const CommunityNews = lazyRetry(() => import("./pages/CommunityNews"));
const EventsPage = lazyRetry(() => import("./pages/community/EventsPage"));
const EventDetailPage = lazyRetry(() => import("./pages/community/EventDetailPage"));
const EventPaymentSuccess = lazyRetry(() => import("./pages/community/EventPaymentSuccess"));
const WebsiteServices = lazyRetry(() => import("./pages/WebsiteServices"));
const WebsiteAbout = lazyRetry(() => import("./pages/WebsiteAbout"));
const WebsiteContact = lazyRetry(() => import("./pages/WebsiteContact"));
const WebsiteHome = lazyRetry(() => import("./pages/WebsiteHome"));
const WebsiteSettings = lazyRetry(() => import("./pages/WebsiteSettings"));
const WebsitePage = lazyRetry(() => import("./pages/WebsitePage"));
const WebsiteDashboard = lazyRetry(() => import("./pages/WebsiteDashboard"));
const WebsiteDesignStudio = lazyRetry(() => import("./pages/WebsiteDesignStudio"));
const ModuleDetail = lazyRetry(() => import("./pages/ModuleDetail"));
const CampaignDetail = lazyRetry(() => import("./pages/CampaignDetail"));
const Vehicles = lazyRetry(() => import("./pages/Vehicles"));

const VehicleDocumentsRedirect = () => {
  const { vehicleId } = useParams<{ vehicleId: string }>();
  return <Navigate to={`/vehicles/${vehicleId}?tab=documents`} replace />;
};

const VehicleRecord = lazyRetry(() => import("./pages/VehicleRecord"));
const InsuranceSummary = lazyRetry(() => import("./pages/InsuranceSummary"));
const TaxSummary = lazyRetry(() => import("./pages/TaxSummary"));
const Tasks = lazyRetry(() => import("./pages/Tasks"));

const Maintenance = lazyRetry(() => import("./pages/Maintenance"));
const Reports = lazyRetry(() => import("./pages/Reports"));
const Settings = lazyRetry(() => import("./pages/Settings"));
const FleetSettings = lazyRetry(() => import("./pages/FleetSettings"));
const CommunitySettings = lazyRetry(() => import("./pages/CommunitySettings"));
const InvestmentSettings = lazyRetry(() => import("./pages/InvestmentSettings"));
const ProjectsSettings = lazyRetry(() => import("./pages/ProjectsSettings"));
const MarketingSettings = lazyRetry(() => import("./pages/MarketingSettings"));

const UserRecord = lazyRetry(() => import("./pages/UserRecord"));
const FinanceSettings = lazyRetry(() => import("./pages/FinanceSettings"));
const BookingsSettings = lazyRetry(() => import("./pages/BookingsSettings"));
const MyBookings = lazyRetry(() => import("./pages/MyBookings"));
const StaffMyBookings = lazyRetry(() => import("./pages/StaffMyBookings"));
const ContractorPartnerships = lazyRetry(() => import("./pages/ContractorPartnerships"));
const PartnershipRequests = lazyRetry(() => import("./pages/partnerships/PartnershipRequests"));
const PartnerWorkspace = lazyRetry(() => import("./pages/partnerships/PartnerWorkspace"));
const Users = lazyRetry(() => import("./pages/Users"));
const Suppliers = lazyRetry(() => import("./pages/Suppliers"));
const Customers = lazyRetry(() => import("./pages/Customers"));
const CustomersDashboard = lazyRetry(() => import("./pages/CustomersDashboard"));
const CustomersSettings = lazyRetry(() => import("./pages/CustomersSettings"));
const CustomerCases = lazyRetry(() => import("./pages/CustomerCases"));
const CustomerFeedback = lazyRetry(() => import("./pages/CustomerFeedback"));
const Products = lazyRetry(() => import("./pages/Products"));
const Quotes = lazyRetry(() => import("./pages/Quotes"));
const Bookings = lazyRetry(() => import("./pages/Bookings"));
const Jobs = lazyRetry(() => import("./pages/Jobs"));
const Invoices = lazyRetry(() => import("./pages/Invoices"));
const Profile = lazyRetry(() => import("./pages/Profile"));
const Account = lazyRetry(() => import("./pages/Account"));
const PublicProfile = lazyRetry(() => import("./pages/PublicProfile"));
const ProjectsProfile = lazyRetry(() => import("./pages/ProjectsProfile"));

const MyLeave = lazyRetry(() => import("./pages/team/MyLeave"));
const IncidentReport = lazyRetry(() => import("./pages/IncidentReport"));
const IncidentSOS = lazyRetry(() => import("./pages/fleet/IncidentSOS"));
const AccidentMate = lazyRetry(() => import("./pages/fleet/AccidentMate"));
const AccidentMateWhiteLabelPage = lazyRetry(() => import("./pages/fleet/AccidentMateWhiteLabelPage"));
const AccidentMatePlansPage = lazyRetry(() => import("./pages/accident-mate/AccidentMatePlans"));
const AccidentMateAck = lazyRetry(() => import("./pages/accident-mate/AckPage"));
const FleetIncidents = lazyRetry(() => import("./pages/FleetIncidents"));
const FleetIncidentDetail = lazyRetry(() => import("./pages/FleetIncidentDetail"));
const PartsStock = lazyRetry(() => import("./pages/PartsStock"));
const WheelSecurity = lazyRetry(() => import("./pages/WheelSecurity"));

const GateChecks = lazyRetry(() => import("./pages/GateChecks"));
const TenantPortal = lazyRetry(() => import("./pages/TenantPortal"));

const SupportQueue = lazyRetry(() => import("./pages/SupportQueue"));
const Support = lazyRetry(() => import("./pages/Support"));
const HelpPage = lazyRetry(() => import("./pages/Help"));
const SuperAdminPortal = lazyRetry(() => import("./pages/SuperAdminPortal"));
const SuperAdminJobDescriptions = lazyRetry(() => import("./pages/SuperAdminJobDescriptions"));
const CountersignQueue = lazyRetry(() => import("./pages/CountersignQueue"));
const XeroCallback = lazyRetry(() => import("./pages/XeroCallback"));
const PublicBooking = lazyRetry(() => import("./pages/PublicBooking"));
const PublicEnquiryForm = lazyRetry(() => import("./pages/PublicEnquiryForm"));
const QuoteResponse = lazyRetry(() => import("./pages/QuoteResponse"));
const BookingPaymentSuccess = lazyRetry(() => import("./pages/BookingPaymentSuccess"));
const Tours = lazyRetry(() => import("./pages/Tours"));
const PublicTours = lazyRetry(() => import("./pages/PublicTours"));
const TourBookingSuccess = lazyRetry(() => import("./pages/TourBookingSuccess"));
const LiveTracking = lazyRetry(() => import("./pages/LiveTracking"));
const PublicTracking = lazyRetry(() => import("./pages/PublicTracking"));
const PublicBookingTracking = lazyRetry(() => import("./pages/PublicBookingTracking"));
const BuyTicket = lazyRetry(() => import("./pages/BuyTicket"));
const TicketView = lazyRetry(() => import("./pages/TicketView"));
const ValidateTicket = lazyRetry(() => import("./pages/ValidateTicket"));
const DriverTracking = lazyRetry(() => import("./pages/DriverTracking"));
const PortalTemplates = lazyRetry(() => import("./pages/PortalTemplates"));
const GovernanceDashboard = lazyRetry(() => import("./pages/GovernanceDashboard"));
const GovernanceMeetings = lazyRetry(() => import("./pages/GovernanceMeetings"));
const GovernanceMeetingDetail = lazyRetry(() => import("./pages/GovernanceMeetingDetail"));
const GovernanceResolutions = lazyRetry(() => import("./pages/GovernanceResolutions"));
const GovernanceResolutionDetail = lazyRetry(() => import("./pages/GovernanceResolutionDetail"));
const PublicResolutionSigning = lazyRetry(() => import("./pages/PublicResolutionSigning"));
const GovernanceCompaniesHouseFiling = lazyRetry(() => import("./pages/GovernanceCompaniesHouseFiling"));
const GovernanceAlertSettings = lazyRetry(() => import("./pages/GovernanceAlertSettings"));
const GovernanceSettings = lazyRetry(() => import("./pages/GovernanceSettings"));
const AnalyticsSettings = lazyRetry(() => import("./pages/AnalyticsSettings"));
const SocialImpactSettings = lazyRetry(() => import("./pages/SocialImpactSettings"));
const GovernanceConflictsOfInterest = lazyRetry(() => import("./pages/GovernanceConflictsOfInterest"));
const GovernanceLobbying = lazyRetry(() => import("./pages/GovernanceLobbying"));
const GovernanceRegulatoryCompliance = lazyRetry(() => import("./pages/GovernanceRegulatoryCompliance"));
const FleetComplianceDashboard = lazyRetry(() => import("./pages/FleetComplianceDashboard"));
const FleetComplianceAlerts = lazyRetry(() => import("./pages/FleetComplianceAlerts"));
const UnsubscribePreferences = lazyRetry(() => import("./pages/UnsubscribePreferences"));
const HealthSafetyDashboard = lazyRetry(() => import("./pages/HealthSafetyDashboard"));
const HealthSafetyIncidents = lazyRetry(() => import("./pages/HealthSafetyIncidents"));
const HealthSafetyRiskAssessments = lazyRetry(() => import("./pages/HealthSafetyRiskAssessments"));
const HealthSafetyAccidentBook = lazyRetry(() => import("./pages/HealthSafetyAccidentBook"));
const HealthSafetyCoshh = lazyRetry(() => import("./pages/HealthSafetyCoshh"));
const HealthSafetyFireSafety = lazyRetry(() => import("./pages/HealthSafetyFireSafety"));
const HealthSafetyContractors = lazyRetry(() => import("./pages/HealthSafetyContractors"));
const HealthSafetyBoardReport = lazyRetry(() => import("./pages/HealthSafetyBoardReport"));
const HealthSafetyActions = lazyRetry(() => import("./pages/HealthSafetyActions"));
const HealthSafetySettings = lazyRetry(() => import("./pages/HealthSafetySettings"));
const GovernanceEntities = lazyRetry(() => import("./pages/GovernanceEntities"));
const GovernanceEntityDetail = lazyRetry(() => import("./pages/GovernanceEntityDetail"));
const GovernanceFilings = lazyRetry(() => import("./pages/GovernanceFilings"));
const GovernanceFilingsConsolidated = lazyRetry(() => import("./pages/GovernanceFilingsConsolidated"));
const GovernanceReports = lazyRetry(() => import("./pages/GovernanceReports"));
const GovernanceOfficers = lazyRetry(() => import("./pages/GovernanceOfficers"));
const GovernanceStatutoryRegisters = lazyRetry(() => import("./pages/GovernanceStatutoryRegisters"));
const QualityDashboard = lazyRetry(() => import("./pages/QualityDashboard"));
const QualityStandardDetail = lazyRetry(() => import("./pages/QualityStandardDetail"));
const QualityStandards = lazyRetry(() => import("./pages/QualityStandards"));
const QualitySettings = lazyRetry(() => import("./pages/QualitySettings"));
const QualityNcRegister = lazyRetry(() => import("./pages/QualityNcRegister"));
const QualityPolicies = lazyRetry(() => import("./pages/QualityPolicies"));
const QualitySuppliers = lazyRetry(() => import("./pages/QualitySuppliers"));
const QualityAuditorPacks = lazyRetry(() => import("./pages/QualityAuditorPacks"));
const QualitySystemicNcs = lazyRetry(() => import("./pages/QualitySystemicNcs"));
const QualityEnvAspects = lazyRetry(() => import("./pages/QualityEnvAspects"));
const QualityCompliance = lazyRetry(() => import("./pages/QualityCompliance"));
const QualityEnvIncidents = lazyRetry(() => import("./pages/QualityEnvIncidents"));
const QualityEnvIncidentDetail = lazyRetry(() => import("./pages/QualityEnvIncidentDetail"));
const QualityEnvObjectives = lazyRetry(() => import("./pages/QualityEnvObjectives"));
const QualityRtsRisks = lazyRetry(() => import("./pages/QualityRtsRisks"));
const QualityRtsObjectives = lazyRetry(() => import("./pages/QualityRtsObjectives"));
const QualityRtsIncidents = lazyRetry(() => import("./pages/QualityRtsIncidents"));
const QualityRtsIncidentDetail = lazyRetry(() => import("./pages/QualityRtsIncidentDetail"));
const QualityBcBias = lazyRetry(() => import("./pages/QualityBcBias"));
const QualityBcStrategies = lazyRetry(() => import("./pages/QualityBcStrategies"));
const QualityBcExercises = lazyRetry(() => import("./pages/QualityBcExercises"));
const QualityBcDisruptions = lazyRetry(() => import("./pages/QualityBcDisruptions"));
const QualityBcDisruptionDetail = lazyRetry(() => import("./pages/QualityBcDisruptionDetail"));
const QualityEnergySeus = lazyRetry(() => import("./pages/QualityEnergySeus"));
const QualityEnergyObjectives = lazyRetry(() => import("./pages/QualityEnergyObjectives"));
const QualityEnergyActions = lazyRetry(() => import("./pages/QualityEnergyActions"));
const QualityEnergyReviews = lazyRetry(() => import("./pages/QualityEnergyReviews"));
const QualityAbRisks = lazyRetry(() => import("./pages/QualityAbRisks"));
const QualityAbDueDiligence = lazyRetry(() => import("./pages/QualityAbDueDiligence"));
const QualityAbGiftsHospitality = lazyRetry(() => import("./pages/QualityAbGiftsHospitality"));
const QualityAbIncidents = lazyRetry(() => import("./pages/QualityAbIncidents"));
const QualityAbIncidentDetail = lazyRetry(() => import("./pages/QualityAbIncidentDetail"));
const QualityInfoAssets = lazyRetry(() => import("./pages/QualityInfoAssets"));
const QualitySecurityRisks = lazyRetry(() => import("./pages/QualitySecurityRisks"));
const QualitySoa = lazyRetry(() => import("./pages/QualitySoa"));
const QualitySecurityIncidents = lazyRetry(() => import("./pages/QualitySecurityIncidents"));
const QualitySecurityIncidentDetail = lazyRetry(() => import("./pages/QualitySecurityIncidentDetail"));
const QualityAccessReviews = lazyRetry(() => import("./pages/QualityAccessReviews"));
const QualityAudits = lazyRetry(() => import("./pages/QualityAudits"));
const QualityAuditDetail = lazyRetry(() => import("./pages/QualityAuditDetail"));
const QualityCapa = lazyRetry(() => import("./pages/QualityCapa"));
const QualityManagementReviews = lazyRetry(() => import("./pages/QualityManagementReviews"));
const QualityManagementReviewDetail = lazyRetry(() => import("./pages/QualityManagementReviewDetail"));
const HealthSafetyIncidentDetail = lazyRetry(() => import("./pages/HealthSafetyIncidentDetail"));
const PublicPolicyPage = lazyRetry(() => import("./pages/PublicPolicyPage"));
const PublicSignupForm = lazyRetry(() => import("./pages/PublicSignupForm"));
const ConfirmSubscription = lazyRetry(() => import("./pages/ConfirmSubscription"));
const PlatformPolicyPage = lazyRetry(() => import("./pages/PlatformPolicyPage"));
const CookiePolicy = lazyRetry(() => import("./pages/CookiePolicy"));
const BusServicesPage = lazyRetry(() => import("./pages/operations/Services"));
const TimetableEditorPage = lazyRetry(() => import("./pages/operations/TimetableEditor"));
const ShiftSheetsPage = lazyRetry(() => import("./pages/operations/ShiftSheets"));
const ShiftLogsPage = lazyRetry(() => import("./pages/operations/ShiftLogs"));
const TimesheetsPage = lazyRetry(() => import("./pages/operations/Timesheets"));
const OperationsRotaPage = lazyRetry(() => import("./pages/operations/OperationsRota"));
const OperationsSchedulingPage = lazyRetry(() => import("./pages/operations/OperationsScheduling"));
const OperationsSettingsPage = lazyRetry(() => import("./pages/operations/OperationsSettings"));
const ServicesListPage = lazyRetry(() => import("./pages/operations/ServicesList"));
const ServiceDetailPage = lazyRetry(() => import("./pages/operations/ServiceDetail"));
const ShiftsListPage = lazyRetry(() => import("./pages/operations/ShiftsList"));
const ShiftDetailPage = lazyRetry(() => import("./pages/operations/ShiftDetail"));
const ETMReportImportPage = lazyRetry(() => import("./pages/operations/ETMReportImport"));
const BSOGClaimWizardPage = lazyRetry(() => import("./pages/operations/BSOGClaimWizard"));
const OperationsReportsPage = lazyRetry(() => import("./pages/operations/OperationsReports"));
const OperationsCompliancePage = lazyRetry(() => import("./pages/operations/OperationsCompliance"));
const PayrollDashboard = lazyRetry(() => import("./pages/PayrollDashboard"));
const PayrollSettingsPage = lazyRetry(() => import("./pages/PayrollSettings"));
const PayrollPayComponentsPage = lazyRetry(() => import("./pages/PayrollPayComponents"));
const PayrollEmployeeTaxPage = lazyRetry(() => import("./pages/PayrollEmployeeTax"));
const PayRunsPage = lazyRetry(() => import("./pages/PayRuns"));
const PayRunDetailPage = lazyRetry(() => import("./pages/PayRunDetail"));
const PayrollCompliancePage = lazyRetry(() => import("./pages/PayrollCompliance"));
const SuperAdminPayrollPage = lazyRetry(() => import("./pages/SuperAdminPayroll"));
const WebVitalsDashboard = lazyRetry(() => import("./pages/admin/WebVitalsDashboard"));
const GrowthDashboard = lazyRetry(() => import("./pages/admin/GrowthDashboard"));
const BuyLocalReportsModeration = lazyRetry(() => import("./pages/admin/BuyLocalReportsModeration"));
const MergeAccounts = lazyRetry(() => import("./pages/admin/MergeAccounts"));
const ShopDashboard = lazyRetry(() => import("./pages/ShopDashboard"));
const StaffMyOrders = lazyRetry(() => import("./pages/StaffMyOrders"));
const ShopProducts = lazyRetry(() => import("./pages/ShopProducts"));
const ShopCategories = lazyRetry(() => import("./pages/ShopCategories"));
const ShopOrders = lazyRetry(() => import("./pages/ShopOrders"));
const ShopSettings = lazyRetry(() => import("./pages/ShopSettings"));
const ShopStorefront = lazyRetry(() => import("./pages/ShopStorefront"));
const ShopCart = lazyRetry(() => import("./pages/ShopCart"));
const ShopOrderSuccess = lazyRetry(() => import("./pages/ShopOrderSuccess"));
const NetworkDashboard = lazyRetry(() => import("./pages/NetworkDashboard"));
// Ambassador Programme
const AmbassadorDashboard = lazyRetry(() => import("./pages/ambassador/AmbassadorDashboard"));
const AmbassadorShareTools = lazyRetry(() => import("./pages/ambassador/AmbassadorShareTools"));
const AmbassadorCauses = lazyRetry(() => import("./pages/ambassador/AmbassadorCauses"));
const AmbassadorAnalytics = lazyRetry(() => import("./pages/ambassador/AmbassadorAnalytics"));
const NetworkProfile = lazyRetry(() => import("./pages/NetworkProfile"));
const NetworkConnections = lazyRetry(() => import("./pages/NetworkConnections"));
const NetworkSettings = lazyRetry(() => import("./pages/NetworkSettings"));
const NetworkPeerSupport = lazyRetry(() => import("./pages/NetworkPeerSupport"));
const NetworkLocalGroups = lazyRetry(() => import("./pages/NetworkLocalGroups"));
const NetworkIndustryForums = lazyRetry(() => import("./pages/NetworkIndustryForums"));
const NetworkSpecialInterest = lazyRetry(() => import("./pages/NetworkSpecialInterest"));
const NetworkMarketplace = lazyRetry(() => import("./pages/NetworkMarketplace"));
const MarketplacePaymentSuccess = lazyRetry(() => import("./pages/MarketplacePaymentSuccess"));
const NetworkEventsPage = lazyRetry(() => import("./pages/NetworkEvents"));
const NetworkStorefront = lazyRetry(() => import("./pages/NetworkStorefront"));
const NetworkFeedPage = lazyRetry(() => import("./pages/NetworkFeedPage"));
const NetworkBusinessProfile = lazyRetry(() => import("./pages/NetworkBusinessProfile"));
const NetworkWantedPage = lazyRetry(() => import("./pages/NetworkWantedPage"));
const PremisesDashboard = lazyRetry(() => import("./pages/PremisesDashboard"));
const PremisesSites = lazyRetry(() => import("./pages/PremisesSites"));
const PremisesMaintenance = lazyRetry(() => import("./pages/PremisesMaintenance"));
const PremisesCompliance = lazyRetry(() => import("./pages/PremisesCompliance"));
const PremisesAssets = lazyRetry(() => import("./pages/PremisesAssets"));
const PremisesRooms = lazyRetry(() => import("./pages/PremisesRooms"));
const PremisesSettings = lazyRetry(() => import("./pages/PremisesSettings"));
const PremisesBudgets = lazyRetry(() => import("./pages/PremisesBudgets"));
const SocialImpactDashboard = lazyRetry(() => import("./pages/SocialImpactDashboard"));
const SocialImpactBeneficiaries = lazyRetry(() => import("./pages/SocialImpactBeneficiaries"));
const SocialImpactOutcomes = lazyRetry(() => import("./pages/SocialImpactOutcomes"));
const SocialImpactSustainability = lazyRetry(() => import("./pages/SocialImpactSustainability"));
const SocialImpactEmployment = lazyRetry(() => import("./pages/SocialImpactEmployment"));
const SocialImpactCommunity = lazyRetry(() => import("./pages/SocialImpactCommunity"));
const SocialImpactFinancial = lazyRetry(() => import("./pages/SocialImpactFinancial"));
const SocialImpactDiversity = lazyRetry(() => import("./pages/SocialImpactDiversity"));
const CarbonDashboard = lazyRetry(() => import("./pages/CarbonDashboard"));
const SustainabilityDashboard = lazyRetry(() => import("./pages/SustainabilityDashboard"));
const SustainabilityWaste = lazyRetry(() => import("./pages/SustainabilityWaste"));
const SustainabilityBiodiversity = lazyRetry(() => import("./pages/SustainabilityBiodiversity"));
const SocialImpactDataSourcesPage = lazyRetry(() => import("./pages/SocialImpactDataSourcesPage"));
const SocialImpactDataEntryPage = lazyRetry(() => import("./pages/SocialImpactDataEntryPage"));
const BookingFeedback = lazyRetry(() => import("./pages/BookingFeedback"));

const CommunityPartnerships = lazyRetry(() => import("./pages/CommunityPartnerships"));
const PremisesUtility = lazyRetry(() => import("./pages/PremisesUtility"));
const SetupWizard = lazyRetry(() => import("./pages/SetupWizard"));
const DreamBuilderPage = lazyRetry(() => import("./pages/DreamBuilder"));

// Goodlife portal — customer-facing pages (formerly /c/*)
const GoodlifePortalDashboard = lazyRetry(() => import("./pages/community-user/CommunityUserDashboard"));
const GoodlifePortalShop = lazyRetry(() => import("./pages/community-user/CommunityUserShop"));
const GoodlifePortalMyOrders = lazyRetry(() => import("./pages/community-user/CommunityUserMyOrders"));
const GoodlifePortalBookings = lazyRetry(() => import("./pages/community-user/CommunityUserBookings"));
const GoodlifePortalMyBookings = lazyRetry(() => import("./pages/community-user/CommunityUserMyBookings"));
const GoodlifePortalAccount = lazyRetry(() => import("./pages/community-user/CommunityUserAccount"));
const GoodlifePortalMyFeedback = lazyRetry(() => import("./pages/community-user/CommunityUserMyFeedback"));
const GoodlifePortalNetwork = lazyRetry(() => import("./pages/community-user/CommunityUserNetwork"));
const GoodlifePortalMyTickets = lazyRetry(() => import("./pages/community-user/CommunityUserMyTickets"));
const GoodlifeProviders = lazyRetry(() => import("./pages/goodlife-portal/GoodlifeProviders"));

// Redirect helper for legacy employee detail route
function TeamEmployeeRedirect() {
 const { userId } = useParams();
 return <Navigate to={`/users/${userId}?tab=employment`} replace />;
}

// Loading fallback component
function PageLoader() {
 return (
 <div className="flex items-center justify-center min-h-screen">
 <div className="space-y-4 w-full max-w-md px-4">
 <Skeleton className="h-8 w-3/4" />
 <Skeleton className="h-4 w-1/2" />
 <Skeleton className="h-64 w-full" />
 </div>
 </div>
 );
}

// Component that handles auto-avatar on login
function AutoAvatarHandler() {
 useAutoAvatar();
 return null;
}

// On goodlifesocial.* domains, "/auth" is redirected to the Goodlife-branded
// auth page so visitors never see the Easylife sign-in form by accident.
// "/" no longer redirects — it renders <GoodlifeLanding /> directly (eager
// import), avoiding the lazy-chunk + redirect round-trip that caused a
// multi-second blank skeleton on mobile networks.
function GoodlifeRootRedirect() {
 const location = useLocation();
 if (!isGoodlifeSocialDomain()) return null;
 if (location.pathname === "/auth") {
 return <Navigate to={`/goodlife/auth${location.search}${location.hash}`} replace />;
 }
 return null;
}

// "/" on goodlifesocial.*: signed-out → eager landing (instant render),
// signed-in → bounce to /goodlife where the authed feed lives.
function GoodlifeRoot() {
 const { user, loading } = useAuth();
 const location = useLocation();
 if (!loading && user) {
   return <Navigate to={`/goodlife${location.search}${location.hash}`} replace />;
 }
 return <GoodlifeLanding />;
}

// On goodlifesocial.* domains, bare "/<handle>" resolves to a Goodlife tenant
// page or user profile (so URLs read like `goodlifesocial.org/thebiglemon`,
// not `/goodlife/thebiglemon`). On every other domain the same path is the
// public TenantPortal.
function RootSlugRoute() {
  if (isGoodlifeSocialDomain()) {
    return (
      <GoodlifeLayoutRoute>
        <GoodlifeHandleResolverParam />
      </GoodlifeLayoutRoute>
    );
  }
  return <TenantPortal />;
}

// Wrapper that adapts the :tenantSlug param to the :handle param the
// resolver expects, without forcing a redirect.
function GoodlifeHandleResolverParam() {
  return <GoodlifeHandleResolver />;
}

// Redirects any /goodlife/* request on non-Goodlife hostnames to the canonical
// goodlifesocial.org domain, preserving the full path + query + hash. This is
// the entire footprint of Goodlife on Easylife hostnames — the actual routes
// live in src/GoodlifeApp.tsx (booted for goodlifesocial.* via main.tsx).
function GoodlifeCanonicalRedirect() {
  const location = useLocation();
  useEffect(() => {
    const target = `https://goodlifesocial.org${location.pathname}${location.search}${location.hash}`;
    window.location.replace(target);
  }, [location.pathname, location.search, location.hash]);
  return <PageLoader />;
}

// Updates the browser tab title based on the current route/domain.
// Goodlife routes → "Goodlife"; Buy Local Network → "Buy Local Network";
// AccidentMate → "AccidentMate"; everything else → "Easylife".
function DocumentTitle() {
  const location = useLocation();
  useEffect(() => {
    let title = "Easylife";
    if (isAccidentMateDomain()) {
      title = "AccidentMate";
    } else if (isNetworkDomain() || location.pathname.startsWith("/network") || location.pathname.startsWith("/buy-local")) {
      title = "Buy Local";
    } else if (isGoodlifeSocialDomain() || location.pathname.startsWith("/goodlife")) {
      title = "Goodlife";
    }
    if (document.title !== title) document.title = title;
  }, [location.pathname]);
  return null;
}

const queryClient = new QueryClient();

const App = () => (
 <QueryClientProvider client={queryClient}>
 <LocaleProvider>
 <TenantProvider>
 <CustomerViewProvider>
 <CartProvider>
 <TooltipProvider>
  <Toaster />
  <Sonner />
  
  <BrowserRouter>
  <AutoAvatarHandler />
 <InstallPrompt />
 <DocumentTitle />
 <GoodlifeRootRedirect />
  {isAccidentMateDomain() ? (
  <AccidentMateRouter />
  ) : isNetworkDomain() ? (
  <BuyLocalRouter />
  ) : (
  <OnboardingGate>
 <Suspense fallback={<PageLoader />}>
 <Routes>
 {/* Public routes - no Layout shell */}
 <Route path="/" element={isGoodlifeSocialDomain() ? <GoodlifeRoot /> : <Index />} />
    <Route path="/auth" element={isGoodlifeSocialDomain() ? <PageLoader /> : <Auth />} />
    <Route path="/sign-in-methods" element={<SignInMethods />} />
    <Route path="/sign-in-methods/verify" element={<SignInMethodVerify />} />
    {/*
      Goodlife routes are the source-of-truth in `src/GoodlifeApp.tsx`
      (booted by main.tsx on goodlifesocial.* hostnames). On Easylife
      hostnames we no longer duplicate the ~50 route declarations; instead
      any /goodlife/* URL redirects to the canonical Goodlife domain so
      there is exactly one place to add or change a Goodlife route.
    */}
    <Route path="/goodlife/*" element={<GoodlifeCanonicalRedirect />} />
    <Route path="/goodlife" element={<GoodlifeCanonicalRedirect />} />
 <Route path="/pricing" element={<Pricing />} />
 <Route path="/subscription-success" element={<SubscriptionSuccess />} />
 <Route path="/module-subscription-success" element={<ModuleSubscriptionSuccess />} />
 <Route path="/policies/cookies" element={<CookiePolicy />} />
 <Route path="/policies/:policyKey" element={<PlatformPolicyPage />} />
 <Route path="/reset-password" element={<ResetPassword />} />
 <Route path="/set-password" element={<SetPassword />} />
           <Route path="/track/booking/:token" element={<PublicBookingTracking />} />
           <Route path="/track/:slug" element={<PublicTracking />} />
           <Route path="/track-device/:token" element={<DriverTracking />} />
 <Route path="/tours/public" element={<PublicTours />} />
 <Route path="/tours/public/:pageSlug" element={<PublicTours />} />
  <Route path="/buy-ticket/:tenantSlug" element={<BuyTicket />} />
  <Route path="/ticket/:qrToken" element={<TicketView />} />
  <Route path="/validate-ticket" element={<ValidateTicket />} />
 <Route path="/sign/resolution/:token" element={<PublicResolutionSigning />} />
 <Route path="/feedback" element={<BookingFeedback />} />
 
 <Route path="/unsubscribe" element={<UnsubscribePreferences />} />
 <Route path="/subscribe/:slug" element={<PublicSignupForm />} />
 <Route path="/confirm-subscription" element={<ConfirmSubscription />} />
 <Route path="/:tenantSlug/policies/:policyKey" element={<PublicPolicyPage />} />
 <Route path="/:tenantSlug/enquire" element={<PublicEnquiryForm />} />
       <Route path="/quote/:token" element={<QuoteResponse />} />
       <Route path="/trust/:slug" element={<PublicTrustScore />} />

 {/* Authenticated routes - wrapped in Layout shell */}
 <Route element={<LayoutRoute />}>
 <Route
 path="/home"
 element={
 <ErrorBoundary
 fallback={
 <div className="min-h-[60vh] flex items-center justify-center p-6">
 <div className="max-w-md w-full text-center space-y-2">
 <h1 className="text-lg font-semibold">Dashboard failed to load</h1>
 <p className="text-sm text-muted-foreground">
 Something went wrong while rendering this page. Please refresh and try again.
 </p>
 </div>
 </div>
 }
 >
 <Home />
 </ErrorBoundary>
 }
 />
 <Route
 path="/dashboard"
 element={
 <ErrorBoundary
 fallback={
 <div className="min-h-[60vh] flex items-center justify-center p-6">
 <div className="max-w-md w-full text-center space-y-2">
 <h1 className="text-lg font-semibold">Dashboard failed to load</h1>
 <p className="text-sm text-muted-foreground">
 Something went wrong while rendering this page. Please refresh and try again.
 </p>
 </div>
 </div>
 }
 >
 <Home />
 </ErrorBoundary>
 }
 />
 <Route path="/fleet-dashboard" element={<FleetDashboard />} />
 <Route path="/bookings-dashboard" element={<BookingsDashboard />} />
  <Route path="/analytics-dashboard" element={<AnalyticsDashboard />} />
  <Route path="/trust-score" element={<TrustScorePage />} />
 <Route path="/finance-dashboard" element={<FinanceDashboard />} />
 <Route path="/finance/accounts" element={<ChartOfAccounts />} />
 <Route path="/finance/transactions" element={<FinanceTransactions />} />
 <Route path="/finance/vat-returns" element={<VATReturns />} />
 <Route path="/finance/companies-house" element={<CompaniesHouseAccounts />} />
 <Route path="/finance/corp-tax" element={<CorpTaxWorksheet />} />
 <Route path="/finance/xero" element={<XeroSync />} />
 <Route path="/finance/filings" element={<FinanceFilings />} />
 <Route path="/finance/reports" element={<FinanceReports />} />
 <Route path="/finance/sales" element={<SalesInvoices />} />
 <Route path="/finance/purchases" element={<PurchaseBills />} />
 <Route path="/finance/bank-reconciliation" element={<BankReconciliation />} />
 <Route path="/finance/budgets" element={<BudgetingForecasting />} />
 <Route path="/finance/kpi-dashboard" element={<Navigate to="/finance-dashboard" replace />} />
 <Route path="/finance/payment-reminders" element={<FinancePaymentReminders />} />
 <Route path="/finance/documents" element={<FinanceDocuments />} />
 <Route path="/finance/approvals" element={<FinanceApprovalWorkflows />} />
 <Route path="/finance/multi-currency" element={<FinanceMultiCurrency />} />
 
 {/* Team module routes */}
                <Route path="/team-dashboard" element={<TeamDashboard />} />
                <Route path="/team/members" element={<TeamMembers />} />
                <Route path="/team/employees" element={<Navigate to="/users" replace />} />
 <Route path="/team/employees/:userId" element={<TeamEmployeeRedirect />} />
 
 <Route path="/team/job-descriptions" element={<JobDescriptions />} />
 <Route path="/team/jobs" element={<HRJobs />} />
 <Route path="/team/compliance" element={<ComplianceCockpit />} />
 <Route path="/licensing" element={<Licensing />} />
 <Route path="/team/noticeboard" element={<HRNoticeboard />} />
 <Route path="/team/discussion" element={<HRDiscussionBoard />} />
 <Route path="/team/feed" element={<TeamFeed />} />
 <Route path="/community/crm" element={<MemberCRM />} />
 <Route path="/community/analytics" element={<EngagementAnalytics />} />
 <Route path="/my-leave" element={<MyLeave />} />
 <Route path="/team/vault" element={<CredentialVault />} />
  <Route path="/team/settings" element={<TeamSettings />} />
  <Route path="/team/drug-alcohol" element={<DrugAlcoholTesting />} />

 {/* Operations module routes */}
 <Route path="/ops-dashboard" element={<OperationsDashboard />} />
 <Route path="/ops/services" element={<ServicesListPage />} />
 <Route path="/ops/services/manage" element={<BusServicesPage />} />
 <Route path="/ops/services/:serviceId" element={<ServiceDetailPage />} />
 <Route path="/ops/timetable-editor" element={<TimetableEditorPage />} />
 <Route path="/ops/shifts" element={<ShiftsListPage />} />
 <Route path="/ops/shifts/manage" element={<ShiftSheetsPage />} />
 <Route path="/ops/shifts/:shiftId" element={<ShiftDetailPage />} />
 <Route path="/ops/shift-logs" element={<ShiftLogsPage />} />
 <Route path="/ops/timesheets" element={<TimesheetsPage />} />
 <Route path="/ops/rota" element={<OperationsRotaPage />} />
 <Route path="/ops/scheduling" element={<OperationsSchedulingPage />} />
 <Route path="/ops/settings" element={<OperationsSettingsPage />} />
 <Route path="/ops/etm-reports" element={<ETMReportImportPage />} />
 <Route path="/ops/bsog-claims" element={<BSOGClaimWizardPage />} />
 <Route path="/ops/reports" element={<OperationsReportsPage />} />
 <Route path="/ops/compliance" element={<OperationsCompliancePage />} />

 <Route path="/payroll" element={<PayrollDashboard />} />
 <Route path="/payroll/settings" element={<PayrollSettingsPage />} />
 <Route path="/payroll/pay-components" element={<PayrollPayComponentsPage />} />
 <Route path="/payroll/employee-tax" element={<PayrollEmployeeTaxPage />} />
 <Route path="/payroll/pay-runs" element={<PayRunsPage />} />
 <Route path="/payroll/pay-runs/:id" element={<PayRunDetailPage />} />
 <Route path="/payroll/compliance" element={<PayrollCompliancePage />} />
 <Route path="/projects-dashboard" element={<ProjectsDashboard />} />
 <Route path="/my-tasks" element={<MyProjectTasks />} />
 <Route path="/my-projects" element={<MyProjects />} />
 <Route path="/all-projects" element={<AllProjects />} />
 <Route path="/contracts" element={<ContractsList />} />
 <Route path="/projects/team-members" element={<ProjectTeamMembers />} />
 <Route path="/projects/:projectId" element={<ProjectDetail />} />
 <Route path="/projects/business-plan" element={<BusinessPlanPage />} />
 <Route path="/marketing-dashboard" element={<MarketingDashboard />} />
 
 <Route path="/marketing/automation" element={<MarketingAutomation />} />
 <Route path="/marketing/content" element={<MarketingContent />} />
 <Route path="/marketing/social" element={<MarketingSocial />} />
 <Route path="/marketing/pr" element={<MarketingPR />} />
 <Route path="/marketing/campaign/:campaignId" element={<MarketingCampaignDetail />} />
 <Route path="/customers/pipeline" element={<MarketingPipeline />} />
 <Route path="/marketing/advertising" element={<MarketingAdvertising />} />
 <Route path="/marketing/innovation" element={<MarketingInnovation />} />
 <Route path="/investment-dashboard" element={<InvestmentDashboard />} />
 <Route path="/investment/shares" element={<Shares />} />
 <Route path="/investment/bonds" element={<Bonds />} />
 <Route path="/investment/bondholdings" element={<Bondholdings />} />
 <Route path="/investment/bondholders" element={<Bondholdings />} />
 <Route path="/investment/shareholdings" element={<Shareholdings />} />
 <Route path="/investment/shareholders" element={<Shareholdings />} />
 <Route path="/investment/my-bonds" element={<MyBonds />} />
 <Route path="/investment/investors" element={<Shareholdings />} />
 <Route path="/investment/documents" element={<DocumentLibrary />} />
 <Route path="/investment/shareholder-agreement" element={<ShareholderAgreement />} />
 <Route path="/investment/marketplace" element={<ShareMarketplace />} />
 <Route path="/investment/register-of-members" element={<RegisterOfMembers />} />
  <Route path="/vehicles" element={<Vehicles />} />
   <Route path="/vehicles/:vehicleId" element={<VehicleRecord />} />
   <Route path="/vehicles/:vehicleId/documents" element={<VehicleDocumentsRedirect />} />
 <Route path="/insurance-summary" element={<InsuranceSummary />} />
 <Route path="/tax-summary" element={<TaxSummary />} />
    <Route path="/defects" element={<Navigate to="/maintenance?tab=Defects" replace />} />
    <Route path="/inspections" element={<Navigate to="/maintenance?tab=PMIs" replace />} />
    <Route path="/mots" element={<Navigate to="/maintenance?tab=MOTs" replace />} />
   <Route path="/parts-stock" element={<PartsStock />} />
   <Route path="/incident-report" element={<IncidentReport />} />
   <Route path="/fleet/incident-sos/:id" element={<IncidentSOS />} />
   <Route path="/fleet/accident-mate" element={<AccidentMate />} />
   <Route path="/fleet/accident-mate/white-label" element={<AccidentMateWhiteLabelPage />} />
   <Route path="/fleet/accident-mate/plans" element={<AccidentMatePlansPage />} />
   <Route path="/fleet/accident-mate/:id" element={<IncidentSOS />} />
   <Route path="/accident-mate/ok/:token" element={<AccidentMateAck />} />
   <Route path="/fleet/incidents" element={<FleetIncidents />} />
   <Route path="/fleet/incidents/:id" element={<FleetIncidentDetail />} />
   <Route path="/fleet/incidents/:id/finish" element={<IncidentReport />} />
   <Route path="/tasks" element={<Tasks />} />
   <Route path="/wheel-security" element={<WheelSecurity />} />
    <Route path="/servicing" element={<Navigate to="/maintenance?tab=Servicing" replace />} />
     <Route path="/schedule" element={<Navigate to="/maintenance" replace />} />
   <Route path="/gate-checks" element={<GateChecks />} />
                  <Route path="/mechanic-schedule" element={<Navigate to="/maintenance" replace />} />
                  <Route path="/workshop" element={<Navigate to="/maintenance" replace />} />
                 <Route path="/maintenance" element={<Maintenance />} />
 <Route path="/live-tracking" element={<LiveTracking />} />
                  <Route path="/track/booking/:token" element={<PublicBookingTracking />} />
                  <Route path="/track/:slug" element={<PublicTracking />} />
 <Route path="/portal-templates" element={<PortalTemplates />} />
 <Route path="/reports" element={<Reports />} />
 <Route path="/settings" element={<Settings />} />
 <Route path="/fleet-settings" element={<FleetSettings />} />
 <Route path="/partnerships" element={<ContractorPartnerships />} />
 <Route path="/partnerships/requests" element={<PartnershipRequests />} />
 <Route path="/partner-workspace" element={<PartnerWorkspace />} />
 <Route path="/community-settings" element={<CommunitySettings />} />
 
 <Route path="/investment-settings" element={<InvestmentSettings />} />
 <Route path="/projects-settings" element={<ProjectsSettings />} />
 <Route path="/marketing-settings" element={<MarketingSettings />} />
 <Route path="/finance-settings" element={<FinanceSettings />} />
 <Route path="/my-dream" element={<DreamBuilderPage />} />
 <Route path="/profile" element={<Profile />} />
 <Route path="/account" element={<Account />} />
 <Route path="/manage-subscription" element={<Account />} />
 <Route path="/profile/:userId" element={<PublicProfile />} />
 <Route path="/profile/:userId/projects" element={<ProjectsProfile />} />
 <Route path="/users" element={<Users />} />
 <Route path="/users/:userId" element={<UserRecord />} />
 
 <Route path="/suppliers" element={<Suppliers />} />
 <Route path="/customers" element={<CustomersDashboard />} />
 <Route path="/customers/list" element={<Customers />} />
 <Route path="/customers/cases" element={<CustomerCases />} />
 <Route path="/customers/feedback" element={<CustomerFeedback />} />
 <Route path="/customers/settings" element={<CustomersSettings />} />
 <Route path="/products" element={<Products />} />
 <Route path="/quotes" element={<Quotes />} />
 <Route path="/bookings" element={<Bookings />} />
 <Route path="/my-bookings" element={<MyBookings />} />
 <Route path="/staff-my-bookings" element={<StaffMyBookings />} />
 <Route path="/jobs" element={<Jobs />} />
 <Route path="/bookings-settings" element={<BookingsSettings />} />
 <Route path="/invoices" element={<Invoices />} />
 <Route path="/community" element={<Community />} />
 
  
 <Route path="/community/customer-portal" element={<CommunityCustomerPortal />} />
 <Route path="/discussion-board" element={<DiscussionBoard />} />
 <Route path="/members" element={<Members />} />
 <Route path="/messages" element={<Messages />} />
 <Route path="/my-feed" element={<MyFeed />} />
 <Route path="/enthusiasts" element={<Enthusiasts />} />
 <Route path="/campaigns" element={<Campaigns />} />
 <Route path="/campaigns/:id" element={<CampaignDetail />} />
 <Route path="/community/groups" element={<CommunityGroups />} />
 <Route path="/newsletters" element={<Newsletters />} />
 <Route path="/news" element={<CommunityNews />} />
 <Route path="/community/events" element={<EventsPage />} />
 <Route path="/community/events/:id" element={<EventDetailPage />} />
 <Route path="/event-payment-success" element={<EventPaymentSuccess />} />
 <Route path="/services" element={<WebsiteServices />} />
 <Route path="/about" element={<WebsiteAbout />} />
 <Route path="/contact" element={<WebsiteContact />} />
 <Route path="/website" element={<WebsiteHome />} />
 <Route path="/website-home" element={<WebsiteHome />} />
 <Route path="/website-settings" element={<WebsiteSettings />} />
 <Route path="/website-dashboard" element={<WebsiteDashboard />} />
 <Route path="/website-design-studio" element={<WebsiteDesignStudio />} />
 <Route path="/page/:slug" element={<WebsitePage />} />
 <Route path="/modules/:moduleKey" element={<ModuleDetail />} />
 <Route path="/support-queue" element={<SupportQueue />} />
 <Route path="/support" element={<Support />} />
 <Route path="/help" element={<HelpPage />} />
 <Route path="/super-admin" element={<SuperAdminPortal />} />
 <Route path="/super-admin/job-descriptions" element={<SuperAdminJobDescriptions />} />
 <Route path="/super-admin/payroll" element={<SuperAdminPayrollPage />} />
 <Route path="/super-admin/web-vitals" element={<WebVitalsDashboard />} />
  <Route path="/super-admin/growth" element={<GrowthDashboard />} />
  <Route path="/super-admin/buy-local-reports" element={<BuyLocalReportsModeration />} />
 <Route path="/super-admin/merge-accounts" element={<MergeAccounts />} />
 <Route path="/countersign-queue" element={<CountersignQueue />} />
 <Route path="/xero-callback" element={<XeroCallback />} />
 <Route path="/booking-payment-success" element={<BookingPaymentSuccess />} />
 <Route path="/tours" element={<Tours />} />
 <Route path="/tours/:pageSlug" element={<Tours />} />
 {/* tour-booking-success moved to public routes */}
 <Route path="/governance" element={<GovernanceDashboard />} />
 <Route path="/governance/entities" element={<GovernanceEntities />} />
 <Route path="/governance/entities/:entityId" element={<GovernanceEntityDetail />} />
 <Route path="/governance/filings" element={<GovernanceFilingsConsolidated />} />
 <Route path="/governance/filings/list" element={<GovernanceFilings />} />
 <Route path="/governance/reports" element={<GovernanceReports />} />
 <Route path="/governance/officers" element={<GovernanceOfficers />} />
 <Route path="/governance/statutory-registers" element={<GovernanceStatutoryRegisters />} />
 <Route path="/governance/meetings" element={<GovernanceMeetings />} />
 <Route path="/governance/meetings/:meetingId" element={<GovernanceMeetingDetail />} />
 <Route path="/governance/resolutions" element={<GovernanceResolutions />} />
 <Route path="/governance/resolutions/:resolutionId" element={<GovernanceResolutionDetail />} />
 {/* duplicate removed - moved to public routes */}
 <Route path="/governance/companies-house-filing" element={<GovernanceCompaniesHouseFiling />} />
 <Route path="/governance/alert-settings" element={<GovernanceAlertSettings />} />
 <Route path="/governance/conflicts-of-interest" element={<GovernanceConflictsOfInterest />} />
 <Route path="/governance/lobbying" element={<GovernanceLobbying />} />
 <Route path="/governance/regulatory-compliance" element={<GovernanceRegulatoryCompliance />} />
   <Route path="/governance/fleet-compliance" element={<FleetComplianceDashboard />} />
   <Route path="/fleet/compliance/alerts" element={<FleetComplianceAlerts />} />
   <Route path="/governance-settings" element={<GovernanceSettings />} />
  <Route path="/quality" element={<QualityDashboard />} />
  <Route path="/quality/standards" element={<QualityStandards />} />
  <Route path="/quality/standards/:code" element={<QualityStandardDetail />} />
   <Route path="/quality/settings" element={<QualitySettings />} />
   <Route path="/quality/non-conformities" element={<QualityNcRegister />} />
   <Route path="/quality/policies" element={<QualityPolicies />} />
   <Route path="/quality/suppliers" element={<QualitySuppliers />} />
   <Route path="/quality/auditor-packs" element={<QualityAuditorPacks />} />
   <Route path="/quality/systemic" element={<QualitySystemicNcs />} />
   <Route path="/quality/aspects" element={<QualityEnvAspects />} />
   <Route path="/quality/compliance" element={<QualityCompliance />} />
   <Route path="/quality/env-incidents" element={<QualityEnvIncidents />} />
   <Route path="/quality/env-incidents/:id" element={<QualityEnvIncidentDetail />} />
   <Route path="/quality/env-objectives" element={<QualityEnvObjectives />} />
   <Route path="/quality/rts-risks" element={<QualityRtsRisks />} />
   <Route path="/quality/rts-objectives" element={<QualityRtsObjectives />} />
   <Route path="/quality/rts-incidents" element={<QualityRtsIncidents />} />
  <Route path="/quality/rts-incidents/:id" element={<QualityRtsIncidentDetail />} />
  <Route path="/quality/bc-bias" element={<QualityBcBias />} />
  <Route path="/quality/bc-strategies" element={<QualityBcStrategies />} />
  <Route path="/quality/bc-exercises" element={<QualityBcExercises />} />
  <Route path="/quality/bc-disruptions" element={<QualityBcDisruptions />} />
  <Route path="/quality/bc-disruptions/:id" element={<QualityBcDisruptionDetail />} />
  <Route path="/quality/energy-seus" element={<QualityEnergySeus />} />
  <Route path="/quality/energy-objectives" element={<QualityEnergyObjectives />} />
  <Route path="/quality/energy-actions" element={<QualityEnergyActions />} />
  <Route path="/quality/energy-reviews" element={<QualityEnergyReviews />} />
  <Route path="/quality/ab-risks" element={<QualityAbRisks />} />
  <Route path="/quality/ab-due-diligence" element={<QualityAbDueDiligence />} />
  <Route path="/quality/ab-gifts-hospitality" element={<QualityAbGiftsHospitality />} />
  <Route path="/quality/ab-incidents" element={<QualityAbIncidents />} />
  <Route path="/quality/ab-incidents/:id" element={<QualityAbIncidentDetail />} />
   <Route path="/quality/info-assets" element={<QualityInfoAssets />} />
   <Route path="/quality/security-risks" element={<QualitySecurityRisks />} />
   <Route path="/quality/soa" element={<QualitySoa />} />
   <Route path="/quality/security-incidents" element={<QualitySecurityIncidents />} />
   <Route path="/quality/security-incidents/:id" element={<QualitySecurityIncidentDetail />} />
   <Route path="/quality/access-reviews" element={<QualityAccessReviews />} />
   <Route path="/quality/audits" element={<QualityAudits />} />
   <Route path="/quality/audits/:id" element={<QualityAuditDetail />} />
  <Route path="/quality/capa" element={<QualityCapa />} />
  <Route path="/quality/management-reviews" element={<QualityManagementReviews />} />
  <Route path="/quality/management-reviews/:id" element={<QualityManagementReviewDetail />} />
   <Route path="/analytics-settings" element={<AnalyticsSettings />} />
  <Route path="/social-impact-settings" element={<SocialImpactSettings />} />
 
 <Route path="/health-safety" element={<HealthSafetyDashboard />} />
 <Route path="/health-safety/incidents" element={<HealthSafetyIncidents />} />
 <Route path="/health-safety/incidents/:id" element={<HealthSafetyIncidentDetail />} />
 <Route path="/health-safety/risk-assessments" element={<HealthSafetyRiskAssessments />} />
 <Route path="/health-safety/accident-book" element={<HealthSafetyAccidentBook />} />
 <Route path="/health-safety/actions" element={<HealthSafetyActions />} />
 <Route path="/health-safety/coshh" element={<HealthSafetyCoshh />} />
 <Route path="/health-safety/fire-safety" element={<HealthSafetyFireSafety />} />
 <Route path="/health-safety/settings" element={<HealthSafetySettings />} />
 <Route path="/health-safety/contractors" element={<HealthSafetyContractors />} />
 <Route path="/health-safety/board-report" element={<HealthSafetyBoardReport />} />
 <Route path="/shop" element={<ShopDashboard />} />
 <Route path="/shop/my-orders" element={<StaffMyOrders />} />
 <Route path="/shop/products" element={<ShopProducts />} />
 <Route path="/shop/categories" element={<ShopCategories />} />
 <Route path="/shop/orders" element={<ShopOrders />} />
 <Route path="/shop/settings" element={<ShopSettings />} />
 {/* shop/order-success moved to public routes */}
 {/* public storefronts moved outside LayoutRoute */}
 
 {/* Network module routes */}
 <Route path="/network" element={<NetworkDashboard />} />
 <Route path="/network/profile" element={<NetworkProfile />} />
 <Route path="/network/feed" element={<NetworkFeedPage />} />
 <Route path="/network/connections" element={<NetworkConnections />} />
 <Route path="/network/settings" element={<NetworkSettings />} />
 <Route path="/network/peer-support" element={<NetworkPeerSupport />} />
 <Route path="/network/local-groups" element={<NetworkLocalGroups />} />
 <Route path="/network/industry-forums" element={<NetworkIndustryForums />} />
 <Route path="/network/special-interest" element={<NetworkSpecialInterest />} />
 <Route path="/network/marketplace" element={<NetworkMarketplace />} />
 <Route path="/network/marketplace/payment-success" element={<MarketplacePaymentSuccess />} />
 <Route path="/network/events" element={<NetworkEventsPage />} />
 <Route path="/network/business-profile" element={<NetworkBusinessProfile />} />
                 <Route path="/network/wanted" element={<NetworkWantedPage />} />
                 <Route path="/network/store/:slug" element={<NetworkStorefront />} />

 {/* Ambassador Programme routes */}
 <Route path="/ambassador" element={<AmbassadorDashboard />} />
 <Route path="/ambassador/share" element={<AmbassadorShareTools />} />
 <Route path="/ambassador/causes" element={<AmbassadorCauses />} />
 <Route path="/ambassador/analytics" element={<AmbassadorAnalytics />} />

 {/* Premises module routes */}
 <Route path="/premises" element={<PremisesDashboard />} />
 <Route path="/premises/sites" element={<PremisesSites />} />
 <Route path="/premises/maintenance" element={<PremisesMaintenance />} />
 <Route path="/premises/compliance" element={<PremisesCompliance />} />
 <Route path="/premises/assets" element={<PremisesAssets />} />
 <Route path="/premises/rooms" element={<PremisesRooms />} />
 <Route path="/premises/settings" element={<PremisesSettings />} />
 <Route path="/premises/budgets" element={<PremisesBudgets />} />
 <Route path="/premises/utility" element={<PremisesUtility />} />

 {/* Social Impact module routes */}
 <Route path="/social-impact" element={<SocialImpactDashboard />} />
 <Route path="/social-impact/beneficiaries" element={<SocialImpactBeneficiaries />} />
 <Route path="/social-impact/outcomes" element={<SocialImpactOutcomes />} />
 <Route path="/social-impact/sustainability" element={<SocialImpactSustainability />} />
 <Route path="/social-impact/employment" element={<SocialImpactEmployment />} />
 <Route path="/social-impact/community" element={<SocialImpactCommunity />} />
 <Route path="/social-impact/financial" element={<SocialImpactFinancial />} />
 <Route path="/social-impact/diversity" element={<SocialImpactDiversity />} />
 <Route path="/social-impact/partnerships" element={<CommunityPartnerships />} />
 <Route path="/social-impact/data-sources" element={<SocialImpactDataSourcesPage />} />
 <Route path="/social-impact/data-entry" element={<SocialImpactDataEntryPage />} />
 <Route path="/carbon-dashboard" element={<Navigate to="/sustainability/carbon" replace />} />
 <Route path="/sustainability" element={<SustainabilityDashboard />} />
 <Route path="/sustainability/carbon" element={<CarbonDashboard />} />
 <Route path="/sustainability/waste" element={<SustainabilityWaste />} />
 <Route path="/sustainability/biodiversity" element={<SustainabilityBiodiversity />} />

  {/* Goodlife portal — customer-facing pages (formerly /c/*) */}
 <Route path="/goodlife/portal" element={<GoodlifePortalDashboard />} />
 <Route path="/goodlife/shop" element={<GoodlifePortalShop />} />
 <Route path="/goodlife/shop/orders" element={<GoodlifePortalMyOrders />} />
 <Route path="/goodlife/bookings" element={<GoodlifePortalBookings />} />
 <Route path="/goodlife/bookings/my-bookings" element={<GoodlifePortalMyBookings />} />
 <Route path="/goodlife/account" element={<GoodlifePortalAccount />} />
 <Route path="/goodlife/my-feedback" element={<GoodlifePortalMyFeedback />} />
  <Route path="/goodlife/network" element={<GoodlifePortalNetwork />} />
  <Route path="/goodlife/purchases" element={<GoodlifePortalMyTickets />} />
  <Route path="/goodlife/providers" element={<GoodlifeProviders />} />
 </Route>
 {/* End of LayoutRoute wrapper */}

 {/* Public routes without Layout shell */}
 <Route path="/setup-wizard" element={<SetupWizard />} />
 <Route path="/tour-booking-success" element={<TourBookingSuccess />} />
 <Route path="/shop/order-success" element={<ShopOrderSuccess />} />
  <Route path="/:tenantSlug/shop" element={<ShopStorefront />} />
  <Route path="/:tenantSlug/cart" element={<ShopCart />} />
  <Route path="/:tenantSlug" element={<RootSlugRoute />} />
 <Route path="/404" element={<NotFound />} />
 {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
 <Route path="*" element={<NotFound />} />
 </Routes>
 </Suspense>
 </OnboardingGate>
 )}
 </BrowserRouter>
 </TooltipProvider>
 </CartProvider>
 </CustomerViewProvider>
 </TenantProvider>
 </LocaleProvider>
 </QueryClientProvider>
);

export default App;
