/* =====================================================================
   ROUTER — hash routing + mount
   ===================================================================== */
function App() {
  const path = useRoute();
  const seg = path.replace(/^\/|\/$/g, "").split("/");
  const a = seg[0] || "";

  useEffect(() => {
    if (!window.GLR || !window.GLR.track) return;
    if (a === "admin") return;
    if (a === "properties" && seg[1]) window.GLR.track({ type: "property_view", path, slug: seg[1] });
    else if (a === "portal" && seg[1]) window.GLR.track({ type: "portal_open", path, slug: seg[1] });
    else if (["", "properties", "services", "about", "contact", "track-record"].includes(a)) window.GLR.track({ type: "page_view", path });
  }, [path]);

  let screen;
  if (a === "") screen = <HomeScreen />;
  else if (a === "properties" && seg[1]) screen = <PropertyScreen slug={seg[1]} />;
  else if (a === "properties") screen = <ListingsScreen />;
  else if (a === "track-record") screen = <TrackRecordScreen />;
  else if (a === "services") screen = <ServicesScreen />;
  else if (a === "about") screen = <AboutScreen />;
  else if (a === "contact") screen = <ContactScreen />;
  else if (a === "access") screen = <AccessScreen slug={seg[1]} />;
  else if (a === "portal" && seg[1]) screen = <WarRoom slug={seg[1]} />;
  else if (a === "portal") screen = <PortalHome />;
  else if (a === "account") screen = <AccountScreen />;
  else if (a === "admin" && seg[1] === "listings" && seg[2] && seg[3] === "launch") screen = <AdminLaunch id={seg[2]} />;
  else if (a === "admin" && seg[1] === "listings" && seg[2] && seg[3] === "dataroom") screen = <AdminDataRoom id={seg[2]} />;
  else if (a === "admin" && seg[1] === "listings" && seg[2]) screen = <AdminListingEdit id={seg[2]} />;
  else if (a === "admin" && seg[1] === "listings") screen = <AdminListings />;
  else if (a === "admin" && seg[1] === "contacts") screen = <AdminContacts />;
  else if (a === "admin" && seg[1] === "messages") screen = <AdminMessages />;
  else if (a === "admin" && seg[1] === "analytics") screen = <AdminAnalytics />;
  else if (a === "admin" && seg[1] === "inbox") screen = <AdminInbox />;
  else if (a === "admin" && seg[1] === "users") screen = <AdminUsers />;
  else if (a === "admin" && seg[1] === "security") screen = <AdminSecurity />;
  else if (a === "admin" && seg[1] === "requests") screen = <AdminRequests />;
  else if (a === "admin" && seg[1] === "qa") screen = <AdminQA />;
  else if (a === "admin" && seg[1] === "content") screen = <AdminContent />;
  else if (a === "admin" && seg[1] === "media") screen = <AdminMedia />;
  else if (a === "admin" && seg[1] === "branding") screen = <AdminBranding />;
  else if (a === "admin" && seg[1] === "audit") screen = <AdminAudit />;
  else if (a === "admin") screen = <AdminDashboard />;
  else screen = <HomeScreen />;

  return <React.Fragment key={path}>{screen}<PortalSidecar /><ToastHost /></React.Fragment>;
}

function boot() {
  const need = ["HomeScreen", "ListingsScreen", "PropertyScreen", "TrackRecordScreen", "ServicesScreen",
    "AboutScreen", "ContactScreen", "AccessScreen", "PortalHome", "WarRoom",
    "AdminDashboard", "AdminListings", "AdminListingEdit", "AdminLaunch", "AdminContacts", "AdminMessages", "AdminAnalytics", "AdminInbox", "AdminUsers", "AdminSecurity", "AccountScreen", "AdminMedia", "AdminBranding", "AdminRequests", "AdminQA", "AdminContent", "AdminDataRoom", "AdminAudit",
    "Nav", "Footer", "useStore", "PortalSidecar", "DocBody", "DocPreviewModal", "LoiModal"];
  if (!window.GLR || !need.every((n) => typeof window[n] === "function")) { setTimeout(boot, 30); return; }
  ReactDOM.createRoot(document.getElementById("root")).render(<App />);
}
boot();
